DE69022709T2 - Synchronisationsbefehl für Mehrprozessornetz. - Google Patents

Synchronisationsbefehl für Mehrprozessornetz.

Info

Publication number
DE69022709T2
DE69022709T2 DE69022709T DE69022709T DE69022709T2 DE 69022709 T2 DE69022709 T2 DE 69022709T2 DE 69022709 T DE69022709 T DE 69022709T DE 69022709 T DE69022709 T DE 69022709T DE 69022709 T2 DE69022709 T2 DE 69022709T2
Authority
DE
Germany
Prior art keywords
processing units
control
synchronization
instruction
unit
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
DE69022709T
Other languages
English (en)
Other versions
DE69022709D1 (de
Inventor
Diane Lacey Knipfer Di Knipfer
Lynn Allen Mcmahon
Charlotte Bennett Metgzer
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 DE69022709D1 publication Critical patent/DE69022709D1/de
Application granted granted Critical
Publication of DE69022709T2 publication Critical patent/DE69022709T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Multi Processors (AREA)

Description

  • Die vorliegende Erfindung bezieht sich auf Datenverarbeitungsnetze, in denen mehrfache Verarbeitungseinheiten eine Schnittstelle zum Hauptspeicher gemeinsam benutzen, und insbesondere auf einen Prozeß zum Testen von Hardware- und Mikrocodeserialisierungsmechanismen in derartigen Netzen.
  • Unter den neuesten Entwicklungen in der Datenverarbeitung gibt es Computerarchitekturen, die zunehmend mehrfache Verarbeitungseinheiten verwenden, die eine gemeinsame Schnittstelle zum Hauptspeicher gemeinsam benutzen. Mehrprozessornetze verwenden typischerweise Serialisierungsmechanismen, um gemeinsam benutzte Objekte im Hauptspeicher zu schützen. Anders gesagt, sollten zwei oder mehr Prozessoren gleichzeitig Zugriff auf einen gemeinsam benutzten Bereich von Daten innerhalb des Hauptspeichers anfordern, lösen ein oder mehrere der Serialisierungsmechanismen den Konflikt und geben den Zugriff an einen der anfordernden Prozessoren weiter.
  • Obwohl das Testen von Serialisierungsmechanismen wünschenswert und notwendig ist, um ihre Zuverlässigkeit zu sichern, erfordert ein derartiges Testen, daß sich unverträgliche Anforderungen an ein gemeinsam benutztes Objekt im Hauptspeicher innerhalb eines einzelnen Taktzyklus überlappen, eine Situation, die selten zufällig auftritt und schwierig zu erzwingen ist. Es gibt keinen wahrnehmbaren Unterschied zwischen unverträglichen Prozessoranforderungen, die parallel ausgeführt werden (und durch die Serialisierungsmechanismen richtig serialisiert sind) und denselben Instruktionen, die sequentiell ausgeführt werden.
  • Der allgemeine Gedanke für das Erzwingen eines Konfliktes zwischen Prozessoren ist bekannt. Zum Beispiel offenbart IBM Technical Disclosure Bulletin, Band 17, Nr. 6 (November 1974), einen Prozeß für das Synchronisieren von zwei Verarbeitungseinheiten, wobei eine als die örtliche Einheit und die andere als die entfernte Einheit bezeichnet werden. Die örtlichen und entfernten Prozessoren führen verschiedene Instruktionen aus, um sie beide während desselben Taktzyklus in einen Zustand "Null" zu setzen, so daß beide Verarbeitungseinheiten gleichzeitig beginnen, die nächste Instruktion auszuführen. Falls beide Prozessoren dieselbe Speicherposition suchen, wird ein Sperrmechanismus getestet, der entworfen wurde, um nur einem der Prozessoren den Zugriff zu gestatten.
  • Für das Synchronisieren von Verarbeitungseinheiten sind verschiedene Mittel bekannt, obwohl nicht notwendigerweise sie im Zusammenhang mit dem Testen von Sperren oder anderen Serialisierungsmechanismen. Zum Beispiel offenbart die US-Patentschrift Nr. 4,412,303 ein System einschließlich einer Anordnung von Prozessoren, Speichermodulen, eines Netzes, das die Prozessoren und die Speichermodule verbindet, und eines Datenbankspeichers mi einer Datenbankspeichersteuereinheit. Das System umfaßt auch einen Koordinator zum Synchronisieren der Prozessoren, wenn ein Parallelbetrieb der Prozessoren gewünscht wird.
  • Die US-Patentschrift Nr. 4,783,736 offenbart ein System für das Verwalten mehrfacher Prozessoren, die parallel mit einer Mehrzahl verschachtelter Speicherelemente verbunden sind, wobei Speicherzugriffsmuster entworfen wurden, um einen gewünschten Ausgleich der Muster zu sichern, um Zugriffskonflikte zu vermeiden. Verschiedene Haupt- und untergeordnete Verarbeitungseinheiten arbeiten unter verschiedenen Codes.
  • Während diese Mittel der Synchronisation und der obenerwähnte Testansatz unter bestimmten Umständen jeweils befriedigend sind, ist ein entscheidender Bedarf nach der Synchronisierung mehrfacher Verarbeitungseinheiten und nach der Ausnutzung dieser Synchronisation geblieben, um wiederholbare Konflikte zwischen und unter den Prozessoren für gemeinsam benutzte Objekte im Hauptspeicher zu erzeugen.
  • Daher ist es eine Aufgabe der vorliegenden Erfindung, ein Mittel bereitzustellen, um mehrfache Prozessoren in einen Halte- (Nichtausführungs-) Zustand zu setzen und anschließend alle Prozessoren gleichzeitig aus dem Haltezustand oder der Bedingung freizugeben.
  • Eine andere Aufgabe der Erfindung ist es, eine Computerprogramm-Synchronisationsinstruktion bereitzustellen, die nacheinander von mehrfachen Prozessoren ausgeführt wird, um den Haltezustand zu erreichen, die ungeachtet der Reihenfolge, in der die Prozessoren die Instruktionen ausführen, identisch arbeitet.
  • Eine weitere Aufgabe soll ein Mittel für das selektive Einfügen einer Verzögerung an einem oder mehreren ausgewählten Prozessoren nach der Synchronisation aller Prozessoren bereitstellen.
  • Eine noch andere Aufgabe soll ein Mittel zum Erhöhen einer derartigen Verzögerung bereitstellen, das einem oder mehreren ausgewählten Prozessoren zugeordnet ist, um die Verzögerung um einen ausgewählten Betrag, zum Beispiel einen einzelnen Taktzyklus, jedesmal zu erhöhen, wenn die Synchronisationsinstruktion ausgeführt wird.
  • Um diese und andere Aufgaben zu erreichen, wird ein Verfahren der Synchronisation bereitgestellt, das in einem Datenverarbeitungsnetz verwendet wird, das eine Mehrzahl von Verarbeitungseinheiten zur Ausführung von Computerprogramminstruktionen, um bitweise verschlüsselte Daten zu bearbeiten, eine gemeinsam benutzte Ressource zum Empfangen und Übertragen bitweise verschlüsselter Daten und eine Schnittstelle, die mit den Prozessoren und mit der gemeinsam benutzten Ressource zur Übertragung bitweise verschlüsselter Daten zwischen den Verarbeitungseinheiten und der gemeinsam benutzten Ressource verbunden ist, umfaßt. Das System umfaßt weiterhin ein Serialisierungsmittel zum Lösen von Konflikten um die Kontrolle der gemeinsam benutzten Ressource zwischen den Verarbeitungseinheiten.
  • In Verbindung mit diesem Netz wird ein Prozeß zur Verfügung gestellt, um zu prüfen, ob die Serialisierungsmittel richtig funktionieren. Der Prozeß umfaßt die folgenden Schritte:
  • (a) Bezeichnen eines Grenzwertes, um die Zahl der zu synchronisierenden Verarbeitungseinheiten zu bestimmen;
  • (b) Setzen jeder der Verarbeitungseinheiten in einen Haltezustand, in dem die Verarbeitungseinheiten zeitweise am Ausführen irgendwelcher weiterer Computerprogramminstruktionen gehindert werden, bis die Zahl der Verarbeitungseinheiten in dem Haltezustand, genannt untergeordnete Einheiten, um eins geringer ist als die Grenze;
  • (c) Verwenden der verbleibenden der Verarbeitungseinheiten, die als Haupteinheit bezeichnet wird, um sich selbst in den Haltezustand zu setzen und dann gleichzeitig sich selbst und die Folgeeinheiten aus dem Haltezustand freizugeben, um somit alle Verarbeitungseinheiten, sowohl die Haupt- als auch die Folgeeinheiten, zu aktivieren, um die Ausführung von Computerprogramminstruktionen zu beginnen.
  • Falls gewünscht, kann der Prozeß, nachdem die Haupteinheit alle Einheiten aus dem Haltezustand freigibt, einen weiteren Schritt einschließen, um mindestens eine der Verarbeitungseinheiten bezüglich der anderen und um eine ausgewählte Zeitspanne nach der Freigabe und vor dem Signalisieren der verzögerten Verarbeitungseinheit zu verzögern.
  • Die Erfindung nutzt ein Mittel, um ein gleichzeitiges Signal an alle Prozessoren bereitzustellen, um sie exakt zur selben Zeit aus einem Haltezustand freizugeben. In der bevorzugten Ausführungsform der Erfindung wird ein spezieller Serialisierungsmechanismus, bekannt als eine Klassensperre, in dem Synchronisationsprozeß verwendet. Eine Klassensperre kann von irgendeiner der Verarbeitungseinheiten angefordert werden, wenn versucht wird, Zugriff auf ein gemeinsam benutztes Objekt im Hauptspeicher zu erlangen, das der speziellen Klassensperre zugeordnet ist. Die Bezeichnung "Klassensperre" bezieht sich auf die Tatsache, daß der Sperrmechanismus weder den Hauptspeicher als Ganzes noch ein spezielles Datenwort im Hauptspeicher schützt, aber stattdessen eine bestimmte Klasse oder einen bestimmten Typ von Objekten im Hauptspeicher.
  • Klassensperren werden verwendet, um Schritt (c) in dem oben erwähnten Prozeß auszuführen. Insbesondere sobald ein spezieller Prozessor auf Grund dessen, daß er als letzter in der Schlange der beteiligten Prozessoren war, die Haupteinheit wird, fordert und erlangt die Haupteinheit die Kontrolle über eine Mehrzahl der Sperren, die gleich der Grenzzahl ist. Nach dem Erlangen der Sperren liefert die Haupteinheit eine Synchronisationsnachricht an alle Folgeeinheiten. Jede untergeordnete Einheit liefert nach Empfang der Synchronisationsnachricht eine Bestätigungsnachricht zurück an die Haupteinheit und fordert die Kontrolle über eine eindeutig zugeordnete der Sperren, die aktuell von der Haupteinheit kontrolliert werden.
  • Als Antwort auf das Empfangen von Bestätigungsnachrichten von allen Folgeeinheiten fordert die Haupteinheit das Bestehenbleiben von einer der Sperren, wodurch sie sich selbst zusammen mit den Folgeeinheiten in den Haltezustand setzt. Die Haupteinheit gibt dann die Kontrolle über die Mehrzahl von Sperren frei, dadurch weist sie gleichzeitig den Verarbeitungseinheiten die Kontrolle über die Sperren zu. Die Freigabe de Sperren signalisiert den Verarbeitungseinheiten, das Ausführen der nächsten Computerprogramminstruktionen zu beginnen, wobei eine solche Instruktion jedem der Prozessoren zugeordner ist.
  • Weil nicht alle Prozessoren eine identische "nächste Instruktion" ausführen und tatsächlich jeder Prozessor eine andere Instruktion ausführen kann, kann der Prozeß der vorliegenden Erfindung die folgenden weiteren Schritte einschließen:
  • nach dem Signalisieren aller Verarbeitungseinheiten beobachten, ob ein Zugriff auf die gemeinsam benutzte Ressource durch eine erste der Verarbeitungseinheiten vor einem derartigen Zugriff durch eine zweite der Einheiten erfolgte;
  • Einfügen einer nur der ersten Einheit zugeordneten Verzögerung nach der Freigabe der Kontrolle über die Sperren und vor der Ausführung der nächsten Computerprogramminstruktion und nochmaliges Ausführen aller vorhergehenden Schritte, dann Beobachten des Zugriffs auf die gemeinsam benutzte Ressource durch die erste und zweite Verarbeitungseinheit;
  • falls bei dem ersten Prozessor festgestellt wird, daß er vor dem zweiten Prozessor nochmals Zugriff erlangt hat, Erhöhen der Verzögerung zu der ersten Verarbeitungseinheit und nochmaliges Ausführen des vorhergehenden Schrittes; und
  • dies Wiederholen, bis bei der zweiten Verarbeitungseinheit beobachtet wird, daß sie vor der ersten Verarbeitungseinheit Zugriff auf die gemeinsam benutzte Ressource erlangt.
  • Daher veranlaßt das Merkmal der wachsenden Verzögerung schließlich, auch wenn zwei Prozessoren verschiedene Instruktionsfolgen ausführen, daß sich die Prozessoren in demselben Taktzyklus um Zugriff bewerben, wodurch ein effektives Testen der Serialisierungsmechanismen gesichert ist.
  • Vorzugsweise wird der Prozeß gemäß einer Computerprogramm-Synchronisationsinstruktion ausgeführt, die ein 32-Bit-Wort umfaßt, das eine Mehrzahl von Datenfeldern einschließlich eines Feldes für das Kennzeichnen der Instruktion als eine Synchronisationsinstruktion und eines Feldes für das Kennzeichnen einer Position eines Synchronisationssteuerblocks innerhalb des Hauptspeichers enthält. Der Steuerblock ist ebenfalls ein 32-Bit-Datenwort mit einer Mehrzahl von Feldern einschließlich eines Steuerfeldes zum Bezeichnen der Grenze, eines Steuerfeldes zum Aufrechterhalten eines aktuellen Zählwertes der Zahl von Verarbeitungseinheiten, welche die Synchronisationsinstruktion mit dem Steuerblock ausgeführt haben, und eines Steuerfeldes zum Kennzeichnen, welche der Verarbeitungseinheiten die Instruktion ausgeführt haben.
  • In Verbindung mit dem Merkmal der wachsenden Verzögerung umfaßt die Synchronisationsinstruktion weiterhin ein Feld zum Anzeigen des Vorhandseins oder Nichtvorhandseins einer Verzögerung und ein Feld zur Bestimmung, ob der Wert in dem Verzögerungsfeld jedesmal, wenn die Synchronisationsinstruktion ausgeführt wird, zu erhöhen ist.
  • Ein herausragendes Merkmal der vorliegenden Erfindung besteht darin, daß gemäß einem der Schritte in der Synchronisationsinstruktion die Zahl der Prozessoren den Grenzwert automatisch bestimmt, auch wenn es mehr Instruktionsfolgen als zu synchronisierende Prozessoren gibt. Alle Verarbeitungseinheiten werden als gleichberechtigt behandelt, ohne daß das Bedürfnis besteht, einen oder mehrere der Prozessoren als Haupteinheit vorherzubestimmen. Stattdessen wird der Status der Haupteinheit dynamisch dem letzten Prozessor zugeweisen, der die Synchronisationsinstruktion ausführt. Das Verzögerungsmerkmal, ob konstant oder wachsend, kann jedem der Prozessor eindeutig zugeweisen werden. Schließlich führen alle Prozessoren dieselbe Synchronisationsinstruktion aus, wobei nicht die Notwendigkeit einer speziellen Instruktion, z.B. der Ausführung durch die Haupteinheit, besteht. Somit erleichtert die Synchronisation der vorliegenden Erfindung, entweder allein oder in Kombination mit eindeutig zugeweisen konstanten oder wachsenden Verzögerungen, das Setzen von Konflikten zwischen den Prozessoren für gemeinsam benutzte Objekte im Hauptspeicher, um ein gründliches und vollständiges Testen der Serialisierungsmechanismen zu erleichtern.
  • Für ein weiters Verständnis der obengenannten und anderer Merkmale und Vorteile wird Bezug auf die genaue Beschreibung und die Zeichnungen genommen, in denen:
  • Figur 1 eine schematische Ansicht eines Informationsverarbeitungssystems ist, in dem mehrfache Verarbeitungseinheiten einen Hauptspeicher über eine gemeinsame Schnittstelle gemeinsam benutzen;
  • Figur 2 ein Ablaufdiagramm ist, das die Synchronisation mehrfacher Prozessoren des Systems in Figur 1 in Übereinstimmung mit der vorliegenden Erfindung darstellt;
  • Figur 3 ein Ablaufdiagramm ist, das die Synchronisation in weiteren Einzelheiten darstellt;
  • Figur 4 eine Darstellung des Formates einer 32-Bit-Synchronisationsinstruktion ist, die bei der Synchronisation der Prozessoren verwendet wird;
  • Figur 5 eine Darstellung des Formates eines 32-Bit-Synchronisationssteuerblocks ist, der bei der Synchronisation verwendet wird;
  • Figuren 6 bis 9 Teile eines Flußdiagramms sind, das die Synchronisationsinstruktion im einzelnen darstellt; und
  • Figuren 10 und 11 jeweils mißlungene und gelungene Ergebnisse eines Wettbewerbs um den gemeinsam benutzen Hauptspeicher darstellen, der gemäß der voliegende Erfindung gesetzt ist.
  • Um ein Verständnis der bevorzugten Ausführungsform zu erleichtern, beginnt diese Beschreibung mit einer kurzen Erklärung bestimmter Begriffe, die verwendet werden, um die Arbeitsweise und die Merkmale der Erfindung zu beschreiben.
  • IMPI-Instruktionen: Computerprogramminstruktionen der Assemblerebene im Mikrocode. Verarbeitungseinheiten führen IMPI-Instruktionen sequentiell beim Ausführen logischer Operationen mit Daten aus, z.B. Speicher-, Einfüge- und Zeichenbewegungsfunktionen.
  • Horizontaler Mikrocode (HMC): Mikrocode, der IMPI-Instruktionen interpretiert, d.h. die IMPI-Instruktionen in eine Folge einfacherer Schritte zerlegt. HMC-Instruktionen werden auch Steuerworte genannt und regeln den Status der Hardware.
  • Hardware-Klassensperren: Diese Sperren serialisieren Hauptspeicherabruf- und Speichervorgänge zwischen den Verarbeitungseinheiten. Jedes Steuerwort (KMC) hat ein Sperrkontrollfeld, wodurch ein Prozessor die Kontrolle über jede Kombination von bis zu zehn Sperren erhalten kann.
  • Klassensperrfunktionen: HMC kann drei Funktionen hinsichtlich Klassensperren angeben:
  • (1) ZUFÜGEN einer Sperre zu einem Satz von Sperren, die bereits von einem Prozessor gehalten werden;
  • (2) ZURÜCKSETZEN einer oder allen Sperren, die aktuell von dem Prozessor gehalten werden; und
  • (3) SETZEN einer Sperre einschließlich eines ZURÜCKSETZENS aller aktuellen Sperren, gefolgt durch ein ZUFÜGEN der ausgewählten Sperre.
  • Klassensperre Zurückhalten: Wenn eine spezielle Verarbeitungseinheit eine der Klassensperren kontrolliert, kann ein anderer Prozessor, der dieselbe Sperre an fordert, nicht die Kontrolle über die Sperre erlangen, sondern wird stattdessen in einen Zustand Zurückhalten gesetzt, in dem der anfordernde Prozessor keine weiteren HMC-Instruktionen ausführt. Das Zurückhalten bleibt bestehen, bis die angeforderte Sperre verfügbar wird, was geschieht, wenn der kontrollierende Prozessor anstehende Speichervorgänge oder andere Aktivitäten abschließt und dann den Besitz der angeforderten Sperre durch Zurücksetzen der Sperre zuweist.
  • Haltezustand: Ein Status, in dem eine Verarbeitungseinheit keine weiteren IMPI-lnstruktionen ausführt, während sie auf die Synchronisation wartet.
  • Prozessorverbindungsregister (PIR) : Das PIR ist ein gemeinsam benutztes Objekt der Verarbeitungseinheiten (das sich in Prozessoren befindet, nicht im Hauptspeicher), durch das ein Prozessor eine Nachricht den anderen Prozessoren senden kann und durch welches derartige andere Prozessoren mit einer Bestätigungsnachricht antworten können, jeder durch Zurücksetzen seines jeweiligen Bits in dem PIR.
  • Wendet man sich nun den Zeichnungen zu, dort wird in Figur 1 ein Informationsverarbeitungsnetz 16 für das Speichern und Ausführen verschiedener Operationen mit bitweise verschlüsselten Daten gezeigt. Das Netz in diesem Beispiel umfaßt drei Verarbeitungseinheiten, die mit 18, 20 und 22 bezeichnet sind, aber es könnten mehr oder weniger Verarbeitungseinheiten verwendet werden. Prozessor 18 umfaßt einen Steuerspeicher 24, in dem sich der horizontale Mikrocode befindet, ein Registersegment 26 des Prozessorverbindungsregisters (PIR) und eine Anordnung von Universal-IMPI-Registern 27. Die Prozessoren 20 und 22 sind ähnlich, einschließlich der jeweiligen Steuerspeicher 28 und 30, die den horizontalen Mikrocode beinhalten, und der jeweiligen Registersegmente 32 und 34 des PIR und der IMPI-Register 33 und 35. Die Verarbeitungseinheiten umfassen weiterhin die notwendigen Schaltkreise für das Senden bitweise verschlüsselter Daten an den Hauptspeicher oder andere Teile von Netz 16, für das Empfangen von Daten von anderen Bereichen des Netzes und für das Erzeugen von Befehlen, um derartige Datenübertragungen auszuführen. Es ist zu verstehen, daß die Konfiguration der Verarbeitungseinheiten in diesem Netz mehrfache Verarbeitungseinheiten einschließen könnte.
  • Eine Schnittstelle 36 verbindet die Verarbeitungseinheiten mit einem Hauptspeicher 38, der Speicherfelder 40 zum Speichern bitweise verschlüsselter Daten und einen Programminstruktionsspeicher 42 umfaßt, in den die IMPI-Instruktionen eingebettet sind. Vorzugsweise umfaßt der Hauptspeicher 38 mehrfache individuelle Speicherkarten, von denen jede ihre eigenen Speicheranordnungen und ihr eigenes Instruktionsspeichersegment hat, wobei die Segmente zusammenarbeiten, um die IMPI-Instruktionen bereitzustellen.
  • Die Schnittstelle 36 kann eine Mehrzahl getrennter paralleler Busse (nicht gezeigt) einschließen, wobei jeder im allgemeinen von allen Verarbeitungseinheiten und den Speicherkarten des Hauptspeichers gemeinsam benutzt wird. Zum Beispiel werden Arbeitsdaten (die Informationen mit der größten Bedeutung für die Benutzer des Netzes) über einen Arbeitsdatenbus übertragen, ein Befehls-/Adreßbus überträgt Informationen, welche die Übertragungen von Arbeitsdaten steuern, einschließlich Informationen bezüglich der Adresse im Hauptspeicher 38, an der Arbeitsdaten zu speichern oder abzurufen sind, und ein Übertragungsbus überträgt den Status der Arbeitsdaten, wenn die Arbeitsdaten über den Datenbus übertragen werden. Die Datenleitungen 44, 46 und 48 verbinden die Verarbeitungseinheiten 18, 20 und 22 mit der Schnittstelle 36.
  • Eine Datenleitung 50 verbindet die Schnittstelle mit dem Hauptspeicher, obwohl im Fall mehrfacher Speicherkarten jede Karte ihre eigene derartige Datenleitung zu der Schnittstelle hat. Die PIR-Leitungen 52, 54 und 56 ordnen die PIR-Segmente 26, 32 und 34 der Schnittstelle zu, um somit jede Verarbeitungseinheit zu aktivieren, mit den anderen Verarbeitungseinheiten zu kommunizieren.
  • Eine Operation mit bitweise verschlüsselten Daten ist "atomar", falls sie augenblicklich aus den Eingaben berechenbar scheint. In Verbindung mit dem Hauptspeicher erscheint eine Operation atomar, wenn ihren Quellenoperanden nicht gestattet ist, sich von der Zeit an zu verändern, zu der sie vom Hauptspeicher 38 abgerufen werden, bis zu der Zeit, zu der Ergebnisse der Operation zurück in den Hauptspeicher gespeichert werden. Die gespeicherten Ergebnisse sind dann zu der Zeit des Speicherns für die Eingaben korrekt. In einem Netz mit mehrfachen Verarbeitungseinheiten können Operationen nur dann sicher atomar sein, wenn unverträgliche Versuche zwischen den Prozessoren, Zugriff auf den Hauptspeicher zu erlangen, festgestellt und verzögert werden, bis eine im Gang befindliche Operation abgeschlossen ist. Demgemäß wird die Leistung des Netzes 16 erhöht, wenn die Zahl der atomaren Operationen bei einem Minimum gehalten wird. Dementsprechend sind die meisten IMPI-Instruktionen an sich nicht atomar. Statt dessen sind ausgewählte IMPI-Instruktionen nur bezüglich anderer Instruktionen atomar, die mit demselben Typ gemeinsam benutzter Objekte im Hauptspeicher 38 arbeiten. IMPI-Operationen, die derartige Instruktionen verwenden, werden daher als "relativ atomare Operationen" betrachtet. Für solche Operationen werden die Eingaben durch eine andere Operation in dem Intervall zwischen der Zeit, zu der sich eine Operation erstmalig auf eine Eingabe bezieht und der Zeit, zu der die Operation ihre Ergebnisse speichert, nicht verändert. Gemeinsam benutzte Objekte werden in Objektklassen eingeteilt, wobei jede von ihnen durch eine der Klassensperren geschützt wird.
  • Im obigen Sinne kann ein Testen der Synchronisation in Übereinstimmung mit der vorliegenden Erfindung allgemein mit Bezug auf Figur 2 erklärt werden, wobei die Aktivität der Verarbeitungseinheiten 18, 20 und 22 an einem Zeitstrahl 58 abgebildet wird.
  • Wie vorhergehend erwähnt, ist eine der dem Testen von Serialisationsmechanismen inhärenten Schwierigkeiten, daß Testergebnisse für Situationen identisch scheinen, in denen solche Mechanismen angefordert wurden und richtig funktionierten, und für Situationen, in denen die Mechanismen überhaupt nicht angefordert wurden, da sich potentiell in Konflikt geratende Operationen nicht überlappten. Um diese Schwierigkeit zu überwinden, veranlaßt das vorliegende Testschema, daß jeder der Prozessoren eine Synchronisationsinstruktion auszuführen hat, die als MPSYNC bezeichnet wird. Die MPSYNC-Instruktion wird verwendet, um zwei oder mehr IMPI-Instruktionsfolgen innerhalb eines Taktzyklus miteinander zu synchronisieren, wobei jeder der Instruktionsfolgen einer der Verarbeitungseinheiten zugeordnet ist.
  • Wenn jede der Verarbeitungseinheiten die MPSYNC-Instruktion ausführt, wie an 60 und 62 für die Prozessoren 18 bzw. 20 angezeigt, wird sie in einen Haltezustand gesetzt, in dem sie vorläufig aufhört, weitere IMPI-Instruktionen auszuführen. Alle Verarbeitungseinheiten außer der letzten Einheit, die eine MPSYNC-Instruktion ausführt, nehmen den Haltezustand an und werden als untergeordnete Einheiten betrachtet. Die Endverarbeitungseinheit zur Ausführung der MPSYNC-Instruktion ist die Haupteinheit. Wie an 64 angezeigt, ist die Verarbeitungseinheit 22 die letzte, um diese Instruktion auszuführen und wird somit die Haupteinheit. Es ist zu verstehen, daß irgendeine der Verarbeitungseinheiten 18, 20 und 22 Haupteinheit hätte sein können, da der Hauptstatus allein von der Reihenfolge abhängt, in der die Prozessoren die Synchronisationsinstruktion ausführen. Keine der Verarbeitungseinheiten wird vorherbestimmt, die Haupteinheit zu werden.
  • Sobald die Haupteinheit die MPSYNC-Instruktion ausführt, kommuniziert sie mit allen Folgeeinheiten, um die Ausführung ihrer Instruktionsfolge fortzusetzen, zu dieser Zeit führt der horizontale Mikrocode an jedem Prozessor eine Instruktion "Ende der Operation" (ENDOP) aus. Die synchronisierten ENDOP-Instruktionen erzwingen die Ausführung der nächsten Instruktion in jeder Polge, um mit demselben Taktzyklus zu beginnen, gezeigt als eine Ausrichtung von "Wiederaufnahme"-Positionen 66, 68 und 70, oder die ENDOP-Instruktion kann um einen speziellen Betrag in Verbindung mit einem zu erklärenden Verzögerungsmerkmal versetzt werden.
  • Dieser Synchronisationstest ist unabhängig von der speziellen Hardwarekonfiguration, wobei eine automatische Anpassung an eine Situation bereitgestellt wird, in der die Zahl der Instruktionsfolgen, welche die MPSYNC-lnstruktion ausführen, größer ist, als die Zahl der Verarbeitungseinheiten, zum Beispiel vier oder mehr Instruktionsfolgen in Verbindung mit den Figuren 1 und 2. In diesem Fall wird nur die Zahl der Instruktionsfolge synchronisiert, die gleich der Zahl von Prozessoren ist. Dies verhindert ein gegenseitiges Sperren infolge dessen, daß alle Verarbeitungseinheiten den Status der untergeordneten Einheit annehmen, wobei keine bleibt, um die Rolle der Haupteinheit anzunehmen. Die Synchronisationsinstruktionen in den verbleibenden Folgen werden als Nichtsynchronisationsinstruktionen ausgeführt, die folgenden Instruktionen werden durch den Wettbewerb um einen Prozessor serialisiert, statt durch die Serialisierungsmechanismen, die getestet werden, wie durch die Linie 72 angezeigt, die in der Figur mit "Überschreitung" bezeichnet ist. Der Synchronisationstest ist weiterhin unabhängig von der Hardware, indem eine Grenze der zu synchronisierenden Instruktionsfolgen auf weniger als die Zahl der Prozessoren in dem Netz gesetzt werden kann. Wieder verhindert dies ein gegenseitiges Sperren infolge dessen, daß alle Instruktionsfolgen in den Status der untergeordneten Einheit eintreten.
  • Figur 3 stellt in weiteren Einzelheiten die Ereignisse von der Zeit an dar, zu der die Haupteinheit "lernt", daß sie die letzte Verarbeitungseinheit ist, um die MPSYNC-Instrukrion und die koordinierte Wiederaufnahme der Aktivität zwischen allen Verarbeitungseinheiten auszuführen. Mit den Folgeeinheiten in einem Haltezustand, der eine Nachricht von der Haupteinheit erwartet, erlangt die Haupteinheit Hardwareklassensperren, wobei die Zahl angeforderter Sperren gleich der Zahl der beteiligten Verarbeitungseinheiten ist (der Haupteinheit und aller Folgeeinheiten) Jede Verarbeitungseinheit wird eindeutig einer der Klassensperren zugeordnet. Sobald die Haupteinheit die angeforderte Zahl von Sperren kontrolliert, sendet sie über das Prozessorverbindungsregister (PIR) eine Synchronisationsnachricht an alle Folgeeinheiten und erwartet dann Bestätigung von den Folgeeinheiten.
  • Jede untergeordnete Einheit antwortet auf das Empfangen der Synchronisationnachricht mit einer Bestätigungsnachricht über das PIR und fordert auch die Kontrolle ihrer eigenen Klassensperre an. Eine solche Anforderung setzt die anfordernde untergeordnete Einheit in den Zustand Klassensperre zurückhalten, da die angeforderte Sperre aktuell von der Haupteinheit kontrolliert wird.
  • Die Haupteinheit setzt nach Empfang der Bestätigungsnachricht von allen untergeordneten Verarbeitungseinheiten einen Befehl für das Zurücksetzen aller ihrer Sperren ab. In dem nächsten Taktzyklus, bevor die Systemhardware in der Lage ist, die Sperren als Antwort auf den Befehl zurückzusetzen, fordert die Haupteinheit ihre eigene Sperre nochmals an. Dies setzt die Haupteinheit in den Zustand Klassensperre zurückhalten mit den Folgeeinheiten. Wenn die Netzhardware tatsächlich alle Sperren zurücksetzt, werden in einem Synchronisationsmoment 74 alle Sperren gleichzeitig den Verarbeitungseinheiten zugewiesen. Figur 3 zeigt eine Verzögerung nach dein Synchronisationsmoment für jeden der Prozessoren an. Diese Verzögerung wird für jede Verarbeitungseinheit individuell ausgewählt und kann Null sein. Auf jeden Fall setzt jede der Verarbeitungseinheiten ihre zugeordnete Klassensperre zurück, verzögert wahlfrei und führt die ENDOP-Instruktion aus und beginnt dann, die nächste Instruktion in ihrem Datenstrom mit dem nächsten Taktzyklus auszuführen.
  • Um eine Synchronisation zu erreichen, führen alle beteiligten Prozessoren die MPSYNC-Instruktion mit einem gemeinsam benutzten Synchronisationssteuerblock 76 aus, der im Hauptspeicher 38 enthalten ist. Der Steuerblock 76 ist einer aus einer Mehrzahl derartiger Blöcke, aber nur ein derartiger Block kann für einen gegebenen Synchronisationspunkt verwendet werden. Sobald alle Instruktionsfolgen den Steuerblock verwendet haben, kann er neu initialisiert (neu verwendet) werdei-i. Nach dem Antreffen der MPSYNC-Instruktion (l) aktualisiert jeder Prozessor den Steuerblock 76, um anzuzeigen, daß er eine Synchronisation erwartet, (2) prüft er das Steuerblockzählfeld 92, um die Zahl wertender Prozessoren zu bestimmen, und (3) prüft den Steuerbiock, um die Zahl zu synchronisierender Instruktionsfolgen zu bestimmen (die kleinere der in dein Steuerblock gekennzeichneten Zahl und der Zahl der Prozessoren)
  • Die Formate der MPSYNC-Instruktion und des Synchronsationsblocks sind jeweils in den Figuren 4 und 5 dargestellt. Ein Markierungsbit, das sich in einem Bereich 78 des Hauptspeichers befindet, der nur für die Verwendung durch den horizontalen Mikrocode reserviert ist, wird auf eine logische Eins gesetzt, wenn der Synchronisationstest auszuführen ist, so daß ein OPCODE-Feld 80 (Bits 0 bis 7) interpretiert wird, um eine Synchronisationsinstruktion im Gegensatz zu einer "normalen" IMPI-Instruktion zu kennzeichnen, die während gewöhnlicher, nicht-testender Ausführungsbedingungen verwendet wird. Das Feld 82, das mit "I" gekennzeichnet ist, bezieht sich auf das Verzögerungsmerkmal. Das erste Bit (Bitposition 8) dieses Feldes wird gesetzt, wenn eine wachsende Verzögerung angefordert wird. Das Feld 84, das durch "R" gekennzeichnet ist, wird in Verbindung mit dem "I"-Feld verwendet. Der Operand von vier Bit in dem "R"-Feld kennzeichnet ein Halbwort-IMPI-Register, d.h. eins der Register 27, 33 und 35 in den Prozessoren 18, 20 bzw. 22, das die Zahl der Zyklen beinhaltet, die in das Merkmal der wachsenden Verzögerung eingebaut werden sollten. Falls Feld 82 nicht gesetzt wurde, um eine wachsende Verzögerung anzufordern, wird Feld 84 ignoriert. Die abschließenden Felder 86 und 88, die mit "B" und "D" bezeichnet sind, kennzeichnen die Position des Synchronisationssteuerblocks 76 von vier Byte im Hauptspeicher 38. Das "B"-Feld von vier Bit wird verwendet, um ein IMPI-Basisregister von sechs Byte auszuwählen, wobei das "D"-Feld eine 12-Bit-Verschiebung anzeigt. Die Position des Steuerblocks wird durch die Summe des Versatzes und dem Inhalt des Basisregisters gekennzeichnet.
  • Der Synchronisationssteuerblock umfaßt ein Grenzfeld (LMT-Feld) 90 zur Bezeichnung der Zahl zu synchronisierender Instruktionsfolgen. Insbesondere wird die Grenze auf die Zahl der zu synchronisierenden Instruktionsfolgen minus eins gesetzt. Falls die Grenze größer als die Zahl der Prozessoren minus eins ist, ersetzt der horizontale Mikrocode automatisch den Wert in diesem Feld durch die Zahl der Prozessoren minus eins zur Zeit der Ausführung der MPSYNC-Instruktion.
  • Ein Zählfeld (CNT-Feld) 92 wird von dem horizontalen Mikrocode verwendet, um einen aktuellen Zählwert der Zahl von Instruktionsfolgen aufrechtzuerhalten, welche die Synchronisationsinstruktion mit Steuerblock 76 ausgeführt haben. Der Zählwert in diesem Feld (Bits 8 bis 15) muß mit Null initialisiert werden, bevor der anfängliche Instruktionsstrom die MPSYNC-Instruktion ausführen kann.
  • Ein Feld 94, das mit "MP" bezeichnet ist, wird verwendet, um aufzuzeichnen, welche der Verarbeitungseinheiten die Synchronisationsinstruktion mit Steuerblock 76 ausgeführt haben. Jedes Bit in diesem Feld (20 bis 23) wird einem der Prozessoren zugeordnet. Wenn jeder Prozessor die Synchronisationsinstruktion ausführt, wird sein zugeordnetes Bit in dem MP-Feld gesetzt, womit ein Mittel bereitgestellt wird, um zu beobachten, welche der Prozessoren die Synchronisationsinstruktion ausgeführt haben. Die abschließende Hauptverarbeitungseinheit verwendet dieses Feld, um alle untergeordneten Verarbeitungseinheiten zu kennzeichnen, an welche die Synchronisationsnachricht gesendet wird, nachdem die Haupteinheit die notwendige Zahl von Klassensperren erreicht. Das MP-Feld muß mit Null initialisiert werden, bevor der anfängliche Instruktionsstrom die MPSYNC-Instruktion ausführen kann. Die verbleibenden Felder 96 und 98 werden nicht verwendet.
  • Figuren 6 bis 9 sind Teile eines Flußdiagramms, das nützlich für das Verständnis weiterer Einzelheiten des Synchronisationsprozesses ist, der mit vier Prozessoren ausgeführt wird, die durch 0 bis 3 numeriert sind. Die Instruktion wird an "A" in Figur 6 mit dem Suchen des Markierungsbits im Bereich 78 im Hauptspeicher initiiert. Ein Markierungsbit Zurücksetzen zeigt ein normales Ausführen der IMPI-Instruktion statt der MPSYNC-Instruktion an und der "Test" ist beendet wie an 100 angezeigt.
  • Falls das Markierungsbit eine Synchronisationsinstruktion anzeigt, dann fordert der Prozessor die Kontrolle über alle Prozessorklassensperren. Außerdem fordert der Prozessor die Kontrolle einer Klassensperre des horizontalen Mikrocodes (die keine der Klassensperren ist, die irgendeinem Prozessor zugeordnet ist) auf, als ein Semaphor zu wirken, um das Prozessorverbindungsregister und den Synchronisationssteuerblock zu schützen.
  • Falls PIR belegt ist (durch einen anderen Prozessor kontrolliert), werden alle Sperren zurückgesetzt und irgendeine eingehende Nachricht wird bearbeitet und die Instruktion beginnt wieder. Falls PIR nicht belegt ist, wird die Zahl der Prozessoren mit der Zahl im LMT-Feld 90 verglichen. Falls die Zahl der Prozessoren vermindert um eins kleiner ist als die Zahl, die sich aktuell in dem LMT-Feld befindet, wird diese Zahl abwärts angepaßt, um gleich der Zahl der Prozessoren vermindert um eins zu sein.
  • Der nächste Schritt ist eine Auswahl 102 (Figur 7) auf Grundlage eines Vergleichs des Inhalts der Grenz- und der Zählfelder im Steuerblock 76. Gleiche Werte in den Zähl- und Grenzfeldern zeigen an, daß die Verarbeitungseinheit die Haupteinheit ist. Der Zählwert in Feld 92 wird erhöht, die Haupteinheit sendet die Synchronisationsnachricht an alle Eolgeeinheiten über das Prozessorverbindungsregister (PIR), die Sperre des horizontalen Mikrocodes wird an 104 zurückgesetzt und die Haupteinheit erwartet die Bestätigungsnachricht von allen Folgeeinheiten. Als nächstes wird das "I"-Feld 82 der Synchronisationsinstruktion nach einer wachsenden Verzögerung abgefragt und falls dies angezeigt wird, wird der Verzögerungswert in dem IMPI-Register erhöht, der durch das "R"-Feld 84 der Instruktion gekennzeichnet ist. Die Haupteinheit setzt alle Sperren zurück und setzt dann ihre eigene zugeordnete Sperre. Die in dieser Hinsicht ausgewählte Klassensperre ist die dieser Einheit eindeutig zugeordnete, wie an 138, 140, 142 und 144 in Figur 7 angezeigt. Im Moment der Synchronisation wird die Kontrolle der angeforderten Klassensperren allen Prozessoren gleichzeitig gewährt. Nach dem Moment der Synchronisation setzt die Haupteinheit ihre Klassensperre zurück und falls eine Verzögerung gekennzeichnet wurde, wird die Haupteinheit um "N" Zyklen verzögert, wie durch den aktuellen Verzögerungswert bestimmt. Die Haupteinheit führt dann die ENDOP-Instruktion aus, um die Ausführung des Instruktionsstroms fortzusetzen.
  • Wenn der Wärt im Zählfeld 92 den Wert im Grenzfeld 90 überschreitet, wird die Funktion Instruktionsfolgenüberschreitung angezeigt. Alle Sperren werden zurückgesetzt, ENDOP wird erzeugt und die Instruktionsfolgen laufen weiter ab.
  • Wenn der Zählwert kleiner als der Grenzwert ist, wie an 106 angezeigt, ist die Verarbeitungseinheit eine untergeordnete Einheit. Alle Klassensperren außer der HMC-Sperre werden zurückgesetzt. Dann wird das Zählfeld um eins erhöht und das dem Prozessor, der die Instruktion ausführt, zugeordnete Bit wird im MP-- Feld 94 von Steuerblock 76 gesetzt. Dann wird die Klassensperre des horizontalen Mikrocodes (HMC) zurückgesetzt.
  • Der Prozessor wartet dann auf eine Ausnahme. Wenn eine solche auftritt, wird die HMC-Klassensperre gesetzt. Die nächste Bestimmung 107 (Figur 8) ist, ob eine Ausnahme der Mehrprozessornachricht (MP-Nachricht) festgestellt wurde, was anzeigt, daß von einem anderen Prozessor eine Nachricht über das PIR gesendet wurde. Falls nicht, wird eine E/A-Ausnahme statt einer Ausnahme der MP-Nachricht angezeigt und der Prozessor muß seinen Status als untergeordnete Einheit aufheben. Der Zähler wird an 108 verringert, das dem aktuellen Prozessor zugeordnete Bit wird im MP-Feld 94 des Steuerblocks zurückgesetzt, die HMC-Sperre wird zurückgesetzt und die E/A-Nachrichtenausnahme wird bearbeitet. Die Synchronisationsinstruktion wird neu initialisiert und die Auswahl untergeordnete Einheit/Haupteinheit/Überschreitung erfolgt wieder an 102, möglicherweise mit anderen Ergebnissen, falls ein anderer Prozessor die MPSYNC-Instruktion ausführte, während die Ausnahme der E/A-Nachricht bearbeitet wurde.
  • Kehrt man zu einer Auswahl an 107 zurück, falls eine Ausnahme der MP-Nachricht festgestellt wird, kann sie sich auf eine Synchronisationsnachricht beziehen oder nicht. Falls nicht, muß der Prozessor seinen Status der untergeordneten Einheit aufheben. Das Zählfeld "N" wird an 110 verringert, das Bit des aktuellen Prozessors in dem MP-Feld wird zurückgesetzt und die HMC Klassensperre wird zurückgesetzt. Die Ausnahme der MP-Nachricht wird bearbeitet und die Synchronisationsinstruktion wird neu initialisiert, wie vorher für eine Ausnahme der E/A-Nachricht beschrieben.
  • Falls sich die Ausnahme der MP-Nachricht auf eine Synchronisationsnachricht bezieht, dann wird das "I"-Feld für eine wachsende Verzögerung in Verbindung mit der Einheit (einer untergeordneten Einheit) geprüft, die aktuell die Synchronisationsinstruktion ausführt. Der Verzögerungswert in dem IMPI-Register, der von dem "R"-Feld 84 angezeigt wird, wird im Fall einer wachsenden Verzögerung erhöht. Die HMC-Klassensperre wird zurückgesetzt, die untergeordnete Einheit liefert eine Bestätigung an die Haupteinheit und die untergeordnete Einheit fordert die Kontrolle ihrer Klassensperre. Die ausgewählte Klassensperre ist die dieser Einheit eindeutig zugeordnete, wie jeweils an 112, 114, 116 und 118 angezeigt. Diese Klassensperre wird aktuell von der Haupteinheit kontrolliert und setzt somit die untergeordnete Einheit in den Zustand Zurückhalten. Wenn der untergeordneten Einheit die Kontrolle der Sperre gewährt wird, werden alle Prozessoren synchronisiert. Die untergeordnete Einheit setzt dann ihre Klassensperre zurück. Dann wird eine Verzögerung, falls vorhanden, gemäß dem Inhalt des zugeordneten "I"-Feldes und dem Verzögerungswert eingefügt, nach der die ENDOP-Instruktion ausgeführt wird, um die Ausführung des Instruktionsstroms fort zusetzen.
  • Der Synchronisationsmoment, gefolgt von den ENDOP-Instruktionen, initialisiert gleichzeitig "nächste" IMPI-Instruktionen an allen Verarbeitungseinheiten. Falls solche nächsten Instruktionen identisch sind, ist keine Verzögerung notwendig, da solche Instruktionen einem identischen Ablauf im Wettbewerb um ein gemeinsam benutztes Objekte folgen werden. Jedoch kann die Situation identischer Instruktionen nicht auftreten, die das Einfügen einer vorherbestimmten Verzögerung in den Strom von mindestens einer der Verarbeitungseinheiten notwendig macht, um den Konflikt zu erzwingen. Jedoch ist es schwierig, die Verzögerung vorherzubestimmen, die notwendig ist, um den Konflikt zu erzwingen. Entsprechend kann das oben beschriebene Merkmal der wachsenden Verzögerung verwendet werden, um zu sichern, daß der Konflikt zwischen zwei ausgewählten Verarbeitungseinheiten erzwungen wurde.
  • Nimmt man zum Beispiel an, daß die Verarbeitungseinheiten 18 und 20 eine "EINREIHUNGS-" und eine "AUSREIHUNGS-" Funktion an einem gemeinsam benutzten Objekt oder einer Position 120 im Hauptspeicher 38 in jedem Fall als nächste Instruktion nach ENDOP versuchen. Das gemeinsam benutzte Objekt kann ein Wort im Hauptspeicher 38 sein oder irgendetwas anderes für alle Prozessoren "gleichzeitig sichtbares". Weiterhin wird angenommem, daß die Verarbeitungseinheit 18 Zugriff auf das gemeinsam benutzte Objekt erlangt und ihre Funktion zuerst ausführt, d.h. es gibt keinen Konflikt. Um einen Konflikt zu erzwingen, wird eine Verzögerung (unter Verwendung des oben besprochenen "I"-Feldes und des "R"-Feldes) in den Instruktionsstrom eingefügt, welcher der Verarbeitungseinheit 18 zugeordnet ist. Für eine wachsende Verzögerung wird dem IMPI-Register ein ausgewählter Wert, z.B. ein Taktzyklus, hinzugefügt, der durch das "R"-Feld gekennzeichnet ist. Dann wird der Instruktionsstrom wiederholt ausgeführt, wobei die Verzögerung mit jeder Ausführung der Synchronisationsinstruktion um einen Taktzyklus erhöht wird. Schließlich wird beobachtet, daß der Prozessor 20 eher als Prozessor 18 zuerst Zugriff auf das Objekt erlangt hat. Somit wurden durch den Punkt des erzwungenen Konfliktes die Prozessoren 18 und 20 gegenseitig vertauscht.
  • In Verbindung mit der Synchronisationsnachricht und den Bestätigungsnachrichten sollte bemerkt werden, daß das Prozessorverbindungsregister nicht wesentlich ist, da diese Nachrichten durch die Verarbeitungseinheiten über den gemeinsam benutzten Hauptspeicher bereitgestellt werden könnten. Jedoch beseitigt das Bereitstellen und Verwenden des PIR für diese Nachrichten beachtlichen Systemaufwand an den Schnittstellenbussen und ist aus diesem Grund ein bedeutender Vorteil.
  • Das richtige Funktionieren des Synchronisationsmechanismus kann nachgeprüft werden, indem er zum Synchronisieren interferierender nicht-atomarer IMPI-Instruktionen verwendet wird. Figuren 10 und 11 stellen Ergebnisse dar, die einen Fehler beim Synchronisieren der Instruktionsfolgen und eine erfolgreiche Synchronisation zeigen. In jedem Fall hat ein Datenbyte 122 alle acht Bitpositionen zu einem Taktzyklus t0 zurückgesetzt, d.h. alle sind logische Nullen. Zum Taktzyklus t1 führt Prozessor 18 die MPSYNC-Instruktion aus. Falls der Synchronisationsmechanismus ausfällt, statt eine Synchronisationsnachricht von einem Hauptprozessor zu erwarten, setzt Prozessor 18 seinen Instruktionsstrom fort, wobei er mit der Ausführung einer unverzüglichen ODER-Byte-Instruktion (OBI-Instruktion) mit dem Datenbyte während Zyklus t2 beginnt. Die OBI-Instruktion umfaßt drei Schritte:
  • ein Anrufen von Daten vom Hauptspeicher zu t2, Ausführen der ODER-Operation durch einen Prozessor zu t3, dann ein Speichern eines Ergebnisses (angezeigt an 124) zurück zum Hauptspeicher zu t4 und t5. (Ein Konflikt für den Zugriff zum Hauptspeicher kann veranlassen, daß das Speichern während Zyklus t4 initiiert wird, aber vor dem nachfolgenden Zyklus t5 nicht abgeschlossen ist.) Die OBI-Instruktion ist nicht atomar. Es erfofflgt keine Serialisierung, um einen gleichzeitigen Zugriff auf gemeinsam benutzte Daten zu verhindern.
  • Prozessor 20 führt die MPSYNC-Instruktion während Zyklus t6 aus, und er führt eine OBI-Instruktion während Zyklus t7 bis t10 aus. Wie an 126 angezeigt, umfaßt das Endergebnis Logische Einsen an der ersten und letzten Bitposition.
  • Wenn im Gegensatz (Figur 11) der Synchronisationsprozeß richtig funktioniert, führt Prozessor 18 die MPSYNC-Instruktion zum Taktzyklus t1 wie vorher aus, aber er nimmt den Haltezustand an und erwartet das Synchronisationssignal von einer Haupteinheit. In diesem Fall führt Prozessor 20 die MPSYNC-lnstruktion an Zyklus t4 aus und stellt die Synchronisationsinstruktion bereit, so daß beide Prozessoren die jeweiligen OBI-Instruktionen während Taktzyklus t5 initiieren. Beide Prozessoren rufen während Taktzyklus t5 dieselben Daten 122 ab, führen die ODER-Operation während Taktzyklus t6 aus und initiieren das Speichern der Ergebnisse während Taktzyklus t7.
  • Das Speichern der Ergebnisse von Prozessor 18, das an 128 angezeigt ist, wird im Zyklus t8 abgeschlossen. Das Speichern von Prozessor 20 wird durch den Konflikt um den Hauptspeicherzugriff verzögert und ist daher bis zum Zyklus t9 nicht abgeschlossen. Das sich ergebende Byte 130 hat nur an seiner Endposition eine logische Eins, was die Tatsache widerspiegelt, daß Prozessor 20 gestattet war, die Abrufoperation auszuführen, nachdem der Datenprozessor 18 seine Speicheroperation abgeschlossen hat, d.h. eine erfolgreiche Synchronisation.
  • Für mehr als zwei Prozessoren setzt jeder Instruktionsstrom ein anderes Bit in Byte 122. Falls die OBI-Instruktionen seriell auftreten, dann sind die sich ergebenden Daten eine Sammlung gesetzter Bits, wie in Figur 10 dargestellt. Falls die Synchronisation erfolgreich ist, rufen alle Instruktionsfolgen Byte 122 gleichzeitig ab, aktualisieren die Daten und schreiben neue Daten in den Hauptspeicher, jeder, ohne die Ergebnisse der Aktivität der anderen Prozessoren zu berücksichtigen. Der Instruktionsstrom, der dem endgültigen Schreiben zurück in den Hauptspeicher entspricht, beseitigt die Ergebnisse, die von vorhergehenden lnstruktionsfolgen gespeichert wurden, das Ergebnis ist in Figur 11 dargestellt.
  • Wenn die MPSYNC-Instruktion verwendet wird, um Serialisierungsmechanismen zu testen, würden die OBI-Instruktionen durch relativ atomare Instruktionen ersetzt. Die sich ergebenden Daten, welche die angesammelten Ergebnisse aller Prozessoren zeigen, wie durch Figur 10 dargestellt, würden eine richtige Serialisierung anzeigen. Nichtkumulierte Ergebnisse, wie in Figur 11 dargestellt, würden einen Fehler bei der Serialisierung anzeigen.
  • Daher ermöglicht die Verwendung der MPSYNC-Instruktion durch mehrere Prozessoren die Synchronisation mehrerer Instruktionsfolgen, um zu prüfen, ob die Serialisierungsmechanismen der Prozessoren korrekt funktionieren und der horizontale Mikrocode die Serialisierungsmechanismen korrekt verwendet. Die Synchronisationstests können unabhängig von der Zahl verfügbarer Prozessoren ausgeführt werden, infolge des Merkmals der automatischen Einstellung, das den Grenzwert auf die Zahl der Prozessoren minus eins setzt, falls notwendig. Mit dem Merkmal der wachsenden Verzögerung sind die Tests unabhängig von den exakten Pfadlängen verschiedener Instruktionen. Weiterhin sichern die in Verbindung mit den Figuren 10 und 11 besprochenen Tests, daß die Synchronisationsinstruktion verwendet werden kann, um nachzuprüfen, daß Hardwareklassensperren richtig implementiert sind, sogar wenn die Klassensperren selbst in dem Test verwendet werden.

Claims (17)

1. In einem Datenverarbeitungsnetz einschließlich einer Mehrzahl von Verarbeitungseinheiten (18, 20, 22) zur Ausführung von Computerprogramminstruktionen, um bitweise verschlüsselte Daten zu bearbeiten, eine gemeinsam benutzte Ressource (38, 40) zum Empfangen und Übertragen bitweise verschlüsselter Daten und eine Schnittstelle (36), die mit den Verarbeitungseinheiten und der gemeinsam benutzten Ressource zur Übertragung bitweise verschlüsselter Daten zwischen den Verarbeitungseinheiten und der gemeinsam benutzten Ressource verbunden ist; wobei das System weiterhin ein Serialisierungsmittel zum Auflösen von Konflikten für die Steuerung der gemeinsam benutzten Ressource zwischen den Verarbeitungseinheiten umfaßt; ein Verfahren zum Prüfen, ob die Serialisierungsmittel richtig funktionieren, gekennzeichnet durch die folgenden Schritte:
(a) Bezeichnen eines Grenzwertes (90), um die Zahl der zu synchronisierenden Verarbeitungseinheiten zu bestimmen;
(b) Setzen (60, 62) jeder der Verarbeitungseinheiten in einen Haltezustand, in dem die Verarbeitungseinheiten zeitweise am Ausführen irgendwelcher weiterer Computerprogramminstruktionen gehindert werden, bis die Zahl der Verarbeitungseinheiten in dem Haltezustand, genannt untergeordnete Einheiten, um eins geringer ist als die Grenze;
(c) Verwenden (64) der verbleibenden der Verarbeitungseinheiten, die als Haupteinheit bezeichnet wird und sich nicht in dem Haltezustand befindet, um die Folgeeinheiten in dem Haltezustand zu halten, um sich selbst in den Haltezustand zu setzen, dann gleichzeitig sich selbst und die Folgeeinheiten aus dem Haltezustand freizugeben, wobei gleichzeitig jede der Verarbeitungseinheiten aktiviert wird (66, 68, 70), um die Ausführung von Computerprogramminstruktionen zu beginnen, wobei eine Computerprogramminstruktion mit jeder Verarbeitungseinheit verbunden ist.
2. Verfahren nach Anspruch 1, wobei das Serialisierungsmittel eine Mehrzahl von Hardwaresperren umfaßt und wobei Schritt (c) die folgenden Schritte umfaßt:
(d) Verwenden der Haupteinheit, um die Kontrolle über eine Anzahl von Sperren zu erlangen, die gleich dem Grenzwert ist;
(e) Verwenden der Haupteinheit, um eine Synchronisationsnachricht an alle Folgeeinheiten bereitzustellen, nachdem die Haupteinheit die Kontrolle über die Sperren erlangt hat;
(f) Veranlassen jeder untergeordneten Einheit, als Antwort auf das Empfangen der Synchronisationsnachricht eine Bestätigungsnachricht zurück an die Haupteinheit bereitzustellen und die Kontrolle über eine eindeutig zugeordnete der Sperren anzufordern, die sich aktuell unter der Kontrolle der Haupteinheit befinden;
(g) Veranlassen der Haupteinheit, die verbleibende, nicht enge forderte der Sperren als Antwort auf das Empfangen der Bestätigungsnachrichten von allen Folgeeinheiten anzufordern, wodurch die Haupteinheit zusammen mit den Folgeeinheiten in den Haltezustand gesetzt wird, wobei jede Einheit die Kontrolle über die mit ihr verbundenen der Sperren anfordert; und
(h) Veranlassen der Haupteinheit, die Kontrolle über die Mehrzahl der Sperren freizugeben, dadurch gleichzeitig die Kontrolle über die zugeordneten Sperren an die Verarbeitungseinheiten weiterzugeben; und als Antwort auf das Weitergeben der Kontrolle an jede der Verarbeitungseinheiten über ihre zugeordnete Sperre jeder der Verarbeitungseinheiten signalisieren, daß das Ausführen der nächsten ihrer Computerprogramminstruktionen zu beginnen ist.
3. Verfahren nach Anspruch 2 einschließlich des weiteren Schrittes:
Verzögern einer ersten der Verarbeitungseinheiten um eine erste ausgewählte Zeitspanne bezogen auf die verbleibenden Verarbeitungseinheiten nach der Freigabe der Kontrolle und bevor die erste Verarbeitungseinheit beginnt, die nächste ihrer Computerprogramminstruktionen auszuführen.
4. Verfahren nach Anspruch 3 wobei:
der Schritt des Verzögerns einer ersten der Verarbeitungseinheiten das Verzögern von mindestens einer weiteren der Verarbeitungseinheiten umfaßt, und zwar von jeder um eine zugeordnete ausgewählte Zeitspanne bezogen auf die anderen Verarbeitungseinheiten nach der Freigabe der Kontrolle und bevor jede der weiteren Einheiten beginnt, die nächste ihrer Computerprogramminstruktionen auszuführen.
5. Verfahren nach Anspruch 2 einschließlich der weiteren Schritte:
(i) nach dem Ausführen der nächsten Computerprogramminstruktionen Beobachten, ob ein Zugriff auf die gemeinsam benutzte Ressource durch eine erste der Verarbeitungseinheiten vor einem Zugriff auf die gemeinsam benutzte Ressource durch eine zweite der Einheiten erfolgte;
(j) nach der Freigabe der Kontrolle über die Sperren und bevor jede der Verarbeitungseinheiten mit der Ausführung der nächsten ihrer Computerprogramminstruktionen beginnt, Einfügen einer Verzögerung, die nur mit der ersten Einheit verbunden ist, und nochmaliges Ausführen der Schritte (b) bis (h), dann Beobachten des Zugriffs auf die gemeinsam benutzte Ressource durch die erste und zweite Verarbeitungseinheit;
(k) falls bei dem ersten Prozessor festgestellt wird, daß er vor dem zweiten Prozessor nochmals Zugriff auf die gemeinsam benutzte Ressource erlangt hat, Vergrößern der Verzögerung zu der ersten Verarbeitungseinheit und nochmaliges Ausführen von Schritt (j); und
Wiederholen von Schritt (k), bis bei der zweiten Verarbeitungseinheit beobachtet wird, daß sie vor der ersten Verarbeitungseinheit Zugriff auf die gemeinsam benutzte Ressource erlangt.
6. Verfahren nach Anspruch 5 wobei:
das Netz weiterhin ein Verbindungsregistermittel (26, 32, 34) umfaßt, das alle Verarbeitungseinheiten miteinander verbindet, und der Schritt des Bereitstellens der Synchronisationsnachricht das Bereitstellen der Synchronisationsnachricht von der Haupteinheit zu dem Verbindungsregistermittel einschließt.
7. Verfahren nach Anspruch 6 wobei:
das Verbindungsregistermittel eine Mehrzahl von Registersegmenten umfaßt, wobei mit jeder der Verarbeitungseinheiten eins der Segmente verbunden ist und wobei der Schritt des Bereitstellens der Synchronisationsnachricht das Bereitstellen der Synchronisationsnachricht an das Registersegment umfaßt, das mit jeder det Folgeeinheiten verbunden ist.
8. Verfahren nach Anspruch 7 wobei:
der Schritt des Veranlassens jeder untergeordneten Einheit, eine Bestätigungsnachricht zurück an die Haupteinheit bereitzustellen, das Veranlassen jeder untergeordneten Einheit einschließt, den Inhalt des ihr zugeordneten der Registersegmente zurückzusetzen.
9. Verfahren nach Anspruch 2 wobei:
der Schritt des Bezeichnens der Grenze die Schritte des Bestimmens einschließt, ob eine vorgeschlagene Anzahl für die Grenze mindestens gleich der Anzahl der Prozessoren in der Konfiguration ist; und, falls ja, Verringern der Grenze auf die Zahl der Verarbeitungseinheiten weniger eins.
10. Verfahren nach Anspruch 2 wobei:
die Computerprogramminstruktionen Instruktionsdatenströme der Umwandlungsebene (42) einschließen, die sich in einem Hauptspeicher befinden, und einen horizontalen Mikrocode (24, 28, 30) , der sich in jeder der Verarbeitungseinheiten befindet, um die Instruktionsdatenströme der Umwandlungsebene in Steuerworte zu zerlegen, wobei fedes Steuerwort ein Funktionsfeld umfaßt, um entweder die Kontrolle über die Sperren zu erlangen oder die Kontrolffie über die Sperren freizugeben; und
wobei jede Verarbeitungseinheit eine Anforderung nach einer ausgewählten Sperre an alle anderen Verarbeitungseinheiten bereitstellt, ehe die Kontrolle über die ausgewählte Sperre erlangt wird; wobei jede Verarbeitungseinheit jedesmal, wenn eine Sperre angefordert wird, die aktuell durch eine andere der Verarbeitungseinheiteii gesteuert wird, in einen Sperrzustand gesetzt wird; und
wobei die Schritte des Veranlassens jeder untergeordneten Einheit, die Kontrolle über eine eindeutig zugeordnete der Sperren anzufordern, und des Veranlassens der Haupteinheit, die verbleibende, nicht angeforderte der Sperren anzufordern, das Setzen der untergeordneten Einheit bzw. der Haupteinheit in den Sperrzustand einschließt.
11. Verfahren nach Anspruch 10 wobei:
das Signalisieren das Bereitstellen eines Signals Ende der Operation an jede der Verarbeitungseinheiten auf Basis eines zugeordneten Steuerwortes in dem horizontalen Mikrocode bereitstellt, der sich in der Verarbeitungseinheit befindet.
12. Verfahren nach Anspruch 2 wobei:
die Prozessorkonfiguration weiterhin ein Prozessorverbindungsregister (26, 32, 34) zur Übertragung von Nachrichten zwischen den Verarbeitungseinheiten einschließt und wobei die Schritte (e) und (f) das Senden dieser Nachrichten über das Verbindungsregister einschließen.
13. Verfahren nach Anspruch 5 wobei:
die Schritte (a) bis (h) gemäß einer Computerprogramm-Synchronisationsinstruktion ausgeführt werden, die ein Wort von 32 Bit umfaßt, das eine Mehrzahl von Datenfeldern einschließlich eines ersten Feldes (80) zur Kennzeichnung der Instruktion als eine Synchronisationsinstruktion und eines zweiten Feldes (86, 88) zur Kennzeichnung der Position eines Synchronisationssteuerblocks (76) innerhalb eines Hauptspeichers umfaßt.
14. Verfahren nach Anspruch 13 wobei:
der Synchronisationssteuerblock ein 32-Bit-Datenwort ist, das eine Mehrzahl von Feldern aufweist, einschließlich eines ersten Steuerfeldes (90) zum Bezeichnen der Grenze, eines zweiten Steuerfeldes (92) zum Aufrechterhalten eines aktuellen Zählwertes der Anzahl der Verarbeitungseinheiten, welche die Synchronisationsinstruktion mit dem Steuerblock ausgeführt haben, und eines dritten Steuerfeldes (94) zum Kennzeichnen, welche der Verarbeitungseinheiten die Synchronisationsinstruktion mit dem Steuerblock ausgeführt haben.
15. Verfahren nach Anspruch 14 wobei:
die Synchronisationsinstruktion weiterhin ein drittes Feld (82) zum Anzeigen des Vorliegens oder Nichtvorliegens der Verzögerung und ein viertes Feld (84) umfaßt, das dem dritten Feld zum Anzeigen des Wertes der Verzögerung zugeordnet ist, wobei der Wert jedesmal, wenn die Synchronisationsinstruktion ausgeführt wird, zu erhöhen ist.
16. Verfahren nach Anspruch 6, wobei der Schritt des Veranlassens jeder untergeordneten Einheit als Antwort auf das Empfangen der Synchronisationsnachricht, eine Bestätigungsnachricht zurück an die Haupteinheit bereitzustellen, die folgenden Teilschritte einschließt:
Feststellen einer Ausnahme und Feststellen (107), ob die Ausnahme eine Ausnahme einer Multiprozessornachricht oder eine E/A-Ausnahme ist; und
als Antwort auf das Feststellen einer E/A-Ausnahme den untergeordneten Zustand jeder der Folgeeinheiten aufheben.
17. Verfahren nach Anspruch 16, das weiterhin die folgenden Teilschritte umfaßt
als Antwort auf das Feststellen einer Ausnahme der Multiprozessornachricht feststellen, ob eine Nachricht eine Synchronisationsnachricht ist; und
als Antwort auf das Feststellen, daß die Nachricht keine Synchronisationsnachricht ist, Aufheben des untergeordneten Zustandes jeder untergeordneten Einheit; und anderenfalls als Antwort auf das Feststellen, daß die Nachricht eine Synchronisationsnachricht ist, jede untergeordnete Einheit veranlassen, die Bestätigungsnachricht bereitzustellen.
DE69022709T 1990-01-17 1990-12-12 Synchronisationsbefehl für Mehrprozessornetz. Expired - Fee Related DE69022709T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US46653890A 1990-01-17 1990-01-17

Publications (2)

Publication Number Publication Date
DE69022709D1 DE69022709D1 (de) 1995-11-02
DE69022709T2 true DE69022709T2 (de) 1996-05-02

Family

ID=23852143

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69022709T Expired - Fee Related DE69022709T2 (de) 1990-01-17 1990-12-12 Synchronisationsbefehl für Mehrprozessornetz.

Country Status (4)

Country Link
US (1) US5307483A (de)
EP (1) EP0438021B1 (de)
JP (1) JPH07101410B2 (de)
DE (1) DE69022709T2 (de)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69130630T2 (de) * 1990-09-14 1999-09-09 Hitachi Synchrones Verfahren und Gerät für Prozessoren
US5442772A (en) * 1991-03-29 1995-08-15 International Business Machines Corporation Common breakpoint in virtual time logic simulation for parallel processors
US5423044A (en) * 1992-06-16 1995-06-06 International Business Machines Corporation Shared, distributed lock manager for loosely coupled processing systems
JPH06110846A (ja) * 1992-09-25 1994-04-22 Fujitsu Ltd 排他制御方式
US5522029A (en) * 1993-04-23 1996-05-28 International Business Machines Corporation Fault tolerant rendezvous and semaphore for multiple parallel processors
TW353732B (en) * 1994-03-31 1999-03-01 Ibm Processing system and method of operation
US5550973A (en) * 1995-03-15 1996-08-27 International Business Machines Corporation System and method for failure recovery in a shared resource system having a moving write lock
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
GB9804111D0 (en) * 1998-02-27 1998-04-22 Lucas Ind Plc Distributed data processing system
US6088791A (en) * 1998-04-30 2000-07-11 International Business Machines Corporation Computer processor system for implementing the ESA/390 STOSM and STNSM instructions without serialization or artificially extending processor execution time
US6088792A (en) * 1998-04-30 2000-07-11 International Business Machines Corporation Avoiding processor serialization after an S/390 SPKA instruction
US6542985B1 (en) * 1999-09-23 2003-04-01 Unisys Corporation Event counter
US6823355B1 (en) 2000-05-31 2004-11-23 International Business Machines Corporation Synchronous replication of transactions in a distributed system
US7178137B1 (en) 2001-04-05 2007-02-13 Network Appliance, Inc. Automatic verification of scheduling domain consistency
US7694302B1 (en) * 2001-04-05 2010-04-06 Network Appliance, Inc. Symmetric multiprocessor synchronization using migrating scheduling domains
US7373640B1 (en) 2003-07-31 2008-05-13 Network Appliance, Inc. Technique for dynamically restricting thread concurrency without rewriting thread code
US8171480B2 (en) * 2004-01-27 2012-05-01 Network Appliance, Inc. Method and apparatus for allocating shared resources to process domains according to current processor utilization in a shared resource processor
US8347293B2 (en) * 2005-10-20 2013-01-01 Network Appliance, Inc. Mutual exclusion domains to perform file system processes on stripes
US8627331B1 (en) 2010-04-30 2014-01-07 Netapp, Inc. Multi-level parallelism of process execution in a mutual exclusion domain of a processing system
US8688880B2 (en) * 2010-06-23 2014-04-01 International Business Machines Corporation Centralized serialization of requests in a multiprocessor system
CN102880585B (zh) * 2012-09-28 2015-05-06 无锡江南计算技术研究所 用于具有多个处理器核心的处理器系统的同步器
US8972767B2 (en) * 2012-11-16 2015-03-03 Oracle International Corporation Method and apparatus for synchronizing the time reference of a dynamically activated processor to the system time reference
US10783165B2 (en) 2017-05-17 2020-09-22 International Business Machines Corporation Synchronizing multiple devices
RU2020102277A (ru) * 2017-06-22 2021-07-22 АйКЭТ ЛЛК Процессоры с высокой производительностью
GB2569274B (en) * 2017-10-20 2020-07-15 Graphcore Ltd Synchronization amongst processor tiles
GB2569273B (en) * 2017-10-20 2020-01-01 Graphcore Ltd Synchronization in a multi-tile processing arrangement
US12021861B2 (en) * 2021-01-04 2024-06-25 Bank Of America Corporation Identity verification through multisystem cooperation

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3810119A (en) * 1971-05-04 1974-05-07 Us Navy Processor synchronization scheme
FR2253418A5 (de) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
US4344133A (en) * 1978-07-31 1982-08-10 Motorola, Inc. Method for synchronizing hardware and software
US4409653A (en) * 1978-07-31 1983-10-11 Motorola, Inc. Method of performing a clear and wait operation with a single instruction
US4412303A (en) * 1979-11-26 1983-10-25 Burroughs Corporation Array processor architecture
US4891749A (en) * 1983-03-28 1990-01-02 International Business Machines Corporation Multiprocessor storage serialization apparatus
JPS6079460A (ja) * 1983-10-07 1985-05-07 Nec Corp 密結合多重演算装置における制御方式
US4709326A (en) * 1984-06-29 1987-11-24 International Business Machines Corporation General locking/synchronization facility with canonical states and mapping of processors
US4783736A (en) * 1985-07-22 1988-11-08 Alliant Computer Systems Corporation Digital computer with multisection cache
US4809169A (en) * 1986-04-23 1989-02-28 Advanced Micro Devices, Inc. Parallel, multiple coprocessor computer architecture having plural execution modes
US4809168A (en) * 1986-10-17 1989-02-28 International Business Machines Corporation Passive serialization in a multitasking environment
US4816990A (en) * 1986-11-05 1989-03-28 Stratus Computer, Inc. Method and apparatus for fault-tolerant computer system having expandable processor section
US4926320A (en) * 1987-04-07 1990-05-15 Nec Corporation Information processing system having microprogram-controlled type arithmetic processing unit
JP2519798B2 (ja) * 1989-05-30 1996-07-31 富士通株式会社 多重プロセッサシステムにおけるシリアライズ機能の検証方式

Also Published As

Publication number Publication date
US5307483A (en) 1994-04-26
EP0438021B1 (de) 1995-09-27
JPH07101410B2 (ja) 1995-11-01
EP0438021A3 (en) 1991-12-04
EP0438021A2 (de) 1991-07-24
JPH03222057A (ja) 1991-10-01
DE69022709D1 (de) 1995-11-02

Similar Documents

Publication Publication Date Title
DE69022709T2 (de) Synchronisationsbefehl für Mehrprozessornetz.
DE2856483C2 (de)
DE69730449T2 (de) Erzeugung einer spiegeldatenkopie (bild) unter verwendung von referenzetiketten
DE69131840T2 (de) Verfahren zur Vervielfältigung eines geteilten Speichers
DE69715967T2 (de) Quorummechanismus in einem verteilten Zweiknotenrechnersystem
EP0010194B1 (de) Wartungsschnittstelleneinrichtung für eine datenverarbeitende Anlage mit einer zentralen Verarbeitungseinheit und mit einem Dienstprozessor und Verfahren zu ihrem Betrieb
DE69223480T2 (de) Bus-zu-Bus-Schnittstelle zur Verhinderung der Dateninkohärenz in einem Multiprozessor-Rechnersystem
DE68928848T2 (de) Multi-Prozessor-Rechnersystem mit prozessunabhängiger Adressierung von Kommunikationsregistern
DE2635592C2 (de) Schaltungsanordnung zum Abruf von Prozessor- und Speicheranforderungen in einer Multiprozessoranlage
EP0179936B1 (de) Verfahren und Einrichtung zur Steuerung einer Sammelleitung
DE69323861T2 (de) Multiprozessorsystem mit gemeinsamem Speicher
DE3300261C2 (de)
DE3300260C2 (de)
DE69223304T2 (de) Arbitrierungsverriegelungverfahren und -vorrichtung für einen entfernten Bus
DE3110196A1 (de) Datenverarbeitungssystem
DE3508291A1 (de) Realzeit-datenverarbeitungssystem
DE3642324A1 (de) Multiprozessoranlage mit prozessor-zugriffssteuerung
DE3886756T2 (de) Betriebsmittelzugriff für Multiprozessorrechnersystem.
DE69031297T2 (de) Eingabewarteschlange für Speichersubsysteme
DE4207158A1 (de) Speicher-zugriffssteuerung
DE1524102B2 (de) Elektronische, aus baueinheiten aufgebaute datenverarbeitungsmaschine
DE19617976A1 (de) Kommunikationssystem mit Mitteln zum Austausch von Softwareprozessen
DE69508288T2 (de) Reduktion von logging-vorgängen in verteilten systemen
DE60015720T2 (de) Verfahren und Anordnung zum Arbitrieren des Zugriffes eines Zeitmutiplex-verteilten Speichers von mehreren Prozessoren in einem Echtzeitsystem
DE3855718T2 (de) Ubertragungssystem zwischen Prozessoren in einem Nachrichtenverarbeitungssystem mit Übertragung zwischen Ausführungsprozessoren während Übertragung zwischen anderen Prozessoren

Legal Events

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