DE68924934T2 - Parallelsynchronisationstechnik. - Google Patents

Parallelsynchronisationstechnik.

Info

Publication number
DE68924934T2
DE68924934T2 DE68924934T DE68924934T DE68924934T2 DE 68924934 T2 DE68924934 T2 DE 68924934T2 DE 68924934 T DE68924934 T DE 68924934T DE 68924934 T DE68924934 T DE 68924934T DE 68924934 T2 DE68924934 T2 DE 68924934T2
Authority
DE
Germany
Prior art keywords
synchronization
processor
processors
arbiter
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE68924934T
Other languages
English (en)
Other versions
DE68924934D1 (de
Inventor
Harold Stuart Stone
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE68924934D1 publication Critical patent/DE68924934D1/de
Application granted granted Critical
Publication of DE68924934T2 publication Critical patent/DE68924934T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Description

  • Die Erfindung bezieht sich auf das Gebiet der Datenverarbeitung und ist insbesondere auf die Synchronisation paralleler Prozesse gerichtet.
  • Gottlieb u.a. stellten in einem Artikel mit dem Titel "The NYU Ultracomputer-Designing a MIMD, Shared Memory Parallel Machine", IEEE Trans. Comp., Seiten 175-89, Eeb. 1983, eine Technik zur Parallelsynchronisation basierend auf der Verwendung einer "Abrufen-und-Zufügen" genannten Instruktion vor, die mit einem Netz von Schaltern eines Typs gekoppelt ist, der als ein "Kombinationsschalter" bekannt ist. Das beschriebene Schema ist das erste derartige Schema, das N Prozessoren gestattet, ihre Aktivitäten in einer Zeit zu synchronisieren, die geringer als linear mit der Anzahl von Prozessoren ansteigt. Praktisch ist die Synchronisationszeit eine feststehende Konstante, die von der Zahl der Stufen in dem Synchronisationsnetz abhängt. Die Zahl der Stufen wächst als Logarithmus der Anzahl der miteinander verbundenen Prozessoren.
  • Eine andere Annäherung, die von Yew u.a. in einem Artikel mit dem Titel "Distributing Hot-Spot Andressing in Large-scale Multiprocessors", IEEE Trans. on Computers, Bd. C-36, 5. 388-395, 1987, ausgeführt wird, simuliert die Kombinationsoperation in der Software, wobei im Endeffekt Konfliktpunkte auf viele verschiedene Speicher verteilt werden. Yew u.a. berichten, daß dies bei der Verbesserung der Leistung wirksam ist, ohne an dem Hardwarenachteil zu leiden, der erforderlich ist, um das Kombinieren zu unterstützen. Ihre Technik ist jedoch nur für einen eingeschränkten Satz von Anwendungen nützlich, für den das Kombinieren anwendbar ist.
  • Die US-Patentschrift 4 636 942 von Chen u.a. liefert zwei Prozessoren, die einen Satz gemeinsamer Register gemeinsam benutzen. Sie liefert nicht ausdrücklich das Kombinieren. Außerdem ist das Kombinieren insbesondere für ein Zweiprozessorsystem nicht attraktiv und es ist tatsächlich für Systeme mit einer großen Anzahl von Prozessoren, z.B. 128 oder mehr, von größtem Nutzen. Chen u.a. beschreiben eine Idee, die sich auf nicht mehr als einige Prozessoren erstreckt und die für die Verwendung in Systemen mit 128 oder mehr Prozessoren wie beschrieben nicht machbar oder attraktiv ist.
  • Die US-Patentschrift 4 598 400 von Hillis bespricht, wie man Nachrichten in einem Verbindungsnetz leitet, das eine sehr große Anzahl von Prozessoren enthält. Hillis widmet sich nur dem Weiterleiten und überhaupt nicht der Synchronisation der Prozessoraktivität. Es gibt keine Möglichkeit der Feststellung, ob zwei Anforderungen zu einer einzigen Anforderung kombiniert werden können. Daher widmet sich Hillis einem anderen Problem und ist für das Synchionisations/Kombinationsproblem nicht geeignet.
  • Die US-Patentschrift 4 523 273 von Adams u.a. verwendet ein Mehrschichtenschaltnetz und vergrößert das Basisnetz durch Hinzufügen einer Extrastufe. Der Zweck der Extrastufe ist es, überzählige Pfade bereitzustellen, so daß im Falle eines Fehlers innerhalb des Netzes eine Nachricht auf einem alternativen Pfad zu dem Bestimmungsort geleitet werden kann. Adams u.a. beschäftigt sich mit der Diskussion des Weiterleitens beim Vorliegen von Fehlern in dem Netz und ist nicht auf das Kombinieren gerichtet.
  • Die US-Patentschrift 4 412 303 von Barnes u.a. ist auf ein Mehrschichtennetz und eine Synchronisationseinheit gerichtet und für einen Typ der Synchronisation geeignet, der oft eine "Grenz-" Synchronisation genannt wird. Obwohl dies eine wichtige Funktion ist, ist es kein allgemeines Verfahren der Synchronisation. Bei Barnes u.a. muß ein Prozessor an einem Synchronisationspunkt anhalten und durch diesen Prozessor oder für diesen Prozessor wird durch irgendeinen anderen Prozessor keine nützliche Arbeit ausgeführt, bis die Synchronisation abgeschlossen ist. Der Synchronisator von Barnes u.a. verringert weder die Speicheranforderungen durch Kombinationsanforderungen, noch kann er einer Mehrzahl von Anforderern gestatten, Anforderungen gleichzeitig in einer Warteschlange zu synchronisieren, z.B. durch die Erstellung gleichzeitiger Aktualisierungen eines Warteschlangenzeigers.
  • Die US-Patentschrift 4 365 292 von Barnes u.a. richtet sich auf die Implementierung eines Omeganetzes, führt kein Kombinieren aus und synchronisiert keine Prozessoren.
  • Die US-Patentschrift 4 590 555 von Bourrez ist auf ein Mittel zum Synchronisieren von Prozessen gerichtet, aber das ist eine kleinere Fähigkeit des Patentes. Sein wesentlicher Vorteil soll Prozesse zwischen Prozessoren zuordnen. Wenn ein Prozeß Service erfordert, wird ein Signal dieser Anforderung aufgezeichnet, und der Prozeß wird angehalten, bis ein Prozessor zugeordnet ist. Wenn ein laufender Prozeß einen Punkt erreicht, an dem er zeitweise anhalten kann, gibt er einen Prozessor frei und der Prozessor wird einem Prozeß neu zugeordnet, der bereit ist und eine Zuordnung erwartet. Bourrez richtet sich auf ein Hardwaremittel, um die Zuordnung zu ermöglichen. Das Neuzuordnen erfolgt, wenn ein Prozeß wegen einer Synchronisationsanforderung nicht fortfahren kann. Daher liefert die Hardware auch einen Mechanismus für Synchronisationsprozesse durch ein Mittel, durch welches ein Prozeß zurückgestellt werden kann, während seine Aktivität mit einem anderen Prozeß synchronisiert wird. Es gibt keine Möglichkeit des Kombinierens von Aktionen, und es wird kein Mittel für einen Prozessor geliefert, um mit einem anderen an dem Punkt einer Synchronisation zu kommunizieren. Dies ist wichtig, wenn ein Prozessor als ein Agent für einen anderen wirken soll.
  • Die US-Patentschrift 4 306 286 von Cocke u.a. behandelt ausschließlich die Verbindung einer Mehrzahl von Prozessoren, aber sie behandelt nicht das Problem von Kombinationsoperationen, um Konflikte zu verringern. Das Patent richtet sich auf die Logik- simulation, und sein Schaltnetz liefert nur die Möglichkeit, Prozessoren miteinander zu verbinden. Das Schaltnetz liefert kein Mittel dafür, daß ein Prozessor als der Agent für einen anderen wirkt.
  • Die US-Patentschrift 4 101 960 von Stokes u.a. beschreibt einen wissenschaftlichen Mehrprozessor, der ein neuartiges Führungsnetz innerhalb eines Schalters hat. Das Führungsnetz liefert konfliktfreien Zugriff auf verschiedene Anteile einer Matrix, so daß auf Zeilen, Spalten, Diagonalen und einige Untermatrizen als individuelle Einheiten in einem Maschinenzyklus pro Einheit zugegriffen werden kann. Stokes u.a. richtet sich auf die Verringerung von Zugriffskonflikten. Konflikte werden durch die Anordnung von Daten im Speicher und durch die Zugriffsschalter auf die Daten verringert, wie entgegengesetzt die Zugriffskonflikte durch Zuordnen der Arbeit eines Prozessors zu einem anderen Prozessor verringert werden, so daß ein Prozessor im Leerlauf sein kann, während ein anderer Prozessor als sein Agent wirkt. Bei Stokes u.a. gibt es keine solche Möglichkeit.
  • Die US-Patentschrift 4 051 551 von Kuck u.a. beschreibt einen Schalter, der auf Daten zugreift und sie ausrichtet, so daß sie mehrdimensionale Strukturen bilden. Der Schalter liefert kein Mittel zum Kombinieren von Anforderungen.
  • Die US-Patentschrift 4 661 900 von Chen u.a. sorgt für den Zugriff auf einen gemeinsam benutzten Speicher von getrennten Prozessoren und sorgt dafür, daß die Prozessoren ihre Aktivitäten durch gemeinsam benutzte Register synchronisieren. Chen u.a. verwenden nicht die Idee des Kombinierens von Zugriffen, so daß ein Prozessor als ein Agent für einen anderen wirken kann.
  • Die US-Patentschrift 4 247 892 von Lawrence sorgt für die Verbindung von Maschinen mit Warteschlangen an Schnittstellen. Sie berührt nicht das Problem von Konflikten für gemeinsam benutzte Speicher, weil die Matrizenstruktur einen gemeinsam benutzten Speicher hat. Daher berührt sie nicht das Absetzen von Spitzen- verkehrkonflikten und die Verwendung des Kombinierens, um den Spitzenverkehr im gemeinsam benutzten Speicher durch Kombinieren von zwei oder mehr Anforderungen zu einer Einzelanforderung zu verringern.
  • GB 2 178 572A von Jesshope liefert ein Schema für das dynamische Neukonfigurieren von 1-Bit-Verarbeitungselementen in Ketten variabler Längen, so daß die Neukonfiguration Gruppen leistungsfähigerer Prozessoren erzeugt. Eingeschlossen ist ein Mittel der Synchronisation, das in den Augenblicken erforderlich ist, in denen der Prozessor neu konfiguriert wird. Die Matrix der Prozessoren hat keinen gemeinsam benutzten Speicher, und daher zeigt sie kein Konfliktproblem an dem gemeinsam benutzten Speicher. Es gibt keine Möglichkeit für einen Prozessor, als ein Agent für einen anderen zu wirken.
  • De Milts "Inter-quad Synchronization System For Modular Processing Systems", IBM Technical Disclosure Bulletin, Bd. 16, Nr. 2, Juli 1973, liefert einen Weg für das Synchronisieren einer Mehrzahl von Prozessoren. Wenn von mehreren Prozessoren jeder auf eine gemeinsam benutzte Ressource zugreifen muß, wird ein Mittel zum Auswählen eines der Anforderer und zum Abweisen der anderen einbezogen.
  • Gemäß der vorliegenden Erfindung wird ein alternatives Mittel zur Synchronisation beschrieben, das sowohl Hardware als auch Software kombiniert, um die Kosten der Implementierung ohne ernsthafte Beeinträchtigung der Leistung zu reduzieren. Arithmetische Einheiten an Schaltknoten werden durch einfache Vergleicher ersetzt und Speicheranforderungen, die durch das Kombinieren entstehen, werden entfernt, wodurch erheblich die Kosten der Schaltknoten und möglicherweise auch die Verzögerung pro Knoten verringert werden.
  • Es ist eine Aufgabe der Erfindung, eine verbesserte Technik des Synchronisierens paralleler Prozesse bereitzustellen.
  • Es ist eine andere Aufgabe der Erfindung, Kombinationsoperationen zur Synchronisation in einem Mehrprozessor mit einer Verringerung der Hardware bereitzustellen.
  • Es ist noch eine andere Aufgabe der Erfindung, eine verbesserte Technik des Synchronisierens paralleler Prozessoren bereitzustellen, wobei der Synchronisator eine Gleichheitsprüfung statt eines komplizierteren Größenvergleichs ausführt.
  • Es ist noch eine andere Aufgabe der Erfindung, eine Synchronisationstechnik bereitzustellen, wobei ein Synchronisator mit zwei Eingängen eine neue Anforderung von jedem Eingang in jedem Zyklus kontinuierlich annehmen kann, ohne irgendeine Anforderung zurückzuweisen und das Wiederholen von Anforderungen zu erzwingen.
  • Es ist eine weitere Aufgabe der Erfindung, eine Synchronisationstechnik bereitzustellen, die Querschienenschalter verwendet, die Vergleicher an Schaltpunkten aufweisen, einschließlich eines zusätzlichen Arbeitsmodus, der einen Querschienenschalter aktiviert, Kombinationsoperationen zu unterstützen.
  • Es ist noch eine weitere Aufgabe der Erfindung, eine Synchronisationstechnik bereitzustellen, die mehrstufige Schalter verwendet, die Vergleicher an Schaltpunkten aufweisen, einschließlich eines zusätzlichen Arbeitsmodus, der jeden internen Schalter aktiviert, Kombinationsoperationen zu unterstützen.
  • Es ist noch eine weitere Aufgabe der Erfindung, eine Synchronisationslogik innerhalb eines mehrstufigen Schalters bereitzustellen, die es gestattet, synchronisierte Anforderungen direkt von der Stufe zurückzusenden, an der die Synchronisation auftrat, ohne alle Stufen in beide Richtungen zu durchqueren.
  • Es ist noch eine weitere Aufgabe der Erfindung, eine Synchronisationslogik in einem mehrstufigen Schalter bereitzustellen, wobei verschiedene Schalter innerhalb des mehrstufigen Schalt- netzes nicht alle die gleiche Synchronisationfähigkeit haben müssen.
  • Es ist noch eine andere Aufgabe der Erfindung, eine Parallelsynchronisationstechnik bereitzustellen, die ein Kombinationsnetz verwendet, in dem zwei Prozesse synchronisiert werden, indem ein Prozeß die Operation zurückstellt, während der zweite Prozeß der Agent für den ersten Prozeß wird, während er fortfährt, für sich selbst zu arbeiten.
  • Es ist noch eine andere weitere Aufgabe der Erfindung, eine verbesserte Synchronisationstechnik bereitzustellen, wobei der Statusspeicher in dem Prozessor statt in dem Synchronisator angeordnet ist.
  • Es ist noch eine andere weitere Aufgabe der Erfindung, eine verbesserte Synchronisationstechnik bereitzustellen, wobei keine sequentielle Logik zum Zwecke der Synchronisation erforderlich ist und für Operanden von Synchronisationsinstruktionen innerhalb des Schaltnetzes kein Speicher erforderlich ist.
  • Eine Parallelsynchronisationstechnik, die ein Kombinationsnetz verwendet, in dem zwei Prozesse synchronisieren, Prozeß von der Operation zurückstellen, während der zweite Prozeß der Agent für den ersten Prozeß wird, während er fortfährt, für sich selbst zu arbeiten. Die Wirkung des derartigen Kombinierens soll die Zugriffsanforderungen und nachfolgende Konflikte verringern, die von mehrfachen gleichzeitigen Anforderungen an eine gemeinsame Variable verursacht werden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Fig. 1 ist ein Blockdiagramm eines Basissynchronisationsnetzes;
  • Fig. 2 ist ein Blockdiagramm eines Synchronisationsnetzes mit integriertem Speicherzugriff;
  • Fig. 3 ist ein Blockdiagramm eines getrennten Synchronisationsnetzes;
  • Fig. 4 ist eine Blockdiagrammdarstellung eines Baumes, der für Synchronisationsanforderungen verwendet wird;
  • Fig. 5 ist ein Flußdiagramm einer Synchronisationsanforderung;
  • Fig. 6 ist ein Flußdiagramm des Synchronisationsinstruktionsverfahrens;
  • Fig. 7 ist ein Flußdiagramm der Prozessoraktivität nach dem Empfangen von "Synchronisation anhalten";
  • Fig. 8 ist ein Diagramm der Anfangsdatenstruktur, die für das Kombinieren verwendet wird;
  • Fig. 9 ist ein Diagramm der Datenstruktur nachdem "Synchronisation fortsetzen" verarbeitet wurde;
  • Fig. 10 ist ein Diagramm der Datenstruktur an dem Punkt, an dem ein Agent vorbereitet wird, Werte an seine Klienten zurückzusenden;
  • Fig. 11 ist ein Flußdiagramm der Aktion, die für die Antwort "Synchronisation fortsetzen" ausgeführt wird;
  • Fig. 12 ist ein Flußdiagramm der Funktionen "Werte zu einem Klienten zurücksenden" und "Klient aktivieren";
  • Fig. 13 ist ein Blockdiagramm eines Querschienenschaltnetzes;
  • Fig. 14 ist ein Blockdiagramm eines Schaltpunktes in einem Querschienenschalter;
  • Fig. 15 ist ein Flußdiagramm der Synchronisationsfunktion an einem Schaltpunkt;
  • Fig. 16 ist ein Blockdiagramm eines Schaltpunktarbiters, der Synchronisationsoperationen unterstützt;
  • Fig. 17 ist ein Blockdiagramm eines Mehrstufenschaltnetzes; und
  • Fig. 18 ist ein Flußdiagramm der Funktion eines Schaltmoduls in einem mehrstufigen Netz auf einer Stufe, die nicht die letzte Stufe ist.
  • Die Erfindung liefert eine alternative Technik für das Synchronisieren paralleler Prozesse. Sie ist weniger hardwareintensiv als Techniken, die auf Kombinationsschaltern basieren, dennoch kann die erreichbare Leistung nahe an der Leistung sein, die durch Kombinationsschalter zu erreichen ist.
  • Die Erfindung wird in vier Teilen wie folgt beschrieben:
  • 1. die allgemeine Hardwarestruktur für die Synchronisation,
  • 2. die unterstützende Softwareimplementierung, um die Hardware zu nutzen,
  • 3. die in Querschienenschaltern verwendete Hardwarestruktur, und
  • 4. die in mehrstufigen Schaltern verwendete Hardwarestruktur.
  • 1. Allgemeine Hardwarebeschreibung
  • Die allgemeine Hardware der Erfindung ist in FIG. 1 dargestellt. Die Figur zeigt N Prozessoren 10, ein Verbindungsnetz 12 und Synchronisatoren 14. Jeder Synchronisator 14 hat zwei Eingänge und entscheidet somit zwischen zwei Anforderungen.
  • Die Erfindung ist vorgesehen, in einer Umgebung zu arbeiten, in dem Prozessoren auf getrennte, unabhängige Speicher in irgendeinem herkömmlichen Mehrprozessorsystem zugreifen können. FIG. 2 zeigt einen möglichen Kontext, in dem ein Netz 26 die Prozessoren 20 sowohl mit Synchronisatoren 22 als auch Speichern 24 verbindet. In diesem System kann ein Synchronisator 22 zwischen dem Verbindungsnetz 26 und dem Speicher 24 angeordnet werden, so daß er entweder zwei Anforderungen synchronisieren kann oder als ein Leitwegprogramm für individuelle Anforderungen dienen kann, die zwischen Prozessoren und Speichern übermittelt werden.
  • Ein alternativer Kontext für die Erfindung wird in FIG. 3 ge- zeigt. In diesem System sind die Prozessoren 32 mit Speichern 30 durch ein Netz 36 verbunden, das für diese Funktion bestimmt ist. Die Synchronisationen werden von einem getrennten Netz 38 behandelt, das die Synchronisationsanforderungen an die Synchronisationsmodule 34 übermittelt.
  • Somit kann die Erfindung in mindestens zwei Kontexten verwendet werden:
  • 1. der Synchronisator wird innerhalb eines Verbindungsnetzes verwendet, das Prozessoren mit Speichern verbindet (wie in FIG. 2 gezeigt).
  • 2. der Synchronisator wird als getrennter und selbständiger Hardwareblock verwendet, der nur mit Prozessoren verbunden ist (FIG. 3).
  • Das Verbindungsnetz ist in FIG. 2 nicht gekennzeichnet. Sein genauer Aufbau ist kein wesentlicher Teil dieser Erfindung. Später wird gezeigt, wie zwei verschiedene Verbindungsnetze an die Erfindung angepaßt werden können. Die Auswahl des Netzes beeinflußt die Leistung und die Kosten, aber nicht die Richtigkeit der Operation.
  • Die Parallelsynchronisation der Prozessoren in FIG. 2 wird mit- tels einer "Synchronisation" genannten Instruktion ausgeführt, die von den Prozessoren abgesetzt wird. Synchronisation liefert die Feststellung kombinierbarer Anforderungen und die Synchronisation. In dem Fall, daß kombinierbare Anforderungen festgestellt werden, werden das Kombinieren, Einreihen in die Warteschlange und arithmetische Operationen von der Software ausgeführt. Obwohl diese Operationen, wenn sie in der Software implementiert sind, zeitaufwendiger sind, als wenn sie in einem Kombinationsschalter implementiert sind, verringern zwei Faktoren die Wirkung auf die Softwarebetriebskosten:
  • 1. Das Kombinieren erfolgt mit geringer Freqenz, so daß die zusätzlichen Kosten pro Arbeitsgang keine große Wirkung auf die Leistung haben,
  • 2. Die Beseitigung der Logik in den Synchronisationsschaltern führt zu einem viel schnelleren Schalten, so daß alle Operationen, welche die Verwendung der Synchronisationsverbindungen erfordern, in dieser Implementierung schneller sind als in einer Kombinationsschalterimplementierung.
  • Um die Wirkung einer Abrufen-und-Zufügen-Synchronisation zu simulieren, muß jeder der N Synchronisationsprozessoren logN Synchronisationen ausführen, wie durch den Synchronisationsbaum in FIG. 4 dargestellt. Dieser Baum ist im wesentlichen der gleiche wie der Synchronisationsbaum, der in einem Kombinationsnetz existiert. In dem für diese Erfindung erforderlichen Schema zwingt die Software jeden Prozessor, einem Pfad in dem Baum von einem Blatt am Wipfel zu der Wurzel an dem Boden zu folgen, oder früher zu enden, falls eine Kombinationsoperation stattfindet.
  • Der Baum in FIG. 4 ist eine abstrakte Darstellung der Anforderungen, die zu kombinieren sind. Die Software an jedem Prozessor kann die Baumdarstellung jedesmal aufbauen und sichern, wenn die Software eine Reihenfolge der zu verwendenden Anforderungen bestimmen muß, um auf eine gemeinsam benutzte Variable zuzugreifen. Der Zweck der Baumdarstellung besteht darin, eine Reihenfolge kombinierbarer Anforderungen von jedem Prozessor zu erzeugen.
  • In FIG. 4 sind die Anforderungen von 0 bis 7 numeriert, welche die Anforderungen für 8 Prozessoren darstellen. Jeder Knoten wird mit Nummern von 1 bis 7 gekennzeichnet. Die Kennmarken werden "Synchronisationsadressen" genannt und sind Operanden von Synchronisationsinstruktionen, die von den Anforderern abzusetzen sind. Wie diese Kennmarken abgeleitet werden, wird mit Bezug auf FIG. 6 besprochen.
  • Eine Synchronisationsinstruktion nimmt die folgende Form an: Synchronisation (Synchronisationsadresse, Operandenadresse);
  • Die Synchronisationsadresse richtet die Anforderung an einen speziellen Synchronisator des Netzes in FIG. 2 und die Operandenadresse trägt Informationen, die in dem Fall, daß eine Synchronisation auftritt, auszutauschen sind. Obwohl jede Synchronisationsadresse mit einem speziellen Synchronisator verbunden ist, kann jeder Synchronisator viele verschiedene mit ihm verbundene Synchronisationsadressen haben. Synchronisationsadressen verhalten sich in dieser Hinsicht wie Speicheradressen, da jede Speicheradresse mit einem speziellen Speichermodul verbunden ist, aber ein Speichermodul kann viele verschiedene Speicheradressen enthalten.
  • Nach dem Absetzen einer Synchronisationsinstruktion durch einen Prozessor 20 werden die Synchronisationsadresse und der Synchronisationsoperand durch das Verbindungsnetz 26 zu dem Zielsynchronisator 22 übertragen. Der Synchronisator 22 wirkt auf die Instruktion und sendet einen Ergebniscode und einen Ergebnisoperanden zurück. Es gibt drei mögliche Ergebnisse einer Synchronisationsoperation:
  • 1. Keine Synchronisation.
  • 2. Synchronisation fortsetzen.
  • 3. Synchronisation anhalten.
  • Die Handlung eines Synchronisators als Antwort auf ein Paar von Synchronisationsanforderungen ist in FIG. 5 dargestellt. Im Logikblock 50 testet der Synchronisator, ob beide Eingänge in den Synchronisator aktive Anforderungen enthalten. Falls beide Eingänge leer sind, endet der Synchronisationszyklus durch Melden von "Keine Synchronisation" an einen Eingang, der eine aktive Anforderung hat, falls eine derartige Anforderung vorliegt.
  • Falls beide Eingänge aktive Anforderungen enthalten, testet am Logikblock 60 der Synchronisator, ob die Synchronisationsadressen gleich sind. Falls sie ungleich sind, wird an beide Anforderer "Keine Synchronisation" zurückgesendet.
  • Logikblock 70 zeigt, wie der Synchronisator auf Anforderungen antwortet, die gleiche Synchronisationsadressen haben. Eingang 1 empfängt ein Ergebnis "Synchronisation fortsetzen", und er empfängt auch die Operandenadresse von Eingang 2.
  • Im Logikblock 80 wird gezeigt, daß Eingang 2 ein Ergebnis "Synchronisation anhalten" und die Operandenadresse von Eingang 1 empfängt. Für die Zwecke dieser Erfindung ist es wahlfrei, ob Eingang 2 die Operandenadresse von Eingang 1 empfängt oder nicht. Die zusätzlich erforderliche Logik zur Übertragung des Operanden von Eingang 1 zu Eingang 2 erhöht die Kosten der Implementierung, aber es ist auch möglich, die zusätzliche Information zu verwenden, um die nachfolgenden Verarbeitungskosten zu verringern. Die Erfindung gestattet es, beide Verfahrensweisen nach der Entscheidung des Anwenders zu verwenden.
  • Das Verhalten der Synchronisatorimplementierung von FIG. 5 ist so, daß ein Ergebnis "Keine Synchronisation" zurückgesendet wird, falls eine Anforderung einen Synchronisator erreicht, wenn der andere Synchronisatoreingang entweder leer ist oder eine nichtkombinierbare Anforderung enthält.
  • Wenn zwei nichtkombinierbare Anforderungen gleichzeitig an dem Synchronisator empfangen werden, wird jede Anforderung sofort in demselben Taktzyklus mit einem Ergebniscode "Keine Synchronisation" zurückgesendet. Es ist nicht notwendig, eine der Anforderungen für einen späteren Taktzyklus aufzuschieben, wie es für Speicheranforderungen der Fall ist. Diese Eigenschaft des Behandelns einer Mehrzahl von Anforderungen in einem Zyklus unterscheidet diese Erfindung von vielen anderen Techniken zur Behandlung von Speicheranforderungen und Synchronisation.
  • Falls zwei kombinierbare Anforderungen in demselben Taktzyklus empfangen werden, dann sendet der Synchronisator "Synchronisation fortsetzen" an eine Anforderung und "Synchronisation anhalten" an die andere Anforderung. Der Prozessor, der "Synchronisation fortsetzen" empfängt, empfängt ausreichend Informationen, um der Agent für den Prozessor zu werden, der "Synchronisation anhalten" empfängt. Für die unmittelbare Zukunft führt der fortsetzende Prozessor Aktionen aus, welche die Arbeit ausführen, die für ihn selbst ebenso wie für andere Prozessoren, für die er der Agent geworden ist, erforderlich sind. Ein Prozessor, der einen Agenten hat, der in seinem Interesse handelt, wird "Klient" dieses Agenten genannt. Wenn die Arbeit abgeschlossen ist, meldet der Agentenprozessor die Ergebnisse der Aktivität an die wartenden Klientenprozessoren, so daß sie die Operation fortsetzen können, als ob sie die Arbeit einzeln ausgeführt hätten. Jedoch verringert die Synchronisationsaktivität die Anforderungen an Verbindungsnetze und Speichersysteme, so wie sie Agenten zu Klientenprozessoren zuordnet, die anschließend leer werden, während die Agentenprozessoren in ihrem Interesse wirken.
  • Wenn ein System gering belastet ist, ist die Wahrscheinlichkeit des Kombinierens von Anforderungen sehr gering, aber die Synchronisationsoperationen fügen einen kleinen zeitlichen Systemaufwand zu der Gesamtzeit hinzu, die erforderlich ist, um die zu synchronisierenden Operationen auszuführen. Wenn Synchronisationsanforderungen häufig werden, erhöht sich die Wahrschein- lichkeit des Kombinierens stark und so wie sie sich erhöht, führt das Kombinieren von Anforderungen dazu, die Anforderungsbelastung zu verringern. Daher führt die Synchronisation dazu, das Verhalten eines Mehrprozessorcomputersystems durch das Verringern von Spitzenbelastungen der Synchronisationsaktivität zu stabilisieren.
  • 2. Softwaremäßige Auslastung der Synchronisationsmöglichkeit
  • Das Ziel ist es, Synchronisationsanforderungen auf eine Art abzusetzen, welche die Anforderungen unter den Synchronisatoren gleichmäßig verteilt. Der in FIG. 4 abgebildete Baum zeigt einen derartigen Weg des Verteilens von Anforderungen. Zu beachten ist, daß insgesamt N-1 einzelne Synchronisationsadressen an der Synchronisation von N Anforderungen beteiligt sind. Diese Synchronisationsadressen können auf eine Art erzeugt werden, welche die Adressen auf N verschiedene Synchronisatormodule verteilt. In dem Maß, in dem das Netz in FIG. 2 Anforderungen an N verschiedene Synchronisatoren ohne Konflikte leiten kann, wird das Netz eine hohe Synchronisationsrate unterstützen.
  • Falls Synchronisationen häufig in einem lokalen Teil eines parallelen Programms auftreten, kollidieren die Synchronisationen an einem Synchronisationsmodul. Die Wirkung einer derartigen Kollision veranlaßt, daß ein Paar von Anforderungen durch eine einzelne Anforderung ersetzt wird. Der Prozessor, der "Synchronisation fortsetzen" empfängt, wird der Agentenprozessor und kombiniert seine Anforderung mit der Anforderung des Partners, der "Synchronisation anhalten" empfängt. Der Agentenprozessor fährt dann mit der zusammengesetzten Anforderung fort. In FIG. 4 ist die Idee, daß zwei Anforderungen, die an einem oberen Knoten kombiniert wurden, als eine Einzelanforderung an den nächsttieferen Knoten übertragen werden. Es kann wieder ein Kombinieren auftreten. Schließlich taucht eine Anforderung an der Unterkante des Baumes auf. Diese zusammengesetzte Anforderung wird dann mit einer gemeinsam benutzten Variablen ausgeführt. Eine gemeinsam benutzte Variable ist eine Variable, die von mehr als einem Prozessor modifiziert wird, zum Beispiel eine ganze Zahl, zu der mehr als ein Prozessor ein Inkrement hinzufügt. Die Wirkung der zusammengesetzten Anforderung auf die gemeinsam benutzte Variable wird dann durch den Baum aufwärts geleitet. Jedes Task, das "Synchronisation fortsetzen" empfing, leitet Informationen an sein Partnertask weiter, das "Synchronisation anhalten" empfing, wobei das wartende Task freigegeben wird, um auf seinem Pfad aufwärts zurückzukehren, wobei die Schritte, die baumabwärts genommen wurden, zurückverfolgt werden.
  • Wenn ein Kombinieren auftritt, werden die Anforderungen an das Synchronisationsnetz und schließlich an eine Speicherzelle, die gemeinsam benutze Daten beinhaltet, verringert, wodurch die Bandbreitenanforderungen an die gemeinsam benutzten Daten verringert werden, und Warteschlangenverzögerungen an den gemeinsam benutzten Daten verringert werden, die anderenfalls auftreten könnten.
  • Die Basissoftwareschleife für jeden Prozessor erzeugt logN Synchronisationen an den Adressen, die in dem Baum von FIG. 4 gezeigt werden, beginnend an einem Blatt des Baumes und durch den Baum bis zu seiner Wurzel absteigend. N ist die Zahl der Prozessoren und die Maximalzahl konkurrierender Anforderungen. Für das in FIG. 4 gegebene Beispiel ist N gleich 8. Es wird angenommen, daß die Synchronisation eine Unterbrechung verursacht, wenn sie "Synchronisation fortsetzen" oder "Synchronisation anhalten" zurücksendet, und keine Unterbrechung, wenn sie "Keine Synchronisation" zurücksendet. Der Algorithmus in FIG. 6 wird von Prozessor i ausgeführt, um einen Pfad in der Baumdarstellung von FIG. 4 zu durchlaufen. Die erste Synchronisationsadresse, die von Prozessor i aufgesucht wird, ist durch trunc((i+N)/2) gegeben und nachfolgende Adressen werden durch nachfolgende gerundete Teilungen durch 2 erhalten, die durch das Verschieben der Adresse zu der rechten Bitposition für jeden nachfolgenden Zugriff implementiert sind. Die Funktion trunc(x) erzeugt den Integerteil von x. Zum Beispiel ist trunc(3,5) = 3,0 und trunc(3) = 3.
  • Der Logikblock 100 von FIG. 6 aktiviert das Prozessorunterbrechungssystem, so daß eine Unterbrechung auftritt, wenn eine Anforderung "Synchronisation anhalten" oder "Synchronisation fortsetzen" empfangen wird. Der Logikblock 110 initialisiert die Zählung, welche die Zahl der Iterationen der Hauptschleife steuert. Der Logikblock 120 berechnet die anfängliche Synchronisationsadresse für die Hauptschleife, die für Prozessor i durch (i+N) gegeben ist. Die Schleife beginnt am Logikblock 130 mit dem Rechtsverschieben der Synchronisationsadresse, um einen neuen Operanden für die Synchronisationsinstruktion zu erzeugen. Die Reihenfolge der von Logikblock 130 erzeugten Adressen entspricht der Reihenfolge von Knoten in dem Pfad von einem Blattknoten am Wipfel des Baumes in FIG. 4 zu dem Wurzelknoten am unteren Ende des Baumes.
  • Logikblock 140 setzt die Synchronisationsinstruktion an den Synchronisationsmodul ab. Die Schleifenzählung wird im Logikblock 150 dekrementiert und die Schleife wird neu gestartet, wenn der Logikblock 160 anzeigt, daß mehr Knoten verbleiben, die aufzusuchen sind. An dem Schleifenausgang aktualisiert der Prozessor die gemeinsam benutzte Variable, wie in Logikblock 170 angezeigt.
  • Als ein Beispiel der durch die gegebenen Funktionen erzeugten Reihenfolge von Adressen wird angenommen, daß es N=8 Prozessoren gibt und daß Prozessor 5 den Algorithmus in FIG. 6 ausführt. Die Synchronisationsadresse wird mit 13 initialisiert. Die erste erzeugte Adresse ist trunc(13/2) = 6, und die nachfolgenden Adressen sind 3 und 1. Diese Adressen sind dieselben wie die Knotennummern in dem Baumpfad von Eingang 5 zu der Baumwurzel in FIG. 4.
  • Falls keine Synchronisationen auftreten, werden alle Blöcke von FIG. 6 ausgeführt. Falls ein Prozessor ein "Synchronisation anhalten" oder "Synchronisation fortsetzen" erfährt, unterbricht er und setzt die Verarbeitung an den Blöcken fort, die in den FIG. 7 bis 10 gezeigt werden, wie unten beschrieben. Falls die Synchronisationsinstruktion relativ schnell ist, dann sind die Kosten der Ausführung der Schleife in FIG. 6 sehr niedrig, wenn keine Synchronisationen auftreten. Nur wenn Synchronisationen auftreten, wird eine Zeitstrafe auferlegt. Aber derartige Strafen werden durch die Einsparungen bei der Verarbeitung infolge des Kombinierens von Anforderungen ausgeglichen.
  • FIG. 7 zeigt die Handlung, die auftritt, wenn ein Prozessor "Synchronisation anhalten" empfängt. Logikblock 200 zeigt, daß der Prozessor seinen Statusdatensatz modifiziert, so daß die Software die Ausführung von FIG. 6 nicht von dem Punkt der Unterbrechung fortsetzt, wenn die Verarbeitung wiederaufgenommen wird. Im Logikblock 210 aktiviert der Prozessor die Unterbrechungen wieder und bewegt sich dann zu einem Wartestatus im Logikblock 220. Im Logikblock 230 wird der Prozessor durch eine Unterbrechung wiederaktiviert, die durch seinen Agentenprozessor gesendet wird, wenn der Agent das verknüpfte Task abgeschlossen hat. Der Prozessor kehrt dann zu der Berechnung zurück, als ob er das Aktualisieren der gemeinsam benutzten Variablen selbst abgeschlossen hätte, wobei er die Informationen verwendet, die von dem Agentenprozessor an ihn zurückgesendet wurden.
  • Logikblock 225 ist ein Zeitgeber einer Überwachungseinrichtung, der einen Prozessor am unbestimmten Warten hindert. Falls die Wartezeit einen bestimmten Betrag an Zeit überschreitet, erzwingt der Zeitgeber einer Überwachungseinrichtung eine Unterbrechung an den Logikblock 226, in dem Wiederherstellungssoftware versucht, das Problem eines nichtantwortenden Agenten zu behandeln. Falls die Operandenadresse des Agenten an den wartenden Prozessor als Teil einer Aktion "Synchronisation anhalten" weitergeleitet wird, wie im Logikblock 80 von FIG. 5 gezeigt, kann der Fehlerverarbeitung die Identität des Agenten als Teil der Wiederherstellungsaktivität zur Verfügung stehen.
  • Hier wird die Aktivität eines Agentenprozessors besprochen. Für dieses Beispiel wird angenommen, daß die kombinierbare Aktion eine Instruktion Abrufen-und-Zufügen ist, wie durch Gottlieb u.a. beschrieben, aber jede kombinierbare Instruktion kann auf eine entsprechende Art ausgeführt werden.
  • Ein Abrufen-und-Zufügen kennzeichnet eine Zielvariable und ein Inkrement. Das Abrufen-und-Zufügen mit Kombinieren führt folgendes aus:
  • 1. Falls zwei Vorgänge Abrufen-und-Zufügen kombiniert werden, dann fährt nur einer fort, während der andere wartet. Derjenige, der fortfährt, verwendet die Summe der zwei Inkremente. Schließlich wird die gemeinsam benutzte Variable nur einmal inkrementiert, wobei sie als ein Inkrement die Summe aller Inkremente empfängt, die kombiniert wurden.
  • 2. Das Abrufen-und-Zufügen sendet zwei verschieden Zahlen an zwei Anforderungen zurück, die kombiniert wurden. Ein Anforderer empfängt den Wert einer gemeinsam benutzten Variablen, bevor das zusammengesetzte Inkrement hinzugefügt wurde, und der zweite Anforderer empfängt den Wert, der dem Inkrement hinzugefügt wurde, das von dem ersten Anforderer angewendet wird. Dies ist dasselbe, das empfangen würde, wenn die Anforderungen nicht kombiniert wären, wobei die Aktualisierungen sequentiell durch den ersten Anforderer, gefolgt von dem zweiten Anforderer, ausgeführt werden.
  • Als ein Beispiel der Verwendung der Operation einer Instruktion Abrufen-und-Zufügen wird betrachtet, was geschieht, wenn zwei Prozessoren eine gemeinsam benutzte Variable um die Beträge 2 bzw. 5 inkrementieren. Der anfängliche Wert der gemeinsam benutzten Variablen ist 6. Während der Ausführung von Abrufen-und- Zufügen wird angenommen, daß der erste Prozessor der Agent für den zweiten Prozessor infolge einer Synchronisation wird. Der erste Prozessor fügt die zwei Inkremente hinzu, um ein neues Inkrement der Größe 7 zu erzeugen. Wird angenommen, daß keine zusätzlichen Synchronisationen auftreten, inkrementiert der erste Prozessor die gemeinsam benutzte Variable um den Betrag von 7, wodurch ein Endergebnis von 13 erzeugt wird. Der erste Pro- zessor erhält während der Aktualisierung der gemeinsam benutzten Variablen auch den anfänglichen Wert von 6. Nach dem Aktualisieren der gemeinsam benutzten Variablen berechnet der Agent den Wert der gemeinsam benutzten Variablen, der von seinem Klienten beachtet werden würde, falls der Agentenprozessor die gemeinsam benutzte Variable inkrementiert hätte, ehe der Klient sie inkrementiert hat. Diese Zahl ist die Summe des ursprünglichen Wertes (6) und des Inkrements des Agentenprozessors (2). Folglich meldet der Agentenprozessor den Wert 8 = 6 + 2 an den Klientenprozessor.
  • Somit wird der Speicher nur einmal für eine gesamte Gruppe kombinierter Anforderungen aktualisiert, die Anforderer erhalten einen Satz von Werten, als ob die Anforderungen in irgendeiner seriellen Folge ausgeführt wurden, und die der Synchronisation zugeschriebene Verzögerung neigt schlimmstenfalls dazu, als log N statt N zu wachsen.
  • Die in FIG. 8 bis 10 gezeigte Datenstruktur zeigt, wie das Kombinieren durch die Software ausgeführt wird. FIG. 8 zeigt den Aufbau ehe die Synchronisation versucht wird. Der Synchronisationsoperand ist ein Inkrement mit einem mit 0 initialisierten Markierungsbit. (Das Markierungsbit wird von einem wartenden Prozeß verwendet. Wenn sich die Markierung verändert, kann der wartende Prozessor wiederanlaufen.)
  • Es gibt drei verschiedene Arten von Ereignissen.
  • 1. Aktion nach der Unterbrechung "Synchronisation fortsetzen"
  • 2. Aktion nach der Unterbrechung "Synchronisation anhalten"
  • 3. Aktion, um einen Prozessor im Zustand "Synchronisation anhalten" freizugeben.
  • FIG. 9 zeigt die Situation für "Synchronisation fortsetzen". Die Erfindung liefert ein Mittel für den fortsetzenden Prozessor (Agent), um die Operandenadresse jedes Inkrements zu verfolgen, das mit seiner Anforderung kombiniert wurde. Die Operandenadres- se, die von "Synchronisation fortsetzen zurückgesendet wird, ist die Adresse des aktuellen Inkrements des wartenden Prozesses. Der fortsetzende Prozeß erhält das aktuelle Inkrement des wartenden Prozesses durch Zugriff auf den Speicher des wartenden Prozesses. Dies kann über dasselbe Netz erfolgen, das für die Synchronisation verwendet wird, oder über ein getrenntes Netz, dessen hauptsächliche Funktion darin besteht, den Datenzugriff von Prozessor zu Prozessor zu unterstützen.
  • FIG. 10 wird in Verbindung mit der Erörterung beschrieben, die bezüglich FIG. 12 folgt.
  • Der durch einen Agenten ausgeführte Prozeß, wenn er einen Klienten nimmt, ist in FIG. 11 abgebildet. Im Logikblock 300 fügt der Agentenprozessor das Inkrement des Klientenprozesses zu seinem eigenen Inkrement hinzu, um mit der Simulation der Kombinationsaktion Abrufen-und-Zufügen fortzufahren. In diesem Fall wird angenommen, daß die Synchronisation eine Operandenadresse in Reg (Opd-Adresse) zurückgesendet hat. Es wird auch angenommen, daß der "aktuelle Synchronisationsoperand" ein Registerzeiger zu einem Matrixelement im Speicher ist.
  • Logikblock 300 ist die Folge von Aktionen
  • . 1) Speicher (aktuelles Inkrement) : = Speicher (aktuelles Inkrement) + Speicher (Reg (Opd-Adresse));
  • 2) Inkrementieren (Reg (aktueller Synchronisationsoperand));
  • 3) Speicher (Reg (aktueller Synchronisationsoperand)) :4 - Reg (Opd-Adresse);
  • Logikblock 310 aktiviert die Unterbrechungen wieder und Logikblock 320 kehrt zur normalen Verarbeitungsaktivität zurück, in diesem Fall zu FIG. 5.
  • Wenn ein Prozeß beim Leiten durch den gesamten Synchronisationsbaum zu der Wurzel erfolgreich ist, aktualisiert der Prozeß dann eine gemeinsam benutzte Variable auf irgendeine sichere Art. Der Agentenprozessor sendet dann Informationen zu wartenden Klientenprozessoren zurück, wie in FIG. 12 beschrieben. Während des Aktualisierens erhält der Agentenprozessor den Wert der gemeinsam benutzten Variablen vor dem Aktualisieren. Dieser Wert muß durch den Baum aufwärtsgeleitet werden. Um dies auszuführen, setzt in Logikblock 350 von FIG. 12 der Agentenprozeß den voraktualisierten Wert in seine Zelle für das aktuelle Inkrement, so daß die Datenstruktur so ist, wie in FIG. 10 gezeigt. Nun steigt der Prozeß den Synchronisationsbaum hinauf, wobei Klientenprozesse freigegeben werden, die gewartet haben. Um dies auszuführen, berechnet er die anfänglichen und abschließenden Schleifenindizes einer Schleife im Logikblock 360 und tritt dann in die Schleife ein. Logikblock 370 setzt einen neuen Wert in die Zelle für das aktuelle Inkrement des nächsten wartenden Prozesses in der Datenstruktur von FIG. 10. Im Logikblock 380 setzt der Agentenprozeß dann die Markierungszelle des wartenden Prozesses auf 1, was den Prozeß freigibt, indem eine Unterbrechung in dem wartenden Klientenprozessor erzwungen wird. Logikblock 390 vermindert den aktuellen Synchronisationsoperandenzähler und prüft, ob die Schleife abgeschlossen ist.
  • Falls nicht, kehrt er an den Anfang der Schleife an Logikblock 370 zurück, um den nächsten Klientenprozeß freizugeben.
  • Die durch FIG. 12 beschriebene Aktivität wird auch durch das folgende Programm beschrieben:
  • Speicher (aktuelles Inkrement) := vorheriger Wert der gemeinsam benutzten Variablen;
  • Berechnen anfänglicher und abschließender Werte des aktuellen Synchronisationsoperanden;
  • SCHLEIFE:
  • Reg (Opd-Adresse) := Speicher (aktueller Synchronisationsoperand);
  • Reg (temp) := Speicher (aktuelles Inkrement);
  • Speicher (aktuelles Inkrement) := Speicher (Reg (Opd-Adresse) + Reg (temp);
  • Speicher (Reg (Opd-Adresse)) := Reg(temp);
  • Setzen Markierung (Speicher (Reg (Opd-Adresse)));
  • Dekrementieren (aktueller Synchronisationsoperand);
  • falls aktueller Synchronisationsoperand ≠ 0 dann gehe zu
  • SCHLEIFE;
  • AUSGANG:
  • Der wartende Prozeß wird initialisiert, wenn seine Markierung auf 1 gesetzt ist. An diesem Punkt wechselt er zu einem Prozeß, der in dem Synchronisationsbaum hinaufsteigt, und der Status seines Speichers ist wie in FIG. 10 gezeigt. Der Wert des "aktuellen Inkrements" wird auf den Wert verändert, der baumaufwärts gemeldet werden soll. Dies wird durch den fortsetzenden Prozeß erreicht, wenn er folgendes ausführt
  • Speicher (Reg (Opd-Adresse)) := Reg (temp)
  • wobei Reg (Opd-Adresse) die Adresse des aktuellen Inkrements des wartenden Prozesses enthält und Reg (temp) den Wert enthält, der an den wartenden Prozeß zu melden ist.
  • Ein wartender Prozeß, der von einem Agentenprozeß an Logikblock 230 von FIG. 7 aktiviert wird, ist in einem Status, in dem er am Logikblock 350 von FIG. 12 fortfahren kann. Ein wartender Prozessor kann früher ein Agent für einen anderen Prozessor gewore den sein, bevor er eine Antwort "Synchronisation anhalten" empfängt. Daher wird er aktiviert, als ob er ein Agentenprozessor wäre und er kehrt baumaufwärts zurück, wobei er wartende Prozessoren aktiviert, für die er durch Ausführen des Blockdiagramms von FIG. 12 ein Agent ist.
  • Für diese Erfindung ist die Verwendung von Unterbrechungen zur Ausführung der Operationen in den Figuren wahlfrei. Der Unterbrechungscode kann als eingebetteter Code implementiert werden, gesichert durch Tests in dem Rückkehrcode der Synchronisationsinstruktion. Die Aktionen können an Rückkehrcodes von "Synchronisation fortsetzen" oder "Synchronisation anhalten" eingeleitet werden.
  • 3. Synchronisation innerhalb einer Querschiene
  • Diese Erörterung zeigt die Verwendung der Erfindung innerhalb der Querschienenverbindungsstruktur, die in FIG. 13 abgebildet ist. Ein Querschienenschalter bringt mehr als zwei Anforderungen zusammen und liefert ein Mittel zum Entscheiden der Anforderungen. Logikblock 400 in FIG. 13 ist ein Netz, das jeden Prozessor 410 mit jedem Speicher 420 auf eine Art verbindet, daß jede Prozessoranforderung durch einen einzelnen einer Mehrzahl von Schaltpunkten 430 innerhalb von Logikblock 400 beim Weiterleiten vom Prozessor zum Speicher geleitet wird. Wie vorher besprochen, ist es nicht notwendig, Speicher in die Struktur von FIG. 13 einzuschließen. Die Struktur kann nur der Synchronisation gewidmet werden.
  • Um das Netz in FIG. 13 für die Synchronisation zu nutzen, soll die Erfindung die Funktion der Querschiene leicht erweitern, so daß der Schalter, der einem Speicher zugeordnet ist, verwendet werden kann, um Anforderungen zu synchronisieren, die den Schalter erreichen.
  • Ein Schalter in der Querschiene hat den in FIG. 14 gezeigen allgemeinen Aufbau. Die Logikblöcke 450, 451, 452 und 453 stellen Prozessoren dar. Anforderungen zum Zugriff auf den Schalter werden von Prozessoren an Eingängen abgesetzt, die durch 455, 456, 457 bzw. 458 gekennzeichnet sind. Die Anforderungen werden an einen Arbiter 460 gerichtet. Der Arbiter 460 sendet Ergebnisse über die Ausgänge 470 zurück. Als ein Ergebnis der Entscheidung erlangt ein Anforderer Zugriff auf den Schaltpunkt 480 und leitet Informationen zu dem Schaltpunkt 480 oder empfängt Informationen von dem Schaltpunkt 480 an den Verbindungen 490. Der Schaltpunkt ist mit einem Speicher verbunden.
  • Die Aspekte dieser Querschiene, die dem Stand der Technik entspricht und nicht Teil dieser Erfindung ist, sind:
  • 1. Zwei oder mehr Prozessoren können in jedem Zyklus Anforderungen an den Arbiter absetzen.
  • 2. Der Arbiter wählt einen einzigen Gewinner unter den anstehenden Anforderungen aus und sendet eine Zuweisung an den Gewinner zurück.
  • 3. Der Gewinner fährt dann fort und alle anderen Anforderungen bleiben anstehend und werden in dem nächsten Entscheidungszyklus wiederholt. In den nächsten Arbiterzyklus können auch neue Anforderungen eintreten.
  • . 4. Die Entscheidung kann auf irgendeine Art priorisiert werden, die für das Computersystem geeignet ist. Sie kann speziellen Prozessoren eine höhere Priorität als anderen geben oder sie kann die Priorität zyklisch wechseln, so daß im Durchschnitt kein Prozessor eine größere Priorität als andere Prozessoren erhält. Das Schema der Priorisierung ist für die Zwecke dieser Erfindung nicht wichtig.
  • 5. In vielen Netzen des in FIG. 14 gezeigten Typs wird die Entscheidung für den Zyklus i + 1 durch die tatsächliche Transaktion für Zyklus i überlagert. Falls zum Beispiel Prozessor 450 eine spezielle Kenngröße anfordert, dann kann er seine Anforderung zur Zeit 10 an den Arbiter senden, und falls er in diesem Zyklus einen Zuweisung erhält, kann er die Kenngröße während Zeit 11 erhalten. Inzwischen kann Prozessor 452, falls er eine andere Kenngröße benötigt, diese Kenngröße während Zeit 11 anfordern (während Prozessor 450 seine Transaktion ausführt) und falls Prozessor 452 diese Runde der Entscheidung gewinnt, kann er seine Transaktion während Zeit 12 ausführen. Somit müssen Entscheidungsverzögerungen die nutzbare Bandbreite des Querschienenschalters nicht verringern, obwohl sie zu der Zugriffszeit, die von irgendeinem individuellen Prozeß beobachtet wird, etwas hinzufügen.
  • Die neuen Aspekte dieser Erfindung hinsichtlich Querschienen- schaltern bestehen aus dem in FIG. 15 gezeigten Vergleichsmechanismus, der den Schalter in die Lage versetzt, die Synchronisation zu implementieren. Die Vorstellung ist, daß im Falle einer Zuweisung einer Synchronisationsanforderung durch den Arbiter dann diese Anforderung mit einer anderen Anforderung nach derselben Synchronisationsadresse synchronisiert wird, falls es eine anstehende gibt. Falls ein Gesamtbetrag von drei oder mehr Anforderungen für dieselbe Synchronisationsadresse anstehend ist, dann synchronisiert der Schalter nur zwei von ihnen und die verbleibenden Anforderungen bleiben anstehend, um im nächsten Zyklus synchronisiert zu werden.
  • Im Logikblock 500 von FIG. 15 wählt der Arbiter eine Anforderung unter den anstehenden Anforderungen gemäß irgendeinem annehmbaren Auswahlschema aus. Im Logikblock 510 bestimmt der Arbiter, ob die Anforderung eine normale Anforderung oder eine Synchronisationsoperation ist. Falls die Anforderung normal ist, wird dem Anforderer im Logikblock 515 eine Zuweisung zurückgesendet und der Entscheidungszyklus wird beendet. Falls sich die Anforderung auf eine Synchronisationsoperation bezieht, setzt der Arbiter in Logikblock 520 eine Zuweisung an den Anforderer ab. Dies sichert, daß der Anforderer an den Schaltpunkt schreiben wird, falls tatsächlich eine Synchronisation auftritt. Im Logikblock 530 entfernt der Anforderer seine Anforderung von dem Arbiter und setzt seine Synchronisationsadresse und die Operandenadresse an den Schaltpunkt.
  • Im Logikblock 540 wird der Inhalt des Schaltpunktes mit den Synchronisationsadressen anderer anstehender Synchronisationsanforderungen verglichen. Dies wird mittels eines oder mehrerer Vergleicher ausgeführt, die zwei Adressen vergleichen, wobei eine von ihnen der Schaltpunkt ist und eine von ihnen von einer aktiven Synchronisationsanforderung stammt. Ein Mittel zur Implementierung dieser Möglichkeit wird in FIG. 16 beschrieben und später besprochen.
  • Im Logikblock 550 bestimmt der Arbiter, ob es irgendeine andere aktive Synchronisationsanforderung für dieselbe Synchronisationsadresse gibt. Falls nicht, endet der Synchronisationszyklus durch zurücksenden von "Keine Synchronisation" zu der aktiven Anforderung, die aktuell mit dem Schaltpunkt im Logikblock 555 verbunden ist.
  • Anderenfalls wählt im Logikblock 560 der Arbiter eine Anforderung aus der Mehrzahl aktiver Synchronisationsanforderungen aus, deren Adresse gleich der Adresse an dem Schaltpunkt ist. Die Auswahl erfolgt mittels der normalen Logik, die von dem Arbiter verwendet wird, um Auswahlen vorzunehmen.
  • Im Logikblock 570 sendet der Arbiter "Synchronisation fortsetzen" an den aktuell ausgewählten Anforderer zurück und der Inhalt des Schaltpunktes wird auf dem Rückkehrpfad zu dem aktuell ausgewählten Anforderer geleitet. Im Logikblock 580 sendet der Arbiter "Synchronisation anhalten" an den Anforderer zurück, dessen Adresse sich aktuell an dem Schaltpunkt befindet. Falls die Operation des Schalters von einem wartenden Prozessor erfordert, die Operanden von seinem Agentenprozessor zu erhalten, kann der Arbiter an diesem Punkt die Schaltpunktverbindungen umkehren, so daß die Operanden des Prozessors, der "Synchronisation fortsetzen" empfängt, zu dem Prozessor weitergeleitet werden, der "Synchronisation anhalten" empfängt.
  • Der Mechanismus zur Implementierung von Logikblock 540 von FIG. 15 wird in FIG. 16 gezeigt. Der Schaltpunkt, Logikblock 600, wird mit einer Mehrzahl von Vergleichern 605 und 606 verbunden. Jeder Vergleicher empfängt eine Synchronisationsadresse von dem Schaltpunkt und von den Prozessoren 610 bzw. 611. Der Arbiter 630 meldet durch seinen Verknüpfungssteuerausgang, daß ein Vergleich erforderlich ist. Dieses Signal wird zu den Verknüpfern 620 und 621 geleitet, die mit den Vergleichern 605 bzw. 606 verbunden sind, die auch ein Eingangssignal von den Prozessoren 610 bzw. 611 empfangen. Falls ein Prozessor eine aktive Synchronisationsanforderung ausführt und falls der Arbiter seinen Verknüpfungssteuerausgang aktiviert hat, dann erzeugen die Verknüpfer 620 und 621 ein Signal, das den Ausgang eines Vergleichers aktiviert, um den Arbiter zu erreichen. Die Steuerung des Ausgangs jedes Vergleichers wird durch die Verknüpfer 640 und 641 erreicht, die wiederum von den Logikblöcken 620 bzw. 621 aktiviert werden. Die einzigen Anforderungen, die den Arbiter als ein Ergebnis dieser Operation erreichen, sind aktive Synchronisationsanforderungen an derselben Synchronisationsadresse wie die Synchronisationsadresse, die nun an dem Schaltpunkt vorliegt. Diese Anforderungen kommen von potentiellen Agenten und der Arbiter wählt einen Anforderer aus, der Agent zu sein.
  • Die in FIG. 16 gezeigten Vergleicher können zahlenmäßig verringert werden, indem ein Vergleicher von einer Mehrzahl von Anforderern gemeinsam benutzt wird. Falls das zutrifft, kann der Schalter Vergleicher zwischen einem Vergleicher insgesamt bis zu einem Vergleicher pro Anforderer haben. Wenn eine Mehrzahl von Anforderern einen Vergleicher gemeinsam benutzt, werden die aktiven Synchronisationsanforderungen unter den Anforderern nacheinander mit dem Schaltpunkt verglichen, bis eine passende Anforderung von einem der Vergleicher erkannt wird. Der Arbiter kann unter den ersten passenden Anforderungen auswählen, die ihm gemeldet werden, oder er kann die Auswahl zurückstellen, bis alle passenden Anforderungen gekennzeichnet wurden.
  • Der Vorteil des Verwendens von weniger Vergleichern besteht in der Verringerung der Kosten der Hardware, aber die verminderten Hardwarekosten werden von einer Zunahme der Zeit bis zum Abschluß der Entscheidung begleitet.
  • 4. Synchronisation unter Verwendung mehrstufiger Netze
  • Ein anderes Netz, in das die vorliegende Erfindung eingebettet werden kann, ist ein mehrstufiges Netz, wie z.B. das in FIG. 17 gezeigte. Die Logikblöcke 700 sind Prozessormodule und die Logikblöcke 710 sind Speichermodule wie in FIG. 13. Der Netzaufbau besteht in diesem Fall aus verschiedenen Schichten von Schaltzellen, den Logikblöcken 720, 730, 740 und 750, von denen jeder eine kleine Zahl von Eingängen oder Ausgängen aufweist. In der gezeigten Figur hat jede Schaltzelle zwei Eingänge und zwei Ausgänge. Im allgemeinen können mehrstufige Netze mehr als zwei Eingänge und Ausgänge haben, aber keine Zelle hat so viele Eingänge und Ausgänge, wie es Prozessoren und Speicher in dem Computersystem gibt.
  • Für diese Erfindung ist ein mehrstufiges Schaltnetz irgendein Verbindungsnetz, das Anforderungen durch eine Mehrzahl von Stufen von den N Prozessoren zu den Eingängen eines Speichermoduls leitet. Die Verwendung der Erfindung in diesem Netz bettet die Synchronisationsfunktion in die letzte Stufe von Schaltern ein. Jeder Schalter auf dieser Stufe sammelt Anforderungen von einer Mehrzahl von Schaltern in der vorhergehenden Stufe und wählt eine Anforderung aus, um sie zu einem oder mehreren Speichermodulen weiterzuleiten.
  • Jeder Schalter in dem mehrstufigen Netz ist einem Querschienennetz funktionell gleichwertig. Die Zahl der Eingänge und Ausgänge eines einzelnen Schalters ist eine kleine Zahl, die durch die für Schaltkonstruktionen verfügbare Technologie begrenzt ist. Die in FIG. 17 gezeigte Netzstruktur ist erforderlich, wenn die Zahl von Prozessoren und Speichern, die zu verbinden sind, die Zahl überschreitet, die durch einen einzelnen Querschienenschalter verbunden werden kann.
  • Um die Erfindung in einem mehrstufigen Schaltnetz zu verwenden, wird die letzte Stufe von Schaltern durch Schalter ersetzt, welche die Synchronisationsoperation unterstützen. Da jeder Schalter im wesentlichen eine Querschiene ist, wird einfach jeder Querschienenschalter in der letzten Stufe durch einen Querschienenschalter ersetzt, der die Synchronisation wie in FIG. 14 beschrieben unterstützt, um die Erfindung in das Netz einzubetten.
  • Mit der erfolgten angezeigten Ersetzung hat das Netz in FIG. 17 sowohl die Fähigkeit, Anforderungen zu synchronisieren, als auch Prozessoren mit Speichern zu verbinden. Eine Synchronisations- instruktion durchquert das Netz, bis sie die letzte Stufe von Schaltern erreicht. Auf der letzten Stufe erreicht sie einen Arbiter und erwartet eine Antwort von dem Arbiter. Schließlich empfängt sie ein Ergebnis "Keine Synchronisation", "Synchronisation anhalten" oder "Synchronisation fortsetzen" und kehrt durch das Netz zu dem Prozessor zurück, von dem die Anforderung stammte.
  • Das Netz muß nicht verwendet werden, um Prozessoren mit Speichern zu verbinden. Die Speicher können ausgelassen werden und das Netz kann für die Synchronisation vorgesehen werden.
  • Ein anderer wahlfreier Aspekt des Entwurfs besteht darin, daß die Schaltmodule in dem Netz anders als jene in der letzten Stufe auch Synchronisatormodule sein können. Das heißt, irgendein derartiger Schalter kann ein Querschienenschalter mit der Synchronisationsfunktion statt nur eines herkömmlichen Querschienenschalters sein. Nur für die Schalter in der letzten Stufe ist es erforderlich, synchronisierende Querschienenschalter zu sein.
  • Falls die Synchronisation in einen Querschienenschalter auf einer anderen als der letzten Stufe eingebettet ist, sollte ein derartiger Schalter nichtsynchronisierte Synchronisationsanforderungen an den Speicher (den Schalterausgang) weiterleiten, statt sie sofort zu den Prozessoren (Schaltereingang) zurückzusenden. Synchronisierte Anforderungen sollten kombiniert und zu den Prozessoren zurückgesendet werden.
  • Diese Modifikation der Synchronisationsoperation ist in FIG. 18 abgebildet. Im Logikblock 800 wählt der Schalter eine Anforderung aus den anstehenden Anforderungen gemäß irgendeinem annehmbaren Auswahlschema aus. Normale Anforderungen werden im Logikblock 810 gekennzeichnet und zu der Schalterausgabe weitergeleitet. Logikblock 820 wählt eine Synchronisationsanforderung aus und setzt eine Zuweisung an die Anforderung ab. Im Logikblock 830 ist der gewinnende Anforderer ein potentieller Agent und setzt seine Synchronisationsadresse und die Operandenadresse an den Schaltpunkt. Im Logikblock 840 wählt der Arbiter eine zweite gewinnende Anforderung aus, der Klient unter den Synchronisationsanforderungen zu sein, die den vorliegenden Gewinner ausschließen. Ein zweiter Gewinner muß eine Synchronisationsanforderung an derselben Synchronisationsadresse wie der des Gewinners sein. Falls es keinen zweiten Gewinner gibt, wird in Logikblock 850 die vorliegende gewinnende Anforderung an den Schalterausgang gesendet. Falls es einen zweiten Gewinner gibt, sendet im Logikblock 860 der zweite Gewinner seine Operanden an den Schaltpunkt und sie werden von dem ersten Gewinner gelesen und in umgekehrter Richtung (in Richtung der Moduleingänge) gemeldet. Der erste Gewinner empfängt ein Ergebnis "Synchronisation fortsetzen".
  • Im Logikblock 870 werden optional die Operanden des ersten Gewinners an den Schaltpunkt geschrieben und zurück an den zweiten Gewinner gemeldet. Der Ergebniscode für den zweiten Gewinner ist "Synchronisation anhalten".
  • Der Vorteil der Verwendung der Synchronisation innerhalb von Schaltern, die früher in dem Netz erscheinen, besteht darin, daß Nachrichten früher kombiniert werden können. Dies führt dazu, die Zahl erfolgreicher Kombinationsoperationen zu erhöhen und den Verkehr in den späteren Gebieten des Netzes zu verringern.

Claims (22)

1. Datenverarbeitungssystem, das folgendes umfaßt:
eine Mehrzahl von Datenprozessoren (10, 20, 32), wobei jeder von ihnen Mittel (Fig. 6) zum Absetzen einer Synchronisationsinstruktion zum Zwecke der Synchronisation bestimmter der Prozessoren zur Verarbeitung einer gemeinsamen Variablen umfaßt; gekennzeichnet durch
eine Mehrzahl von Synchronisatoren (14, 22, 34), wobei jeder von ihnen zwei Eingänge (Fig. 1 bis 3) zum Empfangen der Synchronisationsinstruktion von ersten und zweiten Prozessoren (610, 611) in der Mehrzahl von Datenprozessoren hat, wobei jeder der Synchronisatoren Mittel (605, 606) zum Vergleichen der Synchronisationsinstruktionen umfaßt, die an den zwei Eingängen bereitgestellt werden, um die Gleichheit derselben zu bestimmen, und falls sie gleich sind, Mittel umfaßt, um dem ersten Prozessor zu signalisieren, die Verarbeitung der gemeinsamen Variablen fortzusetzen, und dem zweiten Prozessor, die Verarbeitung der gemeinsamen Variablen zurückzustellen, wobei der erste Prozessor als Agent für den zweiten Prozessor zur Verarbeitung der gemeinsamen Variablen wirkt.
2. Datenverarbeitungssystem wie in Anspruch 1 beansprucht, das folgendes umfaßt:
n, wobei n eine ganze Zahl ist, Datenprozessoren, von denen jeder Mittel zum Absetzen einer Synchronisationsinstruktion umfaßt, um bestimmte der n Datenprozessoren zu synchronisieren, wobei die Synchronisationsinstruktion eine Synchronisationsadresse umfaßt, die auf die Zieladresse der Synchronisationsinstruktion hinweist, und eine Operandenadresse, die auf die Adresse einer gemeinsamen Variablen hinweist;
n Synchronisatoren (14, 22, 34), von denen jeder zwei Eingänge (Fig. 1 bis 3) hat, die durch erste bzw. zweite Synchronisationsadressen (610, 611) gekennzeichnet sind, um die Synchronisationsinstruktion von dem ersten und zweiten Prozessor (610, 611) der n Datenprozessoren (10, 20, 32) zu empfangen, wobei jeder der n Synchronisatoren Mittel (605, 606) umfaßt, um die jeweilige Operandenadresse der Synchronisationsinstruktionen zu vergleichen, die an den zwei Eingängen bereitgestellt werden, um zu bestimmen, ob die Operandenadressen identisch sind, und falls ja, den ersten und zweiten Prozessor durch Bereitstellen eines ersten Signals zu synchronisieren, um den ersten Prozessor zu instruieren, die Verarbeitungsoperationen bezüglich der gemeinsamen Variablen fortzusetzen und als Agent für den Prozessor Zwei bei der Operationsverarbeitung bezüglich der gemeinsamen Variablen zu wirken, und ein zweites Signal bereitzustellen, um Prozessor Zwei zu instruieren, die Verarbeitungsoperationen bezüglich der gemeinsamen Variablen (Fig. 5 bis 7) zurückzustellen; und
ein Verbindungsnetz (12, 26, 400), das eine Mehrzahl von Datenübertragungspfaden zwischen den n Datenprozessoren und den n Synchronisatoren bereitstellt, um die Synchronisationsinstruktionen von den n Datenprozessoren zu den n Synchronisatoren selektiv zu übertragen und um das erste und zweite Signal von den Synchronisatoren zu den ersten bzw. zweiten Prozessoren selektiv zu übertragen.
3. System wie in Anspruch 2 beansprucht, einschließlich:
eines Speichermoduls (24), der mit jedem der n Synchronisatoren (22) verbunden ist.
4. System wie in Anspruch 2 beansprucht, wobei das Verbindungsnetz (12, 26, 400) einen Querschienenschalter (Fig. 13) umfaßt.
5. System wie in Anspruch 2 beansprucht, wobei das Verbindungsnetz (12, 26, 400) einen mehrstufigen Schalter (Fig. 17) umfaßt.
6. Datenverarbeitungssystem wie in irgendeinem der Ansprüche 2 bis 5 beansprucht, das weiterhin folgendes umfaßt:
Synchronisationsmittel (14, 22, 34) zum Empfangen der Synchronisationsinstruktion von jedem der n Datenprozessoren (10, 20, 32), wobei das Synchronisationsmittel Mittel (605, 606) umfaßt, um die entsprechende Operandenadresse der Synchronisationsinstruktionen von jedem der n Datenprozessoren zu vergleichen, um zu bestimmen, ob die Operandenadressen identisch sind, und falls ja, Synchronisieren derjenigen der n Datenprozessoren, die identische Operanden haben, indem ein erstes Signal bereitgestellt wird, um einen ersten der synchronisierten Prozessoren zu instruieren, die Verarbeitungsoperationen bezüglich der gemeinsamen Variablen fortzusetzen und als Agent für die anderen der synchronisierten Prozessoren bei Verarbeitungsoperationen bezüglich der gemeinsamen Variablen zu wirken, und ein zweites Signal bereitgestellt wird, um die anderen der synchronisierten Prozessoren zu instruieren, die Verarbeitungsoperationen bezüglich der gemeinsamen Variablen zurückzustellen; und
ein Verbindungsnetz (12, 26, 400), das eine Mehrzahl von Datenübertragungspfaden zwischen den n Datenprozessoren und den Synchronisationsmitteln bereitstellt, um die Synchronisationsinstruktionen von den n Datenprozessoren zu den Synchronisationsmitteln selektiv zu übertragen, und um die ersten und zweiten Signale von den Synchronisationsmitteln zu dem ersten der synchronisierten Prozessoren bzw. den anderen der synchronisierten Prozessoren selektiv zu übertragen.
7. System wie in Anspruch 6 beansprucht, einschließlich:
eines Speichermoduls (24), das mit jedem der Synchronisationsmittel (22) verbunden ist.
8. System wie in Anspruch 6 beansprucht, wobei das Verbindungsnetz (12, 26, 40) einen Querschienenschalter (Fig. 13) umfaßt.
9. System wie in Anspruch 6 beansprucht, wobei das Verbindungsnetz (12, 26, 400) einen mehrstufigen Schalter (Fig. 17) umfaßt.
10. System wie in einem oder mehreren der vorhergehenden Ansprüche beansprucht, das folgendes umfaßt:
eine Mehrzahl von Arbitern (460, 630), wobei sich ein derartiger Arbiter an jedem Schaltpunkt (480) des Querschienenschalters (Fig. 13) befindet, um unter der Synchronisationsinstruktion von dem ersten Prozessor (610, 611), die an dem Schaltpunkt gespeichert ist, und Synchronisationsinstruktionen von mindestens zweiten und dritten Prozessoren (Fig. 14) der Mehrzahl von Datenprozessoren Priorität zuzuweisen;
Mittel zum Vergleichen der Synchronisationsinstruktion des ersten Prozessors, die an dem Schaltpunkt gespeichert ist, mit den Synchronisationsinstruktionen der zweiten und dritten Prozessoren unter der Steuerung des Arbiters, einschließlich Mitteln (Fig. 15) zum Bereitstellen einer ersten Prioritätsanforderung an den Arbiter, wenn die Synchronisationsinstruktionen von dem ersten und zweiten Prozessor gleich sind, und zum Bereitstellen einer zweiten Prioritätsanforderung an den Arbiter, wenn die Synchronisationsinstruktionen von dem ersten Prozessor und dem dritten Prozessor gleich sind, wobei der Arbiter einen der ersten, zweiten und dritten Prozessoren als den Agenten für einen der anderen zwei Prozessoren bei der Verarbeitung der Synchronisationsinstruktion bestimmt.
11. System wie in Anspruch 10 beansprucht, das folgendes umfaßt:
eine Mehrzahl von Prozessoren (700), von denen jeder Anforderungen einschließlich Synchronisationsinstruktionen zum Synchronisieren bestimmter der Prozessoren zur Verarbeitung ein gemeinsamen Variablen absetzt;
mindestens einen Querschienenschalter (Fig. 17), der eine Mehrzahl von Schaltpunkten (720, 730, 740, 750) aufweist, wobei jeder derartige Schaltpunkt in der Lage ist, eine Synchronisationsinstruktion von einem Prozessor zu speichern;
eine Mehrzahl von Arbitern (Fig. 15 bis 17), wobei ein derartiger Arbiter mit jedem Schaltpunkt verbunden ist, um unter den Synchronisationsinstruktionen von der Mehrzahl von Prozessoren Priorität zuzuweisen;
Mittel (510) für einen gegebenen Arbiter, um eine Anforderung von einem ersten Prozessor auszuwählen und zu bestimmen, ob die Anforderung eine Synchronisationsinstruktion ist;
Mittel (Fig. 16) zum Speichern der Synchronisationsinstruktion von dem ersten Prozessor an dem Schaltpunkt, der mit dem gegebenen Arbiter verbunden ist;
Mittel (605, 606) zum Vergleichen der Synchronisationsinstruktion eines zweiten Prozessors mit der Synchronisationsinstruktion des ersten Prozessors, der an dem Schaltpunkt gespeichert ist, der dem gegebenen Arbiter zugeordnet ist, und, falls die Synchronisationsinstruktionen identisch sind, Mittel zum Melden an den gegebenen Arbiter, daß der Vergleich identisch ist;
Mittel (Fig. 15 bis 17) zum Instruieren des ersten Prozes- sors, als Agent für den zweiten Prozessor bei der Verarbeitung der gemeinsamen, in der Synchronisationsinstruktion gekennzeichneten Variablen zu wirken; und
Mittel (Fig. 15 bis 17) zum Instruieren des zweiten Prozessors, die Verarbeitung der gemeinsamen Variablen zurückzustellen und während der Zeit ein Klient des Prozessors zu werden, während der erste Prozessor als sein Agent wirkt.
12. System wie in Anspruch 11 beansprucht, wobei der mindestens eine Querschienenschalter (Fig. 17) einen mehrstufigen Schalter umfaßt, der n Stufen von Querschienenschaltern umfaßt, wobei n eine ganze Zahl ist.
13. System wie in Anspruch 12 beansprucht, wobei sich die Mehrzahl der Arbiter (Fig. 15 bis 17) auf der n-ten Stufe des mehrstufigen Schalters befindet.
14. System wie in Anspruch 12 beansprucht, wobei sich die Mehrzahl der Arbiter (Fig. 15 bis 17) auf einer anderen als der n-ten Stufe des mehrstufigen Schalters befindet.
15. System wie in einem oder mehreren der Ansprüche 10 bis 14 beansprucht, das folgendes umfaßt:
eine Mehrzahl von Prozessoren (Fig. 16, 17), von denen jeder eine Synchronisationsanforderung und eine Synchronisationsinstruktion zum Synchronisieren bestimmter der Prozessoren zur Verarbeitung einer gemeinsamen Variablen absetzt;
eine Mehrzahl von Arbitern (Fig. 15 bis 17), wobei ein derartiger Arbiter jedem Schaltpunkt zum Zuweisen der Priorität zwischen Synchronisationsanforderungen von mindestens zwei der Mehrzahl von Prozessoren zugeordnet ist;
Mittel (Fig. 16) zum Speichern der Synchronisationsinstruktion von einem ersten Prozessor an dem Schaltpunkt, der einem gegebenen Arbiter zugeordnet ist;
einen Vergleicher (605, 606) zum Vergleichen der Synchronisationsinstruktion von dem ersten Prozessor, die an dem Schaltpunkt gespeichert ist, der dem gegebenen Arbiter zugeordnet ist, mit der Synchronisationsinstruktion, die von einem zweiten Prozessor abgesetzt wird, und Bereitstellen eines Identitätssignals, falls die jeweiligen Synchronisationsinstruktionen gleich sind;
Verknüpfungsmittel (620, 621), die auf das Identitätssignal von dem Vergleicher und eine Synchronisationsanforderung von dem zweiten Prozessor antworten, um ein Prioritätsanforderungssignal an den Arbiter bereitzustellen; und
Mittel (Fig. 15 bis 17), die in den gegebenen Arbiter beinhaltet sind, um einen der ersten und zweiten Prozessoren als Agenten und den anderen als Klienten zu bestimmen, wobei der Agentprozessor die gemeinsame Variable verarbeitet, die in der Synchronisationsinstruktion für ihn selbst und den Klienten gekennzeichnet ist, wobei der Klient die Verarbeitung der gemeinsamen Variablen zurückstellt.
16. System wie in Anspruch 15 beansprucht, wobei der mindestens eine Querschienenschalter (Fig. 17) einen mehrstufigen Schalter umfaßt, der n Stufen von Querschienenschaltern umfaßt, wobei n eine ganze Zahl ist.
17. System wie in Anspruch 16 beansprucht, wobei die Mehrzahl der Arbiter (Fig. 15 bis 17) an der n-ten Stufe des mehrstufigen Schalters angeordnet ist.
18. System wie in Anspruch 16 beansprucht, wobei die Mehrzahl der Arbiter (Fig. 15 bis 17) an einer anderen als der n-ten Stufe des mehrstufigen Schalters angeordnet ist.
19. Verfahren des Synchronisierens von Prozessen in einem Com- putersystem, wie in einem oder mehreren der vorhergehenden Ansprüche beansprucht,
wobei jeder einer Mehrzahl von Prozessoren (10, 20, 32) eine Synchronisationsinstruktion (Fig. 5) zum Zwecke der Synchronisation von Prozessoren absetzt, welche dieselbe Synchronisationsinstruktion zur Verarbeitung einer gemeinsamen Variablen absetzen,
gekennzeichnet durch das Empfangen der Synchronisationsinstruktionen durch eine Mehrzahl von Synchronisatoren (14, 22, 34), wobei jeder Synchronisator zwei Eingänge (Fig. 1 bis 3) zum Empfangen der Synchronisationsinstruktionen von ersten und zweiten Prozessoren (610, 611) in der Mehrzahl von Prozessoren aufweist;
Vergleichen (60) der Synchronisationsinstruktionen an den zwei Eingängen, um zu bestimmen, ob sie gleich sind, und falls sie gleich sind;
dem ersten Prozessor signalisieren (70), die Verarbeitung der gemeinsamen Variablen fortzusetzen und als Agent für den zweiten Prozessor bei der Verarbeitung der gemeinsamen Variablen zu wirken; und
dem zweiten Prozessor signalisieren (80), die Verarbeitung der gemeinsamen Variablen während der Zeit zurückzustellen, während welcher der erste Prozessor als sein Agent wirkt.
20. Verfahren wie in Anspruch 19 beansprucht, wobei das Verfahren weiterhin die folgenden Schritte umfaßt:
Absetzen von Synchronisationsinstruktionen einschließlich einer Synchronisationsadresse (60), die auf den Bestimmungsort der Synchronisationsinstruktion hinweist, und einer Operandenadresse (70, 80), die auf die Adresse einer gemeinsamen Variablen hinweist, durch jeden von n Datenpro- zessoren zum Synchronisieren von Prozessoren, welche dieselbe Operandenadresse haben, wobei n eine ganze Zahl ist;
Empfangen (50) der Synchronisationsinstruktionen durch einen Synchronisator (14, 22, 34);
Vergleichen der Operandenadressen der Synchronisationsinstruktionen durch den Synchronisator, um zu bestimmen, ob die Operandenadressen identisch sind, und falls ja;
Synchronisieren derjenigen der n Datenprozessoren, die identische Operandenadressen in ihren jeweiligen Synchronisationsinstruktionen haben;
Bereitstellen eines ersten Signals (70), um einen ersten der synchronisierten Datenprozessoren zu instruieren, die Verarbeitungsoperationen bezüglich der gemeinsamen Variablen fortzusetzen und als Agent für die anderen der synchronisierten Datenprozessoren in Verarbeitungsoperationen bezüglich der gemeinsamen Variablen zu wirken; und
Bereitstellen eines zweiten Signals (80), um die anderen der synchronisierten Datenprozessoren zu instruieren, die Verarbeitungsoperationen bezüglich der gemeinsamen Variablen zurückzustellen, solange der erste der synchronisierten Datenprozessoren als Agent wirkt.
21. Verfahren wie in den Ansprüchen 19 und/oder 20 beansprucht, wobei das Verfahren die folgenden Schritte umfaßt:
Auswählen einer aktiven Anforderung (500) von einem ersten Prozessor durch einen ersten Arbiter (460, 630) und Bestimmen (510), ob es eine Synchronisationsinstruktion ist, und falls ja;
Speichern der Synchronisationsinstruktion von dem ersten Prozessor an dem Schaltpunkt (600), der dem ersten Arbiter zugeordnet ist;
Vergleichen (540) der Synchronisationsinstruktion eines zweiten Prozessors mit der Synchronisationsinstruktion, die an dem Schaltpunkt gespeichert ist, der dem ersten Arbiter zugeordnet ist, und falls sie gleich sind;
Instruieren des ersten Prozessors (610), als Agent für den zweiten Prozessor (611) bei der Verarbeitung der gemeinsamen Variablen zu wirken, die in der Synchronisationsinstruktion gekennzeichnet ist; und
Instruieren des zweiten Prozessors, die Verarbeitung der gemeinsamen Variablen einzustellen, solange der erste Prozessor als sein Agent wirkt.
22. Verfahren wie in Anspruch 21 beansprucht, wobei das Verfahren im Falle derselben Synchronisationsinstruktion weiterhin die folgenden Schritte umfaßt:
Antworten auf eine Synchronisationsanforderung durch den zweiten Prozessor (611) durch den ersten Arbiter (460, 630), um einen der ersten und zweiten Prozessoren (610, 611) als einen Agenten und den anderen als einen Klienten zu bestimmen, wobei der Agentprozessor die gemeinsame Variable verarbeitet, die in der Synchronisationsinstruktion für ihn selbst und den Klienten gekennzeichnet wurde, wobei der Klient die Verarbeitung der gemeinsamen Variablen zurückstellt.
DE68924934T 1988-07-26 1989-06-27 Parallelsynchronisationstechnik. Expired - Fee Related DE68924934T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/224,846 US4989131A (en) 1988-07-26 1988-07-26 Technique for parallel synchronization

Publications (2)

Publication Number Publication Date
DE68924934D1 DE68924934D1 (de) 1996-01-11
DE68924934T2 true DE68924934T2 (de) 1996-06-13

Family

ID=22842480

Family Applications (1)

Application Number Title Priority Date Filing Date
DE68924934T Expired - Fee Related DE68924934T2 (de) 1988-07-26 1989-06-27 Parallelsynchronisationstechnik.

Country Status (4)

Country Link
US (1) US4989131A (de)
EP (1) EP0352490B1 (de)
JP (1) JPH0241553A (de)
DE (1) DE68924934T2 (de)

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE68927946T2 (de) * 1988-08-02 1997-10-16 Philips Electronics Nv Verfahren und Vorrichtung für die Synchronisierung von parallelen Prozessoren unter Verwendung einer unscharf definierten Sperre
US5163149A (en) * 1988-11-02 1992-11-10 International Business Machines Corporation Combining switch for reducing accesses to memory and for synchronizing parallel processes
US5276828A (en) * 1989-03-01 1994-01-04 Digital Equipment Corporation Methods of maintaining cache coherence and processor synchronization in a multiprocessor system using send and receive instructions
US5175824A (en) * 1989-05-08 1992-12-29 Trw Inc. Crossbar switch connected modular multiprocessor system with processor timing relationship selected and synchronized to be appropriate for function being performed
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
US5239654A (en) * 1989-11-17 1993-08-24 Texas Instruments Incorporated Dual mode SIMD/MIMD processor providing reuse of MIMD instruction memories as data memories when operating in SIMD mode
US6070003A (en) * 1989-11-17 2000-05-30 Texas Instruments Incorporated System and method of memory access in apparatus having plural processors and plural memories
US6038584A (en) * 1989-11-17 2000-03-14 Texas Instruments Incorporated Synchronized MIMD multi-processing system and method of operation
EP0429733B1 (de) * 1989-11-17 1999-04-28 Texas Instruments Incorporated Multiprozessor mit Koordinatenschalter zwischen Prozessoren und Speichern
US5226125A (en) * 1989-11-17 1993-07-06 Keith Balmer Switch matrix having integrated crosspoint logic and method of operation
US5212777A (en) * 1989-11-17 1993-05-18 Texas Instruments Incorporated Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation
US5083265A (en) * 1990-04-17 1992-01-21 President And Fellows Of Harvard College Bulk-synchronous parallel computer
AU657685B2 (en) * 1990-06-14 1995-03-23 Fujitsu Limited A synchronization control system in a parallel computer
US5274782A (en) * 1990-08-27 1993-12-28 International Business Machines Corporation Method and apparatus for dynamic detection and routing of non-uniform traffic in parallel buffered multistage interconnection networks
US6282583B1 (en) * 1991-06-04 2001-08-28 Silicon Graphics, Inc. Method and apparatus for memory access in a matrix processor computer
JPH0520284A (ja) * 1991-07-16 1993-01-29 Matsushita Electric Ind Co Ltd パラレルプロセツサシステム
JPH05324589A (ja) * 1992-03-25 1993-12-07 Nippon Sheet Glass Co Ltd 並列コンピュータ装置および光結合装置
US5522029A (en) * 1993-04-23 1996-05-28 International Business Machines Corporation Fault tolerant rendezvous and semaphore for multiple parallel processors
JP3639319B2 (ja) * 1994-01-25 2005-04-20 富士通株式会社 並列計算機システム,データ転送制御方法および送受信制御装置
DE69519816T2 (de) * 1994-05-03 2001-09-20 Hewlett Packard Co Anordnung mit Duplikat des Cache-Etikettenspeichers
US6704765B1 (en) 1994-12-14 2004-03-09 International Business Machines Corporation System for allocating resources among agent processes
US5706516A (en) * 1995-01-23 1998-01-06 International Business Machines Corporation System for communicating messages among agent processes
US5655080A (en) * 1995-08-14 1997-08-05 International Business Machines Corporation Distributed hash group-by cooperative processing
US6067610A (en) * 1996-07-29 2000-05-23 Motorola, Inc. Method and data processor for synchronizing multiple masters using multi-bit synchronization indicators
US6941410B1 (en) 2000-06-02 2005-09-06 Sun Microsystems, Inc. Virtual heap for a virtual machine
US6934755B1 (en) 2000-06-02 2005-08-23 Sun Microsystems, Inc. System and method for migrating processes on a network
US7577816B2 (en) * 2003-08-18 2009-08-18 Cray Inc. Remote translation mechanism for a multinode system
CA2439137A1 (en) * 2003-08-08 2005-02-08 Ibm Canada Limited - Ibm Canada Limitee Improved scheduling technique for software pipelining
US7421565B1 (en) 2003-08-18 2008-09-02 Cray Inc. Method and apparatus for indirectly addressed vector load-add -store across multi-processors
US8307194B1 (en) 2003-08-18 2012-11-06 Cray Inc. Relaxed memory consistency model
US7543133B1 (en) 2003-08-18 2009-06-02 Cray Inc. Latency tolerant distributed shared memory multiprocessor computer
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
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
US7519771B1 (en) 2003-08-18 2009-04-14 Cray Inc. System and method for processing memory instructions using a forced order queue
US7478769B1 (en) 2005-03-09 2009-01-20 Cray Inc. Method and apparatus for cooling electronic components
US7730350B2 (en) * 2005-04-28 2010-06-01 Hewlett-Packard Development Company, L.P. Method and system of determining the execution point of programs executed in lock step
US8145749B2 (en) * 2008-08-11 2012-03-27 International Business Machines Corporation Data processing in a hybrid computing environment
US7984267B2 (en) * 2008-09-04 2011-07-19 International Business Machines Corporation Message passing module in hybrid computing system starting and sending operation information to service program for accelerator to execute application program
US8141102B2 (en) * 2008-09-04 2012-03-20 International Business Machines Corporation Data processing in a hybrid computing environment
US8230442B2 (en) * 2008-09-05 2012-07-24 International Business Machines Corporation Executing an accelerator application program in a hybrid computing environment
US8527734B2 (en) 2009-01-23 2013-09-03 International Business Machines Corporation Administering registered virtual addresses in a hybrid computing environment including maintaining a watch list of currently registered virtual addresses by an operating system
US9286232B2 (en) * 2009-01-26 2016-03-15 International Business Machines Corporation Administering registered virtual addresses in a hybrid computing environment including maintaining a cache of ranges of currently registered virtual addresses
US8843880B2 (en) * 2009-01-27 2014-09-23 International Business Machines Corporation Software development for a hybrid computing environment
US8255909B2 (en) * 2009-01-28 2012-08-28 International Business Machines Corporation Synchronizing access to resources in a hybrid computing environment
US9170864B2 (en) * 2009-01-29 2015-10-27 International Business Machines Corporation Data processing in a hybrid computing environment
US8001206B2 (en) * 2009-01-29 2011-08-16 International Business Machines Corporation Broadcasting data in a hybrid computing environment
US20100191923A1 (en) * 2009-01-29 2010-07-29 International Business Machines Corporation Data Processing In A Computing Environment
US8010718B2 (en) * 2009-02-03 2011-08-30 International Business Machines Corporation Direct memory access in a hybrid computing environment
US8037217B2 (en) * 2009-04-23 2011-10-11 International Business Machines Corporation Direct memory access in a hybrid computing environment
US8180972B2 (en) 2009-08-07 2012-05-15 International Business Machines Corporation Reducing remote reads of memory in a hybrid computing environment by maintaining remote memory values locally
US9417905B2 (en) * 2010-02-03 2016-08-16 International Business Machines Corporation Terminating an accelerator application program in a hybrid computing environment
US8578132B2 (en) * 2010-03-29 2013-11-05 International Business Machines Corporation Direct injection of data to be transferred in a hybrid computing environment
US9015443B2 (en) 2010-04-30 2015-04-21 International Business Machines Corporation Reducing remote reads of memory in a hybrid computing environment
US8787368B2 (en) * 2010-12-07 2014-07-22 Advanced Micro Devices, Inc. Crossbar switch with primary and secondary pickers
US10089227B1 (en) * 2015-05-06 2018-10-02 American Megatrends, Inc. Systems, devices and methods using a solid state device as a caching medium with a write cache flushing algorithm
US10108344B1 (en) 2015-05-06 2018-10-23 American Megatrends, Inc. Systems, devices and methods using a solid state device as a caching medium with an SSD filtering or SSD pre-fetch algorithm
US10019362B1 (en) 2015-05-06 2018-07-10 American Megatrends, Inc. Systems, devices and methods using solid state devices as a caching medium with adaptive striping and mirroring regions
US10114566B1 (en) 2015-05-07 2018-10-30 American Megatrends, Inc. Systems, devices and methods using a solid state device as a caching medium with a read-modify-write offload algorithm to assist snapshots
US10055354B1 (en) 2015-05-07 2018-08-21 American Megatrends, Inc. Systems, devices and methods using a solid state device as a caching medium with a hashing algorithm to maintain sibling proximity
US10176103B1 (en) 2015-05-07 2019-01-08 American Megatrends, Inc. Systems, devices and methods using a solid state device as a caching medium with a cache replacement algorithm

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4051551A (en) * 1976-05-03 1977-09-27 Burroughs Corporation Multidimensional parallel access computer memory system
US4358823A (en) * 1977-03-25 1982-11-09 Trw, Inc. Double redundant processor
US4101960A (en) * 1977-03-29 1978-07-18 Burroughs Corporation Scientific processor
US4247892A (en) * 1978-10-12 1981-01-27 Lawrence Patrick N Arrays of machines such as computers
US4257096A (en) * 1978-10-23 1981-03-17 International Business Machines Corporation Synchronous and conditional inter-program control apparatus for a computer system
US4306286A (en) * 1979-06-29 1981-12-15 International Business Machines Corporation Logic simulation machine
US4365292A (en) * 1979-11-26 1982-12-21 Burroughs Corporation Array processor architecture connection network
US4412303A (en) * 1979-11-26 1983-10-25 Burroughs Corporation Array processor architecture
US4395758A (en) * 1979-12-10 1983-07-26 Digital Equipment Corporation Accelerator processor for a data processing system
FR2471631B1 (fr) * 1979-12-11 1986-02-21 Cii Honeywell Bull Dispositif de synchronisation et d'affectation de processus entre plusieurs processeurs dans un systeme de traitement de l'information
US4523273A (en) * 1982-12-23 1985-06-11 Purdue Research Foundation Extra stage cube
US4661900A (en) * 1983-04-25 1987-04-28 Cray Research, Inc. Flexible chaining in vector processor with selective use of vector registers as operand and result registers
US4636942A (en) * 1983-04-25 1987-01-13 Cray Research, Inc. Computer vector multiprocessing control
US4598400A (en) * 1983-05-31 1986-07-01 Thinking Machines Corporation Method and apparatus for routing message packets
US4639856A (en) * 1983-11-04 1987-01-27 International Business Machines Corporation Dual stream processor apparatus
GB8517376D0 (en) * 1985-07-09 1985-08-14 Jesshope C R Processor array

Also Published As

Publication number Publication date
JPH0241553A (ja) 1990-02-09
EP0352490A3 (de) 1992-03-18
EP0352490A2 (de) 1990-01-31
EP0352490B1 (de) 1995-11-29
DE68924934D1 (de) 1996-01-11
US4989131A (en) 1991-01-29

Similar Documents

Publication Publication Date Title
DE68924934T2 (de) Parallelsynchronisationstechnik.
DE3880478T2 (de) Geschichtetes netz.
DE69533230T2 (de) Verfahren und vorrichtung zur verbesserung der fehlertoleranz eines netzwerkes
DE3789625T2 (de) Methode zur dynamischen Partitionierung von Parallelprozessoren.
DE69127101T2 (de) System für verteilte mehrfachrechnerkommunikation
DE3586389T2 (de) Dynamisch zugeordnete lokale/globale speicheranordnung.
DE60037065T2 (de) Übertragungsteuerung mit Naben- und Torachitektur
EP0762274B1 (de) Einrichtung und Verfahren zur Echtzeit-Verarbeitung einer Mehrzahl von Tasks
DE10110504B4 (de) Verfahren und Computersystem zur Verwaltung von Threads
DE3689087T2 (de) Modularer Mehrfachportdatenknoten.
DE60006842T2 (de) Multiprozessor-Node-Controller-Schaltung und Verfahren
DE3750306T2 (de) System zum Gewährleisten der logischen Unversehrtheit von Daten.
DE3787886T2 (de) Parallelprozessor mit binärer baumstruktur.
DE68928530T2 (de) Modulare Kreuzschienenzwischenverbindungen in einem digitalen Rechner
DE69724355T2 (de) Erweiterte symmetrische Multiprozessorarchitektur
DE69027299T2 (de) Paralleles Verarbeitungssystem
DE69832943T2 (de) Sequenzsteuerungsmechanismus für ein switch-basiertes Mehrprozessorsystem
DE102018126004A1 (de) Synchronisation in einer Multi-Kachel-Verarbeitungsanordnung
EP0959407B1 (de) Verfahren zum Zuteilen von Aufträgen Datenverarbeitungssystem, Client-Datenbearbeitungsknoten und computerlesbares Speichermedium
DE102018126001A1 (de) Synchronisation in einem Multi-Kachel-Verarbeitungsarray
DE102018126003A1 (de) Kombinieren von Zuständen mehrerer Threads in einem Multithread-Prozessor
EP2786258B1 (de) System, computer-implementiertes verfahren und computerprogrammprodukt zur direkten kommunikation zwischen hardwarebeschleunigern in einem computercluster
DE69031524T2 (de) Verfahren und Vorrichtung zur Datenübertragung zwischen Prozessorelementen
DE2917441A1 (de) Multiprozessoranlage
DE112013000891T5 (de) Verbessern der Prozessorleistung für Befehlsfolgen, die Sperrbefehle enthalten

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee