-
STAND DER TECHNIK
-
1. Gebiet
der Erfindung
-
Die
vorliegende Erfindung betrifft das Gebiet der Prozessoren und im
Besonderen eine Technik zum Vorsehen einer Speicherzugriffsanordnung
in einer Mehrfachverarbeitungsumgebung.
-
2. Beschreibung des Stands
der Technik
-
Beim
Betrieb eines Prozessors ist die Reihenfolge bzw. die Anordnung,
in der Programmanweisungen ausgeführt werden, von entscheidender Bedeutung
für den
ordnungsgemäßen Betrieb
des Prozessors. Während ältere Prozessoren
die Operationen für
einen Speicherzugriff in der Reihenfolge ausgeführt habe, in der die Befehle
von einem Programm ausgeführt
werden, können
moderne bzw. höher
entwickelte Prozessoren die Reihenfolge ändern, in der die Zugriffe
auf den Speicher erfolgen, vorausgesetzt, dass der Prozessor einen
Datensatz der ordnungsgemäßen Reihenfolge
der Speicherzugriffe speichert. Die Technik für die Neuordnung der Speicherzugriffe
(wie etwa der Lese- und Schreiboperationen aus einem bzw. in einen
Speicher) ist besonders wünschenswert,
da eine derartige Neuordnung bzw. Umordnung die Geschwindigkeit
der Datenverarbeitung erhöhen
kann. Wenn ein bestimmter Speicherzugriff zum Beispiel aus einem
einer Vielzahl von Gründen
ansteht, kann der Prozessor mit dem nächsten Zugriff fortfahren,
wenn die Umordnung zulässig
ist. Ansonsten muss der Prozessor warten, bis der aktuelle Zugriff
abgeschlossen ist, bevor er mit dem nächsten Zugriff fortfahren kann.
Somit ist ein signifikanter Leistungsvorteil gegeben, wenn Speicherzugriffe
in einer anderen Reihenfolge ausgeführt werden können als
der vom Programm vorausgesetzten Reihenfolge.
-
Somit
kann in moderneren Prozessoren die Reihenfolge von "Lesevorgängen" und/oder "Schreibvorgängen" (die auch als "Ladevorgänge" und "Speichervorgänge" bezeichnet werden)
aus/in einen Speicher in Bezug auf die tatsächliche Folge geändert werden,
die durch die Ausführung
von Programmanweisungen vorgesehen wird. Der Prozessor erhält wiederum
die erforderliche Kontrolle aufrecht, so dass eine finale Reihenfolge
bzw. Anordnung der verschiedenen Ergebnisse der Zugriffe mit den
Programmanweisungen übereinstimmt.
Dies gilt auch dann, wenn der Cache-Speicher oder die Cache-Speicher in Verbindung
mit einem Hauptspeicher verwendet werden. In diesem Fall wird die
Steuerung der Reihenfolge der Speicherzugriffe dadurch komplizierter
gestaltet, dass die Position der gültigen Daten aufrechterhalten
wird, wobei das Konzept insgesamt das gleiche ist.
-
Wenn
jedoch mehrere Prozessoren (oder Vorrichtungen, die auf einen Speicher
zugreifen können)
verwendet werden, wobei ein bestimmter Speicher oder ein bestimmter
Speicherabschnitt von mehr als einem Prozessor gemeinsam genutzt
wird, weist ein Computersystem mit mehreren Prozessoren die weitere
Einschränkung
auf, dass sichergestellt werden muss, dass die Reihenfolge der Speicherzugriffe
von einem Prozessor für
die anderen Prozessoren sichtbar gemacht wird, gemäß der Reihenfolge
bzw. der Anordnung der Programmanweisungen oder wenigstens gemäß dem gemeinsam
genutzten Speicherplatz. Das heißt, wenn jeder einzelne Prozessor
einen Datensatz der Umordnung der von ihm erzeugten Speicherzugriffe
speichern kann, weiß bzw.
wissen der bzw. die Prozessor(en) unter Umständen nicht, dass diese Umordnung
erfolgt ist. Demgemäß muss ein
Zugriff auf eine gemeinsam genutzte Speicherposition, die durch
einen Prozessor in dem System erzeugt worden ist, von den anderen Prozessor(en)
in der gleichen Reihenfolge verfolgt (sichtbar gemacht) werden,
wie dies in dem Programm ausgeführt
ist, sofern ein Mechanismus existiert, der eine Umordnung zulässt. Ansonsten
besteht die Möglichkeit,
dass es sich bei den von einem Prozessor erhaltenen Daten nicht
um die von dem Programm benötigten
gültigen
Daten handelt.
-
Ein
Mechanismus zur Steuerung der Zugriff auf einen Speicherbereich,
der von mehreren Prozessoren gemeinsam genutzt wird, ist der Einsatz
eines Semaphors (oder einer Flagge) als ein "Schlüssel" für den Zugang
auf den gemeinsam genutzten Bereich. Bei diesem System kann ein
Prozessor den Zugang in den gemeinsam genutzten Speicherbereich
nur dann erlangen, wenn er einen Zugriff auf die "Sperre" bzw. das Schloss
erhält,
die bzw. das den gemeinsam genutzten Bereich regelt. Zu einem gegebenen
Zeitpunkt wird nur einem Prozessor die Kontrolle über die
Sperre gewährt.
Wenn einem Prozessor durch Erfassen der Sperre der Zugang in den gemeinsam
genutzten Speicherbereich gewährt wird,
muss er den Semaphor so setzen, dass es verhindert wird, dass ein
anderer Prozessor Zugang in den gemeinsam genutzten Bereich erhält, bis
die Sperre freigegeben wird. Für
gewöhnlich
ist eine bestimmte Speicherposition als Sperre bezeichnet, und Werte,
die an diese Speicherposition geschrieben werden, bestimmen die
Zustände
des Semaphors.
-
Unter
Verwendung des vorstehend beschriebenen Sperrsystems ist die Neu-
bzw. Umordnung von Zugriffen ein Problem, wenn die Zugriffe erfolgen,
um die Sperre für
den gemeinsam genutzten Speicherbereich zu erfassen oder freizugeben.
Jeder Prozessor kann allgemein die Zugriffe auf den eigenen nicht
gemeinsam genutzten Speicherbereich frei umordnen, da auf diesen
Bereich durch keine anderen Prozessoren zugegriffen wird, und wobei
diese Zugriffe auf einen nicht gemeinsam genutzten Speicherbereich
nicht für
die anderen Prozessoren in der richtigen Reihenfolge sichtbar gemacht
werden müssen.
Hiermit wird festgestellt, dass andere Vorrichtungen wie etwa Ein-Ausgabevorrichtungen ebenfalls
die Kontrolle über
die Anordnung der Zugriffe erfordern können. Die Regelung der Zugriffsanordnung
ist von Bedeutung, wenn zwei Zugriffe in einer bestimmten Reihenfolge
ausgeführt
werden müssen.
Somit ist die Anordnung der Zugriffe nur auf Speicherzugriffe beschränkt.
-
Die
Visibilität
bzw. Sichtbarkeit ist für
einen Lesevorgang und einen Schreibvorgang wie folgt definiert.
Ein Lesevorgang aus einer Adresse A durch einen Prozessor P1 ist
dann für
einen zweiten Prozessor P2 sichtbar, wenn ein Schreibvorgang in
eine Adresse A durch P2 den von P1 gelesenen Wert nicht verändern kann.
In ähnlicher
Weise gilt ein Schreibvorgang in eine Adresse A durch den Prozessor
P1 für
einen zweiten Prozessor P2 sichtbar, wenn ein Lesevorgang aus der
Adresse A, erteilt durch das Programm, den Wert von A nicht vor
dem Schreibvorgang durch P1 zurückgeben
kann.
-
Der
Einsatz von Semaphoren zur Steuerung der Zugriffe auf den gemeinsam
genutzten Speicherplatz kann geeignete Steuerungen vorsehen, wenn einem
Prozessor der Zugang in den gemeinsam genutzten Bereich gelingt.
Es besteht jedoch weiterhin ein Problem in Bezug auf die ordnungsgemäße Anordnung
der Zugriff zum Erfassen und Freigeben der Sperre. Da zum Erfassen
und Freigeben der Sperre Speicherzugriffe erforderlich sind, ist
es für
einen Prozessor möglich,
die Zugriffe in Bezug auf dessen andere Speicherzugriffe umzuordnen,
einschließlich der Speicherzugriffe
auf den gemeinsam genutzten Speicherbereich. Da die Position der
Sperre von den anderen Prozessoren in dem System gemeinsam genutzt
wird, können
die Zugriffe zum Erfassen und Freigeben der Sperre für die anderen
Prozessoren nicht in der ordnungsgemäßen Folge im Verhältnis zu den
Zugriffen auf den gemeinsam genutzten Bereich des Speichers sichtbar
sein. Somit wird weiterhin ein gewisser Mechanismus benötigt, um
die Anordnung bzw. Reihenfolge von Speicherzugriffen zum Erfassen
und Freigeben der Sperre aufrechtzuerhalten, damit diese Zugriffe
sichtbar gemacht werden.
-
Vorgesehen
ist gemäß der vorliegenden
Erfindung somit eine Technik zur Regelung der Anordnung der Speicherzugriffe
in einem System mit mehreren auf einen Speicher zugreifenden Vorrichtungen,
und wobei mehr als eine Vorrichtung auf eine gemeinsam genutzte
Position in dem Speicher zugreifen können. Ferner sieht die erfindungsgemäße Technik
eine Anordnung der Speicherzugriffe über eine Anweisungsunterstützung vor,
ohne dass dafür Modifikationen
in Bezug auf die bestehenden Lade- und Speicheranweisungen erforderlich
sind, die für einen
Zugriff auf den Speicher verwendet werden.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Vorgesehen
ist gemäß einem
ersten Aspekt der vorliegenden Erfindung ein Computersystem gemäß dem gegenständlichen
Anspruch 1.
-
Vorgesehen
ist gemäß einem
zweiten Aspekt der vorliegenden Erfindung ein Verfahren gemäß dem gegenständlichen
Anspruch 7.
-
Die
vorliegende Erfindung beschreibt eine Technik zur Regelung der Anordnung
bzw. der Reihenfolge der Speicherzugriffe in einem Mehrprozessorsystem,
wobei eine Folge von Zugriffen zum Erfassen, Zugreifen auf und Freigeben
eines gemeinsam genutzten Speicherbereichs strikt befolgt wird, und
zwar unter Verwendung von zwei speziellen Anweisungen bzw. Befehlen
zur Regelung der Reihenfolge der Speicherzugriffe. In einem Computersystem mit
Mehrfachverarbeitung, in dem die Verarbeitungsvorrichtungen (wie
etwa Prozessoren) die Zugriffe auf den Speicher umordnen können, muss
die ordnungsgemäße Reihenfolge
der Erfassung, des Zugriffs auf und der Freigabe des gemeinsam genutzten Speicherbereichs
von jedem Prozessor beibehalten und für die anderen Prozessoren in
der Programmanordnung sichtbar gemacht werden.
-
Die
vorliegende Erfindung verwendet zwei Anweisungen, die als MFDA (Memory
Fence Directional – Acquire)
und MFDR (Memory Fence Directional – Release) bezeichnet sind,
für die
Regelung der Anordnung bzw. der Reihenfolge der Speicherzugriffe
auf den gemeinsam genutzten Bereich. Wenn die MFDA-Anweisung in
einem Programm auftritt, stellt sie sicher, dass alle vorherigen
Zugriffe auf die spezifizierte Adresse (für gewöhnlich die einer Sperre zugeordnete
Adresse, die einen Zugriff auf den bzw. die gemeinsam genutzte(n)
Speicherposition(en) ermöglicht)
für andere
Prozessoren sichtbar werden, bevor zukünftige Zugriffe zugelassen
werden. Wenn die MFDR-Anweisung in einem Programm auftritt, stellt sie
sicher, dass alle vorherigen Zugriffe für andere Prozessoren sichtbar
werden, bevor zukünftige
Zugriffe auf die spezifizierte Adresse erfolgen.
-
Unter
Verwendung der MFDA- und MFDR-Anweisungen als Synchronisierungspunkte
zur Erfassung und Freigabe der einem gemeinsam genutzten Bereich
zugeordneten Sperre sowie durch die Programmierung der Zugriffe
auf den gemeinsam genutzten Bereich zwischen zwei Anweisungen werden
die Reihenfolge des Erfassens, des Zugriffs und der Freigabe in
Bezug auf den gemeinsam genutzten Bereich aufrechterhalten. In Bezug
auf die anderen Bereiche, für
die eine derartige Anordnung nicht erforderlich ist, können die
Zugriffe einfach neu angeordnet werden, da die MFDA- und MFDR-Anweisungen
die Einschränkungen
in Bezug auf die Anordnung bzw. die Reihenfolge nur der spezifizierten Adresse
auferlegen.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
In
den Zeichnungen zeigen:
-
1 ein
schematisches Blockdiagramm eines dem Stand der Technik entsprechenden
Mehrprozessor-Computersystems mit mehreren Prozessoren, die mit
einem Speicher gekoppelt sind, und wobei auf einen Abschnitt des
Speichers durch mehr als einen Prozessor zugegriffen wird, wobei
jedoch eine Sperre verwendet wird, um nur einem Prozessor den Zugriff
auf den gemeinsam genutzten Speicherbereich zu gewähren;
-
2 ein
Blockdiagramm von Elementen eines der Prozessoren für das Computersystem
aus 1;
-
3 eine
Ablauffolge von Programmschritten für den Prozessor aus 2,
einschließlich
der Zugriffe zum Erfassen und Freigeben der Sperre mit einer Regelung
der Zugriffe auf den gemeinsamen genutzten Bereich des Speichers;
-
4 ein
Anordnungsschema für
die Programmierschritte aus 3 bei der
Verwendung eines Modells mit sequenzieller Konsistenz;
-
5 ein
Anordnungsschema für
die Programmierschritte aus 3 bei der
Verwendung eines Prozessorkonsistenzmodells;
-
6 ein
Anordnungsschema für
die Programmierschritte aus 3 bei der
Verwendung eines schwachen Konsistenzmodells;
-
7 ein
Anordnungsschema für
die Programmierschritte aus 3 bei der
Verwendung eines Freigabekonsistenzmodells;
-
8 eine
Implementierung der vorliegenden Erfindung in der Erfüllung des
Freigabekonsistenzmodells aus 7 unter
Verwendung von zwei direktionalen Anweisungen gemäß der vorliegenden Erfindung
zum Vorsehen von Erfassungs- und Freigabe-Synchronisierungspunkten
in Bezug auf die Zugriffe auf den gemeinsam genutzten Speicherbereich;
-
9 eine
Ablauffolge von Programmierschritten, wobei eine MFDA-Anweisung
des bevorzugten Ausführungsbeispiels
verwendet wird, um einen direktionalen Erfassungs-Synchronisierungspunkt
zu erzeugen;
-
10 eine
Ablauffolge von Programmierschritten, wobei eine MFDR-Anweisung
des bevorzugten Ausführungsbeispiels
verwendet wird, um einen direktionalen Freigabe-Synchronisierungspunkt zu
erzeugen; und
-
11 ein
Blockdiagramm eines Computersystems, wobei die MFDA- und MFDR-Anweisungen implementiert
werden.
-
GENAUE BESCHREIBUNG
DES BEVORZUGTEN AUSFÜHRUNGSBEISPIELS
-
Beschrieben
wird eine Technik zur Regelung der Anordnung bzw. der Reihenfolge
der Speicherzugriffe in einem Mehrfachverarbeitungssystem. In der folgenden
Beschreibung sind zahlreiche spezifische Einzelheiten ausgeführt, wie
etwa spezielle Anweisungen, Anweisungsformate, Bauteile wie etwa
eine bestimmte Speicherart, Prozessorelemente, etc., um ein umfassendes
Verständnis
der vorliegenden Erfindung zu vermitteln. Der Fachmann auf dem Gebiet wird
jedoch erkennen, dass die vorliegende Erfindung auch ohne die spezifischen
Einzelheiten ausgeführt
werden kann. In anderen Fällen
wurde auf die genaue Beschreibung allgemein bekannter Techniken
und Strukturen verzichtet, um die vorliegende Erfindung nicht unnötig zu verschleiern.
Hiermit wird festgestellt, dass die vorliegende Erfindung als spezielle
Anweisungen für
einen Prozessor implementiert ist, wobei die Erfindung jedoch auch
in anderen Anweisungsformaten ausgeführt werden kann.
-
Zum
Verständnis
des Anordnungssystems für
den Speicherzugriff und die durch die vorliegende Erfindung vorgesehene
Regelung müssen
zuerst ein Mehrprozessorsystem und ein Anordnungsschema für den Speicherzugriff
für den
Einsatz in einem derartigen Mehrprozessorsystem verstanden werden. Demgemäß veranschaulicht
die Abbildung aus 1 ein beispielhaftes Mehrprozessor-Computersystem 10,
wobei eine Mehrzahl von Prozessoren 11 in dem System arbeitet.
Die Veranschaulichung zeigt vier Prozessoren 11 (die mit
P1 bis P4 gekennzeichnet sind), wobei die tatsächliche Anzahl der Prozessoren 11 von
der jeweils gewählten
Konfiguration abhängig ist.
Alle Prozessoren 11 sind über einen Bus 13 mit einem
Speicher 12 gekoppelt und speziell mit einem gemeinsam
genutzten Speicherbereich 15 innerhalb des Speichers 12.
-
Hiermit
wird festgestellt, dass für
die Konfiguration des Speichers 12 eine Vielzahl von Möglichkeiten
bestehen. Der Speicher 12 wird zum Speichern von Informationen
(Daten und/oder Programmanweisungen) zur Verwendung durch die Prozessoren 11 verwendet.
Im Allgemeinen werden Informationen durch die Prozessoren 11 aus
dem Speicher 12"gelesen" ("geladen"), und Informationen
werden ferner durch die Prozessoren in den Speicher 12"geschrieben" ("gespeichert"). Der allgemeine
Zugriff auf den Speicher 12 durch jeden der Prozessoren 11 ist
im Fach allgemein bekannt. Bei dem Speicher 12 kann es
sich um eine Vielzahl von Speichern handeln, wie etwa RAM-Hauptspeicher
(Direktzugriffsspeicher) und/oder eine Massenspeichervorrichtung
wie etwa eine Festplatte. Es kann sich aber auch um einen Cache-Speicher
handeln. In dem speziellen Beispiel greifen alle vier Prozessoren 11 auf
den Speicher 12 zu, und wobei der Zugriff auf einen ausgewählten Bereich
des Speichers 12, der als gemeinsam genutzter Bereich 15 bezeichnet
wird, erfolgt durch alle vier Prozessoren. In dem Speicher 12 können sich
auch weitere gemeinsam genutzte Bereiche befinden, wobei zwei oder
mehr Prozessoren 11 auf diese gemeinsam genutzten Bereiche
zugreifen können.
Die nicht gemeinsam genutzten Bereiche des Speichers 12 sind
allgemein nur für
den Zugriff durch einen Prozessor 11 vorgesehen.
-
Wenn
demgemäß durch
nur einen Prozessor 11 auf Positionen in dem Speicher 12 zugegriffen wird,
ist ausschließlich
die Datenabhängigkeit
von Belang. Wenn jedoch mehrere Prozessoren auf Positionen in dem
Speicher zugreifen können,
die als gemeinsam genutzte Positionen vorgesehen sind, wie etwa
der gemeinsam genutzte Bereich 15, so muss eine zusätzliche
Steuerung bzw. Regelung verwendet werden, um die Zugriffe zu steuern
und zu begrenzen, so dass die von einem Prozessor verwendeten Daten
nicht durch einen zweiten Prozessor korrumpiert werden. Eine Technik
zur Implementierung einer derartigen Steuerung ist der Einsatz eines Semaphors
bzw. einer Flagge. Für
den Zugriff auf den gemeinsam genutzten Bereich wird der Semaphor
(auch als Flagge, Sperre oder gemeinsam genutzte Variable bezeichnet)
verwendet, so dass zu einem bestimmten Zeitpunkt nur ein Prozessor
auf den gemeinsam genutzten Bereich zugreifen kann (zumindest in
Bezug auf die Änderung
des Werts der darin gespeicherten Informationen).
-
In
der Abbildung aus 1 wird der Semaphor als Sperre
(oder Sperrvariable) 16 verwendet, die zur Steuerung der
Zugriff auf den gemeinsam genutzten Bereich 15 zugewiesen
ist (wie dies durch die gestrichelte Linie 17 dargestellt
ist). Die Sperre 16 ist eine bestimmte Speicherposition,
die so zugewiesen wird, dass sie einen Wert aufweist, der der Implementierung
von Zugriffen auf den gemeinsam genutzten Bereich 15 zugeordnet
ist. Damit einer der Prozessoren 11 auf den gemeinsam genutzten
Bereich 15 zugreifen kann, muss er somit zuerst auf die Sperre 16 zugreifen
und den Zustand bzw. Status (Wert) der an der Sperrposition 16 gespeicherten
Daten testen. In dem einfachsten Format können zwei Werte (zum Beispiel
die Bitzustände
1 und 0) zugewiesen werden, um die Sperrzustände anzuzeigen.
-
Hiermit
wird festgestellt, dass die tatsächlichen
Sperrwerte und Sperrzustände
für die
Sperre 16 gemäß dem jeweiligen
Design ausgewählt
werden können,
und wobei zahlreiche Variationen möglich sind, abweichend von
dem hierin beschriebenen Beispiel. Ferner muss sich die Position
der Sperre 16 nicht in dem Speicher 12 selbst
befinden. Es ist auch möglich,
dass andere Speicherzugriffsvorrichtungen (Vorrichtungen wie etwa
Steuereinheiten für
den direkten Speicherzugriff) den Zugriff auf den gemeinsam genutzten Speicherbereich 15 versuchen
können.
In diesen Fällen
würden
die Vorrichtungen eine ähnliche
Funktionsweise wie die hierin beschriebenen Prozessoren 11 für die Erlangung
eines Zugriffs auf den gemeinsam genutzten Bereich 15 aufweisen.
-
Der
Zugriff auf den Speicher 12 durch die Prozessoren 11 zur
Datenübertragung
umfasst für gewöhnlich den
Einsatz von Lade- und
Speicheroperationen. Der Einsatz von Lade- und Speicheranweisungen
für "Lese"- und "Schreib"-Operationen ist
allgemein bekannt. Da sich die Sperre 16 in dem Beispiel
an einem bestimmten Speicherplatz befindet, können ähnliche Lade-/Speichertyp-Operationen zum
Lesen aus und Schreiben in die Sperre 16 verwendet werden.
Eine Lese-Modifikations-Schreib-Operation
unter Verwendung von Lade-/Speicheranweisungen (oder sonstiger spezieller Anweisungen)
kann zum Erfassen der Sperre 16 verwendet werden. Eine
Lese-Modifikations-Schreib-Operation würde den Sperrwert lesen, und
falls der Wert einen Zustand mit einem verfügbaren Zugriff bezeichnet (kein
anderer Prozessor kann zugreifen), so wird der Wert modifiziert
und zurück
an die Sperrposition geschrieben. Der modifizierte Wert bezeichnet
einen gesperrten Zustand, so dass für den Fall, dass andere Prozessoren
den Wert an der Sperrposition 16 lesen, der Zugriff nicht
gewährt
wird. Wenn der ursprüngliche
Prozessor den gemeinsam genutzten Bereich 15 nicht mehr
nutzen muss, schreibt er den ursprünglichen Wert zurück an die Sperrposition,
wodurch der gemeinsam genutzte Bereich 15 freigegeben wird.
Ein Beispiel für
eine derartige Lese-Modifikations-Schreib-Anweisung
für den Zugriff
auf eine Sperre wird in dem U.S. Patent US-A-5.889.983.
-
In
Bezug auf die Abbildung aus 2 sind die
Grundelemente eines Prozessors dargestellt, die zur Ausführung der
vorliegenden Erfindung erforderlich sind. Im Allgemeinen weist jeder
Prozessor 11 eine Ausführungseinheit 18,
eine Registerdatei 19 und eine Prefetch-/Decodierer-Einheit 20 auf.
Die Ausführungseinheit 18 ist
der Verarbeitungskern des Prozessors 11 zur Ausführung verschiedener
Prozessoranweisungen. Die Registerdatei 19 ist eine Reihe
von Allzweckregistern zum Speichern verschiedener von der Ausführungseinheit 18 benötigter Informationen.
Modernere Systeme können
mehr als eine Registerdatei aufweisen. Die Prefetch-/Decodierer-Einheit 20 erfasst
Anweisungen von einer Speicherposition (bei der es sich um den Speicher 12 handeln
kann), welche die Anweisungen eines Programms speichert, das ausgeführt wird,
und sie decodiert diese Anweisungen zur Ausführung durch die Ausführungseinheit 18.
In höher
entwickelten Prozessoren, die eine Pipeline-Architektur verwenden, werden
zukünftige
Anweisungen vorab erfasst und decodiert, bevor die Anweisungen eigentlich
benötigt werden,
so dass der Prozessor nicht untätig
ist, während
er bei dem tatsächlichen
Bedarf darauf wartet, dass die Anweisungen erfasst werden. Ein Speicher-Pipelinepuffer
(Pufferspeicher) wird dazu verwendet die Speicherzugriffsoperationen
zu speichern, die in der Pipeline für einen Speicherzugriff anstehen.
Dieses allgemeine Konzept zum Speichern und Zurückziehen anstehender Zugriffe
ist im Fach allgemein bekannt. Ein Beispiel wird in einer Patentanmeldung
mit dem Titel "Apparatus
And Method Of Maintaining Processor Ordering In A Multiprocessor
System" von Nitin
V. Sarangdhar beschrieben, das unter dem Aktenzeichen 08/177.259
am 4. Januar 1994 eingereicht wurde.
-
Die
verschiedenen Einheiten des Prozessors 11 sind mit einer
internen Busstruktur 23 gekoppelt. Eine Busschnittstelleneinheit
(BIU) 22 sieht eine Schnittstelle zur Kopplung des internen
Busses 23 mit dem externen Bus 13 vor. Hiermit
wird festgestellt, dass die Struktur der Busse 13 und/oder 23 verschiedene
Formen annehmen kann. Ferner wird hiermit festgestellt, dass der
Prozessor 11 tatsächlich viel
mehr Komponenten aufweist als die in der Abbildung aus 2 dargestellten
Komponenten.
-
In
Bezug auf die Abbildung aus 3 umfasst
eine Programmablauffolge für
einen der Prozessoren 11 (in diesem Beispiel den Prozessor
P1) eine Folge von Speicherzugriffen, die mit A–K bezeichnet sind. Die Anordnung
der Zugriffe A–K
entsprechend der durch die Programmanweisungen vorausgesetzten Anordnung.
Die Zugriffe E–H
sind als Zugriffe auf den gemeinsam genutzten Bereich 15 aus
den Abbildungen der 1 und 2 dargestellt.
Das Erfassen der Sperre 16 muss somit erreicht werden,
bevor der Zugriff E ausgeführt
wird. In dem Beispiel wird der Zugriff D für die Erfassung der Sperre 16 verwendet.
Nachdem die Zugriffe E–H
auf den gemeinsam genutzten Bereich 15 abgeschlossen sind,
wird der Zugriff I verwendet, um die Sperre 16 freizugeben.
Danach werden die Zugriffe J–K
ausgeführt.
-
Hiermit
wird festgestellt, dass der Zugriff D zur Erfassung der Sperre 16 und
der Zugriff I zum Freigeben der Sperre 16 jeweils durch
eine Anweisung oder durch mehrere Anweisungen ausgeführt werden
können.
Es ist jedoch wichtig, dass die Ausführung als geordnete Operationen
vorgenommen wird, so dass nach Beginn der Ausführung zur Erfassung oder zur
Freigabe der Sperre 16 der jeweilige Betrieb nicht durch
eine andere Anweisung unterbrochen wird. Allgemein wird der Einsatz
einer Anweisung wie etwa einer Lese-Modifikations-Schreib-Anweisung
für den
Zugriff D und einer Anweisung für den
Zugriff I bevorzugt.
-
Es
ist zwingend erforderlich, dass die Programmieranordnung zur Erfassung
der Sperre 16 unter Verwendung des gemeinsam genutzten
Bereichs 15 und zur Freigabe der Sperre 16 für die anderen Prozessoren
in der ordnungsgemäßen Reihenfolge wie
für die
Programmanordnung sichtbar gemacht wird. Sobald der gemeinsam genutzte
Bereich 15 jedoch erfasst wird, kann der Prozessor die
Zugriffe auf den gemeinsam genutzten Bereich 15 frei neu
anordnen. Anders ausgedrückt
müssen
die Zugriffe E–H erfolgen,
nachdem die Sperre 16 erfasst worden ist, und sie müssen vor
der Freigabe der Sperre 16 abgeschlossen sein, um die Integrität des gemeinsam genutzten
Bereichs 15 sicherzustellen.
-
Da
eine Mehrzahl von Schemen für
die Speicherzugriffsanordnung oder die Umordnung zur Verfügung stehen,
ist es nützlich,
relevante Zugriffsanordnungsschemen zu identifizieren, um zu bestimmen,
ob etwaige dieser derart angepasst werden können, dass die gewünschten
vorstehend genannten Eigenschaften erreicht werden. Somit werden nachstehend
vier Modelle (mit der Bezeichnung "Konsistenzen") in Bezug auf die Abbildungen der 4–7 beschrieben.
Die vier Modelle sind die Konsistenzen "sequentiell", "Prozessor", "schwach" und "Freigabe".
-
In
Bezug auf die Abbildung aus 4 ist das Anordnungsmodell
der sequentiellen Konsistenz gemäß der Anwendung
auf eine Sequenz von Programmschritten aus 3 dargestellt.
Das sequentielle Konsistenzmodell ist ein Modell für die Speicherzugriffsanordnung,
das die Ausführung
von Programmen auf verschiedenen Prozessoren erfordert, wenn eine
gewisse Verschachtelung der Ausführung
der Programme in einem Prozessor auftritt. Das Zugriffsmodell mit
sequentieller Konsistenz ist erfüllt,
wenn für
jeden Prozessor keine Lese- oder
Schreiboperationen im Verhältnis
zu vorherigen Lese- oder Schreiboperationen neu angeordnet worden
sind. Das heißt,
eine Neuordnung der Speicherzugriffe ist gar nicht zulässig, und
die Zugriffe A–K
werden in der sequentiellen Programmanordnung ausgeführt. Die Neuordnung
der Zugriffe ist beidem Modell der sequentiellen Konsistenz ohne
Relevanz.
-
Die
Abbildung aus 5 veranschaulicht das Anordnungsmodell
der Prozessorkonsistenz. Das Prozessorkonsistenzmodell ist ein Modell
zur Anordnung des Speicherzugriffs, das es voraussetzt, dass alle
Zugriffe in Bezug auf einen Schreibvorgang in ein erstes Programm
für ein
zweites Programm in der gleichen Anordnung sichtbar werden, und
zwar gemäß der Spezifikation
in dem ersten Programm (was auch impliziert, dass Lesevorgänge aus
dem zweiten Programm für
das erste Programm in der gleichen Anordnung sichtbar werden, wie
dies in dem zweiten Programm spezifiziert ist). Das Zugriffsmodell
der Prozessorkonsistenz kann einfach dadurch implementiert werden,
dass sich nur zukünftige
Leseoperationen in Bezug auf Schreiboperationen außerhalb
der Anordnung befinden dürfen.
-
Die
Abbildung aus 5 zeigt das Anordnungsmodell
der Prozessorkonsistenz ferner für
die Zugriffe A–K.
Da der Zugriff D für
gewöhnlich
mindestens eine Leseoperation voraussetzt, dürfen zukünftige Lese- und Schreiboperationen
diese Grenze nicht überschreiten.
Da der Zugriff I ferner für
gewöhnlich
eine Schreiboperation darstellt, müssen zuerst alle vorherigen
Zugriffe sichtbar gemacht werden. Ein Lesezugriff (der hier als
der Zugriff J dargestellt ist), kann jedoch neu angeordnet werden,
um den Zugriff I zu transzendieren. Diese zukünftige Lese-Neuordnung ist
zulässig,
da sie die Voraussetzung der Beschränkung gemeinsam genutzter Zugriffe
(E–H)
innerhalb der Grenzen für
die Sperrerfassung und die Sperrfreigabe nicht überschreiten, die durch die
Zugriffe D und I erzeugt werden.
-
Hiermit
wird festgestellt, dass jedes der beiden vorstehenden Konsistenzmodelle
die Regelung über
die Erfassungs- und Freigabeanordnung vorsehen kann, wobei die erforderlichen
Restriktionen der Modelle jedoch für eine weniger dynamische Systemleistung
sorgen. Obwohl jedes der beiden vorstehenden Modelle verwendet werden
kann, um die Zugriffe für
den gemeinsam genutzten Bereich anzuordnen, wird die Suche nach
einem flexibleren Modell bevorzugt.
-
Eine
schwache Konsistenz ist ein Modell zur Anordnung von Speicherzugriffen,
das alle implizierten Anordnungsvoraussetzungen zwischen Lese- und
Schreiboperationen beseitigt. Das Modell der schwachen Konsistenz
setzt nur voraus, dass die Anordnung der Sichtbarkeit von Lese-
und Schreiboperationen für
ein Programm explizit durch das Programm an entsprechenden Synchronisierungspunkten
durchgesetzt wird. Das schwache Konsistenzmodell ist in der Abbildung
aus 6 dargestellt. Das Modell der schwachen Konsistenz
erfordert es nicht, dass das Programm zwischen dem Erfassen und
der Freigabe einer Sperre unterscheidet. Obwohl somit eine Sperre
erforderlich ist, basiert das schwache Konsistenzmodell darauf,
dass das Programm den Synchronisierungspunkt festlegt, wenn die
Anordnung synchronisiert werden soll.
-
Die
Abbildung aus 6 zeigt das Anordnungsmodell
der schwachen Konsistenz mit Synchronisierungspunkten, die an den
Zugriffspunkten der des Erfassens und der Freigabe der Sperre auftreten.
Der erste Synchronisierungspunkt D' wird unmittelbar nach dem Zugriff D
zur Erfassung der Sperre festgelegt. Der zweite Synchronisierungspunkt
I' wird unmittelbar
vor dem Zugriff I gesetzt, um die Sperr 16 freizugeben.
Die Zugriffe A–D
können
auf jede Art und Weise neu angeordnet werden (wie dies durch die
Pfeile 26 dargestellt ist), wobei sie den Synchronisierungspunkt
D' jedoch nicht
transzendieren können.
Die Neuordnung des Zugriffs D mit vorherigen Zugriffen A–C ist zulässig, da
die Zugriffe A–C nicht
auf den gemeinsam genutzten Bereich 15 erfolgen. Der Synchronisierungspunkt
D' gewährleistet, dass
die Zugriffe E–H
auftreten, nachdem die Sperre 16 erfasst worden ist. Die
Neuordnung bzw. Umordnung zwischen den Zugriffen E–H ist zulässig (wie dies
durch die Pfeile 27 dargestellt ist). Der zweite Synchronisierungspunkt
I' gewährleistet,
dass alle Zugriffe E–H
auf den gemeinsam genutzten Bereich 15 abgeschlossen sind,
bevor die Sperre 16 freigegeben wird. Demgemäß ist die
Neuordnung der Zugriffe I–K
(wie dies durch die Pfeile 28 dargestellt ist) zulässig, da
die Zugriffe auf den gemeinsam genutzten Bereich 15 abgeschlossen
worden sind.
-
Die
Synchronisierungspunkte D' und
I' dienen als eine
Grenze bzw. Barriere, die jeden Zugriff über die Synchronisierungspunkte
hinaus verhindert. Eine Möglichkeit,
die Synchronisierung an den Punkten D' und I' zu erreichen, ist die Verwendung einer
im Fach bekannten MF-Anweisung (MF als englische Abkürzung von
Memory Fence). Die MF-Anweisung stellt sicher, dass eine harte und
schnelle Trennung an den Synchronisierungspunkten erfolgt, so dass die
ordnungsgemäße Anordnung
in Bezug auf die Erfassung und Freigabe des gemeinsam genutzten
Bereichs 15 aufrechterhalten wird. Ein Nachteil bei diesem
Modell ist es jedoch, dass kein Zugriff die Synchronisierungsgrenze
transzendiert.
-
Die
Freigabekonsistenz ist eine bestimmte Implementierung des schwachen
Speicheranordnungsmodells, wobei zwischen einer Erfassung und einer
Freigabe der Sperre unterschieden wird. Das Freigabekonsistenzmodell
ist erfüllt,
wenn alle Zugriffe eines Prozessors nach dem Zugriff auf die Sperre zur
Erfassung der gemeinsam genutzten Daten für andere Prozessoren nach dem
Zugriff auf die Sperre sichtbar gemacht werden; und alle Zugriff
eines Prozessors vor dem Zugriff auf die Sperre zur Freigabe der
gemeinsam genutzten Daten werden für alle anderen Prozessoren
vor dem Zugriff zur Freigabe der Sperre sichtbar gemacht.
-
Die
Abbildung aus 7 veranschaulicht das Anordnungsmodell
der Freigabekonsistenz mit einem Erfassungs-Synchronisierungspunkt und einem Freigabe-Synchronisierungspunkt.
Während
die Synchronisierungspunkte in dem schwachen Konsistenzmodell nicht
zwischen verschiedenen Zugriffen unterscheiden, werden die Erfassungs-
und Freigabe-Synchronisierungspunkte
in dem Freigabe-Konsistenzmodell unterschieden. Unter Verwendung
dieses Modells können
die Zugriffe E–H
auf den gemeinsam genutzten Bereich 15 somit innerhalb
der Grenzen der Erfassungs- und Freigabe-Synchronisierungspunkte neu angeordnet
werden (wie dies durch die Pfeile 29 dargestellt ist),
wobei sie außerhalb
dieser Grenzen jedoch nicht neu angeordnet werden können. Indem
gewährleistet
wird, dass sich die Zugriffe zum Erfassen und Freigeben der Sperre
hinter den beiden Synchronisierungspunkten befinden, können die
Zugriffe auf den gemeinsam genutzten Bereich 15 somit in
Bezug auf die Zugriffe zum Erfassen und Freigeben der Sperre 16 nicht
neu angeordnet werden.
-
Hiermit
wird jedoch festgestellt, dass die Zugriffe außerhalb der Begrenzung (in
dem Beispiel die Zugriffe A–C
und J–K)
in Bezug auf die Zugriffe zum Erfassen und Freigeben der Sperre
nicht neu angeordnet werden können.
Da diese Zugriffe nicht auf den gemeinsam genutzten Bereich 15 gerichtet
sind, können
sie in Bezug auf die Zugriffe auf den gemeinsam genutzten Bereich 15 neu
angeordnet werden (wie dies durch die Pfeile 30 und 31 dargestellt
ist). Da bestimmte Zugriffe die Synchronisierungsgrenzen transzendieren
können,
bietet das Freigabekonsistenzmodell die größte Flexibilität und den
Vorteil einer besseren Leistung im Vergleich zu den anderen drei
Konsistenzmodellen. Demgemäß betrifft
das nachstehend beschriebene Ausführungsbeispiel eine Technik
zum Vorsehen des Modells der Freigabekonsistenz zur Umordnung bzw.
Neuordnung von Zugriffen.
-
Das
bevorzugte Ausführungsbeispiel
definiert zwei neue Anweisungen zur Verwendung in einer Anweisungsgruppenarchitektur
für einen
Prozessor. Die Anweisungen dienen dem primären Zweck des Vorstehens einer
Kontrolle über
die Anordnung in Bezug auf einen bzw. mehrere gemeinsam genutzten Bereich
bzw. Bereiche eines Speichers, so dass Informationen in einem Mehrprozessorsystem
nicht korrumpiert werden, ohne dabei jedoch die Umordnung der Zugriffe
zu stark einzuschränken,
so dass in dem System weiterhin eine signifikante Flexibilität verbleibt,
um eine Neuordnung der Speicherzugriffe zu ermöglichen.
-
Die
beiden neuen Anweisungen sind als eine Anweisung Memory Fence Directional – Acquire
(MFDA) und eine Anweisung Memory Fence Directional – Release
(MFDA) definiert. Hiermit wird festgestellt, dass es wichtig ist,
welche Funktion jede Anweisung erfüllt und nicht der den Anweisungen
verliehene Name. Die Namen der Anweisungen beschreiben jedoch die
durch die MFDA- und MFDR-Anweisungen ausgeführten Funktionen. Jede der
beiden Anweisungen (dargestellt in den Abbildungen der 8–11)
ist durch einen Operationscode gefolgt von einer Adresse (ADDR)
identifiziert. Die Adresse ADDR ist dem Adresspositionsbezeichner zur
Identifikation des gemeinsam genutzten Bereichs 15 zugeordnet,
und für
gewöhnlich
handelt es sich bei ADDR um die Adressposition (entweder vollständig oder
Bytes) einer Adresse) der Sperre 16, wenn die vorstehend
bereits beschriebene Semaphortechnik zur Steuerung der Zugriffe
auf den gemeinsam genutzten Raum 15 verwendet wird.
-
Beispiele
für das
Anweisungsformat für
die beiden Anweisungen sind:
MFDA (ADDR) und MFDR (ADDR)
-
Hiermit
wird ferner festgestellt, dass der ADDR-Wert auch indirekt gewonnen
werden kann. Die MFDA- oder MFDR-Anweisung spezifiziert zum Beispiel
ein Register (zum Beispiel ein Register in der Registerdatei 19),
das den tatsächlichen
ADDR-Wert aufweist.
-
Die
beiden Anweisungen werden im Zusammenhang mit dem Vorsehen der Anforderungen
des Modells der Freigabekonsistenz verwendet, wobei die vorliegende
Erfindung einfach auch so konfiguriert werden kann, dass sie Vorkehrungen
für die
anderen Konsistenzmodelle trifft. Wie dies in der Abbildung aus 8 dargestellt
ist, ist die MFDA-Anweisung nach der Anweisung zur Erfassung der
Sperre 16 in dem Programm positioniert und in dem Schritt D'' (nach dem Zugriff D) dargestellt. Die
MFDR-Anweisung ist vor der Anweisung zur Freigabe der Sperre 16 in
dem Programm (in Schritt I) positioniert und in dem Schritt I'' dargestellt. Die Adresse ADDR ist der
Adresse der Sperre 16 zugeordnet und in den Zugriffen zum
Erfassen und Freigeben der Sperre 16 vorhanden.
-
Die
MFDA-Anweisung, deren Operation in der Abbildung aus 9 näher dargestellt
ist, bewirkt, dass alle vorherigen Zugriffe auf die spezifizierte
Adresse ADDR für
die anderen Prozessoren vor zukünftigen
Zugriffen sichtbar werden. Indem ADDR der Adresse der Sperre 16 entspricht,
gewährleistet die
Anweisung MFDA, dass der Zugriff zum Erfassen der Sperre sichtbar
gemacht wird, bevor mit den Zugriffen E–H in den gemeinsam genutzten
Bereich 15 fortgefahren wird. Die MFDA-Anweisung fungiert nur als Synchronisierungsgrenze
für Zugriffe
mit der spezifizierten ADDR-Adresse. In dem Beispiel aus der Abbildung
aus 8 wird er Zugriff D sichtbar gemacht, bevor mit
den Zugriffen nach dem Zugriff D'' fortgefahren wird.
Hiermit wird festgestellt, dass die vor der MFDA-Anweisung angeordneten
Zugriffe (das heißt
die Zugriffe A–C)
die Reihenfolge in Bezug auf die MFDA-Anweisung nicht aufrechterhalten müssen, sofern
die Zugriffe nicht auf die Adresse ADDR verweisen. Die Zugriffe
A–C können somit
neu angeordnet werden (auch in Bezug auf den Zugriff D) und die
D'' MFDA-Grenze überschreiten.
Der Zugriff D kann die D'' MFDA-Grenze jedoch
nicht überschreiten.
Somit wird nicht gegen die Anordnung zwischen dem Zugriff auf die
Sperre 16 und Zugriffe auf den gemeinsam genutzten Bereich 15 verstoßen.
-
Die
MFDR-Anweisung, deren Funktionsweise in der Abbildung aus 10 näher dargestellt
ist, bewirkt, dass alle vorherigen Zugriffe für die anderen Prozessoren sichtbar
werden, bevor zukünftige
Zugriffe auf die spezifizierte Adresse ADDR erfolgen. Die MFDR-Anweisung
gewährleistet
somit, dass alle vor der MFDR-Anweisung angeordneten Zugriffe vor dem
Zugriff zur Freigabe der Sperre sichtbar werden. Die MFDR-Anweisung
fungiert als Synchronisierungsgrenze für nur die Zugriffe mit der
spezifizierten Adresse ADDR. In dem Beispiel aus 8 werden somit
alle Zugriffe vor dem Zugriff I sichtbar gemacht, bevor mit dem
Zugriff I vor der Freigabe der Sperre fortgefahren wird. Hiermit
wird jedoch festgestellt, dass nach der MFDR-Anweisung angeordnete
Zugriffe, welche keinen Zugriff auf die ADDR (das heißt die Zugriffe
J und K) spezifizieren, die Reihenfolge in Bezug auf die MFDR-Anweisung
nicht aufrechterhalten müssen.
Die Zugriffe J und K können
somit neu angeordnet werden (auch in Bezug auf den Zugriff I) und
die Grenze I'' überschreiten. Der Zugriff I
kann die I'' MFDR-Grenze nicht überschreiten.
-
Gemäß der Implementierung
in dem bevorzugten Ausführungsbeispiel
sehen die MFDA- und MFDR-Anweisungen zwei direktionale Synchronisierungspunkte
vor, um die Zugriffe auf den gemeinsam genutzten Bereich 16 zu
begrenzen, der in Bezug auf die Zugriffe zum Erfassen und Freigeben
der Sperre 16 nicht neu geordnet wird. Die Zugriffe auf
den gemeinsam genutzten Bereich 15 können jedoch untereinander leicht
neu angeordnet werden (Pfeile 29), und nicht dem gemeinsam
genutzten Bereich 15 zugeordnete Zugriffe können die
MFDA- und MFDR-Grenze leicht überschreiten
(Pfeile 30 und 31).
-
Hiermit
wird somit festgestellt, dass die MFDA- und MFDR-Anweisungen derart fungieren, dass sie
die Anforderungen für
das Freigabekonsistenzmodell vorsehen, welches die größte Flexibilität für die Anordnung
der vier beschriebenen Konsistenzmodelle aufweist. Gemäß der Ausführung der
vorliegenden Erfindung ist für
die Speicherzugriffe (sowohl Lese- als auch Schreiboperationen)
eine neue Anordnung des Speicherzugriffs zulässig, wobei eine direktionale
Synchronisierung der Neuordnung beim Auftreten der MFDA- und MFDR-Anweisungen
auferlegt wird, wobei die Neuordnungssynchronisierung jedoch auf
eine bestimmte spezifizierte Adresse beschränkt ist.
-
In
Bezug auf die Abbildung aus 11 ist
ein Computersystem 40 dargestellt, das die vorliegende Erfindung
implementiert. Das Computersystem entspricht im Wesentlichen dem
in den Abbildungen der 1 und 2 dargestellten
Computersystem 10, wobei es jedoch dabei die MFDA- und
MFDR-Anweisungen des bevorzugten Ausführungsbeispiels implementiert.
Demgemäß wird das
Computersystem allgemein in einer Verarbeitungsumgebung implementiert,
in der mehrere Prozessoren (oder andere Verarbeitungsvorrichtungen)
verwendet werden, und wobei der Speicher 12 einen gemeinsam
genutzten Speicherbereich oder eine entsprechende Position 15 aufweist.
Die MFDA- und MFDR-Anweisungen sind
in der Ausführungseinheit 18 des
Prozessors 11 dargestellt, in der die Anweisungen ausgeführt werden.
-
In
dem besonderen Beispiel wird der Pipeline-Speicherpuffer 21 verwendet,
um anstehende Speicherzugriffe in der Pipeline zu speichern. Die MFDA-Anweisung
kann bei der Ausführung
alle anstehenden Zugriffe mit übereinstimmenden
Adressen wie die spezifizierte Adresse ADDR identifizieren. Somit
würde jeder
anstehende Zugriff für
ein Erfassen der Sperre in dem Puffer 21 identifiziert.
Die vorstehend beschriebenen Einschränkungen setzen es ebenfalls
voraus, dass der Zugriff für
die Erfassung der Sperre aus dem Puffer 21 zurückgezogen
wird (und sichtbar gemacht wird), bevor etwaige zukünftige Zugriffe
ausgeführt
werden.
-
Das
gleiche gilt für
die MFDR-Anweisung. Wenn diese Anweisung auftritt, können zukünftige Zugriffe
fortfahren, bis ein Zugriff auftritt, der mit der spezifizierten
Adresse übereinstimmt.
An dieser Stelle werden alle anstehenden Zugriffe in dem Puffer 21 zurückgezogen,
bevor zukünftige
Zugriffe erfolgen können.
Somit werden alle anstehenden Zugriffe auf den gemeinsam genutzten
Bereich 15 sichtbar gemacht, bevor ein Zugriff zur Freigabe
der Sperre erfolgt. Hiermit wird erneut deutlich betont, dass es
sich bei der vorstehenden Beschreibung lediglich um ein Beispiel
für die
Implementierung der vorliegenden Erfindung handelt.
-
Das
Format der MFDA- und MFDR-Anweisungen gemäß der Implementierung in dem
bevorzugten Ausführungsbeispiel
ermöglicht
es, das diese Anweisungen ein ähnliches
Format aufweisen wie Lade-/Speicher-Anweisungen (Lesen/Schreiben),
so dass die MFDA- und MFDR-Anweisungen den gleichen Adresspfad und
die gleiche Abhängigkeitslogik verwenden
können
wie die Lade- und/oder Speicheranweisungen für den Speicher. Die vorliegende
Erfindung kann somit bei Bedarf leicht in modifizierte Lade- (für einen
Zugriff), Speicher- (für
eine Freigabe) und/oder andere Anweisungen integriert werden, an Stelle
der Verwendung separater MFDA- und MFDR-Anweisungen. Das heißt, eine
modifizierte Lade- und/oder Speicheranweisung kann die Funktionalität der MFDA-
und MFDR-Anweisung aufweisen. Bei einer hybriden Anweisung kann
die MFDA-Anweisung zum
Beispiel mit der Zugriffsanweisung zur Erfassung der Sperre 16 kombiniert
werden, und die MFDR-Anweisung kann mit der Zugriffsanweisung für die Freigabe
der Sperre 16 kombiniert werden. Wenn hingegen separate
MFDA- und MFDR- Anweisungen verwendet
werden, so sind keine Änderungen
in Bezug auf die bestehenden Lade-/Speicheranweisungen einer Anweisungsgruppenarchitektur
erforderlich. Da die Anordnungssteuerung in Bezug auf den gemeinsam
genutzten Bereich 15 durch die MFDA- und MFDR-Anweisungen
(in Software) auferlegt wird, können
zusätzlich
sowohl die Anwendungs- als auch die Betriebssystemsoftware diese
Steuerungen verwenden.
-
Hiermit
wird somit festgestellt, dass es eine Vielzahl von Möglichkeiten
gibt, um die Funktionsweise der beiden Anweisungen zu implementieren.
Ferner kann das Anordnungsschema gemäß der vorliegenden Erfindung
in einer Vielzahl von Speicherzugriffsschemen implementiert werden
und ist nicht unbedingt nur auf die Prozessoren oder auf das Semaphorbeispiel
hierin beschränkt.
Es kann auch in einer Einprozessorumgebung implementiert werden.
Beschrieben wird somit ein Schema zur Steuerung der Speicherzugriffsanordnung
in einem System mit mehreren Speicherzugriffen und Mehrfachverarbeitung.