DE69724879T2 - Verfahren und Vorrichtung für einen Kohärenzumwandler zur Verbindung von Rechnersystemkohärenzdomänen - Google Patents

Verfahren und Vorrichtung für einen Kohärenzumwandler zur Verbindung von Rechnersystemkohärenzdomänen Download PDF

Info

Publication number
DE69724879T2
DE69724879T2 DE69724879T DE69724879T DE69724879T2 DE 69724879 T2 DE69724879 T2 DE 69724879T2 DE 69724879 T DE69724879 T DE 69724879T DE 69724879 T DE69724879 T DE 69724879T DE 69724879 T2 DE69724879 T2 DE 69724879T2
Authority
DE
Germany
Prior art keywords
memory
block
copy
external device
converter
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69724879T
Other languages
English (en)
Other versions
DE69724879D1 (de
Inventor
Erik E Hagerstein
Mark Donald Hill
David A. Wood
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Application granted granted Critical
Publication of DE69724879D1 publication Critical patent/DE69724879D1/de
Publication of DE69724879T2 publication Critical patent/DE69724879T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/082Associative directories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0826Limited pointers directories; State-only directories without pointers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/622State-only directory, i.e. not recording identity of sharing or owning nodes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

  • 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 102106 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.
  • Figure 00230001
    Tabelle 1
  • Figure 00230002
    Tabelle 2
  • 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.

Claims (15)

  1. Kohärenzwandler (200) für das Erleichtern der gemeinsamen Verwendung von Speicherblöcken (112) zwischen einem Computerknoten (100) und zumindest einer äußeren Einrichtung (202, 204, 206), wobei der Computerknoten zumindest einen Verarbeitungsknoten (102, 104, 106) und ein Speichermodul (110) aufweist, die über einen gemeinsamen Bus (108) miteinander verbunden sind, und wobei jeder der Verarbeitungsknoten in dem Computerknoten eine "Snooping-Logik" ("Erkundungslogik") aufweist, die so betreibbar ist, daß sie Speicherzugriffsanforderungen auf dem gemeinsamen Bus überwacht, wobei die Speicherblöcke an dem Computerknoten lokale physikalische Adressen haben und wobei der Kohärenzwandler so ausgestaltet ist, daß er den gemeinsamen Bus des Computerknotens mit den externen Einrichtungen (5) verbindet, mit: einer Erkundungslogik (260), die für das Verbinden des Computerknotens mit dem gemeinsamen Bus ausgelegt ist, wobei die Erkundungslogik weiterhin so ausgestaltet ist, daß sie, wenn sie mit dem gemeinsamen Bus verbunden ist, Speicherzugriffsanforderungen auf dem gemeinsamen Bus überwacht, einem Erkundungsanzeigefeld (200), welches mit der Erkundungslogik verbunden ist, wobei das Erkundungsanzeigenfeld (253258) zum Verfolgen von Speicherblöcken derjenigen Speicherblöcke, die als Cachespeicher mit der externen Einrichtung verbunden sind oder verbunden werden, wobei jede Anzeige der Anzeigen (Kennzeichnungen bzw. „Etiketten") in dem Erkundungsanzeigenfeld sowohl eine Adresse eines Speicherblockes als auch einen Zustand einer Kopie des Speicherblockes an der externen Einrichtung verfolgt, wobei der Zustand irgendeiner der Zustände exklusiv, geteilt und ungültig sein kann, und einer Protokollumformlogik (262), die für das Verbinden mit der externen Einrichtung ausgelegt ist und die mit der Erkundungslogik verbunden ist, um, wenn sie mit der externen Einrichtung verbunden ist, eine Kommunikation mit der externen Einrichtung unter Verwendung eines geeigneten Protokolls für die Kommunikation mit der externen Einrichtung freizuschalten.
  2. Kohärenzwandler nach Anspruch 1, wobei die Erkundungslogik weiterhin eine Logik aufweist, um festzustellen, ob eine erste Speicherzugriffsanforderung auf dem gemeinsamen Bus zu einem ersten Speicherblock gehört, der durch das Erkundungsanzeigenfeld verfolgt wird.
  3. Kohärenzwandler nach Anspruch 2, welcher weiterhin eine Logik für das Reagieren auf die erste Speicherzugriffsanforderung für die externe Einrichtung aufweist, wenn die erste Speicherzugriffsanforderung zu dem ersten Speicherblock gehört, welche von dem Erkundungsanzeigenfeld verfolgt wird.
  4. Kohärenzwandler nach einem der vorstehenden Ansprüche, wobei die Protokollumformlogik weiterhin eine Logik für das Bedienen einer ersten Speicherzugriftsanforderung von der externen Einrichtung aufweist, wobei der erste Speicherzugriff zu einem der Speicherblöcke gehört.
  5. Vorrichtung nach Anspruch 4, welche weiterhin eine Logik für das Aufheben der Zuordnung einer ersten Anzeige des Erkundungsanzeigenfeldes aufweist, um den einen der zu verfolgenden Speicherblöcke in dem Erkundungsanzeigenfeld freizugeben, wobei die erste Anzeige verwendet wird, um einen anderen der Speicherblöcke zu verfolgen, bevor die Zuordnung aufgehoben wird.
  6. Computersystem mit einem Computerknoten und zumindest einer externen Einrichtung, wobei der Computerknoten zumindest einen Verarbeitungsknoten und ein Speichermodul aufweist, welche über einen gemeinsamen Bus miteinander verbunden sind, wobei jeder Verarbeitungsknoten eine Erkundungslogik enthält, die so betreibbar ist, daß sie Speicherzugriftsanforderungen auf dem gemeinsamen Bus überwacht, und Speicherblöcke enthält, welche lokale physikalische Adresse an dem Computerknoten haben, wobei die externe Einrichtung und der Computerknoten in der Lage sind, die Speicherblöcke gemeinsam zu verwenden, wobei der Computerknoten einen Kohärenzwandler nach einem der vorstehenden Ansprüche aufweist.
  7. Verfahren, welches in einem Computersystem angewendet wird, das einen Computerknoten und zumindest eine externe Einrichtung (202, 204, 206) hat, wobei der Computerknoten zumindest einen Verarbeitungsknoten (102, 104, 106) und ein Speichermodul (110) hat, die über einen gemeinsamen Bus (108) miteinander verbunden sind, wobei jeder Verarbeitungsknoten in dem Computerknoten eine Erkundungslogik aufweist, die so betreibbar ist, daß sie Speicherzugriffsanforderungen auf dem gemeinsamen Bus überwacht, wobei das Verfahren eine externe Einrichtung in der Weise freischaltet, daß sie Speicherblöcke (112) gemeinsam verwendet, welche lokale physikalische Adressen in dem Speichermodul an dem Computerknoten haben, unabhängig davon, ob die externe Einrichtung und der gemeinsame Bus beide ein gemeinsames Protokoll verwenden und unabhängig davon, ob die externe Einrichtung und der gemeinsame Bus beide mit derselben Geschwindigkeit arbeiten, wobei das Verfahren einen Kohärenzwandler (200) nach einem der Ansprüche 1 bis 5 verwendet, welcher zwischen den gemeinsamen Bus und die externe Einrichtung geschaltet ist, wobei das Verfahren aufweist: Überwachen von Speicherzugriffsanforderungen auf dem gemeinsamen Bus unter Verwendung einer Erkundungslogik (260) des Kohärenzwandlers, durch den Kohärenzwandler Erhalten einer ersten Kopie eines ersten Speicherblockes für die externe Einrichtung, welcher eine lokale physikalische Adresse in dem Speichermodul aufweist, wobei das Erhalten umfaßt: unter Verwendung des Kohärenzwandlers Empfangen einer ersten Speicherzugriftsanforderung für den ersten Speicherblock von der externen Einrichtung, unter Verwendung des Kohärenzwandlers Beschaffen der ersten Kopie des ersten Speicherblockes von dem gemeinsamen Bus, unter Verwendung einer Anzeige aus dem Erkundungsanzeigenfeld (250) des Kohärenzwandlers Verfolgen eines Zustandes der ersten Kopie des ersten Speicherblockes an der externen Einrichtung, wobei der Zustand irgendeiner der Zustände exklusiv, gemeinsam verwendet und ungültig sein kann, und wobei das Erkundungsanzeigenfeld Anzeigen (253258) hat, um nur Kopien von Speicherblöcken zu verfolgen, die extern cachegespeichert oder gespeichert worden sind, und Senden der ersten Kopie des ersten Speicherblockes von dem Kohärenzwandler zu der externen Einrichtung, wobei die Protokollumwandlungslogik (262) des Kohärenzwandlers den Computerknoten bei irgendeiner Protokolldifferenz zwischen einem ersten Protokoll, welches durch die externe Einrichtung verwendet wird, und einem zweiten Protokoll, welches durch den gemeinsamen Bus verwendet wird, isoliert.
  8. Verfahren nach Anspruch 7, wobei der Schritt des Erhaltens einer ersten Kopie des ersten Speicherblockes weiterhin den Schritt aufweist, daß die Zuordnung der Anzeige in dem Erkundungsanzeigenfeld vor dem Schritt des Verfolgens aufgehoben wird.
  9. Verfahren nach Anspruch 8, wobei der Schritt des Aufhebens der Zuordnung der Anzeige aufweist: unter Verwendung des Kohärenzwandlers Beschaffen einer ersten Kopie eines zweiten Speicherblockes aus der externen Einrichtung, wobei der zweite Speicherblock sich von dem ersten Speicherblock unterscheidet, unter Verwendung des Kohärenzwandlers Ungültigmachen einer Kopie des zweiten Speicherblockes an der externen Einrichtung, und unter Verwendung des Kohärenzwandlers Schreiben der ersten Kopie des zweiten Speicherblockes in das zweite Speichermodul über den gemeinsamen Bus, wodurch die Zuordnung der Anzeige aufgehoben wird.
  10. Verfahren nach einem der Ansprüche 7 bis 9, welches weiterhin den Schritt aufweist, daß durch den Kohärenzwandler auf eine zweite Speicherzugriffsanforderung auf dem gemeinsamen Bus für die externe Einrichtung reagiert wird, was aufweist: Verwenden der Überwachung der Speicherzugriffsanforderungen auf den gemeinsamen Bus, um zu bestimmen, ob eine zweite Speicherzugriffsanforderung der Speicherzugriffsanforderungen auf dem gemeinsamen Bus zu irgendeinem der Speicherblöcke gehört, die in Anzeigen des Erkundungsanzeigenfeldes verfolgt werden, und unter Verwendung des Kohärenzwandlers Reagieren auf die zweite Speicherzugriffsanforderung, wenn die zweite Speicherzugriffsanforderung zu einem zweiten Speicherblock gehört, wobei der zweite Speicherblock einen der Speicherblöcke repräsentiert, welche in den Anzeigen des Erkundungsanzeigenfeldes verfolgt werden.
  11. Verfahren nach Anspruch 10, wobei der Kohärenzwandler nur dann auf die zweite Speicherzugriffsanforderung reagiert, wenn eine Anzeige, welche den zweiten Speicherblock in dem Erkundungsanzeigenfeld verfolgt, anzeigt, daß eine erste Kopie des zweiten Speicherblockes an der externen Einrichtung gültig ist.
  12. Verfahren nach Anspruch 11, wobei die zweite Speicherzugriftsanforderung eine Anforderung nach einer exklusiven Kopie ist und die Anzeige, welche den zweiten Speicherblock verfolgt, anzeigt, daß die erste Kopie des zweiten Speicherblockes an der externen Einrichtung eine exklusive Kopie des zweiten Speicherblockes ist, wobei der Schritt des Reagierens auf die zweite Speicherzugriftsanforderung aufweist: unter Verwendung des Kohärenzwandlers Erhalten einer zweiten Kopie des zweiten Speicherblockes von der ersten Kopie des zweiten Speicherblockes an der externen Einrichtung, Ungültigmachen der ersten Kopie des zweiten Speicherblockes an der externen Einrichtung, und Weiterleiten der zweiten Kopie des zweiten Speicherblockes von dem Kohärenzwandler an den gemeinsamen Bus, um einen Vorläufer der zweiten Speicherzugriffsanforderung freizuschalten, um die zweite Kopie des zweiten Speicherblockes zu erhalten.
  13. Verfahren nach Anspruch 11, wobei die zweite Speicherzugriffsanforderung eine Anforderung nach einer exklusiven Kopie ist und die Anzeige, welche den zweiten Speicherblock verfolgt, anzeigt, daß die erste Kopie des zweiten Speicherblockes an der externen Einrichtung eine gemeinsam verwendete Kopie des zweiten Speicherblockes ist, wobei der Schritt des Reagierens auf die Speicherzugriffsanforderung aufweist: Ungültigmachen der ersten Kopie des zweiten Speicherblockes an der externen Einrichtung, unter Verwendung des Kohärenzwandlers Erhalten einer zweiten Kopie des zweiten Speicherblockes von dem Computerknoten über den gemeinsamen Bus, unter Verwendung des Kohärenzwandlers Ungültigmachen jeglicher gültigen Kopie des zweiten Speicherblockes in dem Computerknoten, und Weiterleiten der zweiten Kopie des zweiten Speicherblockes von dem Kohärenzwandler an den gemeinsamen Bus, um einen Vorläufer der zweiten Speicherzugriffsanforderung freizuschalten, um die zweite Kopie des zweiten Speicherblockes zu erhalten.
  14. Verfahren nach Anspruch 11, wobei die zweite Speicherzugriffsanforderung eine Anforderung nach einer geteilten bzw. gemeinsam verwendeten Kopie ist und die Anzeige, welche den zweiten Speicherblock verfolgt, anzeigt, daß die erste Kopie des zweiten Speicherblockes an der externen Einrichtung eine gemeinsam verwendete Kopie des zweiten Speicherblockes ist, wobei der Schritt des Reagierens auf die Speicherzugriffsanforderung aufweist: unter Verwendung des Kohärenzwandlers Erhalten einer zweiten Kopie des zweiten Speicherblockes von dem Computerknoten über den gemeinsam verwendeten Bus, und Weiterleiten der zweiten Kopie des zweiten Speicherblockes von dem Kohärenzwandler an den gemeinsamen Bus, um einen Vorläufer der zweiten Speicherzugriffsanforderung freizuschalten, um die zweite Kopie des zweiten Speicherblockes zu erhalten.
  15. Verfahren nach Anspruch 11, wobei die zweite Speicherzugriffsanforderung eine Anforderung nach einer gemeinsam verwendeten Kopie ist und die Anzeige, welche den zweiten Speicherblock verfolgt, anzeigt, daß die erste Kopie des zweiten Speicherblockes an der externen Einrichtung eine exklusive Kopie des zweiten Speicherblockes ist, wobei der Schritt des Reagierens auf die Speicherzugriftsanforderung aufweist: unter Verwendung des Kohärenzwandlers Erhalten einer zweiten Kopie des zweiten Speicherblockes von der externen Einrichtung, Verändern der Anzeige, welche den zweiten Speicherblock verfolgt, um anzuzeigen, daß die erste Kopie des Speicherblockes an der externen Einrichtung eine gemeinsam verwendete Kopie des zweiten Speicherblockes ist, und Weiterleiten der zweiten Kopie des zweiten Speicherblockes von dem Kohärenzwandler an den gemeinsamen Bus, um einen Vorläufer der zweiten Speicherzugriffsanforderung freizuschalten, um die zweite Kopie des zweiten Speicherblockes zu erhalten.
DE69724879T 1996-07-01 1997-06-25 Verfahren und Vorrichtung für einen Kohärenzumwandler zur Verbindung von Rechnersystemkohärenzdomänen Expired - Fee Related DE69724879T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US677015 1996-07-01
US08/677,015 US5860109A (en) 1996-07-01 1996-07-01 Methods and apparatus for a coherence transformer for connecting computer system coherence domains

Publications (2)

Publication Number Publication Date
DE69724879D1 DE69724879D1 (de) 2003-10-23
DE69724879T2 true DE69724879T2 (de) 2004-07-15

Family

ID=24716966

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69724879T Expired - Fee Related DE69724879T2 (de) 1996-07-01 1997-06-25 Verfahren und Vorrichtung für einen Kohärenzumwandler zur Verbindung von Rechnersystemkohärenzdomänen

Country Status (4)

Country Link
US (1) US5860109A (de)
EP (1) EP0817065B1 (de)
JP (1) JPH10214222A (de)
DE (1) DE69724879T2 (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044438A (en) * 1997-07-10 2000-03-28 International Business Machiness Corporation Memory controller for controlling memory accesses across networks in distributed shared memory processing systems
WO1999012103A2 (en) * 1997-09-05 1999-03-11 Sun Microsystems, Inc. Scalable shared memory multiprocessor system
US6185662B1 (en) 1997-12-22 2001-02-06 Nortel Networks Corporation High availability asynchronous computer system
US6848003B1 (en) 1999-11-09 2005-01-25 International Business Machines Corporation Multi-node data processing system and communication protocol that route write data utilizing a destination ID obtained from a combined response
US6671712B1 (en) * 1999-11-09 2003-12-30 International Business Machines Corporation Multi-node data processing system having a non-hierarchical interconnect architecture
US6519649B1 (en) 1999-11-09 2003-02-11 International Business Machines Corporation Multi-node data processing system and communication protocol having a partial combined response
US6591307B1 (en) 1999-11-09 2003-07-08 International Business Machines Corporation Multi-node data processing system and method of queue management in which a queued operation is speculatively cancelled in response to a partial combined response
US6519665B1 (en) 1999-11-09 2003-02-11 International Business Machines Corporation Multi-node data processing system and communication protocol in which a stomp signal is propagated to cancel a prior request
US6636946B2 (en) * 2001-03-13 2003-10-21 Micron Technology, Inc. System and method for caching data based on identity of requestor
US6865695B2 (en) * 2001-07-26 2005-03-08 International Business Machines Corpoation Robust system bus recovery
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US7225298B2 (en) * 2003-04-11 2007-05-29 Sun Microsystems, Inc. Multi-node computer system in which networks in different nodes implement different conveyance modes
US7127562B2 (en) * 2003-06-11 2006-10-24 International Business Machines Corporation Ensuring orderly forward progress in granting snoop castout requests
JP2008046902A (ja) * 2006-08-17 2008-02-28 Fujitsu Ltd 情報処理システム、情報処理基板、及びキャッシュタグ及びスヌープタグの更新方法
JPWO2009001454A1 (ja) * 2007-06-27 2010-08-26 富士通株式会社 メモリ共有システムおよびメモリ共有装置
US9035959B2 (en) 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains
US8935485B2 (en) 2011-08-08 2015-01-13 Arm Limited Snoop filter and non-inclusive shared cache memory

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5072369A (en) * 1989-04-07 1991-12-10 Tektronix, Inc. Interface between buses attached with cached modules providing address space mapped cache coherent memory access with SNOOP hit memory updates
US5182801A (en) * 1989-06-09 1993-01-26 Digital Equipment Corporation Apparatus and method for providing fast data transfer between multiple devices through dynamic reconfiguration of the memory space of the devices
US5283886A (en) * 1989-08-11 1994-02-01 Hitachi, Ltd. Multiprocessor cache system having three states for generating invalidating signals upon write accesses
US5303362A (en) * 1991-03-20 1994-04-12 Digital Equipment Corporation Coupled memory multiprocessor computer system including cache coherency management protocols
JPH0619785A (ja) * 1992-03-27 1994-01-28 Matsushita Electric Ind Co Ltd 分散共有仮想メモリーとその構成方法
US5522058A (en) * 1992-08-11 1996-05-28 Kabushiki Kaisha Toshiba Distributed shared-memory multiprocessor system with reduced traffic on shared bus
US5590308A (en) * 1993-09-01 1996-12-31 International Business Machines Corporation Method and apparatus for reducing false invalidations in distributed systems
US5588131A (en) * 1994-03-09 1996-12-24 Sun Microsystems, Inc. System and method for a snooping and snarfing cache in a multiprocessor computer system
EP0735487B1 (de) * 1995-03-31 2001-10-31 Sun Microsystems, Inc. Schnelle Zweitor-Cachesteuerungsschaltung für Datenprozessoren in einem paketvermittelten cachekohärenten Multiprozessorsystem
US5634110A (en) * 1995-05-05 1997-05-27 Silicon Graphics, Inc. Cache coherency using flexible directory bit vectors
US5893160A (en) * 1996-04-08 1999-04-06 Sun Microsystems, Inc. Deterministic distributed multi-cache coherence method and system

Also Published As

Publication number Publication date
US5860109A (en) 1999-01-12
EP0817065A1 (de) 1998-01-07
DE69724879D1 (de) 2003-10-23
EP0817065B1 (de) 2003-09-17
JPH10214222A (ja) 1998-08-11

Similar Documents

Publication Publication Date Title
DE69732938T2 (de) Hybrides Speicherzugangsprotokoll in einem Datenverarbeitungssystem mit verteiltem, gemeinsamem Speicher
DE69724879T2 (de) Verfahren und Vorrichtung für einen Kohärenzumwandler zur Verbindung von Rechnersystemkohärenzdomänen
DE69724354T2 (de) Ein Mehrprozessorrechnersystem mit lokalen und globalen Adressräumen und mehreren Zugriffsmoden
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE69729243T2 (de) Multiprozessorsystem mit Vorrichtung zur Optimierung von Spin-Lock-Operationen
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE69722512T2 (de) Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll
DE69724353T2 (de) Mehrrechnersystem mit einem Drei-Sprung-Kommunikationsprotokoll
DE112008002018B4 (de) Bereitstellen eines gemeinsam genutzten Inklusiv-Cache bei Mehrkern-Cache-Clustern
DE112015004336B4 (de) Konfigurationsbasierte Auswahl eines Cachekohärenz-Protokolls
DE69721640T2 (de) Multiprozessor-Rechnersystem und Verfahren zur Steuerung des Verkehrsflusses
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE102007030116B4 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE69233655T2 (de) Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedenartiger Prozessoren
DE69628493T2 (de) Cache-kohärentes Computersystem, das Entwertungs- und Rückschreiboperationen minimiert
DE3621321A1 (de) Cache-speicher- bzw. multiprozessor-system und betriebsverfahren
DE69628127T2 (de) Verfahren und Gerät um die Kohärenz in einem Multiprozessorsystem anzuzeigen
DE102009023898B4 (de) Optimierung von gleichzeitigen Zugriffen in einem verzeichnisbasierten Kohärenzprotokoll
DE69721891T2 (de) Deterministisches Kohärenzprotokoll für verteilten Multicache-Speicher
DE69531933T2 (de) Busarchitektur in hochgradiger pipeline-ausführung
DE102006030879B4 (de) System zum Reduzieren der Latenzzeit von exklusiven Leseanforderungen in einem symmetrischen Multiprozessorsystem
DE69736544T2 (de) Verfahren zur Verminderung der Anzahl von Kohärenz-Zyklen in einem verzeichnisbasierten Cachekohärenz-Speichersystem unter Verwendung eines Speicherzustands-Cachespeichers
DE102007052853B4 (de) Zeilentauschschema zur Verringerung von Rückinvalidierungen in einem Snoopfilter
DE102013114256B4 (de) Systeme und Verfahren zur Beibehaltung der Informationskohärenz
WO2008006622A1 (de) Netzwerksystem und verfahren zur steuerung parallel existierender adressräume

Legal Events

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