DE68927946T2 - Verfahren und Vorrichtung für die Synchronisierung von parallelen Prozessoren unter Verwendung einer unscharf definierten Sperre - Google Patents
Verfahren und Vorrichtung für die Synchronisierung von parallelen Prozessoren unter Verwendung einer unscharf definierten SperreInfo
- Publication number
- DE68927946T2 DE68927946T2 DE68927946T DE68927946T DE68927946T2 DE 68927946 T2 DE68927946 T2 DE 68927946T2 DE 68927946 T DE68927946 T DE 68927946T DE 68927946 T DE68927946 T DE 68927946T DE 68927946 T2 DE68927946 T2 DE 68927946T2
- Authority
- DE
- Germany
- Prior art keywords
- processors
- processor
- shaded
- shaded region
- synchronization
- 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
- 238000000034 method Methods 0.000 title claims description 34
- 230000003213 activating effect Effects 0.000 claims 2
- 241000269627 Amphiuma means Species 0.000 claims 1
- 230000007704 transition Effects 0.000 description 33
- 238000010586 diagram Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000015654 memory Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000010561 standard procedure Methods 0.000 description 1
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/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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/458—Synchronisation, e.g. post-wait, barriers, locks
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Multi Processors (AREA)
Description
- Die Erfindung bezieht sich auf ein Verfahren und eine Vorrichtung für die Synchronisierung von parallelen Prozessoren. Insbesondere bezieht sich die Erfindung auf die Verwendung von Sperren für eine solche Synchronisierung.
- Bekannte parallele Prozessorsysteme führen Computercode aus, der in parallele Anweisungsflüsse umgewandelt wurde. Die Aufteilung von Computercode in parallele Anweisungsflüsse wurde zum Beispiel von M. Wolfe et al. in "Data Dependence and Its Application to Parallel Processing", International Journal of Parallel Programming, Vol 16, Nr. 2, April 1987, Seite 137 - 178, und von H. Stone in High Performance Computer Architecture, (Addison Wesley 1987), S. 321 und 336 - 338, beschrieben. Einige der Anweisungsflüsse weisen lexikalische Vorwärts-Abhängigkeiten und/oder schleifengebundene Abhängigkeiten auf. Das Konzept der lexikalischen Vorwärts-Abhängigkeiten wurde von R. Cytron in "Doacross: Beyond Veetorization for Multiprocessors", 1986 IEEE International Conference on Parallel Processing, S. 836 - 844, vor allem auf Seite 838, beschrieben. Schleifengebundene Abhängigkeiten wurden von M. Wolfe et al. beschrieben. Die lexikalischen Vorwärts-Abhängigkeiten und die schleifengebundenen Abhängigkeiten erfordern eine Synchronisierung zwischen den Anweisungsflüssen.
- Die Verwendung von "Sperren" ermöglicht eine solche Synchronisierung. Sperren sind Punkte in den jeweiligen parallelen Anweisungsflüssen, an denen die jeweiligen parallelen Prozessoren warten müssen, um sich miteinander zu synchronisieren. Die Verwendung von Sperren für die Synchronisierung wurde von P. Tang et al. in "Processor Self-Scheduling for Multiple-Nested Parallel Loops", Proc. 1986 Int. Conf. Parallel Processing, Aug. 1986, S. 528 - 535, beschrieben. Entsprechende Systeme und Verfahren sind auch aus der Patentschrift EP-A-0 042 442, aus IBM TDB, Vol 29, Nr. 9, Feb.1987, S. 3970 - 3973 "Arrangement to speed-up parallel processor operation" und aus IEEE Software, Vol 5, Nr. 1, Jan. 1988, S. 34 - 42, M. Wolfe: Multiprocessor synchronization for concurrent loops", bekannt.
- Eine detaillierte Beschreibung eines parallelen Prozessorsystems, das solche Stopp-Punkte zur Synchronisierung verwendet, ist in den US-Patentschriften Nr. 4.344.134, 4.365.292 und 4.412.303 zu finden, die alle von Barnes oder Barnes et al. herausgegeben wurden.
- In bekannten parallelen Prozessorsystemen müssen die einzelnen Prozessoren aufeinander warten, während sie sich zu synchronisieren versuchen. Das macht die Systeme ineffizient. Das Warten kann dadurch verursacht werden, daß ein Prozessor seinen ihm zugewiesenen Code schneller ausführt als ein anderer Prozessor. Ein weiterer Grund für dieses Warten kann im Konkurrenzbetrieb der verschiedenen Prozessoren zum Zugreifen auf den Synchronisierungsprozeß oder die Synchronisierungs-Hardware liegen oder darin, daß sie auf weitere gemeinsame Einrichtungen zugreifen.
- Die vorliegende Erfindung hat unter anderem zur Aufgabe, parallele Prozessorsysteme effizienter zu machen, indem sie die Zeitdauer, während der die einzelnen Prozessoren aufeinander warten müssen, reduziert.
- Ein System und ein Verfahren gemäß der Erfindung sind in den Ansprüchen 1 bzw. 12 beschrieben. Ein Verfahren zum Kompilieren von Computercode für ein solches System ist in Anspruch 11 beschrieben.
- Diese Aufgabe wird weiterhin durch eine Synchronisierungs-Vorrichtung erfüllt, die die parallelen Prozessoren so synchronisiert, daß mindestens einer der Prozessoren mindestens eine Nicht-Leerlauf-Anweisung ausführt, während er auf die Synchronisierung mit mindestens einem anderen Prozessor wartet. Eine besondere Kategorie von Nicht-Leerlauf-Anweisungen wären diejenigen in Benutzer- oder Anwendungsprogrammen. Eine weitere Kategorie könnte eine Anweisung sein, die sich auf die Erfüllung der ursprünglichen Aufgabe im internen Betrieb des betreffenden Prozessors bezieht und nicht auf die Erzeugung einer anweisungs-bestimmten Verzögerung. Insbesondere kann diese Aufgabe dadurch realisiert werden, daß bestimmte Code-Regionen in den jeweiligen Anweisungsflüssen identifiziert und unterschieden werden. Die Regionen werden hier als "schattiert" im Gegensatz zu "nicht-schattiert" bezeichnet. Die schattierten Regionen sind hier als "unscharf definierte" Sperren definiert. Ein Prozessor beginnt mit dem Versuch, sich zu synchronisieren, wenn eine entsprechende schattierte Region erreicht wird. Die Synchronisierung ist erreicht, wenn kein Prozessor eine Anweisung nach seiner jeweiligen schattierten Region ausführt, bis alle Prozessoren, die miteinander zusammenhängende Aufgaben ausführen, alle Anweisungen in der nichtschattierten Region vor ihrer jeweiligen schattierten Region beendet haben.
- Die Aufgabe der Erfindung wird außerdem durch eine Vorrichtung erreicht, die die Synchronisierungs-Information zwischen den parallelen Prozessoren koordiniert und eine Zustandsmaschine benutzt, um die Synchronisierungs-Informationen zu verfolgen.
- Weitere Aufgaben und Vorteile sind aus der restlichen Spezifikation und den Patentansprüchen ersichtlich.
- Figur 1a zeigt ein Ablaufdiagramm, das ein Verfahren zum Kompilieren des Quellencodes zum Identifizieren von schattierten und nicht-schattierten Regionen beschreibt;
- Figur 1b zeigt ein Ablaufdiagramm, das die Schritte für die Neuordnung des Codes beschreibt;
- Figur 2 zeigt ein Systemdiagramm, in dem ein erfindungsgemäßes paralleles Prozessorsystem dargestellt ist;
- Figur 3 zeigt ein Blockdiagramm der Schaltung zur Synchronisierung von parallelen Prozessoren;
- Figur 4 zeigt ein Zustandsdiagramm einer Schaltung aus Figur 3;
- Figur 5 zeigt ein detailliertes Diagramm vom Inhalt des Kästchens 304;
- die Tabellen A-D veranschaulichen verschiedene Aspekte der Datenverarbeitung.
- Figur 1a zeigt einen Ablaufplan, der die Kompilierung des Quellencodes zur Schaffung der schattierten Regionen darstellt.
- In Kästchen 101 beginnt die Kompilierung mit dem Quellencode. Ein Beispiel eines Quellencodes C, der sich zur parallelen Verarbeitung eignet, ist im folgenden dargestellt:
- Hier werden allen Elementen eines zweidimensionalen Ganzzahl-Arrays a[j][i] geeignete Werte zugeordnet.
- In Kästchen 102 identifiziert die Kompilierung Teile des Codes, die von separaten Prozessoren ausgeführt werden können. In Kästchen 102 kommt das Verfahren zur Anwendung, das in dem obengenannten Buch von H. Stone und in dem Artikel von M. Wolfe et al. beschrieben wurde. In dem Quellencode-Beispiel kann die innere Schleife von separaten Prozessoren parallel ausgeführt werden. Der Code für die innere Schleife würde dann wie in Tabelle A aussehen, wobei brr für Sperre (barrier) steht.
- Die Sperren wurden aufgrund der schleifengebundenen Abhängigkeiten eingefügt. Mit anderen Worten, in dem Beispiel wird der Wert von a[1][3], der durch den Prozessor P2 in der ersten Iteration der Schleife berechnet wurde, von Prozessor P1 in der zweiten Iteration benötigt. Nach dem Stand der Technik müßte jeder der drei Prozessoren in jeder Schleife warten, bis jeder der anderen Prozessoren die durch einen Punkt gekennzeichnete Sperre erreicht.
- In Kästchen 103 erzeugt die Kompilierung mit Hilfe von Standardverfahren einen Zwischencode. Im folgenden wird der Zwischencode in einer Standardschreibweise namens "Drei-Adressen-Code" ausgedrückt. Dieser Code und die Verfahren zur Erzeugung des Codes wurden von A. Aho et al. in Principles of Compiler Design, (Addison Wesley 1979), Kapitel 7, beschrieben.
- In dem Beispiel ist der Zwischencode für die drei Prozessoren der gleiche außer für den Wert von "i", der für die Prozessoren P1, P2 und P3 auf 2, 3 bzw. 4 initialisiert wird.
- In Kästchen 104 werden die schattierten und die nicht-schattierten Regionen identifiziert. Die schattierten Regionen bilden die unscharf definierten Sperren. Mit anderen Worten: Wie bei einer herkömmlichen Sperre wird ein Prozessor, wenn er eine schattierte Region erreicht, versuchen, sich zu synchronisieren. Im Gegensatz zum Stand der Technik aber wird der Prozessor im Falle einer unscharf definierten Sperre oder schattierten Region in der Lage sein, die Ausführung der Anweisungen fortzusetzen, während er auf die Synchronisierung wartet. Die nicht-schattierten Regionen stellen Bereiche dar, in denen die Prozessoren keine Synchronisierung anstreben.
- Nach Kästchen 104 wird der Zwischencode wie in Tabelle B dargestellt aussehen, wobei am Anfang ein geeigneter Kommentar steht:
- Kommentar: A sei die Basisadresse von Array a; und ein zweiter Kommentar nach der gestrichelten Linie folgt:
- Kommentar: nicht-schattierte Region.
- In Kästchen 104 werden diese schattierten und nicht-schattierten Regionen wie folgt gefunden. Im Standardfall, d.h. wenn keine nicht-schattierte Region identifiziert ist, befinden sich die Anweisungen in einer schattierten Region. Dieser Standardfall wird vorgegeben, weil der Prozessor während der Ausführung von Anweisungen in der schattierten Region niemals anhalten kann. Schattierte Regionen werden daher vorgezogen.
- Das Auffinden des nicht-schattierten Teils umfaßt zwei Hauptschritte. Zuerst werden die erste und die letzte Anweisung mit lexikalischen Vorwärts-Abhängigkeiten und/oder schleifengebundenen Abhängigkeiten LFD als nicht-schattiert identifiziert. Dann sind alle Anweisungen zwischen diesen ersten und letzten Anweisungen ebenfalls nicht-schattiert. In dem Beispiel sind I1 und I2 die einzigen Anweisungen mit schleifengebundenen Abhängigkeiten. Während der Ausführung der Anweisung I1 greift der Prozessor auf einen Wert zu, der durch einen anderen Prozessor in einer vorhergehenden Iteration berechnet wurde. Während der Ausführung von Anweisung 12 wird ein Wert, der durch einen anderen Prozessor in einer folgenden Iteration benutzt wird, in dem Array gespeichert. Daher sind I1, I2 und alle Anweisungen dazwischen nicht-schattiert.
- Bei der Ausführung des Codes werden die parallelen Prozessoren "synchronisiert", wenn kein Prozessor eine Anweisung in der nicht-schattierten Region nach einer schattierten Region ausführt, bis alle anderen Prozessoren alle Anweisungen in der nicht-schattierten Region vor der entsprechenden schattierten Region beendet haben. Diese Forderung bedeutet, daß diejenigen Anweisungen, die zu lexikalischen Vorwärts- Abhängigkeiten oder schleifengebundenen Abhängigkeiten führen, erst ausgeführt werden können, wenn die Abhängigkeiten gelöst sind.
- In Kästchen 105 wird der Zwischencode neu geordnet, um eine größere Effizienz zu erzielen. Zu diesem Zweck können Standardverfahren für die Neuordnung angewendet werden. Eine größere Effizienz wird erreicht, wenn die nicht-schattierten Regionen kleiner werden, weil ein Prozessor niemals angehalten werden kann, während er Anweisungen in einer schattierten Region ausführt. Aus diesem Grunde werden Neuordnungsverfahren angewendet, um die Anzahl der Anweisungen in den nicht-schattierten Regionen zu reduzieren. Nach der Neuordnung wird daher der Zwischencode wie in Tabelle C dargestellt umgewandelt, und zwar mit den gleichen Kommentaren wie oben.
- Bei dieser Neuordnung wurden die drei Anweisungen zwischen I1 und I2 aus der nicht-schattierten Region herausbewegt In diesem Beispiel wurden die drei Anweisungen über I1 geschoben. In manchen Fällen kann die gleiche Wirkung erreicht werden, indem die Anweisungen über die letzte Anweisung mit einer lexikalischen Vorwärts-Abhängigkeit oder einer schleifengebundenen Abhängigkeit hinaus bewegt werden. Mit anderen Worten, die Anweisungen können aus der nicht-schattierten Region herausbewegt werden, indem sie nach oben (über I1) oder nach unten (unter 12) geschoben werden.
- Beim Lesen des obigen Zwischencodes sollte der Leser beachten, daß der Code Teil einer Schleife ist. Die schattierte Region nach der nicht-schattierten Region schließt sich in einer nachfolgenden Iteration der schattierten Region vor der nicht-schattierten Region an. Am Ende der ersten Iteration der Schleife zum Beispiel kann der erste Prozessor zum Anfang der Schleife zurückkehren und den Code weiterhin ausführen. Wenn alle anderen Prozessoren ihre jeweiligen Anweisungen I2 in ihrer ersten Iteration beendet haben, kann der erste Prozessor seine Iteration I1 auf seiner zweiten Iteration beginnen. Da sich die meisten Anweisungen in der schattierten Region befinden, müssen die Prozessoren kaum oder gar nicht aufeinander warten; vor allem erlaubt das Merkmal der schattierten Regionen eine etwas weniger strenge Kopplung zwischen den Prozessoren. Es hat sich gezeigt, daß die erhöhte Flexibilität der Verarbeitungsgeschwindigkeit zugute kommt.
- In Kästchen 106 wird der Zwischencode assembliert. Für das obige Beispiel ist der VAX-Assembler-Code für jeden Prozessor in Tabelle D angegeben. Die Assembuerung ist ein Standardprozeß, der durch Standard-Compiler ausgeführt wird. Während der Assembuerung können Anweisungen als Teil der schattierten Region gekennzeichnet werden, indem ein für diesen Zweck reserviertes Bit in der Anweisung eingeschaltet wird. Dieses Bit wird im folgenden als "I-Bit" bezeichnet.
- Ein Neuordnungsverfahren, das in Kästchen 105 angewendet werden kann, ist in dem Ablaufdiagramm in Figur 1b dargestellt. In Figur 1b wird die Bezeichnung J benutzt, um auf die Anweisungen zu verweisen, die nicht in lexikalische Vorwärts-Abhängigkeiten oder schleifengebundene Abhängigkeiten einbezogen sind, und JLFD um die Anweisungen zu bezeichnen, die in lexikalische Vorwärts-Abhängigkeiten oder schleifengebundene Abhängigkeiten einbezogen sind. Alle Anweisungen des Typs J sind Kandidaten zum Herausschieben aus der nicht-schattierten Region. Im allgemeinen, wenn zwei Anweisungen Ji und Ji+1 in dieser Reihenfolge gegeben sind, kann Ji+1 über Ji geschoben werden, falls die folgenden beiden Bedingungen erfüllt sind:
- Ji liest nicht aus einem Speicherplatz aus, an den Ji+1 schreibt; und
- Ji schreibt nicht an einen Speicherplatz, den Ji+1 ausliest. In Figur 1a wird außerdem eine nicht-schattierte Region mit einer Folge von Anweisungen J&sub1;, J&sub2;, J&sub3; .... JN angenommen.
- In Kästchen 150 wird Ji die erste Anweisung vom Typ J zugewiesen. In Kästchen 151 wird Jj die erste Anweisung in der nicht-schattierten Region vor Ji zugewiesen. In Kästchen 152 werden die Anweisungen Jj bis Ji in einer Schleife durchlaufen und die Bedingungen 1 und 2 für jede Anweisung geprüft. Wenn sowohl Bedingung 1 als auch Bedingung 2 für eine bestimmte Anweisung erfüllt ist, verzweigt das Verfahren zum Zweig 153. Wenn eine oder beide Bedingungen 1 und 2 nicht erfüllt sind, verzweigt das Verfahren zum Zweig 154.
- Zweig 153 führt zu Kästchen 155, in dem geprüft wird, ob die letzte Anweisung in der nicht-schattierten Region vor Ji ist. Wenn das Ergebnis der Prüfung von Kästchen 155 falsch ist, folgt das Verfahren Zweig 156 zum Kästchen 157, wo Ji der nächsten Anweisung in der nicht-schattierten Region vor Anweisung Ji zugewiesen wird. Nach Kästchen 157 kehrt das Verfahren zu Kästchen 152 zurück.
- Wenn das Ergebnis der Prüfung von Kästchen 155 wahr ist, folgt das Verfahren dem Zweig 158 zu Kästchen 159. In Kästchen 159 wird die Anweisung Ji aus der nicht-schattierten Region herausgeschoben. Die beschriebene Prozedur zeigt, wie die Anweisungen nach oben verschoben werden können. Nach Kästchen 159 fährt das Verfahren mit Zweig 154 fort.
- Wenn die Ergebnisse der Prüfungen von Kästchen 152 beide falsch sind, folgt das Verfahren dem Zweig 154 zu Kästchen 160. In Kästchen 160 prüft das Verfahren, ob Ii die letzte Anweisung des Typs J in der nicht-schattierten Region ist. Wenn das Ergebnis der Prüfung von Kästchen 160 wahr ist, ist das Verfahren aus Figur ib bei 161 beendet. Wenn das Ergebnis der Prüfung von Kästchen 160 falsch ist, folgt das Verfahren Zweig 162 zu Kästchen 163.
- In Kästchen 163 wird Ji die nächste Anweisung des Typs J zugewiesen. Nach Kästchen 163 kehrt das Verfahren aus Figur 1b zu Kästchen 151 zurück.
- Mit der Durchführung der obigen Schritte für das Beispiel wird festgelegt, daß die einzigen beiden Anweisungen, die in der nicht-schattierten Region sein müssen, die mit I1 und I2 gekennzeichneten Anweisungen sind.
- Ein Verfahren, das dem von Figur 1b ähnelt, kann angewendet werden, um die verbleibenden Anweisungen, die nicht zu lexikalischen Vorwärts-Abhängigkeiten oder schleifengebundenen Abhängigkeiten führen, nach unten und aus der nicht-schattierten Region heraus zu verschieben. Das ähnliche Verfahren würde von dem in bezug auf Figur 1b beschriebenen Verfahren nur insofern abweichen, als daß der Compiler eine Anweisung nicht mit allen vorhergehenden Anweisungen in der nicht-schattierten Region vergleicht, sondern mit allen nachfolgenden Anweisungen vergleichen müßte.
- In Figur 2 ist ein Blockdiagramm eines parallelen Prozessorsystems mit vier parallelen Prozessoren 201, 202, 203 und 204 und den jeweiligen Anweisungsspeichern 205, 206, 207 und 208 dargestellt. Es kann eine beliebige Anzahl n von Prozessoren vorliegen, wobei n eine Ganzzahl größer als 2 ist. Hier wurden aus Gründen einer einfacheren Veranschaulichung vier Prozessoren gewahlt. Die parallelen Prozessoren 201, 202, 203 und 204 teilen sich einen Datenspeicher 209. Jeder Prozessor hat eine jeweilige Sperreneinheit 210, 211, 212 und 213. Jede Sperreneinheit 210, 211, 212 und 213 verfügt über vier Eingänge und zwei Ausgänge. Die drei Eingänge von den anderen Prozessoren geben an, ob ein jeweiliger anderer Prozessor eine Synchronisierung wünscht. Diese Eingänge werden hier als WANT_IN bezeichnet. Der Ausgang, der zu den anderen Prozessoren führt, gibt an, daß der entsprechende Prozessor eine Synchronisierung wünscht. Diese Ausgänge werden hier als WANT_OUT bezeichnet. Jede Sperreneinheit 210, 211, 212 und 213 hat auch einen jeweiligen Eingang I von und einen jeweiligen Ausgang STALL zu ihrer jeweiligen Ausführungseinheit 213, 214, 215 und 216.
- In Figur 3 ist einer der parallelen Prozessoren 201, 202, 203 und 204 mit einer der Sperreneinheiten 210, 211, 212 und 213 genauer dargestellt. Die Sperreneinheit dient zum Empfangen, Verarbeiten und Senden von Synchronisierungs-Intormationen. Das Anweisungsregister 301 ist innerhalb einer Ausführungseinheit 328 dargestellt und ist groß genug, um die längste Anweisung in dem betreffenden Anweisungssatz plus das I-Bit 302 zu enthalten. Der Prozessor wird als ein RISC-Prozessor angenommen, der eine Anweisung pro Maschinenzyklus ausführt. Das I-Bit wird eingeschaltet, wenn die Anweisung in dem Anweisungsregister 301 in einer schattierten Region liegt. Das I- Bit wird ausgeschaltet, wenn sich die Anweisung in einer nicht-schattierten Region befindet.
- Alternativ kann das Anweisungsregister 301 kleiner sein und die Anweisungen können mehrere Worte umfassen, wenn Legik - nicht abgebildet - enthalten ist, um das I-Bit 302 außer im ersten Wort der Anweisung auszuschließen. Eine weitere alternative Möglichkeit bestände darin, eine gesamte Anweisung in jedem Anweisungsfluß zum Markieren der Anfänge der schattierten und der nicht-schattierten Regionen vorzusehen. Eine solche Lösung würde einige geringfügige Änderungen an der Zustand- Maschine erfordern. Diese Lösung würde Anweisungen zu den jeweiligen Anweisungsflüssen hinzufügen, aber weniger Änderungen an der vorhandenen Hardware und den Maschinen-Anweisungssätzen erfordern als die Lösung mit I-Bit.
- Das Maskenregister 303 ist ein intern adressiertes Spezialregister und hat n-1 Bits, wobei n die Anzahl der Prozessoren im System ist. In dem vorliegenden Beispiel wird angenommen, daß n = 4 ist. Jeder der Prozessoren enthält die in Figur 3 dargestellte Vorrichtung. Das Maskenregister 303 muß daher 3 Bits haben, um die anderen Prozessoren im System zu verfolgen. Das Maskenregister 303 dient zum Ignorieren anderer Prozessoren, die nicht zusammenhängende Aufgaben ausführen. Ein Bit des Maskenregisters 303 wird ausgeschaltet, wenn der entsprechende andere Prozessor eine zusammenhängende Aufgabe ausführt. Ein Bit des Maskenregisters 303 wird eingeschaltet, wenn der entsprechende andere Prozessor nicht eine zusammenhängende Aufgabe ausführt. Das Maskenregister 303 empfängt seine Maskenbits von einem 3-Bit- Eingang 320. In dem Beispiel werden nur drei Prozessoren benötigt, um den Code auszuführen. Daher werden zwei Bits des Maskenregisters 303 an jedem Prozessor ausgeschaltet sein, der eine der Schleifen durchläuft. Das dritte Bit wird eingeschaltet sein, so daß die Prozessoren, die die Schleifen durchlaufen, den einen Prozessor ignorieren, der die Schleifen nicht durchläuft. Der Compiler weiß, welche Prozessoren sich bei der Sperre synchronisieren, und kann daher eine Anweisung erzeugen, die dafür sorgt, daß die entsprechenden Bits in das Maskenregister 303 geschrieben werden.
- Diejenigen Prozessoren, die ignoriert werden, weil die Bits des Maskenregisters 303 in einem weiteren Prozessor eingeschaltet sind, können ihrerseits unabhängige Aufgaben ausführen und den einen weiteren Prozessor ignorieren, indem sie ihre eigenen Maskenregister setzen. Solche unabhängigen Aufgaben können die unabhängige Synchronisierung mit einem unabhängigen Job beinhalten, der eine parallele Verarbeitung erfordert.
- WANT_IN ist ein (n-1)-Bit-Eingang zum Empfangen der "WANT"-Bits von den anderen Prozessoren. Die WANT-Bits werden eingeschaltet, wenn die entsprechenden Prozessoren eine Synchronisierung wünschen.
- Die Anpassungsschaltung 304 enthält Logik zum Koordinieren der Bits im Maskenregister 303 und der WANT-Bits am Eingang WANT_IN. Der Ausgang der Anpassungsschaltung 304 wird als "MATCH" bezeichnet und ist nur eingeschaltet, wenn alle betreffenden anderen Prozessoren eine Synchronisierung wünschen.
- Die Zustandsmaschine 305 benutzt das I-Bit und den Ausgang MATCH der Anpassungsschaltung 304, um die Synchronisierungszustände zu bestimmen. Die Zustandsmaschine 305 gibt zwei Bits aus: STALL und WANT_OUT. STALL ist ausgeschaltet, wenn der Prozessor Anweisungen ausführt. STALL wird eingeschaltet, um den Prozessor von der Ausführung der Anweisungen abzuhalten. WANT_OUT ist eingeschaltet, wenn der betreffende Prozessor eine Synchronisierung wünscht, und ist andernfalls ausgeschaltet.
- Figur 4 zeigt ein Zustandsdiagramm für die Zustandsmaschine 305. In diesem Ausführungsbeispiel ist die Zustandsmaschine 305 eine sogenannte Mealy-Maschine, bei der sich die Ausgänge STALL und WANT OUT ändern können, ohne daß die Maschine die Zustande ändert. In Figur 4 sind die Eingänge zur Zustandsmaschine 305 in kleinerer Schrift angegeben und die Ausgänge von der Zustandsmaschine 305 in größerer Schrift.
- Jeder der Prozessoren 201, 202, 203 und 204 enthält eine Zustandsmaschine, wie in Figur 4 dargestellt. Damit diese Zustandsmaschinen arbeiten, muß ein gemeinsamer Takt oder alternative Mittel zur Synchronisierung der Signale zwischen den Zustandsmaschinen vorhanden sein. Der Einfachheit halber sind die Schaltungen zur Synchronisierung der Zustandsmaschinen 305 in den Figuren nicht abgebildet.
- Der Übergang 401 entspricht dem Verbleiben in Zustand 0. Die Maschine bleibt in Zustand 0, während das I-Bit ausgeschaltet ist. Mit anderen Worten, der Prozessor führt eine nicht-schattierte Code-Region aus und geht nicht zu einer schattierten Code-Region. STALL und WANT_OUT sind beide ausgeschaltet.
- Der Übergang 402 bringt die Maschine von Zustand 0 in Zustand 1. Die Maschine macht den Übergang 402, wenn ihr entsprechender Prozessor zur Synchronisierung bereit ist, aber mindestens einer der anderen relevanten Prozessoren nicht zur Synchronisierung bereit ist, d.h. wenn das I-Bit eingeschaltet ist und MATCH ausgeschaltet ist. Die Bedingungen 1 = 0 und MATCH = 0 sind in Figur 4 mit I* bzw. MATCH* bezeichnet. Während des Übergangs 402 ist WANT_OUT eingeschaltet und STALL ausgeschaltet. Wenn in Figur 4 STALL oder WANT_OUT ausgeschaltet ist, wird es einfach weggelassen. Der Übergang 404 hält die Maschine in Zustand 1. Die Maschine macht den Übergang 404 so lange, wie sie eine Synchronisierung wünscht und dies noch nicht getan hat, sondern immer noch Anweisungen ausführt. Mit anderen Worten, die Maschine bleibt in Zustand 1, während das I-Bit eingeschaltet ist und MATCH ausgeschaltet ist. Während Zustand list WANT_OUT eingeschaltet und STALL ausgeschaltet.
- Der Übergang 403 bringt die Maschine von Zustand 0 in Zustand 2. Die Maschine macht den Übergang 403, wenn ihr entsprechender Prozessor bereit zur Synchronisierung ist und es der letzte der betreffenden Prozessoren ist, der an diesen Punkt gelangt. Einige Prozessoren können Zustand 2 gleichzeitig erreichen, do daß es mehrere "letzte" Prozessoren gleichzeitig gibt. Zustand 2 ist ein Zustand, in dem der Prozessor synchronisiert wird. Wenn die Zustandsmaschine 305 den Übergang 403 macht, bleibt WANT_OUT eingeschaltet. Sie schaltet WANT_OUT jedoch aus, wenn sie Zustand 2 erreicht. STALL bleibt während des Übergangs 403 und des Zustands 2 ausgeschaltet.
- Der Übergang 405 bringt die Maschine von Zustand 1 in Zustand 2. Die Maschine macht den Übergang 405, wenn der entsprechende Prozessor sich immer noch in seiner schattierten Region befindet und eine Synchronisierung wünscht und alle anderen Prozessoren ihre jeweilige schattierte Region erreicht haben, d.h. wenn sowohl das 1-Bit als auch MATCH eingeschaltet sind. Wenn die Maschine Übergang 405 macht, hält sie das Bit WANT_OUT eingeschaltet. STALL ist während des Übergangs 405 ausgeschaltet. Das Bit WANT_OUT wird wieder ausgeschaltet, sobald die Maschine Zustand 2 erreicht.
- Der Übergang 406 bringt die Maschine von Zustand 1 in Zustand 3. Die Maschine macht den Übergang 406, wenn sie bereit ist, ihre schattierte Region zu verlassen, aber noch nicht in der Lage war, den Übergang zu Zustand 2 zu schaffen. Mit anderen Worten, das I-Bit wird ausgeschaltet und MATCH ist ausgeschaltet. An dieser Stelle muß der jeweilige Prozessor anhalten. Aus diesem Grunde werden WANT_OUT und STALL eingeschaltet.
- Der Übergang 407 bringt die Maschine von Zustand 1 in Zustand 0. Die Maschine macht diesen Übergang, wenn MATCH eingeschaltet wird und der betreffende Prozessor gleichzeitig die schattierte Region verläßt. Die Maschine hält WANT_- OUT während des Übergangs 407 eingeschaltet und schaltet es wieder aus, wenn sie Zustand 0 erreicht. STALL bleibt während des Übergangs 407 ausgeschaltet.
- Der Übergang 408 bringt die Zustandsmaschine 305 von Zustand 2 in Zustand 0. Der Übergang 408 erfolgt nach der Synchronisierung, wenn das I-Bit ausgeschaltet wird, d.h. wenn der betreffende Prozessor eine schattierte Region verläßt. Während des Übergangs 408 sind WANT_OUT und STALL ausgeschaltet.
- Der Übergang 409 hält die Maschine in Zustand 2. Der Übergang 409 erfolgt nach der Synchronisierung so lange, wie das I-Bit 1 bleibt, d.h. so lange, wie der betreffende parallele Prozessor nach der Synchronisierung in der schattierten Region bleibt. Während des Übergangs 409 sind WANT_OUT und STALL ausgeschaltet.
- Der Übergang 411 hält die Maschine in Zustand 3, d.h. angehalten und auf die Synchronisierung wartend. Die Maschine macht den Übergang 411 so lange, wie MATCH ausgeschaltet ist. Während sie sich in Zustand 3 befindet, hält die Maschine WANT_OUT und STALL weiterhin eingeschaltet.
- Der Übergang 410 bringt die Maschine von Zustand 3 in Zustand 0. Die Maschine macht den Übergang 410, wenn sie sich erfolgreich mit den anderen Maschinen synchronisiert hat und ihre schattierte Region verlassen kann, mit anderen Worten, wenn MATCH eingeschaltet wird. Während des Übergangs 410 bleibt WANT_OUT eingeschaltet. WANT_OUT wird ausgeschaltet, sobald die Maschine einmal den Zustand 0 erreicht hat. Während des Übergangs 410 ist STALL ausgeschaltet.
- Figur 5 zeigt die Einzelheiten von Kästchen 304. Die drei Bits 501, 502 und 503 des Maskenregisters 303 sind ebenfalls in Figur 5 dargestellt. Das Maskenregister 303 hat drei Bits, weil es drei weitere parallele Prozessoren in dem System gibt.
- Die drei Bits von WANT_IN sind als drei separate Leitungen WANT_IN0, WANT_IN1 und WANT_IN2 dargestellt. Das Maskenregister-Bit 503 und WANT_IN0 werden dem ODER-Gatter 504 zugeführt. Das Maskenregister-Bit 502 und WANT_IN1 werden dem ODER-Gatter 505 zugeführt. Das Maskenregister-Bit 501 und WANT_IN2 werden dem ODER-Gatter 506 zugeführt. Die Ausgänge der ODER-Gatter 504, 505 und 506 werden dem UND-Gatter 507 zugeführt. Der Ausgang von 507 ist MATCH.
- Der Ausgang MATCH ist also eingeschaltet, wenn alle anderen Prozessoren, die nicht ignoriert werden, eine Synchronisierung wünschen. MATCH ist also auch eingeschaltet, wenn alle anderen Prozessoren ignoriert werden. TABELLE A TABELLE B TABELLE C TABELLE D
Claims (12)
1. Paralleles Prozessorsystem mit:
a. einer Vielzahl von parallelen Prozessoren (201, 202, 203, 204), die
jeweils für die Behandlung eines bestimmten der parallelen Anweisungsflüsse
vorgesehen sind; und
b. Mittel (210, 211, 212, 213A) zum Synchronisieren der Prozessoren;
dadurch gekennzeichnet, daß
c. jeder der entsprechenden Flüsse zwischen nicht-schattierten Regionen
mit mehreren Anweisungen, die eine Synchronisierung zwischen den Prozessoren
erfordem, eine schattierte Region mit mehreren Anweisungen enthält, die keine
Synchronisierung zwischen den Prozessoren erfordert, und
d. die Mittel zur Synchronisierung wirksam sind, um:
- eine Synchronisierung herzustellen, indem sie einen bestimmten der
Prozessoren solange davon abhalten, eine Anweisung in einer nicht-schattierten Region
nach einer schattierten Region auszuführen, bis die anderen Prozessoren alle
Anweisungen in der nicht-schattierten Region vor der schattierten Region beendet haben, und
- den bestimmten Prozessor in die Lage zu versetzen, die
Anweisungen in der schattierten Region auszuführen, während eine Synchronisierung versucht
wird.
2. System nach Anspruch 1 zum Ausführen von Computercode als eine
Vielzahl von parallelen Anweisungsflüssen und wobei die Mittel zum Synchronisieren
eine Vielzahl von Vorrichtungen (210, 211, 212, 213A) enthalten, die jeweils zur
Synchronisierung eines bestimmten Prozessors dienen, wobei jede Vorrichtung folgendes
umfaßt:
a. Mittel (306, 307) zum Kommunizieren mit mindestens einem der
anderen Prozessoren; und
b. Mittel (303, 304, 305, 328) zum Steuern des bestimmten Prozessors
ausgehend von den Informationen von den anderen Prozessoren.
3. Vorrichtung nach Anspruch 2, wobei:
a. die Kommunikationsmittel folgendes umfassen:
i. Eingangsmittel (306) zum Empfangen einer Angabe von
mindestens einem anderen Prozessor, daß die anderen Prozessoren eine Synchronisierung
wünschen; und
ii. Ausgangsmittel (307) zum Senden einer Angabe, daß der
bestimmte Prozessor eine Synchronisierung wünscht;
b. die Steuermittel folgendes umfassen:
i. Mittel (301, 302) zum Identifizieren der schattierten Region
und der nicht-schattierten Regionen in dem Anweisungsfiuß für den bestimmten
Prozessor;
ii. Mittel (305, 328) zum Steuern der Ausführung des
Anweisungsflusses durch den bestimmten Prozessor in Reaktion auf die Identifizierung der
schattierten und der nicht-schattierten Regionen und in Reaktion auf die empfangene
Angabe, wobei die Steuermittel mit den Eingangsmitteln und den Ausgangsmitteln
verbunden sind.
4. Vorrichtung nach Anspruch 2 mit Mitteln (303, 320) zum Ignorieren eines
zweiten von mindestens einem der anderen Prozessoren entsprechend einer Reihe von
parallelen Anweisungsflüssen.
5. Vorrichtung nach Anspruch 4, wobei die ignorierenden Mittel ein
Maskenregister (303) umfassen.
6. Vorrichtung nach Anspruch 2 mit Mitteln (303, 320) zum Ignorieren von
mindestens zwei der parallelen Prozessoren entsprechend einer Reihe von parallelen
Anweisungsflüssen, so daß die mindestens zwei Prozessoren sich unabhängig
synchronisieren.
7. Vorrichtung nach Anspruch 3, wobei die Mittel zur Steuerung der
Ausführung (305) eine Zustandsmaschine enthalten.
8. Vorrichtung nach Anspruch 7, wobei die Zustandsmaschine folgendes
umfaßt:
a. einen WANT-Eingang (306), der mit den Eingangsmitteln der
Vorrichtung
verbunden ist, um die Angabe zu empfangen;
b. einen zweiten Eingang zum Empfangen eines Signals, das die
schattierte Region und die nicht-schattierten Regionen identifiziert;
c. einen ersten Ausgang (307), der mit den Ausgangsmitteln der
Vorrichtung verbunden ist, um die gesendete Angabe weiterzuleiten;
d. einen STALL-Ausgang (308), der mit den Mitteln zur Steuerung der
Ausführung (328) des betreffenden Prozessors verbunden ist, um in einem Haltezustand
ein Signal zum Anhalten der Ausführung durch den betreffenden Prozessor zu liefern
und um andernfalls den betreffenden Prozessor zu aktivieren.
9. Vorrichtung nach Anspruch 8, wobei die Zustandsmaschine vier Zustände
hat:
a. einen ersten Zustand, während dem der Prozessor Anweisungen in
der nicht-schattierten Region ausführt;
b. einen zweiten Zustand, während dem der Prozessor Anweisungen in
der schattierten Region ausführt und dabei darauf wartet, daß die anderen Prozessoren
ihre jeweiligen schattierten Regionen erreichen;
c. einen dritten Zustand, während dem der Prozessor Anweisungen in
der schattierten Region ausführt, wenn die anderen Prozessoren ihre jeweiligen
schattierten Regionen erreicht haben; und
d. einen vierten Zustand, während dem der Prozessor anhält, nachdem
er ein Ende der schattierten Region erreicht hat, und darauf wartet, daß die anderen
Prozessoren ihre jeweiligen schattierten Regionen erreichen.
10. Vorrichtung nach Anspruch 3, die weiterhin ein Maskenregister (303) zum
Ignorieren von mindestens einem der anderen Prozessoren entsprechend einer Reihe von
parallelen Anweisungsflüssen enthält und wobei die Mittel zur Steuerung der
Ausführung (305, 328) eine Zustandsmaschine umfassen, die folgendes enthält:
a. einen WANT-Eingang (306), der mit den Eingangsmitteln der
Vorrichtung verbunden ist, um die Angabe zu empfangen;
b. einen zweiten Eingang zum Empfangen eines Signals, das die
schattierte Region und die nicht-schattierten Regionen identifiziert;
c. einen ersten Ausgang (307), der mit den Ausgangsmitteln der
Vorrichtung
verbunden ist, um die gesendete Angabe weiterzuleiten;
d. einen STALL-Ausgang (308), der mit den Mitteln zur Steuerung der
Ausführung (328) des betreffenden Prozessors verbunden ist, um in einem Haltezustand
ein Signal zum Anhalten der Ausführung durch den betreffenden Prozessor zu liefern
und um andernfalls den betreffenden Prozessor zu aktivieren.
11. Verfahren zum Kompilieren von Computercode für das System nach
Anspruch 1, wobei das genannte System eine Vielzahl von parallelen Prozessoren
enthält und jeder betreffende Prozessor zur Behandlung eines betreffenden der parallelen
Anweisungsflüsse dient, und Mittel (210, 211, 212, 213A) zum Synchronisieren der ge
nannten Prozessoren, wobei jeder der genannten Anweisungsflüsse zwischen
nicht-schattierten Regionen mit mehreren Anweisungen, die eine Synchronisierung zwischen den
Prozessoren erfordern, eine schattierte Region mit mehreren Anweisungen enthält, die
keine Synchronisierung zwischen den Prozessoren erfordert, wobei das Verfahren
folgende Schritte umfaßt:
- einen ersten Schritt (102), der eine Vielzahl von jeweiligen Abschnitten
des Codes identifiziert, die in den betreffenden Prozessoren parallel ausgeführt werden
können;
wobei das Verfahren gekennzeichnet ist durch:
- einen zweiten Schritt (104) zum Identifizieren der schattierten Regionen
und der nicht-schattierten Regionen innerhalb von mindestens einem der betreffenden
Abschnitte, um die Mittel zum Synchronisieren zu betreiben, wobei der zweite
Identifizierungsschritt folgendes umfaßt:
- in mindestens einem der Abschnitte Zuweisen von ersten, letzten und
zwischengefügten Anweisungen einer lexikalischen Vorwärts-Abhängigkeit oder
schleifengebundenen Abhängigkeit zu einer bestimmten der nicht-schattierten Regionen.
12. Verfahren zum Synchronisieren einer Vielzahl von parallelen Prozessoren,
von denen jeder zur Behandlung eines jeweiligen parallelen Anweisungsflusses
vorgesehen ist, dadurch gekennzeichnet, daß das Verfahren folgendes umfaßt:
- in jedem der betreffenden Flüsse Schaffen einer schattierten Region mit
mehreren Anweisungen, die keine Synchronisierung zwischen Prozessoren erfordert,
zwischen nicht-schattierten Regionen mit mehreren Anweisungen, die eine Synchronisie
rung zwischen den Prozessoren erfordert, und
- einen bestimmten der Prozessoren von der Ausführung einer Anweisung
in einer nicht-schattierten Region nach einer schattierten Region abhalten, bis die
anderen Prozessoren alle Anweisungen in der nicht-schattierten Region vor der schattierten
Region beendet haben, während der bestimmte Prozessor in die Lage versetzt wird,
während des Synchronisierungsversuchs Anweisungen in der schattierten Region
auszuführen.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US22727688A | 1988-08-02 | 1988-08-02 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE68927946D1 DE68927946D1 (de) | 1997-05-15 |
DE68927946T2 true DE68927946T2 (de) | 1997-10-16 |
Family
ID=22852477
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE68927946T Expired - Lifetime DE68927946T2 (de) | 1988-08-02 | 1989-07-27 | Verfahren und Vorrichtung für die Synchronisierung von parallelen Prozessoren unter Verwendung einer unscharf definierten Sperre |
Country Status (4)
Country | Link |
---|---|
US (2) | US5802374A (de) |
EP (1) | EP0353819B1 (de) |
JP (1) | JP2947356B2 (de) |
DE (1) | DE68927946T2 (de) |
Families Citing this family (69)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4019040A1 (de) * | 1990-06-14 | 1991-12-19 | Philips Patentverwaltung | Multirechnersystem |
JPH04184556A (ja) * | 1990-11-20 | 1992-07-01 | Mitsubishi Electric Corp | 多重処理システムおよび多重処理システムの同期制御方法 |
US5434995A (en) * | 1993-12-10 | 1995-07-18 | Cray Research, Inc. | Barrier synchronization for distributed memory massively parallel processing systems |
US5721921A (en) * | 1995-05-25 | 1998-02-24 | Cray Research, Inc. | Barrier and eureka synchronization architecture for multiprocessors |
JP3573546B2 (ja) * | 1995-10-27 | 2004-10-06 | 富士通株式会社 | 並列計算機における並列プロセススケジューリング方法および並列計算機用処理装置 |
US6055618A (en) * | 1995-10-31 | 2000-04-25 | Cray Research, Inc. | Virtual maintenance network in multiprocessing system having a non-flow controlled virtual maintenance channel |
US5864738A (en) * | 1996-03-13 | 1999-01-26 | Cray Research, Inc. | Massively parallel processing system using two data paths: one connecting router circuit to the interconnect network and the other connecting router circuit to I/O controller |
JP2882475B2 (ja) * | 1996-07-12 | 1999-04-12 | 日本電気株式会社 | スレッド実行方法 |
EP0825506B1 (de) | 1996-08-20 | 2013-03-06 | Invensys Systems, Inc. | Verfahren und Gerät zur Fernprozesssteuerung |
JPH10149285A (ja) * | 1996-11-18 | 1998-06-02 | Hitachi Ltd | 命令実行制御方法および情報処理装置 |
US6295601B1 (en) * | 1997-05-30 | 2001-09-25 | Sun Micro Systems, Inc. | System and method using partial trap barrier instruction to provide trap barrier class-based selective stall of instruction processing pipeline |
US6044206A (en) * | 1997-10-14 | 2000-03-28 | C-Cube Microsystems | Out of order instruction processing using dual memory banks |
US5970232A (en) * | 1997-11-17 | 1999-10-19 | Cray Research, Inc. | Router table lookup mechanism |
US6230252B1 (en) | 1997-11-17 | 2001-05-08 | Silicon Graphics, Inc. | Hybrid hypercube/torus architecture |
US6101181A (en) * | 1997-11-17 | 2000-08-08 | Cray Research Inc. | Virtual channel assignment in large torus systems |
JPH11259437A (ja) * | 1998-03-12 | 1999-09-24 | Hitachi Ltd | 不要バリア命令の削減方式 |
US6216174B1 (en) | 1998-09-29 | 2001-04-10 | Silicon Graphics, Inc. | System and method for fast barrier synchronization |
JP2000132529A (ja) * | 1998-10-23 | 2000-05-12 | Sony Corp | 並列処理装置、並列処理方法および記録媒体 |
AU5273100A (en) | 1999-05-17 | 2000-12-05 | Foxboro Company, The | Methods and apparatus for control configuration with versioning, security, composite blocks, edit selection, object swapping, formulaic values and other aspects |
US7089530B1 (en) | 1999-05-17 | 2006-08-08 | Invensys Systems, Inc. | Process control configuration system with connection validation and configuration |
US7043728B1 (en) | 1999-06-08 | 2006-05-09 | Invensys Systems, Inc. | Methods and apparatus for fault-detecting and fault-tolerant process control |
US6788980B1 (en) | 1999-06-11 | 2004-09-07 | Invensys Systems, Inc. | Methods and apparatus for control using control devices that provide a virtual machine environment and that communicate via an IP network |
US6438747B1 (en) * | 1999-08-20 | 2002-08-20 | Hewlett-Packard Company | Programmatic iteration scheduling for parallel processors |
US6374403B1 (en) * | 1999-08-20 | 2002-04-16 | Hewlett-Packard Company | Programmatic method for reducing cost of control in parallel processes |
US6507947B1 (en) * | 1999-08-20 | 2003-01-14 | Hewlett-Packard Company | Programmatic synthesis of processor element arrays |
US6751698B1 (en) | 1999-09-29 | 2004-06-15 | Silicon Graphics, Inc. | Multiprocessor node controller circuit and method |
US6674720B1 (en) | 1999-09-29 | 2004-01-06 | Silicon Graphics, Inc. | Age-based network arbitration system and method |
US6473660B1 (en) | 1999-12-03 | 2002-10-29 | The Foxboro Company | Process control system and method with automatic fault avoidance |
US6766437B1 (en) * | 2000-02-28 | 2004-07-20 | International Business Machines Corporation | Composite uniprocessor |
US6963967B1 (en) * | 2000-06-06 | 2005-11-08 | International Business Machines Corporation | System and method for enabling weak consistent storage advantage to a firmly consistent storage architecture |
US8949468B2 (en) | 2001-09-21 | 2015-02-03 | International Business Machines Corporation | Method and system for time synchronization among systems using parallel sysplex links |
US7346898B2 (en) * | 2002-01-29 | 2008-03-18 | Texas Instruments Incorporated | Method for scheduling processors and coprocessors with bit-masking |
JP2004088505A (ja) * | 2002-08-27 | 2004-03-18 | Matsushita Electric Ind Co Ltd | 並列ストリーム暗復号装置及びその方法並びに並列ストリーム暗復号プログラム |
US7577816B2 (en) | 2003-08-18 | 2009-08-18 | Cray Inc. | Remote translation mechanism for a multinode system |
US7379424B1 (en) | 2003-08-18 | 2008-05-27 | Cray Inc. | Systems and methods for routing packets in multiprocessor computer systems |
US7334110B1 (en) | 2003-08-18 | 2008-02-19 | Cray Inc. | Decoupled scalar/vector computer architecture system and method |
US7735088B1 (en) | 2003-08-18 | 2010-06-08 | Cray Inc. | Scheduling synchronization of programs running as streams on multiple processors |
US7743223B2 (en) | 2003-08-18 | 2010-06-22 | Cray Inc. | Decoupling of write address from its associated write data in a store to a shared memory in a multiprocessor system |
US7421565B1 (en) | 2003-08-18 | 2008-09-02 | Cray Inc. | Method and apparatus for indirectly addressed vector load-add -store across multi-processors |
US7366873B1 (en) | 2003-08-18 | 2008-04-29 | Cray, Inc. | Indirectly addressed vector load-operate-store method and apparatus |
US7437521B1 (en) | 2003-08-18 | 2008-10-14 | Cray Inc. | Multistream processing memory-and barrier-synchronization method and apparatus |
US8307194B1 (en) | 2003-08-18 | 2012-11-06 | Cray Inc. | Relaxed memory consistency model |
US7761923B2 (en) | 2004-03-01 | 2010-07-20 | Invensys Systems, Inc. | Process control methods and apparatus for intrusion detection, protection and network hardening |
US7477255B1 (en) * | 2004-04-12 | 2009-01-13 | Nvidia Corporation | System and method for synchronizing divergent samples in a programmable graphics processing unit |
US7324112B1 (en) | 2004-04-12 | 2008-01-29 | Nvidia Corporation | System and method for processing divergent samples in a programmable graphics processing unit |
JP4749431B2 (ja) * | 2005-03-04 | 2011-08-17 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー. | パイプラインスループットを促進するための方法及び装置 |
US7478769B1 (en) | 2005-03-09 | 2009-01-20 | Cray Inc. | Method and apparatus for cooling electronic components |
US8392900B1 (en) * | 2005-03-17 | 2013-03-05 | Hewlett-Packard Development Company, L.P. | Methods and systems for barrier reduction in parallel processing systems |
JP4372043B2 (ja) * | 2005-05-12 | 2009-11-25 | 株式会社ソニー・コンピュータエンタテインメント | コマンド実行制御装置、コマンド実行指示装置およびコマンド実行制御方法 |
US7770170B2 (en) * | 2005-07-12 | 2010-08-03 | Microsoft Corporation | Blocking local sense synchronization barrier |
GB0524720D0 (en) * | 2005-12-05 | 2006-01-11 | Imec Inter Uni Micro Electr | Ultra low power ASIP architecture II |
US7860857B2 (en) | 2006-03-30 | 2010-12-28 | Invensys Systems, Inc. | Digital data processing apparatus and methods for improving plant performance |
US20080005357A1 (en) * | 2006-06-30 | 2008-01-03 | Microsoft Corporation | Synchronizing dataflow computations, particularly in multi-processor setting |
GB0613289D0 (en) * | 2006-07-04 | 2006-08-16 | Imagination Tech Ltd | Synchronisation of execution threads on a multi-threaded processor |
JP2008097498A (ja) * | 2006-10-16 | 2008-04-24 | Olympus Corp | プロセッシング・エレメント、コントロール・ユニット、及びこれらを備える処理システム、分散処理方法 |
US8108845B2 (en) * | 2007-02-14 | 2012-01-31 | The Mathworks, Inc. | Parallel programming computing system to dynamically allocate program portions |
US7865778B2 (en) * | 2007-02-20 | 2011-01-04 | International Business Machines Corporation | Method and system for detecting synchronization errors in programs |
WO2009155483A1 (en) | 2008-06-20 | 2009-12-23 | Invensys Systems, Inc. | Systems and methods for immersive interaction with actual and/or simulated facilities for process, environmental and industrial control |
JP2010033555A (ja) * | 2008-06-30 | 2010-02-12 | Olympus Corp | コントロール・ユニット、分散処理システム及び分散処理方法 |
US20100281469A1 (en) * | 2009-04-30 | 2010-11-04 | Nec Laboratories America, Inc. | Symbolic predictive analysis for concurrent programs |
US8127060B2 (en) | 2009-05-29 | 2012-02-28 | Invensys Systems, Inc | Methods and apparatus for control configuration with control objects that are fieldbus protocol-aware |
US8463964B2 (en) | 2009-05-29 | 2013-06-11 | Invensys Systems, Inc. | Methods and apparatus for control configuration with enhanced change-tracking |
US9959572B2 (en) | 2009-12-10 | 2018-05-01 | Royal Bank Of Canada | Coordinated processing of data by networked computing resources |
US9979589B2 (en) | 2009-12-10 | 2018-05-22 | Royal Bank Of Canada | Coordinated processing of data by networked computing resources |
EP2510451B1 (de) | 2009-12-10 | 2019-08-28 | Royal Bank Of Canada | Synchronisierte datenverarbeitung über vernetzte computerressourcen |
US9940670B2 (en) | 2009-12-10 | 2018-04-10 | Royal Bank Of Canada | Synchronized processing of data by networked computing resources |
US10057333B2 (en) | 2009-12-10 | 2018-08-21 | Royal Bank Of Canada | Coordinated processing of data by networked computing resources |
US9952620B2 (en) * | 2014-04-10 | 2018-04-24 | Intel Corporation | Time-synchronizing a group of nodes |
DE102017209697A1 (de) * | 2016-06-13 | 2017-12-14 | Denso Corporation | Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeuginterne Vorrichtung |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4295193A (en) * | 1979-06-29 | 1981-10-13 | International Business Machines Corporation | Machine for multiple instruction execution |
US4412303A (en) * | 1979-11-26 | 1983-10-25 | Burroughs Corporation | Array processor architecture |
JPS6043535B2 (ja) * | 1979-12-29 | 1985-09-28 | 富士通株式会社 | 情報処理装置 |
US4435758A (en) * | 1980-03-10 | 1984-03-06 | International Business Machines Corporation | Method for conditional branch execution in SIMD vector processors |
US4468736A (en) * | 1982-06-08 | 1984-08-28 | Burroughs Corporation | Mechanism for creating dependency free code for multiple processing elements |
US4667290A (en) * | 1984-09-10 | 1987-05-19 | 501 Philon, Inc. | Compilers using a universal intermediate language |
JPS6224366A (ja) * | 1985-07-03 | 1987-02-02 | Hitachi Ltd | ベクトル処理装置 |
US5021945A (en) * | 1985-10-31 | 1991-06-04 | Mcc Development, Ltd. | Parallel processor system for processing natural concurrencies and method therefor |
JPS6337431A (ja) * | 1986-08-01 | 1988-02-18 | Hitachi Ltd | 並列処理制御方法 |
JPH0795274B2 (ja) * | 1986-09-19 | 1995-10-11 | 株式会社日立製作所 | 配列添字解析方法 |
JPH0814817B2 (ja) * | 1986-10-09 | 1996-02-14 | 株式会社日立製作所 | 自動ベクトル化方法 |
US4965724A (en) * | 1987-03-05 | 1990-10-23 | Oki Electric Industry Co., Ltd. | Compiler system using reordering of microoperations to eliminate interlocked instructions for pipelined processing of assembler source program |
JPH01108638A (ja) * | 1987-10-21 | 1989-04-25 | Hitachi Ltd | 並列化コンパイル方式 |
JP2738692B2 (ja) * | 1988-01-29 | 1998-04-08 | 株式会社日立製作所 | 並列化コンパイル方法 |
US4989131A (en) * | 1988-07-26 | 1991-01-29 | International Business Machines Corporation | Technique for parallel synchronization |
JPH0630094B2 (ja) * | 1989-03-13 | 1994-04-20 | インターナショナル・ビジネス・マシーンズ・コーポレイション | マルチプロセツサ・システム |
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 |
US5317734A (en) * | 1989-08-29 | 1994-05-31 | North American Philips Corporation | Method of synchronizing parallel processors employing channels and compiling method minimizing cross-processor data dependencies |
JPH03119416A (ja) * | 1989-10-03 | 1991-05-21 | Toshiba Corp | コンピュータシステム |
US5119495A (en) * | 1989-12-21 | 1992-06-02 | Bull Hn Information Systems Inc. | Minimizing hardware pipeline breaks using software scheduling techniques during compilation |
JPH04211830A (ja) * | 1990-02-05 | 1992-08-03 | Matsushita Electric Ind Co Ltd | 並列化コンパイル方式 |
US5261067A (en) * | 1990-04-17 | 1993-11-09 | North American Philips Corp. | Method and apparatus for providing synchronized data cache operation for processors in a parallel processing system |
JP3032031B2 (ja) * | 1991-04-05 | 2000-04-10 | 株式会社東芝 | ループ最適化方法及び装置 |
US5434995A (en) * | 1993-12-10 | 1995-07-18 | Cray Research, Inc. | Barrier synchronization for distributed memory massively parallel processing systems |
-
1989
- 1989-07-27 DE DE68927946T patent/DE68927946T2/de not_active Expired - Lifetime
- 1989-07-27 EP EP89201976A patent/EP0353819B1/de not_active Expired - Lifetime
- 1989-08-01 JP JP1198085A patent/JP2947356B2/ja not_active Expired - Lifetime
-
1997
- 1997-04-15 US US08/839,731 patent/US5802374A/en not_active Expired - Fee Related
- 1997-06-10 US US08/871,562 patent/US5787272A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH02110763A (ja) | 1990-04-23 |
JP2947356B2 (ja) | 1999-09-13 |
US5802374A (en) | 1998-09-01 |
EP0353819A3 (de) | 1991-07-17 |
DE68927946D1 (de) | 1997-05-15 |
EP0353819B1 (de) | 1997-04-09 |
US5787272A (en) | 1998-07-28 |
EP0353819A2 (de) | 1990-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE68927946T2 (de) | Verfahren und Vorrichtung für die Synchronisierung von parallelen Prozessoren unter Verwendung einer unscharf definierten Sperre | |
DE69031100T2 (de) | Interprozessor-Datenabhängigkeit minimierendes Übersetzungsverfahren | |
DE69032381T2 (de) | Vorrichtung und Verfahren für die kollektive Verzweigung in einem Mehrbefehlsstrommultiprozessor | |
DE69102065T2 (de) | Eine arithmetische einheit für strukturarithmetik. | |
DE68921906T2 (de) | Verfahren für ein Multiprozessorsystem mit sich selbst zuordnenden Prozessoren. | |
DE68927218T2 (de) | Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor | |
DE69130723T2 (de) | Verarbeitungsgerät mit Speicherschaltung und eine Gruppe von Funktionseinheiten | |
DE3751503T2 (de) | Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen. | |
EP0689694B1 (de) | Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren | |
DE19914210B4 (de) | Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung | |
DE69021659T2 (de) | Verfahren und Vorrichtung zur reihenweisen Parallelprogrammfehlersuche. | |
DE69622305T2 (de) | Verfahren und Gerät für einen optimierenden Kompiler | |
DE3650156T2 (de) | Auf regeln basiertes datenwiederauffindverfahren und anordnung. | |
DE3650696T2 (de) | Paralleles prozessorsystem und zugehöriges verfahren zur behandlung von natürlichen nebenläufigkeiten | |
DE3586603T2 (de) | Datenprozessor fuer interpretierende und kompilierte sprache. | |
DE19506435C2 (de) | Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten | |
DE2234867A1 (de) | Anordnung in datenverarbeitungsanlagen zum steuern der verarbeitung zweier voneinander unabhaengiger programme | |
DE2505843A1 (de) | Datenverarbeitungsanlage mit datenstromgesteuerter simultanverarbeitung | |
DE10297624T5 (de) | Steuerung von Kompatibilitätsgraden von Binärcode-Übersetzungen zwischen Befehlssatzarchitekturen | |
DE2758830A1 (de) | Rechenvorrichtung | |
DE69032394T2 (de) | Minimierung von Pipelineunterbrechungen mittels Software-Ablaufplanungsverfahren während der Kompilation | |
DE3688738T2 (de) | Musteradressierbarer speicher. | |
DE3855524T2 (de) | Arithmetik-Parallelverarbeitungseinheit und zugehöriger Kompilator | |
DE19526008A1 (de) | Vertikal partitionierter, primärer Befehls-Cache-Speicher | |
DE69902221T2 (de) | Speicherschaltungen mit eingebautem Selbsttest |
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: KONINKLIJKE PHILIPS ELECTRONICS N.V., EINDHOVEN, N |
|
8328 | Change in the person/name/address of the agent |
Representative=s name: EISENFUEHR, SPEISER & PARTNER, 10178 BERLIN |
|
8327 | Change in the person/name/address of the patent owner |
Owner name: NXP B.V., EINDHOVEN, NL |