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 Sperre

Info

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
Application number
DE68927946T
Other languages
English (en)
Other versions
DE68927946D1 (de
Inventor
Michael Abraham Epstein
Rajiv Gupta
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NXP BV
Original Assignee
Philips Electronics NV
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Philips Electronics NV filed Critical Philips Electronics NV
Application granted granted Critical
Publication of DE68927946D1 publication Critical patent/DE68927946D1/de
Publication of DE68927946T2 publication Critical patent/DE68927946T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/458Synchronisation, e.g. post-wait, barriers, locks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation 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.
  • HINTERGRUND DER ERFINDUNG
  • 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.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • 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.
  • KURZE BESCHREIBUNG DER ZEICHNUNG
  • 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.
  • DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • 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:
  • Bedingung 1:
  • Ji liest nicht aus einem Speicherplatz aus, an den Ji+1 schreibt; und
  • Bedingung 2:
  • 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.
DE68927946T 1988-08-02 1989-07-27 Verfahren und Vorrichtung für die Synchronisierung von parallelen Prozessoren unter Verwendung einer unscharf definierten Sperre Expired - Lifetime DE68927946T2 (de)

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)

* Cited by examiner, † Cited by third party
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
US6101181A (en) * 1997-11-17 2000-08-08 Cray Research Inc. Virtual channel assignment in large torus systems
US6230252B1 (en) 1997-11-17 2001-05-08 Silicon Graphics, Inc. Hybrid hypercube/torus architecture
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
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
US6438747B1 (en) * 1999-08-20 2002-08-20 Hewlett-Packard Company Programmatic iteration scheduling for parallel processors
US6674720B1 (en) 1999-09-29 2004-01-06 Silicon Graphics, Inc. Age-based network arbitration system and method
US6751698B1 (en) 1999-09-29 2004-06-15 Silicon Graphics, Inc. Multiprocessor node controller circuit 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
US7366873B1 (en) 2003-08-18 2008-04-29 Cray, Inc. Indirectly addressed vector load-operate-store method and apparatus
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
US8307194B1 (en) 2003-08-18 2012-11-06 Cray Inc. Relaxed memory consistency model
US7735088B1 (en) 2003-08-18 2010-06-08 Cray Inc. Scheduling synchronization of programs running as streams on multiple processors
US7421565B1 (en) 2003-08-18 2008-09-02 Cray Inc. Method and apparatus for indirectly addressed vector load-add -store across multi-processors
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
US7437521B1 (en) 2003-08-18 2008-10-14 Cray Inc. Multistream processing memory-and barrier-synchronization method and apparatus
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
US8271993B2 (en) * 2005-03-04 2012-09-18 Hewlett-Packard Development Company, L.P. Method and apparatus for facilitating pipeline throughput
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
CN102124432B (zh) 2008-06-20 2014-11-26 因文西斯系统公司 对用于过程控制的实际和仿真设施进行交互的系统和方法
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
US10057333B2 (en) 2009-12-10 2018-08-21 Royal Bank Of Canada Coordinated processing of data by networked computing resources
US9940670B2 (en) 2009-12-10 2018-04-10 Royal Bank Of Canada Synchronized 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
CA3109739A1 (en) 2009-12-10 2011-01-11 Royal Bank Of Canada Synchronized 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)

* Cited by examiner, † Cited by third party
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

Also Published As

Publication number Publication date
EP0353819B1 (de) 1997-04-09
DE68927946D1 (de) 1997-05-15
EP0353819A3 (de) 1991-07-17
JP2947356B2 (ja) 1999-09-13
EP0353819A2 (de) 1990-02-07
US5787272A (en) 1998-07-28
US5802374A (en) 1998-09-01
JPH02110763A (ja) 1990-04-23

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
DE69107460T2 (de) Assoziativer speicher.
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.
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.
DE2234867A1 (de) Anordnung in datenverarbeitungsanlagen zum steuern der verarbeitung zweier voneinander unabhaengiger programme
DE3750028T2 (de) Pipelineprozessor mit schwacher Kopplung.
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
DE2548720A1 (de) Mikroprogramm-steuerwerk
DE2617485A1 (de) Verfahren und schaltungsanordnung zur abarbeitung von mikrobefehlsfolgen in datenverarbeitungsanlagen

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