DE69025232T2 - Verfahren zur Aufrechterhaltung der Cache-Speicherkohärenz in einem Mehrrechnersystem - Google Patents

Verfahren zur Aufrechterhaltung der Cache-Speicherkohärenz in einem Mehrrechnersystem

Info

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
Application number
DE69025232T
Other languages
English (en)
Other versions
DE69025232D1 (de
Inventor
Fetra Ross V La
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Application granted granted Critical
Publication of DE69025232D1 publication Critical patent/DE69025232D1/de
Publication of DE69025232T2 publication Critical patent/DE69025232T2/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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0824Distributed 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

    Hintergrund der Erfindung
  • 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.
  • Kurze Beschreibung der Zeichnungen
  • 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.
  • Beschreibung der speziellen Ausführungsbeispiele
  • 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.
DE69025232T 1989-06-21 1990-05-30 Verfahren zur Aufrechterhaltung der Cache-Speicherkohärenz in einem Mehrrechnersystem Expired - Fee Related DE69025232T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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