DE3751616T2 - Parallel-Grossrechner. - Google Patents
Parallel-Grossrechner.Info
- Publication number
- DE3751616T2 DE3751616T2 DE3751616T DE3751616T DE3751616T2 DE 3751616 T2 DE3751616 T2 DE 3751616T2 DE 3751616 T DE3751616 T DE 3751616T DE 3751616 T DE3751616 T DE 3751616T DE 3751616 T2 DE3751616 T2 DE 3751616T2
- Authority
- DE
- Germany
- Prior art keywords
- processor
- gate device
- output
- gate
- processor units
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0215—Addressing or allocation; Relocation with look ahead addressing means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17337—Direct connection machines, e.g. completely connected computers, point to point communication networks
- G06F15/17343—Direct connection machines, e.g. completely connected computers, point to point communication networks wherein the interconnection is dynamically configurable, e.g. having loosely coupled nearest neighbor architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17356—Indirect interconnection networks
- G06F15/17368—Indirect interconnection networks non hierarchical topologies
- G06F15/17381—Two dimensional, e.g. mesh, torus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
- G06F15/8023—Two dimensional arrays, e.g. mesh, torus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
- G06F15/803—Three-dimensional arrays or hypercubes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1629—Error detection by comparing the output of redundant processing systems
- G06F11/165—Error detection by comparing the output of redundant processing systems with continued operation after detection of the error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1658—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2041—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with more than one idle spare processing component
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2046—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share persistent storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Multi Processors (AREA)
- Debugging And Monitoring (AREA)
Description
- Die vorliegende Erfindung betrifft einen Parallelcomputer gemäß dem Oberbegriff des Patentanspruchs 1.
- Ein derartiger Parallelcomputer ist aus EP-A-0 132 926 bekannt, welche Anmeldung dem US-Patent 4 498 400 entspricht, auf das im folgenden als '400-Patent Bezug genommen wird.
- In der Fig. 1A des '400-Patents, welche als Fig. 1 wiedergegeben ist, sind ein Mainframe-Computer 10, ein Mikrocontroller 20, ein Feld von parallel verarbeiteten integrierten Schaltkreisen 35, eine Datenquelle 40, ein erster Puffer und ein Multiplexer/Demultiplexter 50, erste, zweite, dritte und vierte bidirektionale Bus-Steuerschaltkreise 60, 65, 70, 75, ein zweiter Puffer und Multiplexer/Demultiplexer 80 und eine Datensenke 90 gezeigt. Der Mainframe-Computer 10 kann ein geeignet programmierter, am Markt erhältlicher Computer, wie etwa eine VAX (TM), sein, wie sie von Digital Equipment Corporation hergestellt wird.
- Der Mikrocontroller 20 ist ein Befehlssequenzer mit herkömmlichem Design zum Erzeugen einer Sequenz von Befehlen, die dem Feld 30 mittels eines 32 Bit-Parallelbusses 22 zugeführt werden. Der Mikrocontroller 20 empfängt von dem Feld 30 ein Signal auf der Leitung 26. Dieses Signal ist ein Allzweck- oder Global-Signal, das für den Datenausgang sowie für Steuerinformation verwendet werden kann. Der Bus 22 und die Leitung 26 sind parallel mit jedem IC 35 verbunden. Im Ergebnis werden die Signale vom Mikrocontroller 20 simultan jedem IC 35 des Feldes 30 zugeführt, und das Signal, das dem Mikrocontroller 20 auf der Leitung 26 zugeführt wird, wird durch Kombinieren der Signalausgänge von allen ICs 35 des Feldes erreicht.
- Das Feld 30 enthält Tausende identischer ICs 35. Jeder IC 35 enthält mehrere identische Prozessoren/Speicher 36. In der Ausführungsform, die in dem '400-Patent beschrieben ist, wird ein Feld mit bis zu 32.768 (=2¹&sup5;) identischer ICs 35 angegeben. Jeder IC 35 kann 32 (=2¹&sup5;) identische Prozessoren/Speicher 36 aufweisen. Zum Zeitpunkt der Einreichung vorliegender Patentanmeldung wurde ein System mit 4.096 (= 2¹²) identischen ICs 35, die jeweils 16 (=2&sup4;) identische Prozessoren/Speicher aufwiesen, von der Anmelderin gefertigt und unter dem Namen Connection Machine (TM) verkauft.
- Die Prozessoren/Speicher 36 sind gemäß zwei Geometrieen organisiert und miteinander verbunden. Eine Geometrie stellt ein herkömmliches zweidimensionales Gittermuster dar, bei dem die Prozessoren/Speicher in einem rechtwinkeligen Feld organisiert und mit ihren vier nächsten Nachbarn in dem Feld verbunden sind. Vereinfachend werden die Seiten dieses Feldes mit Nord, Ost, Süd und West bezeichnet. Um jeden Prozessor/Speicher mit seinen vier nächsten Nachbarn zu verbinden, werden die individuellen Prozessoren/Speicher mittels elektrischer Leiter zwischen angrenzenden Prozessoren/Speichern in jeder Reihe und jeder Spalte des Gitters verbunden.
- Die zweite Geometrie stellt einen Boolschen-N-Würfel mit 15 Dimensionen dar. Um das N-Würfel-Verbindungsmuster zu verstehen, ist es hilfreich, die Anzahl der ICs von 0 bis 32.767 durchzunumerieren und diese Nummern oder Adressen in Binärnotation unter Verwendung von 15 Binärstellen anzugeben. So wie die Position eines Objekts in einem zweidimensionalen Gitter durch zwei Nummern ausgedrückt werden kann, wobei eine die Position entlang einer ersten Dimension und die andere die Position entlang einer zweiten Dimension angibt, kann eine Nummer auch dazu verwendet werden, um die Position eines ICs in jeder der 15 Dimensionen eines Boolschen 15-Würfels zu beschreiben. In einem N-Würfel kann ein IC jedoch nur zwei unterschiedliche Positionen 0 und 1 in jeder Dimension aufweisen. Somit kann eine 15- stellige IC-Adresse in Binärnotation verwendet werden, um die Position des ICs in den 15 Dimensionen des N-Würfels anzugeben. Da eine Binärstelle nur zwei Werte aufweisen kann, 0 oder 1, und da jeder IC einmalig durch 15 Binärstellen identifiziert wird, hat jeder IC 15 andere ICs, deren Binäradressen sich nur in einer Stelle unterscheiden. Diese 15 ICs, deren Binäradresse sich nur um 1 von der eines ersten ICs unterscheiden, werden als die nächsten Nachbarn des ersten ICs bezeichnet. Für diejenigen, die sich mit der Definition der Hamming-Distanz auskennen, wird klar sein, daß der erste IC von den anderen 15 nächsten Nachbarn durch eine Hamming-Distanz 1 beabstandet ist.
- Um die ICs 35 in Form eines Boolschen 15-Würfels zu verbinden, wird jeder IC mit den 15 nächsten Nachbarn durch 15 Eingangsleitungen 38 und 15 Ausgangsleitungen 39 verbunden. Jeder dieser 15 Eingangsleitungen 38 zu jedem IC 35 ist mit einer unterschiedlichen Dimension aus den 15 Dimensionen des Boolschen 15- Würfels assoziiert, und entsprechend ist jede der 15 Ausgangsleitungen 39 von jedem IC 35 mit einer unterschiedlichen Dimension assoziiert. Spezielle Details der Verbindungen bei dem Boolschen N-Würfel sind in der '237-Anmeldung beschrieben. Um eine Kommunikation durch das Verbindungsmuster des Boolschen 15-Würfels zu ermöglichen, werden die Ergebnisse der Berechnungen in Form von Nachrichtenpaketen organisiert. Diese Pakete werden von einem 10 zum nächsten über einen Weiterleitungsschaltkreis in jedem IC gemäß der Adreßinformation, die einen Teil des Pakets darstellt, weitergeleitet.
- In der Fig. 7A des '400-Patents ist ein Prozessor/Speicher 36 im Detail beschrieben. Wie aus der Fig. 7A entnommen werden kann, besteht ein Prozessor/Speicher aus einem 32x12 Bit-RAM 250, einer Alu 280 und einem Flag-Controller 290. Die ALU arbeitet mit Daten von drei Quellen, zwei Registern in dem RAM und einem Flag-Eingang und erzeugt zwei Ausgänge, einen Summenausgang, der in eines der RAM-Register eingeschrieben wird, und einen Carry-Ausgang, der für gewisse Register in dem Flag- Controller sowie für bestimmte andere Prozessoren/Speicher verfügbar gemacht wird.
- Die Eingänge zum RAM 250 sind die Adreßbusse 152, 154, 156, 158, eine Summenausgangsleitung 285 von der ALU 270, die Nachrichtenpaket-Eingangsleitung 122 von der CIU (180) der Fig. 6B des '400-Patents und eine WRITE ENABLE-Leitung 298 vom Flag- Controller 290. Die Ausgänge vom RAM 250 sind die Leitungen 256, 257. Die Signale auf den Leitungen 256, 257 werden von der gleichen Spalte von zwei unterschiedlichen Registern im RAM 250 erhalten, wobei eines das Register A und das andere das Register B ist. Die Busse 152, 154, 156, 158 adressieren diese Register und Spalten gemäß den Befehlswörtern von dem Mikro- Controller 20.
- Die AlU 280 umfaßt einen Eins-Aus-Acht Decoder 282, einen Summenausgangsauswähler 284 und einen Carry-Ausgangsselektor 286. Wie im '400-Patent beschrieben, ermöglicht dies die Erzeugung von Summen- und Carry-Ausgängen für viele Funktionen einschließlich einer Addition, einer logischen ODER-Verknüpfung und einer logischen UND-Verknüpfung. Die ALU 280 arbeitet mit diesen drei Bits gleichzeitig, zwei auf der Leitung 256, 257 von den Registern A und B im RAM 250 und eine auf der Leitung 296 vom Flag-Controller 290. Die ALU weist zwei Ausgänge auf: eine Summe auf der Leitung 285, die in das Register A des RAMs 250 geschrieben wird und einen Carry-Ausgang auf der Leitung 287, der in ein Flag-Register 292 eingeschrieben wird und den Nord-, Ost-, Süd-, West- und Daisy-Eingängen anderer Prozessoren/Speicher 36, mit denen dieser Prozessor/Speicher verbunden ist. Die Signale auf der Carry-Leitung 287 können auch der CIU 180 über eine Nachrichtenpaketausgangsleitung 123 zugeführt werden.
- Jeder integrierte Schaltkreis 35 enthält gewisse Überwachungsschaltkreise für die Prozessoren/Speicher auf dem IC und einen Weiterleitungsschaltkreis 200 zum Verbinden des ICs mit seinen nächsten Nachbar-ICs in dem Boolschen N-Würfel. Wie in dem '400-Patent beschrieben, enthält der Überwachungsschaltkreis einen Timing-Generator 140, eine PLA 150 zum Decodieren von Befehlen, wie sie von dem Mikrocontroller 20 empfangen werden und zum Bereitstellen der decodierten Befehle an die Prozessoren/Speicher des ICs und enthält weiterhin ein Kommunikationsinterface 180, welches den Fluß von ausgehenden und eingehenden Nachrichtenpaketen zwischen den Prozessoren/Speichern eines ICs und dem Weiterleitungsschaltkreis, der mit dem IC assoziiert ist, steuert.
- Der Weiteleitungsschaltkreis 200 steuert die Weiterleitung von Nachrichtenpaketen von und zu den nächsten Nachbar-ICs in einem Boolschen N-Würfel. Durch diesen Schaltkreis können die Nachrichtenpakete von einem IC zu einem anderen IC in dem Boolschen N-Würfel weitergeleitet werden. Wie in Fig. 6B des '400-Patents gezeigt, enthält der Schaltkreis 200 einen Leitungszuweiser 205, einen Nachrichtendetektor 210, einen Puffer- und Adressenwiederhersteller 215 und einen Nachrichteneinfüger 220, die alle seriell in einer Schleife verbunden sind, so daß der Ausgang eines Elements dem Eingang des nächsten Elements zur Verfügung gestellt wird und der Augang des Nachrichteneinfügers 220 dem Leitungszuweiser 205 zugeführt wird. Der Leitungszuweiser 205 enthält ein 15x15 Feld von etwa identischen logischen Weiterleitungszellen 400. Jede Spalte dieses Feldes steuert den Nachrichtenpaketfluß zwischen einem nächsten Nachbarweiterleitungsschaltkreis 200 in einer Dimension des Boolschen 15-Würfels. Jede Reihe dieses Feldes steuert die Speicherung eines Nachrichtenpaktes im Weiterleitungsschaltkreis 200. Der Nachrichtendetektor 210 eines Weiterleitungsschaltkreises stellt die Nachrichtenpakete, die für die Prozessoren/Speicher, die mit diesem speziellen Weiterleitungsschaltkreis assoziiert sind, an eine CIU 180 zur Verfügung. Der Nachrichteneinfüger 220 fügt ein Nachrichtenpaket von der CIU 180 in eine Gruppe von Nachrichtenpaketen ein, welche in dem Weiterleitungsschaltkreis zirkulieren. Neun derartige logische Weiterleitungszellen 400 sind in Fig. 11 des '400-Patents verdeutlicht, wobei diese Figur als Fig. 2 im vorliegenden Patent wiedergegeben ist. Die drei Zellen in der linken Spalte sind mit der ersten Dimension assoziiert, die drei mittleren Spalten mit der zweiten Dimension und die drei rechten Spalten mit der fünfzehnten Dimension. Jede Spalte von Zellen weist einen Ausgangsbus 410 auf, der mit einer Ausgangsleitung 39, die mit dieser Dimension assoziiert ist, verbunden ist. Bezüglich der Reihen sind die drei Zellen in der untersten Reihe die tiefsten Zellen des Feldes und empfangen Eingänge von den Eingangsleitungen 38. Die oberen drei Zellen sind die obersten Zellen des Feldes. Die mittleren drei Zellen sind repräsentativ für alle Zellen zwischen den unteren und oberen Zellen und sind, wie gezeigt, mit der untersten Reihe verbunden.
- Wie weiter in Fig. 2 gezeigt ist, sind drei Verarbeitungs- und Speichereinrichtungen 420 vorhanden, welche Teile des Nachrichtendetektors 210, des Puffer- und Adreßwiederherstellers 215 und des Nachrichteneinfügers 220 des Weiterleitungsschaltkreises 200, welcher Nachrichten von entsprechenden drei Reihen der Zellen 400 im Leitungszuweiser 205 verarbeitet und speichert, darstellen. Zwölf ähnliche Verarbeitungs- und Speichereinrichtungen (nicht gezeigt) werden verwendet, um Nachrichten von anderen Reihen zu verarbeiten und zu speichern.
- Wenn kein Weiterleitungskonflikt auftritt, wird ein Nachrichtenpaket von einem Eingang an eine Weiterleitungszelle der ersten Dimension zum Register in dem Prozessor/Speicher, für den es adressiert ist, während eines einzigen Nachrichtenzyklusses weitergegeben. Wenn Weiterleitungskonflikte auftreten, wird das Nachrichtenpaket zwischenzeitlich in der Verarbeitungs- und Speichereinrichtung eines Weiterleitungsschaltkreises an einem oder mehreren dazwischenliegenden Punkten gespeichert. Somit wird mehr als ein Weiterleitungszyklus benötigt, um das Nachrichtenpaket zu seinem Ziel weiterzuleiten.
- Die Fig. 2 zeigt eine Zusammenfassung der Ein- und Ausgangsanschlüsse einer jeden Weiterleitungszelle 400. Wie durch die drei Zellen 400 entlang der untersten Reihe angedeutet, werden die Nachrichtenpakete von unterschiedlichen Dimensionen des Boolschen 15-Würfels NAND-Gattern 405 zugeführt. Diese Gatter sind stets aktiv, mit Ausnahme während des Reset-Zustandes. Der Ausgang eines jeden NAND-Gatters 405, welcher das invertierte Nachrichtenpaket darstellt, wird dem Eingangsanschluß L-in einer der Zellen 400 in der untersten Reihe zugeführt. Ein Signal, das das Vorhandensein eines Nachrichtenpakets am Anschluß L-in andeutet, wird einem Eingangsanschluß LP-in derselben Zelle zugeführt. Für jede Zelle in der untersten Reihe wird das Nachrichten-Vorhanden-Signal auf Masse gehalten, was dazu führt, daß die Zelle in der nächsten Spalte in der untersten Reihe für die weitere Verarbeitung eines Nachrichtenpakets, welches an der Zelle empfangen wird, vorbereitet wird. Derartige Nachrichten-Vorhanden-Signale, die das Vorhandensein eines Nachrichtenpakets am Eingang der Zelle darstellen, werden im gesamten Weiterleitungsschaltkreis 200 verwendet, um Datenpfade durch den Schaltkreis 200 für die Nachrichtenpakete zur Verfügung zu stellen.
- Ein Nachrichtenpaket, das an einer Leitung 38 empfangen wird, wird aus der untesten Zelle 400 in eine Spalte von dem Anschluß M-OUT weitergeleitet und wird dem Anschluß M-IN der Zelle 400 in der Spalte unmittelbar rechts daneben zugeführt. Zur gleichen Zeit wird das Nachrichten-Vorhanden-Signal von dem Anschluß MP-OUT zu dem Anschluß MP-IN der Zelle unmittelbar rechts daneben weitergeleitet.
- Das am M-IN-Anschluß einer Zelle 400 empfangene Signal kann aus der Zelle entweder über den Bus-Anschluß, den U-OUT-Anschluß oder den M-OUT-Anschluß herausgeleitet werden, jeweils abhängig vom Signalzustand anderer Signale in dem Netzwerk. Die Bus- Anschlüsse aller Zellen 400 in einer Spalte sind mit einem gemeinsamen Ausgangsbus 410 verbunden, welcher über ein NOR- Gatter 415 mit der Ausgangsleitung 39 der nächsten Nachbarzelle in der Dimension des Boolschen N-Würfels verbunden ist. Der andere Eingang zum NOR-Gatter 415 stellt ein Timing-Signal T-INV- OUT-n dar, wobei n die Anzahl der Dimension ist. Dieses Timing- Signal komplementiert das geeignete Adreßbit in der duplizierten Adresse in dem Nachrichtenpaket, so daß diese Adresse erneuert wird, wenn sich das Nachrichtenpaket durch den Boolschen 15-Würfel bewegt.
- Nachrichten, die die Zelle vom U-Aus-Anschluß verlassen, werden dem L-Ein-Anschluß der unmittelbar darüber und in der gleichen Spalte liegenden Zelle zugeführt und durch diese Zelle in gleicher Weise verarbeitet, wie ein Signal, welches auf einem L- Ein-Anschluß empfangen wird. Das Nachricht-Vorhanden-Signal wird in gleicher Weise von einem UP-Aus-Anschluß zu einem LP- Ein-Anschluß der unmittelbar darüberliegenden Zelle transferiert.
- Der Schaltkreis in den Zellen 400 jeder Spalte ist ausgelegt, um auf einen Ausgangs-Bus 410 jeder Spalte (oder Dimension) die Nachricht zu placieren, die für die Dimension adressiert ist, die in der zur Spitze nächstliegenden Reihe zirkulieren und um alle Reihen bis zur obersten Reihe zusammenzufassen. Die Steuersignale Grant (G) und "alles voll" (AF) werden jeder Spalte zugeführt, um die individuellen Zellen der Spalte über den Status der Zellen zu informieren, die in der Spalte über ihnen angeordnet sind. Insbesondere steuert das Grant-Signal den Zugriff auf den Ausgangsbus 410 einer jeden Spalte oder Dimension durch ein Signal, welches in jeder Spalte der Zellen durch die G-Ein- und G-Aus-Anschlüsse zugeführt wird. Der Schaltkreis, der diese Signal weitergibt, gibt den Buszugriff an das höchste Nachrichtenpaket in der Spalte, das für diese Dimension adressiert ist und verhindert, daß Nachrichten in tieferen Zellen in der Spalte auf den Ausgangsbus weitergleitet werden. Das AF-Signal steuert den Transfer von Nachrichten von einer Zelle 400 zur Zelle darüber in der gleichen Spalte, indem jeder Zelle durch die AF-Aus- und AF-Ein-Anschlüsse mitgeteilt wird, ob Nachrichten in jeder darüberliegenden Zelle der Spalte vorhanden sind. Wenn eine der darüberliegenden Zellen leer ist, wird die Nachricht in jeder tieferen Zelle um eine Zelle in der Spalte nach oben bewegt.
- Für die Zellen in der obersten Reihe ist der Eingang an den Anschluß immer "high". Für diese Zellen stellt das Eingangssignal zum G-Ein-Anschluß das Kompliment des Rücksetz-Signals dar und ist daher stets "high", außer beim Reset. Im Ergebnis wird das Nachrichtenpaket in der obersten Zelle einer Spalte normalerweise auf den Ausgangsbus 410 ausgegeben, falls es für diese Dimension vorgesehen ist. Wenn jedoch eine Ausgangsleitung 39 fehlerhaft ist, wird diese Leitung aus der 15-Würfel-Netzwerkverbindung dadurch entfernt, daß ein "low"-Signal dem G-Ein- Eingangsanschluß der obersten Zelle der Dimension, die mit dieser Leitung assoziiert ist, zugeführt wird. Bei der untersten Reihe der Zellen 400 wird das Grant-Signal von dem G-Aus- Anschluß verwendet, um einen Weiterleitungstransistor 425 zu steuern, welcher den Ausgangsbus auf Masse schalten kann. Insbesondere können, falls keine Nachricht auf der Ausgangsleitung weitergeleitet werden soll, Null-Bits auf die Ausgangsleitungen dieser Dimension geschrieben werden.
- Der Betrieb bestimmter Flip-Flops in der Zelle wird durch die Timing-Signale T-COL-n gesteuert, wobei n die Anzahl der Dimension ist, während andere Flip-Flops durch das Basistaktsignal phi 1 getaktet werden. Wie für den Fachmann klar sein wird, arbeiten die Weiterleitungszellen jeder Spalte synchron mit allen anderen Weiterleitungszellen in der gleichen Spalte des Weiterleitungsschaltkreises im Feld 30.
- Die Verwendung Tausender identischer Prozessoren/Speicher, die parallel zueinander arbeiten, ermöglicht neue Dimensionen in der Computertechnik. Probleme, die bisher nicht angegangen werden konnten, können nun in vernünftigen Zeitperioden unter Verwendung eines Parallelcomputers, wie beispielsweise dem Connection-Machine-Computer, gelöst werden.
- Der erhebliche Anstieg in der Rechenleistung hat das Interesse für noch kompliziertere Probleme, als sie mit bisher bekannten Parallelcomputern gelöst werden können, geweckt und hat somit ein Bedürfnis nach noch größeren Parallelcomputern hervorgerufen. Gleichzeitig sind extrem große Computer nicht für jedes Problem erforderlich, welches vorteilhafterweise durch einen Parallelcomputer gelöst werden kann. Einige Probleme benötigen einfach nicht genügend Daten, um alle Möglichkeiten eines großen Parallelcomputers auszuschöpfen. Andere Probleme erfordern keine besonders hohen Rechenleistungen. Wenn kein Weg gefunden werden kann, um auch nur Teile des Parallelcomputers verwenden zu können, ist es sehr schwierig, einen derartigen Computer aus ökonomischen Gründen rechtfertigen zu können.
- Ein Kompromiß in dieser Hinsicht besteht darin, zusätzliche Parallelprozessoren mittels weicher Kapazität zu simulieren, wie dies in EP-A-0 237 218 beschrieben ist. Gemäß dieser Technik wird der Speicher, der mit jedem physikalischen Prozessor assoziiert ist, in eine Vielzahl von Unterspeicher unterteilt, und jeder Unterspeicher kann dann so verwendet werden, als ob er mit einem eigenen Prozessor assoziiert wäre. Somit wird, wenn ein erster Befehl oder ein Satz von Befehlen an alle Prozessoren des Parallelcomputers zur Verfügung gestellt werden, um zu bewirken, daß zumindest einige Prozessoren Daten verarbeiten, die an ersten Stellen des ersten Unterspeichers gespeichert sind.? Danach wird der gleiche erste Befehl oder Satz von Befehlen allen Prozessoren des Computers zur Verfügung gestellt, um zu bewirken, daß zumindest einige Prozessoren Daten verarbeiten, die an der gleichen ersten Stelle in einem zweiten Unterspeicher gespeichert sind usw. Obwohl diese Technik für viele Situationen brauchbar ist, ist der eigentliche physikalische Prozessor, der die Daten für jede Gruppe von simulierten Prozessoren verarbeitet, selbst eine herkömmliche von Neumann- Maschine. Im Ergebnis werden, falls eine große Anzahl von simulierten Prozessoren und/oder eine große Anzahl von Daten mit dem physikalischen Prozessor assoziiert sind, die bei von Neumann erschienen üblichen Probleme bei den physikalischen Prozessor auftreten.
- Es ist die Aufgabe der vorliegenden Erfindung, einen Parallelcomputer anzugeben, dessen Resourcen besser genutzt werden können.
- Diese Aufgab wird durch den Gegenstand des Patentanpsruchs 1 gelöst.
- Weiterhin ist der Parallelcomputer so organisiert, daß er die Simulation zusätzlicher paralleler Prozessoren zuläßt, wie dies in EP-A-0 237 218 beschrieben ist. Dies gilt für jeden physikalischen Prozessor in dem Feld, um somit eine Kommunikation zwischen den simulierten Parallelprozessorn zu erreichen. Gemäß der Erfindung ist es nicht nur möglich, daß siumulierte Porzessoren mit einem speziellen physikalischen Prozessor, mit dem sie assoziiert sind, kommunizieren können, sondern es ist auch möglich, daß jeder simulierte Prozessor mit jedem anderen simulierten Prozessor, der mit einem anderen physikalischen Prozessor des Parallelcomputers assoziiert ist, kommuniziert. Analog zum Konzept der virtuellen Speicherung werden diese simulierten Prozessoren als virtuelle Prozessoren bezeichnet. Gemäß der Erfindung sind weiterhin Einrichtungen vorgesehen zum Speichern der virtuellen Prozessoren im virtuellen Speicher.
- Mit dem angegebenen Design ist es möglich, Parallelcomputer mit einer Anzahl von physikalischen Prozessoren im Bereich von 1.000.000 und einer Anzahl von virtuellen Prozessoren in einer Größenordnung von 1.000.000.000.000 zu bauen. Da der Computer dynamisch rekonfiguriert werden kann in eine Vielzahl unabhängiger Prozessorfelder, kann eine Einrichtung dieser Größe durch eine große Anzahl von Benutzern geteilt verwendet werden, wobei jeder Benutzer nur einen Teil des gesamten Computers, jeweils mit einer Kapazität, die für sein eigenes Problem geeignet ist, verwendet. Insbesonder können etwa 1000 Benutzer den Parallelcomputer mittels eines LANs verwenden.
- Um eine Kommunikation zwischen den Prozessoren zu ermöglichen, sind die physikalischen Prozessoren untereinander in Form eines binären n-Würfels mit ausreichender Größe verbunden, um jedem physikalischen Prozessor einen einmaligen Platz in dem Würfel und jedem virtuellen Prozessor seine eigene Adresse zuzuweisen. Die Adressierungsstruktur erlaubt es, bis zu 240 virtuelle Prozessoren zu adressieren.
- Andere Merkmale des Parallelcomputers gemäß der vorliegenden Erfindung sind die folgenden:
- Der Computer untestützt einen normalen Wort-Pro-Zeitbefehlssatz. Zusätzlich unterstützt er einen exakten isomorphen Satz paralleler Befehle. Für jede Wort-Pro-Zeit-Operation wird der gesamte Datensatz parallel verarbeitet.
- Der Computer stellt eine Hardware-Unterstützung für die Verteilung und synchrone Ausführung der Befehle über die vielen Prozessoren zur Verfügung. Im Ergebnis werden Operationen über die Maschine in vollständig vorbestimmten Zeiten zueinander ausgeführt.
- Ein Benuter kann soviel Redundanz wie notwendig zuweisen, um genügend Sicherheit für wichtige Transaktionen zu haben. Dies kann eine einfache Selbstüberprüfung bei nicht kritischen Anwendungen bis hin zu einer vollständigen vierfachen modularen Redundanz für kritische Transaktionen umfassen. Da die redundanten Elemente nur dann zugewiesen sind, wenn dies notwendig ist, treten die Kosten für die Redundanz nur dann auf, wenn Redundanz gewünscht ist.
- Diese und andere Merkmale und Vorteile der Erfindung werden durch die folgende Beschreibung und unter Bezugnahme auf die beiliegenden Figuren näher erläutert. Dabei zeigen die Figuren im einzelnen:
- Fig. 1 zeigt ein schematisches Schaltbild eines Parallelprozessors gemäß dem Stand der Technik;
- Fig. 2 zeigt ein schematisches Schaltbild eines Weiterleitungsschaltkreises des Parallelprozessors der Fig. 1;
- Fig. 3 zeigt ein allgemeines schematisches Schaltbild einer bevorzugten Ausführungsform der Erfindung;
- Fig. 4 zeigt ein schematisches Schaltbild einer Prozessoreinheit gemäß der vorliegenden Erfindung;
- Die Fig. 5 und 6 zeigen schematische Beispiele zum Darstellen der Organisation der Prozessoreinheiten der Fig. 4 in einem Feld von parallelen Prozessoren;
- Fig. 7 zeigt ein detailliertes schematisches Schaltbild zum Erläutern eines Elements der Prozessoreinheit der Fig. 4;
- Die Fig. 8 bis 12 zeigen detaillierte schematische Schaltbilder der Elemente der Fig. 7;
- Fig. 13 zeigt eine Illustration des Adressierungsschemas für eine bevorzugte Ausführungsform der Erfindung; und
- Fig. 14 zeigt eine schematische Darstellung, die zum Vestehen eines Teils der Erfindung nützlich ist.
- Wie in Fig. 3 gezeigt ist, stellt die bevorzugte Ausführungsform der vorliegenden Erfindung ein System 300 dar, welches eine Vielzahl von Benutzerterminals 310 A bis N, ein LAN 320 und ein Prozessorfeld 330 umfaßt. Beispielhaft enthält jedes Terminal eine Konsole 312 mit einem Tastenfeld 314 und einen Anzeigemonitor 316, eine bestimmte Art von Druckern (nicht gezeigt) und ein Interface 318 zwischen dem Terminal und dem LAN 320. Herkömmliche PCs können für die Terminals 310 verwendet werden.
- Das Prozessorfeld 330 umfaßt beispielhaft 262.144 (= 2¹&sup8;) physikalische Prozessoreinheiten (PPU), vier Megabytes RAM für jeden Prozessor, einen langsameren Massenspeicher und umfangreiche Schaltkreisanordnungen. Das Terabyte für den Hochgeschwindigkeitsspeicher wird typischerweise durch integrierte Speicherchips zur Verfügung gestellt. Der Massenspeicher kann beispielsweise aus 32.768 (=2¹&sup5;) Festplattenspeichern bestehen, wobei jede Platte eine Kapazität von 300 Megabytes aufweist, was zusammen 10 Terabyte ergibt. Die 262.144 PPUs sind über einen achtzehndimensionalen Hyper-Würfel miteinander verbunden, wobei jede PPU entlang seiner 18 Kanten des Hyperwürfels mit 18 angrenzenden PPUs verbunden ist, wie dies im folgenden im Detail beschrieben wird.
- Das LAN 320 verbindet die Terminals 310 mit einigen der PPUs in dem Prozessorfeld 330, so daß ein bestimmter Terminal mit einer bestimmten PPU kommunizieren kann. Die PPUs steuern dynamisch andere PPUs des Feldes, und andere PPUs können wiederum andere PPUs steuern, so daß eine geeignete Verarbeitung und ein geeigneter Speicher für ein bestimmtes Problem zur Verfügung gestellt wird. Vorzugsweise ist das LAN wie ein Cross-Bar- Schalter flexibel konfigurierbar, so daß jeder Terminal mit jeder beliebigen PPU des Netzwerks verbunden werden kann und daß diese Verbindungen verändert werden können, falls dies in einer Zeitteilungsumgebung notwendig ist. Ein beliebiges herkömmliches LAN kann verwendet werden, wie beispielsweise das Ethernet-System oder eine digitale PBX, soweit dadurch eine ausreichend große Kapazität zur Verfügung gestellt wird, um die Anzahl der Terminals, wie sie in dem System 300 vorhanden sind, zu verbinden. Eine Vielzahl von LANs kann verwendet werden, falls dies gewünscht ist. Beispielsweise sollte das LAN in der Lage sein, tausend Terminals zu verbinden.
- Es sollte klar sein, daß die Vorrichtung mit der vorliegenden Erfindung wesentlich größere Anzahlen von RAMs unterstützen kann, als bei einer herkömmlichen Maschine. Dies erlaubt es, gesamte Datenbanken in dem Hauptspeicher zu speichern, so daß die Zugriffszeit um das 1.000-fache höher ist als bei Platten. Hauptspeicher im Terabyte-Bereich sind üblicherweise nicht ökonomisch, da ein großer Speicher zu groß ist, um ungenützt zu sein, wenn ein einzelner Benutzer die Maschine bedient. Dieses Problem tritt bei der vorliegenden Erfindung nicht auf, da der Speicher an mehreren Stellen gleichzeitig benutzt werden kann.
- Jede PPU kann als Mehrzahl von virtuellen Prozessoren betrieben werden, indem der Speicher, der mit der PPU assoziiert ist, unterteilt wird und indem jedem Unterspeicher ein unterschiedlicher virtueller Prozessor zugewiesen wird. Gemäß der vorliegenden Erfindung kann die Unterteilung des Speichers sich auch auf den virtuellen Speicher erstrecken, wie beispielsweise auf eine Festplatte oder einen Bandspeicher. Jeder virtuelle Prozessor kann als äquivalent zu einem physikalischen Prozessor betrachtet werden.
- Gemäß der vorliegenden Erfindung kann der Benutzer einer PPU seine Erfordernisse hinsichtlich Datenverarbeitung und Speicherbedarf zuweisen, und die PPU kann dann eine Gruppe von Prozessoren bilden (sowohl physikalische Prozessoren als auch virtuelle Prozessoren), die ausreichend sind, um diesen Anforderungen zu genügen. Die Gruppe von Prozessoren kann rekursiv organisiert sein, so daß ein Prozessor einen oder mehrere andere Prozessoren steuert und diese anderen Prozessoren wiederum andere Prozessoren steuern.
- Vorzugsweise ist jedes Element der Datenbank in einem Eins- Zu-Eins -Verhältnis mit einem der Porzessoren gespeichert, und die Prozessoren sind in gleicher Weise strukturiert wie die Datenbank. Als Ergebnis dieser Anordnung gilt folgendes:
- 1. Jeder Prozessor ist in der Lage, normale von-Neumann- Operationen einschließlich arithmetischer/logischer Operationen, Datenbewegungen und normale Operationssteuerungen, wie etwa Unterroutinenaufrufe und Verzweigungen, auszuführen.
- 2. Jeder Prozessor ist in der Lage, einen Satz von Datenprozessoren zuzuweisen, welche während der parallelen Befehlsausführung unter seiner Steuerung sind. Der zuweisende Prozessor wird der Steuerprozessor genannt, und die zugewiesenen Prozessoren werden Datenprozessoren genannt. Dies sind jedoch nur relative Ausdrücke, da Datenprozessoren die Fähigkeit aufweisen, als Steuerprozessoren zu fungieren.
- 3. Jeder Prozessor ist in der Lage, einen Satz aus den zugewiesenen Datenprozessoren auszuwählen. Dieser ausgewählte Satz betrifft die parallel zu verarbeitenden Daten. Der ausgewählte Satz wird entsprechend einer Bedingung ausgewählt, die allen Datenprozessoren zugewiesen wird. Die Sätze können gespeichert werden.
- 4. Jeder Prozessor kann parallele Operationen gleichzeitig für alle Daten des Satzes durchführen. Die parallelen Operationen sind genau die gleichen wie die sequentiellen Operationen unter Punkt 1, mit der Ausnahme, daß sie allen Daten des Satzes gleichzeitig zugeführt werden. Dies schließt alle Datenmanipulationen, Speicheroperationen und Steueroperationen mit ein. Für den Programmierer erscheinen die Operationen gleichzeitig auf allen Prozessoren des Datensatzes abzulaufen.
- 5. Jeder Prozessor ist in der Lage, auf die geteilte Datenbank zuzugreifen und Teile davon in seinen Speicher zu laden. Ein virtueller Prozessor ist in der Lage, die Datenbanken neu zu beschreiben.
- Die Befehle des Parallelcomputers der vorliegenden Erfindung sind ähnlich wie die Befehle bei einem herkömmlichen Computer. Sie können in drei Kategorien eingeteilt werden: lokale Befehle, parallele Befehle und Context-Befehle.
- Die lokalen Befehle sind genau die Befehle eines herkömmlichen Computers einschließlich Unterroutineaufrufe, bedingte und nicht bedingte Verzweigungen, Returns, registerbasierende arithmetische Datenbewegungen, logische Operationen und Testoperationen. Die lokalen Instruktionen werden innerhalb des Steuerprozessors ausgeführt.
- Die Parallelbefehle sind gleich den lokalen Befehlen mit der Ausnahme, daß sie gleichzeitig auf dem Context-Satz von Datenprozessoren ausgeführt werden. Gruppen von parallelen Instruktionen, die als Orders bezeichnet werden, werden auf allen virtuellen Datenprozessoren des Context-Satzes gleichzeitig ausgeführt. Für jeden lokalen Datenbefehl gibt es einen korrespondierenden parallelen Datenbefehl.
- Die Context-Befehle werden verwendet, um den Satz virtueller Datenprozessoren zu spezifizieren, welcher parallel betrieben werden soll. Es gibt vier Context-Befehle:
- weise dem Context alle virtuellen Prozessoren zu, die einer bestimmen Bedingung genügen;
- begrenze den Context auf einen Untercontext von Prozessoren innerhalb des momentanen Contextes, welche einer Bedingung genügen;
- schiebe den momentanen Context auf einen Stack;
- hole den momentanen Context von dem Stack.
- Diese Context-Befehle können mit parallelen Datenbefehlen in Gruppen gemischt werden, um Orders zu bilden.
- Die Order ist die Grundeinheit der Synchronisation in dem Parallelcomputer der vorliegenden Erfindung. Eine Order ist die Einheit einer Kommunikation zwischen einem Steuerprozessor und einem Datenprozessor. Im einfachsten Fall besteht eine Order aus einem einzelnen Befehl. Sie kann jedoch auch aus einer Gruppe von Befehlen bestehen, die miteinander ausgeführt werden können, ohne die Synchronisation der Datenprozessoren zu beeinflussen. Die Basisaktion eines Steuerprozessors ist es, eine Order durch den Alpha-Weiterleiter(Fig. 7) auszugeben und auf eine Bestätigung zu warten, daß die Order durch alle Datenprozessoren ausgeführt wurde. Unterschiedliche virtuelle Prozessoren können und werden im allgemeinen verschiedene Befehle innerhalb der Order zu unterschiedlichen Zeiten ausführen.
- Eine Order ist auch die Basiseinheit für das Caching für Befehle in dem System. Das bedeutet, daß die Anzahl der Befehle für eine Order begrenzt ist. Da eine Order einen Rufbefehl enthalten kann, ist die Anzahl der durch eine Order ausgeführten Operationen beliebig groß. Zusätzlich zu Unterroutineaufrufen kann eine Order einfache Schleifen und bedingte Verzweigungen innerhalb der Order enthalten. Befehle sind in Order gemäß einfachen Regeln gruppiert, wobei die Regeln sicherstellen, daß die Befehle innerhalb der Order asynchron ausgeführt werden können. Dies kann beispielsweise dadurch erreicht werden, daß Befehle, die nicht lokale Kommunikation erfordern, nur als letzte Instruktion einer Order ausgeführt werden.
- Order werden von Steuerprozessoren zu Datenprozessoren durch den Alpha-Weiterleiter ausgestrahlt. Es liegt in der Zuständigkeit des Alpha-Weiterleiters, den Steuerprozessor zu benachrichtigen, wenn die Order durch alle Datenprozessoren ausgeführt wurde. Dieser Benachrichtigungsmechanismus wird auch verwendet, um Bedingungscodes für die Steuerung eines Programmflusses innerhalb des Steuerprozessors zu kombinieren.
- Wie in dem schematischen Schaltbild der Fig. 4 gezeigt ist, enthält jede PPU einen Mikroprozessor 350, einen Funktionsschaltkreis 360 und einen Speicher 370. Zusätzlich kann die PPU auch einen speziellen mathematischen Schaltkreis aufweisen, um mathematische Operationen mit hoher Geschwindigkeit ausführen zu können. Der Mikroprozessor 350, der Speicher 370 und der mathematische Schaltkreis 380 können herkömmliche integrierte Schaltkreise sein. Beispielsweise kann der Mikroprozessor 350 ein Intel 8086-Prozessor sein und der mathematische Schaltkreis 380 kann ein Fließpunkt-Accelerator sein, wie beispielsweise der Intel-Chip 8087. Alternativ kann der Motorola-Chip 68000 verwendet werden und Mikroprozessoren, wie beispielsweise der Fairchild Clipper, sind besonders geeignet, da sie separierte Befehls- und Datenpins aufweisen.
- Der Speicher 370 kann ein beliebiger Schreib/Lese-Speicher mit hoher Geschwindigkeit und hoher Kapazität sein. Beispielweise kann der Speicher aus einem Viermegabyte-Speicher bestehen, wobei das Feld aus zweiunddreißig 4x64 Kilobit Schaltkreisen bestehen kann. Zusätzlicher Speicher wird verwendet, um Paritäts- und Fehlersteuerbits zur Fehlerdetektion und Korrektur zu speichern. Mit zunehmender Kapazität der Speicherchips kann der Speicherplatz vergrößert und/oder die Anzahl der integrierten Schaltkreischips verringert werden.
- Der Funktionsschaltkreis 360 ist verantwortlich für Speicherinterface-Operationen, Nachrichtenweiterleitung, Fehlerkorrektur, Befehlsverteilung und Synchronisation, Daten-Caching und Steuerung virtuelller Prozessoren. Dieser Schaltkreis empfängt Information von der PPU und erzeugt Adreßinformation, die geeignet ist, um die dynamischen Speicher zu betreiben. Weiterhin bewegt er Daten zu und von den Datenpins der PPU und den Datenpins des dynamischen Speichers. Der Funktionsschaltkreis führt auch alle Management-Funktionen durch, die notwendig sind, um die PPU als virtuellen Prozessor zu betreiben. Diese Organisation des Mikroprozessors 350, des Funktionsschaltkreises 360 und des Speichers 370 ist so organisiert, daß der Funktionsschaltkreis 360 zwischen dem Mikroprozessor 350 und dem Speicher 370 angeordnet ist, wodurch ermöglicht wird, daß der Mikroprozessor eine größere Anzahl von Speichern adressiert, als dies bei dem System in dem '400-Patent der Fall ist, wo der Mikroprozessor und der Speicher jeweils miteinander direkt verbunden sind. Die vorliegende Organisation ermöglicht auch das Weiterleiten eines Nachrichtenpaketes, wie dies im folgenden beschrieben wird.
- Die PPUs sind in Einheiten von 16 organisiert, so daß die integrierten Schaltkreise von sechzehn PPUs 0-15 und der Unterstützungsschaltkreis auf einer einzigen Platine 400 montiert sind, wie dies in Fig. 5 gezeigt ist. Der Unterstützungsschaltkreis enthält ein Platten-Interface 410, einen allgemeinen Ein/Aus- Schaltkreis 420, einen Selbstüberprüfungsschaltkreis 430, einen Taktschaltkreis 440, einen Identifikationsschaltkreis 450 und einen Ausführungsmeßschaltkreis 460.
- Das Platteninterface 410 besteht aus einem Standard SCSI (small computer system interface), welches mit der PPU 0 verbunden ist. Es ist so ausgelegt, daß es ein Massenspeichermodul 470 verbinden kann. Die maximale Kommunikationsbandbreite ist etwa 10 Megabit pro Sekunde. Die anderen PPUs der Platine 400 stehen mit dem Massenspeichermodul über die PPU 0 in Verbindung, welcher als File-Server dient.
- Der Eingangs/Ausgangsschaltkreis 420 besteht aus einm 32-Bit- Parallel-Port oder Serial-Port, der mit der PPU 1 verbunden ist. Dieser Port weist eine maximale Bandbreite von etwa 50 Megabit pro Sekunde auf. Der Schaltkreis 420 verbindet das LAN 320 mit der PPU 1, welche in dem Netzwerk als weiterer Terminal oder einfach als paralleler oder serieller Port auftaucht. Die andern PPUs der Platine 400 stehen mit den Eingangs/Ausgangs- Schaltkreis 420 über die PPU 1 in Verbindung. Als Ergebnis dieser Anordnung kann ein Benutzer an irgendeinem Terminal 310 A-N jede beliebige PPU in dem Prozessorfeld 330 adressieren, ähnlich, wie ein Benutzer mit jedem beliebigen Telefon, das mit einem Telefonnetzwerk verbunden ist, kommunizieren kann.
- Der Selbstüberprüfungsschaltkreis 430 ist in der Lage, jegliche Fehler zu erkennen, die auf der Platine 400 auftreten, so daß das Modul von dem System entfernt werden kann. Vorteilhafterweise ist der Schaltkreis mit einer LED verbunden, welche eine sichtbare Anzeige liefert, daß das Modul nicht funktioniert, um die Wartung zu unterstützen. Jede Platine enthält ihren eigenen Taktschaltkreis 440, welcher mit dem Taktschaltkreis der anderen PPUs des Systems synchronisiert ist. Der Identifikationsschaltkreis 450 stellt einen elektrisch löschbaren, nicht flüchtigen Speicher dar, der die Herstellungs- und Wartungsinformation der Platine enthält und außerdem die Seriennummer etc. enthält. Der Betriebsmeßschaltkreis 460 überwacht die Softwareausführung.
- Das Massenspeichermodul 470 besteht beispielsweise aus einem herkömmlichen Platten-Controller 480 und einem 5-1/4-inch 300- Megabyte Laufwerk 490, wobei Vorkehrungen getroffen sind, daß bis zu sieben zusätzliche Laufwerke an denselben Controller angeschlossen werden können, so daß insgesamt eine Kapazität von 2400-Megabyte erreicht werden kann.
- Die Platinen 400 und die Speichermodule 470 sind in einem Gehäuse 500 montiert, wobei das Gehäuse Banken 502 für sechzehn Platinen 400 und sechzehn Module 470 aufweist. Somit werden im Fall eines Systems mit 262144 PPUs, 1024 (= 2¹&sup0;) Gehäuse verwendet, um die PPUs darin unterzubringen. Die Gehäuse sind miteinander über Glasfaserkommunikationsleitungen verbunden. Jedes Gehäuse enthält ein oder mehrere Kommunikationsmodule 505, welche jeweils mindestens eine Glasfasersende-/Empfangseinrichtung enthalten, welche verwendet wird, um Übertragungsdaten zwischen den Gehäusen zu multiplexen. Die Sende/Empfangseinrichtungen können herkömmliche Glasfaser-Sende/Empfangseinrichtungen mit Datenraten von 100 Megabit pro Sekunde sein und können in der Lage sein, eine Kommunikation in Zeitmultiplex mit verschiedenen PPUs in einem Gehäuse mit solchen von anderen Gehäusen auszuführen und somit die Vorteile der erhöhten Bandbreite von Glasfaserkommunikationsleitungen auszunutzen. Vorteilhafterweise werden zumindest zwei Sende/Empfangseinrichtungen in jedem Kommunikationsmodul verwendet, so daß die Signale gleichzeitig an jedem Kommunikationsmodul übertragen und empfangen werden können.
- Die PPUs 330 sind vorzugsweise in einem Hyper-Würfel gemäß der Lehre der oben angegebenen EP-A-0206584 miteinander verbunden. Somit ist jede PPU in dem Würfel-Netzwerk mit vier anderen PPUs auf der gleichen Platine entsprechend vier Dimensionen des Hyper-Würfels verbunden und weiterhin mit vier PPUs auf vier anderen Platinen in einem Gehäuse entsprechend den vier weiteren Dimensionen des Hyperwürfels verbunden. Im Falle eines Systems mit 262144 PPUs, ist jede PPU in dem Gehäuse mit zehn PPUs in unterschiedlichen Gehäusen verbunden. Diese anderen zehn Verbindungen entsprechen den zehn verbleibenden Dimensionen des Hyper-Würfels. Die Verbindungen jedes Gehäuses über diese zehn Dimensionen wird über ein separates Kommunikationsmodul 505 hergestellt.
- Wie in Figur 7 gezeigt ist, enthält der Funktionsschaltkreis 9 größe funktionale Einheiten: Einen Adreß-Abbilder 510, ein Speicherinterface 520, einen virtuellen Prozessor Sequenzer 530, einen Daten-Cache 540, einen Fehlerkorrigierer 550, einen Alpha-Weiterleiter 560, einen Beta-Weiterleiter 570, einen Abschneider 580, und einen Order-Cache 590. Alle diese funktionalen Einheiten sind in einem einzelnen Chip implementiert oder es können auch mehrere Chips dafür verwendet werden. Die Adreßpins 532 und die Datenpins 582 verbinden den VP-Sequenzer 530 und den Abschneider 580 mit dem Mikroprozessor 350 der PPU. Die Adreßpins 522 und die Datenpins 552 verbinden das Speicherinterf ace 520 und den Fehlerkorrigierer 550 mit dem Speicher 370 der PPU. Die Alpha-Pins 562 und die Würfel-Pins 572 verbinden den Alpha- und Beta-Weiterleiter 560, 570 einer PPU mit anderen Alpha- und Beta-Weiterleitern anderer PPUs, wie dies im folgenden beschrieben werden wird.
- Wie in Figur 8 gezeigt, enthält der Adreß-Abbilder 510 ein PPU- Adreßregister 605, ein Onset-Register 610, ein VP-Offset- Register 615, ein VP-Erhöhungsregister 620 und eine Seitentabelle 625. Der Abbilder enthält erste, zweite und dritte Multiplexer 630, 635, 640 und erste und zweite Addierer 645, 650. Ein Eingang zum Adreßabbilder wird vom VP-Sequenzer 530 über den Adreßbus 602 empfangen und ein Ausgang vom Abbilder wird dem Speicherinterface 520 über den physikalischen Adreßbus 652 zur Verfügung gestellt. Zwei Bits der Seitenbits werden dem VP- Sequenzer 530 über die Seitenbitleitungen 654 zur Verfügung gestellt. Wie gezeigt, ist der Adreßbus 24 Bits groß und der physikalische Adreßbus ist 22 Bits groß.
- Um den Betrieb des Adreßabbilders zu verstehen, ist es nützlich, das Adressierungsschema für das System der vorliegenden Erfindung zu verstehen. Wie in Figur 13 gezeigt, gibt es vier Typen von Adressen, die in dem System gespeichert sind: locative; Weiterleitungsadressen, virtuelle Adressen und physikalische Adressen. Um genügend virtuelle Prozessoren zu unterstützen, um den Bedürfnissen von 1000 Benutzern gerecht zu werden, unterstützt das System der vorliegenden Erfindung die virtuellen Prozessoren selbst wenn sie nur im virtuellen Speicher gespeichert sind. Somit können selbst Daten, die physikalisch auf Platten gespeichert sind, mit einem virtuellen Prozessor assoziiert werden. Als Ergebnis ist das erfindungsgemäße System in der Lage, bis zu 240 virtuelle Prozessoren zu unterstützen. Da der gesamte Adreßraum im Prinzip von einem einzelnen Benutzer genutzt werden kann, unterstützt die CM2 eine Adressierungsstruktur mit einem 64-bit-Adreßraum.
- Die allgemeinste Form der Adresse ist ein Lokativ, welches 64 Bits im Speicher benötigt. Ein Lokativ ist in der Lage, auf einen beliebigen Speicherplatz innerhalb eines jeden virtuellen Prozessors des gesamten Systems zu zeigen. Die höchsten 40 Bits des Lokativs legen den ausgewählten virtuellen Prozessor fest. Die untersten 24 Bits legen einen Offset innerhalb des virtuellen Prozessors fest. Da 2&sup6;&sup4; größer ist als die Größe des virtueilen Speichers des gesamten Systems, bleibt genug Raum für Redundanzcodierung. Insbesondere können die 40 Bits die den virtuellen Prozessor festlegen, separat die PPU angeben, in der sich der virtuelle Prozessor befindet (18 Bits) sowie das Wort innerhalb des virtuellen Speichers der physikalischen Verarbeitungseinheit, bei der der virtuelle Prozessor beginnt (22 Bits). Ein virtueller Prozessor kann an jeder geraden 32' Bit- Grenze innerhalb des 24-Bit virtuellen Adressierungsraums des physikalischen Prozessors beginnen.
- Die Weiterleitungsadressen sind die Adressen, die von dem Kommunikationsnetzwerk verwendet werden. Sie sind im wesentlichen eine kompakte Form von Lokativen, die gebildet werden, indem der 24-Bit-Offset und vier Mal der 22-Bit-Offset der virtuellen Prozessoradresse zueinanderaddiert werden. Eine Weiterleitungsadresse legt ein einzelnes Wort in dem virtuellen Speicher einer physisikalischen Prozessoreinheit innerhalb des Systems fest. Die Länge der Weiterleitungsadresse ist 42 Bits, was der Anzahl der Wörter des virtuellen Speichers des gesamten Systems entspricht.
- Innerhalb einer PPU werden alle Pointer als 24-Bit virtueller Adressen gespeichert. In einer derartigen Adresse stellen 8 Bits eine Seite eines Speichers und 16 Bits die Adresse eines Bits innerhalb der Seite dar. Die Seite ist die Einheit eines angeforderten Cachings für das virtuelle Speichersystem. Zu einer beliebigen Zeit, können bis zu 64 Seiten physikalisch in dem Speicher enthalten sein.
- Die 24-Bit virtuelle Adresse wird auf einer 22-Bit physikalischen Adresse durch die Seitentabelle 625 abgebildet. Jede Seitentabelle stellt ein 256-Word 6-Bit-Nachschlagetabelle dar, die jede der 2&sup8; Seiten in dem virtuellen Speicher in 2&sup6; Seiten des physikalischen Speichers abbildet.
- Der Adressenabbilder 510 nimmt die virtuelle Adresse, die in den Funktionsschaltkreis eintritt und wandelt sie entweder in eine physikalische Adresse für den Speicher oder in eine Weiterleitungsadresse für Kommunikationen um. Der Adreßabbilder ist so ausgelegt, daß er drei verschiedene Adressierungsmoden unterstützt: normal, Virtuellprozessor relativ und erweitert. Beim normalen Adressierungsmode wird eine 24-Bit physikalische Adresse direkt von der PPU genommen und in eine 8-Bit Seitennummer und einen 16-Bit Offset aufgeteilt. Die 8-Bit- Seitennummer wird als Index in der Seitentabelle 625 verwendet, welcher die Abbildung der virtuellen Seiten auf dem physikalischen Speicher enthält. Im Falle, daß die Referenzseite im physikalischen Speicher enthalten ist, wird die Seitentabelle eine 6-Bit-Adresse erzeugen, die angibt, in welchem Teil des physikalischen Speichers die Seite enthalten ist. Dies wird mit einem 16-Bit-Offset kombiniert, um eine 22-Bit physikalische Adresse zu erhalten, die direkt an das Speicherinterface weitergegeben wird. Im Falle, daß die Referenzseite ausgetauscht wird, wird die Seitentabelle durch die gesetzten Seitenbits anzeigen und es wird der Seite gestattet, von einem zweiten Speicher in den physikalischen Speicher geladen zu werden. Die geladenen Seiten werden in einer FIFO geladen, so daß eine neue Seite über einer zuletzt geladenen Seite abgelegt wird. Es ist auch möglich, bei der Verwendung der Seitenbits gewisse Seiten festzulegen, so daß sie nie zum zweiten Speicher geschoben werden.
- Der zweite Adressierungsmode ist der virtuelle Prozessor- Relativmode. In diesem Fall wird die Adresse, die von dem Bus kommt,als Offset relativ zur virtuellen Prozesser-Offsetadresse für den virtuellen Prozessor der momentan arbeitet, verwendet. Diese zwei 24-Bitadressen werden durch einen Addierer 650 zusammenaddiert um eine 24-Bit virtuelle Adresse zu schaffen, die dann in eine physikalische Adresse über die Seitentabelle so wie oben beschrieben, umgewandelt wird. Der virtuelle Prozessor-Offset wird durch den virtuellen Prozessorsequenzer gesetzt oder im Fall, daß der virtuelle Prozessor eine vorgegebene Größe hat, durch Inkrementieren.
- Die endgültige Form der Adressierung stellt einen Mechanismus dar, durch den eine Zwischenprozessorkommunikaton ermöglicht wird. In diesem Fall wird die relevante Funktion über den Beta- Weiterleiter berechnet und die Adresse wie folgt berechnet: Die 18-Bit-Adresse der Ziel-PPU wird mit der Summe verbunden, die aus der 24-Bit physikalischen Adresse von dem Chip und dem 24-Bit-Onset Word das in dem Onset-Register 610 geladen ist, resultiert. Typischerweise wird dies im vorhergehenden Zyklus während einer erweiterten Adressierungsoperation ausgeführt. Wenn eine Nachrichtenadresse empfangen wird, als virtuelle Speicheradresse verwendet und als physikalische Adresse über die Seitentabelle so wie bei der normalen Adressierung bezeichnet.
- Die Speicher-Interfaceeinheit 520 ist für das physikalische Multiplexen der Adressierung und der Speicherauffrischung bei dynamischen RAMs verantwortlich. Wie in Figur 9 gezeigt, umfaßt die Interface-Einheit 520 einen Auffrischungszähler 660, ein Reihenzählregister 665, einen Multiplexer 670 und einen Vergleicher 675. Der Multiplexer 670 multiplext die 22-Bit physikalische Adresse auf die 11 Adreßpins. Der Auffrischungszähler 660 kann für Diagnosezwecke zurückgesetzt werden. Die Speicher- Initerfaceeinheit wird so ausgelegt, daß sie einen Schnellblokkiermodezugriff aufweist, wie dies heutzutage durch die meisten dynamischen RAMs unterstützt wird. Um dies zu tun, speichert die Speicherinterfaceeinheit die Reihenzahl der letzten Reihe auf die von dem Reihenregister 665 zugegriffen wurde. Wenn der Vergleicher 675 bestimmt, daß ein Zugriff auf die gleiche Reihe als bei dem vorherigen Zugriff ausgeführt wird, wird ein Schnellzyklus ausgeführt, der nur den Spaltenteil der Adresse verwendet. Somit auf den gleichen Speicherblock in etwa der halben Zeit wie bei einem normalen Speicherzugriff zugegriffen werden. Dies ist insbesondere dann wichtig, wenn auch Blöcke von sequentiellen Daten zugegriffen werden soll.
- Der virtuelle Prozessorsequenzer 530 kann eine einfache FINITE- Date-Maschine zum schnellen Ausführen von Listenoperationen sein, wie sie für virtuelle Prozessoren benötigt werden. Eine PPU implementiert mehrere virtuelle Prozessoren, indem sie deren Operation seitlich sequentiell multiplext. Ein bestimmter Abschnitt des Speicherraums der PPU (einschließlich des virtueilen Speicherbereichs) wird jedem virtuellen Prozessor zugewiesen, obwohl die Anzahl der virtuellen Speicher pro virtuellen Prozessor völlig variabel ist. Typischerweise werden die virtuellen Prozessoren durch eine PPU implementiert, die mehrere unterschiedliche Aufgaben hat. Für jede Aufgabe muß die PPU alle Prozessoren des momentanen Kontext der Aufgabe überprüfen, um die auszuführende Reihenfolge festzulegen. Es muß außerdem durch alle Order die mit der Sequenz von Aufgaben assoziiert sind, durchgehen. Es ist jedoch nicht notwendig, durch alle virtuellen Prozessoren, die durch die PPU implementiert sind, die nicht im Kontext der Aufgabe vorhanden sind, durchzugehen. Dadurch wird erheblich Zeit gespart.
- Sowohl die virtuellen Prozessoren als auch die Mehrfachaufgaben Kontextumschaltung werden direkt durch Hardware unterstützt. Die Organisation der virtuellen Prozessoren im Speicher ist in schematischer Weise in Figur 14 gezeigt. Die Aufgaben sind so in einer circularen Liste, die als Aufgabenliste bezeichnet wird, miteinander verbunden und die PPU enthält zu jeder Zeit einen Zeiger, der auf eine der Aufgaben in der Aufgabenliste deutet. Mit Hilfe des Sequenzers 530 geht die PPU durch jede Aufgabe, führt einen Auftrag für jeden virtuellen Prozessor in dem Kontext der momentanen Aufgabe durch, bevor zur nächsten Aufgabe weitergegangen wird. Somit wird, falls der Kontext relativ klein ist, die Ausführung schneller von statten gehen, als in dem Fall, bei dem alle virtuellen Prozessoren zum momentanen Kontext gehören.
- Jede Aufgabe ist mit einem Header assoziiert, der drei Informationsstücke enthält: einen Pointer für den momentanen Kontext, einen Pointer zu einem Stack, der als verwundene Liste gespeichert ist, und einen Pointer auf eine Liste von allen virtuellen Prozessoren der Aufgabe. Der Sequenzer enthält auch einen Pointer zur nächsten Aufgabe in der Aufgabenliste und Hilfsinformation über die Aufgabe, wie beispielsweise Priorität und Ablaufstatistik. Die PPU bestimmt den Platz jedes virtuellen Prozessors im virtuellen Speicher, indem sie der Liste folgt, und wobei mit dem Kontext-Pointer begonnen wird und fortgefahren wird bis Null erreicht wird. Diese Listen werden in einem geschützten Bereich des Speichers gespeichert.
- Um einen "Push-Kontext"-Befehl auszuführen, weist die PPU ein neues Speicherelement zu und bringt den momentanen Kontext- Pointer auf den Stack, wechselt den Stack-Pointer zum obersten Platz auf dem Stack. Ein "pop-context"-Befehl ist dazu genau umgekehrt, ausgenommen dann, wenn der Stack leer ist, da in diesem Fall der oberste Kontextpointer verwendet wird. Die nächste häufig benötige Operation besteht im Eingrenzen des Kontext auf einen Untersatz des momentanen Kontext gemäß einer bestimmten Bedingung.
- In diesem Fall wird die Liste der virtuellen Prozessoren gemäß der Bedingung aufgespaltet, wobei mit dem momentanen Kontext begonnen wird. Die virtuellen Prozessoren, die die spezielle Bedingung erfüllen, werden an das Ende der Liste angehängt. Ein Pointer zum Ende der Liste wird dann zum momentanen Kontext. Auf diesem Wege können die Untersätze, die aufeinanderfolgenden Kontext darstellen, effizient gespeichert werden. Mit diesem Schema stellen virtuelle Prozessoren die nicht im momentanen Kontext enthalten sind, keine unnötige Belastung während der Ausführung dar.
- Wie in Figur 10 gezeigt ist, enthält jeder virtuelle Prozessorsequenzer 530 fünf Primärregister, von denen jedes in der Lage ist, die 22 höchsten Bits einer virtuellen Prozessoradresse zu speichern. Das Kontextregister 680 speichert einen Pointer auf den Anfang der momentanen Kontext-Liste. Das Stack-Register 685 speichert einen Pointer zum momentanen Stack für die momentane Aufgabe. Das Topregister 690 speichert einen Pointer zum Anfang der Kontextliste des momentanen Stacks. Das Aufgabenregister 695 speichert einen Pointer zur nächsten Aufgabe in einer Aufgabenliste und das nächste Register 700 speichert einen Pointer zum nächsten virtuellen Prozessor in der virtuellen Prozessorliste. Zusätzliche Register können verwendet werden, um Zusatzinformation zu speichern, falls dies erforderlich ist. Der Ausgang des Sequenzers 530 wird durch den Multiplexer 715 in Antwort auf Signale von einem PLA 710 ausgewählt.
- Der virtuelle Prozessorsequenzer enthält eine "finite state"- Maschine, die im Zustandsregister 705 implementiert ist und enthält weiterhin eine PLA 710 zum Manipulieren dieser Register
- und zum Steuern der Register in dem Adreßabbilder oder dem Order-Cache. Diese finite state-Maschine geht durch die Befehlsliste um sowohl Aufgaben als auch virtuelle Prozessoren zu berücksichtigen. Die Ausgänge der Maschine hängen vom momentanen Zustand und von Zustandsbits, die vom Rest des Funktionsschaltkreises kommen, beispielsweise den Seitenbits der Seitentabelle 625, ab. Die PLA ist auch in der Lage, bedingte Übergänge auszuführen, basierend, ob die momentanen Daten Null sind, wie dies von einem Null-Detektor 720 erkannt werden kann. In diesem Sinne ist der virtuelle Prozessorsequenzer ein sehr einfacher Computer ohne arithmetische Einheit.
- Der Datencache 540 ist ein herkömmlicher Cache für das "Caching" von Nur-Lese-Daten.
- Der Fehlerkorrigierer 550 ist eine herkömmliche Einbit- Fehlerkorrekturdetektionslogik, basierend auf einem 6-Bit- Hamming-Code. Wie in Figur 11 gezeigt, umfaßt der Leitungstreiber 740, 745, 750, 755, Fehlersteuerschaltkreise 760 und 765 zum Berechnen von Paritätbits, ein Exklusiv-Oder-Gatter 770 zum Detektieren von Paritätsfehlern, einen Dekoder 775 zum Bestimmen, ob ein Fehler korrigiert werden kann und ein Exklusiv- Oder-Gatter 780 zum Korrigieren eines erkannten Fehlers. Der Fehlersteuerschaltkreis 760 addiert Fehlerkorrekturbits zu allen Daten, die in einen physikalischen Speicher geschrieben werden. Alle Daten, die von dem physikalischen Speicher gelesen werden, werden überprüft, indem der Fehlersteuerschaltkreis 765 die Paritätsbits für die vom Speicher gelesenen Daten erneut berechnet und diese Bits im X oder Gatter 770 mit Paritätsbits, die aus dem Speicher gelesen werden, vergleicht. Der Dekoder 775 bestimmt, ob ein Fehler korrigiert werden kann und korrigiert, falls dies möglich ist, indem er ein geeignetes Signal an das XOR-Gatter 770 anlegt. Wenn mehrfache Fehler auftreten, wird ein Einheitenfehler durch den Dekoder 775 angezeigt. Die Alpha- und Beta-Weiterleiter 560 und 570 werden zur Befehlsund Daten-Verteilung eingesetzt und können die gleichen Kommunikationsleitungen teilen, obwohl die Weiterleitungshardware separat ist. Wie in Figur 12 gezeigt ist, enthält der Alpha- Weiterleiter 560 ein Feld von UND-Gattern 800 A bis N, die durch Flip-Flops 805A-N, erste und zweite ODER-Gatter 810, 815, ein Feld von Multiplexern 820A bis N, welches durch Flip-Flops 825A bis N gesteuert wird, einen ersten Multiplexer 830, der durch die Flip-Flops 832, 834 gesteuert wird und einen zweiten Multiplexer 840, der durch ein Flip-Flop 842 gesteuert wird. Eingangsleitungen 802A bis N werden den UND-Gattern 808 bis N zugeführt und die Ausgangsleitung 822A bis N erstrecken sich von den Multiplexern 820 A-N. Diese Leitungen verbinden den Alpha-Weiterleiter einer PPU mit den Alpha-Weiterleitern der nächsten Nachbar-PPUs in dem binären Hyper-Würfel. Entsprechend der Anzahl der UND-Gatter 800A bis N, entsprechend dem Multiplexer 820A bis N und ihre zugeordneten Schaltkreise der Anzahl der Dimensionen des Hyper-Würfels, beispielsweise 18. Zum Zwekke des besseren Verständnisses wurden jedoch nur drei Dimensionen gezeigt. Da die Eingangs- und Ausgangsleitungen, die mit jeder Dimension assoziiert sind, demselben Alpha-Weiterleiter zugehen, können diese Leitungen gemultiplext werden, falls dies gewünscht ist. Da diese Leitungen außerdem zu denselben PPUs wie die Eingangs- und Ausgangs-Leitungen des Beta-Weiterleiters führen, können sie auch mit den Leitungen des Beta- Weiterleiters gemultiplext werden.
- Der Alpha-Weiterleiter wird verwendet, um Befehle zu verteilen und zu synchronisieren. Im wesentlichen führt er dieselbe Funktion aus wie der Befehlsverteilungsbaum und die Global-Oder- Bäume wie sie in dem '400 Patent beschrieben werden, mit Ausnahme dahingehend, daß jeder Prozessor oder jede Anzahl von Prozessoren eine Quelle für Befehle darstellen kann. Diese Befehle werden zu Gruppen zusammengefaßt, die als "Orders" bezeichnet werden. Die Ausführung einer Order wird für die ganze Maschine durch den Alpha-Weiterleiter synchronisiert, so daß eine Order vollständig ausgeführt wird, bevor die nächste Order ausgegeben wird. Die auszustrahlenden Order werden von dem lokalen Interzeptor 580 empfangen und Order, die von anderen Weiterleitern empfangen werden, werden über die Ausgangsleitung zu einem Order-Cache 540 weitergeleitet. Synchronisationssignale, die den Abschluß einer empfangenen Order anzeigen, werden über die PPU dem Weiterleiter auf der Sync-In-Leitung zugeführt und Signale, die den Abschluß einer Order durch andere PPUs anzeigen, werden der PPU auf der Sync-Aus-Leitung zugeführt.
- Der Betriebsmode des Alpha-Weiterleiters wird durch Flip-Flops gemäß Signale, die von der PPU empfangen werden, gesteuert. Somit wird, falls die lokale PPU Order zu anderen PPUs ausstrahlt, das Flip-Flop 842 den Multiplexer 840 setzen, daß dieser das Signal über die Order-In-Leitung überträgt und die Flip-Flops 825A bis N werden die Multiplexer 820A bis N so setzen, daß eine Übertragung dieser Signale erfolgen kann. Wenn die lokale PPU Order von einer anderen PPU empfängt, werden die Flip-Flops 832 so gesetzt, daß sie eine spezielle eingehende Dimensionleitung zum Multiplexer 830 spezifizieren, von wo die Order erwartet wird. Wenn die Order zu einer anderen PPU weitergegeben wird, setzt das Flip-Flop 842 ebenfalls den Multiplexer 840, damit dieser das Signal vom Multiplexer 830 zu den Multiplexern 820A bis N überträgt. Durch diese Anordnung kann eine PPU-Order zu jedem seiner nächsten Nachbarn übertragen und sie dabei steuern. Jede PPU kann von seinen nächsten Nachbarn die Order beobachten, um von dieser gesteuert zu werden.
- Nachdem eine Order ausgegeben wurde, beobachtet die PPU, die die Order ausgegeben hat, die Ausführung der Order mittels Synchronisationssignalen. Eine PPU gibt ein Sync-Signal über die Sync-In-Leitung zum Oder-Gatter 815 aus und setzt die Flip- Flops 825A bis N, so daß die Multiplexer 820A bis N das Signal vom ODER-Gatter 815 übertragen. Ein Sync-Signal wird empfangen, indem die Flips-Flops 805A bis N so gesetzt werden, daß die UND-Gatter 800A bis N in der Lage sind, ein empfangenes Signal zum ODER-Gatter 810 weiterzugeben. Der Ausgang des ODER-Gatters 810 kann auch zu anderen PPUs über einen Eingang zum ODER- Gatter 815 weitergegeben werden. Bei dieser Anordnung kann eine PPU selektiv Sync-Signale von seinen nächsten Nachbar-PPUs überwachen, welches sie steuert und sie kann Signale von anderen PPUs ignorieren, die sie nicht steuert.
- Der Beta-Weiterleiter 570 ist im wesentlichen vom selben Typ wie der Weiterleiter, wie er im '400 Patent beschrieben ist. Wie in Figur 2 gezeigt, weist er ein Feld von Eingangs- und Ausgangsleitungen 38, 39 auf, die mit den Beta-Weiterleitern der nächsten Nachbar-PPUs in dem Hyperwürfel über die Würfelpins 572 der Figur 7 kommunizieren. Nachrichtenpakete werden dem Beta-Weiterleiter 570 von dem Mikroprozessor über den Adreß-Abbilder 510 und den Datencache 540 zur Verfügung gestellt und empfangene Nachrichtenpakete werden dem Mikroprozessor über die gleichen Elemente zur Verfügung gestellt. Die Eingangs- und Ausgangsleitungen können gemultiplext werden und diese Leitungen können ebenfalls mit den Leitungen 802A bis N und 822A bis N des Alpha-Weiterleiters gemultiplext werden.
- Der Beta-Weiterleiter ist im wesentlichen für drei unterschiedliche Funktionen verantwortlich. Er leitet Nachrichtenpakete von einer PPU zur anderen weiter, wobei dies einer Funktion in dem '400 Patent entspricht. Weiter erzeugt er Nachrichtenpakete entsprechend den Speicheranfragen von der PPU mit der er assoziiert ist für Speicher, die mit anderen PPU's assoziiert sind. Er empf ängt eingehende Nachrichtenpakete von anderen PPU's, die für die PPU bestimmt sind, mit der er assoziiert ist und liefert diese Nachrichtenpakete entsprechend ab. Während die letzten zwei genannten Funktionen neu sind, ist die Weiterleitung eines jeden Nachrichtenpakets in jeder Funktion die gleiche wie sie im '400 Patent beschrieben ist.
- Ein Parallelcomputer gemäß der vorliegenden Erfindung ist eine teuere Resource, vermutlich zu teuer, um von einem einzelnen Benutzer für eine längere Zeitperiode verwendet zu werden. Es ist jedoch möglich, daß der vorliegende Computer gleichzeitig von tausenden von Benutzern benutzt wird. Während die Spitzenanforderungen für jeden Benutzer sehr hoch sein können, kann angenommen werden, daß die mittlere Anforderung relativ moderat ist, beispielsweise 100 000 000 Befehle pro Sekunde pro Benutzer. Zusätzlich wird angenommen, daß die Benutzer in der Lage sind, auch andere Vorteile einer gemeinsamen Resource zu nutzen, beispielsweise das Teilen von Datenbanken.
- Die Technik, die zum Teilen der Resource verwendet wird, kann als Raum-Aufteilung entsprechend der Zeit-Aufteilung bezeichnet werden, da die Benutzer die Raum-Zeit-Resource des Computers sowohl bezüglich Raum als auch bezüglich Zeit aufteilen. In diesem Sinne könnte die Raum-Teilung genauer als Raum- Zeit- Teilung bezeichnet werden, da Zeitmultiplex mit eingeschlossen sein kann. Raum-Zeit-Aufteilung würde funktionieren, wenn jeder Benutzer das gesamte System mit einer gleichmäßigen Last zu allen Zeiten belegt, jedoch arbeitet diese Aufteilung besser aufgrund der Nichteinheitlichkeiten einer typischen Benutzerlast:
- Idle-Zeit: Viele Benutzer benötigen, wenn sie die Maschine benutzen, tatsächlich nur wenige Zyklen pro Zeiteinheit. Dies gilt insbesondere für ein transaktions-basierendes System, das Anfragen und eine geteilte Datenbank unterstützt.
- Nichteinheitliche Parallelität: Wenn ein Parallelprogramm ausgeführt wird, kann es viele Punkte in dem Programm geben, wo es möglich ist, effizient hunderte von tausenden von virtuellen Prozessoren gleichzeitig effektiv zu nutzen. Es kann andere Punkte geben, wo eine einzelne Wort-pro-Zeitausführung ausreichend ist.
- Nichteinheitliche Speicheranforderungen: Viele Benutzer werden direkten Zugrifflediglich zu einem geringen Teil des Terabyte- Speichers zu einem bestimmten Zeitpunkt benötigen.
- Gemeinsamkeit von Daten: Viele Benutzer können auf die gleiche Datenbank in einer kurzen Zeitperiode zurückgreifen, was ermöglicht, daß diese Daten im Hauptspeicher mit relativ geringen Kosten verbleiben. Ein gleiches Argument gilt für geteilte Sof tware.
- Um diese Nichteinheitlichkeiten auszunutzen, weist der Computer die physikalischen Prozessoren dynamisch den virtuellen Prozessoren basierend auf Lauf zeitanforderungen zu. Somit verbraucht ein Benutzer Resourcen proportional dazu, was die Anmeldung tatsächlich benötigt, im Gegensatz zu einem Anteil, den er möglicherweise benötigt.
- Ein Merkmal des Beta-Weiterleiters macht es möglich, das Feld der PPUs zwischen unterschiedlichen Benutzern aufzuteilen um somit eine Raum-Aufteilung zu erreichen. Wie in Figur 2 gezeigt ist, steuert der G-in-Eingangsanschluß den Zugriff auf die Kommunikationsleitung 39, die ein Nachrichtenpaket von einer PPU zur anderen weiterleitet. Wenn diese Leitung unterbrochen ist, kann sie von dem Netzwerk dadurch entfernt werden, daß ein "Low-Signal" auf den G-in-Eingangsanschluß, der mit dieser Leitung assoziiert ist, angelegt wird. Gemäß der vorliegenden Erfindung kann jeder Unter-Würfel des Hyper-Würfels von dem Rest des Hyper-Würfels dadurch isoliert werden, daß ein "Low"-Signal an die G-in-Eingangsanschlüsse, die mit den Kommunikationsleitungen angelegt wird, die den Unterstrichwürfel mit dem Rest des Hyper-Würfels verbinden. Beispielsweise kann ein Unter- Würfel mit 256 PPUs von dem 18-dimensionalen Hyper-Würfel einfach dadurch isoliert werden, daß "Low"-Signale den G-in-Eingangsanschlüssen, die mit den Kommunikationsleitungen für die Dimensionen 8 bis 18 assoziiert sind, an jedem der 256 PPUs des Unter-Würfels angelegt werden. Gleichzeitig können eine Vielzahl anderer Unter-Würfel den anderen Teilen des Hyper-Würfels in ähnlicher Weise von dem Hyper-Würfel dadurch isoliert werden, indem Low-Signale den G-in-Eingangsanschlüssen, die mit der Kommunikationsleitung für die Dimension, die nicht verwendet werden, angelegt werden.
- Um dies zu erreichen, wird dem Mikroprozessor einer jeden PPU Zugriff auf den G-in-Eingangsanschluß ermöglicht, so daß er ein Low-Signal in Antwort eine spezifizierte Konfiguration eines Unter-Würfels ausgibt. Der Zugriff kann durch ein Flip-Flop (nicht gezeigt) ausgeübt werden, dessen Ausgangszustand durch den Mikroprozessor der PPU gesteuert werden kann.
- Gemäß der vorliegenden Erfindung identifiziert ein Tag-Bit in dem Befehl Parallelbefehle, die durch andere PPUs parallel ausgeführt werden müssen. Der Interzeptor 580 testet dieses Tag- Bit. Alle Daten, auf die im Speicher durch die PPU zugegriffen wird, gehen durch den Interzeptor 580. Wenn das Tag-Bit der Daten anzeigt, daß ein Parallelbefehl vorliegt, wird ein noop- Befehl an die Datenpins gesendet und der Interzeptor sendet den Parallelbefehl zu dem Alpha-Weiterleiter, damit dieser an andere PPUs weitergegeben wird. Wenn das Tag-Bit anzeigt, daß kein Parallelbefehl vorliegt, wird der Befehl durch die Datenpins der PPU zugeführt.
- Der Order-Cache 590 ist ein Speicher, der zum Speichern von Order vom Alpha-Weiterleiter verwendet wird. Der virtuelle Prozessersequenzer 530 bewirkt, daß die PPU auf die Befehle von dem Order-Cache zugreift, um die Aktion bei jedem virtuellen Prozessor zu implementieren. Der Order-Cache ist im wesentlichen ein Befehlscache für die Befehle, die parallel für jede Aufgabe ausgeführt werden. Der Cache kann beispielsweise 256 Wörter groß sein.
- Aufgrund der internen Verdopplung von Komponenten bei dem Computer ist er in der Lage, aufgrund von Redundanz fehlertolerant zu arbeiten. Vorteilhafterweise ist der gesamte Speicher der Datenbank auf zumindest zwei physikalisch separate Module verteilt, so daß wenn ein Speichermodul ausfällt, die Daten von dem Backup-Modul verwendet werden können und verdoppelt werden können um ein anderes Backup zu erzeugen. Wenn ein Prozessormodul ausfällt, wird es von dem System isoliert, bis es ersetzt werden kann und physikalische Prozessor vom Rest der funktionierenden Prozessoren zugewiesen wurden.
- Die schwierigsten Probleme in einem fehlertoleranten System bestehen darin, Fehler zu detektieren und zu isolieren wenn sie auftreten und mit der Aufgabe fertig zu werden, die momentan verarbeitet wird, wenn der Fehler auftritt. Hierbei gibt es einen Kompromiß zwischen Sicherheitsgrad, daß die Aufgabe richtig zu Ende geführt wird und dem Hardwareaufwand für die Auf gabe zur Verfügung gestellt wird. In dem Parallelcomputer der vorliegenden Erfindung ist der Benutzer in der Lage, diesen Kompromiß während der Laufzeit zu machen, jeweils abhängig von der Bedeutung der Aufgabe. Eine Aufgabe kann in einem von drei Moden entsprechend der benötigten Redundanz ausgeführt werden. Im einfachsten Betriebsmode des Systems wird selbstüberprüfende Hardware wie beispielsweise ein Fehlerkorrekturschaltkreis 550 der Figur 11 verwendet, um Fehler zu detektieren und zu isolieren. Diese Hardware ist in der Lage, die häufigsten Fehlertypen und Ausfälle zu detektieren, beispielsweise nicht korrigierbare Speicherfehler, Leistungsverlust und nicht korrigierbare Fehler in der Übertragung. Immer wenn ein Fehler durch einen Selbstüberprüfungsschaltkreis im Selbstüberprüfungsmode gefunden wird, wird die momentane Transaktion abgebrochen und die Hardware rekonfiguriert, um das defekte Teil zu isolieren. Die Transaktion wird dann vom Anfang an gestartet.
- Während ein Selbstüberprüfungsschaltkreis die meisten Fehler die auftreten können, erkennen wird, ist dadurch nicht garantiert, daß jeder Fehlertyp erkannt wird. Insbesondere können viele Fehler innerhalb der PPU selbst auftreten und werden daher nicht detektiert. In einem redundanten Mode wird das Betriebssystem zwei identische Kopien des Programms auf zwei physikalisch seperierten isomorphen Sätzen von Prozessoren rausführen und die Ergebnisse regelmäßig miteinander vergleichen. (Die Verkabelung des Kommunikationssystems, die entsprechend dem Muster eines n-dimensionalen Würfels ausgeführt ist, stellt exakt die richtigen Kommunikationspfade für diesen Vergleich zur Verfügung). Der Vergleichsmechanismus garantiert die Federdetektion und den Grund dafür. Wenn Fehler im redundanten Mode detektiert wurden, werden sie in exakt der gleichen Weise wie im Selbstüberprüfungsmode behandelt. Beide Prozessoren werden vom System isoliert, bis über Diagnoseabläufe festgestellt wurde, welcher Prozessor fehlerhaft ist.
- Ein Nachteil der Selbstüberprüfung und des Redundanzmodes ist, daß sie einen Neustart der Transaktion erfordern, wenn ein Fehler aufgetreten ist. Dies kann für Aufgaben, die nicht in relativ kleine Transaktionen aufgeteilt werden, nicht akzeptierbar sein. Einige Aufgaben weisen Echtzeitzeitverarbeitungsanforderungen auf, die nicht erlauben, daß eine Transaktion wiederholt wird. Für diese zwei Situationen ist der quadrierte Redundanzmode für einen fehlersicheren Betrieb.
- Dem quadrierten Redundanzmode werden vier identische Kopien der Anwendung synchron betrieben. Jede Aufgabe vergleicht seinen Betrieb mit anderen in zirkularer Weise. Beispielsweise überprüft A B, B C, C D und D A. Wenn ein Fehler auftritt, wird er sowohl detektiert als auch entsprechend dem Muster der Nichtübereinstimmung isoliert. In diesem Fall wird der korrigierte Zustand des Prozesses von einer nicht fehlerhaften Aufgabe zu einem anderen Unterwürfel kopiert und der Betrieb wird ohne bedeutende Unterbrechung weitergeführt. Es wird vierfache statt dreifache Redundanz verwendet, so daß eine geeignete Verkabelung für den Vergleich in dem N-dimensionalen Würfel zur Verfügung steht.
- Verschiedene Modifikationen der Erfindung sind möglich. Beispielsweise kann, obwohl die Erfindung für ein Feld von Parallelprozessoren das in Form eines binären Hyperwürfels organisiert ist, beschrieben wurde, selbstverständlich auch eine andere Organisation verwendet werden wie sie beispielsweise im '400 Patent beschrieben wurden. Selbstverständlich müssen in diesen Fällen geeignete Modifikationen vorgenommen werden, beispielsweise hinsichtlich des Alpha- und Beta-Weiterleiters, die oben lediglich für die Signalisierung im Prozesserfeld beschrieben wurden.
Claims (13)
1. Parallelcomputer mit:
einer Vielzahl von Prozessoreinheiten (330), wobei jede
Prozessoreinheit aufweist:
einen Prozessor (350);
einen Lese/Schreib-Speicher (370); und
einen Steuerschaltkreis (360), der Einrichtungen zur
Befehlsverteilung und Synchronisation zwischen der Vielzahl von
Prozessoreinheiten über Kommunikationsleitungen in dem
Parallelcomputer aufweist;
dadurch gekennzeichnet, daß
jeder Steuerschaltkreis einer Prozessoreinheit eine Einrichtung
(Fig. 2; 800A-800N, 805A-805N, 825A-825N, Fig. 12) aufweist,
die in Antwort auf von dem Prozessor empfangene Signale
selektiv den Zugriff auf einzelne der Kommunikationsleitungen
steuert, und
die Prozessoren von ausgewählten Prozessoreinheiten rekursiv
beginnend mit einer anfänglichen Prozessoreinheit, eine
ausgewählte Gruppe von Prozessoreinheiten, die mit diesen verbunden
sind, identifizieren, um eine Verarbeitung unter ihrer
Steuerung aufzuführen und ihre Steuerschaltkreise zu steuern, um
selektiv Zugriff zu den entsprechenden Kommunikationsleitungen
zuzulassen, mit denen die Prozessoreinheiten in der
ausgewählten Gruppe verbunden sind.
2. Parallelcomputer nach Anspruch 1, wobei die
Prozessoreinheiten in Form eines Hyperwürfels verbunden sind, wobei jede
Kommunikationsleitung eine Verbindung zwischen Prozessoreinheiten
entlang einer Dimension des Hyperwürfels ermöglicht, und wobei
jeder Steuerschaltkreis aufweist:
ein Feld von Eingängen (802A-802N, Fig. 12), was in seiner
Größe den Dimensionen des Hyperwürfels entspricht, wobei die
Eingänge Signale über die Kommunikationsleitungen von den nächsten
Nachbarprozessoreinheiten in dem Hyperwürfel empfangen;
ein Feld von Ausgängen (822A-822N, Fig. 12), das in seiner
Anzahl den Dimensionen des Hyperwürfels entspricht, wobei die
Ausgänge Signale über die Kommunikationsleitungen zu den
nächsten Nachbarprozessoreinheiten in dem Hyperwürfel übertragen;
logische Einrichtungen (800A-800N, 810, 815, 820) zum
Übertragen von Nachrichtenpaketen, die an den Eingängen empfangen
wurden, an ausgewählte Ausgänge; und
eine Einrichtung (830, 832, 834) zum Durchlassen von
Nachrichtenpaketen, die an den Eingängen empfangen wurden, in
vorbestimmter Reihenfolge an einen ausgewählten Ausgang.
3. Parallelcomputer nach Anspruch 1, wobei die
Prozessoreinheiten in Form eines Hyperwürfels mit n-Dimensionen verbunden
sind, dadurch gekemizeichnt, daß der Steuerschaltkreis jeder
Prozessoreinheit weiterhin aufweist:
eine erste Toreinrichtung (800A-800N, 810, 815), die einen
Signaleingang
von einer nächsten Nachbarprozessoreinheit in jeder
Dimension des Hyperwürfels aufweist;
eine Einrichtung (805A-805N) zum Steuern der Toreinrichtung, so
daß als ein Ausgang von der Toreinrichtung ein Signaleingang
von einem oder mehreren Nachbarprozessoreinheiten des
Hyperwürfels ausgewählt werden können;
eine zweite Toreinrichtung (820A-820N), die einen Signalausgang
an eine nächste Nachbarprozessoreinheit in jeder Dimension des
Hyperwürfels aufweist;
eine Einrichtung (825A-825N) zum Steuern der zweiten
Toreinrichtung, so daß als ein Ausgang zu den nächsten
Nachbarprozessoreinheiten des Hyperwürfels eines aus einer Vielzahl von
Eingangssignalen ausgewählt werden kann, wobei ein erstes dieser
Signale einen Ausgang von der ersten Toreinrichtung und ein
zweites von diesen Signalen einen Ausgang von dem Prozessor in
der gleichen Prozessoreinheit wie der Steuerschaltkreis ist,
wobei die Signale von dem Prozessor oder von der ausgewählten
nächsten Nachbarprozessoreinheit(en) über die zweite
Toreinrichtung zu den nächsten Nachbarprozessoreinheiten, die mit der
zweiten Toreinrichtung verbunden sind, ausgestahlt werden
können.
4. Parallelcomputer nach Anspruch 3, dadurch gekennzeichnt, daß
die erste Toreinrichtung eine Einrichtung (805A-805N,
800A-800N, 810) zum Auswählen eines oder mehrerer Signaleingänge von
den nächsten Nachbarprozessoreinheiten und zum Bilden einer
logischen ODER-Verknüpfung der ausgewählten Eingänge aufweist.
5. Parallelcomputer nach Anspruch 3 oder 4, dadurch
gekennzeichnet, daß der zweite Signaleingang zu der zweiten
Toreinrichtung
ein Synchronisationssignal ("Synch In") von dem
Prozossor ist, welches über die zweite Toreinrichtung zu den
nächsten Nachbarprozessoreinheiten ausgestrahlt wird, die mit der
zweiten Toreinrichtung verbunden sind.
6. Parallelcomputer nach Anspruch 5, dadurch gekennzeichnet, daß
die Synchronisationssignale von dem Steuerschaltkreis der
nächsten Nachbarprozessoreinheiten über den Ausgang (810) der
ersten Toreinrichtung empfangen werden, wobei der Prozessor
Operationen in den Prozessoreinheiten, die mit der zweiten
Toreinrichtung verbunden sind, synchronisieren kann, indem
Synchronisationsbefehle zu den Prozessoreinheiten über die zweite
Toreinrichtung ausgestrahlt werden und indem der Ausgang der
ersten Toreinrichtung nach einer geeigneten Antwort von den
Prozessoreinheiten überwacht wird.
7. Parallelcomputer nach Anspruch 4, dadurch gekennzeichnet, daß
das zweite Eingangssignal zur zweiten Toreinrichtung ein
Befehlssignal ("Orders In", "Orders Out") von dem Prozessor ist,
welches über die zweite Toreinrichtung zu den nächsten
Nachbarprozessoreinheiten, die mit der zweiten Toreinrichtung
verbunden sind, ausgestrahlt wird.
8. Parallelcomputer nach Anspruch 7, dadurch gekennzeichnet, daß
die Befehlssignale von dem Steuerschaltkreis von einer
ausgewählten nächsten Nachbareinheit über den Ausgang (830, 832,
834) der ersten Toreinrichtung empfangen werden.
9. Parallelcomputer nach einem der Ansprüche 3 bis 8, dadurch
gekennzeichnet, daß der Steuerschaltkreis weiterhin aufweist:
eine dritte Toreinrichtung (830), die einen Signaleingang von
einer nächsten Nachbarprozessoreinheit in jeder Dimension des
Hyperwürfels aufweist;
eine Einrichtung (832, 834) zum Steuern der dritten
Toreinrichtung, so daß als ein Ausgang von der Toreinrichtung ein
Signaleingang von einer der nächsten Nachbarprozessoreinheiten in
dem Hyperwürfel ausgewählt wird;
eine vierte Toreinrichtung (840), die einen Signalausgang
aufweist, der als zweiter Eingang der zweiten Toreinrichtung
zugeführt wird; und
eine Einrichtung (842) zum Steuern der vierten Toreinrichtung,
um als Ausgang eines aus der Vielzahl von Eingangssignalen
auszuwählen, wobei ein erstes Eingangssignal den Ausgang der
dritten Toreinrichtung und ein zweites Eingangssignal den Ausgang
von dem Prozessor in der gleichen Prozessoreinheit wie der
Steuerschaltkreis darstellt, wobei die Signale von dem
Prozessor oder von einer ausgewählten nächsten
Nachbarprozessoreinheit über die zweite Toreinrichtung zu den nächsten
Nachbarprozessoreinheiten, die mit der zweiten Toreinrichtung verbunden
sind, ausgestrahlt werden kann.
10. Parallelcomputer nach Anspruch 9, dadurch gekennzeichnet,
daß das zweite Eingangssignal zur zweiten Toreinrichtung ein
Synchronisationssignal ("Synch In") von dem Prozessor ist,
welches über die zweite Toreinrichtung zu den nächsten
Nachbarprozessoreinheiten des Hyperwürfels ausgestrahlt wird, die mit der
zweiten Toreinrichtung verbunden sind und das zweite
Eingangssignal zur vierten Toreinrichtung ein Befehlssignal ("Orders
In") von dem Prozessor ist, welches über die zweite
Toreinrichtung
zu den nächsten Nachbarprozessoreinheiten, die mit der
zweiten Toreinrichtung verbunden sind, ausgestrahlt wird.
11. Prallelcomputer nach Anspruch 10, dadurch gekennzeichnet,
daß die Synchronisationssignale von dem Steuerschaltkreis von
den nächsten Nachbareinheiten durch den Ausgang der ersten
Toreinrichtung empfangen werden und die Befehlssignale von dem
Steuerschaltkreis von den nächsten Nachbarprozessoreinheiten
über den Ausgang der dritten Toreinrichtung empfangen werden.
12. Parallelcomputer nach einem der Ansprüche l bis 11,
weiterhin aufweisend eine Benutzerinferfaceeinrichtung (310) und eine
Einrichtung (320) zum Verbinden der
Benutzerinterfaceeinrichtung mit zumindest einer Prozessoreinheit, wobei eine
anfängliche Prozessoreinheit mit der Benutzerinterfaceeinrichtung
verbunden ist und die ausgewählte Gruppe in Antwort auf eine
Verarbeitung, die von der Benutzerinterfaceeinrichtung ermöglicht
wird, identifiziert.
13. Parallelprozessor nach einem der Ansprüche 1 bis 12, bei
dem die Prozessoren ausgewählter Prozessoreinheiten selektiv
bezüglich ihrem Zugriff zu einzelnen Kommunikationsleitungen,
die mit den Prozessoreinheiten verbunden sind, die nicht der
ausgewählten Gruppe angehören, deaktiviert werden.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US90229086A | 1986-08-29 | 1986-08-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3751616D1 DE3751616D1 (de) | 1996-01-11 |
DE3751616T2 true DE3751616T2 (de) | 1996-05-09 |
Family
ID=25415622
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3751616T Expired - Lifetime DE3751616T2 (de) | 1986-08-29 | 1987-05-20 | Parallel-Grossrechner. |
Country Status (9)
Country | Link |
---|---|
US (3) | US5129077A (de) |
EP (1) | EP0262750B1 (de) |
JP (1) | JP2792649B2 (de) |
KR (1) | KR960012654B1 (de) |
CN (1) | CN1020972C (de) |
CA (1) | CA1293819C (de) |
DE (1) | DE3751616T2 (de) |
IN (1) | IN170067B (de) |
WO (1) | WO1988001772A1 (de) |
Families Citing this family (187)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4985832A (en) * | 1986-09-18 | 1991-01-15 | Digital Equipment Corporation | SIMD array processing system with routing networks having plurality of switching stages to transfer messages among processors |
US5175865A (en) * | 1986-10-28 | 1992-12-29 | Thinking Machines Corporation | Partitioning the processors of a massively parallel single array processor into sub-arrays selectively controlled by host computers |
US5418970A (en) * | 1986-12-17 | 1995-05-23 | Massachusetts Institute Of Technology | Parallel processing system with processor array with processing elements addressing associated memories using host supplied address value and base register content |
US5282201A (en) * | 1987-12-22 | 1994-01-25 | Kendall Square Research Corporation | Dynamic packet routing network |
US5341483A (en) * | 1987-12-22 | 1994-08-23 | Kendall Square Research Corporation | Dynamic hierarchial associative memory |
US5055999A (en) | 1987-12-22 | 1991-10-08 | Kendall Square Research Corporation | Multiprocessor digital data processing system |
US5251308A (en) * | 1987-12-22 | 1993-10-05 | Kendall Square Research Corporation | Shared memory multiprocessor with data hiding and post-store |
US5226039A (en) * | 1987-12-22 | 1993-07-06 | Kendall Square Research Corporation | Packet routing switch |
US5822578A (en) * | 1987-12-22 | 1998-10-13 | Sun Microsystems, Inc. | System for inserting instructions into processor instruction stream in order to perform interrupt processing |
US5761413A (en) * | 1987-12-22 | 1998-06-02 | Sun Microsystems, Inc. | Fault containment system for multiprocessor with shared memory |
EP0360527B1 (de) * | 1988-09-19 | 1995-01-04 | Fujitsu Limited | Paralleles Rechnersystem mit Verwendung eines SIMD-Verfahrens |
US5276893A (en) * | 1989-02-08 | 1994-01-04 | Yvon Savaria | Parallel microprocessor architecture |
DE69132495T2 (de) * | 1990-03-16 | 2001-06-13 | Texas Instruments Inc., Dallas | Verteilter Verarbeitungsspeicher |
US5168499A (en) * | 1990-05-02 | 1992-12-01 | California Institute Of Technology | Fault detection and bypass in a sequence information signal processor |
DE69130587T2 (de) * | 1990-05-10 | 1999-05-06 | Hewlett-Packard Co., Palo Alto, Calif. | System zum Integrieren von Anwenderprogrammen in eine heterogene Netzwerkumgebung |
US5193202A (en) * | 1990-05-29 | 1993-03-09 | Wavetracer, Inc. | Processor array with relocated operand physical address generator capable of data transfer to distant physical processor for each virtual processor while simulating dimensionally larger array processor |
US5157785A (en) * | 1990-05-29 | 1992-10-20 | Wavetracer, Inc. | Process cell for an n-dimensional processor array having a single input element with 2n data inputs, memory, and full function arithmetic logic unit |
US5367636A (en) * | 1990-09-24 | 1994-11-22 | Ncube Corporation | Hypercube processor network in which the processor indentification numbers of two processors connected to each other through port number n, vary only in the nth bit |
US5777609A (en) * | 1990-10-29 | 1998-07-07 | Societe Nationale Elf Aquitaine | Method of exploiting colors on screen |
US5765011A (en) * | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams |
US5617577A (en) * | 1990-11-13 | 1997-04-01 | International Business Machines Corporation | Advanced parallel array processor I/O connection |
US5590345A (en) * | 1990-11-13 | 1996-12-31 | International Business Machines Corporation | Advanced parallel array processor(APAP) |
US5825773A (en) * | 1991-03-20 | 1998-10-20 | Hitachi, Ltd. | Switching system for transferring broadcast packet held in broadcast buffer received from input port to output ports according to the state of each output port |
US5426747A (en) * | 1991-03-22 | 1995-06-20 | Object Design, Inc. | Method and apparatus for virtual memory mapping and transaction management in an object-oriented database system |
US5442772A (en) * | 1991-03-29 | 1995-08-15 | International Business Machines Corporation | Common breakpoint in virtual time logic simulation for parallel processors |
FR2675923A1 (fr) * | 1991-04-25 | 1992-10-30 | Yonter Eric | Architecture de systeme informatique massivement parallele. |
JP3679813B2 (ja) * | 1991-07-22 | 2005-08-03 | 株式会社日立製作所 | 並列計算機 |
US5313647A (en) * | 1991-09-20 | 1994-05-17 | Kendall Square Research Corporation | Digital data processor with improved checkpointing and forking |
CA2078315A1 (en) * | 1991-09-20 | 1993-03-21 | Christopher L. Reeve | Parallel processing apparatus and method for utilizing tiling |
CA2078312A1 (en) | 1991-09-20 | 1993-03-21 | Mark A. Kaufman | Digital data processor with improved paging |
RO105026B1 (en) * | 1991-10-10 | 1993-09-01 | Ion Minca | Network structure for parallel processing of calcullation programs |
US5594915A (en) * | 1991-11-13 | 1997-01-14 | Atalla; Martin M. | Microcell computer system and method using cell access switch and functionally partitioned moving memory architecture |
US5564107A (en) * | 1991-11-13 | 1996-10-08 | Atalla; Martin M. | Microcell computer system and method using cell access switch and moving memory architecture |
US5442797A (en) * | 1991-12-04 | 1995-08-15 | Casavant; Thomas L. | Latency tolerant risc-based multiple processor with event driven locality managers resulting from variable tagging |
US5347654A (en) * | 1992-02-03 | 1994-09-13 | Thinking Machines Corporation | System and method for optimizing and generating computer-based code in a parallel processing environment |
JP3375658B2 (ja) * | 1992-03-19 | 2003-02-10 | 株式会社日立製作所 | 並列計算機およびそのためのネットワーク |
US6047122A (en) * | 1992-05-07 | 2000-04-04 | Tm Patents, L.P. | System for method for performing a context switch operation in a massively parallel computer system |
US5758053A (en) * | 1992-07-22 | 1998-05-26 | Hitachi, Ltd. | Fault handling and recovery for system having plural processors |
US5579527A (en) * | 1992-08-05 | 1996-11-26 | David Sarnoff Research Center | Apparatus for alternately activating a multiplier and a match unit |
US5581778A (en) * | 1992-08-05 | 1996-12-03 | David Sarnoff Researach Center | Advanced massively parallel computer using a field of the instruction to selectively enable the profiling counter to increase its value in response to the system clock |
JP2977688B2 (ja) * | 1992-12-18 | 1999-11-15 | 富士通株式会社 | マルチプロセッシング装置、方法、及びこれらに使用するプロセッサ |
US5574914A (en) * | 1993-01-04 | 1996-11-12 | Unisys Corporation | Method and apparatus for performing system resource partitioning |
JPH06243113A (ja) * | 1993-02-19 | 1994-09-02 | Fujitsu Ltd | 並列計算機における計算モデルのマッピング法 |
JPH06325005A (ja) * | 1993-05-14 | 1994-11-25 | Fujitsu Ltd | 再構成可能なトーラス・ネットワーク方式 |
EP0657048B1 (de) * | 1993-06-30 | 1999-08-25 | Anton Gunzinger | Intelligentes kommunikations-system |
FR2707776B1 (fr) | 1993-07-15 | 1995-08-18 | Bull Sa | Procédé de gestion de mémoires d'un système informatique, système informatique mémoire et support d'enregistrement mettant en Óoeuvre le procédé. |
FR2707778B1 (fr) * | 1993-07-15 | 1995-08-18 | Bull Sa | NÓoeud de processeurs. |
CA2129882A1 (en) * | 1993-08-12 | 1995-02-13 | Soheil Shams | Dynamically reconfigurable interprocessor communication network for simd multiprocessors and apparatus implementing same |
US5784706A (en) * | 1993-12-13 | 1998-07-21 | Cray Research, Inc. | Virtual to logical to physical address translation for distributed memory massively parallel processing systems |
GB2286067A (en) * | 1993-12-23 | 1995-08-02 | Motorola Inc | A processor system |
US5515501A (en) * | 1994-01-21 | 1996-05-07 | Unisys Corporation | Redundant maintenance architecture |
JP3300776B2 (ja) * | 1994-03-15 | 2002-07-08 | 株式会社日立製作所 | 並列プロセッサの切替え制御方式 |
US5611054A (en) * | 1994-03-18 | 1997-03-11 | Intel Corporation | Method and apparatus for decoding and recoding of addresses |
US5600822A (en) * | 1994-04-05 | 1997-02-04 | International Business Machines Corporation | Resource allocation synchronization in a parallel processing system |
WO1995028686A1 (en) * | 1994-04-15 | 1995-10-26 | David Sarnoff Research Center, Inc. | Parallel processing computer containing a multiple instruction stream processing architecture |
US5586289A (en) * | 1994-04-15 | 1996-12-17 | David Sarnoff Research Center, Inc. | Method and apparatus for accessing local storage within a parallel processing computer |
US5463732A (en) * | 1994-05-13 | 1995-10-31 | David Sarnoff Research Center, Inc. | Method and apparatus for accessing a distributed data buffer |
JP2625385B2 (ja) * | 1994-06-30 | 1997-07-02 | 日本電気株式会社 | マルチプロセッサシステム |
US5832287A (en) * | 1994-07-11 | 1998-11-03 | Atalla; Martin M. | Wideband on-demand video distribution system and method |
US5671377A (en) * | 1994-07-19 | 1997-09-23 | David Sarnoff Research Center, Inc. | System for supplying streams of data to multiple users by distributing a data stream to multiple processors and enabling each user to manipulate supplied data stream |
JP3560662B2 (ja) * | 1994-12-06 | 2004-09-02 | 富士通株式会社 | 並列プロセッサ装置 |
US5640584A (en) * | 1994-12-12 | 1997-06-17 | Ncr Corporation | Virtual processor method and apparatus for enhancing parallelism and availability in computer systems |
US5603005A (en) * | 1994-12-27 | 1997-02-11 | Unisys Corporation | Cache coherency scheme for XBAR storage structure with delayed invalidates until associated write request is executed |
US5717942A (en) * | 1994-12-27 | 1998-02-10 | Unisys Corporation | Reset for independent partitions within a computer system |
US5710938A (en) * | 1995-07-19 | 1998-01-20 | Unisys Corporation | Data processing array in which sub-arrays are established and run independently |
KR970043012A (ko) * | 1995-12-19 | 1997-07-26 | 백운화 | 효과적인 현탁배양을 위한 식물세포 배양장치 |
US5913070A (en) * | 1996-01-16 | 1999-06-15 | Tm Patents, L.P. | Inter-connector for use with a partitionable massively parallel processing system |
US5918243A (en) * | 1996-01-30 | 1999-06-29 | International Business Machines Corporation | Computer mechanism for reducing DASD arm contention during parallel processing |
US5675768A (en) * | 1996-02-01 | 1997-10-07 | Unisys Corporation | Store software instrumentation package instruction |
US5761696A (en) * | 1996-04-02 | 1998-06-02 | International Business Machines Corporation | Parallel database serving mechanism for a single-level-store computer system |
US5970510A (en) * | 1996-04-10 | 1999-10-19 | Northrop Grumman Corporation | Distributed memory addressing system |
US5854896A (en) * | 1996-06-17 | 1998-12-29 | International Business Machines Corporation | System for preserving logical partitions of distributed parallel processing system after re-booting by mapping nodes to their respective sub-environments |
US5941943A (en) * | 1996-06-17 | 1999-08-24 | International Business Machines Corporation | Apparatus and a method for creating isolated sub-environments using host names and aliases |
US5881227A (en) * | 1996-06-17 | 1999-03-09 | International Business Machines Corporation | Use of daemons in a partitioned massively parallel processing system environment |
US5799149A (en) * | 1996-06-17 | 1998-08-25 | International Business Machines Corporation | System partitioning for massively parallel processors |
US5799143A (en) * | 1996-08-26 | 1998-08-25 | Motorola, Inc. | Multiple context software analysis |
US6084638A (en) * | 1996-10-08 | 2000-07-04 | Hare; Charles S. | Computer interface extension system and method |
US6279098B1 (en) | 1996-12-16 | 2001-08-21 | Unisys Corporation | Method of and apparatus for serial dynamic system partitioning |
US5970253A (en) * | 1997-01-09 | 1999-10-19 | Unisys Corporation | Priority logic for selecting and stacking data |
US5822766A (en) * | 1997-01-09 | 1998-10-13 | Unisys Corporation | Main memory interface for high speed data transfer |
KR100207598B1 (ko) * | 1997-01-27 | 1999-07-15 | 윤종용 | 상호연결망으로서 파이브 채널을 사용한 클러스터시스템 |
US6567837B1 (en) * | 1997-01-29 | 2003-05-20 | Iq Systems | Object oriented processor arrays |
JP3603524B2 (ja) * | 1997-02-05 | 2004-12-22 | 株式会社日立製作所 | ネットワーキング方法 |
US5978881A (en) * | 1997-02-24 | 1999-11-02 | Sigma Electronics, Inc. | Scalable switcher with detachably securable frame adapter cards for routing audio and video signals |
JP4634548B2 (ja) * | 1997-11-04 | 2011-02-16 | ヒューレット・パッカード・カンパニー | マルチプロセッサコンピュータシステム及びその動作方法 |
US6381682B2 (en) | 1998-06-10 | 2002-04-30 | Compaq Information Technologies Group, L.P. | Method and apparatus for dynamically sharing memory in a multiprocessor system |
US6542926B2 (en) | 1998-06-10 | 2003-04-01 | Compaq Information Technologies Group, L.P. | Software partitioned multi-processor system with flexible resource sharing levels |
US6633916B2 (en) | 1998-06-10 | 2003-10-14 | Hewlett-Packard Development Company, L.P. | Method and apparatus for virtual resource handling in a multi-processor computer system |
US6260068B1 (en) | 1998-06-10 | 2001-07-10 | Compaq Computer Corporation | Method and apparatus for migrating resources in a multi-processor computer system |
US6332180B1 (en) | 1998-06-10 | 2001-12-18 | Compaq Information Technologies Group, L.P. | Method and apparatus for communication in a multi-processor computer system |
US6199179B1 (en) | 1998-06-10 | 2001-03-06 | Compaq Computer Corporation | Method and apparatus for failure recovery in a multi-processor computer system |
US6647508B2 (en) | 1997-11-04 | 2003-11-11 | Hewlett-Packard Development Company, L.P. | Multiprocessor computer architecture with multiple operating system instances and software controlled resource allocation |
US6226734B1 (en) | 1998-06-10 | 2001-05-01 | Compaq Computer Corporation | Method and apparatus for processor migration from different processor states in a multi-processor computer system |
US6047390A (en) * | 1997-12-22 | 2000-04-04 | Motorola, Inc. | Multiple context software analysis |
JP3794151B2 (ja) | 1998-02-16 | 2006-07-05 | 株式会社日立製作所 | クロスバースイッチを有する情報処理装置およびクロスバースイッチ制御方法 |
US6247109B1 (en) | 1998-06-10 | 2001-06-12 | Compaq Computer Corp. | Dynamically assigning CPUs to different partitions each having an operation system instance in a shared memory space |
US6195739B1 (en) | 1998-06-29 | 2001-02-27 | Cisco Technology, Inc. | Method and apparatus for passing data among processor complex stages of a pipelined processing engine |
US6836838B1 (en) | 1998-06-29 | 2004-12-28 | Cisco Technology, Inc. | Architecture for a processor complex of an arrayed pipelined processing engine |
US6101599A (en) * | 1998-06-29 | 2000-08-08 | Cisco Technology, Inc. | System for context switching between processing elements in a pipeline of processing elements |
US6513108B1 (en) | 1998-06-29 | 2003-01-28 | Cisco Technology, Inc. | Programmable processing engine for efficiently processing transient data |
US6119215A (en) * | 1998-06-29 | 2000-09-12 | Cisco Technology, Inc. | Synchronization and control system for an arrayed processing engine |
US6356548B1 (en) | 1998-06-29 | 2002-03-12 | Cisco Technology, Inc. | Pooled receive and transmit queues to access a shared bus in a multi-port switch asic |
SE515461C2 (sv) * | 1998-10-05 | 2001-08-06 | Ericsson Telefon Ab L M | Metod och arrangemang för minneshantering |
US6728839B1 (en) | 1998-10-28 | 2004-04-27 | Cisco Technology, Inc. | Attribute based memory pre-fetching technique |
US6173386B1 (en) | 1998-12-14 | 2001-01-09 | Cisco Technology, Inc. | Parallel processor with debug capability |
US6385747B1 (en) | 1998-12-14 | 2002-05-07 | Cisco Technology, Inc. | Testing of replicated components of electronic device |
US6920562B1 (en) | 1998-12-18 | 2005-07-19 | Cisco Technology, Inc. | Tightly coupled software protocol decode with hardware data encryption |
DE19910863A1 (de) * | 1999-03-11 | 2000-09-21 | Siemens Ag | Vorrichtung und Verfahren zum Verarbeiten von Aufträgen |
US7526630B2 (en) | 1999-04-09 | 2009-04-28 | Clearspeed Technology, Plc | Parallel data processing apparatus |
US20080007562A1 (en) * | 1999-04-09 | 2008-01-10 | Dave Stuttard | Parallel data processing apparatus |
US7627736B2 (en) * | 1999-04-09 | 2009-12-01 | Clearspeed Technology Plc | Thread manager to control an array of processing elements |
US20070294510A1 (en) * | 1999-04-09 | 2007-12-20 | Dave Stuttard | Parallel data processing apparatus |
US20080184017A1 (en) * | 1999-04-09 | 2008-07-31 | Dave Stuttard | Parallel data processing apparatus |
US20070242074A1 (en) * | 1999-04-09 | 2007-10-18 | Dave Stuttard | Parallel data processing apparatus |
US20080016318A1 (en) * | 1999-04-09 | 2008-01-17 | Dave Stuttard | Parallel data processing apparatus |
AU3829500A (en) * | 1999-04-09 | 2000-11-14 | Clearspeed Technology Limited | Parallel data processing apparatus |
US20080008393A1 (en) * | 1999-04-09 | 2008-01-10 | Dave Stuttard | Parallel data processing apparatus |
US7506136B2 (en) * | 1999-04-09 | 2009-03-17 | Clearspeed Technology Plc | Parallel data processing apparatus |
US8171263B2 (en) * | 1999-04-09 | 2012-05-01 | Rambus Inc. | Data processing apparatus comprising an array controller for separating an instruction stream processing instructions and data transfer instructions |
US8174530B2 (en) * | 1999-04-09 | 2012-05-08 | Rambus Inc. | Parallel date processing apparatus |
US20080162874A1 (en) * | 1999-04-09 | 2008-07-03 | Dave Stuttard | Parallel data processing apparatus |
US7966475B2 (en) | 1999-04-09 | 2011-06-21 | Rambus Inc. | Parallel data processing apparatus |
US7802079B2 (en) * | 1999-04-09 | 2010-09-21 | Clearspeed Technology Limited | Parallel data processing apparatus |
US8169440B2 (en) * | 1999-04-09 | 2012-05-01 | Rambus Inc. | Parallel data processing apparatus |
US8762691B2 (en) * | 1999-04-09 | 2014-06-24 | Rambus Inc. | Memory access consolidation for SIMD processing elements using transaction identifiers |
US7103647B2 (en) | 1999-08-23 | 2006-09-05 | Terraspring, Inc. | Symbolic definition of a computer system |
US6597956B1 (en) * | 1999-08-23 | 2003-07-22 | Terraspring, Inc. | Method and apparatus for controlling an extensible computing system |
US7703102B1 (en) | 1999-08-23 | 2010-04-20 | Oracle America, Inc. | Approach for allocating resources to an apparatus based on preemptable resource requirements |
US7463648B1 (en) | 1999-08-23 | 2008-12-09 | Sun Microsystems, Inc. | Approach for allocating resources to an apparatus based on optional resource requirements |
US8234650B1 (en) | 1999-08-23 | 2012-07-31 | Oracle America, Inc. | Approach for allocating resources to an apparatus |
US8019870B1 (en) | 1999-08-23 | 2011-09-13 | Oracle America, Inc. | Approach for allocating resources to an apparatus based on alternative resource requirements |
US8032634B1 (en) | 1999-08-23 | 2011-10-04 | Oracle America, Inc. | Approach for allocating resources to an apparatus based on resource requirements |
US6779016B1 (en) | 1999-08-23 | 2004-08-17 | Terraspring, Inc. | Extensible computing system |
US8179809B1 (en) | 1999-08-23 | 2012-05-15 | Oracle America, Inc. | Approach for allocating resources to an apparatus based on suspendable resource requirements |
US7418407B2 (en) | 1999-10-14 | 2008-08-26 | Jarbridge, Inc. | Method for electronic gifting using merging images |
US7917397B1 (en) | 1999-10-14 | 2011-03-29 | Jarbridge, Inc. | Merging private images for gifting |
US6903756B1 (en) * | 1999-10-14 | 2005-06-07 | Jarbridge, Inc. | Merged images viewed via a virtual storage closet |
US6529983B1 (en) | 1999-11-03 | 2003-03-04 | Cisco Technology, Inc. | Group and virtual locking mechanism for inter processor synchronization |
US6681341B1 (en) | 1999-11-03 | 2004-01-20 | Cisco Technology, Inc. | Processor isolation method for integrated multi-processor systems |
US7065096B2 (en) * | 2000-06-23 | 2006-06-20 | Mips Technologies, Inc. | Method for allocating memory space for limited packet head and/or tail growth |
US7139901B2 (en) * | 2000-02-08 | 2006-11-21 | Mips Technologies, Inc. | Extended instruction set for packet processing applications |
US7155516B2 (en) | 2000-02-08 | 2006-12-26 | Mips Technologies, Inc. | Method and apparatus for overflowing data packets to a software-controlled memory when they do not fit into a hardware-controlled memory |
US7058065B2 (en) * | 2000-02-08 | 2006-06-06 | Mips Tech Inc | Method and apparatus for preventing undesirable packet download with pending read/write operations in data packet processing |
US7032226B1 (en) | 2000-06-30 | 2006-04-18 | Mips Technologies, Inc. | Methods and apparatus for managing a buffer of events in the background |
US7042887B2 (en) * | 2000-02-08 | 2006-05-09 | Mips Technologies, Inc. | Method and apparatus for non-speculative pre-fetch operation in data packet processing |
US20010052053A1 (en) * | 2000-02-08 | 2001-12-13 | Mario Nemirovsky | Stream processing unit for a multi-streaming processor |
US7058064B2 (en) | 2000-02-08 | 2006-06-06 | Mips Technologies, Inc. | Queueing system for processors in packet routing operations |
US7649901B2 (en) | 2000-02-08 | 2010-01-19 | Mips Technologies, Inc. | Method and apparatus for optimizing selection of available contexts for packet processing in multi-stream packet processing |
US7165257B2 (en) | 2000-02-08 | 2007-01-16 | Mips Technologies, Inc. | Context selection and activation mechanism for activating one of a group of inactive contexts in a processor core for servicing interrupts |
US7076630B2 (en) * | 2000-02-08 | 2006-07-11 | Mips Tech Inc | Method and apparatus for allocating and de-allocating consecutive blocks of memory in background memo management |
US7082552B2 (en) * | 2000-02-08 | 2006-07-25 | Mips Tech Inc | Functional validation of a packet management unit |
US7502876B1 (en) | 2000-06-23 | 2009-03-10 | Mips Technologies, Inc. | Background memory manager that determines if data structures fits in memory with memory state transactions map |
US7093005B2 (en) | 2000-02-11 | 2006-08-15 | Terraspring, Inc. | Graphical editor for defining and creating a computer system |
US6714980B1 (en) | 2000-02-11 | 2004-03-30 | Terraspring, Inc. | Backup and restore of data associated with a host in a dynamically changing virtual server farm without involvement of a server that uses an associated storage device |
US6892237B1 (en) * | 2000-03-28 | 2005-05-10 | Cisco Technology, Inc. | Method and apparatus for high-speed parsing of network messages |
US6505269B1 (en) | 2000-05-16 | 2003-01-07 | Cisco Technology, Inc. | Dynamic addressing mapping to eliminate memory resource contention in a symmetric multiprocessor system |
US6807557B1 (en) | 2000-05-31 | 2004-10-19 | International Business Machines Corporation | Method, system and program products for providing clusters of a computing environment |
US7263476B1 (en) * | 2000-06-12 | 2007-08-28 | Quad Research | High speed information processing and mass storage system and method, particularly for information and application servers |
JP4712279B2 (ja) * | 2000-06-20 | 2011-06-29 | テラスプリング・インコーポレーテッド | 拡張可能コンピューティングシステムの制御方法および装置 |
WO2002015018A1 (en) * | 2000-08-11 | 2002-02-21 | 3Ware, Inc. | Architecture for providing block-level storage access over a computer network |
AU9269101A (en) * | 2000-09-15 | 2002-03-26 | Wonderware Corp | A method and system for remote configuration of process data access servers |
US6751667B1 (en) * | 2000-10-06 | 2004-06-15 | Hewlett-Packard Development Company, L.P. | System for generating unique identifiers in a computer network |
US7328232B1 (en) * | 2000-10-18 | 2008-02-05 | Beptech Inc. | Distributed multiprocessing system |
WO2002052425A1 (en) * | 2000-12-21 | 2002-07-04 | Exanet Co. | Interconnect topology for a scalable distributed computer system |
US20040158663A1 (en) * | 2000-12-21 | 2004-08-12 | Nir Peleg | Interconnect topology for a scalable distributed computer system |
US6934254B2 (en) * | 2001-01-18 | 2005-08-23 | Motorola, Inc. | Method and apparatus for dynamically allocating resources in a communication system |
US7631064B1 (en) | 2001-04-13 | 2009-12-08 | Sun Microsystems, Inc. | Method and apparatus for determining interconnections of network devices |
JP3921367B2 (ja) * | 2001-09-26 | 2007-05-30 | 日本電気株式会社 | データ処理装置および方法、コンピュータプログラム、情報記憶媒体、並列演算装置、データ処理システム |
US20030068038A1 (en) * | 2001-09-28 | 2003-04-10 | Bedros Hanounik | Method and apparatus for encrypting data |
KR100763339B1 (ko) * | 2001-10-17 | 2007-10-04 | 벱테크 인코포레이티드 | 운영 시스템 전반에 대한 통신 방법 |
US7447872B2 (en) * | 2002-05-30 | 2008-11-04 | Cisco Technology, Inc. | Inter-chip processor control plane communication |
EP1378824A1 (de) * | 2002-07-02 | 2004-01-07 | STMicroelectronics S.r.l. | Verfahren zur Ausführung von Programmen in einem Mehrprozessorsystem, und entsprechenes Prozessorsystem |
US7606995B2 (en) * | 2004-07-23 | 2009-10-20 | Hewlett-Packard Development Company, L.P. | Allocating resources to partitions in a partitionable computer |
GB0425860D0 (en) * | 2004-11-25 | 2004-12-29 | Ibm | A method for ensuring the quality of a service in a distributed computing environment |
CN100595773C (zh) * | 2005-01-24 | 2010-03-24 | 独立行政法人海洋研究开发机构 | 模拟器系统 |
US8559443B2 (en) | 2005-07-22 | 2013-10-15 | Marvell International Ltd. | Efficient message switching in a switching apparatus |
US7543126B2 (en) * | 2005-08-31 | 2009-06-02 | International Business Machines Corporation | Apparatus, system, and method for implementing protected virtual memory subcontexts |
US8212805B1 (en) | 2007-01-05 | 2012-07-03 | Kenneth Banschick | System and method for parametric display of modular aesthetic designs |
US8307180B2 (en) | 2008-02-28 | 2012-11-06 | Nokia Corporation | Extended utilization area for a memory device |
JP4724730B2 (ja) * | 2008-04-09 | 2011-07-13 | 株式会社日立製作所 | 情報処理システムの運用管理方法、運用管理プログラム、および運用管理装置、ならびに情報処理システム |
US8887162B2 (en) * | 2008-12-17 | 2014-11-11 | Microsoft Corporation | Persistent local storage for processor resources |
US8874824B2 (en) | 2009-06-04 | 2014-10-28 | Memory Technologies, LLC | Apparatus and method to share host system RAM with mass storage memory RAM |
US8732669B2 (en) * | 2011-03-11 | 2014-05-20 | Oracle International Corporation | Efficient model checking technique for finding software defects |
US9417998B2 (en) | 2012-01-26 | 2016-08-16 | Memory Technologies Llc | Apparatus and method to provide cache move with non-volatile mass memory system |
US9311226B2 (en) | 2012-04-20 | 2016-04-12 | Memory Technologies Llc | Managing operational state data of a memory module using host memory in association with state change |
US9766823B2 (en) | 2013-12-12 | 2017-09-19 | Memory Technologies Llc | Channel optimized storage modules |
CN108491187B (zh) * | 2018-02-11 | 2021-06-11 | 许昌学院 | 一种基于top-k分割超立方体模型的并行处理方法 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3343135A (en) * | 1964-08-13 | 1967-09-19 | Ibm | Compiling circuitry for a highly-parallel computing system |
US4191996A (en) * | 1977-07-22 | 1980-03-04 | Chesley Gilman D | Self-configurable computer and memory system |
US4293950A (en) * | 1978-04-03 | 1981-10-06 | Nippon Telegraph And Telephone Public Corporation | Test pattern generating apparatus |
US4247892A (en) * | 1978-10-12 | 1981-01-27 | Lawrence Patrick N | Arrays of machines such as computers |
JPS5617401A (en) * | 1979-07-23 | 1981-02-19 | Omron Tateisi Electronics Co | Sequence controller |
JPS5746099A (en) * | 1980-09-03 | 1982-03-16 | Shibaura Eng Works Co Ltd | Jet pump |
US4384273A (en) * | 1981-03-20 | 1983-05-17 | Bell Telephone Laboratories, Incorporated | Time warp signal recognition processor for matching signal patterns |
US4593351A (en) * | 1981-06-12 | 1986-06-03 | International Business Machines Corporation | High speed machine for the physical design of very large scale integrated circuits |
US4533993A (en) * | 1981-08-18 | 1985-08-06 | National Research Development Corp. | Multiple processing cell digital data processor |
US4432057A (en) * | 1981-11-27 | 1984-02-14 | International Business Machines Corporation | Method for the dynamic replication of data under distributed system control to control utilization of resources in a multiprocessing, distributed data base system |
US4622632A (en) * | 1982-08-18 | 1986-11-11 | Board Of Regents, University Of Washington | Data processing system having a pyramidal array of processors |
US4524415A (en) * | 1982-12-07 | 1985-06-18 | Motorola, Inc. | Virtual machine data processor |
US4523273A (en) * | 1982-12-23 | 1985-06-11 | Purdue Research Foundation | Extra stage cube |
US4644496A (en) * | 1983-01-11 | 1987-02-17 | Iowa State University Research Foundation, Inc. | Apparatus, methods, and systems for computer information transfer |
US4814973A (en) * | 1983-05-31 | 1989-03-21 | Hillis W Daniel | Parallel processor |
US4598400A (en) * | 1983-05-31 | 1986-07-01 | Thinking Machines Corporation | Method and apparatus for routing message packets |
WO1985002698A1 (en) * | 1983-12-12 | 1985-06-20 | Parallel Computers, Inc. | Computer processor controller |
US4722084A (en) * | 1985-10-02 | 1988-01-26 | Itt Corporation | Array reconfiguration apparatus and methods particularly adapted for use with very large scale integrated circuits |
US4733353A (en) * | 1985-12-13 | 1988-03-22 | General Electric Company | Frame synchronization of multiply redundant computers |
US4748585A (en) * | 1985-12-26 | 1988-05-31 | Chiarulli Donald M | Processor utilizing reconfigurable process segments to accomodate data word length |
-
1987
- 1987-05-04 CA CA000536270A patent/CA1293819C/en not_active Expired - Fee Related
- 1987-05-20 EP EP87304461A patent/EP0262750B1/de not_active Expired - Lifetime
- 1987-05-20 DE DE3751616T patent/DE3751616T2/de not_active Expired - Lifetime
- 1987-08-28 WO PCT/US1987/002181 patent/WO1988001772A1/en unknown
- 1987-08-28 JP JP62213190A patent/JP2792649B2/ja not_active Expired - Lifetime
- 1987-08-29 CN CN87106067A patent/CN1020972C/zh not_active Expired - Fee Related
- 1987-08-29 KR KR1019870009566A patent/KR960012654B1/ko active IP Right Grant
- 1987-08-31 IN IN629/MAS/87A patent/IN170067B/en unknown
-
1990
- 1990-01-16 US US07/464,681 patent/US5129077A/en not_active Expired - Lifetime
-
1993
- 1993-08-11 US US08/105,531 patent/US5390336A/en not_active Expired - Fee Related
-
1995
- 1995-02-13 US US08/387,990 patent/US5978570A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US5129077A (en) | 1992-07-07 |
EP0262750B1 (de) | 1995-11-29 |
EP0262750A3 (en) | 1988-08-03 |
US5390336A (en) | 1995-02-14 |
CA1293819C (en) | 1991-12-31 |
EP0262750A2 (de) | 1988-04-06 |
WO1988001772A1 (en) | 1988-03-10 |
KR960012654B1 (ko) | 1996-09-23 |
DE3751616D1 (de) | 1996-01-11 |
KR880003237A (ko) | 1988-05-14 |
CN1020972C (zh) | 1993-05-26 |
JPS63145567A (ja) | 1988-06-17 |
CN87106067A (zh) | 1988-03-09 |
JP2792649B2 (ja) | 1998-09-03 |
IN170067B (de) | 1992-02-01 |
US5978570A (en) | 1999-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3751616T2 (de) | Parallel-Grossrechner. | |
DE3789104T2 (de) | Netzwerkübertragungsadapter. | |
DE68926036T2 (de) | Speicherkonfiguration zur Verwendung für Schnittstellenbildung zwischen einer Systemsteuereinheit für ein Multiprozessorsystem und dem Hauptspeicher | |
DE60006842T2 (de) | Multiprozessor-Node-Controller-Schaltung und Verfahren | |
DE69323861T2 (de) | Multiprozessorsystem mit gemeinsamem Speicher | |
DE69032614T2 (de) | Verfahren zur Datenverteilung in einer Speicherplattenanordnung | |
DE69132195T2 (de) | System für verteilte Mehrfachrechnerkommunikation | |
DE3127349C2 (de) | ||
DE68922261T2 (de) | Verfahren und Vorrichtung für die Datenübertragung zwischen mehreren Aufgaben in Datenverarbeitungssystemen. | |
DE68928316T2 (de) | Vorrichtung zur anteiligen nutzung von betriebsmitteln eines hauptrechners zwischen einer vielzahl von entfernten rechnern | |
DE68913629T2 (de) | Satzverriegelungsprozessor für vielfachverarbeitungsdatensystem. | |
DE2908316C2 (de) | Modular aufgebaute Multiprozessor-Datenverarbeitungsanlage | |
DE69419524T2 (de) | Sperrsynchronisierung für verteilte speicher-massivparallelrechner | |
DE69223303T2 (de) | Verfahren und Gerät für die dynamische Zuweisung von unadressierten Unterbrechungen | |
DE60313781T2 (de) | Gatterprozessor | |
DE69030861T2 (de) | Bus-Master-Steuerprotokoll | |
DE69027030T2 (de) | Eine fehlertolerante datenspeicherungsanordnung | |
DE69024078T2 (de) | Mehrprozessoranordnung mit Vervielfältigung von globalen Daten und mit zwei Stufen von Adressübersetzungseinheiten | |
DE69020569T2 (de) | Modulares ein-/ausgabesystem für superrechner. | |
EP0952520B1 (de) | Vorrichtung zur fehlertoleranten Ausführung von Programmen | |
DE69018286T2 (de) | Gerät für Verwaltung, Vergleich und Korrektur redundanter digitaler Daten. | |
DE3851554T2 (de) | Steuerungsanordnung für gemeinschaftlichen Speicher. | |
WO2002071248A2 (de) | Verfahren und vorrichtungen zur datenbe- und/oder verarbeitung | |
DE3606211A1 (de) | Multiprozessor-computersystem | |
DE2030812A1 (de) | Modulare Datenrechnersysteme |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition |