DE69029995T2 - Multiprozessor mit relativ atomaren Befehlen - Google Patents
Multiprozessor mit relativ atomaren BefehlenInfo
- Publication number
- DE69029995T2 DE69029995T2 DE69029995T DE69029995T DE69029995T2 DE 69029995 T2 DE69029995 T2 DE 69029995T2 DE 69029995 T DE69029995 T DE 69029995T DE 69029995 T DE69029995 T DE 69029995T DE 69029995 T2 DE69029995 T2 DE 69029995T2
- Authority
- DE
- Germany
- Prior art keywords
- instruction
- lock
- instructions
- processors
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 230000015654 memory Effects 0.000 claims description 80
- 238000012545 processing Methods 0.000 claims description 22
- 238000000034 method Methods 0.000 claims description 20
- 230000007246 mechanism Effects 0.000 claims description 13
- 230000011664 signaling Effects 0.000 claims description 5
- 230000008569 process Effects 0.000 claims description 2
- 238000004364 calculation method Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000012360 testing method Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 230000015556 catabolic process Effects 0.000 description 3
- 238000006731 degradation reaction Methods 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 2
- YREOLPGEVLLKMB-UHFFFAOYSA-N 3-methylpyridin-1-ium-2-amine bromide hydrate Chemical compound O.[Br-].Cc1ccc[nH+]c1N YREOLPGEVLLKMB-UHFFFAOYSA-N 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/52—Indexing scheme relating to G06F9/52
- G06F2209/521—Atomic
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)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
- Die vorliegende Erfindung betrifft allgemein Multiprozessorsysteme, die die gleichzeitige Ausführung einer Vielzahl von Tasks innerhalb eines einzelnen Systems ermöglichen. Im besonderen betrifft die Erfindung Verfahren und Vorrichtungen, welche es gestatten, daß jeder einzelne aus einer Menge bestimmter kritischer Befehle, die alle Mehrfach-Hauptspeicherzugriffe auf gemeinsam genutzte Daten ausführen, die scheinbar die erforderlichen Hauptspeicherzugriffe bezüglich eines vordefinierten Satzes oder einer Klasse von Befehlen atomar ausführt.
- In einem Einzelprozessorsystem, welches nur einen einzelnen Prozessor enthält, der zu jedem Zeitpunkt nur eine einzelne Task ausführt, ergeben sich für die Steuerung der Computerressourcen nur wenige Probleme.
- Die Ressourcentypen, auf die wir uns beziehen, enthalten den Speicher, Kommunikationskanäle, E/A-Geräte usw., wenngleich auch verstanden werden sollte, daß noch andere Ressourcentypen bestehen. In solchen Systemen kann nur die gerade ausgeführte Task Zugriff auf eine beliebige der Systemressourcen haben. Dementsprechend hält jede Task, ebenso wie die zentrale Verarbeitungseinheit selbst, die Steuerung über die erforderlichen Ressourcen aufrecht, bis die Task ihre Aktivität vollständig beendet hat.
- Infolgedessen wird jeder Befehl in einem Einzelprozessorsystem als "atomar" bezeichnet, wobei ein atomarer Befehl als unteilbar definiert wird, d.h. er erscheint als eine einzelne Arbeitseinheit. In einem Einzelprozessorsystem können zwei Befehle aus Befehlsfolgen unterschiedlicher Tasks nicht zur gleichzeitigen Ausführung in Erscheinung treten (mit verschachtelten Speicherabrufen oder Schreiboperationen), weil Taskumschaltungen (wobei eine Task ausgelagert wird, bevor eine andere eingelagert wird) darauf beschränkt sind, daß sie an Befehlsgrenzen auftreten (oder innerhalb von sehr langen Befehlen an inneren Prüfpunkten).
- Im Gegensatz dazu ist die Steuerung des Prozessorzugriffs auf die Systemressourcen in Multitasking- und Multiprozessorsystemen von hervorragender Bedeutung, weil diese Systeme die gleichzeitige oder verschachtelte Ausführung von mehreren Tasks gestatten, welche sich die Ressourcen teilen. Dem Stand der Technik entsprechend sind verschiedene Verfahren entwickelt worden, um solche Zugriffe zu steuern, zum Beispiel Task-Warteschlangen, Verriegelungsschemata usw.
- In bekannten Computersystemen, die eine Multitask-/Multiprozessor-Arbeitsweise mit gemeinsam genutzten Daten ermöglichen, wie beispielsweise das IBM System/370, sind bestimmte kritische Befehle definiert, von denen jeder Mehrfach-Hauptspeicherzugriffe auf gemeinsam genutzte Daten in atomarer Weise ausführt. In einem solchen System scheint es so, daß ein kritischer Befehl, der auf einer gegebenen CPU ausgeführt wird, alle seine Speicherzugriffe (auf einen Hauptspeicherplatz) ausführt, ohne daß irgendeine andere CPU in der Lage ist, zwischen dem ersten und letzten Zugriff der gegebenen CPU auf denselben Speicherplatz zuzugreifen.
- In IBM System/370 sind Befehle wie beispielsweise TEST AND SET und COMPARE AND SWAP definiert, von denen jeder Mehrfach-Hauptspeicherzugriffe auf eine solche Weise ausführt, die vom Beginn bis zum Ende unteilbar ist (d.h., die Befehle sind atomar).
- Der Befehl TEST AND SET kann verwendet werden, um ein Wort aus dem Speicher abzurufen, ein spezielles Bit zu testen und ein modifiziertes Wort in den Speicher zurückzuschreiben, alles während einer Operation, während derer alle anderen Tasks des anderen Prozessors der anderen Prozessoren daran gehindert werden, auf dieses spezielle Wort im Speicher zuzugreifen. Das Abrufen und Zurückschreiben bildet eine atomare Einheit oder einen atomaren Bezug, welcher, einmal begonnen, nicht unterbrochen oder mit einer anderen CPU innerhalb des Multiprozessorsystems verschachtelt werden kann.
- Bezüglich des Befehls COMPARE AND SWAP erscheint der Abruf eines Operanden (zum Zweck des Vergleichs) und das Schreiben (zum Zweck das Auslagerns) auf den Speicherplatz dieses Operanden aus der Sicht der anderen CPUs als gleichzeitiger, verriegelter Aktualisierungsbezug. D.h., keine andere CPU wird zwischen dem Speicherabruf (zum Vergleichen) und dem Schreiben (zum Auslagern) der ersten CPU-einen Hauptspeicherabruf oder eine Schreiboperation vornehmen. Somit erscheinen die Hauptspeicheroperationen von COMPARE AND SWAP aus Sicht der anderen CPUs ebenfalls als atomar.
- Offensichtlich müssen in einer Multiprozessorumgebung wie dem IBM System/370 das Abrufen für den Vergleichstest und das Schreiben zum Setzen oder Auslagern erfolgen, ohne daß zwischen dem Speicherabruf und der Schreiboperation der ersten CPU eine andere CPU von einem verriegelten Speicherplatz Daten. entweder abruft oder auf diesen schreibt. Der Befehl muß bezüglich aller anderen Befehle, die in einem beliebigen Prozessor des Systems ausgeführt werden können, atomar ausgeführt werden.
- Es ist wohlbekannt, daß die Hardware verwendet werden kann, um einen gegebenen Hauptspeicherplatz zu verriegeln und so den erforderlichen Schutz gegen ein Schreiben eines Operanden auf den gegebenen Speicherplatz bereitzustellen. Jeder weitere CPU-Zugriff auf diesen Speicherplatz kann einfach verzögert oder die verriegelten Zugriffe auf diesen Speicherplatz können einfach verzögert werden. Ein auf dem Operandenspeicherplatz basierendes Hardware-Verriegelungsschema wird verwendet, um die Ausführung von atonaren Befehlen in dem Stand der Technik entsprechenden Computern zu unterstützen, für die das IBM System/370 ein typisches Beispiel ist.
- Die atomaren Befehle selbst, wie beispielsweise die im vorhergehenden beschriebenen Befehle TEST AND SET und COMPARE AND SWAP, werden häufig verwendet, um Programme zu erstellen, die in der Lage sind, eine Softwareverriegelung zu testen und dann die Verriegelung zu setzen, wenn diese nicht bereits gesetzt ist. Diese Fähigkeit der Software stellt ein Mittel zum Garantieren der Integrität einiger Funktionen dar, welche nicht funktionieren könnten, wenn eine Softwareverriegelung nicht verfügbar wäre. Nach Beendigung eines oder mehrerer Universalbefehle, welche die Zugriffe ausführen (z.B. ein LOAD-Befehl), muß die Software dann zum Ausgeben einer Softwareverriegelung einen anderen Befehl verwenden.
- Die Verwendung dieser Softwareverriegelungen erfordert die Berechnung von Verriegelungsadressen. Der mit der Adreßberechnung verbundene Systemaufwand kann erheblich sein, speziell wenn zum Beispiel eine kleine Schleife ausgeführt wird, die einen Vergleich mit einem Speicherplatz enthält, auf dem ein Verriegelungsbit steht. In diesem Beispiel sind oftmals häufige und wiederholte Adreßberechnungen eines gegebenen Speicherplatzes erforderlich, wodurch die Leistungsfähigkeit des Prozessorsystems herabgesetzt wird.
- Dementsprechend wäre es wünschenswert, in der Lage zu sein, den Bedarf nach Verwendung von Softwareverriegelungen zum Schutz der Integrität einer Datenstruktur (eines einzelnen Speicherplatzes, einer verknüpften Liste usw.) zu minimieren, um dadurch die Notwendigkeit der Ausführung von Adreßberechnungen, die bei der Verwendung von Softwareverriegelungen benötigt werden, zu minimieren.
- Ein weiteres Verfahren zum Schutz der Integrität gemeinsam genutzten Datenstrukturen in einer Multiprozessor-/Multitasking- Umgebung ist ein Adreßverriegelungsmechanismus auf der Grundlage der Unterteilung des gemeinsam genutzten Speichers und der Verriegelung der Teilbereiche, die von einer CPU für die Dauer eines gegebenen atomaren Befehls erforderlich sind . Bei einem solchen Schema ist die Herabsetzung der Leistungsfähigkeit des Prozessors eine umgekehrte Funktion der Anzahl der Hauptspeicherbereiche und nachfolgend eine Funktion der Anzahl der Signale (die die Bereiche identifizieren), welche zwischen den CPUs bereitgestellt werden Ein solches Verfahren wird unhandlich, wenn die Bereichsanzahl wächst, jedoch können alle denkbaren Befehle zu atomar erscheinenden Befehlen gemacht werden. Weiterhin sind noch Verriegelungsbits für jeden Bereich sowie Adreßberechnungen zum Überprüfen, Setzen und Freigeben der Verriegelungen erforderlich. Somit wird bei Verwendung eines Verfahrens mit Speicherunterteilung keine wesentliche Verbesserung (im Sinne der Adreßberechnungen) gegenüber dem im vorhergehenden unter Bezugnahme auf das IBM System/370 beschriebene Verfahren erreicht.
- Ein weiteres den Stand der Technik innewohnendes Problem, das zu der Adreßberechnung in Beziehung steht, sind die Auswirkungen auf die Software, die sich ergeben, wenn ein Programm genommen wird, das für die Verarbeitung in einem Einzelprozessorsystem entworfen wurde, und wenn dieses Programm in einer Multiprozessor-/Multitasking-Umgebung ausgeführt wird. Wie im vorhergehenden dargestellt wurde, ist die Steuerung des Zugriffs auf gemeinsam genutzte Datenspeicherplätze, allgemeiner: auf gemeinsam genutzte Datenstrukturen, beim Übergang von einer Einzelprozessor- zu einer Multiprozessorumgebung kritisch. Dementsprechend wäre es wünschenswert, die Auswirkungen auf die Software, die aus einem solchen Übergang resultieren, durch Bereitstellung eines Computersystems zu minimieren, das zum Sicherstellen der Datenintegrität gemeinsam genutzter Datenstrukturen Mittel benutzt, die sich von den auf dem Operandenspeicherplatz basierende Hardwareverriegelungen und den oben erwähnten Softwareverriegelungen unterscheiden.
- Dem Stand der Technik entsprechende Computersysteme, die zur Erhöhung der Systemleistungsfähigkeit als Merkmal eine Eng verbundene Mikroprozessorstruktur benutzen, sind ebenfalls bekannt. Ein Computersystem, das als Merkmal eine Eng verbundene Mikroprozessorstruktur besitzt, gestattet es, mehrere identische Prozessoren an eine gemeinsam genutzte Speicherschnittstelle anzuschließen, und gestattet es ebenfalls, daß in einem einzelnen System nehrere Tasks gleichzeitig ausgeführt werden Ein solches System würde wesentlich davon profitieren, wenn zum Sicherstellen der Integrität gemeinsam genutzter Daten Mittel verfügbar wären, die sich von den auf dem Operandenspeicherplatz basierenden Hardwareverriegelungen und den oben erwähnten Softwareverriegelungen unterscheiden.
- Das Dokument EP-A-0 366 432 offenbart ein Computersystem, das eine Vielzahl Prozessoren besitzt, dfe sich gemeinsame Speicherund Datenbusstrukturen teilen und so betrieben werden können, daß sie atomare Operationen ausführen, welche mehrere Befehlsaktionen umfassen, wobei der Prozessor, der die atomare Operation ausführt, Speicherzugriffsunterbrechungen durch andere Prozessoren dadurch verhindert, daß die anderen Prozessoren während der atomaren Operation gesperrt werden. Der Systembus enthält Signalpfade, die eine Busverriegelungsanforderung und Busverriegelungssignale führen, die von jedem Prozessor bereitgestellt und empfangen werden, wobei die Signale durch spezifische Busverriegelungs- und Verriegelungsfreigabe-Befehle ausgelöst werden, die jedem Prozessorbefehlssatz hinzugefügt werden. Das System besitzt jedoch keine Vielzahl von Befehlsklassen, von denen jede eine andere Verriegelung aufweist.
- Tatsächlich wäre es wünschenswert, ein Computersystem zur Verfügung zu haben, worin auf der Grundlage der beeinflußten Datenstrukturen oder Objektklassen bestimmte kritische Befehle in Befehlssätze unterteilt sind (d.h. vordefiniert sind) . Dann würden (1) nur die Befehle innerhalb einer gegebenen Klasse gesperrt werden müssen, wenn ein Befehl der Klasse ausgeführt wird, und (2) wären keine Adreßberechnungen erforderlich, um die Befehle einer vordefinierten Klasse zu sperren, wenn erkannt wird, daß ein beliebiger Befehl der Klasse durch einen gegebenen Prozessor gerade ausgeführt wird. Die Hardware könnte verwendet werden, um die übrigen Mitglieder der Befehlsklasse zu sperren.
- Im Ergebnis würden die Befehle jeder Klasse einen Satz "relativ" atomarer Befehle bilden. Das heißt, anstatt einige atomare Befehle bereitzustellen, die bezüglich aller Befehle, welche auf anderen Prozessoren abgearbeitet werden (wie im IBM System/370), atomar sind, könnten Sätze relativ atomarer Befehle definiert werden, um zu garantieren, daß, während ein gegebener relativ atomarer Befehl (aus einer gegebenen Klasse) ausgeführt wird, die durch den relativ atomaren Befehl benutzten Hauptspeichereinrichtungen nicht durch andere Prozessoren verändert werden, die relativ atomare Befehle aus derselben Klasse ausführen.
- Befehle, die nicht in derselben Klasse sind wie ein gerade in Ausführung befindlicher relativ atomarer Befehl, können gleichzeitig auf anderen Prozessoren verarbeitet werden. Nach Definition, d.h., dadurch daß sie nicht in derselben Klasse stehen, können diese Befehle die durch die Ausführung eines relativ atomaren Befehls benutzten Datenstrukturen nicht beeinflussen.
- Infolgedessen kann die Prozessorleistungsfähigkeit in dem gewünschten Multiprozessorsystem bezogen auf dem Stand der Technik entsprechende Systeme verbessert werden. Es wäre lediglich notwendig, die spezielle Datenstruktur zu schützen, die beeinflußt wird, wenn ein gegebener relativ atomarer Befehl ausgeführt wird. Die Prozessoren, die keine Befehle derselben Klasse ausführen, der der relativ atomare Befehl angehört, könnten ihre Arbeit fortsetzen.
- Desweiteren würde ein Computersystem, welches die Verarbeitung der oben erwähnten Klassen relativ atomarer Befehle unterstützt, die Übertragung von Software von Einzelprozessorsystemen auf Multiprozessorsysteme unterstützen und allgemein die Notwendigkeit von Softwareverriegelungen minimieren. Dies ergibt sich, weil die Integrität gemeinsam genutzter Daten auf beeinflußten Datenstrukturtypen beruhen würde (was beim Vergleichen zwischen einer Einzelprozessor- und einer Multiprozessorumgebung unveränderlich ist) und, wie im vorhergehenden dargestellt, wäre lediglich die Identifikation eines Befehls als Mitglied einer gegebenen Klasse erforderlich, um die anderen Klassenmitglieder über ein Hardwareverriegelungsschema zu "sperren". Folglich würden die vorhergehend dazu erforderlichen Softwareverriegelungen beseitigt werden.
- Dementsprechend ist es eine Aufgabe der Erfindung, ein Computersystem bereitzustellen, das Verfahren und Vorrichtungen zur Verarbeitung vordefinierter Klassen (oder Sätze) von Befehlen auf relativ atomare Weise enthält. In einem solchen System kann jedes Mitglied einer gegebenen vordefinierten Klasse von Befehlen zwangsläufig nur bezüglich anderer Befehle, die Mitglieder derselben Klasse sind, atomar ausgeführt werden.
- Es ist eine weitere Aufgabe der Erfindung, ein Computersystem bereitzustellen, in welchem Befehle, die mehrere Zugriffe auf den gemeinsam genutzten Hauptspeicher ausführen, als Befehle in Erscheinung treten, die auf der Grundlage der durch diese Befehle beeinflußten Datenstrukturen atomar ausgeführt werden.
- Es ist noch eine weitere Aufgabe der Erfindung, die Herabsetzung der Computerleistungsfähigkeit in Multitasking-/Multiprozessorsystemen durch Bereitstellung eines zu Softwareverriegelungen alternativen Schutzmechanismus für die gemeinsam genutzter geteilter Daten zu minimieren.
- Es ist eine weitere Aufgabe der Erfindung, durch Bereitstellung von Datenstruktur-Verriegelungsmechanismen, d4e vcn Softwareverriegelungen unabhängig sind, den typischerweise auftretenden negativen Einfluß auf Software, die gemeinsam genutzte Datenobjekte bearbeitet, beim Übergang von einer Einzelprozessorumgebung auf eine Multiprozessorumgebung zu minimieren.
- Es ist noch eine andere Aufgabe der Erfindung, ein Computersystem bereitzustellen, das in einer bevorzugten Ausführungsform die Verarbeitung relativ atomarer Befehle durch Verwendung von Hardwareeinrichtungen und von horizontalem Mikrocode unterstützt, welcher einen Verriegelungsmechanismus in die relativ atomaren Befehlen selbst einbaut.
- Diese Aufgaben werden durch die beanspruchten Merkmale gelöst.
- Die Erfindung charakterisiert ein Computersystem, das einen Befehlssatz besitzt, der relativ atomare Befehle enthält. Die relativ atomaren Befehle werden bezüglich ihrer Unterteilung in Befehlsklassen definiert. Die Befehle in jeder Klasse sind nur bezüglich der Befehle derselben Klasse atomar, die auf allen anderen Prozessoren eines Multiprozessorsystems ausgeführt werden, in welchem sich die Prozessoren Datenverarbeitungsressourcen teilen, z.B. den Speicher in einem Eng verbundenen Multiprozessorsystem. Befehle, die bei der Ausführung eines relativ atomaren Befehls nicht derselben Klasse angehören, können auf anderen Prozessoren gleichzeitig verarbeitet werden.
- Entsprechend der bevorzugten Ausführungsform der Erfindung wird ein relativ atomarer Befehl über die von ihm beeinflußte Datenstruktur definiert. Bei jedem relativ atomaren Befehl, der von der Erfindung unterstützt wird, wird garantiert, daß während dessen Ausführung die von den Befehl benötigten Speichereinrichtungen nicht durch andere Prozessoren verändert werden, welche relativ atomare Befehle aus derselben Klasse ausführen.
- Ein weiteres Merkmal der Erfindung entsprechend einer bevorzugten Ausführungsform besteht, in der Verwendung von Hardware und horizontalem Mikrocode zur Beeinflussung des Verriegelungsmechanismus jedes relativ atomaren Befehls. Eine alternative Ausführungsform der Erfindung charakterisiert Mittel zum Decodieren der Operationscodes relativ atomarer Befehle zur Beeinflussung des Verriegelungsmechanismus.
- Diese und andere Aufgaben und Merkmale der Erfindung werden dem Fachmann deutlich werden, wenn er die folgende detaillierte Beschreibung in Verbindung mit den begleitenden Zeichnungen betrachtet.
- Fig. 1 zeigt zwei Befehlsfolgen, die in einer Multiprozessorumgebung verarbeitet werden, die die Ausführung von relativ atomaren Befehlen gemäß den Prinzipien der Erfindung unterstützt.
- Die Fig. 2A und 2B zeigen in Form eines Blockschaltbildes ein Eng verbundenes Multiprozessorsystem, das die Ausführung relativ atomarer Befehle unterstützen kann. Fig. 2B ist eine detailliertere Darstellung zweier der in Fig. 2A gezeigten Prozessoren.
- Fig. 3 zeigt die Details einer der in Fig. 2B dargestellten Verarbeitungseinheiten und verdeutlicht im besonderen einen Satz von Hardwareeinrichtungen und Steuerungssignalpfaden, die für die Realisierung einer bevorzugten Ausführungsform der Erfindung von Nutzen sind.
- Fig. 4 zeigt eine Alternative zu der in Fig. 3 dargestellten Anordnung der Hardwareeinrichtungen und Steuerungssignalpfade, die ebenfalls für die Realisierung einer Ausführungsform der Erfindung geeignet ist.
- Fig. 5 verdeutlicht zu Beispielszwecken die zur Realisierung einer Ausführungsform der Erfindung erforderliche zeitliche Zusammenarbeit zwischen einem ersten und einem zweiten Prozessor.
- Fig. 1 zeigt zwei Befehlsfolgen, die in zwei separaten Prozessoren innerhalb eines Multiprozessorsystems ausgeführt werden. Die Prozessoren, Prozessor 0 und Prozessor 1, teilen sich Speicherressourcen und zur Verdeutlichung wird definiert, daß der Befehl n+4 in der Befehlsfolge, die von Prozessor 0 verarbeitet wird, dieselbe Datenstruktur beeinflußt, die von dem Befehl m+4 in der Befehlsfolge, die von Prozessor 1 verarbeitet wird, beeinflußt wird.
- Gemäß der Erfindung werden die Befehle n+4 und m+4 derselben aus einer Vielzahl von Klassen (oder Sätzen) relativ atomarer Befehle zugeordnet.
- Fig. 1 verdeutlicht, daß gemäß den Prinzipien der Erfindung Befehle, die auf verschiedenen Prozessoren verarbeitet werden und die zu unterschiedlichen Klasse relativ atomarer Befehle gehören, gleichzeitig ausgeführt werden können während ein Versuch, zwei Befehle aus derselben Klasse gleichzeitig auszuführen, zu einem "Verschieben" der Ausführung eines der Befehle führt.
- Zur Verdeutlichung zeigt Fig. 1 den Befehl n+2 als zu einer ersten Klasse relativ atomarer Befehle zugehörig, den Befehl m+2 als zu einer anderen Klasse relativ atomarer Befehle gehörend, die Befehle n+4 und m+4 werden als zu noch einer anderen Klasse relativ atomarer Befehle (derselben Klasse, willkürlich als "Klasse 5" bezeichnet) zugehörig dargestellt, wobei die verbleibenden dargestellten Befehle nicht klassifiziert sind (d.h. keinem Satz relativ atomarer Befehle angehören).
- Entsprechend der Darstellung führen die Pruzessoren 0 und 1 die Befehle n und m gleichzeitig aus. Der Befehl m+2 (willkürlich in einer Klasse relativ atomarer Befehle, die als "Klasse 3" bezeichnet wird) wird gemäß der Darstellung in Prozessor 1 zu derselben Zeit ausgeführt, zu der der Befehl n+2 (willkürlich einer "Klasse 1" relativ atomarer Befehle angehörend) in Prozessor 0 ausgeführt wird.
- Nach Definition beeinflussen, da die Befehle m+2 und n+2 verschiedenen Klassen relativ atomarer Befehle angehören, diese nicht dieselbe Datenstruktur. Folglich ist es gemäß den Lehren der Erfindung gestattet, diese Befehle gleichzeitig auszuführen.
- Desweiteren ist es gemäß den Lehren der Erfindung gestattet, nichtklassifizierte Befehle, wie beispielsweise den Befehl m+3, gleichzeitig mit relativ atomaren Befehlen auszuführen. Dies wird durch das Überlappen des Befehls n+4 (ein relativ atomarer Befehl, der in Prozessor 0 ausgeführt wird) und.des Befehls m+3 (in Prozessor 1 ausgeführt) verdeutlicht. Ebenfalls ist dargestellt, daß nichtklassifizierte Befehle parallel zueinander ausgeführt werden, z.B. wird dargestellt, daß der Befehl n+6 in Prozessor 0 und der Befehl m+5 in Prozessor 1 gleichzeitig ausgeführt werden.
- Schließlich führt der Versuch von Prozessor 1, den Befehl m+4 auszuführen, während der Befehl n+4 abgearbeitet wird, gemäß der Erfindung zu dem dargestellten "Verschieben" des Befehls m+4 bis der Befehl n+4 beendet ist.
- Im Prinzip zeigt Fig. 1 die gewünschte Arbeitsweise der Prozessoren in einem System, das die Prinzipien der Erfindung verkörpert, wobei die "Klassen" jeweils vordefinierte Sätze von Befehlen sind, die eine spezielle Datenstruktur oder Objektklasse beeinflussen.
- Eine geeignete Form zum Unterstützen der in Fig. 1 gezeigten Prozessorarbeit, d.h. zum Unterstützeii der Ausführung relativ atomarer Befehle, wie sie hierin definiert werden, ist in Fig. 2 dargestellt.
- Die Fig. 2A und 2B zeigen ein Blockschaltbild eines Eng verbundenen Multiprozessorsystems. In den beiden Fig. 2A und 2B wird gezeigt, daß sich die Prozessoren den Hauptspeicher teilen. Handelsübliche Computersysteme, wie das IBM System/370, sind typische Vertreter des dargestellten Computersystems.
- Fig. 2A zeigt das dargestellte Multiprozessorsystem mit n Prozessoren, die als Prozessoren 201, 202, ..., n bezeichnet werden. Diese Prozessoren teilen sich den Hauptspeicher 203 und sind über den Hauptspeicherbus ("HS-Bus") 250 an diesen angeschlossen. Zwei aus der Vielzahl der in Fig. 2A dargestellten Prozessoren sind detaillierter in Fig. 2B dargestellt. Im besonderen zeigt Fig. 2B den Anschluß der Prozessoren 201 und 202 an den Hauptspeicher 203 über den Hauptspeicherbus ("HS-Bus") 250.
- Die in Fig. 2B dargestellten Prozessoren enthalten wohlbekannte Cache-Datenspeicher (Einheiten 210 und 211) und zugehörige Cacheverzeichnisse (Einheiten 215 und 216). Ebenfalls sind in Fig. 2B die Verarbeitungseinheiten (VE) selbst (Einheiten 220 und 230), die Speichersteuereinrichtungen (SSE) 240 und 241 und die Multiprozessorverzeichnisse (MP VERZ) 242 und 243 (typischerweise zum Sicherstellen der Cachekohärenz innerhalb eines Multiprozessorsystems) dargestellt. Jede der SSEs enthält entsprechend der Darstellung ebenfalls einen Speicherpuffer, dargestellt als SP PUF 235 und 236.
- Das in den beiden Fig. 2A und 2B dargestellte System enthält Zwischenprozessor-Signalverbindungen 280, 281 und 282. Die Prozessoren 201, 202, usw. innerhalb eines Multiprozessorsystems kommunizieren untereinander aus einer Vielzahl von Gründen. Zum Beispiel kann die Zwischenprozessor-Signalisierung verwendet werden, um die Cachekohärenz aufrechtzuerhalten, eine Busüberwachung auszuführen usw. Die Zwischenprozessor-Kommunikation kann auf verschiedenen, wohlbekannten Wegen durchgeführt werden, die für sich allein genommen nicht Teil der Erfindung sind. Zum Beispiel beschreiben die US Patente A-4- 718 002 von Carr, A-4 663 709 von Fujiwara und A-4 412 286 jeweils Computersysteme, die bestimmte Formen der Zwischenprozessor-Kommunikation benutzen.
- Was neu ist, ist die Verwendung der Zwischenprozessor-Kommunikation in einem System wie dem in den Fig. 2A und 2B dargestellten zum Setzen, Überprüfen und Rücksetzen von Verriegelungen und zum Entscheiden über Verriegelungen, wobei die Verriegelungen so ausgelegt werden, daß sie die Verarbeitung relativ atomarer Befehle unterstützen, wie sie hierin definiert sind.
- Fig. 3 zeigt einen bevorzugten Mechanismus zur Unterstützung der Verarbeitung relativ atomarer Befehle im Zusammenhang eines Systems, wie es das in den Fig. 2A und 2B dargestellte ist. In der hiernach dargelegten Beschreibung sind die Zwischenprozessor-Verbindungen, die in den Fig. 2A und 2B dargestellt sind, dazu da, die oben erwähnte Verriegelungsinformation (und andere Informationen) zwischen den Prozessoren zu übertragen.
- Vor der Beschreibung der Details einer Hardwarestruktur, die die Erfindung unterstützt, werden erklärende Objektklassen und beispielhafte Befehle, die in jeder Klasse enthalten sein könnten, beschrieben. Die Kriterien für die Verbesserung der Systemleistungsfähigkeit durch den Entwurf relativ atomarer Befehlssätze werden ebenfalls beschrieben werden.
- Die Anzahl relativ atomarer Befehlsklassen, die definiert werden, ist eine Variable bei der Prozessorentwicklung. Dementsprechend könnte, um möglicherweise die Systemleistungsfähigkeit zu verbessern, d.h. die Herabsetzung dieser aufgrund des Versuchs der gleichzeitigen Ausführung von Befehlen aus derselben Klasse zu verringern, die Größe jeder Klasse verringert werden, während die Anzahl der definierten Klassen anwachsen würde usw. Durch Definition mehrerer Klassen relativ atomarer Befehle wird die Wahrscheinlichkeit dafür verringert, daß versucht wird, mehr als einen Operationscode aus einer gegebenen Klasse gleichzeitig auszuführen. Dementsprechend ist die Definition von mehreren Klassen relativ atomaren Befehle geeignet, um Verriegelungen, das Anhalten von Prozessoren usw. zu verringern und dadurch die Systemleistungsfähigkeit zu verbessern.
- Objektklassen werden entsprechend der Lehren der Erfindung im Sinn einer geneinsamen Datenstruktur definiert, die durch die Klassenmitglieder beeinflußt wird. Zum Beispiel könnte eine Klasse COMPARE AND SWAP für den bekannten Typ des Befehls COMPARE AND SWAP (der einen einzelneh Speicherplatz im gemeinsam genutzten Speicher beeinflußt) des IBM System/370 definiert werden. Ähnliche Befehle, wie beispielsweise COMPARE AND SWAP HALFWORD, könnten in dieser Klasse mit enthalten sein.
- Ein anderer Typ einer Datenstruktur, welcher die Grundlage für die Definition relativ atomarer Befehle sein könnte, ist eine E/A-Befehlswarteschlange. Prozessoren machen Einträge in solche Warteschlangen, um zum Beispiel Daten zwischen Speichermedien zu verschieben (aus dem Speicher auf eine Platte usw.). Die Binträge werden von E/A-Kanälen ausgeführt. Wie bei anderen gemeinsam genutzten Datenstrukturen muß das Überschreiben von Warteschlangeneinträgen vermieden werden, und die Definition relativ atomarer Befehle auf der Grundlage dieser Datenstruktur kann den gewünschten Schutz bereitstellen.
- Beispielhafte Befehle in der Klasse der E/A-Meldungswarteschlange könnten bekannte Befehle vom Typ I/O (Ein-/Ausgabe) und IOW (Ein-/Ausgabe und Warten) enthalten.
- Noch eine andere beispielhafte Datenstruktur, welche die Grundlage für die Definition relativ atomarer Befehle sein könnte, ist eine Senden/Empfangen-Warteschlange. Diese Struktur könnte eine Nachrichtenliste sein (ähnlich der E/A-Warteschlange), eine verknüpfte Liste oder ein anderer Typ einer Warteschlange. Komplexe Befehle, welche zum Beispiel Nachrichten zu einer Warteschlange hinzufügen oder daraus löschen, gehören natürlicherweise in die Klasse relativ atomarer Befehle, die auf einer Datenstruktur der Senden/Empfangen-Warteschlange basiert.
- Weitere Klassen könnten für Befehle definiert werden, die Task- Dispatch-Warteschlangen, Aufzeichnungsanforderungen, Zählerstrukturen, verschiedene Verzeichnisse usw. beeinflussen.
- Wiederum bezugnehmend auf Fig. 3 sollte beachtet werden, daß die dargestellten Komponenten funktionell zusammengefaßt und in das Blockschaltbild von Fig. 2B abgebildet werden können. Im besonderen können der Steuerspeicher 301, das Steuerspeicher-Operationsregister (SSOR) 302, die Chips der Verarbeitungseinheit (VE-Chips) 303 und die Verriegelungs-Entscheidungshardware 304 funktionell in der in Fig. 2B dargestellten VE (Block 220) zusammengefaßt werden können. Das SSOR 302, die Verriegelungs-Entscheidungslogik 304, die Hauptspeicherbus- (HS-Bus) Zuteilungslogik 305, die Realadressen-/Befehls- (RA/BEF) Warteschlange 306, der Speicher-Datenpuffer 307 und die Cachesteuerung 308 können zusammengefaßt werden, um die Funktion des in Fig. 2B dargestellten SSE-Blocks (Block 240) auszuführen. Die RA/BEF- Warteschlange 306 und der Speicher-Datenpuffer 307 fungieren in Kombination als der in Fig. 2B dargestellte Block SP PUF (Block 235). Die verbleibenden in Fig. 3 dargestellten Komponenten werden direkt auf ihre Entsprechungen in Fig. 2B abgebildet (Cache 240, Cacheverzeichnis 215 und MP VERZ 242).
- Die Abbildung zeigt, daß die in Fig. 3 dargestellte Hardware in der Lage ist, die Funktionen bekannter Systeme, z.B. des IBM System/370 auszuführen. Abweichend vom Stand der Technik können die in Fig. 3 dargestellten Hardwareelemente so ausgelegt werden, daß sie die Definition und Verarbeitung relativ atomarer Befehl unterstützen.
- Eine detaillierte funktionelle Beschreibung jedes in Fig. 3 dargestellten Blocks sowie dessen, wie die Blöcke zur Unterstützung der Definition und Verarbeitung von relativ atomaren Befehlen zusammenarbeiten, wird unmittelbar nachfolgend dargelegt. Vorauszusetzen ist lediglich, daß einige Befehle durch einen gegebenen Prozessor ausgeführt werden sollen (zum Beispiel durch den Prozessor 201 von Fig. 2B) und daß der Befehl durch die VE-Chips 303 entweder aus dem Hauptspeicher oder aus dem Cache abgerufen worden ist. Zum Zeitpunkt des ersten Abrufs ist unbekannt, ob ein Befehl relativ atomar ist oder nicht.
- Typischerweise wird der abgerufene Befehl in einem Befehlsregister (in Fig. 3 nicht dargestellt) gespeichert, das den VE-Chips 303 zugeordnet ist. Als nächstes greifen die VE-Chips 303 auf den Steuerspeicher 301 zu, um das erste Steuerwort einer Folge von Steuerworten, die zur Ausführung eines gegebenen Befehls benötigt werden, zu erhalten.
- An diesem Punkt kann gemäß einer Ausführungsform der Erfindung festgestellt werden, ob der abgerufene Befehl ein relativ atomarer Befehl ist. Wenn ein relativ atomarer Befehl abgerufen worden ist, wird eines.der Steuerworte der Folge (vorzugsweise das erste Steuerwort) versuchen, eine Verriegelung zu setzen.
- Eine bevorzugte Ausführungsform der Erfindung ruft zur Erweiterung bekannter Steuerspeichermechanismen mit jedem Steuerwort für einen gegebenen Befehl ein Verriegelungscodefeld mit auf. Das Verriegelungscodefeld kann durch einen Mikrocodierer benutzt werden, um die Verriegelungsnummer zu spezifizieren und um zu spezifizieren, ob der Versuch ein Setzen oder eine Freigabe einer gegebenen Verriegelung betrifft.
- In dieser bevorzugten Ausführungsform könnte ein gegebenes Steuerwort an die VE-Chips 303 gesendet werden, um verarbeitet zu werden, während das Verriegelungscodefeld, das dem Wort zugeordnet ist, an das SSOR 302 übertragen wird. Dies wird in Fig. 3 verdeutlicht. Entsprechend der Darstellung werden durch die VE-Chips 303 über die Leitung 350 aufeinanderfglgend Steuerworte bereitgestellt, während das Verriegelungscodefeld, das einem gegebenen Steuerwort zugeordnet ist, über die Leitung 351 für das SSOR 302 bereitgestellt wird. Jeder Versuch, eine Verriegelung zu setzen oder freizugeben, wird somit im SSOR 302 registriert. Das SSOR 302 selbst kann unter Verwendung eines Registers oder eines Zwischenspeichers realisiert werden.
- Die Verriegelungs-Entscheidungshardware 304 verfolgt (1) die bestehenden Verriegelungen und erkennt (2) Verriegelungen, die andere Prozessoren zu erhalten versuchen. Entsprechend einer bevorzugten Ausführungsform der Erfindung verwendet die Verriegelungs-Entscheidungshardware 304 einen internen Speicher, um die bestehenden Verriegelungen zu verfolgen. Daten, die von anderen Prozessoren bereitgestellt werden (deren Versuche, das Setzen oder Freigeben von Verriegelungen betreffend), werden über die Zwischenprozessor-Verbindung 355 bereitgestellt. Das Datenpaket von einem anderen Prozessor, hiernach als "MPFELD B" bezeichnet, wird in Fig. 3 als über die Leitung 355 ankommendes Eingangssignal in den gezeigten Prozessor dargestellt. Nicht in Fig. 3 dargestellt, aber in einer Ausführungsform der Erfindung beabsichtigt, ist die Verwendung separater MPFELDer für jeden Prozessor eines Multiprozessorsystems über separate Hardwareverbindungen. Alternativ dazu könnte ein gemultiplextes Busschema eingesetzt werden.
- Das Eingangssignal MPFELD B eines gegebenen Prozessors ist so ausgelegt, daß es nicht nur externe Verriegelungsinformationen sondern ebenso Informationen über die Zuteilung des Hauptspeicherbusses überträgt. Dies wird in Fig. 3 verdeutlicht, wobei das Eingangssignal MPFELD B auf Leitung 355 auf die Verriegelungs-Entscheidungshardware 304 (für die Eingangs-Verriegelungsinformation) und auf die Hauptspeicherbus (HS-Bus) Zuteilungslogik 305 (für die Information über die Hauptspeicherbus-Zuteilung) aufgeteilt wird.
- Wenn die Verriegelungs-Entscheidungshardware 304 in dem Teil des gezeigten Prozessors einen Versuch erkennt, eine Verriegelung zugewiesen zu bekommen (was aus dem Steuerspeicher 301 über das SSOR 302 in der entsprechenden Verriegelungscodeinformation zwischengespeichert wird), sendet die Einheit 304 über die Zwischenprozessor- Verbindung 366 den Versuch an die anderen Systemprozessoren. Fig. 3 zeigt, daß das Datenpaket "MPFELD A" über die Leitung 366 gesendet wird. Die Information MPFELD A, die von dem gezeigten Prozessor gesendet wird (einschließlich der für die Verriegelungs-Entscheidungshardware 304 über die Leitung 381 und die Pufferauswahl 340 verfügbaren HS-Bus-Zuteilungsinformation) wird für alle anderen Prozessoren des Systems zur Information MPFELD B.
- Wenn festgestellt wird, daß kein anderer Prozessor versucht hat, die in Frage kommende Verriegelung zu erhalten (in einem vorhergehenden Zyklus), wird der Verriegelungs-Entscheidungshardware 304 (angenommen es gibt keine aufzulösenden Konflikte während des aktuellen Zyklus') die Verriegelung zugeteilt. In diesem Fall setzen die VE-Chips 303 die Verarbeitung der Steuerworte, die sequentiell über die Leitung 350 bereitgestellt werden, fort (d.h., führen den abgerufenen relativ atomaren Befehl aus).
- Wenn ein anderer Prozessor die Verriegelung in einem vorhergehenden Zyklus angefordert und zugewiesen bekommen hat, spiegelt sich diese Tatsache im Speicher der Verriegelungs-Entscheidungshardware wider (die Information ist dem gezeigten Prozessor im vorhergehenden über die Leitung 355 bereitgestellt worden). In diesen Fall werden die VE-Chips 303 in einen Haltemodus versetzt, d.h. es wird verhindert, daß weitere Steuerworte aus dem Steuerspeicher verarbeiten. Das "Verschieben" kann über ein Signal auf einer Verschieben-Leitung, die als Leitung 370 in Fig. 3 dargestellt ist, erreicht werden.
- Schließlich muß, wenn während desselben Zyklus sowohl der gezeigte Prozessor als auch ein anderer Prozessor versuchen eine Verriegelung zu erhalten, die Verriegelungs-Entscheidungshardware 304 den schwebenden Konflikt auflösen. Ein beliebiges aus einer Anzahl von Verfahren kann dazu verwendet werden, beispielsweise die Zuweisung von festen Prioritäten, rotierenden Prioritäten usw. an die Prozessoren. Wenn der gezeigte Prozessor die Verriegelung nicht zugewiesen bekommt, wird die Verriegelungs-Entscheidungslogik 304 aktualisiert, um anzuzeigen, welcher Prozessor tatsächlich die Verriegelung zugewiesen bekommen hat. In diesem Fall wird auf Leitung 370 ein Verschieben-Signal auf dieselbe Weise aktiviert, wie wenn ein anderer Prozessor die Verriegelung in einem vorhergehenden Zyklus zugewiesen bekommen hat.
- Wenn der gezeigte Prozessor die Verriegelung zugewiesen bekommt, wird kein Verschieben-Signal aktiviert, und genau als ob es keine weiteren Anforderungen an die Verriegelung gegeben hätte, setzen die VE-Chips 303 die Verarbeitung der Steuerworte fort.
- Entsprechend der bevorzugten Ausführungsform der Erfindung sendet der gezeigte Prozessor in jedem Zyklus ein MPFELD A (auf Leitung 355) mit der Information, ob eine Verriegelung zugewiesen worden ist oder nicht. Diese Vorgehensweise kann verändert werden.
- Zum Verstehen des Mechanismus', der in der bevorzugten Ausführungsform verwendet wird, um Verriegelungsfreigaben auszuführen, ist das Verständnis der Behandlung von Abrufen aus und Schreiboperationen in gemeinsam genutzten Ressourcen in einem Multiprozessorsystem (wie in dem in den Fig. 2A und 2B gezeigten) von Bedeutung. Wenn auch dem Fachmann viele mögliche Verfahren zur Handhabung von Abrufen und Schreiboperationen bekannt sind, so wird dennoch aus Vollständigkeitsgründen unmittelbar folgend ein beispielhaftes Verfahren erklärt.
- Wiederum bezugnehmend auf Fig. 3, kann die Pufferauswahlleitung 340 verwendet werden, um der Realadressen/Befehls-Warteschlange 306 und dem Speicherdatenpuffer 307 (unter anderen Einheiten) zu signalisieren, ob ein gegebenes Steuerwort, das durch die VE- Chips 303 verarbeitet wird, einen Abruf oder eine Schreiboperation ist. Anders ausgedrückt, die Anzeige des Signaltyps wird, so wie es in Fig. 2B gezeigt wird (Einheiten 306 und 307 in Fig. 3) dem Speicherpuffer 235 bereitgestellt. Es wird hiernach ersichtlich, daß die Erfassung der Anzahl von Schreiboperationen zur Bestimmung des Zeitpunktes der Freigabe einer Verriegelung von Bedeutung ist.
- Abrufe können (1) durch die VE-Chips 303 ausgeführt werden, indem ein Abrufbefehlssignal auf der Pufferauswahlleitung 340 ausgegeben wird; (2) durch Bereitstellung der Realadresse des Abrufs über den RA-Bus 397 durch die VE-Chips; und (3) indem der Cachedatenbus 398 im Falle eines Cache-Treffers die abgerufenen Daten zurück in die VE-Chips überträgt. Im Fall eines Cache-Fehlers werden die abgerufenen Daten über den Hauptspeicherbus und den Cachebus (der Pfad zwischen dem Hauptspeicherbus und dem Cachebus ist in Fig. 3 nicht dargestellt) in die VE-Chips übertragen. Die Cachesteuerung 308 kann verwendet werden, um festzustellen, ob ein Cache-Treffer vorliegt oder nicht.
- Schreiboperationen können behandelt werden, indem (1) die VE- Chips 303 ein Signal auf dem RA-Bus ausgeben, um die Hauptspeicheradresse anzuzeigen, auf die die Schreiboperation zielt, (2) indem die Daten auf den Datenbus 398 gelegt werden und (3) durch Ausgabe eines Schreibbefehlssignals durch die Pufferauswahl 340.
- Es ist wohlbekannt, daß aus Gründen der Leistungsfähigkeit die Einheit 235 von Fig. 2B als Puffer realisiert wird, so daß die VE-Chips 303 zum Fortsetzen der Verarbeitung der Steuerworte nicht warten müssen, bis der Hauptspeicherbus verfügbar ist.
- Mit diesem Verständnis der typischen Abruf- und Schreibmechanismen, die in Multiprozessorsystemen verwendet werden, können jetzt die erforderlichen Schritte vor der Freigabe einer Verriegelung (die ursprünglich gesetzt worden ist, um die Verarbeitung eines relativ atomaren Befehls zu ermöglichen) beschrieben und verstanden werden.
- Wenn die Verriegelungs-Entscheidungshardware 304 einen Versuch des gezeigten Prozessors zur Freigabe einer Verriegelung (was aus dem Steuerspeicher 301 über das SSOR 302 in der entsprechenden Verriegelungscodeinformation zwischengespeichert wird) erkennt, sollten entsprechend einer bevorzugten Ausführungsform der Erfindung die folgenden Aktionen unternommen werden.
- Da der in Fig. 3 gezeigte Prozessor sich die Hauptspeicherressourcen mit den anderen Systemprozessoren teilt, wäre es wünschenswert, alle Schreiboperationen, die von dem gezeigten Prozessor ausgelöst worden sind (um die Ausführung eines gegebenen relativ atomaren Befehls zu beenden) unter dem Schirm der bereits zugewiesen bekommenen Verriegelung zu schützen. D.h., die Verriegelungs-Entscheidungshardware 304 sollte entsprechend der bevorzugten Ausführungsform der Erfindung die Verriegelung solange nicht freigeben, bis alle vorhergehend durch den Prozessor 201 ausgelösten Schreiboperationen die Möglichkeit hatten, den Hauptspeicherbus zugeteilt zu bekommen.
- Den anderen Systemprozessoren muß ebenfalls ausreichend Zeit gegeben werden, um Schreiboperationen auf dem Hauptbus über ihre Cachesteuereinheiten zu erkennen, und es muß jeder Cachesteuereinheit ausreichend Zeit gegeben werden, um die ihr zugeordneten Cacheverzeichnisse ungültig zu machen, wenn in einem internen Cache eines beliebigen anderen Prozessors ein Cache-Treffer auftritt. Die entsprechenden Cachesteuereinheiten erkennen Schreiboperationen auf dem Hauptbus beispielsweise durch Busüberwachung.
- Eine Cachesteuereinheit kann feststellen, ob ein Hauptspeicherplatz in den Cache kopiert wird, über den die Einheit die Steuerung hat, indem (1) der Hauptspeicherplatz in einem Multiprozessor- (MP) Verzeichnis, wie beispielsweise dem in Fig. 3 dargestellten MP-Verzeichnis 242, nachgeschlagen wird. Wenn der Speicherplatz im Cache steht, kann die Cachesteuereinheit die geeigneten Busse belegen (zum Beispiel den RA-Bus 397), um das Gültigkeitsbit im Cacheverzeichnis und im MP-Verzeichnis durch Zyklenteilung (in der Darstellung von Fig. 3 über Leitung 395 zu erreichen) auf ungültig zu setzen.
- Wenn alle Schreiboperationen über den Hauptspeicherbus gelaufen sind und ausreichend Zeit verstrichen ist, um die Cacheaktualisierungen vorzunehmen (wenn erforderlich), kann eine Verriegelung freigegeben werden.
- Somit muß, selbst wenn ein Versuch einer Freigabe durch die Verriegelungs-Entscheidungshardware 304 erkannt worden ist, die Hardware feststellen, ob (1) noch durch die VE-Chips 303 ausgelöste Schreiboperationen anstehen, die in den Speicherpuffer 235 geschrieben worden sind und noch nicht auf den Hauptspeicherbus ausgegeben worden sind; (2) ob auf dem RA-Bus 397, dem Cachebus 398 und der Pufferauswahl 340 während des Zyklus, in dem eine Freigabe erkannt wird, eine Schreiboperation stattfindet; und (3) wann die letzte Schreiboperation im Puffer 235 (Einheiten 306 und 307 von Fig. 3) auf den Hauptspeicherbus ausgegeben wird.
- Das zuerst aufgezählte Ziel kann durch die Verriegelungs-Entscheidungshardware 304 erreicht werden, indem diese die Anzahl der Schreiboperationen verfolgt, die in den Speicherpuffer 235 geschrieben werden. Das zweite Ziel kann durch Überwachung der Pufferauswahlleitung 340 von Fig. 3 bezüglich des im vorhergehenden erwähnten, eine Schreiboperation anzeigenden Signals erfüllt werden. Das dritte Ziel kann über ein von der Hauptspeicherbus-Zuteilungslogik 305 in die Verriegelungs-Entscheidungshardware 304 gehendes Eingangssignal erreicht werden.
- Schließlich kann die Verriegelungs-Entscheidungshardware 304, nachdem erkannt worden ist, daß die letzte Schreiboperation auf den HS-Bus gelegt worden ist, die Verriegelungsfreigabeinformation als Teil des MPFELD A Datenpaketes auf Leitung 366 ausgeben.
- Der Freigabeprozeß wird beendet, nachdem die Verriegelungs-Entscheidungseinheiten in dem System ihre internen Speicher aktualisieren (tatsächlich die Verriegelung freigeben) und über die Zuweisung der freigegebenen Verriegelung entschieden wird, wenn sich tatsächlich ein oder mehrere der anderen Systemprozessoren in dem "Verschieben"-Zustand befinden.
- Unter Bezugnahme auf Fig. 3 ist eine bevorzugte Ausführungsform der Erfindung beschrieben worden, in welcher die gezeigte Kombination der Vorrichtungselemente zur Unterstützung der Definition und der Verarbeitung relativ atomarer Befehle arbeitet. Die Zwischenprozessor-Signalisierung erfolgt über eine diskrete Verdrahtung.
- Das in Fig. 4 gezeigte System soll dasselbe System darstellen, wie das in Fig. 3 gezeigte (d.h. unter Verwendung einer diskreten Verdrahtung für die Zwischenprozessor-Signalisierung), mit der Ausnahme, daß anstatt einen erweiterten Steuerspeicher, das SSOR und Mikrocode zur Realisierung der Erfindung zu verwenden, alternativ ein Hardwaredecodiemechanismus eingesetzt wird.
- Diese Alternative erfordert die Codierung relativ atomarer Befehle auf bestimmt Weise (um sie von nichtrelativ atomaren Befehlen zu unterscheiden) und die Bereitstellung von Verriegelungscodeinformationen (Verriegelungsnummer; Versuch, eine Verriegelung zugewiesen zu bekommen; Versuch, eine Verriegelung freizugeben) für die Verriegelungs-Entscheidungshardware 304 bei der Ausführung der Befehlsdecodierung. Zur Ausführung dieser Funktionen, von denen dem Fachmann wohlbekannt ist, daß sie unter Verwendung standardmäßiger Decodierlogik, Nachschlagetabellen usw. umgesetzt werden können, wird in Fig. 4 die Befehlsdecodiereinheit 401 gezeigt.
- Schließlich dient Fig. 5 zur Zusammenfassung und Darstellung des gewünschten Operationsablaufes beim Setzen und Freigeben einer Verriegelung entsprechend den Lehren der Erfindung, wie sie im vorhergehenden unter Bezugnahme auf Fig. 3 beschrieben worden sind.
- Im besonderen zeigt Fig. 5 die zwei relativ atomaren Befehle n+4 und m+4, die in Fig. 1 dargestellt sind. Man sollte sich erinnern, daß diese Befehle, als derselben klasse angehörend definiert worden sind, wobei der Befehl m+4 verschoben werden soll, bis n+4 seine Verriegelung freigibt.
- Zur Veranschaulichung sei angenommen, daß beide Befehle einen speziellen Speicherplatz ("A") inkrementieren sollen. Linie (a) von Fig. 5 zeigt, daß der Befehl n+4 in der richtigen Reihenfolge nach dem Befehl n+3 ausgeführt wird. Linie (b) von Fig. 5 zeigt, die Mikrocodeworte CW1 bis CW5, welche verwendet werden können, um das gewünschte Inkrementieren des Speichers auf relativ atomare Weise auszuführen.
- Linie (b) von Fig. 5 kann aus der Perspektive des SSOR 302 von Fig. 3 betrachtet werden. In einem ersten Zyklus spezifiziert CW1, daß die Verriegelung 5 (willkürlich dieser "Klasse" von Befehlen zugeordnet) gesetzt werden soll. Im nächsten Zyklus spezifiziert CW2, daß ein Speicherabruf dusgeführt werden soll (in ein willkürliches Prozessorregister, "SA"). CW3 spezifiziert, daß SA durch die VE-Chips 303 (von Fig. 3) inkrementiert werden soll, CW4 spezifiziert, daß SA (jetzt mit dem enthaltenen inkrementierten Wert) gespeichert werden soll, und CW5 spezifiziert, daß die Verriegelung (Verriegelung 5) freigegeben werden soll.
- Linie (c) von Fig. 5 zeigt die Ausgabe des Datenpaketes MPFELD A durch Prozessor 0 in Reaktion auf jedes der Steuerworte CW1 bis CW5. Zwischen dem Zeitpunkt, zu dem ein Steuerwort von dem SSOR 302 zwischengespeichert wird (Linie (b)), und dem Zeitpunkt der Ausgabe von MPFELD A ist eine Verzögerung von einem Zyklus dargestellt. Es sollte beachtet werden, daß die Verriegelung 5 durch den Prozessor 0 für die durch Linie (d) von Fig. 5 dargestellte Zeitspanne aufrechterhalten wird.
- Die Linien (e) beziehungsweise (f) von Fig. 5 zeigen die Zeitspanne, während derer der tatsächliche Abruf von A erfolgen könnte (über 1 Zyklus oder mehrere Zyklen in Abhängigkeit davon, ob A sich im Cachespeicher befindet oder nicht) und während derer der inkrementierte Wert auf A gespeichert wird (über zwei Zyklen, weil die Schreiboperation auf den HS-Bus ausgegeben werden muß). Mit Linie (e) wird angenommen, daß A aus dem Cache abgerufen wird.
- Linie (g) von Fig. 5 zeigt die Zeitspanne, während derer das Register SA aufgrund des Abrufes nicht verfügbar ist.
- Linie (h) zeigt, wie die Befehlsfolge m+3, usw. durch Prozessor 1 ausgeführt wird.
- Linie (i) zeigt die Zeitspanne, während derer das SSOR in Prozessor 1 die Steuerworte CW1 bis CW5 des folgenden Befehls m+4 zwischenspeichert. Es sollte beachtet werden, daß der Abruf von CW2 bis mindestens einen Zyklus nach der Schreiboperation in Linie (f) verschoben wird, um dem System Zeit zu geben, wie im vorhergehenden beschrieben, die Cachekohärenz aufrechtzuhalten.
- Es sollte ebenfalls beachtet werden, daß das Inkrementieren, das von CW3 auf Linie (i) von Fig. 5 gesteuert wird, nicht ausgeführt werden kann, bis der ordnungsgemäße Wert von A (wie er durch Befehl n+4 inkrementiert worden ist) aus dem Hauptspeicher abgerufen worden sein kann, was durch Linie (m) von Fig. 5 angezeigt wird. Dies könnte eine länger Zeitspanne beanspruchen, als sie in Fig. 5 dargestellt ist, wo der Abruf von A auf dem HS-Bus so dargestellt ist, daß er in dem Zyklus nach dem Abruf von A auf dem Cachebus erfolgt.
- Die Linien (k) und (l) von Fig. 5 stellen das beschriebene Cachekohärenzprotokoll dar, das in dem Prozessor 1 ausgeführt wird, und den nachfolgenden Abruf aus dem Hauptspeicher (auf Linie m), der auf den Cache-Fehler folgt (die Daten sind auf Linie (j) gelöscht worden), der bei dem versuchten Abruf aus dem Cache-von Linie (l) auftritt.
- Wenn der ordnungsgemäße Wert von A aus dem Hauptspeicher abgerufen worden ist, speichert CW4, dargestellt auf Linie (i), A (dargestellt auf den Linien (l) und (m) von Fig. 5). Die Freigabe (CW5 wie auf Linie (i) dargestellt) kann jetzt auf dieselbe Weise erfolgen, wie bei der Freigabe von Befehl n+4 usw.
- Es sollte beachtet werden, daß Linie (j) von Fig. 5 den Zeitverlauf des Eingangssignals MPFELD B von Prozessor 0 darstellt (Ausgangssignal von Prozessor 1). Diese Signale zeigen die Versuche von Prozessor 1, die Verriegelung 5 zu setzen, um den Abruf (für den Befehl m+4) auszuführen und nachfolgend Verriegelung 5 freizugeben. Schließlich zeigt Linie (n) das Verschieben- Intervall von Prozessor 1 (die Zeitspanne vom Setzen der Verriegelung 5 durch Befehl n+4 bis zu deren Freigabe durch den Befehl n+4, genügend Zeit bereitstellend, um die Cachekohärenz aufrechtzuhalten).
- Somit sind Verfahren und Vorrichtungen zur Realisierung der aufgesetzten Ziele der Erfindung beschrieben worden. Der Fachmann wird erkennen, daß die vorstehende Beschreibung neuer Verfahren und Vorrichtungen nur zu Veranschaulichungszwecken und zur Erklärung dargelegt worden ist. Es ist nicht beabsichtigt, die Erfindung auf die genau offenbarte Form zu beschränken oder zu erschöpfen, und offensichtlich sind im Rahmen der oben erwähnten Lehren viele Modifikationen und Variationen möglich.
- Zum Beispiel kann eine Klasse von Befehlen so entworfen werden, daß sie ohne jede Beschränkungen relativ atomar zu jedem beliebigen Befehl in einem beliebigen anderen Prozessor im System ausgeführt wird; es können Klassen auf der Grundlage des Operandentyps oder Speicherplatzes sowie des Befehlstyps, der bearbeiteten Ressourcen usw. definiert werden; zum Spezifizieren der zu verriegelnden Befehlsklasse könnten Nachrichten gesendet werden, und diese Nachrichten könnten unter Verwendung eines vorhandenen Busses übertragen werden (wie beispielsweise des Hauptspeicherbusses), anstatt unter Verwendung der hierin beschriebenen diskreten Verdrahtung usw.
Claims (20)
1. Computersystem umfassend:
a) mindestens eine gemeinsam genutzte Datenressource
(203);
b) eine Vielzahl Prozessoren (201, 202), von denen jeder
gleichzeitig mit allen andeien Prozessoren eine
separate Befehlsfolge verarbeitet, und die an mindestens
eine gemeinsam genutzte Datenressource angeschlossen
sind, dadurch gekennzeichnet, daß jeder Prozessor
einen Befehlssatz besitzt, der in eine Vielzahl
Befehlsklassen unterteilt ist, von denen mindestens eine
Befehle umfaßt, die auf atomare Weise ausgeführt werden
sollen, wobei jede der Klassen so definiert wird, daß
sie eine andere Verriegelung aufweist; und daß das
System desweiteren umfaßt:
c) Mittel (304, 305) zum Signalaustausch zwischen den
Prozessoren, um allen anderen Prozessoren anzuzeigen,
wenn ein Befehl aus einer beliehigen aus der Vielzahl
der Klassen auf einem beliebigen der Prozessoren aus
dessen Befehlsfolge verarbeitet wird, und um eine
Anzeige bereitzustellen, welcher speziellen Klasse von
Befehlen dieser Befehl angehört;
d) ein Mittel (302, 401) zum Bereitstellen einer weiteren
Anzeige der Klasse des zu verarbeitenden Befehls aus
der entsprechenden Befehlsfolge in jedem der
Prozessoren; und
e) Mittel (304, 370), die in jedem der Prozessoren auf
die beiden Anzeigen reagieren, um die Verarbeitung
eines beliebigen anderen Befehls aus der einen Klasse
in jedem anderen Prozessor des Systems zu verzögern,
so daß der Befehl, der in dem einen Prozessor in
atomarer Weise ausgeführt wird, die gemeinsam genutzte
Ressource gegen eine Benutzung durch einen anderen
Befehl derselben Klasse, der in atomarer Weise
ausgeführt wird, verriegelt.
2. Computersystem gemäß Anspruch 1, wobei der Befehlssatz in
mindestens einem aus der Vielzahl der Prozessoren in einem
Steuerspeicher mikrocodiert ist, was eine
Verriegelungscodeinformation für Befehle einschließt, die bezüglich anderer
Befehle atomar verarbeitet werden müssen.
3. Computersystem gemäß Anspruch 2, wobei die
Verriegelungscodeinformation eine Verriegelungsnummer und eine Anzeige
dazu enthält, ob ein Versuch unternommen wurde, die durch
die Verriegelungsnummer spezifizierte Verriegelung
zugewiesen zu bekommen oder freizugeben.
4. Computersystem gemäß Anspruch 1, wobei der Befehlssatz in
mindestens einem aus der Vielzahl der Prozessoren so in dem
Prozessor installiert ist, daß beim Decodieren eines
Befehls, der bezüglich anderer Befehl atomar ausgeführt
werden muß, eine Verriegelungscodeinformation bereitgestellt
wird.
5. Computersystem gemäß Anspruch 4, wobei die
Verriegelungscodeinformation eine Verriegelungsnummer enthält.
6. Computersystem gemäß einem der Ansprüche 1 bis 5, wobei die
Mittel zum Signalaustausch verdrahtete Zwischenprozessor-
Signalisierungsmittel umfassen, die zur Übertragung der
Verriegelungscodeinformation zwischen den Prozessoren
dienen.
7. Computersystem gemäß einem der Ansprüche 1 bis 51 wobei die
Mittel zum Signalaustausch einen gemeinsam genutzten Bus
umfassen.
8. Computersystem gemäß einem der Ansprüche 1 bis 7, wobei
mindestens eine der gemeinsam genutzten
Datenverarbeitungsressourcen ein geteilter Speicher ist.
9. Computersystem gemäß einem der Ansprüche 1 bis 8, wobei der
Befehlssatz in einem Prozessor derselbe ist wie der
Befehlssatz in jedem anderen Prozessor.
10. Computersystem gemäß einem der Ansprüche 1 bis 9, wobei die
Befehlsklassen im Sinn von Befehlstypen definiert werden.
11. Computersystem gemäß einem der Ansprüche 1 bis 9, wobei die
Befehlsklassen im Sinn von Operandentypen definiert werden.
12. Computersystem gemäß einem der Ansprüche 1 bis 9, wobei die
Befehlsklassen im Sinn von Operandenspeicherplätzen
definiert werden.
13. Computersystem gemäß einem der Ansprüche 1 bis 9, wobei die
Befehlsklassen im Sinn von bearbeiteten
Datenverarbeitungsressourcen definiert werden.
14. Computersystem gemäß einem der Ansprüche 1 bis 9, wobei die
Befehlsklassen im Sinn von beeinflußten Datenstrukturen
definiert werden.
15. Computersystem gemäß einem der Ansprüche 1 bis 14, wobei
das Computersystem ein lose verbundenes
Multiprozessorsystem ist.
16. Verfahren zur Verwendung in einem Computersystem, das eine
Vielzahl Prozessoren, von denen jeder einzelne seine eigene
separate Befehlsfolge gleichzeitig mit denen aller anderen
Prozessoren verarbeitet, und mindestens eine gemeinsam
genutzte Datenverarbeitungsressource enthält, wobei jeder
Befehl Teil einer Klasse aus einem Satz von Befehlsklassen
ist, der vordefinierte Klassen von Befehlen enthält, die
bezüglich der Befehle innerhalb einer gegebenen Klasse auf
atomare Weise ausgeführt werden müssen, die folgenden
Schritte umfassend:
a) Installieren eines Verriegelungsmechanismus in jeden
der Befehle, wobei der Mechanismus ein
Verriegelungsnummer anzeigt, die für alle Befehle einer gegebenen
Klasse dieselbe und für jede andere Klasse von
Befehlen eine verschiedene ist;
b) Bestimmen, in jedem der Prozessoren, der
Verriegelungsnummer einer Verriegelung, die einem ersten
Befehl zugeordnet ist, der von dem Prozessor ausgeführt
wird;
c) Erhalten, von dem beliebigen Prozessor, einer
vorgegebene Verriegelung, die der Nummer in allen Prozessoren
zugeordnet ist, bevor dieser erste Befehl ausgeführt
wird;
d) Verzögern der Ausführung eines zweiten Befehls, der in
atomarer Weise ausgeführt werden muß, um die gemeinsam
genutzte Ressource gegen die Benutzung durch den
zweiten Befehl zu verriegeln, wenn der erste Befehl
derselben
Befehlsklasse angehört.
17. Verfahren gemäß Anspruch 16, desweiteren die folgenden
Schritte umfassend:
a) Feststellen, vor Ausführung des ersten Befehls, ob ein
von dem Prozessor, auf dem der erste Befehl ausgeführt
werden soll, verschiedener Prozessor versucht,
irgendeinen anderen Befehl aus der Klasse des ersten Befehls
auszuführen; und
b) Entscheiden über die Verriegelung entsprechend einem
vordefinierten Prioritätsschema, so daß höchstens ein
Prozessor die spezifizierte Verriegelung zugewiesen
bekommt.
18. Verfahren gemäß Anspruch 17, desweiteren die folgenden
Schritte umfassend:
a) Ausführen des ersten Befehls, wenn die Verriegelung
nicht schon ein anderer Prozessor zugewiesen bekommen
hat;
b) Ausführen des Befehls, der die spezifizierte
Verriegelung über den Entscheidungsschritt zugewiesen bekommt,
wenn die Verriegelungsentscheidung zu treffen war; und
c) Verschieben, um eine Zeitspanne, die ausreicht, um die
Ausführung des ersten Befehls sicherzustellen, der
Verarbeitung (1) jedes Befehls, der versucht, eine
Verriegelung zugewiesen zu bekommen, die ein anderer
Prozessor gesetzt hat, und (2) jedes Befehls, der die
identifizierte Verriegelung nach Ausführung der
Verriegelungsentscheidung für diese Verriegelung nicht
zugewiesen bekommen hat.
19. Verfahren gemäß Anspruch 18, desweiteren den folgenden
Schritt umfassend:
Ausführen, während der Zeitspanne, eines Befehls, der nicht
der ersten Klasse von Befehlen angehört, auf mindestens
einen aus der Vielzahl der Prozessoren, die keinen Befehl
aus der ersten Klasse enthalten oder ausführen.
20. Verfahren gemäß Anspruch 19, wobei die Verriegelung, die
von einem gegebenen Befehl gesetzt worden ist, erst nach
einer Zeitspanne freigegeben wird, die ausreicht, um
sicherzustellen, daß alle Schreiboperationen, die sich aus
der Ausführung des Befehls ergeben, von dem Prozessor, auf
dem der gegebene Befehl verarbeitet wird, ausgegeben worden
sind, und daß alle Prozessoren des Systems im Fall der
Verwendung von Cachespeicher durch die Prozessoren, die
Möglichkeit hatten, die Cachekohärenz aufrechtzuhalten.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US43404889A | 1989-11-09 | 1989-11-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69029995D1 DE69029995D1 (de) | 1997-04-03 |
DE69029995T2 true DE69029995T2 (de) | 1997-08-21 |
Family
ID=23722609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69029995T Expired - Fee Related DE69029995T2 (de) | 1989-11-09 | 1990-10-09 | Multiprozessor mit relativ atomaren Befehlen |
Country Status (4)
Country | Link |
---|---|
US (1) | US5333297A (de) |
EP (1) | EP0432075B1 (de) |
JP (1) | JP3206914B2 (de) |
DE (1) | DE69029995T2 (de) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6336180B1 (en) | 1997-04-30 | 2002-01-01 | Canon Kabushiki Kaisha | Method, apparatus and system for managing virtual memory with virtual-physical mapping |
US5761413A (en) * | 1987-12-22 | 1998-06-02 | Sun Microsystems, Inc. | Fault containment system for multiprocessor with shared memory |
CA2078310A1 (en) * | 1991-09-20 | 1993-03-21 | Mark A. Kaufman | Digital processor with distributed memory system |
CA2078312A1 (en) | 1991-09-20 | 1993-03-21 | Mark A. Kaufman | Digital data processor with improved paging |
JP2729343B2 (ja) * | 1992-08-28 | 1998-03-18 | 三菱電機株式会社 | 複数個の処理装置を有する情報処理システムおよびこの情報処理システムにおいて用いられる制御装置ならびに処理装置 |
JPH06110846A (ja) * | 1992-09-25 | 1994-04-22 | Fujitsu Ltd | 排他制御方式 |
JP2814880B2 (ja) * | 1993-06-04 | 1998-10-27 | 日本電気株式会社 | 異なる命令特性を持つ複数のcpuによって構成される計算機システムの制御装置 |
FR2706651B1 (fr) * | 1993-06-17 | 1995-08-18 | Alsthom Cge Alcatel | Procédé de gestion des accès concurrents à une mémoire par plusieurs utilisateurs. |
US5572704A (en) * | 1993-12-15 | 1996-11-05 | Silicon Graphics, Inc. | System and method for controlling split-level caches in a multi-processor system including data loss and deadlock prevention schemes |
US5548728A (en) * | 1994-11-04 | 1996-08-20 | Canon Information Systems, Inc. | System for reducing bus contention using counter of outstanding acknowledgement in sending processor and issuing of acknowledgement signal by receiving processor to indicate available space in shared memory |
AUPO648397A0 (en) | 1997-04-30 | 1997-05-22 | Canon Information Systems Research Australia Pty Ltd | Improvements in multiprocessor architecture operation |
US6311258B1 (en) | 1997-04-03 | 2001-10-30 | Canon Kabushiki Kaisha | Data buffer apparatus and method for storing graphical data using data encoders and decoders |
AUPO647997A0 (en) * | 1997-04-30 | 1997-05-22 | Canon Information Systems Research Australia Pty Ltd | Memory controller architecture |
US6289138B1 (en) | 1997-04-30 | 2001-09-11 | Canon Kabushiki Kaisha | General image processor |
US6707463B1 (en) | 1997-04-30 | 2004-03-16 | Canon Kabushiki Kaisha | Data normalization technique |
US6061749A (en) * | 1997-04-30 | 2000-05-09 | Canon Kabushiki Kaisha | Transformation of a first dataword received from a FIFO into an input register and subsequent dataword from the FIFO into a normalized output dataword |
US6349379B2 (en) | 1997-04-30 | 2002-02-19 | Canon Kabushiki Kaisha | System for executing instructions having flag for indicating direct or indirect specification of a length of operand data |
US5893157A (en) * | 1997-05-28 | 1999-04-06 | International Business Machines Corporation | Blocking symbol control in a computer system to serialize accessing a data resource by simultaneous processor requests |
US5895492A (en) * | 1997-05-28 | 1999-04-20 | International Business Machines Corporation | Processor associated blocking symbol controls for serializing the accessing of data resources in a computer system |
US5895494A (en) * | 1997-09-05 | 1999-04-20 | International Business Machines Corporation | Method of executing perform locked operation instructions for supporting recovery of data consistency if lost due to processor failure, and a method of recovering the data consistency after processor failure |
US6009261A (en) * | 1997-12-16 | 1999-12-28 | International Business Machines Corporation | Preprocessing of stored target routines for emulating incompatible instructions on a target processor |
US6631463B1 (en) * | 1999-11-08 | 2003-10-07 | International Business Machines Corporation | Method and apparatus for patching problematic instructions in a microprocessor using software interrupts |
US6473821B1 (en) * | 1999-12-21 | 2002-10-29 | Visteon Global Technologies, Inc. | Multiple processor interface, synchronization, and arbitration scheme using time multiplexed shared memory for real time systems |
US6912640B2 (en) * | 2003-03-14 | 2005-06-28 | Sun Microsystems, Inc. | Method to partition large code across multiple e-caches |
TW200708963A (en) * | 2005-08-26 | 2007-03-01 | Ind Tech Res Inst | Method and apparatus for synchronization in a multi-processor system |
GB0524348D0 (en) * | 2005-11-30 | 2006-01-04 | Ibm | Method and system for concurrent processing of list items |
JP2010140290A (ja) * | 2008-12-12 | 2010-06-24 | Panasonic Corp | マルチプロセッサシステム及びその排他制御の調停方法 |
US9160607B1 (en) * | 2012-11-09 | 2015-10-13 | Cray Inc. | Method and apparatus for deadlock avoidance |
US9251022B2 (en) | 2013-03-01 | 2016-02-02 | International Business Machines Corporation | System level architecture verification for transaction execution in a multi-processing environment |
US9218272B2 (en) | 2013-03-01 | 2015-12-22 | International Business Machines Corporation | System level architecture verification of a transactional execution |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3614745A (en) * | 1969-09-15 | 1971-10-19 | Ibm | Apparatus and method in a multiple operand stream computing system for identifying the specification of multitasks situations and controlling the execution thereof |
US4073005A (en) * | 1974-01-21 | 1978-02-07 | Control Data Corporation | Multi-processor computer system |
US4199811A (en) * | 1977-09-02 | 1980-04-22 | Sperry Corporation | Microprogrammable computer utilizing concurrently operating processors |
US4257095A (en) * | 1978-06-30 | 1981-03-17 | Intel Corporation | System bus arbitration, circuitry and methodology |
US4412286A (en) * | 1980-09-25 | 1983-10-25 | Dowd Brendan O | Tightly coupled multiple instruction multiple data computer system |
US4439830A (en) * | 1981-11-09 | 1984-03-27 | Control Data Corporation | Computer system key and lock protection mechanism |
JPS58140862A (ja) * | 1982-02-16 | 1983-08-20 | Toshiba Corp | 相互排他方式 |
US4514803A (en) * | 1982-04-26 | 1985-04-30 | International Business Machines Corporation | Methods for partitioning mainframe instruction sets to implement microprocessor based emulation thereof |
US4574350A (en) * | 1982-05-19 | 1986-03-04 | At&T Bell Laboratories | Shared resource locking apparatus |
US4594655A (en) * | 1983-03-14 | 1986-06-10 | International Business Machines Corporation | (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions |
US4891749A (en) * | 1983-03-28 | 1990-01-02 | International Business Machines Corporation | Multiprocessor storage serialization apparatus |
US4758950A (en) * | 1983-04-18 | 1988-07-19 | Motorola, Inc. | Method and apparatus for selectively delaying an interrupt of a coprocessor |
US4604694A (en) * | 1983-12-14 | 1986-08-05 | International Business Machines Corporation | Shared and exclusive access control |
CA1239227A (en) * | 1984-10-17 | 1988-07-12 | Randy D. Pfeifer | Method of and arrangement for ordering of multiprocessor operations in a multiprocessor system |
US4766566A (en) * | 1986-08-18 | 1988-08-23 | International Business Machines Corp. | Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing |
IN170672B (de) * | 1987-07-01 | 1992-05-02 | Digital Equipment Corp | |
US4943912A (en) * | 1987-10-13 | 1990-07-24 | Hitachi, Ltd. | Parallel processor system having control processor and array control apparatus for selectively activating different processors |
US5175829A (en) * | 1988-10-25 | 1992-12-29 | Hewlett-Packard Company | Method and apparatus for bus lock during atomic computer operations |
-
1990
- 1990-10-09 EP EP90480161A patent/EP0432075B1/de not_active Expired - Lifetime
- 1990-10-09 JP JP27204390A patent/JP3206914B2/ja not_active Expired - Fee Related
- 1990-10-09 DE DE69029995T patent/DE69029995T2/de not_active Expired - Fee Related
-
1993
- 1993-01-19 US US08/005,928 patent/US5333297A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP0432075B1 (de) | 1997-02-26 |
JP3206914B2 (ja) | 2001-09-10 |
JPH03210657A (ja) | 1991-09-13 |
DE69029995D1 (de) | 1997-04-03 |
EP0432075A2 (de) | 1991-06-12 |
US5333297A (en) | 1994-07-26 |
EP0432075A3 (en) | 1992-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69029995T2 (de) | Multiprozessor mit relativ atomaren Befehlen | |
DE69822534T2 (de) | Gemeinsame Speicherbenutzung mit variablen Blockgrössen für symmetrische Multiporzessor-Gruppen | |
DE3856552T2 (de) | Multiprozessor-Digitaldatenverarbeitungssystem und Verfahren zum Betreiben dieses Systems | |
DE69027253T2 (de) | Multiprozessor-Cachespeichersystem | |
DE69031978T2 (de) | Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern | |
DE69606648T2 (de) | Verfahren und vorrichtung zur ablauffolgen von multiprozessoren mit starker affinität | |
DE69128107T2 (de) | Busanordnung für Speicherzugriff | |
DE68927172T2 (de) | Multiprozessorsystem mit cache-speichern | |
DE3587960T2 (de) | Datenverarbeitungsanlage mit einem Speicherzugriffssteuergerät. | |
DE3587439T2 (de) | Gemeinsam benutzter Mehrprozessor-Pipeline-Cachespeicher. | |
DE69616465T2 (de) | Cachespeicher mit Datenvorausladung | |
DE3751399T2 (de) | Parallelrechner mit verteilten, gemeinsam genutzten Speichern und verteilten, aufgabenaktivierenden Schaltungen. | |
DE69130580T2 (de) | Cache-Speicheranordnung | |
DE69233655T2 (de) | Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedenartiger Prozessoren | |
DE3854368T2 (de) | Cachespeicher mit einer Elastizität in der Verarbeitung verschiedener Adressenfehler. | |
DE69807729T2 (de) | Threadumschaltungssteuerung in einem multithreadprozessorsystem | |
DE69331039T2 (de) | Rechnersystem mit einem Vorausholungscachespeicher | |
DE69620807T2 (de) | Datenverarbeitungsvorrichtung zum Vorziehen einer Datenstruktur aus dem Hauptspeicher oder seinem Cachespeicher | |
DE69434728T2 (de) | Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel | |
DE69025658T2 (de) | Verfahren zur Verbesserung der Leistung eines mehrstufigen Cachespeichers durch erzwungene Fehlgriffe | |
DE102005032949A1 (de) | Verfahren und Vorrichtung zum Implementieren von Speicherordnungsmodellen mit Ordnungsvektoren | |
DE69222060T2 (de) | Semaphore umgehung. | |
DE112007001171T5 (de) | Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf | |
DE112005003339T5 (de) | Transaktionsgestützter Verarbeitungsbetrieb mit gemeinsam genutzten Daten in einer Multiprozessorumgebung | |
DE69325566T2 (de) | Verfahren und System zur Befehlszuteilung in einem superskalaren Prozessorsystem mit unabhängig zugänglichem Zwischenspeicher |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |