-
Die vorliegende Erfindung bezieht
sich auf ein Verfahren und eine Vorrichtung zur gemeinsamen Verwendung
von Speicher zwischen Kohärenzdomänen von
Computersystemen.
-
Das gemeinsame Verwenden von Speicher
zwischen mehreren Kohärenzdomänen zeigt
einzigartige Kohärenzprobleme
auf. Um eine Diskussion dieser Kohärenzprobleme zu erleichtern,
zeigt 1 einen Computerknoten 100,
der z. B. einen Computerknoten in einem komplexeren Computersystem
repräsentiert.
Innerhalb des Computerknotens 100 ist eine Mehrzahl von
Verarbeitungsknoten 102, 104 und 106 abgebildet,
die an einen gemeinsamen Bus 108 angeschlossen sind. Jeder
der Verarbeitungsknoten 102, 104 und 106 stellt zum
Beispiel eine diskrete Verarbeitungseinheit dar, die z. B. einen
Prozessor und dessen eigenen Speichercache umfassen kann. Die Anzahl
von Verarbeitungsknoten, die pro Computerknoten 100 zur
Verfügung
steht, kann abhängig
vom Bedarf variieren und kann jede beliebige Anzahl umfassen, wenn
auch hier der Einfachheit der Darstellung halber nur drei abgebildet
sind.
-
Innerhalb des Computerknotens 100 ist
ein gemeinsamer Bus 108 abgebildet, der mit einem Speichermodul 110 verbunden
ist, das den Speicherplatz des Computerknotens 100 darstellt
und unter Verwendung einer herkömmlichen
Art von Speicher wie dynamischem, wahlfrei zugreifbarem Speicher
(Dynamic Random Access Memory, DRAM) implementiert sein kann. Das
Speichermodul 110 ist typischerweise in Form einer Mehrzahl
von eindeutig adressierbaren Speicherblöcken 112 organisiert.
Jeder Speicherblock des Speichermoduls 110, z. B. der Speicherblock 112(a) oder
der Speicherblock 112(b), hat eine lokale physikalische
Adresse (LPA) innerhalb des Computerknotens 100, d. h.
seine eindeutige Adresse wird in den Speicherplatz des Computers 100 abgebildet.
Jeder Speicherblock 112 stellt eine Speichereinheit zum
Speichern von Daten dar, und jeder kann zwischen den Verarbeitungsknoten 102, 104 und 106 über den
gemeinsamen Bus 108 gemeinsam verwendet werden. Natürlich können so
viele Speicherblöcke
wie gewünscht
zur Verfügung
gestellt werden, um den Speicherbedarf des Computerknotens 100 zu
erfüllen.
In einigen Fällen
können
viele Speichermodule 110 von dem Computerknoten 100 zur
Verfügung
gestellt werden.
-
Wie den Fachleuten auf diesem Gebiet
bekannt ist, arbeiten Computerprozessoren, z. B. der Prozessor 116 innerhalb
des Verarbeitungsknotens 102 typischennreise mit einer
höheren
Geschwindigkeit als der Geschwindigkeit der Speichermodule 110.
Um den Zugriff auf die Speicherblöcke 112 des Speichermoduls 110 zu
beschleunigen, steht üblicherweise
bei jedem Verarbeitungsknoten, z. B. Verarbeitungsknoten 102,
ein Speichercache 114 zur Verfügung. Ein Speichercache, z.
B. Speichercache 114, zieht Vorteil aus der Tatsache, daß ein Prozessor,
z. B. Prozessor 116, mit höherer Wahrscheinlichkeit Speicheradressen
aufruft, die er jüngst aufgerufen
hat, als andere wahlfreie bzw. zufällige Speicherstellen. Ferner
verwendet der Speichercache 114 typischerweise einen schnelleren
Speicher und ist tendenziell klein, was weiter zu einem schnellen
Betrieb beiträgt.
-
Innerhalb des Speichercache 114 gibt
es eine Mehrzahl von Blockrahmen bzw. -frames 118 zum Speichern
von Kopien von Speicherblöcken,
z. B. der Speicherblöcke 112.
Jeder Blockframe 118 hat einen Adreßanteil 120 zum Speichern
der Adresse des Speicherblocks, den er im Cache hält. Wenn
die eindeutige Adresse des Speicherblocks 112(a) z. B.
FF5h ist, würde
diese Adresse in dem Adreßanteil 120 des
Blockframe 118 gespeichert, wenn der Speicherblock 112(a) des
Speichermoduls 110 in den Speichercache 114 aufgenommen
wird. In dem Blockframe 118 ist auch ein Datenanteil 122 zum
Speichern des Datenwertes des im Cache gehaltenen Speicherblocks
vorgesehen. Wenn zum Beispiel der im Speicherblock 112(a) gespeicherte
Wert gleich 12 war, als der Speicherblock 112(a) in den
Blockframe 118 als Cache gespeichert wurde, würde dieser Wert
12 in dem Datenanteil 122 des Blockframe 118 gespeichert.
-
In dem Blockframe 118 ist
auch ein Status-Tag 124 zum Speichern des Zustands des
Speicherblocks vorgesehen, den er im Cache hält. Beispiele solcher Zustände sind
z. B. E, S und I, die ausschließlich
bzw. exklusiv, gemeinsam genutzt bzw. shared und ungültig bzw.
invalid repräsentieren.
Die Bedeutung dieser Zustände
wird noch genauer diskutiert.
-
Ein Verarbeitungsknoten kann eine
exklusive Kopie eines Speicherblocks in seinem Cache halten, wenn
er die einzige Einheit mit einer gültigen Kopie ist. Eine solche
exklusive Kopie kann sich möglicherweise von
ihrem Gegenstück
in dem Speichermodul 110 unterscheiden, z. B. kann sie
von dem Verarbeitungsknoten, der sie im Cache hält, geändert worden sein. Alternativ
kann ein Verarbeitungsknoten eine gemeinsam genutzte, nur zum Lesen
gedachte Kopie eines Speicherblocks besitzen. Wenn ein Verarbeitungsknoten,
z. B. Verarbeitungsknoten 102, eine gemeinsam genutzte
Kopie eines Speicherblocks, z. B. des Speicherblocks 112(a),
im Cache hält,
können
andere Verarbeitungsknoten, z. B. die Verarbeitungsknoten 104 und 106,
auch gemeinsam genutzte Kopien desselben Speicherblocks besitzen.
-
Wenn ein Speicherblock niemals in
einem Verarbeitungsknoten im Cache gespeichert wurde oder er einmal
im Cache gespeichert wurde, aber nicht mehr darin im Cache gespeichert
ist, wird von diesem Verarbeitungsknoten gesagt, daß er eine
ungültige
Kopie des Speicherblocks hält.
Keine gültigen
Daten sind in dem Blockframe enthalten, wenn der diesem Blockframe
zugeordnete Zustand ungültig
ist.
-
Das Kohärenzproblem, das entstehen
kann, wenn der Speicherblock 112 zwischen den Verarbeitungsknoten
von 1 gemeinsam genutzt
wird, wird nun im Detail diskutiert. Angenommen, der Verarbeitungsknoten 102 nimmt
eine Kopie von Speicherblock 112(a) in seinen Speichercache 114 auf,
um den in dem Speicherblock 112 gespeicherten Wert von
12 auf 13 zu ändern.
Typischerweise wird der Wert nicht sofort in das Speichermodul 110 zurück aktualisiert,
wenn der Wert von einem Verarbeitungsknoten wie Verarbeitungsknoten 102 geändert wird.
Das Aktualisieren wird vielmehr typischerweise durchgeführt, wenn
der Speichercache 114 des Verarbeitungsknotens 102 die
Kopie des Speicherblocks 112(a), die er früher in den
Cache gespeichert hat, zurückschreibt.
-
Nehmen wir nun an, daß der Verarbeitungsknoten 104 den
Speicherblock 112(a) aufrufen möchte, bevor der Speichercache 114 eine
Gelegenheit hat, den geänderten
Wert des Speicherblocks 112(a), d. h. 13, in das Speichermodul 110 zurückzuschreiben.
Der Verarbeitungsknoten 104 würde sich zuerst in seinem eigenen
Speichercache 132 vergewissern, um festzustellen, ob eine
Kopie des Speicherblocks 112(a) schon zuvor in den Cache
aufgenommen wurde. Angenommen, daß eine Kopie des Speicherblocks 112(a) von
dem Verarbeitungsknoten 104 nie in den Cache aufgenommen
wurde, dann würde
ein Cachefehlzugriff auftreten.
-
Beim Auftreten des Cachefehlzugriffs
kann der Verarbeitungsknoten 104 dann fortfahren, eine
Kopie des Speicherblocks 112(a) aus dem Speichermodul 110 zu
erhalten. Da der geänderte
Wert des Speicherblocks 112(a) von dem Verarbeitungsknoten 102 nicht
in das Speichermodul 110 zurückgeschrieben wurde, würde der
alte Wert, der in dem Speicherblock 112(a) gespeichert
ist, d. h. 12, von dem Verarbeitungsknoten 104 ermittelt.
Dieses Problem wird hier als das Kohärenzproblem bezeichnet und
birgt die Möglichkeit
in sich, fehlerhafte Werte an Verarbeitungsknoten und andere Einrichtungen
zu übergeben,
die sich einen gemeinsamen Speicher teilen.
-
Bis jetzt wurde das gemeinsame Verwenden
der Speicherblöcke 112 nur
unter Bezug auf Einrichtungen dargestellt, die innerhalb des Computerknotens 100 liegen,
d. h. Einrichtungen wie Verarbeitungsknoten 102, 104 und 106,
die dafür
ausgelegt sind, an den gemeinsamen Bus 108 angeschlossen
zu werden und damit unter Verwendung desselben Kommunikationsprotokolls
zu kommunizieren. Es kann Zeiten geben, zu denen es nötig ist,
den Computerknoten 100 mit anderen externen Einrichtungen
zu verbinden, z. B. um die Erweiterung des Computersystems zu erleichtern.
Häufig
kann es vor kommen, daß die
externen Einrichtungen ein anderes Protokoll als dasjenige, das
auf dem gemeinsamen Bus 108 des Computerknotens 100 verwendet wird,
einsetzen und sogar mit einer anderen Geschwindigkeit betrieben
werden.
-
Die externe Einrichtung 140 von 1 stellt eine solche externe
Einrichtung dar. Zum Zweck der Diskussion kann die externe Einrichtung 140 zum
Beispiel eine I/O-Einrichtung wie ein Gateway zu einem Netzwerk
darstellen. Alternativ kann die externe Einrichtung 140 zum
Beispiel ein Prozessor wie ein Pentium ProTM Mikroprozessor
(erhältlich
von Intel Corp. in Santa Clara, Kalifornien) sein, der einen Prozessor
darstellt, dessen Protokoll und Betriebsgeschwindigkeit von denjenigen
auf dem gemeinsamen Bus 108 abweichen kann. Als ein weiteres
Beispiel kann die externe Einrichtung 140 einen Agenten
von verteiltem, gemeinsam genutztem Speicher zum Anbinden des Computerknotens 100 an
andere Einheiten darstellen, die ihre eigenen Speicherräume haben,
z. B. andere Computerknoten mit ihren eigenen Speichermodulen. Über den
Agenten von verteiltem, gemeinsam genutztem Speicher können die
Speicherblöcke
sowohl innerhalb des Computerknotens 100 als auch innerhalb
dieser anderen, Speicherplatz enthaltenden Einheiten gemeinsam verwendet
werden.
-
Obwohl eine externe Einrichtung Bedarf
haben kann, die in dem Speichermodul 100 gespeichert Daten
gemeinsam zu nutzen, ist es typischerweise nicht möglich, eine
externe Einrichtung wie die externe Einrichtung 140 direkt
an den gemeinsamen Bus 108 anzuschließen, um es der externen Einrichtung 140 zu
ermöglichen,
die Speicherblöcke
in dem Speichermodul 110 gemeinsam zu nutzen. Das direkte
Anbinden ist unter anderem wegen der zuvor erwähnten Unterschiede bei den
Protokollen und Betriebsgeschwindigkeiten nicht möglich.
-
Ein Artikel von D. Lenoski et al.
mit dem Titel "The
Stanford Dash Multiprocessor",
der in Computer, Vol. 25, Nr. 3, März 1992, auf den Seiten 63–79 veröffentlicht
ist, beschreibt einen Mehrfachprozessor mit gemeinsam genutztem
Speicher, der Dash (Directory Architecture for Shared Memory) genannt
wird, der an der Stanford Universität in Entwicklung war. Der Artikel
erläutert,
daß die
Voraussetzung der eingesetzten Architektur war, eine skalierbare
Hochleistungsmaschine mit einem einzigen Adreßraum und kohärenten Cachespeichern
zur Verfügung
zu stellen. Die Dash-Architektur
beruhte auf einem Satz von Clustern, die durch ein allgemeines Verbindungsnetzwerk
verbunden waren. Ein Verzeichnisspeicher enthält Zeiger auf die Cluster, die
aktuell jede Speicherzeile bzw. jeden Speicherblock im Cache halten.
Die Dash-Systemorganisation sorgte für einen Freiheitsgrad bei der
Auswahl eines spezifischen Cachekohärenzprotokolls. Der Artikel
beschreibt ferner, daß das
Dash-System ein auf der Überprüfung von
Ungültig
beruhendes Cachekohärenzprotokoll
implementiert. Ein Verzeichnis hält
zusammenfassende Information für
jeden Speicherblock, der lokal oder extern im Cache gehalten wird,
indem es seinen Zustand und die Cluster angibt, die ihn im Cache
halten. Prozessor-Cachespeicher zweiter Stufe sind für das Mithören bzw.
Snooping am Bus und das Aufrechterhalten der Kohärenz zwischen den Cachespeichern
in den Clustern verantwortlich. Als eine Alternative wird auch ein kleiner
Verzeichniscache vorgesehen. Die Kohärenz wird aufrecht erhalten,
indem ein Illinois- oder MESI- (Modified, Exclusive, Shared, Invalid)-Protokoll
verwendet wird. Die Verzeichnislogik implementiert ein Kohärenzprotokoll
auf Basis eines Verzeichnisses und verbindet die Cluster innerhalb
des Systems. Eine Verzeichnissteuerungs-(Directory Controller, DC)-Platine
beinhaltet die DC-Logik, die alle ausgehenden Netzwerkanforderungen
und -antworten einleitet. Eine Leistungsüberwachung zählt eine
Vielzahl von Ereignissen innerhalb von und zwischen Clustern und
zeichnet sie auf. Die DC-Platine beinhaltet auch eine Netzwerklogik
für ausgehende
Anforderungen und Antworten. Eine Antwortsteuerungs-(Reply Controller,
RC)-Platine beinhaltet eine Antwortsteuerung, die ausstehende Anforderungen
verfolgt, die von lokalen Prozessoren gestellt wurden, und Antworten
von entfernten Clustern unter Verwendung eines Fernzugriffscache
empfängt
und puffert. Eine Pseudo-CPU puffert eintreffende Anforderungen
und gibt sie auf dem Clusterbus aus. Die RC-Platine beinhaltet auch
eine Netzwerklogik am Eingang. Der Fernzugriffscache ist als ein
128 Kbyte großer,
direkt abgebildeter, mithörender
Cache mit 16 Byte großen
Cacheblöcken
bzw. -zeilen organisiert.
-
Ein Artikel von B. O'Krafka et al. mit
dem Titel "An Empirical
Evaluation of Two Memory-Efficient
Directory Methods",
wie in den Proceedings of the Annual International Symposium on
Computer Architecture, Seattle, 28.–31. Mai 1990, Nr. SYMP.17,
IEEE auf den Seiten 138–147
veröffentlicht,
liefert eine empirische Auswertung zweier speichereffizienter Verzeichnisverfahren
zum Aufrechterhalten kohärenter
Cachespeicher in großen
Mehrfachprozessoren mit gemeinsam genutztem Speicher. Dieser Artikel
beschreibt, daß heutzutage
vorgeschlagene Verfahren zur Cachekonsistenz in vier Klassen eingeteilt
werden können:
diejenigen, bei denen gemeinsam genutzte, schreibbare Daten nicht
in den Cache geschrieben werden, "Mithör-" bzw. "Snooping"-Protokolle (für gemeinsam
genutzte Bussysteme), Verzeichnissysteme und Software-unterstützte Techniken.
Der Artikel kategorisiert die ersten drei Klassen als Hardware-basierte
Techniken. Hardware-Techniken erzwingen Konsistenz in einer Weise,
die keine speziellen Befehle zur Cachesteuerung erfordert, die in den
Objektcode eines Programms einzufügen sind. Der Artikel beschreibt,
wie Software-Techniken
andererseits auf einem technisch ausgefeilten bzw. hochentwickelten
Compiler beruhen, um festzulegen, wie die Speicherhierarchie zur
Kompilierzeit zu verwalten ist, und um geeignete cachegesteuerte
Befehle zu erzeugen. Absatz 3.4 dieses Artikel beschreibt ein Schema,
bei dem die Menge von Tag-Speicher durch das Verwenden einer Anzahl
von Tags reduziert wird, die viel kleiner als die Anzahl von Hauptspeicherblöcken ist.
Die Tags werden in einem assoziativen Tag-Cache gespeichert, der
mit den Blockadressen indiziert ist. Genauer werden zwei Cachespeicher
von unterschiedlicher Tag-Größe bei jeder
Bank des verteilten Hauptspeichers zur Verfügung gestellt: ein großer Cache
mit kleinen Tags, die in der Lage sind, die Identitäten einer
kleinen Anzahl von Kopien im Cache zu halten, und ein kleiner Cache
mit Tags voller Größe. Wenn
keine Tags frei sind, muß ein Block
im Cache ungültig
gemacht werden und sein Tag neu belegt werden. Wenn ein Block zum
ersten Mal aufgerufen wird, wird für ihn ein kleines Tag belegt.
Wenn die Anzahl von Kopien eines Blocks die Anzahl von Kopien übersteigt,
die von den kleinen Tags unterstützt
wird, wird ein großes
Tag belegt und das kleine Tag freigegeben.
-
Die europäische Anmeldung EP-A-0.801.349
ist eine gleichzeitig anhängige
Anmeldung im Namen von Sun Microsystems Inc. mit einem Prioritätsdatum
vom B. April 1996, einem Anmeldedatum vom 25. März 1997 und einem Publikationsdatum
vom 15. Oktober 1997. Die früher
eingereichte, gleichzeitig anhängige
Anmeldung beschreibt ein stromlinienförmiges Cachekohärenz-Protokoll
für ein
Mehrprozessorsystem mit mehreren Cachespeichern. Jedes Subsystem
beinhaltet mindestens einen Prozessor und einen zugeordneten Cache
sowie ein zugeordnetes Verzeichnis. Die Subsysteme sind an eine
globale Zwischenverbindung über
globale Schnittstellen angeschlossen. Nach einer Ausführungsform
beinhaltet jede globale Schnittstelle einen Anforderungsagenten,
einen Verzeichnisagenten und einen abhängigen Agenten. Der Anforderungsagent
stellt einem Subsystem einen Mechanismus zum Senden von Lese- und
Schreibanforderungen an den Verzeichnisagenten eines anderen Systems
bereit. Der Verzeichnisagent ist für den Zugriff auf sein Heimatverzeichnis und
die Aktualisierung seines Heimatverzeichnisses verantwortlich. Der
abhängige
Agent ist für
das Antworten auf Anforderungen von Verzeichnisagenten eines anderen
Systems verantwortlich. Jedes Subsystem enthält auch einen Blockierer. Jeder
Blockierer ist an einen Verzeichnisagenten angeschlossen und einem
Heimatverzeichnis zugeordnet. Alle Anforderungen eines Cacheblocks
werden von dem Blockierer überprüft, der
jedem Heimatverzeichnis zugeordnet ist. Blockierer sind dafür verantwortlich,
neue Anforderungen eines Cacheblocks zu blockieren, bis eine anstehende
Anforderung nach diesem Cacheblock bedient worden ist.
-
In Anbetracht des Vorstehenden ist
das, was benötigt
wird, ein verbessertes Verfahren und eine Vorrichtung, die es zufassen,
daß Speicherblöcke mit
einer lokalen physikalischen Adresse (LPA) in einem bestimmten Computerknoten
auf eine effiziente und fehlerfreie Weise unter miteinander verbundenen
Einheiten wie anderen Verarbeitungsknoten und externen Einrichtungen
gemeinsam verwendet werden.
-
Verschiedene Aspekte und Merkmale
der Erfindung sind in den angefügten
Ansprüchen
definiert.
-
Ausführungsformen der Erfindung
können
ein neuartiges Verfahren und eine Vorrichtung zum effizienten Lösen der
Kohärenzprobleme
bereitstellen, wenn Speicherblöcke
mit lokalen physikalischen Adressen (LPA) in einem bestimmten Computerknoten
eines Computersystems sowohl von anderen Knoten des Systems als
auch von externen Einheiten, die an diesen Computerknoten angeschlossen
sind, gemeinsam genutzt werden.
-
Eine Ausführungsform der Erfindung stellt
ein Verfahren in einem Computersystem mit einem Computerknoten,
der einen gemeinsamen Bus hat, bereit, um zu ermöglichen, daß eine externe Einrichtung,
die extern bezüglich
des Computerknotens ist, Speicherblöcke mit lokalen physikalischen
Adressen in einem Speichermodul bei dem Computerknoten gemeinsam
nutzt. Gemeinsame Nutzung wird unabhängig davon zugelassen, ob die
externe Einrichtung und der gemeinsame Bus beide ein gemeinsames
Protokoll einsetzen, und unabhängig
davon, ob die externe Einrichtung und der gemeinsame Bus beide mit
derselben Geschwindigkeit betrieben werden. Das Verfahren beinhaltet
den Schritt, durch einen an den gemeinsamen Bus angeschlossenen
Kohärenzwandler
eine erste Kopie eines ersten Speicherblocks mit einer lokalen physikalischen
Adresse in dem Speichermodul im Namen der externen Einrichtung zu
erhalten.
-
Der Schritt zum Erhalten dieser Ausführungsform
beinhaltet den Schritt, unter Verwendung des Kohärenzwandlers eine erste Speicherzugriffsanforderung
für den
ersten Speicherblock von der externen Einrichtung zu empfangen.
Es ist ferner der Schritt enthalten, unter Verwendung des Kohärenzwandlers
die erste Kopie des ersten Speicherblocks von dem gemeinsamen Bus
an sich zu bringen bzw. zu erwerben. Außerdem ist der Schritt enthalten,
unter Verwendung eines Tags von einem dem Kohärenzwandler zugeordneten Mithör-Tag-Array
einen Zustand der ersten Kopie des ersten Speicherblocks bei der
externen Einrichtung nachzuführen,
wobei der Zustand einen der Zustände "exklusiv", "gemeinsam genutzt" und "ungültig" umfaßt. Darüber hinaus
gibt es den Schritt, die erste Kopie des ersten Speicherblocks von
dem Kohärenzwandler
an die externe Einrichtung zu senden.
-
Die Erfindung wird nun als Beispiel
unter Bezug auf die beigefügten
Zeichnungen beschrieben, in denen gleiche Teile durchweg mit gleichen
Referenzen bezeichnet werden und in denen:
-
1 zum
Zweck der Diskussion ein Computersystem zeigt, das z. B. einen Computerknoten
in einem komplexeren Computersystem darstellt.
-
2 gemäß einem
Aspekt der vorliegenden Erfindung einen Kohärenzwandlerblock zeigt.
-
3 gemäß einem
Aspekt der vorliegenden Erfindung ein Tag-Array innerhalb des Kohärenzwandlers
von 2 zeigt.
-
4 gemäß einem
Aspekt der vorliegenden Erfindung das Format einer typischen Speicherzugriffsanforderung
auf dem gemeinsamen Bus 108 genauer zeigt.
-
5 gemäß einem
Aspekt der vorliegenden Erfindung das Format einer typischen Antwort
auf die Anforderung aus 4 genauer
zeigt.
-
6 die
verschiedenen, nach einer Ausführungsform
der vorliegenden Erfindung verfügbaren
Zustände
zeigt, die in den Zustandsfeldern der Tags in dem Tag-Array gespeichert
sein können.
-
7 ausgewählte Transaktionen
nach einer Ausführungsform
der vorliegenden Erfindung darstellt, die von dem Kohärenzwandler
als Reaktion auf Speicherzugriffsanforderungen auf dem gemeinsamen
Bus durchgeführt
werden.
-
8 ausgewählte Transaktionen
nach einer Ausführungsform
der vorliegenden Erfindung darstellt, die von dem Kohärenzwandler
als Reaktion auf Speicherzugriffsanforderungen von einer der externen
Einrichtungen durchgeführt
werden.
-
Beispielhafte Ausführungsformen
der Erfindung werden beschrieben, die es zulassen, daß Speicherblöcke mit
lokalen physikalischen Adressen (LPA) in einem bestimmten Computerknoten
auf eine effiziente und fehlerfreie Weise unter miteinander verbundenen
Einheiten wie anderen Computersystemen und externen Einrichtungen
gemeinsam genutzt werden. In der folgenden Beschreibung werden zahlreiche
spezifische Details dargelegt, um ein gründliches Verständnis der
vorliegenden Erfindung zu gewährleisten.
Es ist jedoch für einen
Fachmann auf diesem Gebiet offensichtlich, daß die vorliegende Erfindung
ohne einige oder alle dieser spezifischen Details praktiziert bzw.
realisiert werden kann. In anderen Fällen wurden wohlbekannte Strukturen und
Prozeßschritte
nicht im Detail beschrieben, um die vorliegende Erfindung nicht
unnötig
zu verschleiern.
-
Gemäß einer Ausführungsform
der vorliegenden Erfindung steht ein Kohärenzwandler zum Verbinden eines
Computerknotens, z. B. Computerknoten 100, mit einer externen
Einrichtung zur Verfügung.
Der Kohärenzwandler
erlaubt es einer externen Einrichtung, die ein Protokoll einsetzen
kann, das von dem durch den Computerknoten 100 eingesetzten
verschieden ist, und sogar mit einer unterschiedlichen Geschwindigkeit
betrieben werden kann, auf Speicherblöcke mit lokalen physikalischen
Adressen im Computerknoten 100 zuzugreifen. Nach einem
Aspekt der vorliegenden Erfindung verfolgt der Kohärenzwandler
die Speicherblöcke,
die von der externen Einrichtung im Cache gehalten werden. Der Kohärenzwandler überwacht
danach Speicherzugriffsanforderungen auf dem Bus des Computerknotens 100.
Wenn sich eine der Speicherzugriffsanforderungen auf dem Bus des
Computerknotens 100 auf einen Speicherblock bezieht, der
aktuell von einer externen Einrichtung im Cache gehalten wird, kann
der Kohärenzwandler
eingreifen, um die letzte Kopie dieses Speicherblocks bereitzustellen,
wodurch er ein Kohärenzproblem
vermeidet.
-
Die Details des Betriebs des Kohärenzwandlers
können
besser unter Bezug auf die folgenden Zeichnungen, die folgen, verstanden
werden. In 2 steht ein
Kohärenzwandler 200 gemäß einer
Ausführungsform
der vorliegenden Erfindung zum Verbinden des Computerknotens 100 mit
einer von einer Mehrzahl externer Einrichtungen 202, 204 und 206 zur
Verfügung.
Es ist zu beachten, daß es
tatsächlich
viele externe Einrichtungen jedes Typs geben kann, die an den Kohärenzwandler 200 angeschlossen
sind, auch wenn zur Vereinfachung der Darstellung nur jeweils eine
von jedem Typ von externen Einrichtungen (202, 204 oder 206) abgebildet
ist. Über
den Kohärenzwandler 200 kann
auf die Inhalte der Speicherblöcke
des Speichermoduls 110, z. B. die Speicherblöcke 112,
von jeder der externen Einrichtungen 202, 204 und 206 zugegriffen
werden. Gemäß einer
Aus führungsform
der vorliegenden Erfindung können
Speicherblöcke
des Speichermoduls 110 von den externen Einrichtungen gemeinsam
verwendet werden, auch wenn diese externen Einrichtungen Protokolle
einsetzen und mit Geschwindigkeiten betrieben werden, die von denen
auf dem gemeinsamen Bus 108 des Computerknotens 100 verschieden
sind.
-
Die externe Einrichtung 202 kann
zum Beispiel eine I/O-Einrichtung wie ein Gateway zu einem Computernetzwerk
darstellen, das einige wenige Speicherblöcke 112 zu einem Zeitpunkt
aus dem Speichermodul 110 über den Kohärenzwandler 200 erhalten
kann. Die externe Einrichtung 204 kann zum Beispiel eine
Kohärenzdomäne wie einen
Prozessor darstellen, dessen internes Protokoll und Betriebsgeschwindigkeit
von denjenigen abweichen, die auf dem gemeinsamen Bus 108 ablaufen.
Beispiele von Unterschieden umfassen Unterschiede in den Blockgrößen und
bei der Signalisierung. Die externe Einrichtung 206 kann
zum Beispiel eine Agenteneinrichtung eines verteilten, gemeinsam
genutzten Speichers darstellen.
-
Die Agenteneinrichtung 206 eines
verteilten, gemeinsam genutzten Speichers kann Logikschaltkreise zum
Verbinden des Computerknotens 100 mit anderen verteilten,
gemeinsam genutzten Speicher- (Distributed Shared Memory, DSM)-
Domänen
wie andere Computerknoten beinhalten, um die gemeinsame Nutzung
von Speicherblöcke
zwischen verschiedenen DSM-Domänen
und mit dem Computerknoten 100 zu erleichtern. Ferner kann
es die Agenteneinrichtung 206 eines verteilten, gemeinsam
genutzten Speichers ermöglichen, daß ein Verarbeitungsknoten 102 in
dem Computerknoten 100 sowohl auf den Speicherblock 112 innerhalb seines
lokalen Speichermoduls 110 als auch auf Speicherblöcke zugreift,
die Speichermodulen innerhalb der Computerknoten 150, 160 und 170 zugeordnet
sind, und umgekehrt. Das Verwenden eines Agenten 206 eines verteilten,
gemeinsam genutzten Speichers schafft die Illusion, daß es eine
zentralisierte, gemeinsam genutzte Speicherressource gibt, auf die
die Prozessoren innerhalb der Computerknoten 100, 150, 160 und 170 zugreifen
können,
obwohl diese zentralisierte Speicherressource physikalisch auf den
verschiedenen Computerknoten implementiert und verteilt ist.
-
Der Kohärenzwandler 200 kann
mit dem gemeinsamen Bus 108 des Computerknotens 100 über eine Kohärenzwandlerverbindung 220 kommunizieren.
Auf der externen Domäne
kann der Kohärenzwandler 200 mit
jeder der externen Einrichtungen, z. B. jeder der externen Einrichtungen 202, 204 und 206, über die
Verbindungen 222, 224 und 226 unter Verwendung
eines Protokolls kommunizieren, das für die externe Einrichtung,
mit der er kommuniziert, geeignet ist.
-
In 3 sind
die funktionalen Einheiten innerhalb des Kohärenzwandlers 200 nach
einer Ausführungsform
abgebildet. Nach einer Ausführungsform
sind die funktionalen Einheiten als digitale Logikschaltkreise implementiert.
Wie Fachleute auf diesem Gebiet verstehen, können diese funktionalen Einheiten
jedoch je nach Bedarf entweder als Hardware (digital oder analog)
oder als Software implementiert sein. Innerhalb des Kohärenzwandlers 200 ist
ein Mithör-
bzw. Snoop-Tag-Array 250 abgebildet, das den Mechanismus
zum Verfolgen der Speicherblöcke
darstellt, auf die von einer Einrichtung auf der externen Seite,
z. B. einer der externen Einrichtungen 202, 204 und 206,
zugegriffen wird. Innerhalb des Mithör-Tag-Array 250 ist
eine Mehrzahl von Tags 253, 254, 256 und 258 abgebildet.
Es kann so viele Tags in dem Mithör-Tag-Array 250 geben,
wie es extern im Cache ge haltene Speicherblöcke gibt. Wie später genauer
diskutiert wird, minimiert das Bereitstellen eines Tag für jeden
extern im Cache gehaltenen Speicherblock jedweden Einfluß auf die
Bandbreite des gemeinsamen Busses 108, wenn ein Speicherblock
in dem Speichermodul 110 extern im Cache gespeichert wird,
z. B. von einer der externen Einrichtungen im Cache gespeichert
wird. Natürlich
kann die Anzahl von Tags in dem Mithör-Tag-Array 250 abhängig vom
Bedarf variieren und jede beliebige Anzahl darstellen.
-
An das Mithör-Tag-Array 250 ist
die Mithör-
bzw. Snoop-Logik 260 angeschlossen, welche die Logik in Hardware
und/oder Software darstellt, die eingesetzt wird, um Speicherzugriffsanforderungen
auf dem gemeinsamen Bus 108 in 1 zu überwachen.
Nach einer Ausführungsform
ist die Mithör-Logik 260 im
wesentlichen ähnlich
der herkömmlichen
Mithör-Logik,
die in jedem der Verarbeitungsknoten 102, 104 und 106 eingesetzt
wird, um es diesen Verarbeitungsknoten zu ermöglichen, Speicherzugriffsanforderungen
auf dem gemeinsamen Bus 108 zu überwachen.
-
Innerhalb jedes Tag, z. B. Tag 253,
gibt es ein Zustandsfeld 252(a) und ein Adreßfeld 252(b).
Nach einer Ausführungsform
kann das Zustandsfeld 252(a) einen von drei Zuständen speichern,
obwohl zusätzliche Zustände verwendet
werden können,
falls gewünscht.
Diese drei Zustände
sind: I (invalid, ungültig),
S (shared, gemeinsam genutzt) und E (exklusiv und möglicherweise
geändert).
Das Adreßfeld 252(b) speichert
die Adresse des im Cache gehaltenen Speicherblocks, wodurch es dem
Kohärenzwandler 200 ermöglicht wird
zu verfolgen, welcher Speicherblock von einer externen Einrichtung
im Cache gehalten wird. Die I-, S-, E-Zustände werden verwendet, um zu
verfolgen, welche Kopie eines gegebenen Speicherblocks (angegeben
durch das Adreßfeld 252(b))
aktuell extern im Cache gehalten wird.
-
Es sollte Fachleuten auf diesem Gebiet
aus dem Vorstehenden klar sein, daß eine Art von Protokollumwandlung
notwendig sein kann, um es Einrichtungen und Systemen, die verschiedene
Protokolle verwenden und/oder mit verschiedenen Geschwindigkeiten
betrieben werden, zu erlauben, Speicherblöcke gemeinsam zu nutzen. Die
Protokollumsetzer-Logik 262 stellt die als Hardware und/oder
Software implementierte Logik dar, die es ermöglicht, daß der Kohärenzwandler 200 mit
einer externen Einrichtung kommuniziert, z. B. einer von den externen
Einrichtungen 202, 204 und 206. Die Protokollumsetzer-Logik 262 kann
zum Beispiel weggelassen werden, wenn die externe Einrichtung dasselbe
Protokoll wie das in dem Computerknoten 100 eingesetzte
verwendet und mit derselben Geschwindigkeit betrieben wird. Es ist
zu berücksichtigen,
daß das spezifische
Protokoll, das eingesetzt wird, um mit einer spezifischen externen
Einrichtung zu kommunizieren, in hohem Maße abhängig von der Spezifikation
des Protokolls, das von dieser externen Einrichtung eingesetzt wird,
variieren kann. Wie hier noch genauer diskutiert wird, wird angenommen,
daß die
Kommunikation zum Zweck des gemeinsamen Verwendens von Speicherblöcken mit
externen Einrichtungen durchgeführt
werden kann, indem ein generalisiertes Protokoll verwendet wird,
das als das X-Protokoll
bekannt ist. Die Anpassung des beschriebenen X-Protokolls an eine
spezifische externe Einrichtung sollte für Fachleute auf diesem Gebiet angesichts
dieser Offenbarung offensichtlich sein.
-
4 zeigt
das Format einer Speicherzugriffsanforderung 400 gemäß einer
Ausführungsform
der vorliegenden Erfindung genauer, die eine typische Speicherzugriffsanforderung
darstellt, die zum Beispiel von einem der Verarbeitungsknoten in
dem Computerknoten 100 oder von dem Kohärenzwandler 200 auf
dem gemeinsamen Bus 108 ausgegeben wird, um einen Speicherblock
anzufordern. Die Speicherzugriffsanforderung 400 beinhaltet
typischerweise ein Typfeld 402, ein Adreßfeld 404,
ein Quell-ID-Feld (Source ID Field, SID) 406 und ein Besitzflag 408.
-
Das Typfeld 402 gibt die
Art der Speicherzugriffsanforderung an, die ausgegeben wird. Eine
anfordernde Einheit, z. B. einer der Verarbeitungsknoten in dem
Computerknoten 100, kann eine Anforderung einer exklusiven
Kopie eines Speicherblocks ausgeben, indem sie einen Anforderung-um-zu-Besitzen-Typ
bzw. eine Speicherzugriffsanforderung des Typs der Anforderung zum
Zwecke des Besitzes (Request-To-Own- (RTO-) Typ) ausgibt. Sobald
man die exklusive Kopie erhalten hat, kann die anfordernde Einheit
dann entweder aus der Kopie des Speicherblocks im Cachespeicher
lesen oder in die Kopie des Speicherblocks im Cachespeicher schreiben,
um zu veranlassen, daß sie
sich von ihrem Gegenstück
im Speichermodul 110 unterscheidet. Eine anfordernde Einheit
kann auch eine Anforderung einer gemeinsam genutzten, nur lesbaren
Kopie des Speicherblocks ausgeben, indem sie eine Speicherzugriffsanforderung
vom Typ des Lesens zum Zwecke des gemeinsamen Nutzens (Read-To-Share-
(RTS-) Typ) ausgibt. Alternativ kann eine anfordernde Einheit eine Anforderung
auf den gemeinsamen Bus 108 ausgeben, um die Erlaubnis
einzuholen, eine exklusive Kopie eines Speicherblocks, die sie zuvor
in den Cache gespeichert hat, in das Speichermodul 110 zurückschreiben zu
dürfen
(über einen
Zurückschreiben-Typ
bzw. Write Back oder "WB" Typ einer Speicherzugriffsanforderung).
-
Das Adreßfeld 404 gibt die
Adresse des durch die Speicherzugriffsanforderung 400 angeforderten Speicherblocks
an. Das Quell-ID-Feld 406 gibt die Identität der Einheit
an, die die Speicherzugriftsanforderung 400 ausgibt. Das
Besitzflag 408 stellt das Flagbit dar, das normalerweise
zurückgesetzt
ist, bis eine von den Einheiten, eine andere als das Speichermodul 110,
die in der Lage ist, eine Speicherzugriffsanforderung zu bedienen,
z. B. einer von den Verarbeitungsknoten 102– 106 oder
der Kohärenzwandler 200,
das Besitzflag 408 setzt. Eine an den gemeinsamen Bus 108 angeschlossene
Einheit kann das Besitzflag 408 zu setzen wünschen,
um anzuzeigen, daß die
aktuelle Speicherzugriftsanforderung nicht von dem Speichermodul 110 bedient
werden soll, d. h. eine der Einheiten, die in der Lage sind, diesen
Speicherblock in den Cache zu nehmen, hat dies getan und kann möglicherweise über eine
neuere Kopie als die in dem Speichermodul 110 verfügen.
-
5 zeigt
das Format einer Antwort 500 gemäß einer Ausführungsform
der vorliegenden Erfindung genauer. Die Antwort 500 wird
typischerweise von der Einheit ausgegeben, die auf eine zuvor ausgegebene Speicherzugriffsanforderung
reagiert, d. h. eine mit dem Format der Speicherzugriffsanforderung 400 von 4. Wie in 5 gezeigt beinhaltet die Antwort 500 ein
Quell-ID-(Source
ID, SID) Feld 502, das die eindeutige ID der anfordernden
Einheit darstellt, an die die Antwort gesendet werden sollte. Nach
einer Ausführungsform
ist das SID-Feld 502 vom Inhalt her im wesentlichen gleich
den SID-Daten, die in dem Quell-ID-Feld 406 von 4 enthalten sind. Die Verwendung
der Quell-ID ermöglicht
es dem Kohärenzwandler 200,
direkt mit dem gemeinsamen Bus 108 zu kommunizieren und
berechtigt den Kohärenzwandler 200,
sich auf den Mechanismus des gemeinsamen Busses 108 zu
verlassen, um die Antwort unter Verwendung der SID an das passende
endgültige
Ziel zu befördern.
Die Antwort 504 beinhaltet ferner ein Datenfeld 504,
das den Inhalt des angeforderten Speicherblocks darstellt.
-
Zurück zu den 2 und 3;
wenn es eine Speicherzugriffsanforderung, z. B. eine mit dem Format
der Speicherzugriffsanforderung 400 von 4, auf dem gemeinsamen Bus 108 gibt, überwacht
der Kohärenzwandler 200 (über die
Kohärenzwandlerverbindung 220)
diese Speicherzugriffsanforderung und prüft das Adreßfeld 404 der Speicherzugriffsanforderung
gegen die Adressen der Speicherblöcke, die von einer der externen
Einrichtungen im Cache gehalten werden. Gemäß 3 wird diese Prüfung nach einer Ausführungsform
durch Vergleichen des Adreßfeldes 404 gegen
die Adressen durchgeführt,
die in den Adreßfeldern 252(b) der
Tags innerhalb des Mithör-Tag-Arrays 250 gespeichert
sind.
-
Wenn es eine Adreßübereinstimmung gibt, wird danach
der Zustand des übereinstimmenden
Tags geprüft,
um sich zu vergewissern, ob der Speicherblock, der von der externen
Einrichtung im Cache gehalten wird, vom passenden Typ ist, um die
ausstehende Speicherzugriffsanforderung zu bedienen. Dies geschieht deshalb,
weil eine externe Einrichtung aktuell nur eine ungültige Kopie
des Speicherblocks haben kann und daher nicht in der Lage wäre, entweder
eine RTO- oder eine RTS-Speicherzugriffsanforderung zu bedienen.
-
Wenn der Zustand des übereinstimmenden
Tags anzeigt, daß der
extern im Cache gehaltene Speicherblock eine passende Kopie für das Bedienen
der ausstehenden Speicherzugriffsanforderung ist, kann die Mithör-Logik 260 des
Kohärenzwandlers 200 danach
das Besitzflag 408 setzen, um anzuzeigen, daß die Standardantwort überschrieben
werden sollte, d. h. das Speichermodul 110 nicht auf die
ausstehende Speicherzugriffsanforderung antworten sollte, da es
eine aktuellere Kopie geben kann, die von einer der externen Einrichtungen
im Cache gehalten wird.
-
Während
es logisch der Speicherzugriffsanforderung zugeordnet ist, wird
das Besitzflag 408 der Speicherzugriffsanforderung 400 daher
nach einer Ausführungsform
hinsichtlich der Zeit verdreht bzw. verschoben. Auf diese Weise
kann das Besitzflag einige wenige Zyklen später als der Rest der Speicherzugriffsanforderung ankommen,
um Einrichtungen wie dem Kohärenzwandler 200 Zeit
einzuräumen,
sich zu vergewissern, ob sie auf die Speicherzugriffsanforderung
mit einer neueren Kopie des angeforderten Speicherblocks als derjenigen antworten
sollten, die in dem Speichermodul 110 verfügbar ist.
-
Der Kohärenzwandler 200 erhält danach
die passende Kopie des angeforderten Speicherblocks von der externen
Einrichtung, indem er sein Wissen darüber verwendet, welche externe
Einrichtung aktuell die neueste Kopie hält. Der Kohärenzwandler 200 formuliert
dann eine Antwort 500, um die passende Kopie des angeforderten Speicherblocks
an den gemeinsamen Bus 108 zur Weiterleitung an die anfordernde
Einheit zurückzugeben,
d. h. diejenige, die durch die Quell-ID in der ausgegebenen Speicherzugriffsanforderung
identifiziert wird.
-
Wie zuvor erwähnt wird immer dann, wenn der
Speicherblock 112 von einer der externen Einrichtungen
in den Cache übernommen
wird, ein Tag in dem Mithör-Tag-Array 250 des
Kohärenzwandlers 200 für diesen
Speicherblock erzeugt, um die Übersicht
darüber
zu behalten, welcher Speicherblock des Computerknotens 100 von
den externen Einrichtungen im Cache gehalten wird und (im Zustandsfeld 252(a) des übereinstimmenden
Tags) welche Art von Kopie tatsächlich
in den Cache eingestellt wurde. 6 zeigt
die verschiedenen verfügbaren
Zustände
nach einer Ausführungsform
der vorliegenden Erfindung, die in dem Zustandsfeld 252(a) des
Tags des Mithör-Tag-Array 250 gespeichert
werden können.
In 6 sind drei mögliche Zustände abgebildet:
I, S und E, die anzeigen, daß eine
ungültige,
gemeinsam genutzte bzw. exklusive Kopie eines Speicherblocks von
einer externen Einrichtung im Cache gehalten wird.
-
Wenn der Zustand in dem Tag gleich
I ist, hat die externe Einrichtung keine Kopie des angeforderten Speicherblocks,
auch wenn es eine Übereinstimmung
zwischen der ankommenden Adresse und einer der in dem Mithör-Tag-Array 250 gespeicherten
Adressen gibt. Wenn der Zustand in dem übereinstimmenden Tag gleich
S ist, besitzt mindestens eine der externen Einrichtungen eine gemeinsam
genutzte, nur lesbare Kopie des angeforderten Speicherblocks. Wenn
der Zustand in dem übereinstimmenden
Tag gleich E ist, besitzt eine der externen Einrichtungen eine exklusive
Kopie des angeforderten Speicherblocks, die sie verwenden kann, um
zum Beispiel auf eine RTO-Speicherzugriftsanforderung zu antworten.
Ferner kann die externe Einrichtung, die eine exklusive Kopie besitzt,
einseitig diese Kopie ändern,
ohne andere Buseinheiten, die an den gemeinsamen Bus 108 angeschlossen
sind, informieren zu müssen.
-
Der Betrieb des Kohärenzwandlers 200 kann
anhand der 7 und 8 klarer verstanden werden. 7 stellt nach einer Ausführungsform
der vorliegenden Erfindung ausgewählte Transaktionen dar, die
von dem Kohärenzwandler 200 als
Reaktion auf Speicherzugriffsanforderungen auf dem gemeinsamen Bus 108 durchgeführt werden.
-
RTO-Anforderung
auf dem Bus
-
Wenn in 7 eine RTO-Speicherzugriffsanforderung
von einer der Buseinheiten auf dem gemeinsamen Bus 108 ausgegeben
wird (wie der Begriff nachfolgend verwendet wird, bezieht sich "Buseinheit" auf irgendeine Einheit
wie eine Verarbeitungseinheit oder irgendeine andere Einrichtung,
die an den gemeinsamen Bus 108 zum gemeinsamen Verwenden
eines Speicherblocks angeschlossen ist), wird diese RTO-Speicherzugriffsanforderung
an alle Buseinheiten einschließlich
des Kohärenzwandlers 200 weitergeleitet.
Der Kohärenzwandler 200 vergewissert
sich daraufhin, ob die Adresse des angeforderten Speicherblocks
mit einer der Adressen übereinstimmt,
die in dem Mithör-Tag-Array 250 des
Kohärenzwandlers 200 gespeichert
sind.
-
Wenn es eine Adreßübereinstimmung gibt, wird der
aktuelle Zustand des übereinstimmenden
Tags ermittelt, um festzustellen, ob die von einer der externen
Einrichtungen im Cache gehaltene Kopie von dem passenden Typ für die Antwort
auf die Speicherzugriffsanforderung auf dem gemeinsamen Bus 108 ist.
Wenn die Speicherzugriffsanforderung eine Anforderung einer exklusiven
Kopie eines Speicherblocks (ein RTO) oder eine Anforderung einer
gemeinsam genutzten Kopie eines Speicherblocks (ein RTS) ist und
der aktuelle Zustand des übereinstimmenden
Tags gleich I (invalid, ungültig)
ist, ignoriert der Kohärenzwandler 200 die RTO-Speicherzugriffsanforderung,
da der Speicherblock, der einmal im Cache gehalten wurde, nun eine
ungültige
Kopie ist.
-
Wenn die Speicherzugriffsanforderung
auf dem gemeinsamen Bus 108 ein RTO (das erste RTO dieser Transaktion)
ist und das aktuelle Tag gleich S ist, muß der Kohärenzwandler 200 die
gemeinsam genutzte Kopie oder Kopien, die aktuell von einer oder
mehreren der externen Einrichtungen im Cache gehalten werden, ungültig machen.
Dieses Ungültig-Machen
ist in 7 durch das XINV-Kommando
dargestellt, welches ein Ungültig-Kommando
des X-Protokolls ist, das an jede externe Einrichtung gerichtet
wird, die aktuell eine gemeinsam genutzte Kopie hat. Im Anschluß an das
Ungültig-Machen
ist der neue Zustand des Speicherblocks in der externen Einrichtung
ungültig
(Neuer Zustand = I).
-
Auf die Bestätigung hin, daß die externe
Einrichtung ihre gemeinsam genutzte Kopie des angeforderten Speicherblocks
ungültig
gemacht hat (mittels des Kommandos XINV_ack des X-Protokolls), setzt
der Kohärenzwandler 200 den
Zustand des übereinstimmenden
Tags auf ungültig
herunter (Neuer Zustand = I), um die Tatsache widerzuspiegeln, daß es keine
gültige
externe Kopie mehr gibt. Der Kohärenzwandler 200 erhält dann
eine Kopie des angeforderten Speicherblocks von dem Computerknoten 100 und
macht alle internen Kopien ungültig,
die von Buseinheiten innerhalb des Computerknotens 100 im
Cache gehalten werden. Diese beiden Aktionen werden bewirkt, wenn
der Kohärenzwandler 200 ein
RTO-Kommando (das zweite RTO in dieser Transaktion) an den gemeinsamen
Bus 108 ausgibt und die angeforderten Daten (mittels der
Antwort RTO data auf das zweite RTO) empfängt. Die Kopie des angeforderten
Speicherblocks wird daraufhin an den gemeinsamen Bus 108 gesendet,
um an die Einheit weitergeleitet zu werden, die ursprünglich die
RTO-Speicherzugriffsanforderung
ausgegeben hat (mittels der Antwort RTO data auf das erste RTO).
-
Man beachte, daß die Verwendung des XINV-Kommandos
vorteilhafterweise alle gemeinsam genutzten Kopien des angeforderten
Speicherblocks ungültig
macht, die von einer externen Einrichtung oder von externen Einrichtungen
im Cache gehalten werden. Ferner stellt die Verwendung der RTO-Anforderung
durch den Kohärenzwandler 200 an
den gemeinsamen Bus 108 vorteilhafterweise sicher, daß alle gemeinsam
genutzten Kopien innerhalb des Computerknotens 100 ungültig gemacht
werden, und erhält
die Kopie des angeforderten Speicherblocks, um sie an die anfordernde
Einheit weiterzuleiten.
-
Der aktuelle Zustand des übereinstimmenden
Tags kann ein E sein, wenn eine RTO-Speicherzugriftsanforderung auf dem
gemeinsamen Bus 108 erscheint. Der E-Zustand zeigt an,
daß eine
externe Einrichtung aktuell eine exklusive (und möglicherweise
geänderte)
Kopie des angeforderten Speicherblocks, die angefordert wird, im
Cache hält.
In diesem Fall kann der Kohärenzwandler 200 die
exklusive (und möglicherweise geänderte)
Kopie des angeforderten Speicherblocks von der externen Einrichtung
erhalten und diese Kopie an die Einheit zurückgeben, die ursprünglich die
RTO-Anforderung an den gemeinsamen Bus 108 ausgegeben hat.
-
Wie in 7 abgebildet
kann der Kohärenzwandler 200 eine
RTO-ähnliche
Transaktion unter Verwendung der XRTO-Transaktion des X-Protokolls
ausgeben, um die exklusive Kopie des Speicherblocks anzufordern,
die aktuell von einer der externen Einrichtungen im Cache gehalten
wird. Wenn es mehrere externe Einrichtungen gibt, die an den Kohärenzwandler 200 angeschlossen
sind, kann bei dem Kohärenzwandler 200 nach
einer Ausführungsform
eine herkömmliche
Logik zur Verfügung
stehen, um es dem Kohärenzwandler 200 zu
ermöglichen
zu bestimmen, welche externe Einrichtung aktuell die gewünschte exklusive
Kopie des angeforderten Speicherblocks hält.
-
Die angeforderte Kopie des Speicherblocks
wird dann von der externen Einrichtung, die sie aktuell hält, an den
Kohärenzwandler 200 zurückgegeben
(unter Verwendung des Kommandos XRTO data, das analog zu dem zuvor
erwähnten
RTO data ist, außer
daß es
mittels des X-Protokolls
ausgeführt
wird). Ferner wird die externe Kopie, die zuvor von der externen
Einrichtung im Cache gespeichert wurde, zu einer ungültigen Kopie
herabgestuft. Diese Herabstufung wird in dem übereinstimmenden Tag in dem
Mithör-Tag-Array 250 nachgeführt, wodurch
der Zustand auf I geändert
wird (Neuer Zustand = I). Nachdem der Kohärenzwandler 200 die
exklusive Kopie des angeforderten Speicherblocks von der externen
Einrichtung empfangen hat, die sie zuvor in den Cache gestellt hat,
formuliert der Kohärenzwandler 200 eine
Antwort auf das ursprüngliche RTO,
zum Beispiel unter Verwendung einer Antwort RTO data in einem Format ähnlich dem
in 5 abgebildeten, um
die angeforderte exklusive Kopie des angeforderten Speicherblocks
an den gemeinsamen Bus 108 zur Weiterleitung an die Einheit
zu liefern, die ursprünglich
die RTO-Speicherzugriffsanforderung
ausgegeben hat.
-
RTS-Anforderung
auf dem Bus
-
Wenn die Speicherzugriffsanforderung
auf dem gemeinsamen Bus 108 eine Anforderung einer gemeinsam
genutzten, nur lesbaren Kopie eines Speicherblocks darstellt, d.
h. ein RTS (das erste RTS) und der aktuelle Zustand des übereinstimmenden
Tag gleich I (invalid, ungültig)
ist, ignoriert der Kohärenzwandler 200 die
ausstehende RTS-Speicherzugriffsanforderung auch dann, wenn es eine Übereinstimmung
zwischen der ankommenden Adresse und einer der Adressen gibt, die
in den Tags des Mithör-Tag-Array 250 gespeichert sind.
Wenn andererseits der aktuelle Zustand des übereinstimmenden Tag gleich
S ist (d. h. eine oder mehrere externe Einrichtungen halten aktuell
gemeinsam genutzte, nur lesbare Kopien des angeforderten Speicherblocks
im Cache), kann der Kohärenzwandler 200 nach
einer Ausführungsform
die gemeinsam genutzte, nur lesbare Kopie des angeforderten Speicherblocks
vom Computerknoten 100 selbst erhalten, z. B. durch Ausgeben
einer RTS-Anforderung an den gemeinsamen Bus 108 (die zweite
RTS-Anforderung). Nachdem der Kohärenzwandler 200 die
gemeinsam genutzte, nur lesbare Kopie vom Computerknoten 100 erhalten
hat (mittels der Antwort RTS data auf das zweite RTS), leitet er
dann die Kopie an den gemeinsamen Bus 108 zur Weiterleitung
an die Buseinheit weiter, die ursprünglich das RTS-Kommando ausgegeben
hat (mittels der Antwort RTS data auf das erste RTS).
-
Wenn die Speicherzugriffsanforderung
auf dem gemeinsamen Bus 108 ein RTS ist und der aktuelle Zustand
des übereinstimmenden
Tag gleich E ist, kann der Kohärenzwandler 200 die
Kopie des Speicherblocks erhalten, die aktuell exklusiv im Besitz
einer der externen Einrichtungen ist. Ferner kann der Kohärenzwandler 200 diese
externe Kopie zu einer gemeinsam genutzten Kopie herabstufen und
die Daten an den gemeinsamen Bus 108 zur Weiterleitung
an die Einheit zurückgeben,
die ursprünglich
die RTS-Speicherzugriffsanforderung ausgegeben hat. Um das Vorstehende
zu bewerkstelligen, kann der Kohärenzwandler 200 eine
RTS-ähnliche
Transaktion des X-Protokolls (XRTS) an die externe Einrichtung ausgeben,
die aktuell den angeforderten Speicherblock exklusiv besessen hat.
Diese externe Einrichtung gibt die Kopie, die sie zuvor als eine
exklusive Kopie besitzt, an den Kohärenzwandler 200 (XRTS
data) und stuft auch die externe Kopie von einer exklusiven Kopie
zu einer gemeinsam genutzten Kopie herab (Neuer Zustand = S in dem übereinstimmenden
Tag) Wenn der Kohärenzwandler 200 die
Kopie des Speicherblocks von der externen Einrichtung empfängt, kann
er diese Kopie an den gemeinsamen Bus 108 zur Weiterleitung
an die Einheit, die ursprünglich die
RTS-Speicherzugriffsanforderung ausgegeben hat, weiterleiten (mittels
des Kommandos RTS data).
-
WB-Anforderung
auf dem Bus
-
Wenn die Speicherzugriffsanforderung
auf dem gemeinsamen Bus 108 eine Zurückschreib-(Write Back, WB) Anforderung darstellt,
d. h. eine Anforderung, die anzeigt, daß eine andere an den gemeinsamen Bus 108 angeschlossene
Buseinheit als der Kohärenzwandler 200 die
exklusive Kopie des Speicherblocks, den er aktuell besitzt, zurückschreiben
möchte.
In dieser Situation hängt
die Antwort des Kohärenzwandlers 200 vom
Zustand der Kopie des Speicherblocks ab, die aktuell von der externen
Einrichtung im Cache gehalten wird. Im allgemeinen besitzt die Einheit,
die die Zurückschreib-Speicherzugriffsanforderung
ausgibt, die exklusive Kopie dieses Speicherblocks und jedwede Kopie,
die von einer externen Einrichtung vorher im Cache gehalten worden
sein mag, muß zu
dem Zeitpunkt, zu dem die Zurückschreib-Speicherzugriffsanforderung
von ihrem Besitzer auf dem gemeinsamen Bus 108 geltend
gemacht wird, ungültig
sein. Konsequenterweise sollte der aktuelle Zustand in dem übereinstimmenden
Tag, wenn es eines gibt, gleich I (invalid, ungültig) sein, in welchem Fall
der Kohärenzwandler 200 nichts
tut und die ausstehende Zurückschreib-Transaktion
auf dem gemeinsamen Bus 108 ignoriert.
-
Wenn aus irgendeinem Grund der aktuelle
Zustand eines übereinstimmenden
Tag gleich S oder gleich E ist, würde eine Fehlerbedingung erklärt, da es
keine andere gemeinsam genutzte oder exklusive Kopie in dem System
geben kann, wenn die Zurückschreib-Einheit
bereits eine exklusive Kopie des Speicherblocks hat. Die Auflösung dieser
Fehlerbedingung ist herkömmlich
und kann zum Beispiel das Kennzeichnen des Fehlers und Durchführen eines
Zurücksetzens
der Software und/oder der Hardware des Systems beinhalten.
-
Der Kohärenzwandler 200 interagiert
nicht nur mit den Verarbeitungsknoten innerhalb des Computerknotens
100, um auf Speicherzugriffsanforderungen zu antworten, die von
diesen Verarbeitungsknoten ausgegeben wurden, er interagiert auch
mit den externen Einrichtungen, z. B. mit einer der externen Einrichtungen 202, 204 und 206,
um die Speicherzugriffsanforderungen zu bedienen, die sich auf Speicherblöcke mit
lokalen physikalischen Adressen innerhalb des Computerknotens 100 beziehen. 8 stellt ausgewählte Transaktionen
gemäß einer
Ausführungsform
dar, die von dem Kohärenzwandler 200 als
Reaktion auf Speicherzugriffsanforderungen von einer der externen
Einrichtungen durchgeführt
werden.
-
In 8 werden
die Speicherzugriffsanforderungen von einer der externen Einrichtungen,
z. B. von einer der externen Einrichtungen 202, 204 oder 206,
an den Kohärenzwandler 200 ausgegeben.
Wenn eine andere externe Einrichtung aktuell die benötigte Kopie
des angeforderten Speicherblocks im Cache hält, kann diese Speicherzugriffsanforderung
von der bei dem Kohärenzwandler 200 zur
Verfügung
stehenden Logikschaltung behandelt werden, ohne die Beteiligung
des bzw. die Beachtung durch den Kohärenzwandler(s) 200 selbst
zu benötigen.
-
Wenn andererseits eine andere externe
Einrichtung nicht die gültige
Kopie des angeforderten Speicherblocks hat, um die externe Speicherzugriffsanforderung
zu bedienen, dann veranlaßt
der Kohärenzwandler 200,
daß eine
Speicherzugriffsanforderung auf dem gemeinsamen Bus 108 unter
Verwendung eines Protokolls erscheint, das für den Computerknoten 100 passend
ist, so daß der
Kohärenzwandler 200 die
benötigte
Kopie des angeforderten Speicherblocks im Namen der anfordernden
externen Einrichtung erhalten kann. Da ferner eine Kopie des Speicherblocks
nun von der externen Einrichtung im Cache gehalten wird, wird dieser
Speicherblock nun in einem Tag in dem Mithör-Tag-Array 250 des
Kohärenzwandlers 200 verfolgt.
-
Nach einer Ausführungsform setzt der Kohärenzwandler
immer das Besitzflag bei Bustransaktionen für Blöcke, die extern als exklusiv
im Cache gehalten werden oder extern als gemeinsam genutzt in den
Cache aufgenommen werden können.
Dies ermöglicht
es vorteilhafterweise, daß der
Kohärenzwandler
sich mehr Zeit nimmt, solche Anforderungen richtig zu behandeln.
-
XRTO-Anforderung
-
In 8 stellt
der Kohärenzwandler 200 zuerst
fest, ob die Adresse des angeforderten Speicherblocks mit einer
der in dem Mithör-Tag-Array 250 des
Kohärenzwandlers 200 gespeicherten
Adressen übereinstimmt, wenn
eine externe Einrichtung eine Speicherzugriffsanforderung ausgibt,
um eine exklusive Kopie eines Speicherblocks mit einer lokalen physikalischen
Adresse innerhalb des Computerknotens 100, z. B. Speicherblock 112(a),
zu erhalten. Wenn es eine Übereinstimmung
gibt, wird dann der aktuelle Zustand des Tag, das mit der ankommenden
Adresse übereinstimmt,
d. h. des übereinstimmenden
Tag, nachgeprüft,
um festzustellen, ob eine externe Einrichtung, z. B. irgendeine
der externen Einrichtungen, die mit dem Kohärenzwandler 200 verbunden
sind, eine Kopie des angeforderten Speicherblocks im Cache hält.
-
Wenn der aktuelle Zustand in dem übereinstimmenden
Tag gleich I (invalid, ungültig)
ist, fährt
der Kohärenzwandler 200 fort,
den angeforderten Speicherblock von dem gemeinsamen Bus 108 zu
erhalten. Das liegt daran, daß ein
aktueller Zustand "ungültig" (I) anzeigt, daß keine
der externen Einrichtungen aktuell eine gültige (sei es eine gemeinsam
genutzte, nur lesbare Kopie oder eine exklusive) Kopie des angeforderten Speicherblocks
im Cache hält.
Da ferner der angeforderte Speicherblock von der anfordernden externen
Einrichtung, z. B. der I/O-Einrichtung 202, in den Cache aufgenommen
wird, nachdem die aktuelle Speicherzugriffsanforderung bedient wurde,
muß dieser
angeforderte Speicherblock innerhalb des Mithör-Tag-Array 250 des
Kohärenzwandlers 200 verfolgt
werden, so daß die
nächste
Speicherzugriffsanforderung, die sich auf diesen Speicherblock bezieht,
von dem Kohärenzwandler 200 im
Namen der externen Einrichtung, z. B. der I/O- Einrichtung 202, bedient werden
kann, die dann eine exklusive (und möglicherweise geänderte)
Kopie hält.
-
Um den im Cache gehaltenen Speicherblock
in dem Mithör-Tag-Array 250 zu
verfolgen, muß möglicherweise
ein Tag innerhalb des Mithör-Tag-Array 250 belegt
werden, um die Adresse des im Cache gehaltenen Speicherblocks zusammen
mit dem Zustand der Kopie (z. B. E, S oder I) zu speichern. Wenn
es ein nicht verwendetes Tag in dem Mithör-Tag-Array 250 gibt,
z. B. eines der Tags einen aktuellen Zustand "ungültig" hat oder einfach
nicht verwendet wird, kann dieses unbenutzte Tag zum Verfolgen des
neu im Cache gehaltenen Speicherblocks eingesetzt werden. 8 zeigt diese Situation,
in der das alte Tag den Zustand I hat und keine Aktion benötigt wird,
um das Tag für
eine Verwendung verfügbar
zu machen.
-
Wenn es andererseits nicht verwendete
Tags in dem Mithör-Tag-Array 250 gibt,
kann die Ausführungsform
die Belegung bzw. die Zuordnung eines Tag rückgängig machen, so daß es verwendet
werden kann, um den neu im Cache gehaltenen Speicherblock zu verfolgen.
Bei einem aktuell gültigen
Tag kann die Zuordnung rückgängig gemacht
werden, indem die entsprechende, im Cache gehaltene, externe Kopie
des Speicherblocks in das Speichermodul 110 zurückgeschrieben
wird. Die Auswahl eines geeigneten, extern im Cache gehaltenen Speicherblocks
zum Zurückschreiben
kann unter Verwendung irgendeiner herkömmlichen Technik, z. B. "first in first out" (FIFO) oder "zuletzt verwendet" (last recently used,
LRU), durchgeführt
werden.
-
Wenn das Tag, für das die Zuordnung rückgängig gemacht
werden soll, aktuell einen Zustand S hat, d. h. eine externe Einrichtung
hält aktuell
im Cache eine gemeinsam genutzte, nur lesbare Kopie des Speicherblocks,
der dem Tag entspricht, für
das die Zuordnung rückgängig gemacht
werden soll, weist der Kohärenzwandler 200 lediglich
diese externe Einrichtung an, ihre gemeinsam genutzte, nur lesbare
Kopie ungültig
zu machen (mittels des XINV-Kommandos des X-Protokolls). Auf die
Bestätigung
hin, daß die
externe Einrichtung ihre gemeinsam genutzte, nur lesbare Kopie wie
angefordert ungültig
gemacht hat (mittels des XINV_ack-Kommandos des X-Protokolls), kann
das Tag, dessen Zuordnung rückgängig gemacht
wurde und das nun einen Zustand I hat, dann zum Verfolgen des neu
im Cache gehaltenen Speicherblocks eingesetzt werden.
-
Wenn andererseits das Tag, für das die
Zuordnung rückgängig gemacht
werden soll, aktuell einen Zustand E hat, d. h. eine externe Einrichtung
hält aktuell
im Cache eine exklusive (und möglicherweise
geänderte) Kopie
des Speicherblocks, der dem Tag entspricht, für das die Zuordnung rückgängig gemacht
werden soll, erhält
der Kohärenzwandler 200 eine
Kopie dieser externen, im Cache gehaltenen, exklusiven Kopie und
stuft ferner diese externe Kopie von einer exklusiven zu einer ungültigen Kopie
zurück
(mittels XRTO des X-Protokolls). Auf den Empfang der exklusiven
(und möglicherweise
geänderten)
Kopie des Speicherblocks und auf die Bestätigung hin, daß die externe
Einrichtung tatsächlich
ihre externe, exklusive Kopie wie angefordert ungültig gemacht
hat (mittels des XRTO data-Kommandos), führt der Kohärenzwandler 200 dann
ein Zurückschreiben
durch (durch Ausgabe einer WB-Anforderung gefolgt von dem WB_data-Kommando
an den gemeinsamen Bus 108). Daraufhin kann das Tag, dessen
Zuordnung rückgängig gemacht
wurde und das nun einen Zustand I hat, zum Verfolgen des neu im
Cache gehaltenen Speicherblocks eingesetzt werden.
-
Gemäß dem Fall in 8, bei dem es eine XRTO-Speicherzugriffsanforderung
von einer externen Einrichtung gibt und der aktuelle Zustand des übereinstimmenden
Tag gleich I ist oder es kein Tag gibt, das übereinstimmt, agiert der Kohärenzwandler 200 als
eine andere an den gemeinsamen Bus 108 angeschlossene Buseinheit,
d. h. er kommuniziert mit dem gemeinsamen Bus 108 unter
Verwendung eines Protokolls, das für den Computerknoten 100 geeignet
ist, um eine Speicherzugriffsanforderung einer exklusiven Kopie
des angeforderten Speicherblocks auszugeben. Mit anderen Worten
gibt der Kohärenzwandler
einfach eine RTO-Speicherzugriffsanforderung an den gemeinsamen
Bus 108 aus.
-
Das Vorliegen der Anfordern-um-zu-Besitzen-
bzw. Request-To-Own- (RTO) Speicherzugriffsanforderung auf dem gemeinsamen
Bus 108 veranlaßt
eine der Buseinheiten, z. B. einen der Verarbeitungsknoten 102, 104 und 106 oder
das Speichermodul 110, mit der jüngsten Kopie des angeforderten
Speicherblocks zu antworten (RTO data-Transaktion in 8). Nachdem der Kohärenzwandler 200 die
exklusive Kopie des angeforderten Speicherblocks von dem gemeinsamen
Bus 108 empfangen hat, leitet er daraufhin diese exklusive Kopie
an die anfordernde externe Einrichtung unter Verwendung eines Protokolls
weiter, das zum Kommunizieren mit der anfordernden externen Einrichtung
geeignet ist (hier verallgemeinert als das XRTO data-Kommando des
X-Protokolls). Ferner wird der neue Zustand des Tag, das diesen
angeforderten Speicherblock verfolgt, nun zum Zustand E hochgestuft,
was anzeigt, daß eine
externe Einrichtung aktuell eine exklusive (und möglicherweise
geänderte)
Kopie dieses Speicherblocks im Cache hält.
-
Wenn eine der externen Einrichtungen,
z. B. die I/O-Einrichtung 202, eine Lesen-um-zu-Besitzen- bzw. Read-To-Own-Speicherzugriftsanforderung
(unter Verwendung von XRTO des X-Protokolls)
für einen
gegebenen Speicherblock ausgibt und eine gemeinsam genutzte, nur
lesbare Kopie dieses Speicherblocks bereits bei einer verwandten
externen Einrichtung, z. B. der Kohärenzdomänen-Einrichtung 204,
im Cache gehalten wird, gäbe
es bereits ein Tag in dem Mithör-Tag-Array 250 zum
Verfolgen dieses Speicherblocks. Der Zustand eines solchen Tag spiegelt
jedoch eine S-Kopie wider, da die verwandte externe Einrichtung
nur eine gemeinsam genutzte, nur lesbare Kopie hat. In diesem Fall
gibt es keinen Bedarf, ein neues Tag zu belegen, um den angeforderten
Speicherblock zu verfolgen. Der Kohärenzwandler muß immer
noch sowohl alle anderen gemeinsam genutzten Kopien dieses Speicherblocks
in dem Computerknoten 100 und bei verwandten externen Einrichtungen
ungültig
machen als auch den Zustand des übereinstimmenden
Tag auf einen E-Zustand hochstufen.
-
Um die gemeinsam genutzten Kopien
bei verwandten externen Einrichtungen ungültig zu machen, kann der Kohärenzwandler 200 ein
Ungültig-Machen-
bzw. Invalidate-Kommando (XINV) an diese verwandten externen Einrichtungen
ausgeben und auf die Bestätigungsnachricht
(XINV_ack) warten. Um gemeinsam genutzte, nur lesbare Kopien des
angeforderten Speicherblocks bei den Buseinheiten in dem Computerknoten 100 ungültig zu
machen, gibt der Kohärenzwandler 200 eine
Speicherzugriftsanforderung zum Zwecke des Besitzens (TRO-Anforderung)
auf dem ge meinsamen Bus 108 aus. Dieses RTO-Kommando erhält bzw.
beschafft sowohl eine Kopie des angeforderten Speicherblocks (RTO
data-Transaktion) wie es auch die gemeinsam genutzten, nur lesbaren
Kopien ungültig
macht, die von Buseinheiten in dem Computerknoten 100 im
Cache gehalten werden.
-
Nachdem der Kohärenzwandler 200 die
Kopie des angeforderten Speicherblocks vom gemeinsamen Bus 108 empfangen
hat (mittels der RTO data-Transaktion), kann der Kohärenzwandler 200 diese
Kopie an die anfordernde externe Einrichtung weiterleiten, um die
XRTO-Speicherzugriffsanforderung
zu bedienen (XRTO data-Transaktion). Ferner kann der Zustand, der
dem übereinstimmenden
Tag in dem Mithör-Tag-Array 250 zugeordnet
ist, von einem S-(shared, gemeinsam genutzt)-Zustand zu einem E-(exklusiv)-Zustand
hochgestuft werden.
-
Wenn die von dem Kohärenzwandler 200 empfangene
Speicherzugriffsanforderung eine Anforderung eines exklusiven Speicherblocks
(XRTO) von einer externen Einrichtung ist und eine verwandte externe
Einrichtung aktuell die exklusive Kopie dieses Speicherblocks im
Cache hält,
erhält
die bei dem Kohärenzwandler 200 zur
Verfügung
stehende Logikschaltung vorzugsweise den angeforderten Speicherblock
von der verwandten externen Einrichtung, um die XRTO-Anforderung
zu erfüllen,
ohne die Beteiligung des Kohärenzwandlers 200 selbst
erforderlich zu machen. Als eine allgemeine Regel können für den Fall,
daß es
mehr als eine externe Einrichtung gibt, diese nach einer Ausführungsform
Speicherzugriffsanforderungen lösen,
indem sie sich untereinander Kopien von Speicherblöcken übergeben,
bevor sie sie von dem gemeinsamen Bus 108 (über den Kohärenzwandler 200)
anfordern. Wenn andererseits die XRTO-Speicherzugriffsanforderung
eines Speicherblocks von einer externen Einrichtung kommt, die aktuell
bereits die exklusive Kopie desselben angeforderten Speicherblocks
im Cache hält,
liegt eine Fehlerbedingung vor wie in 8 wiedergegeben.
Die Fehlerbedingung kann unter Verwendung einer Vielzahl von herkömmlichen
Techniken behandelt werden, z. B. die Fehlerbedingung kennzeichnen
bzw. markieren und/oder ein Zurücksetzen
der Software oder der Hardware durchführen. Ferner könnte der
Kohärenzwandler
in einer Ausführungsform
XRTOs für
extern im Cache gehaltene Blöcke
behandeln, indem er die Anforderungen an verwandte Einrichtungen
weiterleitet.
-
XRTS-Anforderung
-
Wenn eine externe Einrichtung eine
Speicherzugriffsanforderung ausgibt, um eine gemeinsam genutzte,
nur lesbare Kopie eines Speicherblocks mit einer lokalen physikalischen
Adresse innerhalb des Computerknotens 100 wie des Speicherblocks 112(a) zu
erhalten (mittels eines XRTS-Kommandos), stellt der Kohärenzwandler 200 zuerst
fest, ob die Adresse des angeforderten Speicherblocks mit einer
der Adressen übereinstimmt,
die in dem Mithör-Tag-Array 250 des
Kohärenzwandlers 200 gespeichert
sind. Wenn es eine Übereinstimmung
gibt, wird daraufhin das übereinstimmende
Tag überprüft, um festzustellen,
ob eine externe Einrichtung, z. B. irgendeine der an den Kohärenzwandler 200 angeschlossenen
externen Einrichtungen, eine Kopie des angeforderten Speicherblocks
im Cache hält.
-
Wenn der aktuelle Zustand des übereinstimmenden
Tag gleich I (invalid, ungültig)
ist, fährt
der Kohärenzwandler 200 fort,
um den angeforderten Speicherblock von dem gemeinsamen Bus 108 zu
erhalten. Das liegt daran, daß ein
aktueller Zustand "ungültig" (I) anzeigt, daß keine
der externen Einrichtungen aktuell eine gültige (sei es eine gemeinsam
genutzte, nur lesbare Kopie oder eine exklusive) Kopie des angeforderten Speicherblocks
im Cache hält.
Da ferner der angeforderte Speicherblock von der anfordernden externen
Einrichtung, z. B. der I/O-Einrichtung 202, in den Cache
aufgenommen wird, nachdem die aktuelle Speicherzugriffsanforderung
bedient wurde, muß dieser
angeforderte Speicherblock innerhalb des Mithör-Tag-Array 250 des
Kohärenzwandlers 200 verfolgt
bzw. nachgeführt
werden. Ein Tag innerhalb des Mithör-Tag-Array 250 muß belegt
bzw. zugeordnet werden, um die Adresse des im Cache gehaltenen Speicherblocks
zusammen mit dem Zustand der Kopie (d. h. S) zu speichern. Wenn
es ein nicht verwendetes Tag in dem Mithör-Tag-Array 250 gibt, z. B. eines
der Tags einen Zustand "ungültig" hat oder einfach
nicht verwendet wird, kann dieses nicht verwendete Tag zum Verfolgen
des neu im Cache gehaltenen Speicherblocks eingesetzt werden. 8 zeigt diese Situation,
bei der das alte Tag einen Zustand I hat und keine Aktion nötig ist,
um das Tag zur Verwendung verfügbar
zu machen.
-
Wenn es andererseits keine nicht
verwendeten Tags in dem Mithör-Tag-Array 250 gibt,
macht das Verfahren vorzugsweise die Belegung bzw. die Zuordnung
eines Tag rückgängig, so
daß es
zum Verfolgen des neu im Cache gehaltenen Speicherblocks verwendet
werden kann. Die benötigten
Aktionen zum Rückgängig-Machen
der Zuordnung eines aktuell gültigen
Tag wird vorstehend in Verbindung mit der XRTO-Transaktion diskutiert.
-
Wieder gemäß dem Fall in 8, bei dem eine XRTS-Speicherzugriffsanforderung
von einer externen Einrichtung vorliegt und der aktuelle Zustand
des übereinstimmenden
Tag gleich I ist oder es kein Tag gibt, das übereinstimmt, kann der Kohärenzwandler 200 einfach
als eine andere an den gemeinsamen Bus 108 angeschlossene
Buseinheit agieren, d. h. er kommuniziert mit dem gemeinsamen Bus 108 unter
Verwendung eines Protokolls, das für den Computerknoten 100 geeignet
ist, um eine Speicherzugriffsanforderung einer gemeinsam genutzten,
nur lesbaren Kopie des angeforderten Speicherblocks auszugeben.
Mit anderen Worten gibt der Kohärenzwandler
einfach eine RTS-Speicherzugriffsanforderung an den gemeinsamen
Bus 108 aus.
-
Das Vorliegen der Speicherzugriffsanforderung
zum Zwecke des gemeinsamen Verwendens (RTS) auf dem gemeinsamen
Bus 108 veranlaßt
eine der Buseinheiten, z. B. einen der Verarbeitungsknoten 102, 104 und 106 oder
das Speichermodul 110, mit der gemeinsam genutzten Kopie
des angeforderten Speicherblocks zu antworten (RTS data-Transaktion
in 8). Nachdem der Kohärenzwandler 200 die
gemeinsam genutzte, nur lesbare Kopie des angeforderten Speicherblocks
von dem gemeinsamen Bus 108 empfangen hat, leitet er daraufhin
diese gemeinsam genutzte, nur lesbare Kopie an die anfordernde externe
Einrichtung unter Verwendung eines Protokolls weiter, das zum Kommunizieren
mit der anfordernden externen Einrichtung geeignet ist (hier verallgemeinert
als das XRTS data-Kommando des X-Protokolls). Ferner wird der neue
Zustand des Tag, das diesen angeforderten Speicherblock verfolgt,
nun zum Zustand S hochgestuft, was anzeigt, daß eine externe Einrichtung
aktuell eine gemeinsam genutzte, nur lesbare Kopie dieses Speicherblocks
im Cache hält.
-
Wenn eine der externen Einrichtungen,
z. B. die I/O-Einrichtung 202, eine Speicherzugriffsanforderung für das Lesen
zum gemeinsamen Verwenden (unter Verwendung von XRTS des X-Protokolls) für einen
gegebenen Speicherblock ausgibt und eine gemeinsam genutzte, nur
lesbare Kopie dieses Speicherblocks bereits von einer verwandten
externen Einrichtung, z. B. der Kohärenzdomänen-Einrichtung 204,
im Cache gehalten wird, gäbe
es bereits ein Tag in dem Mithör-Tag-Array 250 zum Verfolgen
dieses Speicherblocks. Ferner spiegelt der Zustand eines solchen
Tag eine S-Kopie wider. In diesem Fall gibt es keinen Bedarf, ein
neues Tag zu belegen, um den angeforderten Speicherblock zu verfolgen.
-
Nach einer Ausführungsform kann die dem Kohärenzwandler 200 zugeordnete
Logikschaltung die gemeinsam genutzte, nur lesbare Kopie des angeforderten
Speicherblocks von der verwandten externen Einrichtung erhalten,
um die ausstehende XRTO-Anforderung zu erfüllen. Nach dieser Ausführungsform
ist keine Aktion auf dem gemeinsamen Bus 108 erforderlich.
Nach einer anderen Ausführungsform
kann der Kohärenzwandler 200 die
angeforderte gemeinsam genutzte, nur lesbare Kopie des angeforderten
Speicherblocks von den Buseinheiten in dem Computerknoten 100 erhalten,
indem er, wie in 8 gezeigt,
eine Speicherzugriffsanforderung für das Lesen zum Zwecke des
gemeinsamen Verwendens (RTS) an den gemeinsamen Bus 108 ausgibt.
-
Nachdem der Kohärenzwandler 200 die
gemeinsam genutzte, nur lesbare Kopie des angeforderten Speicherblocks
von dem gemeinsamen Bus 108 empfangen hat (mittels der
RTS data-Transaktion),
kann der Kohärenzwandler 200 diese
Kopie an die anfordernde externe Einrichtung weiterleiten, um die
XRTS-Speicherzugriffsanforderung zu bedienen (XRTS data-Transaktion).
Ferner kann der Zustand, der dem übereinstimmenden Tag in dem
Mithör-Tag-Array 250 zugeordnet
ist, in einem S-(shared, gemeinsam genutzt)-Zustand beibehalten
werden.
-
Wenn die von dem Kohärenzwandler 200 empfangene
Speicherzugriffsanforderung eine Anforderung einer gemeinsam genutzten,
nur lesbaren Kopie eines Speicherblocks (XRTS) von einer externen
Einrichtung ist und eine verwandte externe Einrichtung aktuell die
exklusive Kopie dieses Speicherblocks im Cache hält, erhält die bei dem Kohärenzwandler 200 zur
Verfügung
stehende Logikschaltung vorzugsweise den angeforderten Speicherblock
von der verwandten externen Einrichtung (und stuft die zuvor vorhandene
exklusive Kopie zurück),
um die XRTS-Anforderung zu erfüllen,
ohne die Beteiligung des Kohärenzwandlers 200 selbst
erforderlich zu machen. Wenn andererseits die XRTS-Speicherzugriffsanforderung
von einer externen Einrichtung kommt, die aktuell bereits die exklusive
Kopie desselben angeforderten Speicherblocks im Cache hält, liegt
eine Fehlerbedingung vor wie in 8 dargestellt.
Die Fehlerbedingung kann unter Verwendung eine Vielzahl von herkömmlichen
Techniken behandelt werden, z. B. kann man die Fehlerbedingung kennzeichnen bzw.
markieren und/oder ein Zurücksetzen
der Software oder der Hardware durchführen.
-
XWB-Anforderung
-
Wenn die von dem Kohärenzwandler 200 empfangene
Speicherzugriftsanforderung eine Zurückschreib- bzw. Write-Back-Transaktion
ist (XWB-Transaktion des X-Protokolls), d. h. eine externe Einrichtung die
exklusive Kopie eines Speicherblocks, die sie aktuell besitzt, zurückschreiben
möchte,
hängen
die Aktionen des Kohärenzwandlers 200 von
dem Zustand der Kopie des Speicherblocks ab, die aktuell von der
externen Einrichtung im Cache gehalten wird. Generell besitzt die
externe Einrichtung, die die Zurückschreib-Transaktion
ausgibt, die exklusive Kopie dieses Speicherblocks, und der aktuelle
Zustand des übereinstimmenden Tag
in dem Mithör-Tag-Array 250 sollte
ein E-(exklusiv)-Zustand
sein. Wenn der aktuelle Zustand in dem übereinstimmenden Tag I (invalid,
ungültig)
oder S (shared, read-only, gemeinsam genutzt, nur lesbar) ist, liegt
folglich eine Fehlerbedingung vor wie in 8 abgebildet. Wiederum kann diese Fehlerbedingung
unter Verwendung eine Vielzahl von herkömmlichen Techniken behandelt
werden, einschließlich
des Kennzeichnens bzw. Markierens die Fehlerbedingung und/oder eines
Zurücksetzens
der Software oder der Hardware durchführen, Wenn der aktuelle Zustand
des übereinstimmenden
Tag in dem Mithör-Tag-Array 250 ein
E-(exklusiv)-Zustand ist,
fährt der
Kohärenzwandler 200 fort,
die zurückzuschreibenden
Daten zu empfangen (mittels des XWB_data-Kommandos des X-Protokolls),
und gibt eine WB-Speicherzugriffsanforderung
an den gemeinsamen Bus 108 aus, auf die die Daten folgen
sollen (WB_data). Ferner wird die externe Kopie des angeforderten Speicherblocks
entsprechend von eine exklusiven Kopie zu einer ungültigen Kopie
herabgestuft (Neuer Zustand = I).
-
Um die Details bezogen auf das verallgemeinerte
X-Protokoll, das von dem Kohärenzwandler 200 beim
Kommunizieren mit jeder externen Einrichtung eingesetzt wird, weiter
zu verdeutlichen, veranschaulichen die Tabellen 1 und 2 ausgewählte X-Protokoll-Anforderungen
und X-Protokoll-Antworten.
Es sollte berücksichtigt
werden, daß die
Tabellen 1 und 2 nur zu Darstellungszwecken gezeigt werden und andere
Anforderungen und Antworten abhängig
vom Bedarf ebenso vorgesehen werden können. Wie zuvor erwähnt hängt die
Anpassung der offenbarten, verallgemeinerten X-Protokoll-Transaktionen, um mit einer
spezifischen externen Kohärenzdomäne zu arbeiten,
in hohem Maße
von der Spezifikation des Protokolls ab, das von der spezifischen
externen Einrichtung eingesetzt wird, und liegt im allgemeinen im
Bereich des Fachwissens eines Fachmanns auf diesem Gebiet.
-
In Tabelle 1 werden die X-Protokoll-Anforderungen,
die von den Anforderungen repräsentier
ten Aktionen und mögliche
Antworten darauf gezeigt. In Tabelle 2 werden die X-Protokoll-Antworten
und die von den Antworten repräsentierten
Aktionen gezeigt. Tabelle 2 gibt ferner an, ob eine gegebene Antwort
von Daten begleitet wird.
-
-
-
Vorteilhafterweise ermöglichen
die Verwendung eines Kohärenzwandlers
und die eng gekoppelten Anforderungs-Antwort-Transaktionen es externen
Einrichtungen, die von dem Protokoll auf dem gemeinsamen Bus 108 des
Computerknotens 100 verschiedene Protokolle einsetzen,
Speicherblöcke
gemeinsam zu nutzen, die lokale physikalische Adressen innerhalb
des Computerknotens 100 haben. Auf diese Weise isoliert
der Kohärenzwandler 200 den
Computerknoten 100 und die externen Einrichtungen voneinander,
wodurch er es ihnen ermöglicht,
Speicherblöcke
trotz ihres Unterschiedes in den Protokollen gemeinsam zu nutzen.
Ferner macht das explizite Quittieren (handshaking), das durch die
eng gekoppelten Anforderungs-Antwort-Paare bereitgestellt wird,
diese gemeinsame Nutzung möglich,
sogar wenn die externen Einrichtungen möglicherweise jeweils mit einer
von derjenigen auf dem gemeinsamen Bus 108 verschiedenen
Geschwindigkeit betrieben werden.
-
In einem System, in dem der Kohärenzwandler 200 eine
solche gemeinsame Nutzung von Speicherblöcken ermöglicht, gibt es im Wesentlichen
keine Auswirkung auf die Leistung bzw. den Durchsatz innerhalb des
Computerknotens 100, wenn eine externe Einrichtung keinen
Speicherblock im Cache hält.
Wenn eine externe Einrichtung weniger Speicherblöcke im Cache hält als es
Tags in dem Mithör-Tag-Array 250 des
Kohärenzwandlers 200 gibt,
so ist die Auswirkung auf die Gesamtleistung des Systems ziemlich
gering. Das liegt daran, daß keine
zusätzlichen
Transaktionen, die den gemeinsamen Bus 108 verwenden, d.
h. Zurückschreiben
zum Rückgängig-Machen
der Zuordnung von Tags, benötigt
werden, um eine Speicherzugriffsanforderung zu bedienen, wenn es
weniger extern im Cache gehaltene Speicherblöcke gibt, als Tags in dem Mithör-Tag-Array 250 verfügbar sind.
-
Die Verzögerung beim Beantworten von
ausstehenden Speicherzugriffsanforderungen auf dem gemeinsamen Bus 108 liegt
zum Teil an dem Zeitverzug, der notwendig ist, damit der Kohärenzwandler 200 die Tags
in dem Mithör-Tag-Array 250 prüfen kann,
um festzustellen, ob sich der Kohärenzwandler 200 einschalten sollte,
um eine Speicherzugriffsanforderung auf dem gemeinsamen Bus 108 zu
bedienen. Angesichts dieser Tatsache kann die Gesamtverzögerung des
Systems auf einem Minimum gehalten werden, indem die passende Anzahl
von Tags in dem Mithör-Tag-Array 250 angesichts
der erwarteten Anzahl von Speicherblöcken, die zu jedem gegebenen
Zeitpunkt von den externen Einrichtungen im Cache gehalten werden
sollen, ausgewählt wird.
-
Sogar wenn es mehr Speicherblöcke gibt,
die von den externen Einrichtungen im Cache gehalten werden, als
es Tags in dem Mithör-Tag-Array 250 des
Kohärenzwandlers 200 gibt,
kann das System vorteilhafterweise immer noch die Speicherzugriffsanforderungen
bedienen, indem Zurückschreibvorgänge von
extern im Cache gehaltenen Speicherblöcken durchgeführt werden
(um die Zuordnung von Tags zum Verfolgen von extern im Cache gehaltenen
Speicherblöcken
zurückzunehmen).
Obwohl eine gewisse Leistungseinbuße damit einhergeht, wird das übergreifende
Ziel immer noch erreicht, das gemeinsame Verwenden von Speicherblöcken zwischen
dem Computerknoten 100 und den externen Einrichtungen zu
erleichtern, von denen jede ein unterschiedliches Protokoll verwenden
und mit einer unterschiedlichen Geschwindigkeit betrieben werden kann.
-
Es ist zu beachten, daß weder
die externen Einrichtungen noch der Computerknoten 100 Tags
aufnehmen müssen,
um an der gemeinsamen Nutzung des Speichers teilzunehmen. Nur der
Kohärenzwandler 200 muß Tags verwenden
und verfolgen bzw. nachführen,
um Kohärenzprobleme
zu vermeiden. Folglich ermöglicht
es vorteilhafterweise diese Funktion des Kohärenzwandlers 200,
daß ein
gegebener Computerknoten 100 mit einer großen Auswahl
von vorhandenen externen Einrichtungen arbeiten kann, um die gemeinsamen Nutzung
des Speichers zu erleichtern, ohne irgendwelche Änderungen an den externen Einrichtungen
oder an dem Computerknoten 100 zu erfordern.
-
Während
die vorliegende Erfindung im Hinblick auf beispielhafte Ausführungsformen
beschrieben wurde, erkennt man, daß es viele alternative Wege
gibt, die Verfahren und Vorrichtungen der beanspruchten Erfindung
zu implementieren. Beispielsweise können einige Systeme die Wirkung
bzw. den Effekt eines gemeinsamen Busses bereitstellen, ohne einen
physikalischen Bus zu benötigen
(z. B. ein Satz von Rundsende- bzw. Verteilkabeln). Das KSR-1 von
Kendall Square Research aus Massachusetts ist ein solches Beispiel.
Bezüge auf
einen gemeinsamen Bus sollen daher in diesem Sinne interpretiert
werden.