DE68928848T2 - Multi-Prozessor-Rechnersystem mit prozessunabhängiger Adressierung von Kommunikationsregistern - Google Patents
Multi-Prozessor-Rechnersystem mit prozessunabhängiger Adressierung von KommunikationsregisternInfo
- Publication number
- DE68928848T2 DE68928848T2 DE68928848T DE68928848T DE68928848T2 DE 68928848 T2 DE68928848 T2 DE 68928848T2 DE 68928848 T DE68928848 T DE 68928848T DE 68928848 T DE68928848 T DE 68928848T DE 68928848 T2 DE68928848 T2 DE 68928848T2
- Authority
- DE
- Germany
- Prior art keywords
- register
- communication
- processors
- registers
- processor
- 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 - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 132
- 230000008569 process Effects 0.000 title claims description 130
- 238000004891 communication Methods 0.000 title claims description 88
- 239000002131 composite material Substances 0.000 claims description 6
- 238000013507 mapping Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 2
- 238000011112 process operation Methods 0.000 description 2
- 101000995928 Mus musculus Nucleolar protein 58 Proteins 0.000 description 1
- 102100039692 RNA-binding motif, single-stranded-interacting protein 1 Human genes 0.000 description 1
- 230000009118 appropriate response Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- 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/167—Interprocessor communication using a common memory, e.g. mailbox
-
- 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
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- 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/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- 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
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Multi Processors (AREA)
Description
- Die vorliegende Erfindung betrifft allgemein Computersysteme und im besonderen Systeme mit einer Mehrzahl von unabhängigen Prozessoren.
- Die Rechenbedürfnisse im Feld der wissenschaftlichen Datenverarbeitung haben sich bis zu einem Punkt gesteigert, bei dem es schwierig ist, einen einzelnen Prozessor zu bauen, der ausreichende Leistungsfähigkeit hat. Dies ist durch Grenzen in der physikalischen Technologie beim Computerbau begründet. Ein Ansatz, dieses Problem zu lösen, besteht in der Verwendung von einer Mehrzahl von Prozessoren, um die Datenverarbeitungsleistung eines Systems zu erhöhen. Jedoch begegnet man vielen Problemen bei dem Versuch, Vielfach-Prozessoren zu verwenden. Vielfach-Prozessorsysteme können gleichzeitig mehrere unabhängige Prozesse (Programme) ausführen, und dies führt zu einer Steigerung des Systemdurchsatzes. Es besteht jedoch der Bedarf nach einem Vielfach- Prozessorsystem, das die Ausführung eines einzelnen Prozesses beschleunigen kann.
- Es wurde bereits eine Anzahl von Systemen beschrieben, die das Ziel haben, die Rechengeschwindigkeit für einen einzelnen Prozeß zu erhöhen, aber jedes dieser Systeme hat einen oder mehrere Nachteile. Ein Beispiel eines solchen Systems ist in US-Patent Nr. 4 636 942 von Chen u. a. beschrieben. Dieses Patent beschreibt ein System, in dem mehrere Prozessoren einen Satz gemeinsamer Register teilen. Diese Register werden in Cluster eingeteilt, und die Prozessoren, die zur Ausführung der gleichen Task zugewiesen sind, werden durch das Betriebssystem zum Zugriff auf einen gemeinsamen Cluster zugewiesen. Die Cluster-Register schaffen, zusammen mit einem Satz von Hardware-Semaphoren, eine schnelle Synchronisation zwischen den zusammenarbeitenden Prozessoren. Dieses System hat eine Anzahl von Nachteilen, die tendenziell zur Verschlechterung der Leistungsfähigkeit des Systems führen, wenn es zum parallelen Prozessieren eingesetzt wird. Wenn ein Prozeßparallele Operationen startet, muß die Cluster- Zuweisung von Registern durch das Betriebssystem ausgeführt werden. Diese Übergabe der Steuerung vom ausführenden Prozeß zum Betriebssystem und zurück ist recht zeitaufwendig. Nach Zuordnung der Prozessoren wird eine Task-Synchronisierung zwischen den Prozessoren mit einer Laufzeitbibliothek durchgeführt, die in den Prozeßcode eingebettet sein muß»und erhebliche Ausführungszeit benötigt, um die Task-Synchronisierung durchzuführen. Ferner wird der Multi-Task-Betrieb für eine parallele Ausführung eines Prozesses bei Chen u. a. durch den Programmierer aufgerufen. Daher wird eine Parallelisierung nur aufgerufen, wenn dies zuvor durch den Programmierer bestimmt worden ist. Grundsätzlich benutzt der Ansatz von Chen u. a. einen erheblichen Zeitüberhang, um den Multi-Task-Betrieb innerhalb eines Prozesses aufzurufen. Als Ergebnis dessen kann das in dem Patent von Chen u. a. beschriebene System nur effektiv angewendet werden, wenn sehr große parallelisierbare Abschnitte das Codes innerhalb eines Prozesses vorhanden sind. Dies wird als "grobkörnige Parallelisierung" bezeichnet. Das von Chen u. a. beschriebene System kann nicht in effizienter Weise verwendet werden, um eine feinkörnige Parallelisierung auszuführen.
- MINI/MICRO NORTHEAST, 1984 COMPUTER CONFERENCE AND EXHIBITION, BOSTON, MA, USA, 15-17 MAI 1984, LOS ANGELES, CA, USA, ELECTRON. CONVENTIONS, USA, Seiten 8/2/l-8; GONZALES D. R.: "Interfacing multiprocessors using devices with dualport RAM" offenbart ein Multiprozessorsystem für eine parallele Ausführung eines Prozesses. Das System umfaßt eine Mehrzahl von Semaphorregistern, die als Koordinatoren zwischen der Mehrzahl von Prozessoren wirken, um einen Datenkonflikt zwischen den Prozessoren zu vermeiden.
- ANGEWANDTE INFORMATIK, Band 29, Nr. 8-9, Sept. 1997, Seiten 329-329; G. Hartung u. a.: "Organisation eines MSSP-Teilsystems" offenbart ferner ein Multiprozessorsystem. Das System umfaßt eine Mehrzahl von Prozessoreinheiten, die über eine gemeinsame Speichereinheit kommunizieren. Die Kommunikation zwischen einer Mehrzahl von Prozessoreinheiten oder zwischen einer Mehrzahl von parallelen Prozessen wird durch Spinsperren und Semaphore synchronisiert.
- Ein anderer Ansatz der vorgeschlagen worden ist, besteht darin, Prozessoren im voraus für eine Task im Programm zu reservieren, wenn der Prozeß zur Ausführung geladen wird. Durch Reservieren der Prozessoren im voraus können die parallelen Segmente des Prozesses mit reduzierter Synchronisationszeit ausgeführt werden. Die meisten Prozesse haben sowohl serielle als auch parallele Codesegmente, und wenn ein serielles Segment in einem Prozessor ausgeführt wird, laufen die übrigen reservierten Prozessoren im Leerlauf. Wenn der Prozeß in seriellem Code ausgeführt wird, laufen die übrigen Prozessoren im Leerlaufzustand. In den meisten praktischen Anwendungen führt der Ansatz, Prozessoren im voraus im Programm für parallele Ausführung zu reservieren, wie in dem obigen Artikel beschrieben, zu einem Verlust von Systemdurchsatz aufgrund des Leerlaufzustands der nicht benötigten Prozessoren während serieller Programmausführung.
- In Hinblick auf den Bedarf für eine erhöhte Verarbeitungsgeschwindigkeit für einzelne Prozesse und auf die Schwierigkeiten, denen man beim Versuch, Multi-Prozessoren einzusetzen, begegnete, besteht ein Bedarf für ein Verfahren, das die parallelen Segmente eines Prozesses mit einem geringen Zeitüberhang ausführen kann, während keine Prozessoren im Leerlaufzustand gehalten werden, wenn ein Prozeß in einem seriellen Segment ausgeführt wird.
- Die vorliegende Erfindung betrifft ein Mehrprozessorcomputersystem für eine parallele Ausführung eines Prozesses. Das System umfaßt eine Mehrzahl von Kommunikationsregistersätzen, von denen jeder eine Mehrzahl von Kommunikationsregistern aufweist. Mindestens ein Semaphorregister ist für jeden Kommunikationsregistersatz vorgesehen. Es ist ein prozeßunabhängiges Kommunikationsindexregister jedem der Prozessoren zum Speichern eines ersten Adressegments, eines Kommunikationsindexwertes zugeordnet, die zum Adressieren eines der Kommunikationsregistersätze verwendet werden. Die logischen Schaltungen sind mit jedem der Prozessoren zum Erzeugen von zweiten Adressegmenten versehen, die aus Instruktionen in dem Prozeß abgeleitet werden, die ausgeführt werden. Das zweite Adressegment dient dazu, um eines der Register in jedem der Kommunikationsregistersätze zu adressieren. Ein Bus verbindet die Kommunikationsregister, die Kommunikationsindexregister und die Prozessorlogikschaltungen und dient dazu, um Adressen und Daten, die den Kommunikationsregistern zugeordnet sind, zu übertragen. Eine Adressabbildungs- und Prüf-Schaltung ist mit dem Bus und den Kommunikationsregistern verbunden, und dient dazu, um den Kommunikationsindexwert und das zweite Adressegment zu kombinieren, um eine zusammengesetzte Adresse zu erzeugen, die verwendet wird, um das ausgewählte Kommunikationsregister zu adressieren, und dieselbe prüft ferner die zusammengesetzte Adresse auf Korrektheit. Dieses System ermöglicht es mehr als einem der Prozessoren mit einem ausgewählten der Kommunikationsregistersätze unter Verwendung der zusammengesetzten Adresse zu kommunizieren, um zu erfassen, ob eine Semaphor eingestellt wurde, und um Prozeßzustandsdaten aus dem ausgewählten Kommunikationsregister zum Ausführen eines parallelen Betriebs des ausgeführten Prozesses zu erhalten.
- Für ein vollständigeres Verständnis der vorliegenden Erfindung und ihrer Vorteile wird nun auf die folgende Beschreibung im Zusammenhang mit den zugehörigen Zeichnungen Bezug genommen, in denen:
- Fig. 1 ein Blockdiagramm eines Multi-Prozessor-Computersystems gemäß der vorliegenden Erfindung ist;
- Fig. 2 ein Blockdiagramm der genauen Schaltungen für die in Fig. 1 dargestellte Speicher/Kommunikationsregistersteuerung zeigt;
- Fig. 3 eine Darstellung der dem Mikrocode zugänglichen Inhalte eines Kommunikationsregisterblocks zeigt;
- Fig. 4 ein Blockdiagramm ist, das eine Mikrocode-Operation innerhalb eines Prozessors darstellt; und
- Fig. 5 eine Zeitskalendarstellung ist, die die Prozessorverwendung zum Ausführen eines einzelnen Prozesses zeigt, wobei der Prozeß anfangs in serieller Weise auf einem einzelnen Prozessor ausgeführt wird und dann zur parallelen Ausführung auf mehreren Prozessoren aufgespalten wird, und dann zur fortgesetzten seriellen Ausführung auf einem einzelnen Prozessor zurückkehrt.
- Zweck der vorliegenden Erfindung ist es, die Verwendung von Multi-Prozessoren zu ermöglichen, um die Leistung eines einzelnen Programms zu beschleunigen, während gleichzeitig eine maximale Leistungsfähigkeit für mehrere simultane Programme erhalten bleibt. Im allgemeinen haben Anwendungsprogramme Segmente, die nur in serieller Weise durch einen einzelnen Prozessor ausgeführt werden können, und zwar grundsätzlich aufgrund der Datenabhängigkeiten, und haben ferner Segmente, die parallel durch eine Mehrzahl von Prozessoren ausgeführt werden können. Um in effizienter Weise kurze Segmente von parallelen Operationen verwenden zu können, ist es wesentlich, daß die erforderliche Überhangzeit zum Starten von Multi-Prozessor-Operationen so gering wie möglich ist. Nur wenn dieser Überhang genügend klein gemacht wird, kann Parallelisierung mit feiner Granularität ausgenutzt werden. Wenn immer ein Prozeß bei der Ausführung stoppen und das Betriebssystem rufen muß, gibt es einen erheblichen Zeitverlust. Die vorliegende Erfindung macht es überflüssig, das Betriebssystem zu rufen, um parallele Operationen zu starten.
- Um die vorliegende Erfindung besser zu verstehen, ist es wichtig, das als "Pfad" bezeichnete Programmablaufkonzept zu verstehen. Ein Pfad ist ein Ausführungsweg des Prozesses (Programm). Ein rein sequentieller Prozeß»hat einen einzelnen Pfad. Wenn ein Prozeß ein Segment hat, das parallel durch mehrere Prozessoren ausgeführt werden kann, dann kann der Prozeß mehrere Pfade während dieser Zeit haben. Die maximale Anzahl von Pfaden, die an einem beliebigen Punkt bestehen können, wird gelegentlich als logische Pfadzahl bezeichnet. Da typische Programmablaufübergänge zwischen seriellen und parallellen Segmenten hin und her gehen, variiert die logische Pfadzahl von Segment zu Segment. Es ist aber nicht erforderlich, daß jeder Pfad einen gesonderten Prozessor hat, auf dem er ausgeführt wird. Alle logischen Pfade können sequentiell auf einem einzelnen Prozessor ausgeführt werden, wie es normalerweise auf einem Einzelprozessorsystem geschieht. Bei der vorliegenden Erfindung kann das Betriebssystem einen gegebenen Prozeß auf eine Anzahl von Pfaden beschränken, die dasselbe parallel ausführen kann. Diese Grenze kann als die maximale "physikalische" Pfadzahl bezeichnet werden. Wenn die physikalische Pfadzahl kleiner als die logische Pfadzahl für ein gegebenes Segment ist, bedeutet dies lediglich, daß einige logische Pfade sequen tiell und nicht parallel ausgeführt werden. Die maximale physikalische Pfadzahl für einen Prozeß ist ein Parameter, der durch das Betriebssystem durch einen Parameter gesteuert werden kann, der in einem Kommunikationsregistersatz als eine Pfadreservierungsmaske gespeichert ist.
- Die vorliegende Erfindung schafft ein Verfahren und eine Architektur, mit denen ein einzelner Prozeß mit parallelen Segmenten entweder auf einem einzelnen Prozessor oder, für die parallelen Segmente, durch eine Mehrzahl von Prozessoren ausgeführt werden kann, wenn diese Prozessoren zur Verfügung stehen. Wenn ein Prozessor die Ausführung eines Pfades eines Prozesses abgeschlossen hat, und andere Pfade dieses Prozesses noch in Arbeit sind, dann kann dieser Prozessor freigegeben werden, 80 daß er andere Prozesse im Computersystem abarbeiten kann. Ein sehr wichtiger Aspekt der vorliegenden Erfindung besteht darin, daß Prozessoren "eingeladen" werden, beim parallelen Mehrfachprozessieren mitzuwirken, eher als auf Befehl reserviert zu werden. Ein Prozessor nimmt die Einladung an, wenn er in einem Leerlaufzustand ist und daher nicht irgendeinen anderen Prozeß abarbeitet. Diese Technik der Nicht-Befehl-Reservierung schafft einen sehr hohen Grad an Ausnutzung von allen Prozessoren innerhalb eines Computersystems und schafft daher einen sehr hohen Durchsatz für das Gesamtsystem. Eine detaillierte Beschreibung der Architektur und des Verfahrens der vorliegenden Erfindung ist in den folgenden Figuren zusammen mit den in den Anhängen I und II aufgeführten Listen gegeben.
- Unter Bezugnahme auf Fig. 1 ist dort ein Blockdiagramm für ein Multi-Prozessor-Computersystem 20 gemäß der vorliegenden Erfindung zu sehen. Das System 20 enthält einen Hauptspeicher 22 und eine Mehrzahl von Prozessoren, wie z. B. 24 und 26. Der Prozessor 24 ist als der erste Prozessor im System durch die Bezeichnung PROZESSOR 0 gekennzeichnet. Der letzte Prozessor in der Gruppe ist als PROZESSOR n bezeichnet. Es kann jede beliebige Anzahl von Prozessoren in dem System 20 geben, aber eine ausgewählte Ausführungsform hat z. B. eine Gruppe von vier Prozessoren.
- Jeder der Prozessoren enthält eine Vektorprozessoreinheit 24A und 26A, und auch eine skalare Prozessoreinheit 24B und 26B. Solche vektoriellen und skalaren Prozessoreinheiten sind detailliert in US Patent 4 620 275 von Wallach u. a. beschrieben.
- Jeder der Prozessoren 24 und 26 enthält weiter eine Speicher/Kommunikationsregistersteuerung, 24C und 26C. Diese Steuerungen sind detaillierter in Fig. 2 erläutert.
- Prozessor 24 kommuniziert mit dem Hauptspeicher 22 über einen Adreßbus 28, einen Lese-Datenbus 30 und einen Schreib- Datenbus 32. Der Prozessor 26 kommuniziert mit dem Hauptspeicher 22 über einen Adreßbus 34, einen Lese-Datenbus 36 und einen Schreib-Datenbus 38.
- Das System 20 enthält weiter eine Gruppe von Kommunikationsregistern 46, die in acht Blöcke 46A bis 46H unterteilt sind. Jeder Block kann auch als ein Satz von Kommunikationsregistern bezeichnet werden. Jeder Satz von Kommunikationsregistern oder jeder Block, wie etwa 46A, weist eine Mehrzahl von Registern auf. Diese werden bei Bezugnahme auf Fig. 3 näher beschrieben.
- Jedem Satz von Kommunikationsregistern ist ein Semaphor zugeordnet, das dazu verwendet wird, einen mit den Daten in diesem Registersatz verbundenen Status zu signalisieren. Diese sind als Semaphore 48 gezeigt. Diese Semaphore werden implizit durch Instruktionen manipuliert, die die Kommunikationsregister lesen und beschreiben. Eine "Sende"-Instruktion prüft das Semaphor des Zielregisters und schreibt, wenn es gelöscht ist, die Daten und setzt das Semphor. In ähnlicher Weise liest eine "Empfange"-Instruktion die Registerdaten und löscht das Semphor, wenn es gesetzt ist. Die Semaphor-Operationen übergeben auch den Status auf einem Semaphor-Statusbus 49, der den Erfolg oder Fehlschlag der Sema phor-Operation anzeigt. Dieser Status steht dann den Steuerabschnitten das Prozessors, wie etwa 24 und 26, zur Verfügung, so daß eine geeignete Antwort gegeben werden kann.
- Das System 20 enthält weiter einen Lese-Datenbus 50, einen Schreib-Datenbus 51 und einen Adreßbus 52 für die Kommunikation zwischen den Prozessoren, wie etwa 24 und 26, und Kommunikationsregister 46. Das System 20 hat einen Kommunikationsindexregisterbus 53 und einen Schutzflaggenbus 55, die beide mit den Steuerungen 24C und 26C verbunden sind. Die Steuerung 24C des Prozessors 24 ist verbunden, um Adressen von der Steuerung durch den Adreßbus 52 und den Registerbus 53 zu einer Kommunikationsregister-Adreßabbildungs/Prüfschaltung 57 zu übertragen, um irgendein Register in den Kommunikationsregistern 46 über eine Leitung 59 zu adressieren. Die Steuerung 24C ist ferner so angeschlossen, um den Datenbus 50 auszulesen, um Daten aus den Kommunikationsregistern 46 zu lesen, und auf den Datenbus 51 zu schreiben, um Daten in die Kommunikationsregister 46 zu schreiben. Die Steuerung 24C kann ferner jedes mit den Kommunikationsregistern 46 verbundene Semaphor 48 setzen und löschen. Die Steuerung 26C kommuniziert in ähnlicher Weise durch die Busse 49, 50, 51, 52, 53 und 55 mit den Kommunikationsregistern 46 und Semaphoren 48.
- Ein Schutzflaggenbus 55 ist mit den Steuerungen 24C und 26C verbunden, um einen Schutzstatus des steuernden Prozessors einer Kommunikationsregister-Adreßabbildungs/Prüfschaltung 57 bereitzustellen. Diese Schaltung 57 kann dann Adressen nachweisen, die durch Anwenderprogramme fehlerhaft erzeugt wurden.
- In dem Computersystem 20 kann jeder Prozessor, wie etwa 24 und 26, unabhängig auf den Hauptspeicher zugreifen. Bei herkömmlichem Multi-Prozessieren können separate Prozesse (Programme) unabhängig voneinander in Prozessoren, wie etwa 24 und 26, laufen, während sie auf den Hauptspeicher zugreifen. Ebenso kann ein einzelner Prozeß unter Verwendung von mehre ren Pfaden ausgeführt werden, wie weiter unten beschrieben wird, durch Verwendung der Kommunikationsregister 46 und der Semaphore 48. Kurz gesagt, wenn ein Prozeß auszuführen ist, der sowohl serielle als auch parallele Komponenten enthält, wird er anfangs bei irgendeinem der Prozessoren ausgeführt, wie beispielsweise Prozessor 24. Wenn der Prozeß begonnen hat, wird einer der Kommunikationsregisterblöcke, z. B. 46A, durch das Betriebssystem dem Prozeß zugeordnet. Ein Anfangssatz von Prozeßstatusinformation, der weiter bei Bezugnahme auf Fig. 3 beschrieben wird, wird dann durch den Prozessor 24 in die Register den Blocks 46A durch Ausführung des Betriebssystems geschrieben, das dann den Prozessor veranlaßt, die Ausführung des ausgewählten Prozesses zu beginnen. Während der Prozessor 24 den ausgewählten Prozeß ausführt, können andere Prozessoren in dem System entweder andere Prozesse ausführen oder in einem Leerlaufzustand sein. Wenn der Prozessor 24 einer Parallelisierungsinstruktion begegnet, die weiter unten beschrieben wird, führt er eine Abfolge von Operationen aus, um die anderen Prozessoren zu informieren, daß parallele Ausführung möglich ist. Zunächst sperrt er den "Verzweigungsblock" welcher die Kommunikationsregister 000A-000D enthält, indem er ein Senden zu Register 000A ausführt (siehe Fig. 3). Durch Setzen dieses Semaphors, das als das "Verzweigungssperr"-Semaphor bezeichnet wird, informiert er die anderen Prozessoren im System, daß die Verzweigungsblockgruppe von Registern modifiziert wird. Der Prozessor 24 schreibt dann zusätzliche Prozeßstatusinformationen in den Verzweigungsblock, und schließt durch Setzen des dem Register 000D zugeordneten Semaphors, des "Verzweigungsspeicher"-Semaphors, ab. Die Kombination der Setzung der Verzweigungssperre und des Verzweigungsspeichers signalisiert den anderen Prozessoren, daß eine parallele Ausführung möglich ist.
- Während der ausgewählte Prozeß in dem Prozessor 24 ausgeführt wird, sind alle anderen Prozessoren, die keine Prozesse ausführen, in einem Leerlaufzustand. Während des Leerlaufzustands zählt jeder dieser Prozessoren ein Adressregi ster herauf, um sequentiell bestimmte Semaphor-Register innerhalb der Kommunikationsregister 46 zu überprüfen. Die Prozessoren im Leerlaufzustand suchen kontinuierlich nach Semaphoren, die gesetzt sind, um anzuzeigen, daß parallele Operationen zur Ausführung bereitstehen. Wenn ein Leerlauf- Prozessor, z. B. Prozessor 26, feststellt, daß ein Semaphor innerhalb des Blocks 46 A gesetzt worden ist, um anzuzeigen, daß parallele Operationen verfügbar sind, dann liest der Prozessor 26 die Prozeßstatusinformation aus dem Block 46A und beginnt auf der Grundlage dieser Prozeßstatusinformation mit dem Ausführen eines parallelen Pfades den Prozesses, wie oben definiert. Der Zugriff auf die Prozeßstatusinformation erlaubt es dem Prozessor 26, unmittelbar mit der Ausführung von Prozeßinstruktionen durch Zugriff auf den Hauptspeicher 22 zu beginnen. In den meisten Fällen wird der Prozessor 24 einen ersten der parallelen Pfade für den ausgewählten Prozeß ausgeführt haben. Nachdem Pfade durch die Prozessoren 24 und 26 gestartet wurden, kann jeder andere Prozessor, der in einem Leerlaufzustand ist, ebenfalls zusätzliche Pfade zur Ausführung aufnehmen. Am Ende einer Pfadausführung begegnet der den Pfad ausführende Prozessor einer "Verbindungs"-Instruktion (Join). Jeder Prozessor, der das Verbinden ausführt, ersetzt eine Flagge in einer Pfadzuordnungsmaske (unten beschrieben) und zählt einen zugehörigen Pfadzähler (unten beschrieben) herunter. Beide Parameter sind an Stelle 0017 des Kommunikationsregistersatzes 46A. Der letzte Prozessor, der eine Verbindungsinstruktion ausführt, erkennt sie als die letzte Verbindungsinstruktion, weil der Pfadzähler 1 ist, und dieser Prozessor fährt mit der seriellen Ausführung des Prozesses fort. Es ist zu bemerken, daß dieser letzte Prozessor jeder beliebige Prozessor in dem System sein kann und nicht notwendigerweise derjenige sein muß, der ursprünglich die Verzweigung gespeichert hat. Sollte dieser letzte Prozessor einer weiteren Parallelisierungsinstruktion begegnen, wird der oben beschriebene Vorgang wiederholt. Es ist zu bemerken, daß, wenn keiner der Prozessoren im Leerlaufzustand ist, der Prozessor 24 dann jeden der Pfade des ausgewählten Prozesses sequentiell abarbeiten wird. Daher führt das Computersystem der vorliegenden Erfindung parallele Operation auf Basis einer Einladung und nicht auf Befehl aus.
- Eine detailliertere Beschreibung der Funktionsweise der vorliegenden Erfindung und ihrer Rechnerarchitektur wird weiter unten gegeben.
- Bezugnehmend nun auf Fig. 2 ist ein schematisches Diagramm für die Speicher-/Kommunikationsregistersteuerung 24 aus Fig. 1 dargestellt. Diese Steuerung arbeitet in Verbindung mit der vektoriellen und der skalaren Prozessoreinheit 24A und 24B, um Adressen zu generieren und Daten von und zu sowohl den Kommunikationsregistern 46 als auch dem Hauptspeicher 22 zu übertragen. Die vektorielle Prozessoreinheit 24A und die skalare Prozessoreinheit 24B führen Makroinstruktionen durch Anwendung von Mikrocode aus, der selbst decodiert wird, um die Operationen mit verschiedenen Logikeinheiten und Registern in dem Prozessor zu befehlen. Diese Befehlsausführung ist in der Industrie üblich.
- Innerhalb der Steuerung 24C ist eine Registerdatei vorgesehen, die so angeschlossen ist, um Daten und Adressen zwischen dem Prozessor 24 und den Kommunikationsregisterbussen 50, 51 und 52 zu übertragen. Es ist ferner eine ALU 62 vorgesehen, die die durch die Prozeßinstruktionen geforderte Adreßarithmetik ausführen kann. Die Registerdatei 60 empfängt Steuerungsbefehle aus decodierten Mikroinstruktionen, die durch die Prozessoreinheiten 24A und 24B erzeugt werden. Die besonderen Steuerleitungen sind nicht dargestellt, dieselben sind in der Industrie jedoch wohlbekannt. Die Steuerung 24 enthält weiter ein Literalregister 64, das Adreßinformationen aus Prozeßinstruktionen empfängt. Das Literalregister 64 ist so angeschlossen, um eine zweite Eingabe für die ALU 62 vorzusehen.
- Die Ausgabe aus der ALU 62 ist ein 16 Bit Adressensegment, das durch die Instruktionen für einen ausgewählten Prozeß erzeugt wird, der durch einen Prozessor ausgeführt wird. Dieses Adressensegment wird streng durch die Prozeßsoftware erzeugt. Dieses Adressensegment wird nach der Erzeugung in der Registerdatei 60 gespeichert, bevor dasselbe zu dem Adreßbus 52 übertragen wird.
- Die Steuerung 24 enthält weiter ein Kommunikationsindexregister 66, das einen Kommunikationsregisterindexwert in sich speichert. Das Register 66 ist unabhängig von der Prozeßsoftware, d. h. es kann nicht durch irgendeine Prozeßinstruktion gesetzt oder gelesen werden. Das Register 66 arbeitet ausschließlich in Reaktion auf Mikroinstruktionen, die durch einen Prozessor ausgeführt werden, wenn er in dem Leerlaufzustand ist. Diese Mikrocode-Operation wird weiter in Verbindung mit Fig. 4 beschrieben. Wenn ein Prozessor, wie etwa Prozessor 24, in einem Leerlaufzustand ist, führt er wiederholt eine Folge von Operationen aus, die als Leerlaufschleife bekannt ist. Eine der in dieser Leerlaufschleife ausgeführten Operationen besteht darin, die Verzweigungsspeicher-Semaphore (siehe Fig. 3) der verschiedenen Kommunikationsregistersätze durchzugehen, wobei dieselbe nach einem parallelen Segment sucht, bei dem dieselbe bei der Ausführung teilnehmen kann. Dieselbe führt dieses Durchgehen unter Verwendung eines speziellen Satzes von Adressen durch, der dem Mikrocode aber nicht den Anwenderprogrammen zur Verfügung steht. Der Prozessor zeigt sein Recht zur Benutzung dieser speziellen Adressen an, indem er den Inhalt seines Schutzstatusflaggenregisters 65 über den Schutzstatusbus 55 zu der Prüfschaltung 57 schickt. Diese Statusflagge ist in einem Statuszustand, wenn ein Anwenderprozeß in einem Prozessor ausgeführt wird, und ist in einem anderen Zustand, wenn das Betriebssystem oder eine Leerlaufschleife in dem Prozessor ausgeführt wird.
- Die Ausgaben des Kommunikationsindexregisters 66, des Kommunikationsregisteradreßbusses 52 und der Schutzstatusflaggenschaltung 65 werden zu der Kommunikationsregister-Adreßabbildungs-/Prüfschaltung 57 geleitet. Die Schaltung 57 un tersucht die empfangene Adresse um sicherzustellen, daß sie Kommunikationsregister adressiert, die physikalisch vorhanden sind und für die die Schutzstatusflagge den Zugriff erlaubt. Anwenderprogramme dürfen nicht auf die durch Mikrocode und das Betriebssystem verwendeten Register zugreifen. Die Schaltung 57 fügt auch ausgewählte Adreßbits mit Adreßbits des Kommunikationsadreßregisters 66 zusammen, um eine zusammengesetzte 10-Bitadresse zu erzeugen, um ein ausgewähltes Kommunikationsregister zu adressieren. Die Schaltung 57 kombiniert ein erstes, prozeßunabhängiges Adressegment aus dem Register 66 mit einem zweiten, prozeßabhängigen Adressegment aus der ALU 62, um eine zusammengesetzte Adresse zum Adressieren eines Registers in dem Register 46 zu erzeugen.
- Es wird nun auf Fig. 3 Bezug genommen, worin die in einem Block innerhalb des Kommunikationsregisters 64 gespeicherten Informationen detailliert gezeigt sind. In der vorliegenden Ausführungsform enthält der Block 46A 128 64 Bit Register. Der Block 46 enthält Prozeßstatusinformationen, die durch einen ablaufenden Prozeß eingestellt werden und es einem anderen Prozessor erlauben, eine Prozeßoperation, die durch den in dem Block gespeicherten Prozeßstatus definiert ist, parallel aufzunehmen und auszuführen.
- Die in einem Kommunikationsregisterblock, wie z. B. 46A gespeicherten, spezifischen Informationen sehen wie folgt aus:
- (1) Speicherplätze 000A-000D sind der "Verzweigungsblock". Sie enthalten Informationen, die durch einen eine Parallelisierungsinstruktion ausführenden Prozessor erzeugt werden, um es anderen Prozessoren zu ermöglichen, ein paralleles Codesegment des ausgeführten Prozesses auszuführen.
- (2) Speicherplätze 000E-0011 enthalten Segmentbeschreibungsregister (SDR). Sie bilden die oberste Stufe des Prozeß- Speicherabbildungsbaums und werden sowohl für die serielle als auch für die parallele Ausführung benötigt.
- (3) Speicherplätze 0012-0016 enthalten Trap-Instruktions- Register, was spezielle Bitflags zur Fehlersuche in auf mehreren Prozessoren laufenden Programmen sind.
- (4) Speicherplatz 0017 enthält Pfadzuordnungs-Steuerungsinformationen. Die Pfadzuordnungsmaske enthält ein Bit für jeden möglichen physischen Pfad in dem Prozeß. Die zugeordnete Pfadzahl beschreibt die Anzahl der momentan ausgeführten Pfade. Ein sich selbst zuordnender Prozessor löscht ein Bit in der Pfadmaske und zählt die Pfadzahl herauf. Der Prozessor verfährt umgekehrt, wenn er die Zuordnung auflöst.
- (5) Speicherplätze 0018-001F enthalten Zeitwerte, die die Ausführungszeit auf jeder CPU des Prozesses überwachen, der von diesem Kommunikationsregistersatz aus läuft. Diese Informationen werden zur Kontoführung benutzt.
- 6) Speicherplätze 4000-401F sind zur Verwendung durch das Betriebssystem reserviert.
- (7) Speicherplätze 8000-803F sind für die Anwenderprozeßanwendung reserviert. Die Zuordnung dieser Register wird für einen typischen Prozeß automatisch durch den Compiler durchgeführt.
- Alle Register werden während der Prozeßerzeugung durch das Betriebssystem initialisiert. Darauf werden die obigen Ziffern 1, 3, 4, 5 und 6 durch das Betriebssystem und durch Mikrocode während der Ausführung den Prozesses manipuliert. Obiger Punkt 7 wird direkt durch den Anwenderprozeß gesteuert.
- Wenn ein Prozeß in einem Prozessor ausgeführt wird und eine Parallelisierungsinstruktion auftritt, verursacht die Ausführung der Parallelisierungsinstruktion, daß zusätzliche Statusinformationen in den entsprechenden Kommunikationsregisterblock geschrieben werden. Die durch eine Parallelisierungsinstruktion in den Block geschriebenen Informationen werden als "Verzweigungsblock"-Informationen bezeichnet. Die innerhalb des Verzweigungsblocks, welcher durch einen Prozessor geschrieben wird, der andere Prozessoren zur Teilnahme an der parallelen Ausführung eines Codesegments einlädt, enthaltenen Informationen sind folgende:
- fork. FP Anfangsblockzeiger, der durch den neuen Pfad verwendet werden soll.
- fork. AP Anfangsargumentzeiger, der durch den neuen Pfad verwendet werden soll.
- fork. PC Adresse der ersten Instruktion, die durch den neuen Pfad ausgeführt werden soll.
- fork. PSW Anfangs-Programmstatuswort, das durch den neuen Pfad verwendet werden soll.
- fork. Source PC Adresse der Instruktion, die den Verzweigungs- oder Gabelungsbefehl aufgestellt hat.
- fork. type Definiert, ob eine Verzweigungs- oder Gabelungsinstruktion den neuen Pfad erzeugt hat (eine Verzweigungsinstruktion lädt nur einen Prozessor zur Teilnahme an der parallelen Ausführung ein, während eine Gabelung mehr als einen Prozessor zur Teilnahme am Parallelbetrieb einlädt.)
- fork. SP Anfangs-Stapelzeiger das neuen Pfades.
- Ferner wird das dem fork. FP zugeordnete Semaphor als "Verzweigungssperre"-Flagge verwendet, und das dem fork. SP zugeordnete Semaphor wird als "Verzweigungsspeicher"-Flagge verwendet. Wenn die Verzweigungssperre-Flagge gesetzt ist, zeigt sie an, daß eine Verzweigung durch einen Prozessor gespeichert oder aufgenommen wird, und daß kein anderer Prozessor auf den Verzweigungsblock zugreifen sollte, bis die Flagge gelöscht ist. Wenn die Verzweigungsspeicher-Flagge gesetzt ist, zeigt sie an, daß eine gültige Verzweigung gespeichert ist und daß ein leerlaufender Prozessor eingeladen ist, die Verzweigung aufzunehmen.
- Wenn ein leerlaufender Prozessor festgestellt hat, daß ein Semaphor gesetzt worden ist und daß parallele Operationen zur Verfügung stehen, sind alle erforderlichen Informationen, um mit der Ausführung dieser Oparation zu beginnen, in einem Block des Kommunikationsregisters, wie oben und in Bezug auf Fig. 3 beschrieben, vorhanden.
- Es wird nun auf Fig. 4 Bezug genommen, worin ein Mikrocode System 80 zur Verwendung in den Prozessoren der vorliegenden Erfindung gezeigt ist. Das System 80 ist in jeder skalaren Prozessoreinheit für jeden Prozessor, wie z. B. 24 und 26, implementiert. Prozeß-Makroinstruktionen werden aus dem Hauptspeicher abgeleitet und zu einem Instruktionsverteilerübersetzer 82 geliefert. Der Übersetzer erzeugt eine erste Mikroinstruktionsadresse für jede Makroinstruktion über eine Leitung 84 zu einem ersten Eingang eines Multiplexers 86. Die erste Mikroinstruktionsadresse wird dann durch eine Leitung 88 zu einem Mikrocode-Steuerspeicher 90 geliefert. Die erste Mikroinstruktion wird dann durch eine Leitung 92 zu einem Mikrocode-Instruktionsregister 94 geleitet, das auch als Decoder arbeitet. Wenn eine Mikrocode-Instruktion dekodiert wird, werden Steuersignale erzeugt, die auf Register und andere Logikeinheiten innerhalb des Prozessors gerichtet sind. Verschiedene beispielhafte Steuerleitungssignale sind durch gestrichelte Linien in Fig. 2 und 4 gezeigt.
- Nachdem die erste Mikroinstruktion aus der Tabelle 82 gesendet und in dem Register 94 dekodiert ist, werden nachfolgen de Mikroinstruktionen durch den Mikrocode-Steuerspeicher 90 ausgegeben, um die Ausführung der entsprechenden Makroinstruktion abzuschließen. Die nächste Mikrocode-Adresse und Modifizierer werden durch das Register 94 erzeugt und über eine Leitung 96 zu einer nächsten Adreßlogikschaltung 98 übertragen. Die Leitung 96 ist auch an einen Multiplexer 99 angeschlossen, der verschiedene Prozeßstatusinformationen von einer Mehrzahl von Leitungen empfängt, einschließlich Leitung 49, die der Semaphorstatus von den Kommunikationsregistern ist. Dieser Status kann während Zugriffen auf das Kommunikationsregister nachgewiesen werden, um den Mikrocode zu veranlassen, in Abhängigkeit vom Semaphorstatus bedingt zu verzweigen. Dies erlaubt es z. B., daß der Mikrocode in der Leerlaufschleife des Prozessors feststellen kann, ob ein Verzweigungssemaphor gespeichert worden ist oder nicht, um andere Prozessoren zur Teilnahme an der Ausführung eines parallelen Prozeßsegments einzuladen.
- Wenn irgendeiner der Prozessoren in dem System 20, wie etwa Prozessor 24 oder 26, keinen Prozeß ausführt, wird dieser Prozessor, wie oben bemerkt, in einen Leerlaufmodus versetzt, der die Ausführung einer Mikrocode-Leerlaufschleife bewirkt. Als ein Schritt in dieser Mikrocode-Leerlaufschleife wird das Kommunikationsindexregister 66 während jeder Schleife durch ein Steuersignal von dem Register 94 zu dem Kommunikationsindexregister 66 um eine Einheit heraufgezählt. Das Register 66 hat in einer ausgewählten Ausführungsform drei Bits, was eine Adressierbarkeit von acht Blöcken 46A-46H ermöglicht. Die 16 Adreßbits wählen ein bestimmtes Register in dem ausgewählten Block während der normalen Prozeßausführung aus, aber zusätzlich ist ein spezieller Bereich von Adressen für den Mikrocode verfügbar, der es ihm ermöglicht, auf jede beliebige Adresse in irgendeinem der Blöcke zuzugreifen. Folglich ist der Leerlaufmodusbetrieb mit einem kontinuierlichen Abtasten des "Verzweigungsspeicher"-Semophors in jedem der Blöcke bei der Suche nach einem gesetzten Semaphor verbunden. Wenn ein solches Semophor erfaßt wird, wird der entsprechende Wert des Kom munikationsindexregisters (CIR) in dem CIR-Register 66 gehalten. Der Prozessor fährt dann fort, die in dem ausgewählten Block gespeicherte Prozeßstatusinformationen zu verwenden, um mit dem Start eines Prozeßpfades zu beginnen. Während der Ausführung den Prozesses werden verschiedene Adreßinformationen für die Kommunikationsregister erzeugt, dies weist jedoch lediglich 16 Adreßbits auf, die einen Speicherplatz innerhalb eines Blocks definieren, aber nicht definieren, welcher Block adressiert werden soll. Die Adreßinformation für den bestimmten Block wird durch das Adreßsegment, welches in dem Kommunikationsindexregister 66 gespeichert ist, definiert. Folglich arbeitet der Prozeß unabhängig von und ohne Wissen von dem speziellen Block, der die Prozeßstatusinformationen aufweist. Die Identifizierung des bestimmten Blocks wird vollständig unabhängig von den Prozeßinstruktionen ausgeführt. Die Prozeßausführung ist ferner unabhängig von dem bestimmten Prozessor, in dem der Prozeß ausgeführt wird.
- Die vorliegende Erfindung erfordert die Verwendung von Parallelisierungsinstruktionen, die innerhalb das Objektcodes enthalten sind, der durch die Prozessoren ausgeführt wird. In Anhang I ist eine Auflistung eines Quellcodes in FORTRAN für einen Prozeß dargestellt, der eine Matrixmultiplikation durchführt. Vor der Multiplikation löschen die Programminstruktionen einen Speicherbereich. Sowohl die Multiplikations- als auch die Lösch-Operationen betreffen "Do"-Schleifen, die ein besonderer Typ von Instruktionen sind, der besonders einer Parallelisierung unterworfen ist.
- Wenn der in Anhang I gezeigte Quellcode kompiliert wird, wird eine Objektcodeauflistung erzeugt, die in Anhang II gezeigt ist. Unter dem mit INSTRUKTIONEN bezeichneten Abschnitt, in etwa der 13. Zeile darunter, befindet sich eine als "Spawn" bezeichnete Instruktion. Dies ist eine Parallelisierungsinstruktion. Die Gabelungsinstruktion (Spawn) entspricht nicht einem bestimmten Befehl in der Quellsprache, sondern resultiert aus einer Analyse das Compilers von möglichen Datenabhängigkeiten der verschiedenen Iterationen, die durch die Schleife ausgeführt werden, welche durch den Continue-Befehl beim Quellzeichen 10 abgeschlossen wird. Diese spezielle Gabelung (Spawn) hat eine maximale logische Pfadzahl von 100, da alle Iterationen der Schleife 10 parallel ausgeführt werden können. Wie zuvor diskutiert, wird die physische Pfadzahl zum Zeitpunkt der Ausführung durch das Betriebssystem als eine Funktion von vorgegebenen Zuordnungsparametern festgesetzt.
- Vor der Ausführung jeder Iteration einer parallelen Operation, greift ein teilnehmender Prozessor auf ein bestimmtes Kommunikationsregister (hier Register 8000) zu und bestimmt, ob noch eine andere Iteration auszuführen ist oder nicht. Wenn keine Iteration mehr vorhanden ist, dann wird der Prozessor zu der der Bezeichnung L6 folgenden Verbindungsinstruktion (Join) abzweigen und dieselbe ausführen. Während der Ausführung der Verbindungsinstruktion wird der Prozessor bestimmen, ob er der letzte Prozessor beim Abschluß eines Pfades ist oder nicht. Wenn nicht, geht er in den Leerlaufzustand über und beginnt mit der Suche nach einem parallelen Prozeß, bei dem er zur Ausführung teilnehmen kann. Wenn er der letzte Prozessor ist, der einen parallelen Pfad ausführt, beginnt er mit der Ausführung des seriellen Pfades, der der Verbindung folgt.
- Es sei bemerkt, daß, wie in unserem Beispiel, der Code unmittelbar mit einem anderen parallelen Segment beginnen und sich wieder aufgabeln kann, um eine parallele Ausführung zu ermöglichen.
- Infolge dieser Gabelungsinstruktion wird ein Semaphorregister gesetzt, um jeden verfügbaren Prozessor zur parallelen Ausführung der Do-Schleife einzuladen. Die Parameter für die parallele Ausführung werden in den in Fig. 3 gezeigten Kommunikationsregisterblock geladen. Diese bestimmte Gabelungsinstruktion ("Spawn") wird durch eine Verbindungsinstruktion ("Join") etwa 13 Zeilen später abgeschlossen. Jeder Prozes sor, der einen Pfad zur Ausführung aufnimmt, führt die erforderlichen Prozeßoperationen durch und begegnet dann der Verbindungsinstruktion. Diese Instruktion "Join" veranlaßt den Prozessor, zu überprüfen, ob er den letzten Pfad ausführt oder nicht. Wenn nicht, fällt er in den Leerlaufzustand zurück, wobei derselbe nach einem anderen parallelen Prozeß zur Ausführung sucht. Wenn er der letzte ist, dann beginnt er mit der Ausführung des seriellen Pfades, der der Verbindung folgt.
- Genau vor der mit "L7" bezeichneten Zeile befindet sich eine weitere Gabelungsinstruktion ("Spawn"), die anzeigt, daß die Operationen in dem mit "20" bezeichneten Quellbefehl parallel ausgeführt werden können. Diese Gabelungsinstruktion wird durch eine Verbindungsinstruktion ("Join") nahe dem Ende der Auflistung abgeschlossen.
- Die Funktionsweise der vorliegenden Erfindung wird nun unter Bezugnahme auf die Figuren und insbesondere auf Fig. 5 weiter beschrieben. Fig. 5 stellt ebenfalls das Pfadkonzept der Prozeßausführung dar. Wie in dieser Figur dargestellt, wird ein Prozeß A seriell als ein einzelner Pfad 110 durch den Prozessor P0 ausgeführt. Die Prozessoren P1 und P3 sind im Leerlauf. Ein Prozeß B ist in Ausführung durch den Prozessor P2. Zum Zeitpunkt T1 führt Prozessor P0 eine Gabelungsinstruktion ("Spawn") im Prozeß A aus. Die Prozeßstatusinformationen für die parallele Ausführung des Codes in Prozeß A werden in einen entsprechenden Kommunikationsregistersatz geschrieben. Die leerlaufenden Prozessoren P1 und P3 erfassen das Semaphor, das in dem Kommunikationsregistersatz gesetzt ist, und nehmen die Pfade 116 und 118 zur Ausführung auf. Prozessor P1 übernimmt den Pfad 114 zur Ausführung und, bis zum Zeitpunkt T2, führen die Prozessoren P0, P1 und P3 parallel Code für Prozeß A aus.
- Zum Zeitpunkt T2 schließt der Prozessor P2 den Prozeß B ab und geht in den Leerlaufzustand über. Prozessor P2 nimmt dann einen Pfad 120 von Prozeß A an und wird der vierte Prozessor bei der gleichzeitigen Ausführung von Prozeß A.
- Zum Zeitpunkt T3 empfängt Prozessor P3 einen Unterbrechungsbefehl und beginnt mit der Ausführung das Betriebssystems. Dies dauert bis zum Zeitpunkt T4, zu dem der Prozessor P3 zur Ausführung des Pfades 118 zurückkehrt.
- Der Prozessor P0 schließt die Ausführung das Pfades 114 zum Zeitpunkt T5 ab und führt eine Verbindungsinstruktion ("Join") aus. Da die anderen Prozessoren immer noch Pfade von Prozeß A ausführen, geht Prozessor P0 in den Leerlaufzustand.
- Die Prozessoren P1 und P3 schließen die Ausführung der Pfade 116 und 118 zum Zeitpunkt T6 ab und gehen in den Leerlaufzustand über, da der Prozessor P2 immer noch den Pfad 120 von Prozeß A ausführt.
- Zu einem Zeitpunkt T7 schließt der Prozessor P2 die Ausführung von Pfad 120 ab und führt eine Verbindungsinstruktion ("Join") aus. Da keine anderen Prozessoren mehr einen Teil von Prozeß A ausführen, beginnt Prozessor P2 mit der seriellen Ausführung von Prozeß A mit einem Pfad 124.
- Zum Zeitpunkt T8 tritt ein Unterbrechungsbefehl für den Prozessor P0 auf, um diesen Prozessor zur Ausführung das Betriebssystems zu veranlassen. Zum Zeitpunkt T9 beginnt der Prozessor P0 mit der Ausführung eines neuen Programms C mit einem Pfad 126.
- Wie aus der obigen Beschreibung erkennbar ist, kann ein einzelner Prozeß auf einem oder mehreren Prozessoren ausgeführt werden, und nach einer Aufgabelung kann der ursprüngliche Prozeß auf einem anderen Prozessor fortgeführt werden. Der Prozeß selbst weiß nicht, welcher Prozessor den Prozeß ausführt oder wieviele Prozessoren den Prozeß ausführen. Diese Verfahrensweise schafft eine wesentliche Flexibilität des Computersystems und eine verbesserte Ausnutzung der mehreren Prozessoren.
- Obwohl eine Ausführungsform der Erfindung in den folgenden Zeichnungen dargestellt und in der vorhergehenden detaillierten Beschreibung beschrieben wurde, ist es offensichtlich, daß die Erfindung nicht auf das offenbarte Ausführungsbeispiel beschränkt ist, sondern zu einer Vielzahl von Neuanordnungen, Abwandlungen und Ersetzungen in der Lage ist. ANHANG I ANHANG II
Claims (4)
1. Ein Computersystem (20) mit mehreren Prozessoren (24,
26) zur parallelen Ausführung eines Prozesses, wobei
das System (20) ferner eine Mehrzahl von
Kommunikationsregistersätzen (46A-46H) aufweist, wobei jeder
Satz eine Mehrzahl von Kommunikationsregistern
aufweist, und mindestens ein jeweiliges Semaphorregister
(48) einem Register in jedem der
Kommunikationsregistersätze (46A-46H) zugeordnet ist, dadurch
gekennzeichnet, daß das System (20) ferner folgende Merkmale
aufweist:
ein jeweiliges Kommunikationsindexregister (66), das
jedem der Prozessoren (24, 26) zugeordnet ist, wobei
jedes der Kommunikationsindexregister (66) zum
Speichern eines prozeßunabhängigen
Kommunikationsindexregister- (66) Werts in demselben dient, der ein erstes
Adresssegment aufweist, und dazu dient, um einen der
Kommunikationsregistersätze (46A-46H) zu adressieren,
wobei die Kommunikationsindexregister- (66) Werte durch
Instruktionen in dem Prozeß nicht eingestellt oder
gelesen werden;
eine jeweilige Logikschaltung, die jedem der
Prozessoren (24, 26) zugeordnet ist, zum Erzeugen eines zweiten
Adressegments, das aus der Ausführung von Instruktionen
in dem Prozeß abgeleitet wird, wobei das zweite
Adresssegment als eine Adresse für eines der Register in
jedem der Kommunikationsregistersätze dient;
Busschaltungen (52, 53, 55), die mit den
Kommunikationsregistern, den Semaphorregistern (48), den
Kommunikationsindexregistern (66) und den Logikschaltungen
verbunden sind, zum Übertragen von Adressen und Daten,
die den Kommunikationsregistern und den
Semaphorregistern (48) zugeordnet sind; und
eine Adresschaltung, die über eine oder mehrere der
Busschaltungen (52, 53, 55) mit den
Kommunikationsindexregistern (66) und den Logikschaltungen verbunden
ist, zum Empfangen des ersten und des zweiten
Adresssegments und zum Erzeugen einer zusammengesetzten
Adresse daraus, die einem der Register innerhalb einem
der Kommunikationsregistersätze (46A-46H) entspricht,
wobei ein erster der Prozessoren (24, 26), wenn
derselbe auf eine Parallelisierunganweisung während der
Ausführung des Prozesses trifft, über eine oder mehrere
der Busschaltungen (52, 53, 55) mit einem ausgewählten
der Kommunikationsregistersätze (46A-46H) unter
Verwendung von mindestens dem prozeßunabhängigen ersten
Adresssegment kommuniziert, um
Prozeßzustandsinformationen in demselben zu speichern, und um einen Zustand
des zugeordneten Semaphorregisters (48) einzustellen,
und wobei ein zweiter der Prozessoren (24, 26) über
eine oder mehrere der Busschaltungen (52, 53, 55)
verbunden ist, um mit dem ausgewählten einen
Kommunikationsregistersatz (46A-46H) unter Verwendung von mindestens
dem prozeßunabhängigen ersten Adressegment zu
kommunizieren, um den Zustand des zugeordneten
Semaphorregisters (48) abzutasten, und um die
Prozeßzustandsinformationen von demselben zu lesen, wenn das
Semaphorregister (48) derart eingestellt ist, daß der erste und
der zweite Prozessor (24, 26) den Prozeß parallel
ausführen können.
2. Das Computersystem (20) mit mehreren Prozessoren (24,
26) gemäß Anspruch 1, dadurch gekennzeichnet, daß das
System (20) ferner folgende Merkmale aufweist:
eine jeweilige Mikrocodeoperationsschaltung (80), die
jedem der Prozessoren (24, 26) zugeordnet ist, wobei
die Mikrocodeoperationsschaltung (80) mit dem
Kommu
nikationsindexregister (66) für den entsprechenden
Prozessor verbunden ist, um periodisch den Wert zu
inkrementieren, der in demselben gespeichert ist, wenn sich
der entsprechende Prozessor in einem Leerlaufzustand
befindet, und wobei die Mikrocodeoperationsschaltung
(80) ferner verbunden ist, um die Semaphorregister (48)
unter Verwendung von mindestens dem ersten Adressegment
zu lesen.
3. Das Computersystem (20) mit mehreren Prozessoren (24,
26) gemäß Anspruch 1 oder 2, bei dem mindestens ein
zweites Semaphorregister (48) ferner jedem der
Kommunikationsregistersätze (46A-46H) zugeordnet ist, und
über eine oder mehrere der Busschaltungen (52, 53, 55)
derart verbunden ist, daß das zweite Semaphorregister
(48) durch einen der Prozessoren (24, 26) eingestellt
werden kann, um einen Zugriff auf den entsprechenden
Kommunikationsregistersatz durch andere Prozessoren
(24, 26) zu verhindern.
4. Das Computersystem (20) mit mehreren Prozessoren (24,
26) gemäß Anspruch 1, 2 oder 3, bei dem die
Logikschaltung eine arithmetische Logikeinheit (62) aufweist, die
auf die Prozeßanweisungen anspricht, um daraus das
zweite Adressegment zu erzeugen.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/161,768 US5050070A (en) | 1988-02-29 | 1988-02-29 | Multi-processor computer system having self-allocating processors |
Publications (2)
Publication Number | Publication Date |
---|---|
DE68928848D1 DE68928848D1 (de) | 1998-12-10 |
DE68928848T2 true DE68928848T2 (de) | 1999-06-10 |
Family
ID=22582640
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE68928848T Expired - Fee Related DE68928848T2 (de) | 1988-02-29 | 1989-01-25 | Multi-Prozessor-Rechnersystem mit prozessunabhängiger Adressierung von Kommunikationsregistern |
DE68921906T Expired - Lifetime DE68921906T2 (de) | 1988-02-29 | 1989-01-25 | Verfahren für ein Multiprozessorsystem mit sich selbst zuordnenden Prozessoren. |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE68921906T Expired - Lifetime DE68921906T2 (de) | 1988-02-29 | 1989-01-25 | Verfahren für ein Multiprozessorsystem mit sich selbst zuordnenden Prozessoren. |
Country Status (3)
Country | Link |
---|---|
US (1) | US5050070A (de) |
EP (2) | EP0330836B1 (de) |
DE (2) | DE68928848T2 (de) |
Families Citing this family (86)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5261108A (en) * | 1988-10-08 | 1993-11-09 | Nec Corporation | Multiprocessor communications register providing complete access in a full access mode, and mapped access in a partial access mode |
DE69031233T2 (de) * | 1989-02-24 | 1997-12-04 | At & T Corp | Adaptive Arbeitsfolgeplanung für Mehrfachverarbeitungssysteme |
US5353418A (en) * | 1989-05-26 | 1994-10-04 | Massachusetts Institute Of Technology | System storing thread descriptor identifying one of plural threads of computation in storage only when all data for operating on thread is ready and independently of resultant imperative processing of thread |
WO1990014629A2 (en) * | 1989-05-26 | 1990-11-29 | Massachusetts Institute Of Technology | Parallel multithreaded data processing system |
US5127092A (en) * | 1989-06-15 | 1992-06-30 | North American Philips Corp. | Apparatus and method for collective branching in a multiple instruction stream multiprocessor where any of the parallel processors is scheduled to evaluate the branching condition |
DE3923872A1 (de) * | 1989-07-19 | 1991-01-24 | Philips Patentverwaltung | Schaltungsanordnung zum steuern des zugriffs auf einen speicher |
US5249293A (en) * | 1989-06-27 | 1993-09-28 | Digital Equipment Corporation | Computer network providing transparent operation on a compute server and associated method |
US5247676A (en) * | 1989-06-29 | 1993-09-21 | Digital Equipment Corporation | RPC based computer system using transparent callback and associated method |
US5430876A (en) * | 1989-06-27 | 1995-07-04 | Digital Equipment Corporation | Remote procedure callback system and method |
EP0422310A1 (de) * | 1989-10-10 | 1991-04-17 | International Business Machines Corporation | Verteilter Mechanismus für die schnelle Planung von gemeinsamen Objekten |
JPH0640324B2 (ja) * | 1989-10-26 | 1994-05-25 | インターナショナル・ビジネス・マシーンズ・コーポレーション | マルチプロセッサ・システムおよびそのプロセス同期方法 |
US5263169A (en) * | 1989-11-03 | 1993-11-16 | Zoran Corporation | Bus arbitration and resource management for concurrent vector signal processor architecture |
US5179702A (en) * | 1989-12-29 | 1993-01-12 | Supercomputer Systems Limited Partnership | System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling |
US5524255A (en) * | 1989-12-29 | 1996-06-04 | Cray Research, Inc. | Method and apparatus for accessing global registers in a multiprocessor system |
JPH04219859A (ja) * | 1990-03-12 | 1992-08-10 | Hewlett Packard Co <Hp> | 並列プロセッサに直列命令ストリームデータを分散するハードウェアディストリビュータ |
DE69130588T2 (de) * | 1990-05-29 | 1999-05-27 | National Semiconductor Corp., Santa Clara, Calif. | Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür |
US5339415A (en) * | 1990-06-11 | 1994-08-16 | Cray Research, Inc. | Dual level scheduling of processes to multiple parallel regions of a multi-threaded program on a tightly coupled multiprocessor computer system |
JP2818016B2 (ja) * | 1990-08-09 | 1998-10-30 | 株式会社日立製作所 | プロセス並列実行方法および装置 |
US5381540A (en) * | 1990-08-13 | 1995-01-10 | Dallas Semiconductor Corporation | Interface: interrupt masking with logical sum and product options |
US5349680A (en) * | 1990-11-07 | 1994-09-20 | Kabushiki Kaisha Toshiba | Information processing apparatus for executing application programs under control of a system program |
US5257372A (en) * | 1990-12-19 | 1993-10-26 | Cray Research, Inc. | Methods for efficient distribution of parallel tasks to slave processes in a multiprocessing system |
US5434970A (en) * | 1991-02-14 | 1995-07-18 | Cray Research, Inc. | System for distributed multiprocessor communication |
US5430850A (en) * | 1991-07-22 | 1995-07-04 | Massachusetts Institute Of Technology | Data processing system with synchronization coprocessor for multiple threads |
US5895489A (en) * | 1991-10-16 | 1999-04-20 | Intel Corporation | Memory management system including an inclusion bit for maintaining cache coherency |
US5349682A (en) * | 1992-01-31 | 1994-09-20 | Parallel Pcs, Inc. | Dynamic fault-tolerant parallel processing system for performing an application function with increased efficiency using heterogeneous processors |
CA2106280C (en) * | 1992-09-30 | 2000-01-18 | Yennun Huang | Apparatus and methods for fault-tolerant computing employing a daemon monitoring process and fault-tolerant library to provide varying degrees of fault tolerance |
US5892944A (en) * | 1993-07-20 | 1999-04-06 | Kabushiki Kaisha Toshiba | Program execution and operation right management system suitable for single virtual memory scheme |
DK0635784T3 (da) * | 1993-07-23 | 2000-03-27 | Siemens Ag | Multiprocessorsystem. |
JPH0784973A (ja) * | 1993-09-16 | 1995-03-31 | Fujitsu Ltd | マルチ処理プロセッサ制御装置および制御方法 |
US5537542A (en) * | 1994-04-04 | 1996-07-16 | International Business Machines Corporation | Apparatus and method for managing a server workload according to client performance goals in a client/server data processing system |
US5473773A (en) * | 1994-04-04 | 1995-12-05 | International Business Machines Corporation | Apparatus and method for managing a data processing system workload according to two or more distinct processing goals |
US5606666A (en) * | 1994-07-19 | 1997-02-25 | International Business Machines Corporation | Method and apparatus for distributing control messages between interconnected processing elements by mapping control messages of a shared memory addressable by the receiving processing element |
US6327607B1 (en) | 1994-08-26 | 2001-12-04 | Theseus Research, Inc. | Invocation architecture for generally concurrent process resolution |
US5550970A (en) * | 1994-08-31 | 1996-08-27 | International Business Machines Corporation | Method and system for allocating resources |
US6009454A (en) * | 1994-09-30 | 1999-12-28 | Allen-Bradley Company, Llc | Multi-tasking operation system for industrial controller |
US5740350A (en) * | 1995-06-30 | 1998-04-14 | Bull Hn Information Systems Inc. | Reconfigurable computer system |
US5696939A (en) * | 1995-09-29 | 1997-12-09 | Hewlett-Packard Co. | Apparatus and method using a semaphore buffer for semaphore instructions |
US6532487B1 (en) | 1995-12-04 | 2003-03-11 | International Business Machines Corporation | Method and system for managing semaphores in an object-oriented multi-tasking computer system |
US5706514A (en) * | 1996-03-04 | 1998-01-06 | Compaq Computer Corporation | Distributed execution of mode mismatched commands in multiprocessor computer systems |
US5987590A (en) * | 1996-04-02 | 1999-11-16 | Texas Instruments Incorporated | PC circuits, systems and methods |
US5799182A (en) * | 1997-01-21 | 1998-08-25 | Ford Motor Company | Multiple thread micro-sequencer apparatus and method with a single processor |
WO1998043193A2 (en) | 1997-03-21 | 1998-10-01 | University Of Maryland | Spawn-join instruction set architecture for providing explicit multithreading |
JP3790607B2 (ja) * | 1997-06-16 | 2006-06-28 | 松下電器産業株式会社 | Vliwプロセッサ |
US5938753A (en) * | 1997-09-19 | 1999-08-17 | International Business Machines Corporation | Method and apparatus for controlling autonomous units transferring data between buses having different ordering policies |
US6076157A (en) * | 1997-10-23 | 2000-06-13 | International Business Machines Corporation | Method and apparatus to force a thread switch in a multithreaded processor |
US6105051A (en) * | 1997-10-23 | 2000-08-15 | International Business Machines Corporation | Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor |
US6212544B1 (en) | 1997-10-23 | 2001-04-03 | International Business Machines Corporation | Altering thread priorities in a multithreaded processor |
US6697935B1 (en) | 1997-10-23 | 2004-02-24 | International Business Machines Corporation | Method and apparatus for selecting thread switch events in a multithreaded processor |
US6567839B1 (en) | 1997-10-23 | 2003-05-20 | International Business Machines Corporation | Thread switch control in a multithreaded processor system |
US20040030873A1 (en) * | 1998-10-22 | 2004-02-12 | Kyoung Park | Single chip multiprocessing microprocessor having synchronization register file |
FR2799020A1 (fr) * | 1999-09-28 | 2001-03-30 | Koninkl Philips Electronics Nv | Dispositif a plusieurs processeurs ayant une interface pour une memoire collective |
US6738840B1 (en) * | 1999-08-31 | 2004-05-18 | Koninklijke Philips Electronics N.V. | Arrangement with a plurality of processors having an interface for a collective memory |
ATE390788T1 (de) | 1999-10-14 | 2008-04-15 | Bluearc Uk Ltd | Vorrichtung und verfahren zur hardware-ausführung oder hardware-beschleunigung von betriebssystemfunktionen |
US6804769B1 (en) * | 2000-02-18 | 2004-10-12 | Hewlett-Packard Development Company, L.P. | Unified buffer for tracking disparate long-latency operations in a microprocessor |
US6745274B1 (en) * | 2000-04-25 | 2004-06-01 | Hewlett-Packard Development Company, L.P. | Apparatus and method for synchronizing multiple accesses to common resources |
US7162718B1 (en) | 2000-12-12 | 2007-01-09 | International Business Machines Corporation | Language extension for light weight threading in a JVM |
US7124224B2 (en) * | 2000-12-22 | 2006-10-17 | Intel Corporation | Method and apparatus for shared resource management in a multiprocessing system |
US7178009B2 (en) * | 2001-04-04 | 2007-02-13 | Intel Corporation | Different register data indicators for each of a plurality of central processing units |
JP3702813B2 (ja) | 2001-07-12 | 2005-10-05 | 日本電気株式会社 | マルチスレッド実行方法及び並列プロセッサシステム |
JP3632635B2 (ja) | 2001-07-18 | 2005-03-23 | 日本電気株式会社 | マルチスレッド実行方法及び並列プロセッサシステム |
US7487504B2 (en) * | 2002-02-06 | 2009-02-03 | International Business Machines Corporation | Thread dispatch for multiprocessor computer systems |
US7363546B2 (en) * | 2002-07-31 | 2008-04-22 | Sun Microsystems, Inc. | Latent fault detector |
US7000091B2 (en) * | 2002-08-08 | 2006-02-14 | Hewlett-Packard Development Company, L.P. | System and method for independent branching in systems with plural processing elements |
US7457822B1 (en) | 2002-11-01 | 2008-11-25 | Bluearc Uk Limited | Apparatus and method for hardware-based file system |
US8041735B1 (en) | 2002-11-01 | 2011-10-18 | Bluearc Uk Limited | Distributed file system and method |
US7356568B2 (en) | 2002-12-12 | 2008-04-08 | International Business Machines Corporation | Method, processing unit and data processing system for microprocessor communication in a multi-processor system |
US7493417B2 (en) | 2002-12-12 | 2009-02-17 | International Business Machines Corporation | Method and data processing system for microprocessor communication using a processor interconnect in a multi-processor system |
US7359932B2 (en) * | 2002-12-12 | 2008-04-15 | International Business Machines Corporation | Method and data processing system for microprocessor communication in a cluster-based multi-processor system |
US7360067B2 (en) | 2002-12-12 | 2008-04-15 | International Business Machines Corporation | Method and data processing system for microprocessor communication in a cluster-based multi-processor wireless network |
US7451224B1 (en) | 2003-04-23 | 2008-11-11 | Cisco Technology, Inc. | Method and apparatus for automatically synchronizing a unique identifier of a network device |
US7631055B1 (en) | 2003-04-23 | 2009-12-08 | Cisco Technology, Inc. | Method and apparatus providing automatic connection announcement from a modular network device to a network management point |
US7523185B1 (en) | 2004-01-13 | 2009-04-21 | Cisco Technology, Inc. | Method and apparatus for providing automatic frame relay and ATM provisioning of network devices |
US7290164B1 (en) | 2004-03-03 | 2007-10-30 | Cisco Technology, Inc. | Method of reverting to a recovery configuration in response to device faults |
US7676655B2 (en) * | 2004-06-30 | 2010-03-09 | Sun Microsystems, Inc. | Single bit control of threads in a multithreaded multicore processor |
US20060156316A1 (en) * | 2004-12-18 | 2006-07-13 | Gray Area Technologies | System and method for application specific array processing |
US8104030B2 (en) * | 2005-12-21 | 2012-01-24 | International Business Machines Corporation | Mechanism to restrict parallelization of loops |
WO2007084700A2 (en) * | 2006-01-19 | 2007-07-26 | University Of Maryland Office Of Technology Commercialization | System and method for thread handling in multithreaded parallel computing of nested threads |
US20070250681A1 (en) * | 2006-04-10 | 2007-10-25 | International Business Machines Corporation | Independent programmable operation sequence processor for vector processing |
US7673166B2 (en) * | 2006-10-24 | 2010-03-02 | Hewlett-Packard Development Company, L.P. | Computation of processor clock frequency ratios |
US20080114506A1 (en) * | 2006-11-10 | 2008-05-15 | Davis Christopher L | Hard landing detection |
US8051423B2 (en) * | 2007-02-06 | 2011-11-01 | Mba Sciences, Inc. | System and method for tracking resources during parallel processing |
US8065681B2 (en) * | 2007-10-12 | 2011-11-22 | International Business Machines Corporation | Generic shared memory barrier |
US20090182983A1 (en) * | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Compare and Branch Facility and Instruction Therefore |
EP2435914B1 (de) * | 2009-05-26 | 2019-12-11 | Telefonaktiebolaget LM Ericsson (publ) | Verfahren und planer in einem betriebssystem |
US10834109B2 (en) * | 2014-12-23 | 2020-11-10 | Mcafee, Llc | Determining a reputation for a process |
US9582312B1 (en) | 2015-02-04 | 2017-02-28 | Amazon Technologies, Inc. | Execution context trace for asynchronous tasks |
Family Cites Families (82)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NL134125C (de) * | 1958-04-25 | |||
US3229260A (en) * | 1962-03-02 | 1966-01-11 | Ibm | Multiprocessing computer system |
US3346851A (en) * | 1964-07-08 | 1967-10-10 | Control Data Corp | Simultaneous multiprocessing computer system |
US3337854A (en) * | 1964-07-08 | 1967-08-22 | Control Data Corp | Multi-processor using the principle of time-sharing |
US3348210A (en) * | 1964-12-07 | 1967-10-17 | Bell Telephone Labor Inc | Digital computer employing plural processors |
US3374465A (en) * | 1965-03-19 | 1968-03-19 | Hughes Aircraft Co | Multiprocessor system having floating executive control |
US3386082A (en) * | 1965-06-02 | 1968-05-28 | Ibm | Configuration control in multiprocessors |
US3541516A (en) * | 1965-06-30 | 1970-11-17 | Ibm | Vector arithmetic multiprocessor computing system |
US3440611A (en) * | 1966-01-14 | 1969-04-22 | Ibm | Parallel operations in a vector arithmetic computing system |
US3480914A (en) * | 1967-01-03 | 1969-11-25 | Ibm | Control mechanism for a multi-processor computing system |
US3496551A (en) * | 1967-07-13 | 1970-02-17 | Ibm | Task selection in a multi-processor computing system |
US3593300A (en) * | 1967-11-13 | 1971-07-13 | Ibm | Arrangement for automatically selecting units for task executions in data processing systems |
US3614742A (en) * | 1968-07-09 | 1971-10-19 | Texas Instruments Inc | Automatic context switching in a multiprogrammed multiprocessor system |
US3611306A (en) * | 1969-02-05 | 1971-10-05 | Burroughs Corp | Mechanism to control the sequencing of partially ordered instructions in a parallel data processing system |
US3560934A (en) * | 1969-06-10 | 1971-02-02 | Ibm | Arrangement for effecting vector mode operation in multiprocessing systems |
US3643227A (en) * | 1969-09-15 | 1972-02-15 | Fairchild Camera Instr Co | Job flow and multiprocessor operation control system |
US3648253A (en) * | 1969-12-10 | 1972-03-07 | Ibm | Program scheduler for processing systems |
US3810119A (en) * | 1971-05-04 | 1974-05-07 | Us Navy | Processor synchronization scheme |
CS164932B2 (de) * | 1971-09-07 | 1975-11-28 | ||
GB1434186A (en) * | 1972-04-26 | 1976-05-05 | Gen Electric Co Ltd | Multiprocessor computer systems |
USRE27703E (en) * | 1972-09-05 | 1973-07-24 | Configuration control in multiprocessors | |
US3916383A (en) * | 1973-02-20 | 1975-10-28 | Memorex Corp | Multi-processor data processing system |
US3833889A (en) * | 1973-03-08 | 1974-09-03 | Control Data Corp | Multi-mode data processing system |
FR2253423A5 (de) * | 1973-11-30 | 1975-06-27 | Honeywell Bull Soc Ind | |
US4073005A (en) * | 1974-01-21 | 1978-02-07 | Control Data Corporation | Multi-processor computer system |
US4130865A (en) * | 1974-06-05 | 1978-12-19 | Bolt Beranek And Newman Inc. | Multiprocessor computer apparatus employing distributed communications paths and a passive task register |
US4034347A (en) * | 1975-08-08 | 1977-07-05 | Bell Telephone Laboratories, Incorporated | Method and apparatus for controlling a multiprocessor system |
JPS5841538B2 (ja) * | 1975-12-04 | 1983-09-13 | 株式会社東芝 | マルチプロセツサシステム ノ ユウセンセイギヨホウシキ |
US4318174A (en) * | 1975-12-04 | 1982-03-02 | Tokyo Shibaura Electric Co., Ltd. | Multi-processor system employing job-swapping between different priority processors |
US4128880A (en) * | 1976-06-30 | 1978-12-05 | Cray Research, Inc. | Computer vector register processing |
US4228496A (en) * | 1976-09-07 | 1980-10-14 | Tandem Computers Incorporated | Multiprocessor system |
US4228495A (en) * | 1978-12-19 | 1980-10-14 | Allen-Bradley Company | Multiprocessor numerical control system |
US4481580A (en) * | 1979-11-19 | 1984-11-06 | Sperry Corporation | Distributed data transfer control for parallel processor architectures |
US4412303A (en) * | 1979-11-26 | 1983-10-25 | Burroughs Corporation | Array processor architecture |
IT1126475B (it) * | 1979-12-03 | 1986-05-21 | Honeywell Inf Systems | Apparato di comunicazione tra piu' processori |
FR2471631B1 (fr) * | 1979-12-11 | 1986-02-21 | Cii Honeywell Bull | Dispositif de synchronisation et d'affectation de processus entre plusieurs processeurs dans un systeme de traitement de l'information |
NL7909178A (nl) * | 1979-12-20 | 1981-07-16 | Philips Nv | Rekenmachine met verspreide redundantie welke is verdeeld over verschillende isolatiegebieden voor fouten. |
US4318173A (en) * | 1980-02-05 | 1982-03-02 | The Bendix Corporation | Scheduler for a multiple computer system |
US4368514A (en) * | 1980-04-25 | 1983-01-11 | Timeplex, Inc. | Multi-processor system |
JPS56164464A (en) * | 1980-05-21 | 1981-12-17 | Tatsuo Nogi | Parallel processing computer |
JPS57757A (en) * | 1980-06-04 | 1982-01-05 | Hitachi Ltd | Job execution schedule system |
CH651950A5 (de) * | 1980-10-20 | 1985-10-15 | Inventio Ag | Multiprozessoranordnung. |
US4495570A (en) * | 1981-01-14 | 1985-01-22 | Hitachi, Ltd. | Processing request allocator for assignment of loads in a distributed processing system |
JPS57121750A (en) * | 1981-01-21 | 1982-07-29 | Hitachi Ltd | Work processing method of information processing system |
FR2500659B1 (fr) * | 1981-02-25 | 1986-02-28 | Philips Ind Commerciale | Dispositif pour l'allocation dynamique des taches d'un ordinateur multiprocesseur |
JPS57164340A (en) * | 1981-04-03 | 1982-10-08 | Hitachi Ltd | Information processing method |
US4394727A (en) * | 1981-05-04 | 1983-07-19 | International Business Machines Corporation | Multi-processor task dispatching apparatus |
US4445197A (en) * | 1981-10-27 | 1984-04-24 | International Business Machines Corporation | Weak synchronization and scheduling among concurrent asynchronous processors |
US4543627A (en) * | 1981-12-14 | 1985-09-24 | At&T Bell Laboratories | Internal communication arrangement for a multiprocessor system |
US4507726A (en) * | 1982-01-26 | 1985-03-26 | Hughes Aircraft Company | Array processor architecture utilizing modular elemental processors |
JPS58134357A (ja) * | 1982-02-03 | 1983-08-10 | Hitachi Ltd | ベクトルプロセッサ |
JPS58225422A (ja) * | 1982-06-25 | 1983-12-27 | Toshiba Corp | デ−タ制御装置 |
US4691280A (en) * | 1982-06-28 | 1987-09-01 | The Singer Company | High performance multi-processor system |
US4539637A (en) * | 1982-08-26 | 1985-09-03 | At&T Bell Laboratories | Method and apparatus for handling interprocessor calls in a multiprocessor system |
US4530051A (en) * | 1982-09-10 | 1985-07-16 | At&T Bell Laboratories | Program process execution in a distributed multiprocessor system |
JPS5955565A (ja) * | 1982-09-24 | 1984-03-30 | Fujitsu Ltd | マルチフア−ムウエア方式 |
NL8204038A (nl) * | 1982-10-20 | 1984-05-16 | Philips Nv | Multiprocessorrekenmachinesysteem, bevattende n parallel werkende rekenmachinemodules, en rekenmachinemodule te gebruiken in zo een multiprocessorrekenmachinesysteem. |
US4482956A (en) * | 1982-11-04 | 1984-11-13 | International Business Machines Corporation | Parallel queueing method |
US4504906A (en) * | 1982-11-30 | 1985-03-12 | Anritsu Electric Company Limited | Multiprocessor system |
US4543626A (en) * | 1982-12-06 | 1985-09-24 | Digital Equipment Corporation | Apparatus and method for controlling digital data processing system employing multiple processors |
US4633387A (en) * | 1983-02-25 | 1986-12-30 | International Business Machines Corporation | Load balancing in a multiunit system |
SE435975B (sv) * | 1983-03-18 | 1984-10-29 | Ellemtel Utvecklings Ab | Anordning i ett datorstyrt telekommunikationssystem for att vid overforing av datainformation mellan en regional processor och en central processor medelst ett kosystem utfora lastreglering |
US4661900A (en) * | 1983-04-25 | 1987-04-28 | Cray Research, Inc. | Flexible chaining in vector processor with selective use of vector registers as operand and result registers |
US4636942A (en) * | 1983-04-25 | 1987-01-13 | Cray Research, Inc. | Computer vector multiprocessing control |
EP0131658B1 (de) * | 1983-07-08 | 1987-10-28 | International Business Machines Corporation | Synchronisationsvorrichtung für ein Multiprocessing-System |
US4591975A (en) * | 1983-07-18 | 1986-05-27 | Data General Corporation | Data processing system having dual processors |
US4646231A (en) * | 1983-07-21 | 1987-02-24 | Burroughs Corporation | Method of synchronizing the sequence by which a variety of randomly called unrelated activities are executed in a digital processor |
US4589063A (en) * | 1983-08-04 | 1986-05-13 | Fortune Systems Corporation | Data processing system having automatic configuration |
JPS6077265A (ja) * | 1983-10-05 | 1985-05-01 | Hitachi Ltd | ベクトル処理装置 |
JPS6079460A (ja) * | 1983-10-07 | 1985-05-07 | Nec Corp | 密結合多重演算装置における制御方式 |
GB8328396D0 (en) * | 1983-10-24 | 1983-11-23 | British Telecomm | Multiprocessor system |
US4639856A (en) * | 1983-11-04 | 1987-01-27 | International Business Machines Corporation | Dual stream processor apparatus |
US4660141A (en) * | 1983-12-06 | 1987-04-21 | Tri Sigma Corporation | Self configuring computer network with automatic bus exchange of module identification numbers and processor assigned module numbers |
US4635187A (en) * | 1983-12-19 | 1987-01-06 | At&T Bell Laboratories | Control for a multiprocessing system program process |
US4569017A (en) * | 1983-12-22 | 1986-02-04 | Gte Automatic Electric Incorporated | Duplex central processing unit synchronization circuit |
US4683531A (en) * | 1984-07-02 | 1987-07-28 | Ncr Corporation | Polling method for data processing system |
US4704680A (en) * | 1984-08-15 | 1987-11-03 | Tektronix, Inc. | Address computation system for updating starting addresses of data arrays in an array processor within an instruction cycle |
US4658351A (en) * | 1984-10-09 | 1987-04-14 | Wang Laboratories, Inc. | Task control means for a multi-tasking data processing system |
JPS61114363A (ja) * | 1984-11-07 | 1986-06-02 | Hitachi Ltd | 計算機システム間ジヨブ転送方式 |
US4674036A (en) * | 1984-11-23 | 1987-06-16 | Gte Communication Systems Corporation | Duplex controller synchronization circuit for processors which utilizes an address input |
US4642756A (en) * | 1985-03-15 | 1987-02-10 | S & H Computer Systems, Inc. | Method and apparatus for scheduling the execution of multiple processing tasks in a computer system |
US4725946A (en) * | 1985-06-27 | 1988-02-16 | Honeywell Information Systems Inc. | P and V instructions for semaphore architecture in a multiprogramming/multiprocessing environment |
-
1988
- 1988-02-29 US US07/161,768 patent/US5050070A/en not_active Expired - Lifetime
-
1989
- 1989-01-25 EP EP89101275A patent/EP0330836B1/de not_active Expired - Lifetime
- 1989-01-25 DE DE68928848T patent/DE68928848T2/de not_active Expired - Fee Related
- 1989-01-25 DE DE68921906T patent/DE68921906T2/de not_active Expired - Lifetime
- 1989-01-25 EP EP94250185A patent/EP0623875B1/de not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0330836A3 (de) | 1992-04-29 |
EP0623875A3 (de) | 1995-07-05 |
EP0623875A2 (de) | 1994-11-09 |
EP0623875B1 (de) | 1998-11-04 |
US5050070A (en) | 1991-09-17 |
DE68921906D1 (de) | 1995-05-04 |
DE68921906T2 (de) | 1995-07-27 |
DE68928848D1 (de) | 1998-12-10 |
EP0330836A2 (de) | 1989-09-06 |
EP0330836B1 (de) | 1995-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE68928848T2 (de) | Multi-Prozessor-Rechnersystem mit prozessunabhängiger Adressierung von Kommunikationsregistern | |
DE69428396T2 (de) | Bildverarbeitungssystem mit Fliessbandarbeitsprinzip für Einzelanwendungsumgebung | |
EP0689694B1 (de) | Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren | |
DE68925646T2 (de) | Pipeline-multiprozessorsystem | |
DE69522842T2 (de) | Gleichzeitige Verarbeitung in parallelen und fast parallelen objektorientierten Systemen | |
DE69127101T2 (de) | System für verteilte mehrfachrechnerkommunikation | |
DE69408601T2 (de) | System und Verfahren zur Emulierung von Vielfachprozess-Pipelines in einer Einprozessumgebung | |
DE69130630T2 (de) | Synchrones Verfahren und Gerät für Prozessoren | |
DE69027299T2 (de) | Paralleles Verarbeitungssystem | |
DE68926956T2 (de) | Anordnung zur teilung eines generischen kodes für ein digitales datenverarbeitungssystem | |
DE3210816C2 (de) | ||
DE3689394T2 (de) | Informationsverarbeitungsanlage mit einem Allzweckprozessor und einem Sonderzweckprozessor. | |
DE69419524T2 (de) | Sperrsynchronisierung für verteilte speicher-massivparallelrechner | |
EP1146432B1 (de) | Umkonfigurierungs-Verfahren für programmierbare Bausteine während der Laufzeit | |
DE69129569T2 (de) | Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen | |
DE69131956T2 (de) | Verarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher | |
DE69032418T2 (de) | Privatspeicher für Fäden in einem multifaden digitalen Datenverarbeitungssystem | |
DE69619366T2 (de) | Sperr- und eurekasynchronisierungsarchitektur für multiprozessoren | |
DE3638572C2 (de) | ||
DE69030523T2 (de) | Synchronisierung für Multiprozessorsystem | |
DE69132675T2 (de) | Parallelfliessband-Befehlsverarbeitungssystem für sehr lange Befehlswörter | |
DE69909829T2 (de) | Vielfadenprozessor für faden-softwareanwendungen | |
DE69622305T2 (de) | Verfahren und Gerät für einen optimierenden Kompiler | |
DE2430127C2 (de) | Einrichtung zur Steuerung des Speicherzugriffs konkurrierender Benutzer | |
DE102018126004A1 (de) | Synchronisation in einer Multi-Kachel-Verarbeitungsanordnung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: HEWLETT-PACKARD CO. (N.D.GES.D.STAATES DELAWARE), |
|
8327 | Change in the person/name/address of the patent owner |
Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE |
|
8339 | Ceased/non-payment of the annual fee |