global address and data routers interconnect individual system units each having its own processors, memory, and I/O. A domain filter coupled to the routers dynamically defines groups of system units as domains and clusters of domains which have both software and hardware isolation from each other. clusters can share dynamically definable ranges of memory with each other. The domain filter has software-loadable registers on the system units and in the global routers to set the parameters of the domains and clusters. The registers label individual inter-system transactions on the routers as invalid for system units not in the same domain or cluster as the originating unit.
|
37. A method of partitioning a computer having a plurality of system units, a global address router, a global data router, a control-signal distributor coupled directly to every one of said system units, and a domain filter into a plurality of independent hardware domains under programmable control, comprising:
(a) starting a configuration mode;
(b) receiving specification data defining a subset of said system units for inclusion within one of said hardware domains;
(c) loading said specification data into a domain filter so as to render those of said system units within said one domain responsive to certain control signals in said distributor, and to render others of said system units unresponsive to said distributor, said certain control signals representing error and status conditions occurring in any of said system units for affecting the operation of the entire system;
(d) repeating steps (b) and (c) for further specification data defining a different subset of said system units.
0. 60. A method of partitioning a computer system having a plurality of system units into one or more independent hardware domains, said method comprising:
receiving specification data defining a first subset of said plurality of system units for inclusion within a first hardware domain;
loading said specification data into a domain filter and causing each system unit belonging to said first subset of said plurality of system units to be responsive to a first set of control signals, and to cause system units not belonging to said first subset of said plurality of system units to be unresponsive to said first set of control signals; and
in response to said loading said specification data into said domain filter causing each system unit belonging to said first subset of said plurality of system units to be responsive to addresses originating from said system units belonging to said first subset of said plurality of system units, and causing each system unit belonging to said first subset of said plurality of system units to be unresponsive to addresses originating from said system units not belonging to said first subset of said plurality of system units.
16. A method of partitioning a computer having a plurality of system units, a global address router, a global data router, a control-signal distributor, and a domain filter into a plurality to independent hardware domains under programmable control, comprising:
(a) starting a configuration mode;
(b) receiving specification data defining a subset of said system units for inclusion within one of said hardware domains;
(c) loading said specification data into a domain filter so as to render those of said system units within said one domain responsive to certain control signals in said distributor, and to render others of said system units unresponsive to said distributor;
(d) repeating steps (b) and (c) for further specification data defining a different subset of said system units; and thereafter
(j) broadcasting a transaction from one of said system units within said first domain via said global address router to all of said system units, both within and without said first domain;
(k) filtering said transaction at each of said system units such that those of said system units within said first domain are enabled to respond to said transaction, and others of said system units outside said first domain are disabled from responding to said transaction.
12. A method of partitioning a computer having a plurality of system units, a global address router, a global data router, a control-signal distributor, and a domain filter into a plurality of independent hardware domains under programmable control, comprising:
(a) starting a configuration modes;
(b) receiving specification data defining a subset of said system units for inclusion within one of said hardware domains: ;
(c) loading said specification data into a domain filter so as to render those of said system units within said one domain responsive to certain control signals in said distributor, and to render others of said system units unresponsive to said distributor: ;
(d) repeating steps (b) and (c) for further specification data defining a different subset of said system units. ;
wherein step (c) is also responsive to said specification data for loading said domain filter so as to render those of said system units within said one domain responsive to addresses on said global address router originating from those of said system units within said one domain, and to render said system units within said first domain unresponsive to addresses on said global address router originating from at least some of those of said system units not within said first domain.
20. A system unit for a multiprocessor computer having a global address router, a global data router, and a control-signal distributor for interconnecting a plurality of other ones of said system units, said computer also having a computer controller, said system unit comprising:
means coupled to both of said global routers for accepting at least one processor unit for generating addresses within a predetermined global range;
means coupled to said global routers for accepting at least one memory unit for storing data at a set of addresses within said predetermined global range;
means coupled to said global routers for accepting at least one input/output adapter for generating and/or receiving a set of addresses within said predetermined global range;
means connected to at least one of said preceding means for generating control signals to said distributor, said control signals representing error conditions within said system unit, and for receiving control signals representing error conditions within said other system units;
means for filtering said control signals such that only those control signals from selectable ones of said other units can affect the operation of said system unit;
means connectible to said computer controller for selecting said ones of said other units.
0. 54. A computer system comprising:
a plurality of separate system units for performing sequences of transactions, each including at least a processor unit for generating addresses within a predetermined global range;
a global address router coupled to said plurality of separate system units and configured to transfer addresses generated in any of said system units to others of said system units;
a control-signal distributor configured to communicate a plurality of control signals from any of said system units to others of said system units for affecting the operation of all of said system units in response to conditions occurring in said any system unit;
a domain configurator coupled to electronically partition said plurality of system units into one or more software-configurable hardware domains independently of any physical reconnection of said plurality of system units, wherein each of said one or more software-configurable hardware domains includes an arbitrary subset of said plurality of system units; and
a domain filter coupled to each of said plurality of system units and configured to electronically inhibit at least some of said control signals originating in system units belonging to a given one of said hardware domains from affecting system units not belonging to said given one of said hardware domains, wherein said domain filter is further coupled to inhibit transactions originating in system units belonging to said given one of said hardware domains from being received in said system units not belonging to said given one of said hardware domains.
0. 50. A multiprocessor computer having hardware domains variably configurable by commands from an operator, said computer comprising:
a plurality of separate system units for performing sequences of transactions, each including at least one of:
a processor unit for generating addresses within a predetermined global range,
a memory unit for storing data at a set of addresses within said predetermined global range, and
an input/output adapter for generating and/or receiving a set of addresses within said predetermined global range;
a global address router coupled to said system units for transferring addresses generated in any of said system units to others of said system units;
a global data router for transferring data from any of said system units to others of said system units;
a control-signal distributor for communicating a plurality of control signals from any of said system units to all others of said system units for affecting the operation of all of said system units in response to error and status conditions occurring in said any system unit;
a domain configurator for electronically dividing said computer into a plurality of software-configurable hardware domains each comprising an arbitrary subset of said system units independently of any physical reconnection of said system units within said computer;
a domain filter coupled to all of said system units for electronically inhibiting at least some of said control signals originating in those of said system units within one of said domains from affecting certain of said system units outside said one domain.
0. 40. A multiprocessor computer having hardware domains variably configurable by commands from an operator, said computer comprising:
a plurality of separate system units for performing sequences of transactions, each including at least one of:
a processor unit for generating addresses within a predetermined global range,
a memory unit for storing data at a set of addresses within said predetermined global range, and
an input/output adapter for generating and/or receiving a set of addresses within said predetermined global range;
a global address router coupled to said system units for transferring addresses generated in any of said system units to others of said system units;
a global data router for transferring data from any of said system units to others of said system units;
a control-signal distributor for communicating a plurality of control signals from any of said system units to others of said system units for affecting the operation of all of said system units in response to conditions occurring in said any system unit;
a domain configurator for electronically dividing said computer into a plurality of software-configurable hardware domains each comprising an arbitrary subset of said system units independently of any physical reconnection of said system units within said computer; and
a domain filter coupled to all of said system units for electronically inhibiting at least some of said control signals originating in those of said system units within one of said domains from affecting certain of said system units outside said one domain, wherein said domain filter is coupled to at least one of said global routers for inhibiting transactions on said one global router originating in those of said system units within one of said domains from being received in certain of said system units outside said one domain.
34. A multiprocessor computer having hardware domains variably configurable by commands from an operator, said computer comprising:
a plurality of separate system units for performing sequences of transactions, each said system unit being individually physically removable and replaceable within said computer, and each including at least one of:
a processor unit for generating addresses within a predetermined global range,
a memory unit for storing data at a set of addresses within said predetermined global range, and
an input/output adapter for generating and/or receiving a set of addresses within said predetermined global range;
a global address router coupled to said system units for transferring addresses generated in any of said system units to others of said system units;
a global data router for transferring data from any of said system units to others of said system units;
a control-signal distributor for communicating a plurality of control signals from any of said system units to all others of said system units for affecting the entire operation of all of said system units in response to error and status conditions occurring in said any system unit;
a domain configurator for electronically dividing said computer into a plurality of software-configurable hardware domains each comprising an arbitrary subset of said system units independently of any physical reconnection of said system units within said computer;
a computer controller responsive to said commands for specifying to said domain configurator which of said system units belong to each of said hardware domains;
a domain filter coupled to all of said system units for electronically inhibiting at least some of said control signals originating in those of said system units within one of said domains from affecting certain of said system units outside said one domain.
1. A multiprocessor computer having hardware domains variable variably configurable by commands from an operator, said computer comprising:
a plurality of separate system units for performing sequences of transactions, each said system unit being individually physically removable and replaceable within said computer, and each including at least one of:
a processor unit for generating addresses within a predetermined global range. ,
a memory unit for storing data at a set of addresses within said predetermined global range, and
an input/output adapter for generating and/or receiving a set of addresses within said predetermined global range: ;
a global address router coupled to said system units for transferring addresses generated in any of said system units to others of said system units;
a global data router for transferring data from any of said system units to others of said system units: ;
a control-signal distributor for communicating a plurality of control signals from any of said system units to others of said system units for affecting the operation of all of said system units in response to conditions occurring in said any system unit: ;
a domain configurator for electronically dividing said computer into a plurality of software-configurable hardware domains each comprising an arbitrary subset of said system units independently of any physical reconnection of said system units within said computer: ;
a computer controller responsive to said commands for specifying to said domain configurator which of said system units belong to each of said hardware domains: ;
a domain filter coupled to all of said system units for electronically inhibiting at least some of said control signals originating in those of said system units within one of said domains from affecting certain of said system units outside said one domain, wherein said domain filter is coupled to at least one of said global routers for inhibiting transactions on said one global router originating in those of said system units within one of said domains from being received in certain of said system units outside said one domain.
10. A multiprocessor computer having hardware domains variably configurable by commands from an operator, said computer comprising:
a plurality of separate system units for performing sequences of transactions, each said system unit being individually physically removable and replaceable within said computer, and each including at least one of:
a processor unit for generating addresses within a predetermined global range. ,
a memory unit for storing data at a set of addresses within said predetermined global range. , and
an input/output adapter for generating and/or receiving a set of addresses within said predetermined global range: ;
a global address router coupled to said system units for transferring addresses generated in any of said system units to others of said system units: ;
a global data router for transferring data from any of said system units to others of said system units: ;
a control-signal distributor for communicating a plurality of control signals from any of said system units to others of said system units for affecting the operation of all of said system units in response to conditions occurring in said any system unit: ;
a domain configurator for electronically dividing said computer into a plurality of software-configurable hardware domains each comprising an arbitrary subset of said system units independently of any physical reconnection of said system units within said computer, said domain configurator further combining a plurality of said hardware domains into a domain cluster comprising an arbitrary subset of said domains independently of any physical reconnection of said system units within said computer;
a computer controller responsive to said commands for specifying to said domain configurator which of said system units belong to each of said hardware domains, said computer controller being responsive to further ones of said commands for specifying to said domain configurator which of said system units belong to said domain cluster;
a domain filter coupled to all of said system units for electronically inhibiting at least some of said control signals originating in those of said system units within one of said domains from affecting certain of said system units outside said one domain, said domain filter permitting said at least some control signals originating in those of said system units within said one domain to affect those of said systems units outside said one domain but within said domain cluster.
26. One system unit of a plurality of system units for a multiprocessor computer including:
a global address router for transferring addresses originating in any of said system units to all others of said system units, each address of said addresses having a source identifier indicating which of said plurality of system units had originated said each address, ;
a global data router for transferring data from any of said system units to all others of said system units, ;
a control-signal distributor for communicating a plurality of control signals from any of said system units to all others of said system units for affecting the operation of all of said system units in response to conditions occurring in said any system unit, ;
a domain configurator for electronically dividing said computer into a plurality of software-configurable hardware domains each comprising an arbitrary subset of said system units independently of any physical reconnection of said system units within said computer, ;
a computer controller responsive to said commands for specifying to said domain configurator which of said system units belong to each of said hardware domains, ;
a domain filter coupled to all of said system units for electronically inhibiting at least some of said control signals originating in those of said system units within one of said domains from affecting certain of said system units outside said one domain, said one system unit comprising:
at least one subsystem connected to said global address router for coupling said addresses between said subsystem and any other of said system units, and connected to said global data router for transferring transaction data between said subsystem and any other of said system units, said subsystem being taken from the group consisting of:
a processor subsystem for executing transactions, ;
a memory subsystem for storing data within said global range, ; and
an input/output subsystem for communicating with input/output adapters;
at least one generator of said control signals coupled to said distributor;
at least one receptor of said control signals;
a domain writable mask register receiving from said computer controller a value representing which of said plurality of system units belong to the same domain as said one system unit; and
a comparator coupled to said domain mask register for producing an inhibiting signal when said source identifier indicates that said each address did not originate within said same domain, said inhibiting signal being coupled to said at least one subsystem so as to render it unresponsive to said each address.
3. A computer according to
5. A computer according to
6. A computer according to
7. A computer according to
a connection for identifying which of said system units has generated a current address in said address router;
at least one domain-mask register for each of said system units specifying which of said system units belong to which of said domains,
gating logic responsive to said source-identifying connection and to said domain-mask register for decoupling said system unit from all of said system units not in the same domain as said system unit having generated said current address.
8. A computer according to
a plurality of cluster registers each identifying which of said system units belong to a domain cluster, and responsive to a current one of said transactions;
a connection for transmitting a valid-transaction signal to each of said system units in said common cluster for any of said transactions originating from one of said system units belonging to said domain cluster.
9. A computer according to
11. A computer according to
13. A method according to
(f) receiving second specification data defining a cluster of multiple ones of said domains;
(g) loading said second data into said domain filter so as to render those of said system units within said cluster of domains responsive to addresses on said global address router originating from those of said system units within said cluster of domains.
14. A method according to
(h) receiving third specification data defining a shared range of addresses physically present within one of said domains, and accessible to other domains within said cluster of domains;
(i) loading said third data into said domain filter so as to render those of said system units within said cluster of domains responsive to addresses on said global address router originating from those of said system units within said cluster of domains but only within said shared range.
15. A method according to
0. 17. A method according to
18. A method according to
19. A method according to
21. A system unit according to
a domain mask register for holding data designating said selectable ones of said other units;
gating means for passing certain signals from said selectable ones, and for blocking said certain signals from others of said system units.
22. A system unit according to
23. A system unit according to
24. A system unit according to
25. A system unit according to
27. A system unit according to
at least one writable shared-memory mask register which of said plurality of system units belong to the same domain cluster as said one system unit,
said comparator being further coupled to said domain mask register for producing said inhibiting signal when said source identifier indicates that said each address originated at certain of said system units outside said same domain cluster.
28. A system unit according to
at least one shared-memory address register receiving from said computer controller a value defining a shared range of memory addresses within said portion of said global range,
said comparator being further responsive to said shared-memory address register for inhibiting said memory subsystem when said each address lies outside said shared range.
29. A system unit according to
30. A system unit according to
31. A system unit according to
32. A system unit according to
33. A system unit according to
35. A computer according to
36. A computer according to
said domain configurator further combines a plurality of said hardware domains into a domain cluster comprising an arbitrary subset of said domains independently of any physical reconnection of said system units within said computer;
said computer controller is responsive to further ones of said commands for specifying to said domain configurator which of said system units belong to said domain cluster;
said domain filter permitting said at least some control signals originating in those of said system units within said one domain to affect those of said systems units outside said one domain but within said domain cluster.
38. A method according to
39. A method according to
(e) broadcasting a transaction from one of said system units within said first domain via said global address router to all of said system units, both within and without said first domain;
(f) filtering said transaction at each of said system units such that those of said system units within said first domain are enabled to respond to said transaction, and others of said system units outside said first domain are disabled from responding to said transaction.
0. 41. A computer according to
0. 42. A computer according to
0. 43. A computer according to
0. 44. A computer according to
0. 45. A computer according to
0. 46. A computer according to
0. 47. A computer according to
a connection for identifying which of said system units has generated a current address in said address router;
at least one domain-mask register for each of said system units specifying which of said system units belong to which of said domains;
gating logic responsive to said source-identifying connection and to said domain-mask register for decoupling said system unit from all of said system units not in the same domain as said system unit having generated said current address.
0. 48. A computer according to
a plurality of cluster registers each identifying which of said system units belong to a domain cluster, and responsive to a current one of said transactions;
a connection for transmitting a valid-transaction signal to each of said system units in said common cluster for any of said transactions originating from one of said system units belonging to said domain cluster.
0. 49. A computer according to
0. 51. A computer according to
0. 52. A computer according to
0. 53. A computer according to
said domain configurator further combines a plurality of said hardware domains into a domain cluster comprising an arbitrary subset of said domains independently of any physical reconnection of said system units within said computer;
said computer controller is responsive to further ones of said commands for specifying to said domain configurator which of said system units belong to said domain cluster;
said domain filter permitting said at least some control signals originating in those of said system units within said one domain to affect those of said systems units outside said one domain but within said domain cluster.
0. 55. The computer system according to
a connection for identifying which of said plurality of system units has generated a current address in said global address router;
a domain-mask register corresponding to each of said plurality of system units configured to specify to which of said hardware domains each of said plurality of system units belongs; and
gating logic responsive to said connection and to said domain-mask register and configured to decouple a system unit having generated said current address and belonging to a particular hardware domain from system units not belonging to said particular hardware domain.
0. 56. The computer system according to
0. 57. The computer system according to
0. 58. The computer system according to
a plurality of cluster registers each identifying to which cluster each of said plurality of system units belongs, wherein said plurality of cluster registers is responsive to a current one of said transactions;
a second connection for transmitting a valid-transaction signal to each of said plurality of system units belonging to a given cluster for any of said transactions originating from one of said plurality of system units belonging to said given cluster.
0. 59. The computer system according to
0. 61. The method according to
identifying which of said plurality of system units has generated a current address;
specifying using a domain-mask register to which of said hardware domains each of said plurality of system units belongs;
decoupling a system unit having generated said current address and belonging to a particular hardware domain from system units not belonging to said particular hardware domain.
0. 62. The method according to
0. 63. The method according to
identifying to which cluster each of said plurality of system units belongs using a plurality of cluster registers, wherein said plurality of cluster registers is responsive to a current one of said transactions; and
transmitting a valid-transaction signal to each of said plurality of system units belonging to a given cluster for any of said transactions originating from one of said plurality of system units belonging to said given cluster.
0. 64. The method according to
|
The present invention relates to electronic computers, and more particularly concerns multiprocessor architectures in which a large number of processors can be dynamically isolated into variable groups or domains for operational independence and for the ability to continue running despite hardware errors.
Many centralized mainframe computers driving large numbers of simple terminals have been replaced by networks of personal computers. Most of these networks incorporate one or more server computers which store data and programs for the individual users. In fact, the servers are evolving into high-performance superservers which have taken over many of the attributes of mainframes. However, a superserver functions differently in a networked system, and thus the architecture of a superserver needs to be different from those of mainframes or of personal computers.
One area in which superservers differ from other architectures is their need to be able to run more than one operating system or more than one version of an operating system—simultaneously for different jobs or for different users.
Superservers must also have a very high availability and reliability. They must have high tolerance for both hardware and software errors, and it is desirable that the computer be serviceable while it is running. Unlike the single (or closely-coupled multiple) processor architectures of personal computers, and also unlike the massively parallel designs of supercomputers, superservers need the flexibility to run widely varying numbers and types of tasks with unpredictable resource demands.
In many ways, superservers are called upon to perform both as very large computers and as small computers. This places a number of conflicting demands upon their architectures.
The present invention provides an overall computer architecture which overcomes these and related problems by means of software configurable “hardware domains” which isolate the overall computer into a number of independent units for both software and hardware aspects. That is, different domains not only run different operating systems and applications independently of each other, but also operate independently of fatal hardware errors occurring in other domains. “Clusters” allow multiple domains to share a common range of memory addresses, for rapid data transfer. Privileged configuration-control software allows an operator or software process to divide the computer resources into domains and domain clusters without physically altering the computer, and to reconfigure the domains and clusters at any time. A computer using this architecture may be constructed of easily obtainable commodity components, such as the microprocessors commonly employed in personal or workstation computers.
The invention allows the testing of new versions of software in a completely isolated environment, while continuing normal tasks in the remainder of the computer. One part of the computer may run extended diagnostics or preventive maintenance, while the remainder executes normal user tasks concurrently. Different parts of the same computer can run under different operating-system software (or different versions of the same software, or different tunings or parameter settings), for optimizing multiple different types of workload, such as timeshare and database-query, or online transaction processing and decision-support systems.
Each part of the computer is insensitive not only to software errors in the other parts, but also to hardware faults such as hard memory errors and address-request line malfunctions. A computer according to the invention prevents hardware faults from erroneously transferring address or data signals to any processor or memory not in the same hardware domain, and physically prevents many systemwide control signals from affecting hardware in different domains.
Additional advantages will be obvious to those skilled in the art. For example, interactive jobs can be isolated from batch jobs by running them in different domains. Production tasks may be executed uninterrupted in one domain while development or problem isolation occurs simultaneously in another domain. New software releases can be tested for compatibility on the same system which simultaneously runs the old releases. Sometimes multiple organizations share the same system; using separate domains, each can be guaranteed a certain level of resource dedication to their own tasks, and this dedication can be scheduled easily or altered upon short notice merely by reconfiguring the domains and clusters under software control, without physically replacing components or manually switching signal lines.
Briefly, a computer according to the invention has a number of individual system units each having processors, memory segments, and/or input/output adapters. A central interconnect transports addresses and data among the system units. A domain controller dynamically configures a domain filter to form multiple domains which function independently of each other, and which are even independent of major hardware errors in other domains. The processors, memory, and I/O of a domain act as a single, unified computing system, regardless of their physical location on the same or different system units. In addition, multiple domains can be dynamically interconnected into clusters to share some or all of their memory space. The domains and clusters are defined by the contents of registers set under software control.
All communications among the various system units occur as “transactions” over the interconnect. Transactions may contain memory addresses, although some do not. An ordinary memory transaction is one made to potentially cacheable main memory, such as a non-privileged application program might make. Other transactions include those to (non-cacheable) system control registers, and to portions of the address space used by I/O adapters; these latter may be accessed only by privileged-mode code, such as the system boot, the OS kernel, and I/O drivers. Still other transactions may be interrupts.
The multiple domains are both software- and hardware-isolated from each other. Individual subsystems may comprise system cards, boards, or other units potentially containing hardware for processing, memory, and/or I/O functions. Although not all individual system units need contain all the functions of a complete processor, the set of units forming a domain must include among them all the functions of a complete data-processing system. A single system unit may form a domain. Any system unit can belong to only one domain. A domain functions as a single data-processing system; its individual system units have no secrets from each other.
“Software isolation” means that no software running in one domain can affect software running in another domain, in the absence of a hardware failure in a subsystem. This requires that each domain have its own physical processor (s), memory units, and I/O adapters not shared with those of other domains. Domain-filter hardware between each system unit and the common address-interconnect hardware has a mask register containing a separate bit for each unit potentially in the complete system. The states of these bits indicate which other units are members of the same domain. A unit's interface responds to a transaction from the interconnect only when the transaction originated at a system unit within the same domain. Such hardware distributed among the subsystems is sufficient to ensure software isolation, as long as the hardware is controllable only by an agency outside the subsystems, such as a separate service processor.
“Hardware isolation” denotes in addition that hardware errors occurring within a domain do not affect the operation of different domains in the computer. Hardware isolation is not practical with a common bus architecture among the individual subsystems, because a failing subsystem could take the entire bus down with it. We therefore employ a switched interconnect among the subsystems, such as crossbars and/or routers. Because a hardware failure within one subsystem might possibly allow it to masquerade as belonging to a different subsystem, or to generate system-wide fatal interface signals such as control-signal parity errors, subsystem hardware isolation also requires some central control logic outside the subsystems themselves, and that at least some of the control signals be routed point-to-point between this central logic and each subsystem. If the interconnect hardware also has domain mask registers, it may produce a “valid transaction” signal to each system unit in the originator's domain; this prevents any unit from masquerading as another unit. Because all units outside the source domain ignore a transaction, they cannot generate error states for hardware error signals sourced from another domain. Although failures in the interconnect hardware itself can still possibly affect all domains, in practice the interconnect is small and rugged compared to the hardware in the subsystems.
In some applications, certain domains need high-bandwidth communications with each other by sharing one or more segments of their individually addressable memory space. The invention can provide clusters of domains having properties similar to those of individual domains. An individual system unit can be its own cluster; any single unit can be a member of only one cluster; and the cluster relation is transitive. Also, a domain is in exactly one cluster, and a cluster contains one or more domains. The requirement that a cluster relation be transitive arises from its use in sharing memory between domains. If A exports memory to domains B and C, then B and C must respond to each other's transactions on the interconnect, and thus be in the same cluster. This requirement arises from the possibility in the described system that the current value of a datum from shared memory in A may actually reside in caches in B or C; if a processor in B should write a new value to this address, then the copy in the C cache must be invalidated; to accomplish this, C must see all transactions from B.
A system unit in a cluster can share memory only with a unit in the same cluster, although it need not share memory with every other unit in the same cluster. If system unit A exports a certain range of shared addresses to unit B, then B is necessarily in the same cluster; but unit C in the same cluster as A and B need not share this address range. Any system unit in the same cluster as a unit sourcing a transaction will receive that transaction, but it need not necessarily respond to the transaction. That is, the receiving unit may filter it. In practice, multiple domains will be joined in a cluster only to share memory, and all system units in all member domains of the cluster will be configured to respond to ordinary memory transactions for a specific range of memory addresses corresponding to this shared memory, from all units in the cluster. The shared memory itself resides on one system unit within the cluster, which is said to “export” this range to domains in the cluster other than its own. (A unit always responds to all transactions from source units in its own domain. This is not “exporting” in the sense used here; that term refers only to the addition of responses to some memory transactions originating outside the domain.) Therefore, a system unit may contain cacheable memory which is not accessible from units to which it exports a different range of memory addresses. The system-control registers and I/O devices within a unit are never accessible to units in a different domain, even though these units may belong to the same cluster.
Clustering adds to the domain register on each system unit a shared-memory register, and may also include range registers indicating which addresses are to be shared—i.e., exported to at least one system unit in another domain in the cluster. The shared-memory register indicates which other units can transfer addresses to and from its unit. Thus, a system unit responds to an address in a transaction from another unit only (a) when the sourcing unit is a member of the same domain, or (b) when it is a member of the same cluster, is designated in the shared-memory register, and the address lies within the range designated to be shared (if any), and only for an ordinary memory transaction, as defined above. The domain registers in the interconnect become domain-cluster registers, capable of sending validity signals to other system units in the same cluster as the unit which sources a transaction.
Bar 101 represents schematically the overall address space of computer 100. The processor or processors send all addresses on bus 150 to those boards or units 120 containing memory; each board has a memory responding to a certain range of addresses; each board contains different ranges of addresses, usually set by mechanical switches or registers on the memory boards. The processors 110 also communicate with all of the I/O adapters on all boards 130.
Bar 201 represents the address space of computer 200. Although each system unit is potentially a complete computer by itself, the interconnections provided by address router 250 place all system units within a common overall address space. That is, the full qualified address of every memory location on each system unit 210 must differ from that of every memory location on all other units.
Error and status signals on distribution bus 260 affect every unit 210 in the system. For example, error-correcting codes correct some bit errors on router 250, and produce a fatal error signal for other errors which the codes can detect but not correct. Such a fatal-error signal generally brings the entire system to its knees even when the fault causing the error is confirmed to a single system unit or router location. A faulty system unit can assert an error signal continuously, shutting down the entire system. CANCEL (sometimes called ABORT) signals present a different situation. Some high-performance systems initiate multi-cycle operations speculatively, and cancel them when their assumptions were incorrect; assertion of a CANCEL in such a single-domain system holds up every unit in the whole system.
Bars 301, 302, and 303 indicate that the memory address space of computer 300 may be treated as three separate spaces, some or all of whose addresses may overlap each other. In addition, some of the memory addresses may be physically shared among multiple domains, as shown at 304 and 305. The area 351 bridging the lower two address routers 350 symbolizes the memory addresses shared among different domains.
Computer 300 permits many of the control signals to be isolated from domains to which they cannot apply. A fatal error (such as an uncorrectable error in an address or control bus) in domain S1 thus produces an ARBSTOP signal on bus 360 only within that domain cluster, and allows domains S2 and S3 to continue operation. However, system 300 must be manually configured in a permanent or at least semipermanent manner. That is, reconfiguration requires a complete system shutdown, and rewriting or manual adjustments to reposition boards or reset switches. This system cannot be dynamically or easily reconfigured into different domains and clusters having variable amounts of resource.
Computer 400 has system units 410 corresponding to units 310 of FIG. 3. Data router 440 physically interconnects all system units 410. Address router 450 and control bus 460 physically couple all system units, just as in FIG. 2. In computer 400, however, an added domain filter 480 electronically divides computer 400 into domains and clusters capable of operating independently of each other. The placement of domain filter between router 450 and units 410 symbolizes that it acts upon addresses and control signals to achieve separation into domains. In the preferred implementation, filter 480 is physically located in chips which form parts of address router 450, and router 450 is itself physically located partly within each system unit 410 and partly in a common centerplane structure. Filter 480 may also include components located in data router 440. Domain configurator 420 communicates with filter 480 to set up the domains and clusters arbitrarily and dynamically. The example in
Anticipating later details, the numbers beside the maps indicate addresses at various points. The numbers are in hexadecimal; in the example implementation, they run from ‘00 0000 0000’ through ‘0F FFFF FFFF’. (
System unit 410 contains the space and wiring on one physical structure, such as a circuit board, for all of the major components 110-130 of the computer 100, although not all of these need be fully or even partially stuffed in a particular unit. Processor subsystem 510 may have up to four microprocessors 511, each with its own cache 512. Input/output subsystem 530 contains two system-I/O busses 531 each controlling various conventional I/O adapters 532, which in turn couple to lines 533 to external I/O devices such as disk drives, terminal controllers, and communications ports. Memory subsystem 520 contains up to four banks of memory 521, each pair of which couple to conventional pack/unpack modules 522. As an alternative to fully generic system units, more specialized boards are feasible. For example, a first type of system unit might have wiring and locations for processor and memory subsystems only, and a second type would contain only one or more I/O subsystems.
Data router 440 passes transaction data among the subsystems 510-530; in this embodiment, the data router is physically divided between a local portion 54L0 on each system unit 410 and a global portion 54G0 located on the centerplane; in
Each buffer 54L1 of local router 54L0 has a small amount of fast static RAM, capable of holding, e.g., 256 transactions. Its conventional purpose is to provide a holding queue for isolating and smoothing the flow of data against possible bursts of activity. Local data switch 54L2 is a full-duplex, bidirectional 1×4 crossbar. Local data arbiter 54L3 accepts grants from global arbiter 54G2, and instructs at most one buffer to store the corresponding transaction packet. Simultaneously, local arbiter 54L3 uses conventional fairness algorithms to select an awaiting packet from one of the buffers and to generate on its behalf a request for transmission to global arbiter 54G2. Global data router 54G0 transfers data from the LDR 54L0 of one system unit to the LDR 54L0 of the same or a different unit, using a 16×16 crossbar array 54G1 which receives sixteen sets of four-bit steering logic from arbiter 54G2. A lower level realizes this as sixteen sixteen-input multiplexers, one for each system unit.
Address router 450 passes addresses among the subsystems 510-530 on each system unit 410, and also from one system unit to another; like the data router, it has both a local portion, denoted 55L0, and a global portion, 55G0. In this implementation, address routing proceeds in the same way for both local (intersystem) and global (intersystem) transactions. Port controllers 55L1 and memory controller 55L2 provide a conventional interface between subsystems 510-530 and the individual routing switches 55L3. For the moment, individual processors 511, I/O busses 531, and memory units 521 may be considered to be effectively connected directly to local address switches (LAS) 55L3. LASs 55L3 perform a number of conventional functions, such as cache coherency. For purposes of the present invention, their function is to route addresses from processors 511, I/O busses 531, and memory 521 in the system unit to and from global address router 55G0.
The global portion 55G0 of address router 450 in this embodiment has four address busses 55G1 shared among the sixteen system units. A separate global address arbiter 55G2 allocates each address bus to various system units 410 in response to requests for transactions from a local address arbiter 55L4 in each unit.
In this embodiment, each LAS 55L3 on a system unit connects to a different one of the four GABs 55G1, as symbolized by the open circles on lines 915 and 922. Arbiter 55L4 physically comprises four identical sections, which each communicate with a different one of GAAs 55G2 and LASs 55L3, in response to access requests from lines 811. That is, the overall function of the combined local and global portions of address router 450 is to schedule the four GABs 55G1 among contending requests from the six ports (two from each of the controllers 55L1) of all system units 410. The decisions for all four GABs 55G1 proceed simultaneously with respect to each other in the LAA 55L4 of each system unit.
LAA 55L4 may interrupt the operation of computer 400 in a number of ways. A fatal error such as a parity error on the system unit may generate an ARBSTOP control signal on line 824; that is, the LAA acts as a generator of the ARBSTOP control signal. In a conventional computer, this signal broadcasts through control distributor 460 directly to an ARBSTOP detect line 827 in the LAA of every other system unit; thus, a fatal error in one unit conventionally shuts down every system unit of the entire computer 400, to avoid corruption of user data and to permit immediate dumps for failure analysis. As described in connection with
A system unit may also assert HOLD control signals 825 to all other units on their corresponding detect lines. Conventionally, an outbound HOLD signal from any system unit travels directly to the corresponding inbound HOLD line 826 of every other unit, thus precluding the entire computer from requesting more transactions whenever an input queue of that system unit is saturated with pending operations. In addition, a faulty system unit 410 can bring down the entire computer by asserting HOLD continuously.
Local address arbiter 55L4 thus acts as a generator of control signals, such as GAB REQ, ARBSTOP-out, and HOLD-out, which can affect the operation of other system units. It also acts as a receptor of these control signals, GAB GRANT, ARBSTOP-in, and HOLD-in, from other system units. A conventional system would merely tie outgoing control signals from all system units together and route them to the receptors of all other units; the present system, however, passes them through a domain filter, so that a signal generated in one LAA affects the LAAs of only those units in the same domain or domain cluster. As apparent below, other operational devices also act as generators and receptors of control signals which the domain filter can pass or block, according to different domain definitions.
Outbound address control 910 receives transaction addresses from each port controller 55L1 (
Conventional inbound address switch 920 receives transaction addresses from a global address bus at receivers 921 over inbound address lines 922, whenever a VALID signal on line 1023 signals that the transaction is valid for this particular system unit 410; if this line remains inactive, LAS 55L3 treats the corresponding bus cycle as an idle cycle, and performs no action. Addresses from valid transactions proceed directly to memory controller 55L2 via line 923. Addresses from other system units proceed through ECC decoder 924 and cache-coherency unit 930 to inbound address switch 925. Some addresses proceed through read/write control 926 or reply control 927 to switch 925. Finally, switch unit 925 gates inbound addresses to the proper lines 911 to one of the port controllers 55L1.
Blocks 930 maintain coherency among caches 512,
System 400 makes no distinction between transactions originating and terminating at different system units 410, and those both originating and terminating at the same unit. All transactions traverse a global address bus in the present system, because each cache controller in a domain or cluster must be aware of transactions in the cache lines of all other caches of the same group.
The local portion 940 of domain filter 480,
Comparator 941 detects matches between an address from lines 922 and each of four registers 942 and 944-946.
Domain mask register (DMR) 942 has sixteen bits, one for each of the possible system units in a computer 400. The bit position for (each copy of) each domain register in each system unit in a given domain contains a “1” bit in all the other registers of system units in the same domain. Using the example of
Unit
Bit Position
Number
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
2
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
3
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
4
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
5
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
6
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
7
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
8-F
(these registers do not exist in the system
Again, all four copies of register 941 in the same system unit 410 contain identical values.
Lines 922 contain signals representing the number of the particular system unit 410 which had issued the current transaction. If the corresponding bit of the receiving unit's DMR 942 is not on, then comparator 941 produces an inhibiting signal on NON-DOMAIN line 943, which prevents inbound switch 925 from passing the transaction over lines 911 to ports 55L1, FIG. 5. Comparator also produces a MEMORY CANCEL inhibiting signal on line 948, via line 949 and OR gate 901. This signal tells memory controller 55L2 to disregard addresses on lines 923, when the current transaction originates outside the domain. This effectively isolates the domain, making it insensitive to transactions occurring in other domains.
As thus far described, system units in different domains can exchange data with each other only through external I/O devices such as serial communications lines interconnected by dedicated wiring such as 533, FIG. 5. Many applications of computer 400 would be enhanced by allowing different domains to cooperate via a much faster method. To this end, domain filter 480,
A shared-memory mask register 944 located in each copy of the local domain filter 940 defines which system units contain physical RAM 521 to be exported to other units as shared memory in a cluster defined by cluster registers 1020 in FIG. 10. The contents of each SMMR 944 in the same system unit are the same.
Each SMMR 944 has sixteen bits, one for each of the possible system units in a computer 400; and each system unit 410 has four copies of its own SMMR, one copy for each global address bus 55G1 in computer 400. Bit position j for the SMMR in a system unit 410-i in a given cluster contains a “1” value iff unit 410-i should respond to any memory transaction from system unit 410-j. Returning to the example shown in
Unit
Bit Position
Number
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
3
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
0
5
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
0
6
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
0
7
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
0
8-F
(these registers do not exist in the system
Bit positions 8-F in all registers are “0” because their corresponding system units do not exist. Units 410-0 through -3 have no “1” values because they are in the same domain, and none of the units in that domain export any memory to the other domains. The “1” values at bits through 7 for 410-4 through 410-7 indicate that these units should respond to ordinary memory transactions from all of the units 410-4 through 410-7 to implement shared memory. The memory resides on one of these units (for example, 410-4), but the specific location is not deduceable from the SMMRs 944. The requirements for cache coherency on the shared memory dictate that all units using this shared memory see all transactions within this address range from all other units which use the shared memory.
Register 944 alone would suffice to indicate whether all or none of a system unit's memory is shared. In almost all cases, however, it is desirable to share only a designated portion of the memory among the domains of a cluster. Registers 945 and 946 specify the boundaries of an address range to be shared in a particular cluster. Each shared-memory base register (SMBR) 945 on each system unit which has access to shared memory in its cluster contains the lowest address within the total address space of computer 400 to be shared. In the example of
Similarly, each shared-memory limit register (SMLR) 946 in the same cluster contains the high-order 25 bits of the highest address of the shared address range. In this example, the SMLR of system units 410-4 through 410-7 hold the value ‘004 FFFF’, specifying that the uppermost shared address is the same as the highest address of the physical memory on that unit, ‘004 FFFF FFFF’. The SMLRs of all other units hold a designated invalid value ‘000 0000’.
Unit
SMBR (945)
SMLR (946)
0
0 0
0 0 0 0
0 0
0 0 0 0
1
0 0
0 0 0 0
0 0
0 0 0 0
2
0 0
0 0 0 0
0 0
0 0 0 0
3
0 0
0 0 0 0
0 0
0 0 0 0
4
0 4
C 0 0 0
0 4
F F F F
5
0 4
C 0 0 0
0 4
F F F F
6
0 4
C 0 0 0
0 4
F F F F
7
0 4
C 0 0 0
0 4
F F F F
8-F
(do not exist)
(do not exist)
Register control 947 permits control lines 1143 to load different values into registers 942, 944, 945 and 946. This allows dynamic reconfiguration of the system units 410 in domains and clusters, and of the location of each cluster's shared memory.
It would be possible to use NON-DOMAIN line 943 to inhibit or block transactions from non-shared memory, just as it inhibits other transactions from outside the domain. While this arrangement would permit rapid control of non-memory transactions, memory filtering requires more time in comparator 941. Because latency in memory subsystem 520 is more critical than latency in other subsystems of
Thus far, computer 400 has achieved “software isolation” between domains and clusters. Different domains may run entirely different operating systems, for example, without interfering with each other. It remains to provide “hardware isolation” in the computer, so that hardware error signals from control bus 460,
Arbitration logic 1010 uses any of a number of conventional algorithms to allocate transfer cycles of its GAB 55G1 (
In the multi-domain computer according to the invention, a global portion of domain filter 480 physically accompanies each global address arbiter 55G2. A bank 1020 of cluster register 1021, one for each of the sixteen possible system units 410, receives the sixteen grant-signal lines 1013. Each individual cluster register 1021-i has one bit position 1021-i-j for each of the sixteen system units 410-j. A “1” value in the “unit-3” position of the first register 1021-0, for example, indicates that system unit 410-3 is in the same cluster with system unit 410-0. The table below illustrates the contents of registers 1021 for the example configuration described above.
Register
Bit Position
Number
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
2
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
3
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
4
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
0
5
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
0
6
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
0
7
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
0
8
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
9
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
A
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
B
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
C
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
D
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
E
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
F
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
Registers for all sixteen possible system units are always implemented. The values in register 1021-8 through 1021-F, corresponding to system units not installed in
Filter logic 1022 couples grant lines 1013 to lines 1023 in accordance with the cluster definitions in register 1021. Each line 1023 travels to its corresponding system unit 410 as a “global address valid” (VALID) signal 822. In a conventional system such as 300,
In a conventional, single-domain computer, a HOLD signal 825 from any LAA 55L4,
Control unit 1024 permits lines 1144 to load registers 1021 with different values, in order to reconfigure the cluster definitions dynamically. As an implementation choice, each global arbiter 55G2 occupies an identical integrated circuit, each of which includes a duplicate set of cluster registers and filter logics. All sets of clusters registers are loaded with identical sets of stored values.
Line 1023-0 asserts a VALID signal to system unit 410-0 whenever any system nit within its hardware domain cluster initiates a transaction. GRANT signal 1013-0, associated with unit 410-0, satisfies AND gate 1401-00 when bit 1021-0-0 of register 1021-0 contains a “1” value, indicating that unit 410-0 is in its own cluster. Logic OR gate 1402-0 then asserts output 1023-1, which returns it to system unit 410-0. Assertion of GRANT line 1013-1 from system unit 410-1 also raises line 1023 for unit 410-0 if these two units are in the same cluster. If they are, a “1,,” value in bit 1 of register 1021-0 (called bit 1021-0-1 for simplicity) satisfies AND gate 1401-01 and OR 1402-0 when 1013-1 rises. The fourteen remaining AND gates in this bank operate similarly for register bits 1021-0-2 through 1021-0-F.
Gates 1401-10 through 1401-1F and 1402-1 function in a similar matter to produce VALID signal 1023-1 to system unit 410-1 whenever a system unit in the same domain cluster proposes a transaction. Fourteen additional banks of gates handle the remaining lines through 1023-F. Normally, the contents of registers 1021 form a diagonal matrix, so that bit 1021-i-j always has the same value as bit 1021-j-i. Also, each unit is normally a member of its own cluster, so that all main-diagonal bits 1021-i-i are always “1”.
Conventional control and service unit 470,
One of the conventional functions implemented in computer 400 is the ability to perform tests on its logic circuits by means of stored test patterns sent through a set of lines 1115 to various elements, as indicated at 1116. The conventional function of these lines is to implement boundary-scan tests, as described in references such as K. P. Parker, THE BOUNDARY-SCAN HANDBOOK (Kluwer Academic Publishers, 1992). Those in the art usually refer to this protocol as the “JTAG standard.”
Configurator 420 coopts the already existing JTAG lines 1115 for an additional function. Normally, these lines provide conventional address and data lines to many chips throughout the entire computer 400 for the purpose of testing the functions of these chips. Control logic 947,
The form of service processor 470 is not at all critical; it might even be possible in some cases to use a part of the normal system itself for this function, without having a physically separate entity. In fact, the preferred computer 400 allows system units themselves to provide some of the functions of a domain configurator when desired. Privileged software within the operating system running in a system unit 410 may also write to the shared-memory registers 945 and 946,
Blocks 1220 set the configuration of domain filter 480, FIG. 4. In block 1221, an operator at the remote console selects a particular domain to configure, and enters the numbers of the system units 410 belonging to that domain in block 1222. Service processor 1110 then sends signals on lines 1115 and 1142 to load the proper values into domain mask registers 942,
If so, blocks 1230 set up any desired shared memory. In block 1231, the operator selects one of the system units 410 which is to export memory, and block 1232 selects which domain is to import that memory. (A system unit “exports” memory when its physically installed memory is made available to another system unit, which “imports” that memory as though it were located on the importing unit.) Block 1233 loads the appropriate registers 944 as explained in connection with FIG. 9. Block 1234 sets the appropriate bits in registers 1020, as explained in connection with FIG. 10. Block 1235 receives a value for the base address of the shared memory range from the operator; block 1236 enters this into the proper SMB registers 945. Block 1237 receives the corresponding limit address value, and block 1238 loads it into the SMLRs 946. If the operator wishes to define additional clusters, block 1226 returns control to block 1231. Otherwise, procedure 1200 ends. A large number of variations in the sequence of the steps shown in
Although system units 410 can arbitrarily combine into domains, obviously all domains and clusters must include at least one system unit which has at least one processor installed, and one which contains memory. A domain or a cluster almost always contains some I/O facilities on one or more of its system boards. How these resources are apportioned among the various system boards in a domain or cluster, however, is arbitrary. Method 1200 may configure domains and clusters during normal operation of the entire system 400 and its operating system(s). To avoid complexity and the possibility of subtle errors, it is prudent to permit reconfiguration only when the system is in a special state before any of the operating systems are booted.
Blocks 1310 occur on all system units 410, as symbolized by the multiple columns in FIG. 13. They initiate a request for a transaction, either between two different system units or within the same unit. Requests proceed asynchronously and concurrently whenever any one or more ports of one or more system units requests a transaction at any of the blocks 1311. In blocks 1312, local arbiter 55L4 selects one of the requesting ports on a system unit to proceed, based upon any of a number of traffic-equalizing priority algorithms.
Blocks 1320 transmit the addresses for all transactions. As indicated by lines 1321-0 through 1321-F, each block 1322 receives transaction requests from all system units, 410-0 through 410-F, and grants one of the buses 55G1 to the system unit. Each of the four global address arbiters 55G2 performs block 1322 in parallel, using a standard fairness method to allocate its particular bus 55G1 among the contending transactions. Block 1323 then broadcasts the address from the system unit selected by its block 1322 to all sixteen system units, as indicated by lines 1324. Again, each of the four buses 55G1 in this implementation may broadcast a separate address concurrently with any other such bus.
Step 1330 filters the transactions on each bus 55G1 so that only the appropriate system units 410-0 through 410-F are permitted to act upon them. Separate blocks 1330 exist for each global address bus for each system unit; thus the present embodiment has 4×16=64 blocks 1330. Each block 1330 determines simultaneously from registers 1020 whether its system unit is within the same cluster as the sending unit for the transaction on its bus. (Recall that a single domain by itself is also defined as a cluster in registers 1020.) If not, the system unit ignores the transaction, and control passes to output 1302; otherwise, control passes to 1340.
A separate set of blocks 1340 appears for each global address bus in each system unit, or 4×16=64 sets of blocks. Blocks 1341 read the source unit's number from the transaction itself on GAB 55G1 as it travels along lines 922 to comparator 941, FIG. 9. If a domain mask register 942 reveals that the source unit is not in the same domain as the unit in which it is located, block 1341 passes control to block 1342. If shared-memory register 944 detects that its system unit shares memory with the source unit, block 1342 moves to block 1343. If a comparator 941 shows that the address of the transaction carried on lines 922 exceeds the base address stored in register 945, the block 1344 tests whether that address lies below the shared-memory upper limit stored in register 946. For each set of blocks 1330 which indicate that its system unit is not involved in the current transaction, exit 1345 concludes the transaction at that location. But any chain of filter blocks 1330-1340 which senses the same domain, or the same cluster and the appropriate address range, causes line 1346 to pass control to block 1350 for that system unit.
Blocks 1350 execute the actual transaction from the requesting system unit to the proper destination within the target unit, including any required data transfer through data router 440. (As noted earlier, there are many different types of transactions.) Point 1302 marks the completion of the transaction. At any given point in time, several different transactions may be in progress in the same or different blocks of flowchart 1300, each proceeding independently of the others.
As described in connection with FIG. 5 and elsewhere, a transaction may involve the transfer of data from one system unit to another on global data router 54G0. Global data arbiter receives conventional signals 1510 from all system units. For example, lines 1510-0 from the local data arbiter 54L3 of system unit 410-0 may request a transfer from that unit 410-0 to a particular one of the units 410-0 through 410-F, FIG. 4. Lines 1510-1 designate which system unit 410-0 to 410-F is to receive a transfer from unit 410-1, and so forth. Arbitration outputs 1520 establish a data path by allowing data from one of the data lines 1530 to flow to another of the lines 1530. For example, if logic 54G2 grants the request of lines 1510-0 to transport data from unit 410-0 to 410-1, then FROM-0 line 1521 couples data bus 54G1 to lines 1530-0 and TO-1 line 1540-1 would be coupled directly to TO-1 line 1580-1, enabling lines 1530-1 to pass the data out to unit 410-1.
Under normal conditions, this arrangement is transparent to the domain structure of computer 400. However, a fault which mistakenly sends data to the wrong system unit (One not in the same domain cluster) can disrupt the operation of the system units in the other cluster. For instance, suppose that unit 410-0 in
Further filter logic 1550 eliminates this possibility by signaling an attempted out-of-cluster data transfer. Another set of cluster registers 1560, identical to registers 1020,
Logic 1550 also uses the definitions in cluster registers 1560 to interdict any TO signals 1540 from reaching a destination unit which is not to the same cluster as the unit which issues a FROM signal. In this example, an assertion of any of the TO lines 1540-0 through 1540-3 would be passed to the corresponding TO line 1580-0 through 1580-3, to enable the corresponding system unit 410-0 through 410-3 to receive data on lines 1530-0 through 1530-3. On the other hand, the simultaneous generation of a FROM signal on line 1520-0 and a TO signal 1550-7 —that is, to a unit in a different cluster— is blocked by logic 1550. Thus, the corresponding TO line 1580-7 remains dormant, and data path 54G1 does not pass data to system unit 410-7. In this manner, filter logic causes a transgression error to shut down the unit sourcing the data transfer by sending an ARBSTOP to that unit, and prevents the transfer from having any effect upon the destination unit, by inhibiting its TO line; so that no transfer is ever actually granted to that unit.
McCrocklin, Andrew J., Aneshansley, Nicholas E., Drogichen, Daniel P.
Patent | Priority | Assignee | Title |
8713335, | Sep 24 2007 | Cognitive Electronics, Inc. | Parallel processing computer systems with reduced power consumption and methods for providing the same |
9063754, | Mar 15 2013 | COGNITIVE ELECTRONICS, INC | Profiling and optimization of program code/application |
9141131, | Aug 26 2011 | COGNITIVE ELECTRONICS, INC | Methods and systems for performing exponentiation in a parallel processing environment |
9281026, | Sep 24 2007 | GRANGER, RICHARD | Parallel processing computer systems with reduced power consumption and methods for providing the same |
Patent | Priority | Assignee | Title |
5473599, | Apr 22 1994 | Cisco Technology, Inc | Standby router protocol |
5550816, | Dec 29 1994 | NETWORK SYSTEMS CORP | Method and apparatus for virtual switching |
5572674, | Jan 07 1993 | BMC Software, Inc. | Method of dynamically adjusting SNA network control program parameters |
5649106, | Mar 14 1991 | Mitsubishi Denki Kabushiki Kaisha | Parallel computer with reconstruction of processor clusters |
5680634, | Jan 16 1991 | Fixed interconnection network method and apparatus for a modular mixed-resolution, N-dimensional configuration control mechanism | |
5689661, | Mar 31 1993 | Fujitsu Limited | Reconfigurable torus network having switches between all adjacent processor elements for statically or dynamically splitting the network into a plurality of subsystems |
5710938, | Jul 19 1995 | Unisys Corporation | Data processing array in which sub-arrays are established and run independently |
5751967, | Jul 25 1994 | Spherix Incorporated | Method and apparatus for automatically configuring a network device to support a virtual network |
5784802, | Apr 28 1994 | Semitool, Inc. | Semiconductor processing systems |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Aug 01 2001 | Sun Microsystems, Inc. | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Jan 05 2011 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Apr 27 2013 | 4 years fee payment window open |
Oct 27 2013 | 6 months grace period start (w surcharge) |
Apr 27 2014 | patent expiry (for year 4) |
Apr 27 2016 | 2 years to revive unintentionally abandoned end. (for year 4) |
Apr 27 2017 | 8 years fee payment window open |
Oct 27 2017 | 6 months grace period start (w surcharge) |
Apr 27 2018 | patent expiry (for year 8) |
Apr 27 2020 | 2 years to revive unintentionally abandoned end. (for year 8) |
Apr 27 2021 | 12 years fee payment window open |
Oct 27 2021 | 6 months grace period start (w surcharge) |
Apr 27 2022 | patent expiry (for year 12) |
Apr 27 2024 | 2 years to revive unintentionally abandoned end. (for year 12) |