DE69025232T2 - Verfahren zur Aufrechterhaltung der Cache-Speicherkohärenz in einem Mehrrechnersystem - Google Patents
Verfahren zur Aufrechterhaltung der Cache-Speicherkohärenz in einem MehrrechnersystemInfo
- Publication number
- DE69025232T2 DE69025232T2 DE69025232T DE69025232T DE69025232T2 DE 69025232 T2 DE69025232 T2 DE 69025232T2 DE 69025232 T DE69025232 T DE 69025232T DE 69025232 T DE69025232 T DE 69025232T DE 69025232 T2 DE69025232 T2 DE 69025232T2
- Authority
- DE
- Germany
- Prior art keywords
- master device
- master
- cache
- address
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 19
- 230000015654 memory Effects 0.000 claims description 115
- 238000010586 diagram Methods 0.000 description 17
- 230000007246 mechanism Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000001427 coherent effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0824—Distributed directories, e.g. linked lists of caches
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
- Diese Erfindung bezieht sich auf Computer und insbesondere auf Zwischencomputer-Schnittstellen, bei denen Cache-Schemas verwendet werden, und insbesondere auf Cache-Kohärenzprotokolle.
- Cache-Kohärenzprotokolle sind unidirektionale Übertragungsprotokolle, die verwendet werden, um die Verhaltensvorteile von schnellen lokalen Cache-Speichern zu erreichen, während ein flaches Gemeinschaftsspeicher-Modell (ein sog. "sharedmemory"-Modell) für eine Mehrzahl von Computerprozessoren, die gleichzeitig arbeiten, beibehalten wird. Bei einem Cache-Kohärenzprotokoll müssen Systemprozesse derart gesteuert werden, daß mehrfache gültige Kopien derselben Daten niemals unterschiedlich werden, d.h. niemals inkohärent werden, ohne die Veränderung direkt oder indirekt anderen Prozessoren mitzuteilen, welche auf die Daten zugreifen müssen.
- Die benötigte Zeit, um Daten auf schnellen Computerschnittstellen, wie z.B. Mehrfachbit-Bussen, zu übertragen, ist durch den Abstand, Ausbreitungsverzögerungen, Fluß (Bandbreite), Rauschen und die Signalverzerrung begrenzt. Sowohl asynchrone als auch synchrone Schnittstellen weisen unterschiedliche Begrenzungen auf. Die Geschwindigkeiten von Synchronbussen sind beispielsweise durch die Ausbreitungsverzögerung begrenzt, die dem Austausch zugeordnet ist, der für jede eingebaute Dateneinheit benötigt wird. Die Geschwindigkeiten von Synchronbussen sind durch Zeitunterschiede zwischen Taktsignalen und Datensignalen, die aus unterschiedlichen Quellen stammen, begrenzt. Ein herkömmlicher Bus wird in einem Multiprozessorsystem ein Flaschenhals, wenn viele Prozessoren in der Summe mehr Bandbreite benötigen, als auf dem Bus verfügbar ist.
- Ein Lösungsansatz, der den grundsätzlichen Begrenzungen des Datenflusses begegnet, ißt die Verwendung von in Paketen aufgeteilten unidirektionalen Signalisierungsschemas und verteilten Cache-Protokollen. Diese Schemas helfen dabei, den Verkehr auf dem Bus zu reduzieren, während die Hochgeschwindigkeitsprozessoren mit schnellem Zugriff auf einen großen Teil des Speicherraums versehen werden. Nichtdestoweniger besteht jedoch ein Mehraufwandsnachteil hinsichtlich der Komplexität, die den Steuerprotokollen zugeordnet ist.
- Bei einigen Cache-Kohärenzschemen existiert eine Unterstützung für virtuelle-physikalische Cache-Speicher, wie z.B. die, die gewöhnlich bei den Hewlett-Packard-Präzisionsarchitektur- (HPPA; HPPA = Hewlett-Packard Precision Architecture) Maschinen (HP/9000 Serie 800 und HP/9000 Serie 900) verwendet werden. Eine solche Unterstützung macht es jedoch häufig nötig, daß alle Cache-Speicher homogen sind, d.h. sie müssen dieselbe Tiefe und denselben Indizierungsmechanismus aufweisen. Bestimmte begrenzt nicht homogene Cache-Schemen können durch Vorausplanung angepaßt werden. Die offensichtliche Art und Weise, verallgemeinerte nicht homogene Cache- Speicher handzuhaben, besteht darin, die gesamte virtuelle Adresse als einen "Cache-Hinweis" oder als einen "virtuellen Hinweis" zu übermitteln. Eine derartige Lösung ist hinsichtlich von Zeit und Bandbreitenausnützung teuer.
- Was benötigt wird, ist ein Verfahren zum Übermitteln eines Cache-Hinweises, während es vermieden wird, daß die gesamte virtuelle Adresse übermittelt werden muß, wobei jede Hauptgeräteinrichtung auf dem Bus nicht wissen braucht, wie andere Betriebsmittel auf einem Bus ihre Cache-Speicher indizieren.
- Die Cache-Konsistenzsteuerung ist bekannt. Ein jüngeres Patent, das U.S.-Patent Nr. 4,713,755, das am 15. Dezember 1987 an Worely u.a. erteilt wurde, beschreibt einen Lösungsansatz zum Aufrechterhalten der Speicherintegrität in einem System mit einem hierarchischen Speicher unter Verwendung von expliziter Softwaresteuerung von Cache-Speichern. Die Technik darin verwendet Zustandsflags für jeden Block gespeicherter Informationen, die gültige und verunreinigte Daten anzeigen. Die Zustandsflags werden von dem Betriebssystem eines einzelnen Prozessors verwendet, um eine Korrekturaktion einzuleiten, um die verunreinigten Daten zu heilen.
- Ein IEEE-Studiengruppenprojekt wurde von Vertretern der Computerindustrie vorgeschlagen, um einen skalierbaren Kohärenzschnittstellenstandard für Hochleistungs-Multiprozessorumgebungen zu entwickeln. (Gustavson u.a., "The Scalable Coherent Interface Project (Superbus)," Rev. 13. Nr. 1, 22. August 1988, (IEEE-Direktverbreitung, David Gustavson, SLAC Bin 88, P.O. Box 4349, Stanford, CA 94309). Der vorgeschlagene Lösungsansatz ist ein Verzeichnis-basierter Kohärenzmechanismus, wodurch Cache-Steuerungen und -Speicher zusammenarbeiten. Ein Merkmal des vorgeschlagenen Schemas ist die Verwendung eines doppelt-verbundenen Listenschemas, um einen Verzeichnis-basierten Cache-Kohärenzmechanismus zu unterstützen, Wenn virtuell-indexierte Cache-Speicher in dem obigen Schema verwendet werden, ist es notwendig, einen Mechanismus zu besitzen, um zu wissen, wo der Index ist, um den Merker zu finden. Mit einem derartigen Merker kann jedoch eine Überprüfung des Busses durchgeführt werden, um zu bestimmen, ob ein Kohärenztreffer existiert, d.h. ein potentieller Konflikt mit einem anderen Abfrager der Daten.
- Bei der interessierenden Umgebung überträgt der Bus, der von den Prozessoren gemeinsam benutzt wird, die physikalische Adresse des Merkers und manchmal "virtuelle Hinweise". Ein virtueller Hinweis ist eine bestimmte Information über die virtuelle Adresse, welche beim Auffinden des Merkers helfen kann. Virtuelle Hinweise besitzen die Begrenzung, daß sie dazu tendieren, Prozessor-spezifisch zu sein.
- Während die vorliegende Erfindung auf der Verwendung eines doppelt-verbundenen Listenverzeichnis-Cache-Kohärenzschemas basiert, wird davon ausgegangen, daß es hilfreich ist, hier eine kurze Beschreibung des Betriebs eines derartigen Schemas zu liefern.
- Verzeichnis-basierte Cache-Kohärenz-Techniken bringen die Verwendung eines angemerkten Speichers (sog. "tagged memory") mit sich, d.h. die Verwendung von Speichermerkern, welche anzeigen, welche Hauptgeräte Kopien der interessierenden Daten enthalten. Ein Hauptgerät kann eine beliebige benachbarte Speichereinheit, ein Prozessor-Cache oder ein Bus-Umwandler, der Daten benötigt, sein. Die Merker sind typischerweise speicherbare Werte, die Informationen über den Zustand der Daten enthalten. Derartige Informationen können darin bestehen, ob die Daten im Besitz eines entfernten Hauptgerätes als gemeinsame (nicht-exklusive) oder private (exklusive) Daten sind. Ein Mechanismus wird ferner benötigt, um anzuzeigen, welche Hauptgeräte eine Kopie der interessierenden Daten besitzen. Eine Technik, die auf der einfach-verbundenen Liste basiert, besteht darin, die Hauptgeräte-Adresse des ersten derartigen Hauptgerätes, das eine Kopie besitzt, zu speichern. (Die Hauptgeräteadresse ist eine Adresse, auf die ein Hauptgerät antwortet). Die einfach-verbundene Liste ist unter allen Hauptgeräten verteilt, derart, daß jedes Hauptgerät eine Verbindung pro gültigem Cache-Kohärenzblock in dem Cache-Speicher des Hauptgerätes besitzt. Eine doppelt-verbundene Liste wird gebildet, indem eine weitere Verbindung oder Hauptgerätadresse hinzugefügt wird, welche beim Löschen von Einträgen aus der Liste hilft. Die Liste ist zweidirektional und die zwei Verbindungen werden die nächstes-Hauptgerät-verbindung und die voriges- Hauptgerät-Verbindung genannt. Das Ziel der Verwendung der verbundenen Liste besteht darin, eine Entstellung von Daten zu verhindern, die in duplizierten benachbarten Einheiten von gemeinsam benutzbaren Informationen, die Kohärenzblöcke genannt werden, gespeichert sind. Ein Kohärenzblock ist die Einheit von Informationen, die spezifiziert ist, daß sie intern kohärent bleiben muß. Es ist nicht notwendigerweise die Einheit von übertragbaren Informationen.
- In einer ersten Operation, die eine Gemeinschaftsabfrage ("sharable request") genannt wird, fragt ein Hauptgerät, wie z.B. ein Cache, eine gemeinsam benutzbare Kopie eines Abschnitts eines Kohärenzblocks ab, wobei der Hauptspeicher zuerst die Merker desselben überprüft, um zu bestimmen, ob irgendein Hauptgerät eine private Kopie des abgefragten Kohärenzblockes besitzt. Wenn ja, achtet der Speicher auf das Löschen der privaten Kopie, bevor derselbe fortschreitet. Wenn entweder keine Kopie existiert oder nur eine Gemeinschaftskopie existiert, speichert der Speicher die Hauptgerätadresse des abfragenden Hauptgeräts als die nächstes- Hauptgerät-Verbindung und sendet seine alte nächstes-Hauptgerät-Verbindung zu dem abfragenden Hauptgerät, derart, daß dieselbe als die nächstes-Hauptgerät-Verbindung dort in dem Verzeichnis desselben gespeichert werden kann. Das abfragende Hauptgerät setzt ebenfalls seine nächstes-Hauptgerät-Verbindung auf den Wert, der den Speicher anzeigt. Es kann entweder eine spezielle Null-Hauptgerätadresse oder die Hauptgerätadresse des Speichers verwendet werden, um jedes Ende der Liste zu markieren. Somit wird eine Liste aufgebaut, wodurch alle Kopien eines Kohärenzblockes durch "Aneinanderfügen" von Adressen vorwärts durch die nächstes-Hauptgerät- Verbindungen und durch "Aneinanderfügen" von Adressen rückwärts durch die voriges-Hauptgerät-Verbindungen nachverfolgt werden können.
- Bei einer anderen Operation, die eine private Abfrage genannt wird, fragt ein Hauptgerät eine private Kopie eines Kohärenzblockes ab. Der Prozeß ist derselbe wie bei einer Gemeinschaftsabfrage, mit Ausnahme davon, daß der Speicher alle dann ausstehenden Kopien vor dem Weitermachen löschen muß.
- Bei einer weiteren Operation, die eine Gemeinschaftskopie- Löschung genannt wird, entfernt ein Hauptgerät eine Gemeinschaftskopie eines Kohärenzblocks, was bewirkt, daß eine Transaktion herausgegeben wird, um das frühere Hauptgerät von einer neuen nächstes-Hauptgerät-Verbindung zu informieren. Danach muß das nächste Hauptgerät ebenfalls informiert werden und eine Bestätigung der Vollendung beider Operationen muß ebenfalls empfangen werden, bevor das Hauptgerät wirklich nicht mehr an den Kohärenzblock denken braucht.
- Bei einer weiteren Operation, die Kohärenzblock-Vergessen genannt wird, befiehlt der Speicher, daß alle Cache-Speicher einen Kohärenzblock vergessen, indem eine Transaktion herausgegeben wird, welche die nächstes-Hauptgerät-Verbindungen jedes Cache-Speichers herunterläuft, bis das Ende der Liste gefunden ist, welches auf den Speicher zurückzeigt. Der Speicher wird dadurch informiert, daß kein Cache eine Kopie des Kohärenzblockes zurückgehalten hat.
- Was noch gelöst werden muß, ist, wie alle nächsten und früheren Hauptgeräte derart informiert werden, daß das gegenwärtige Hauptgerät tatsächlich eine Zeile vergessen kann.
- Die Erfindung kann durch Speichern einer Prozessoradresse und eines Hinweises für jeden Cache-Speicher zum Aufrechterhalten der Cachekohärenz in einem Multiprozessor-Computersystem verwendet werden, bei dem jedem Prozessor ein Cache zugeordnet ist und das ein Potential zum Duplizieren von Daten auf einer Mehrzahl von Speicherpositionen aufweist.
- Die Merkmale der Erfindung werden durch Anspruch 1 definiert
- Das Verfahren von zumindest dem bevorzugten Ausführungsbeispiel der Erfindung erlaubt das allgemeine Mischen von Prozessoren auf einem komplexen netzwerkartigen Bus, während immer noch das Cache-Kohärenzprotokoll vom Herausgeben einer Verbreitungs-Transaktion beibehalten wird, was die Implementierung des netzwerkartigen Busses viel einfacher als bisher macht.
- Innerhalb der allgemeinen Technik ist es zulässig, selbst Cache-Indexierungsschemas innerhalb des Cache-Kohärenzprotokolls zu mischen. Obwohl die Verbesserungen des Cache-Kohärenzprotokolls gemäß der Erfindung durch die Anzahl von verfügbaren speziellen Indexbits eliminiert werden, ist die Erfindung nicht auf die Art und Weise der Verwendung der Indexierungsbits begrenzt. Somit können Schemen gemischt werden.
- Die Erfindung wird unter Bezug auf die folgende detaillierte Beschreibung eines bevorzugten Ausführungsbeispiels der Erfindung in Verbindung mit den folgenden Zeichnungen besser verständlich.
- Fig. 1 ist ein Blockdiagramm eines Abschnitts eines Multiprozessor-Computersystems, in dem ein Software-Betriebssystem das Verfahren gemäß der Erfindung verwenden kann.
- Fig. 2 ist ein schematisches Diagramm, das einen ersten Zustand eines üblichen Speichers, eines ersten Cache-Speichers und eines zweiten Cache-Speichers darstellt.
- Fig. 3 ist ein schematisches Diagramm, das einen zweiten Zustand eines üblichen Speichers, eines ersten Cache-Speichers und eines zweiten Cache-Speichers darstellt.
- Fig. 4 ist ein schematisches Diagramm, das einen dritten Zustand eines üblichen Speichers, eines ersten Cache-Speichers und eines zweiten Cache-Speichers darstellt.
- Fig. 5 ist ein schematisches Diagramm, das einen vierten Zustand eines üblichen Speichers, eines ersten Cache-Speichers und eines zweiten Cache-Speichers darstellt.
- Fig. 6 ist ein schematisches Diagramm, das einen fünften Zustand eines üblichen Speichers, eines ersten Cache-Speichers und eines zweiten Cache-Speichers darstellt.
- Fig. 7 ist ein schematisches Diagramm, das einen sechsten Zustand eines üblichen Speichers, eines ersten Cache-Speichers und eines zweiten Cache-Speichers darstellt.
- Fig. 8 ist ein schematisches Diagramm, das einen siebten Zustand eines üblichen Speichers, eines ersten Cache-Speichers und eines zweiten Cache-Speichers darstellt.
- Fig. 9 ist ein schematisches Diagramm, das einen achten Zustand eines üblichen Speichers, eines ersten Cache-Speichers und eines zweiten Cache-Speichers darstellt.
- Fig. 10 ist ein schematisches Diagramm, das einen neunten Zustand eines üblichen Speichers, eines ersten Cache-Speichers und eines zweiten Cache-Speichers darstellt.
- Fig. 11 ist ein schematisches Diagramm, das einen zehnten Zustand eines üblichen Speichers, eines ersten Cache-Speichers und eines zweiten Cache-Speichers darstellt.
- Fig. 12 ist ein schematisches Diagramm, das einen elften Zustand eines üblichen Speichers, eines ersten Cache-Speichers und eines zweiten Cache-Speichers darstellt.
- Fig. 13 ist ein schematisches Diagramm, das einen zwölften Zustand eines üblichen Speichers, eines ersten Cache-Speichers und eines zweiten Cache-Speichers darstellt.
- Fig. 14 ist ein schematisches Diagramm, das einen dreizehnten Zustand eines üblichen Speichers, eines ersten Cache-Speichers und eines zweiten Cache-Speichers darstellt.
- Fig. 15 ist ein schematisches Diagramm, das einen vierzehnten Zustand eines üblichen Speichers, eines ersten Cache-Speichers und eines zweiten Cache-Speichers darstellt.
- Fig. 16 ist ein schematisches Diagramm, das einen fünfzehnten Zustand eines üblichen Speichers, eines ersten Cache-Speichers und eines zweiten Cache-Speichers darstellt.
- Fig. 17 ist ein schematisches Diagramm, das einen sechzehnten Zustand eines üblichen Speichers, eines ersten Cache-Speichers und eines zweiten Cache-Speichers darstellt.
- In Fig. 1 ist ein Segment eines Bus-basierten Multiprozessorsystems 10 gezeigt, das eine Mehrzahl von Prozessoren 12, 14, 16 und eine Mehrzahl von Hochgeschwindigkeitscache-Speichersystemen, hierin ein Cache 18, ein Cache 20 bzw. ein Cache 22, einen Speicherbus 24, ein Hauptspeichersystem 26 und ein Eingabe/Ausgabe-System 30 aufweist. Jeder Prozessor 12, 14, 16 ist durch einen jeweiligen Cache 18, 20, 22 gekoppelt und steuert denselben. Die Cache-Speicher 18, 20, 22 sind dadurch über den Speicherbus 24 mit dem Hauptspeichersystem 28 gekoppelt. Wie es bekannt ist, ist jedes der einzelnen Systeme einschließlich des Speichers und jedes Cache-Speichers mit unabhängiger Verwaltungs- und Steuerungsfunktionalität versehen. Zwecks der Darstellung dieser Erfindung können jeder der Cache-Speicher 18, 20, 22 (mit dem zugeordneten Prozessor) und das Hauptspeichersystem als Hauptgeräte in einem Cache-Kohärenzschema mit doppelt-verbundener Liste dienen.
- Wie allgemein verwendet, ist ein Hauptgerät eine Teilsystemeinheit, die eine Steuerung über Informationen verwaltet. Da das Hauptgerät/Nebengerät-Verhältnis bei der vorliegenden Erfindung in dem Kontext einer einzelnen Transaktion schnell wechselt, kann die herkömmliche Position eines Hauptgeräts und eines Nebengeräts nicht leicht nachvollzogen werden. Es existieren tatsächlich viele Hauptgeräte. Daher wird im allgemeinen auf viele Hauptgeräte und auf spezielle Elemente als Hauptgeräte Bezug genommen, wobei die Hauptgerät/Nebengerät-Beziehung durch den Kontext offensichtlich wird.
- Das Indexierungsschema jedes Cache und des Speichers in einem doppelt-verbundenen Protokollschema gemäß der Erfindung ist Hauptgerät-spezifisch. Gemäß der Erfindung werden nur Hauptgerät-spezifische Informationen in der Form eines Indexwertes oder einfach gesagt eines "Index" zusammen mit einer Hauptgerätadresse übermittelt, wobei nur das Hauptgerät, das die Informationen benötigt, welche für dasselbe spezifisch sind, die Indexinformationen verwendet, selbst wenn dieselben physikalisch bei einem anderen Hauptgerät gespeichert sein können. Ein Hauptgerät weiß immer, was benötigt ist, um seine eigenen Informationen zu verarbeiten, und welche Informationen von anderen benötigt werden, um seine eigenen Informationen zu verarbeiten. Somit kann jedes Hauptgerät diese Informationen zu den anderen Hauptgeräten, die mit ihm kommunizieren, liefern. Die anderen Hauptgeräte können Informationen speichern, welche von dem Abfrage-Empfangs-Prozeß benötigt und niemals lokal verwendet werden.
- Fig. 2 stellt den Zustand und die Verkettung von Abschnitten von Verbindungen von drei verschiedenen potentiellen Hauptgeräten, nämlich dem Hauptspeichersystem 28, dem ersten Cache-Speicher 18 und dem zweiten Cache-Speicher 20 dar. Die dargestellten Prinzipien können auf eine beliebige Anzahl von Hauptgeräten angewendet werden. In dem gezeigten Beispiel ist der Zustand der Hauptgeräte gezeigt, wie er unmittelbar nach einer Initialisierung sein könnte, wenn die Daten von beliebigen und von allen Kohärenzblöcken in dem Speicher gespeichert sind, und keine gültigen Daten in irgendeinem Cache gespeichert sind. Speziell umfaßt das Verzeichnis jedes Kohärenzblockes von Daten einen Merkerschlitz, wie z.B. ein Element 32 des Speichers 28, einen "nächste"-Adresse- und Index-Schlitz 34, wie z.B. ein Element 34 des Speichers 28, und einen "vorherige"-Adresse- und Index-Schlitz 36, wie z.B. ein Element 36 des Speichers 28. Zusätzlich sind Zeiger gezeigt, wie z.B. ein erster Zeiger 38 und ein zweiter Zeiger 40. Der Merkerschlitz 32 kann entweder den Wert "gültig" oder den Wert "ungültig" halten, wodurch angezeigt wird, ob die Daten in dem Kohärenzblock, auf die derselbe verweist, sicher verwendbar sind. Der "nächste" oder nächstes-Hauptgerät-Schlitz 34 kann als Werte, die eine Verbindung genannt werden, die Adresse und den Index irgendeines Hauptgeräts einschließlich sich selbst enthalten. Der "vorherige" oder vorheriges-Hauptgerät- Schlitz 36 kann ebenfalls als Werte, die eine Verbindung genannt werden, die Adresse und den Index irgendeines Hauptgeräts einschließlich sich selbst enthalten. Der erste Zeiger 38 und der zweite Zeiger 40 zeigen jeder für sich gemäß der Verbindung von einem Schlitz zu einem anderen. In Fig. 2 zeigen die zwei Zeiger 38 und 40 zurück auf sich selbst.
- Ein Schlitz, der eine Verbindung enthält und durch seinen zugehörigen Zeiger auf einen nächsten Schlitz dargestellt ist, kann gemäß der Erfindung als eine Adresse und einen Index, der der Adresse angehängt ist, die in dem gleichen Schlitz gespeichert ist, physikalisch dargestellt werden. Schließlich sind, wie es hier verwendet wird, die Transaktionen, durch die Daten und Befehle zwischen Hauptgeräten übermittelt werden, als Pfeile von einem ersten Etikett (z.B. "Speicher") zu einem zweiten Etikett (z.B. "Cache A") dargestellt werden, wie es nachfolgend offensichtlich wird.
- Der Speicher 28 weist immer eine gültige Kopie der Daten auf, wenn auf die Daten zugegriffen werden kann (daher ist der Merker in dem Speicher durchgehend auf den Wert "gültig" eingestellt). Die Cache-Speicher 18 und 20 besitzen nur gültige Daten, wenn die Merker eingestellt worden sind, während anderenfalls angenommen wird, daß alle Cache-Speicher ungültige Daten aufweisen.
- Um den Prozeß des Abfragens und Anmerkens von gültigen Daten darzustellen, wird auf die Figuren Bezug genommen, indem mit Fig. 3 begonnen wird. Eine Abfrage nach einer Daten-Transaktion 42 wird durch den Cache B 20 eingeleitet, der als ein Hauptgerät wirkt, wodurch der Cache B gemeinsam benutzbare Daten von dem Speicher 28 abfragt. Eine derartige Abfrage enthält typischerweise einen Merker bezüglich des Transaktionstyps und der physikalischen Adresse des abgefragten Kohärenzblocks. Gemäß der Erfindung enthält die Abfrage ferner die Hauptgerätadresse 44 des Cache B und den Index 46, welchen der Cache B benötigt, um in seinen Cache-Speicher zu indexieren, wie es durch einen Datenblock 43 dargestellt und wie es in einem temporären Puffer, der den Daten zugeordnet ist, die außerhalb des Busses 24 (Fig. 1) empfangen werden, gefunden werden kann. Dieser Zwei-Element-Block von Informationen wird in dem entsprechenden Schlitz gespeichert. Die Verbindungen drücken nur graphisch die Verbindungen aus, die durch den Inhalt der jeweiligen Schlitze definiert ist.
- Bezugnehmend auf Fig. 4 gibt der Speicher daraufhin eine zweite Transaktion 48 an den Cache B 20 heraus, wodurch die von dem Cache B 20 abgefragten Daten zu den entsprechenden Positionen in dem Cache B entlang der nächstes-Hauptgerät- Verbindung für den Cache B übermittelt werden. Der Speicher 28 wird erkennen, daß seine eigene Liste vorher leer war.
- Daher plaziert der Speicher 28 die Verbindungsadresse und den Index des Cache B in den nächstes-Hauptgerät-Schlitz 34 und in den voriges-Hauptgerät-Schlitz 36. Die Zeiger 38 und 40 zeigen jedoch nun auf den nächstes-Hauptgerät-Schlitz 50 und auf den voriges-Hauptgerät-Schlitz 52 des Cache B 20, wobei die Speicherverbindungsadressen und der Index in diese Schlitze geladen werden (Fig. 5). Der Cache B 20 erkennt, daß der nächstes-Hauptgerät-Schlitz 50 und der voriges- Hauptgerät-Schlitz 52 nun Verbindungen enthalten, die auf den Speicher 28 zeigen, wie es durch die Zeiger 54 und 56 angezeigt ist. Der Cache B 20 erkennt dann, daß seine Abfrage vollendet worden ist. Der Endzustand, wobei der Merker 51 des Cache B 20 auf den Wert gültig eingestellt ist, ist in Fig. 5 gezeigt. Am Ende der Transaktionen werden in jedem Fall gemäß der Erfindung sowohl die Verbindungs-Indizes des vorigen Hauptgeräts und des nächsten Hauptgeräts als auch die Verbindungsadressen in dem jeweiligen nächstes-Hauptgerät-Schlitz und dem voriges-Hauptgerät-Schlitz des abfragenden Hauptgeräts gespeichert.
- Fig. 6 stellt eine erste Transaktion in einem weiteren Transaktionssatz gemäß der Erfindung dar, welcher der vorigen Sequenz von Transaktionen folgen könnte. Der Cache A gibt eine Abfrage 58 an den Speicher 28 nach einer gemeinsam benutzbaren Kopie desselben Kohärenzblocks aus, der vorher von dem Cache B 20 abgefragt worden ist (Fig. 3). In Fig. 7 sendet der Speicher 28 die abgefragten Cache-Daten (Weg 60) zurück und gibt seinen nächstes-Hauptgerät-Verbindungsindex und die in dem nächstes-Hauptgerät-Schlitz 34 gespeicherte Adresse zu dem nächstes-Hauptgerät-Schlitz 62 weiter, wie es durch eine Verbindung 64 dargestellt ist. Der Verbindungswert in dem Schlitz 34 wird somit durch den Wert Cache A ersetzt. In Fig. 8 ist zu sehen, daß der Cache A 18 den alten nächstes-Hauptgerät-verbindungswert des Cache B des Speichers in dem nächstes-Hauptgerät-Schlitz 62 speichert, wodurch der nächstes-Hauptgerät-Schlitz 62 mit dem nächstes-Hauptgerät-Schlitz 50 verbunden wird, wie es durch einen Zeiger 49 gezeigt ist. Der Cache A 18 sendet ferner eine Transaktion 66 zu dem Cache B 20, um denselben anzuweisen, daß ein neues voriges Hauptgerät existiert. Der Cache A 18 hat seinen voriges-Hauptgerät-Schlitz 68 mit dem Verbindungsindex und der Adresse des Speichers 28 geladen, wie es durch eine Verbindung 70 gezeigt ist. Der Cache A 18 weiß, daß der voriges-Hauptgerät-Verbindungswert Speicher ist, da die Transaktion 60 durch den Speicher 28 ausgegeben wurde.
- In der nächsten Sequenz, die in Fig. 9 gezeigt ist, gibt der Cache B 20 eine Bestätigung 72 an den Cache A 18 aus und aktualisiert seinen voriges-Hauptgerät-Verbindungswert, der in dem voriges-Hauptgerät-Schlitz 52 gespeichert ist, wie es durch eine Verbindung 74 angezeigt ist. Der Cache B 20 weiß, daß der voriges-Hauptgerät-Schlitzwert Cache A ist, da der Cache A 18 die Transaktion eingeleitet hat.
- In Fig. 10 ist der Endzustand dargestellt. Alle Verbindungen sind jetzt vollendet und der Wert des Merkers 76 des Cache A 18 ist auf gültig eingestellt. Der Cache A 18 und sein zugeordneter Prozessor können daraufhin den gesamten Inhalt des Kohärenzblocks verwenden, ohne die Verwendung von ungültigen Daten zu riskieren.
- Fig. 11 beginnt eine Sequenz, die das Löschen eines Kohärenzblocks aus einem Cache, in diesem Beispiel aus dem Cache A darstellt. Der Cache A leitet eine Transaktion 80 zu seinem vorigen Hauptgerät, nämlich dem Speicher 28 ein, wie es durch seinen voriges-Hauptgerät-Wert in dem Schlitz 68 dargestellt ist. Der Cache A übermittelt dadurch den Index und die Adresse einer neuen nächstes-Hauptgerät-Verbindung weiter, welches der Wert Cache B ist, der in seinem nächstes- Hauptgerät-Schlitz 62 gespeichert ist. Der voriges-Hauptgerät-Schlitz 68 des Cache A wird verwendet, um seinen vonges-Hauptgerät-Index und die Adresse zu erhalten, deren Wert ebenfalls bei der Transaktion 80 dem Speicher übermittelt wird. In diesem Fall ist der voriges-Hauptgerät-Schlitzwert Speicher.
- In Fig. 12 sendet das vorige Hauptgerät (der Speicher 28) des Cache A eine Transaktion 82 zu seinem neuen Hauptgerät (Cache B 20, wie es durch den Wert in dem Schlitz 34 mit einer Verbindung 84 gezeigt ist), um die voriges-Hauptgerät-Verbindung des Cache B herzustellen. In anderen Worten soll die Transaktion 82 die voriges-Hauptgerät-Verbindung des nächsten Hauptgeräts des Cache A herstellen.
- In Fig. 13 gibt der Cache B 20 eine Transaktion 86 an den Cache A 18 aus, um denselben zu informieren, daß die Operation vollendet ist. Der voriges-Hauptgerät-Schlitz 52 ist auf den Wert Speicher eingestellt, wie es durch den Zeiger 86 gezeigt ist. Die unbrauchbaren Zeiger 38, 49 und 70, 86 werden durch Entfernen des Cache A 18 korrigiert, was durch Einstellen des Wertes seines Merkers 76 auf ungültig gezeigt ist. Fig. 14 zeigt diesen Endzustand nach der Vollendung der Transaktionssequenz.
- Ein häufiger Typ einer Transaktion ist ein Räumen oder Löschen eines Kohärenzblocks, was durch einen Cache eingeleitet wird, welcher nicht in der Liste ist. Bezugnehmend auf Fig. 15 gibt der Cache A 18 eine Transaktion 88 zu dem Speicher 28, die eine derartige Räumung aller Cache-Speicher abfragt. Der Speicher 28 empfängt die Transaktion 88 und merkt aus seiner Verbindungsliste, daß weitere Kopien des Kohärenzblocks existieren.
- Daraufhin gibt der Speicher 28 eine Transaktion 90 aus, um die Räumungs/Lösch-Operation zu starten (Fig. 16). Die Transaktion 90 wird entlang seiner nächstes-Hauptgerät-Verbindung, die durch den Zeiger 84 gezeigt ist (Fig. 15), zu dem Cache B gerichtet, und dieselbe löscht ihren eigenen nächstes-Hauptgerät-Verbindungswert, der durch den Zeiger 84 gezeigt ist, und den voriges-Hauptgerät-Verbindungswert, der durch den Zeiger 40 gezeigt ist.
- Der Cache B 20, welcher das interessierende nächste und vorige Hauptgerät ist, empfängt die Transaktion 90 und gibt die Räumungsabfrage über eine Transaktion 92, die auf seiner nächstes-Hauptgerät-Verbindung basiert, zu dem Speicher 28, wonach der Cache B 20 seine eigene voriges-Hauptgerät-Verbindung, wie sie durch einen Zeiger 86 angezeigt ist, und die nächstes-Hauptgerät-Verbindung, wie sie durch den Zeiger 54 angezeigt ist (Fig. 16), entfernt. Der Cache B 20 stellt seinen Merker auf den Wert ungültig. Sobald der Speicher 28 die weitergegebene Räumungs-/Lösch-Abfrage empfangen hat, kann er die ursprüngliche Abfrage als vollendet markieren.
- Die obigen Beispiele sind nur eine Auswahl der Transaktionstypen, welche mit Zuverlässigkeit in einer Multiprozessorumgebung ausgeführt werden können, die Cache-Kohärenzprotokolle mit doppelt-verbundener Liste verwenden, welche gemäß der Erfindung modifiziert sind. Ein weiters Beispiel ist eine Abfrage nach einem privaten Kohärenzblock, nämlich einem Cache-Kohärenzblock, welcher nicht mit anderen Cache-Speichern gemeinsam benutzt werden soll. Die Abfrage ist ähnlich zu der nach einem Gemeinschaftskohärenzblock mit der folgenden Ausnahme: der Speicher 28 muß vor dem Rücksenden von Daten zu dem abfragenden Hauptgerät eine Räumungsoperation ausgeben und vollenden.
- Diese Erfindung, insbesondere das Indexieren und das Übermitteln von Indizes, erlaubt ein allgemeines Mischen von Prozessoren, wobei jeder auf einem komplexen netzwerkartigen Bus sein eigenes Index-Schema verwenden darf, während die Cache-Kohärenz über allen Prozessoren beibehalten wird. Diese Erfindung wird in großen Multiprozessor-Busnetzwerken sehr wichtig. Es ist unnötig, Verbreitungs-Transaktionen auszugeben, welche schwer wiederzugewinnen sind, wenn die Cache-Kohärenz eine Sorge darstellt. Die Größe des Bus-Netzwerks ist nur durch die Anzahl der Indexbits begrenzt. Das Wesen der Verwendung des Index wird nicht durch den Cache beeinflußt, in welchem derselbe gespeichert ist.
- Die Erfindung wurde nun bezugnehmend auf spezielle Ausführungsbeispiele erklärt. Weitere Ausführungsbeispiele werden für Fachleute offensichtlich sein. Während das offenbarte Verfahren beispielsweise in Verbindung mit nur einem einzigen zentralen Speicher beschrieben ist, könnte ein System viele Speicher, die eine gültige Kopie von Elementen der interessierenden Daten aufweisen, umfassen. Es ist daher nicht beabsichtigt, daß die Erfindung abgesehen von den beigefügten Ansprüchen begrenzt ist.
Claims (4)
1. Ein Verfahren zum Beibehalten einer Cachekohärenz in
einem Multiprozessor-Computersystem (10) mit einem
Potential zur Duplizierung von Daten in einer Mehrzahl
von Einheiten, die als Kohärenzblöcke identifizierbar
sind, wobei das Verzeichnis jedes Kohärenzblocks von
Daten eine Merkerposition, die die Gültigkeit der Daten
identifiziert, eine
nächstes-Hauptgerät-Speicherposition zum Speichern einer nächsten Adresse und eines
Index, und eine voriges-Hauptgerät-Position zum Speichern
einer vorigen Adresse und eines Index aufweist, wobei
das Multiprozessor-Computersystem (10)
doppelt-verbundene Listen zum Identifizieren von vorigen und nächsten
Hauptgeräten verwendet, wobei das Verfahren
gekennzeichnet ist durch Verwenden eines
Hauptgerät-spezifischen Indexschemas derart, daß:
wenn ein erstes Hauptgerät (28) eine Anforderung (42)
einer Datentransaktion einer Kopie eines Kohärenzblocks
von einem zweiten Hauptgerät (20) empfängt, welcher nur
in dem ersten Hauptgerät (28) liegt, die Anforderung
(42) die Adresse (44) des zweiten Hauptgeräts (20) und
einen zweiten Index (46) umfaßt, welche nur das zweite
Hauptgerät (20) zu Indexierungszwecken verwendet,
die zweite Hauptgerät-Adresse (44) und der zweite Index
(46) durch das erste Hauptgerät (28) in einer
nächstes-Hauptgerät-Speicherposition (34) und in einer
voriges-Hauptgerät-Speicherposition (36) gespeichert
werden,
das erste Hauptgerät (28) daraufhin die angeforderten
Daten zu dem zweiten Hauptgerät (20) zusammen mit der
ersten Hauptgerät-Adresse und einem ersten Index
sendet,
welchen nur das erste Hauptgerät zu
Indexierungszwecken verwendet; und die erste Hauptgerät-Adresse und
der erste Index durch das zweite Hauptgerät (20) in
einer voriges-Hauptgerät-Speicherposition (52) und in
einer nächstes-Hauptgerät-Speicherposition (50)
gespeichert werden, wonach die Merkerposition des zweiten
Hauptgeräts auf den Wert gültig eingestellt wird, und
wenn ein drittes Hauptgerät (18) daraufhin eine
Anforderung (58) bezüglich demselben Kohärenzblocks sendet,
wobei die letztgenannte Anforderung (58) die Adresse
des dritten Hauptgeräts (18) und einen dritten Index
enthält, welchen nur das dritte Hauptgerät (18) zu
Indexierungszwecken verwendet, das erste Hauptgerät
(28) die Adresse des dritten Hauptgeräts und den
dritten Index in seiner
nächstes-Hauptgerät-Speicherposition (34) speichert,
das dritte Hauptgerät (18) dann die Adresse des zweiten
Hauptgeräts (20) und den zweiten Index (46) in seiner
nächstes-Hauptgerät-Speicherposition (62) speichert,
und
das dritte Hauptgerät (18) dann in seiner voriges-
Hauptgerät-Speicherposition (68) die Adresse des ersten
Hauptgeräts (28) und den ersten Index speichert, wobei
die voriges-Hauptgerät-Speicherposition (52) des
zweiten Hauptgeräts (20) aktualisiert wird, um auf das
dritte Hauptgerät (18) zu zeigen, wonach die
Merkerposition des dritten Hauptgeräts auf den Wert gültig
eingestellt wird.
2. Ein Verfahren gemäß Anspruch 1, bei dem jede
Anforderung (42, 58) einen Merker aufweist, der den Typ der
Anforderung und die physikalische Adresse des
abgeforderten Kohärenzblocks bezeichnet, wobei der Merker
einen Transaktionstyp kennzeichnet und die Anforderung
eines Kohärenzblocks eine Anforderung vom
Transaktionstyp
ist.
3. Ein Verfahren gemäß Anspruch 1 oder 2, bei dem die
Hauptgeräte (18, 20, 28) ein zentrales Speichersystem
(28), das eine gültige Kopie aller Daten enthält, und
mindestens zwei Cache-Speicher (18, 20) aufweist, die
Cache-Speicher aufweisen, die jeweiligen Prozessoren
(12, 14) zugeordnet sind.
4. Das Verfahren gemäß einem beliebigen der vorhergehenden
Ansprüche, das ferner den Schritt des Kennzeichnens
jedes Hauptgeräts (18, 20, 28) aufweist, daß dasselbe
gültige Daten in einem Kohärenzblock enthält, nachdem
das jeweilige Hauptgerät mit den geeigneten Indizes und
Adressen aktualisiert ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/369,152 US5197146A (en) | 1989-06-21 | 1989-06-21 | Method for maintaining cache coherence in a multiprocessor computer system |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69025232D1 DE69025232D1 (de) | 1996-03-21 |
DE69025232T2 true DE69025232T2 (de) | 1996-06-20 |
Family
ID=23454298
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69025232T Expired - Fee Related DE69025232T2 (de) | 1989-06-21 | 1990-05-30 | Verfahren zur Aufrechterhaltung der Cache-Speicherkohärenz in einem Mehrrechnersystem |
Country Status (4)
Country | Link |
---|---|
US (1) | US5197146A (de) |
EP (1) | EP0404369B1 (de) |
JP (1) | JP3199718B2 (de) |
DE (1) | DE69025232T2 (de) |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2511588B2 (ja) * | 1990-09-03 | 1996-06-26 | インターナショナル・ビジネス・マシーンズ・コーポレイション | デ―タ処理ネットワ―ク、ロックを獲得させる方法及び直列化装置 |
JPH05108473A (ja) * | 1991-03-20 | 1993-04-30 | Hitachi Ltd | デ−タ処理システム |
JPH0546475A (ja) * | 1991-08-15 | 1993-02-26 | Fujitsu Ltd | バツフア記憶制御方式 |
US5724549A (en) * | 1992-04-06 | 1998-03-03 | Cyrix Corporation | Cache coherency without bus master arbitration signals |
DE69323790T2 (de) * | 1992-04-29 | 1999-10-07 | Sun Microsystems, Inc. | Verfahren und Vorrichtung für mehreren ausstehende Operationen in einem cachespeicherkohärenten Multiprozessorsystem |
US5511226A (en) * | 1992-08-25 | 1996-04-23 | Intel Corporation | System for generating snoop addresses and conditionally generating source addresses whenever there is no snoop hit, the source addresses lagging behind the corresponding snoop addresses |
JP2746530B2 (ja) * | 1993-01-30 | 1998-05-06 | 洲 植 全 | 共有メモリマルチプロセッサ |
US5604882A (en) * | 1993-08-27 | 1997-02-18 | International Business Machines Corporation | System and method for empty notification from peer cache units to global storage control unit in a multiprocessor data processing system |
US5604863A (en) * | 1993-11-01 | 1997-02-18 | International Business Machines Corporation | Method for coordinating executing programs in a data processing system |
US5535358A (en) * | 1993-12-27 | 1996-07-09 | Matsushita Electric Industrial Co., Ltd. | Cache memory control circuit and method for controlling reading and writing requests |
DE69519816T2 (de) * | 1994-05-03 | 2001-09-20 | Hewlett-Packard Company (A Delaware Corporation), Palo Alto | Anordnung mit Duplikat des Cache-Etikettenspeichers |
US5551048A (en) * | 1994-06-03 | 1996-08-27 | Digital Equipment Corporation | Ring based distributed communication bus for a multiprocessor network |
US5680577A (en) * | 1995-04-27 | 1997-10-21 | International Business Machines Corporation | Method and system for processing multiple requests for data residing at the same memory address |
US5634110A (en) * | 1995-05-05 | 1997-05-27 | Silicon Graphics, Inc. | Cache coherency using flexible directory bit vectors |
US6098150A (en) * | 1995-11-17 | 2000-08-01 | Sun Microsystems, Inc. | Method and apparatus for fetching information from a cache memory |
US5805837A (en) * | 1996-03-21 | 1998-09-08 | International Business Machines Corporation | Method for optimizing reissue commands in master-slave processing systems |
US5991819A (en) * | 1996-12-03 | 1999-11-23 | Intel Corporation | Dual-ported memory controller which maintains cache coherency using a memory line status table |
US6122711A (en) | 1997-01-07 | 2000-09-19 | Unisys Corporation | Method of and apparatus for store-in second level cache flush |
US6052761A (en) * | 1997-01-31 | 2000-04-18 | Hewlett-Packard Company | Increment update in an SCI based system |
US6094709A (en) * | 1997-07-01 | 2000-07-25 | International Business Machines Corporation | Cache coherence for lazy entry consistency in lockup-free caches |
US6226714B1 (en) * | 1997-07-15 | 2001-05-01 | International Business Machines Corporation | Method for invalidating cache lines on a sharing list |
US6098156A (en) * | 1997-07-22 | 2000-08-01 | International Business Machines Corporation | Method and system for rapid line ownership transfer for multiprocessor updates |
US6295598B1 (en) * | 1998-06-30 | 2001-09-25 | Src Computers, Inc. | Split directory-based cache coherency technique for a multi-processor computer system |
US7013305B2 (en) | 2001-10-01 | 2006-03-14 | International Business Machines Corporation | Managing the state of coupling facility structures, detecting by one or more systems coupled to the coupling facility, the suspended state of the duplexed command, detecting being independent of message exchange |
US6442597B1 (en) * | 1999-07-08 | 2002-08-27 | International Business Machines Corporation | Providing global coherence in SMP systems using response combination block coupled to address switch connecting node controllers to memory |
US6748498B2 (en) * | 2000-06-10 | 2004-06-08 | Hewlett-Packard Development Company, L.P. | Scalable multiprocessor system and cache coherence method implementing store-conditional memory transactions while an associated directory entry is encoded as a coarse bit vector |
US6738836B1 (en) * | 2000-08-31 | 2004-05-18 | Hewlett-Packard Development Company, L.P. | Scalable efficient I/O port protocol |
US6961825B2 (en) * | 2001-01-24 | 2005-11-01 | Hewlett-Packard Development Company, L.P. | Cache coherency mechanism using arbitration masks |
US7240114B2 (en) * | 2001-09-25 | 2007-07-03 | Hewlett-Packard Development Company, L.P. | Namespace management in a distributed file system |
US7426568B2 (en) * | 2002-06-10 | 2008-09-16 | Lsi Corporation | Seek minimized recoverable streaming file system |
US6868485B1 (en) * | 2002-09-27 | 2005-03-15 | Advanced Micro Devices, Inc. | Computer system with integrated directory and processor cache |
US7096323B1 (en) * | 2002-09-27 | 2006-08-22 | Advanced Micro Devices, Inc. | Computer system with processor cache that stores remote cache presence information |
GB0228110D0 (en) * | 2002-12-02 | 2003-01-08 | Goodrich Control Sys Ltd | Apparatus for and method of transferring data |
US7213244B2 (en) * | 2003-03-13 | 2007-05-01 | International Business Machines Corporation | Apparatus and method for distribution of work on a doubly linked list among processing threads |
US7373466B1 (en) | 2004-04-07 | 2008-05-13 | Advanced Micro Devices, Inc. | Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer |
EP1782244A4 (de) * | 2004-07-07 | 2010-01-20 | Emc Corp | Systeme und verfahren zur bereitstellung von kohärenz eines verteilten cache |
US20060294313A1 (en) * | 2005-06-23 | 2006-12-28 | International Business Machines Corporation | System and method of remote media cache optimization for use with multiple processing units |
US7412567B2 (en) * | 2006-04-28 | 2008-08-12 | Sun Microsystems, Inc. | Value-based memory coherence support |
US7725654B2 (en) * | 2006-07-25 | 2010-05-25 | Hewlett-Packard Development Company, L.P. | Affecting a caching algorithm used by a cache of storage system |
US9852074B2 (en) * | 2015-01-12 | 2017-12-26 | Alcatel Lucent | Cache-optimized hash table data structure |
US10949235B2 (en) * | 2016-12-12 | 2021-03-16 | Intel Corporation | Network semantics integrated into central processing unit (CPU) chipset |
US10795820B2 (en) * | 2017-02-08 | 2020-10-06 | Arm Limited | Read transaction tracker lifetimes in a coherent interconnect system |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4571674A (en) * | 1982-09-27 | 1986-02-18 | International Business Machines Corporation | Peripheral storage system having multiple data transfer rates |
DE3582506D1 (de) * | 1984-02-10 | 1991-05-23 | Prime Computer Inc | Cache-kohaerenz-anordnung. |
US4747043A (en) * | 1984-02-10 | 1988-05-24 | Prime Computer, Inc. | Multiprocessor cache coherence system |
US4847804A (en) * | 1985-02-05 | 1989-07-11 | Digital Equipment Corporation | Apparatus and method for data copy consistency in a multi-cache data processing unit |
US4933835A (en) * | 1985-02-22 | 1990-06-12 | Intergraph Corporation | Apparatus for maintaining consistency of a cache memory with a primary memory |
US4713755A (en) * | 1985-06-28 | 1987-12-15 | Hewlett-Packard Company | Cache memory consistency control with explicit software instructions |
US4843542A (en) * | 1986-11-12 | 1989-06-27 | Xerox Corporation | Virtual memory cache for use in multi-processing systems |
GB8728494D0 (en) * | 1987-12-05 | 1988-01-13 | Int Computers Ltd | Multi-cache data storage system |
US5025365A (en) * | 1988-11-14 | 1991-06-18 | Unisys Corporation | Hardware implemented cache coherency protocol with duplicated distributed directories for high-performance multiprocessors |
-
1989
- 1989-06-21 US US07/369,152 patent/US5197146A/en not_active Expired - Lifetime
-
1990
- 1990-05-30 EP EP90305860A patent/EP0404369B1/de not_active Expired - Lifetime
- 1990-05-30 DE DE69025232T patent/DE69025232T2/de not_active Expired - Fee Related
- 1990-06-21 JP JP16398590A patent/JP3199718B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US5197146A (en) | 1993-03-23 |
EP0404369B1 (de) | 1996-02-07 |
JPH0331947A (ja) | 1991-02-12 |
JP3199718B2 (ja) | 2001-08-20 |
EP0404369A3 (de) | 1991-09-25 |
DE69025232D1 (de) | 1996-03-21 |
EP0404369A2 (de) | 1990-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69025232T2 (de) | Verfahren zur Aufrechterhaltung der Cache-Speicherkohärenz in einem Mehrrechnersystem | |
DE69900797T2 (de) | Cache-Speicherkohärenzprotokoll mit unabhängiger Implementierung von optimierten Cache-Speicheroperationen | |
DE3782335T2 (de) | Speichersteuersystem. | |
DE69722512T2 (de) | Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll | |
DE10262164B4 (de) | Computersystem mit einer hierarchischen Cacheanordnung | |
DE69721394T2 (de) | Verfahren und Vorrichtung für einen Kohärenzumwandler mit begrenztem Speicher zur Verbindung von Rechnersystem-Kohärenzdomänen | |
DE3856451T2 (de) | Multiprozessor-Digitaldatenverarbeitungssystem | |
DE69327387T2 (de) | An einen paketvermittelten Bus gekoppelte Nachschreibsteuerungsschaltung für eine Cachespeichersteuerungsschaltung | |
DE69724354T2 (de) | Ein Mehrprozessorrechnersystem mit lokalen und globalen Adressräumen und mehreren Zugriffsmoden | |
DE69130086T2 (de) | Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien | |
DE69031086T2 (de) | Cache-Speicherinhaltssteuerung in Mehrprozessornetzwerken | |
DE3751399T2 (de) | Parallelrechner mit verteilten, gemeinsam genutzten Speichern und verteilten, aufgabenaktivierenden Schaltungen. | |
DE69732938T2 (de) | Hybrides Speicherzugangsprotokoll in einem Datenverarbeitungssystem mit verteiltem, gemeinsamem Speicher | |
DE69519816T2 (de) | Anordnung mit Duplikat des Cache-Etikettenspeichers | |
DE69128107T2 (de) | Busanordnung für Speicherzugriff | |
DE69531933T2 (de) | Busarchitektur in hochgradiger pipeline-ausführung | |
DE69803478T2 (de) | Ein/ausgabe weiterleitung in einem cachekohärenten rechnersystem mit gemeinsam genutztem plattenspeicher | |
DE69724353T2 (de) | Mehrrechnersystem mit einem Drei-Sprung-Kommunikationsprotokoll | |
DE69736544T2 (de) | Verfahren zur Verminderung der Anzahl von Kohärenz-Zyklen in einem verzeichnisbasierten Cachekohärenz-Speichersystem unter Verwendung eines Speicherzustands-Cachespeichers | |
DE69031658T2 (de) | Vorrichtung und verfahren für instandhaltung von cache/zentralspeicherkonsistenz | |
DE69029173T2 (de) | Mikroprozessor | |
DE3621321A1 (de) | Cache-speicher- bzw. multiprozessor-system und betriebsverfahren | |
DE69706934T2 (de) | Rechnersystem mit Speicherung der Speicheraktualisierungsgeschichte | |
DE68928454T2 (de) | Multiprozessorsystem mit hierarchischer cachespeicheranordnung | |
DE2415900A1 (de) | Rechenautomat mit mehreren mit je einem vorratsspeicher versehenen rechenanlagen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: HEWLETT-PACKARD CO. (N.D.GES.D.STAATES DELAWARE), |
|
8327 | Change in the person/name/address of the patent owner |
Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE |
|
8339 | Ceased/non-payment of the annual fee |