DE69732938T2 - Hybrides Speicherzugangsprotokoll in einem Datenverarbeitungssystem mit verteiltem, gemeinsamem Speicher - Google Patents

Hybrides Speicherzugangsprotokoll in einem Datenverarbeitungssystem mit verteiltem, gemeinsamem Speicher Download PDF

Info

Publication number
DE69732938T2
DE69732938T2 DE69732938T DE69732938T DE69732938T2 DE 69732938 T2 DE69732938 T2 DE 69732938T2 DE 69732938 T DE69732938 T DE 69732938T DE 69732938 T DE69732938 T DE 69732938T DE 69732938 T2 DE69732938 T2 DE 69732938T2
Authority
DE
Germany
Prior art keywords
node
memory block
directory
memory
cache
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 - Lifetime
Application number
DE69732938T
Other languages
English (en)
Other versions
DE69732938D1 (de
Inventor
Erik E. Hagersten
Mark Donald Hill
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Application granted granted Critical
Publication of DE69732938D1 publication Critical patent/DE69732938D1/de
Publication of DE69732938T2 publication Critical patent/DE69732938T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/082Associative directories

Description

  • Die vorliegende Erfindung bezieht sich allgemein auf ein Verfahren und eine Vorrichtung zum Ermöglichen einer effizienten Kommunikation in einem Computernetzwerk.
  • Computernetzwerke mit verteiltem, gemeinsam verwendeten Speicher (DSM – Distributed Shared Memory) sind im Stand der Technik bekannt. Zum Zwecke der Erläuterung veranschaulicht 1 ein Computernetzwerk 10, welches eine Netzwerk-Infrastruktur 12 (NI) hat. Vier Netzwerkknoten 100, 102, 104 und 106 sind als an die Netzwerkinfrastruktur 12 angeschlossen dargestellt. Über die Netzwerkinfrastruktur 12 können die Knoten 100106 miteinander kommunizieren, um Programme, Daten und dergleichen gemeinsam zu verwenden. Selbstverständlich kann die Anzahl der Knoten, die pro Netzwerk 10 vorgesehen sind, von den konkreten Bedürfnissen abhängen und kann irgendeine beliebige Anzahl von Knoten umfassen.
  • Innerhalb jedes Netzwerkknotens gibt es einen Speicherraum, der typischerweise in einem Speichermodul implementiert ist, auf dessen Speicherblöcke andere Netzwerkknoten Zugriff haben können. Im Allgemeinen hat jeder Speicherblock in dem Netzwerk eine eindeutige Adresse, welche es ermöglicht, an das er eindeutig adressiert bzw. angesprochen wird. Die Einheit bzw. Gesamtheit aller Speicherblöcke in den Knoten des Netzwerkes 10 bildet den verteilten, gemeinsam verwendeten Speicher (DSM). Es versteht sich jedoch, dass, auch wenn auf die Speicherblöcke des DSM durch irgendeinen Netzwerkknoten zugegriffen werden kann, ein gegebener Speicherblock typischerweise irgendeinem Heimatknoten in dem Netzwerk 10 zugeordnet ist.
  • Für Zwecke der vorliegenden Erfindung kann die Netzwerk-Infrastruktur 12 irgendeine Konfiguration haben und kann durch irgendein beliebiges Protokoll implementiert sein. Im Allgemeinen besitzt die Netzwerk-Infrastruktur 12 die Fähigkeit, eine Nachricht korrekt von einem Knoten zu einem anderen entsprechend der mit der Nachricht verknüpften Zieladresse zu überbringen. Eine beispielhafte Netzwerk-Infrastruktur ist Sequent Numa-Q, die bei Sequent Computer Systems, Inc. in Beaverton, OR, erhältlich ist.
  • Jeder der Netzwerkknoten 110106 kann so einfach sein, wie ein Computer, der einen einzigen Prozessor hat, welcher über einen Speicher-Cache mit seinem eigenen Speicher verbunden ist. Ein Netzwerkknoten kann aber auch so kompliziert sein, dass er ein vollständiges, Bus-basiertes Mehrprozessorsystem oder sogar ein Teilnetzwerk mit mehreren Prozessoren sein kann. In letzterem Fall kann ein Knoten mehrere Prozessoren aufweisen, die jeweils mit ihrem eigenen Speichermodul und Speicher-Cache verbunden sind, ebenso wie auch mit verteiltem, gemeinsam verwendeten Speicher, der über andere Knoten in dem Netzwerk verteilt ist. Der Einfachheit der Darstellung wegen wird die Erfindung hier unter Bezug auf Knoten beschrieben, die einen einzigen Prozessor haben. Es sollte jedoch für Fachleute, welche diese Offenbarung erfahren, auf der Hand liegen, dass die hier offenbarten Prinzipien und Techniken in einfacher Weise auf Knoten erweiterbar sind, die mehrere Prozessoren haben.
  • Im Stand der Technik kommunizieren die Netzwerkknoten typischerweise miteinander, indem sie einen Ansatz auf Bus-Basis oder ein direktes Protokoll verwenden. Als Beispiel zeigt 2 ein Schema eines Computer-Netzwerks, einschließlich beispielhafter Knoten 100a und 100b, für die Implementierung einer Version eines Protokolls nach dem Stand der Technik auf Bus-Basis. In dem Knoten 110a nach 2 ist der Prozessor 200a mit einem Speichermodul 204a, beispielsweise einem dynamischen Speichermodul mit wahlweisen Zugriff (SRAM), über einen Speicher-Cache 202a verbunden, der typischerweise unter Verwendung einer Art eines schnellen Speichers implementiert ist, beispielsweise in Form eines statischen Speichers mit wahlfreiem Zugriff (SRAM – Static Random Access Memory). Das Speichermodul 204a kann in Speicherblöcke aufgeteilt sein und der Speicher-Cache 202a dient dazu, den Zugriff auf Speicherblöcke des Speichermodus 200a zu beschleunigen, indem er eine Kopie des angeforderten Speicherblocks hält, und zwar entweder von seinem eigenen Knoten oder einem anderen Knoten in dem Netzwerk (wie zum Beispiel dem Knoten 100b) in seinen schnellen Speicherschaltkreisen. Über eine Netzwerkschnittstelle (die in jedem Knoten enthalten ist, jedoch aus Gründen der Einfachheit der Darstellung nicht dargestellt ist) kann der Knoten 100a mit dem Knoten 100b ebenso wie mit anderen Knoten in dem Netzwerk über eine Bus-basierte Netzwerk-Infrastruktur kommunizieren, beispielsweise einen Bus 206, um auf den verteilten, gemeinsam verwendeten Speicher (DSM) Zugriff zu erhalten, der über die Knoten in dem Netzwerk verteilt ist.
  • In einem Computernetzwerk auf Bus-Basis wird eine Speicheranforderung von einem gegebenen Knoten typischerweise auf dem gemeinsamen Bus an andere Knoten rundgesendet, so dass die Anforderung von allen anderen Knoten in dem Netzwerk erkannt werden kann. Wenn beispielsweise der Prozessor 200a nach 2 Zugriff auf einen Speicherblock benötigt, welcher in einem anderen Speichermodul eines anderen Netzwerkknotens liegt, sendet er typischerweise seine Speicherzugriffsanforderung auf dem gemeinsamen Bus rund. Alle Knoten auf einem Netzwerk würden eben diese Anforderung empfangen, und derjenige Knoten, dessen Speicheradressbereiche zu der Speicheradresse passen, welche in der Speicherzugriffsanforderung vorgesehen ist, wird dann antworten.
  • Diese Rundsendetechnik arbeitet in angemessener Weise für relativ kleine Computernetzwerke. Wenn Computernetzwerke größer werden und/oder physikalisch bzw. räumlich stär ker verteilt sind, hat der Ansatz auf Bus-Basis gewisse Schwiengkeiten. Wenn der Bus beispielsweise größer wird, um mehr Knoten aufzunehmen, so ist es wünschenswert, den Bus mit einer höheren Geschwindigkeit zu betreiben, da jeder Knoten im allgemeinen für eine gewisse Zeitdauer Zugriff auf den Bus benötigt, um seine Transaktionen auszuführen. Das Betreiben eines großen Busses mit hoher Frequenz ist jedoch schwierig, da, wenn Busse größer werden, sie auch elektrisch länger werden und elektrische Aspekte, zum Beispiel die Kapazität, ihre Betriebsfrequenz beträchtlich einschränken können. Dementsprechend ist der Einsatz auf Bus-Basis im Allgemeinen für große oder räumlich weit verteilte Computernetzwerke ungeeignet.
  • Weiterhin erfordert ein Protokoll auf Bus-Basis das Vorsehen eines Vermittlungsschaltkreises, um eine natürliche Reihenfolge von Transaktionen durch die verschiedenen Knoten des Computernetzwerkes durchzusetzen. Der Vermittler muss sicherstellen, dass Bus-Zugriffsanforderungen von den verschiedenen Netzwerkknoten angemessen sortiert werden, um Konkurrenzzustände zu vermeiden. Die Verwendung von Vermittlerschaltkreisen und eines Vermittlungsschemas entspricht einer zusätzlichen Komplexitätsebene und trägt damit zu den Kosten bei dem Aufbau und der Wartung von Computernetzwerken bei.
  • Wie Fachleute erkennen, stellen die zusätzlichen Nachrichten, die in einem Bus-basierten System von dem anfordernden Knoten an alle Knoten in ein Netzwerk ausgesendet werden müssen, eine Zusatzlast für Bus dar. Darüber hinaus muss der anfordernde Knoten jeden Knoten in dem Netzwerk befragen und erfordert, dass jeder Knoten die Anforderung analysiert, um die Anforderung entweder zu ignorieren oder zu beantworten. Die zusätzliche Arbeit, die an den anderen Knoten im Netzwerk erforderlich ist, entspricht einer zusätzlichen Verzögerung und zusätzlicher Verarbeitung, welche die Netzwerkknoten ausführen müssen.
  • Das Verzeichnis-Protokoll bietet einen Versuch, ein Computernetzwerk zu implementieren, in welchem eine natürliche Rundsendung nicht erforderlich ist, um Speicherzugriffsanforderungen zu bedienen, das heißt eine Transaktion oder eine Anforderung von einem Knoten muss nicht an alle anderen Knoten in dem Netzwerk rund gesendet werden. 3 veranschaulicht zum Zwecke der Erläuterung einen Computernetzwerkknoten 100, der für die Implementierung des Verzeichnisprotokolls geeignet ist. In jedem Knoten des Computernetzwerks, welches das Verzeichnisprotokoll verwendet, kann ein Verzeichnis vorgesehen sein, welches Verzeichnisseinträge für die Speicherblöcke ihres Speichermoduls enthält. Gemäß 3 ist ein Verzeichnis 210 dargestellt, welches als eine Datenstruktur in einem Speicher implementiert sein kann und welches Verzeichniseinträge enthält, von denen jeder einem eindeutigen Speicherblock des Speichermoduls im Knoten 100 entspricht. Beispielsweise ist im Verzeichnis 210a ein Verzeichniseintrag 212 dargestellt, welcher einem Speicherblock 208 in einem Speichermodul 204 entspricht. Die Einheit bzw. Gesamtheit aller Verzeichniseinträge in einem gegebenen Knoten entspricht dem Verzeichnis für diesen Knoten. Außerdem ist in 3 eine Schnittstelle 206 dargestellt, welche den Schaltkreis für den Anschluss eines Knotens an seine Außenwelt, beispielsweise an die Netzwerkinfrastruktur, repräsentiert.
  • In dem Verzeichnisprotokoll muss jeder Knoten in dem Netzwerk, beispielsweise jeder der Knoten 100106, wissen, ob er eine exklusive Kopie eines Speicherblocks (eine modifizierbare oder M-Kopie), eine gemeinsam verwendete, Nur-Lesekopie (eine S-Kopie) hat, oder ob er keine Kopie (eine ungültige oder I-Kopie) hat. Wenn ein Knoten eine M-Kopie des Blockes hat, so sagt man, dass er eine exklusive Kopie habe und dass er diese Kopie modifizieren kann, um zu bewirken, dass sie sich möglicherweise von ihrem Gegenstück in dem Speichermodul 204 des Heimatknotens des Blockes unterscheidet. Wenn irgendein Knoten in dem Computernetzwerk eine M-Kopie des Speicherblocks 208 besitzt, geben alle anderen Knoten ihre Kopien auf, das heißt sie besitzen nur I-Kopien dieses Speicherblockes.
  • Während vielleicht nur ein Knoten eine M-Kopie eines Speicherblockes hat, können mehrere Knoten gleichzeitig gemeinsam verwendete Kopien (S-Kopien) besitzen. Ein Knoten, welcher eine S-Kopie hat, hat im wesentlichen eine Nur-Lese-Kopie, das heißt er kann nicht die Inhalte des Speicherblocks modifizieren. S-Kopien eines Speicherblocks können gleichzeitig mit I-Kopien desselben Speicherblocks in einem Netzwerk existieren. S-Kopien eines Speicherblocks können jedoch nicht mit irgendeiner M-Kopie desselben Speicherblocks coexistieren.
  • In einer Implementierung kann ein Knoten vom Cache von einer exklusiven Kopie (M-Kopie) anfordern, indem er eine RTO-Anforderung herausgibt, wobei RTO für "Lesen um zu besitzen" ("Read to own") steht. Ein Knoten kann vom Cache eine gemeinsam verwendete Kopie eines Speicherblocks anfordern, indem er eine RTS-Anforderung ausgibt, wobei RTS für "Read to Share" (lesen um gemeinsam zu verwenden") steht. Ein Knoten kann außerdem anfordern, dass die exklusive M-Kopie eines Speicherblocks, die er gerade besitzt, durch Ausgabe einer WB-Anforderung zurück zu schreiben, wobei WB für Zurückschreiben ("writeback") steht.
  • Wie schon gesagt, weiß jeder Knoten in dem Computernetzwerk, was für eine Art von Kopie des Speicherblockes 208 er gerade besitzt. Demnach wird diese Kenntnis, welche sich auf den Speicherblock bezieht, unter den Knoten des Netzwerks verbreitet. Darüber hinaus wird dieselbe Kenntnis bezüglich des Speicherblocks 208 auch zentral an den Heimatknoten des Speicherblocks 208 mitgeteilt, das heißt in einem Verzeichniseintrag 212 des Verzeichnisses 210.
  • Um die Darstellung zu vereinfachen, wird die Erläuterung hier unter Bezug auf das aus vier Knoten bestehende Netzwerk nach 1 gegeben, auch wenn das Netzwerk, wie schon erwähnt, irgendeine beliebige Anzahl von Knoten enthalten mag. Die Arbeitsweise des Verzeichnisprotokolls nach dem Stand der Technik kann am besten unter Bezug auf die Beispiele nach 4 und das Zustandsdiagramm nach 5 veranschaulicht werden. In 4 sind in Reihen A-H die Zustände für den Speicherblock 208 des Knotens 100 nach 3 dargestellt. Zu irgendeinem beliebigen Zeitpunkt repräsentiert eine der Reihen A-H den Inhalt des Verzeichniseintrags 212 in dem Verzeichnis 210 am Heimatknoten 100. Man sollte dabei bedenken, dass, auch wenn ein einzelner Speicherblock 208 hier im einzelnen erläutert wird, die Aufnahme in Caches typischerweise mit einer Mehrzahl von Speicherblöcken ausgeführt wird.
  • In Reihe A ist ein Knoten 100 dargestellt, welcher eine exklusive M-Kopie des Speicherblocks 218 hat (M-Zustände in Reihe A, Spalte 100). Definitionsgemäß müssen alle anderen Netzwerkknoten ungültige Kopien des Speicherblocks 208 haben (dargestellt durch Zustände E in Reihe A, Spalten 102, 106). Nach Belieben kann die M-Kopie des Speicherblocks 208 aktuell durch den Cache-Speicher aufgenommen werden, in dem beispielsweise in dem Knoten 100, oder in dem Speichermodul des Heimatknotens.
  • Transaktion # 1 Reihe A zu Reihe B in 4):
  • Man nehme an, dass der Knoten 104 nunmehr eine exklusive M-Kopie des Speicherblocks 208 haben möchte, welche, sowie es in dem Zustand A dargestellt ist, gerade an ihrem Heimatknoten 100 liegt. Gemäß 4 entspricht der Knoten 104 dem anfordernden Knoten 502, während Knoten 100 dem Heimatknoten für den Speicherblock 208 entspricht, der in 4 als Heimatknoten 508 dargestellt ist. Der abhängige Knoten 512 entspricht dem Knoten, bei welchem die Kopie des Speicherblocks 208 aktuell liegt. In Reihe A ist der abhängige Knoten 512 zufällig derselbe Knoten, wie der Heimatknoten, das heißt der Knoten 100.
  • Die RTO-Anforderung von dem Knoten 104 (mit dem anfordernden Knoten 502 bei dieser ersten Transaktion) wird über den Pfad 504 an den Heimatknoten 100 (Knoten 508) weitergeleitet. Das Weiterleiten der RTO-Transaktion von dem anfordernden Knoten an den Heimatknoten wird typischerweise durch die Netzwerkinfrastruktur 12 gehandhabt, welche die Adresse verwendet, die mit der RTO-Anforderung geliefert wird. Die Netzwerkinfrastruktur 12 weiß, wo sich der Heimatknoten für einen bestimmten Speicherblock befindet, beispielsweise aufgrund einer Zuordnung der Adresse des Blocks zu den Adressbereichen der verschiedenen Knoten. Wenn der Heimatknoten 100 (Knoten 508) die RTO-Nachricht empfängt, so setzt er das Anhängigkeitsbit, welches zu dem angeforderten Speicherblock 208 gehört. Das Setzen des Anhängigkeitsbits zeigt an, dass auf den Speicherblock 208 zeitweise zugegrif fen wird, dass er nicht verfügbar ist, um eine weitere Zugriffsanforderung zu bedienen, welche sich auf den Speicherblock 208 bezieht. Weiterhin weiß der Heimatknoten 100, indem er das Verzeichnis 212 (Reihe A) überprüft, dass er eine exklusive M-Kopie des Speicherblocks 208 hat und alle anderen Knoten ungültige Kopien des Speicherblocks 208 haben. Dass er auch der Knoten ist, bei welchem sich die Kopie befindet (abhängiger Knoten 512), kann man sich in 5 den Knoten 100 als einen vorstellen, welcher sowohl den Heimatknoten 508 als auch den abhängigen Knoten 512 umfasst. Der Knoten 100 (Heimatknoten 508/abhängiger Knoten 512) sendet dann eine Kopie des Speicherblocks 208 über den Pfad 514 an den anfordernden Knoten 104 (Knoten 502). Nach Empfang einer Kopie des Speicherblocks 208 aktualisiert der anfordernde Knoten 104 (Knoten 502) dann seine Kopie in eine exklusive M-Kopie und sendet eine Bestätigungsnachricht über Pfad den 506 an den Heimatknoten 100 (Knoten 508). Der Empfang der Bestätigungsnachricht durch den Heimatknoten 100 (Knoten 508), bewirkt, dass der Heimatknoten 100 seine eigene Kopie des Speicherblocks 208 in eine ungültige I-Kopie herabstuft und seinen Verzeichniseintrag 212 aktualisiert (in den der Reihe B) und zulässt, dass das Anhängigkeitsbit, welches zu dem Speicherblock 208 gehört, zurückgesetzt wird, wodurch nachfolgende Transaktionen, welche den Speicherblock 208 betreffen, bedient werden können. Wie in der Transaktion # 1 dargestellt ist, beseitigt die Verwendung der Anhängigkeitsbits und der expliziten Nachrichten zwischen dem anfordernden Knoten, dem Heimatknoten und dem abhängigen Knoten (über die Pfade 504, 506, 510 und 514) das Erfordernis eines sich über das gesamte Netzwerk erstreckenden Sendens (Rundsendens) zum Bedienen der Transaktion # 1.
  • Weiterhin beseitigt die Verwendung des Anhängigkeitsbits das Erfordernis eines natürlichen Ordnungsmechanismus, da Transaktionen zu einem Heimatknoten in derjenigen Reihenfolge in einer Schlange angeordnet werden können, in welcher sie empfangen werden und in dieser Reihenfolge bedient werden können, sobald das Anhängigkeitsbit zurückgesetzt wird.
  • Transaktion # 2 (Reihe B zu Reihe D):
  • In der Transaktion # 2 wirkt der Knoten 102 als der anfordernde Knoten und fordert eine exklusive Kopie des Speicherblocks 208 an, indem er eine RTO-Transaktion ausgibt. Die RTO-Transaktion wird durch die Netzwerkinfrastruktur 12 an den Heimatknoten des Speicherblocks 208, das heißt den Knoten 508 in der Transaktion # 2, über den Pfad 504 weitergeleitet und bewirkt, dass der Heimatknoten 100 das zu dem Speicherblock 208 gehörige Anhängigkeitsbit setzt. Die Netzwerkschnittstelle 12 weiß, dass die Nachricht an den Knoten 100 überbracht werden sollte, da sie die Adresse des angeforderten Speicherblocks ermitteln kann und weiß, welcher Knoten in dem Netzwerk der Heimatknoten für den angeforderten Speicherblock ist. Der Knoten 100 kann aus dem Verzeichniseintrag 212 (Reihe B) feststellen, dass der Knoten 104 aktuell die einzige exklusive M-Kopie des Speicherblocks 208 hat.
  • Dementsprechend sendet der Heimatknoten 100 (Knoten 508) über den Pfad 510 eine Anforderung an den Knoten 104 (den abhängigen Knoten) um bei dem Knoten 104 anzufordern, dass er eine Kopie des Speicherblocks 208 an den anfordernden Knoten, das heißt den Knoten 102 (Anforderungsknoten 502) übermittelt. Der Knoten 104 ist bei dieser Transaktion der abhängige Knoten, da er denjenigen Knoten repräsentiert, bei welchem aktuell eine gültige Kopie des angeforderten Speicherblocks liegt. Der abhängige Knoten 104 (Knoten 512) stuft seine Kopie von einer exklusiven M-Kopie zu einer ungültigen I-Kopie herab, da definitionsgemäß, falls ein Knoten in dem Computernetzwerk eine exklusive M-Kopie hat, das heißt der anfordernde Knoten 102, alle anderen Knoten ungültige I-Kopien haben müssen.
  • Wenn der anfordernde Knoten 102 (Knoten 502 in der Transaktion # 2) eine Kopie des Speicherblocks 208 empfängt, so vermerkt er intern, dass er nunmehr eine exklusive M-Kopie hat (Reihe D, Spalte 102) und er gibt über den Pfad 506 eine Bestätigung aus. Wenn der Heimatknoten 100 (Knoten 508) die Bestätigungsnachricht über den Pfad 506 von dem anfordernden Knoten empfängt, aktualisiert er seine Kopie zu einer ungültigen I-Kopie, falls erforderlich (in diesem Fall stellt es sich als unnötig heraus), aktualisiert den Verzeichniseintrag 212 (in denjenigen der Reihe D) und setzt das Anhängigkeitsbit, welches zu dem Speicherblock 208 gehört, zurück, so dass weitere Transaktionen, welche den Speicherblock 208 betreffen bzw. umfassen, bedient werden können.
  • Transaktion # 3 (Reihe D zu Reihe A):
  • In der Transaktion # 3 fordert der Knoten 102, der eine exklusive M-Kopie enthält, dass der Inhalt des Speicherblocks 208 in den Heimatknoten 100 zurückgeschrieben wird. Ein Knoten wünscht möglicherweise, dass der Speicherblock, den er zuvor aus verschiedenen Gründen in seinem Cache aufgenommen hat, zurückgeschrieben wird, das heißt, er möchte einen anderen Speicherblock in den Cache aufnehmen und hat nicht genug Platz in seinem Speicher-Cache. Gemäß 4 sendet der anfordernde Knoten 102 (Knoten 502) eine Rückschreibe-(WB-)Transaktion an die Netzwerkinfrastruktur. Die Netzwerkinfrastruktur leitet dann diese Anforderung an den Heimatknoten des Speicherblocks 208, das heißt den Knoten 100. Nach Empfang dieser WB-Anforderung, setzt der Heimatknoten 100 (Knoten 508) das zu dem Speicherblock 208 gehörige Anhängigkeitsbit.
  • Der Heimatknoten 100 kann feststellen, dass der Knoten 102 die exklusive Kopie besitzt, indem er den Verzeichniseintrag 212 (Reihe D) überprüft. Der Heimatknoten 100 (Knoten 508) sendet dann über den Pfad 510 eine Nachricht an den abhängigen Knoten 512 (wobei der Knoten aktuell die Kopie des Speicherblocks 208 hat, welcher zufällig derselbe Knoten wie der anfordernde Knoten 102 in dieser Rückschreibe-Transaktion ist. Dementsprechend kön nen der anfordernde Knoten 502 und der abhängige Knoten 512 in der Transaktion als eine einzige Einheit betrachtet werden. Der Knoten 102 (abhängiger Knoten 512/anfordernder Knoten 502) sendet dann eine Kopie des Speicherblocks 208 über den Pfad 506 an den Heimatknoten 100 (Knoten 508), wo der Inhalt des Speicherblocks 208 in den Heimatknoten 100 (Knoten 508) geschrieben wird. Sobald der Inhalt des Speicherblocks 208 zurückgeschrieben ist, kann der Verzeichniseintrag 212 aktualisiert werden (in den der Reihe A) und das Anhängigkeitsbits, welches zu dem Speicherblock 208 gehört, kann dann zurückgesetzt werden.
  • Transaktion # 4 (Reihe D zu Reihe E):
  • Der Knoten 104 möchte eine gemeinsam verwendete, Nur-Lesekopie des Speicherblocks 208 haben und gibt eine RTS (Read to Share – Lesen zum gemeinsamen Verwenden)-Anforderung an die Netzwerkinfrastruktur aus, um eine Nur-Lese-Kopie des Speicherblocks 208 anzufordern. Die Netzwerkinfrastruktur 12 übermittelt dann die RTS-Anforderung von dem anfordernden Knoten 104 (Knoten 502) über den Pfad 504 an den Heimatknoten 100 (Knoten 508).
  • Indem der Verzeichniseintrag 212 überprüft wird, weiß der Heimatknoten 100, dass der Knoten 102 derzeit eine exklusive M-Kopie des Speicherblocks 208 hat und das alle anderen Knoten aktuell ungültige I-Kopien haben. Der Heimatknoten 100 sendet dann eine Nachricht über den Pfad 510, um den abhängigen Knoten 102, der eine M-Kopie hat, zu fragen bzw. aufzufordern, sich selbst in eine S-Kopie herabzustufen und eine Kopie des Speicherblocks 408 an den anfordernden Knoten 104 (Knoten 702) zu übermitteln. Der abhängige Knoten 102 (Knoten 512) sendet dann eine Kopie des Speicherblocks 208 an den anfordernden Knoten 104 (Knoten 502) über den Pfad 514 und stuft gleichzeitig die Kopie, die er hat, von einer exklusiven M-Kopie in eine gemeinsam verwendete S-Kopie herab. Nach dem Empfang einer Kopie des Speicherblocks 208 sendet der anfordernde Knoten 104 (Knoten 502) dann über den Pfad 506 eine Bestätigungsnachricht an den Heimatknoten 100 (Knoten 508), was bewirkt, dass der Verzeichniseintrag 212 aktualisiert wird (in den der Reihe E) und dass das Anhängigkeitsbit, welches zu dem Speicherblock 208 gehört, zurückgesetzt wird.
  • Transaktion # 5 (Reihe F zu Reihe G):
  • In einer Ausführungsform kann, wann immer sich eine gemeinsam verwendete Nur-Lese-S-Kopie irgendwo in dem Knoten befindet, der Heimatknoten auch eine Kopie der gemeinsam verwendeten Nur-Lese-S-Kopie behalten. Die gemeinsam verwendete Nur-Lese-S-Kopie kann beispielsweise von dem anfordernden Knoten 502 (nachdem er eine Kopie des Speicherblockes von dem abhängigen Knoten empfangen hat) an den Heimatknoten 508 gesen det werden, zusammen mit der Bestätigungsnachricht des Pfades 506. Da der Heimatknoten ebenfalls eine gemeinsam verwendete Nur-Lese-S-Kopie hat, kann er in vorteilhafter Weise eine nachfolgende RTS-Anforderung von einem weiteren Knoten in dem Computernetzwerk direkt bedienen, ohne dass er einen anderen Knoten in dem Netzwerk darum bitten muss, eine Kopie des angeforderten Speicherblocks an den anfordernden Knoten zu übermitteln. Diese Transaktion ist als Transaktion # 5 dargestellt, wenn die Zustände des Speicherblocks 208 sich von demjenigen der Reihe F zu denjenigen der Reihe G in 4 verändern.
  • In der Transaktion # 5 haben die Knoten 100 und 102 aktuell gemeinsam verwendete Nur-Lese-S-Kopien des Speicherblocks 208 und die Knoten 104 und 106 haben ungültige I-Kopien desselben Speicherblocks. Der Knoten 104 möchte eine gemeinsam verwendete Nur-Lese-S-Kopie des Speicherblocks 208 haben und gibt eine RTS-Anforderung aus, welche über den Pfad 506 am Heimatknoten 100 (Knoten 508) ankommt. Da der Heimatknoten 100 (Knoten 508) bereits eine gemeinsam verwendete S-Kopie hat (er weiß dies entweder selbst oder aufgrund einer Überprüfung des Verzeichniseintrags 212, das heißt Reihe F) muss er keine Kopie des Speicherblocks 208 von einem anderen Knoten in dem Netzwerk anfordern und kümmert sich in der Tat nicht darum, welche weiteren Kopien auf dem Knoten des Netzwerks existieren mögen. Dementsprechend können der Heimatknoten 508 und der abhängige Knoten 512 als dieselbe Einheit, das heißt als Knoten 100, betrachtet werden und können über den Pfad 514 an den anfordernden Knoten 104 (Knoten 502) mit einer Kopie des Speicherblocks 208 antworten. Nach Empfang einer Kopie des Speicherblocks 208 bestätigt der anfordernde Knoten 104 (Knoten 502) durch Senden einer Nachricht über den Pfad 506 an den Heimatknoten 100 (Heimatknoten 508/abhängiger Knoten 512), was bewirkt, dass der Verzeichniseintrag 212 aktualisiert wird (in denjenigen der Reihe G) und dass das Anhängigkeitsbit, welches zu dem Speicherblock 208 gehört, zurückgesetzt wird.
  • Transaktion # 6 (Reihe G zu Reihe H1:
  • Bei der Transaktion # 6 haben die Knoten 100, 102 und 104 gemeinsam verwendete, Nur-Lese-S-Kopien, während der Knoten 106 eine ungültige I-Kopie des Speicherblocks 208 hat. Anschließend möchte der Knoten 106 (Knoten 502 in 4) eine exklusive M-Kopie haben und gibt eine RTO-Transaktion an die Netzwerkinfrastruktur 12 aus. Die Netzwerkinfrastruktur 12 übermittelt dann die RTO-Anforderung an den Heimatknoten des Speicherblocks 208, das heißt an den Knoten 100, und zwar über den Pfad 504.
  • Durch Überprüfen des Verzeichniseintrags 212 (Reihe G) weiß der Heimatknoten 100 (Knoten 508), dass er eine gemeinsam verwendete Nur-Lese-S-Kopie hat (Reihe G, Spalte 100) und dass andere Knoten, das heißt die Knoten 102 und 104 ebenfalls gemeinsam verwendete Nur-Lese-S-Kopien haben. Der Heimatknoten 100 (Knoten 508) muss Nachrichten an die anderen Knoten im Netzwerk senden, und zwar in einer Ausführungsform auf parallele Weise, um bei diesen abhängigen Knoten, das heißt bei den Knoten 100, 102 und 104 anzufordern, dass sie ihre Kopien des Speicherblocks 208 in ungültige I-Kopien herabstufen.
  • Der Knoten 100 kann sich selbst als abhängigen Knoten behandeln, da eine gültige Kopie des Speicherblocks 208 aktuell auf dem Knoten 100 liegt. Dementsprechend können der Heimatknoten 508 und der abhängige Knoten 512 als dieselbe Einheit betrachtet werden, das heißt als Knoten 100. Eine Konsequenz hieraus ist, dass jegliche Nachrichten, die zwischen diesen beiden Einheiten gesendet werden, als ein Null-Vorgang betrachtet werden können. Der Heimatknoten 100 (Heimatknoten 508/abhängiger Knoten 512) sendet dann eine Kopie des Speicherblocks 208 über den Pfad 514 an den anfordernden Knoten 106 (Knoten 502).
  • Der Heimatknoten 100 (Heimatknoten 508/abhängiger Knoten 512) sendet an den anfordernden Knoten 106 (Knoten 502) auch Information, welche sich auf die Anzahl der abhängigen Knoten in dem Netzwerk bezieht, an welche es die Anforderung zum Herabstufen gesendet hat. Diese Information wird durch den anfordernden Knoten 106 (Knoten 502) gehalten. Alle abhängigen Knoten, an welche der Heimatknoten 508 die Nachricht (über Pfad 510) gesendet hat, sich selbst herabzustufen, berichten auch an den anfordernden Knoten 106 (Knoten 502), um zu bestätigen, dass sie ihre Kopien von gemeinsam verwendeten S-Kopien in ungültige I-Kopien herabgestuft haben. Der anfordernde Knoten 106 (Knoten 502) zählt dann die Anzahl von Bestätigungen, um sicherzustellen, dass alle abhängigen Knoten, die ihre Kopien in dem Netzwerk herabstufen müssen, dies bestätigt haben.
  • Wenn der anfordernde Knoten 106 (Knoten 502) damit zufrieden gestellt ist, dass alle Knoten, die ihre Kopien herabstufen müssen, dies getan haben, sendet der anfordernde Knoten 106 (Knoten 502), dann eine Bestätigungsnachricht über den Pfad 506 an den Heimatknoten 100 (Knoten 508), um zu ermöglichen, dass der Heimatknoten 100 den Verzeichniseintrag 212 (in denjenigen der Reihe H) aktualisiert und das Anhängigkeitsbit, welches zu dem Speicherblock 208 gehört, zurücksetzt.
  • Auch wenn das Verzeichnisprotokoll das Erfordernis einer natürlichen Ordnung und eines natürlichen Rundsendens in einem Computernetzwerk beim Bedienen von Speicherzugriffsanforderungen beseitigt, stellt das Erfordernis eines Verzeichniseintrags für jeden Speicherblock in einem Knoten eine beträchtliche Speichergrundlast (overhead) dar. Diese Speichergrundlast kann für Knoten, die eine große Anzahl von Speicherblöcken haben, beträchtlich sein. In einigen Systemen kann die Implementierung eines Verzeichnisses beispielsweise eine Speicherzusatzlast (bzw. -grundlast) von bis zu 3 % erfordern. Aus diesem Grund wer den Verzeichnisse mitunter durch weniger teuere, wenn auch langsamere Speicher implementiert, wie zum Beispiel durch dynamische Speicher mit wahlfreiem Zugriff (DRAM).
  • Langsamere Speicher bringen jedoch den Nachteil eines Leistungsabfalls bei Systemen mit sich, welche das Verzeichnisprotokoll verwenden. Im Ergebnis sind schon viele Versuche unternommen worden, um die Geschwindigkeit zu optimieren, mit welcher auf Verzeichniseinträge in dem Verzeichnisprotokoll zugegriffen werden kann, um die Erfüllung der Speicherzugriffsanforderungen zu beschleunigen. 6 stellt ein Verzeichniscache-Protokoll zur Optimierung von DSM-Zugriffen unter Verwendung von Verzeichnissen dar. In 6 ist eine Verzeichniseinheit 600 dargestellt, welche ein Verzeichnis 601 und einen Verzeichnis-Cache 604 enthält. Das Verzeichnis 601 enthält Verzeichnis-Einträge 602, die jeweils allgemein einem einseitigen Speicherblock in einem Speichermodul eines Knotens entsprechen, beispielsweise in dem Speichermodul 204 des Knotens 100 von 3. In einer Ausführungsform enthält jeder Verzeichniseintrag 602 in dem Verzeichnis 601 ein Feld zum Speichern der Verzeichniszustände der entsprechenden Speicherblöcke in den Knoten des Computernetzwerks.
  • Der Verzeichnis-fache 604 ist vorgesehen, um die Zugriffsgeschwindigkeit auf Verzeichnis-Einträge 602 zu verbessern. Der Verzeichnis-Cache 604 kann mit einem schnelleren Speichertyp implementiert werden, als derjenige, der zum Implementieren des Verzeichnisses 601 verwendet wurde, beispielsweise durch einen statischen RAM. Der Verzeichnis-Cache 604 enthält Verzeichnis-Cache-Einträge 603, welche einen Teilsatz von Verzeichniseinträgen 602 repräsentieren, die durch irgendeinen Knoten in dem Netzwerk im fache aufgenommen worden sind. Jeder Verzeichnis-Cache-Eintrag 603 kann ein Feld aufweisen, um anzuzeigen, ob der Verzeichniseintrag gültig ist, wobei ein weiteres Feld zum Speichern der Adresse des entsprechenden Speicherblocks im fache aufgenommen ist und noch ein weiteres Feld zum Speichern der Verzeichniszustände der entsprechenden Speicherblöcke in den Knoten des Netzwerks. Funktionell gesprochen kann man sich die Verzeichniseinheit 600 als eine einzige Einheit vorstellen, welche eine zu dem Verzeichnis 210 nach 3 äquivalente Funktion hat, jedoch mit verbesserter Geschwindigkeit.
  • Gemäß dem Verzeichnis-Cache-Protokoll wird, wenn der Zugriff auf einen Speicherblock erwünscht ist, der Verzeichnis-Cache 604 überprüft, um festzustellen, ob der Verzeichniseintrag, welcher dem angeforderten Speicherblock entspricht, bereits in dem Verzeichnis-Cache 604 existiert bzw. vorliegt. Wenn der Verzeichniseintrag, der dem angeforderten Speicherblock entspricht, bereits in dem Verzeichnis-Cache 604 vorliegt, das heißt, wenn es einen Cache-Treffer gibt, ist die Geschwindigkeit, mit welcher dieser Verzeichniseintrag gelesen und modifiziert werden kann, beträchtlich erhöht, wodurch auch die Geschwindigkeit, mit welcher eine Speicherzugriffsanforderung durch den Heimatknoten des angeforderten Speicherblocks bedient werden kann, gesteigert ist.
  • Im Falle eines Cache-Fehlzugriffs (das heißt der Verzeichniseintrag, welcher dem angeforderten Speicherblock entspricht, kann in dem Verzeichnis-Cache 604 nicht gefunden werden), schreibt jedoch das Verzeichnisprotokoll vor, dass das ein geeigneter Verzeichniseintrag aus dem Verzeichnis 601 in dem Verzeichnis-Cache 604 aufgenommen wird. Sobald der geeignete Verzeichniseintrag im Cache aufgenommen ist, kann er abgefragt werden, um das Bedienen der Speicherzugriffsanforderung zu ermöglichen. Nachdem die Speicherzugriffsanforderung, die den Speicherblock angefordert hat, bedient worden ist, kann der im Cache aufgenommene Verzeichniseintrag modifiziert werden, um die Zustände seines entsprechenden Speicherblocks in den Netzwerkknoten wiederzugeben.
  • Auch wenn das Protokoll des Verzeichnis-Caches eine Verbesserung hinsichtlich der Geschwindigkeit darstellt, mit welcher auf Verzeichniseinträge zugegriffen werden kann und mit welcher diese modifiziert werden können (und zusätzlich hinsichtlich der Geschwindigkeit, mit welcher Speicherzugriffsanforderungen bedient werden können) gibt es noch genügend Raum für eine weitere Verfeinerung bzw. Verbesserung. Wie zuvor bereits erwähnt, ist es beispielsweise, wenn ein Verzeichnisfehler vorliegt, notwendig, in dem Verzeichnisprotokoll auf das Verzeichnis 601 zuzugreifen, um den erforderlichen Verzeichniseintrag im Cache aufzunehmen. Das im Cache Aufnehmen eines Verzeichniseintrags aus dem Verzeichnis 601 entspricht einer nicht trivialen Verzögerung bei der Verarbeitung von Speicherzugriffsanforderungen. Diese Verzögerung wird noch verstärkt durch die Tatsache, dass das Verzeichnis 601 aufgrund seiner Größe in einer typischen Anwendung üblicherweise in Form preiswerter und langsamerer Speicher implementiert ist.
  • Weiterhin macht es die Aufnahme erforderlicher Verzeichniseinträge im Verzeichnis-Cache 604 notwendig, dass Cache-Rückschreibevorgänge erfolgen, wann immer der Verzeichnis-Cache 604 voll ist. Ein Cache-Rückschreibevorgang, der Platz für die Aufnahme zusätzlicher Verzeichniseinträge in dem Verzeichnis-Cache 604 schafft, stellt eine weitere, nicht triviale Verzögerung bei der Verarbeitung einer Speicherzugriffsanforderung dar. Weiterhin ist auch die Logik, die erforderlich ist, um einen Verzeichnis-Cache zu steuern, nicht trivial, was beträchtliche Entwicklungs- und Verifizierungsbemühungen erfordert, um seine ordnungsgemäße Implementierung und Betrieb sicherzustellen.
  • Der Artikel "Reducing Memory and Traffic Requirements for Scalable Directory-based fache Coherence Schemes" ("Verminderung der Speicher und Verkehrserfordernisse für erweiterbare Cache-Kohärenzschemata auf Verzeichnisbasis) von A. Gupta et al. (Proc. of the 1990 international conference on parallel processings 13-17 August, pages I-312 – I-321) be schreibt verschiedene Cache-Kohärenzschemata auf Verzeichnisbasis für die Verwendung in einer gemeinsam verwendeten Speicherarchitektur mit mehreren Prozessoren. Eines der beschriebenen Schemata umfasst die Verwendung eines "spärlichen" Verzeichnisses. Das spärliche Verzeichnis ist ein Verzeichnis-Cache, der weniger Einträge enthält, als es entsprechende Speicherblöcke gibt. Dementsprechend kann die Größe des Verzeichnisses reduziert werden. Verzeichnis-basierte Kohärenz-Protokolle stellen die Konsistenz zwischen Clustern von Prozessoren sicher. Für Blöcke, die innerhalb eines Clusters im Cache aufgenommen sind, werden keine Verzeichniseinträge erzeugt, stattdessen wird ein (Verzeichnisfreies) Cache-Kohärenz-"Schnüffel"-Schema auf Bus-Basis bereitgestellt.
  • Der Artikel "Introducing Memory into the Switch Elements of Multiprocessor Interconnection Networks" (Einführen von Speicher in die Zwischenspeicherelemente von Verbindungsnetzwerken mit mehren Prozessoren) von H. E. Mizrahi et al. (Computer Architecture News, vol. 17, No. 3, June, pages 158-166) lehrt ein Mehrprozessor-Verbindungsnetzwerk mit gemeinsam verwendeten Speicher, welches als ein binärer Baum ausgestaltet ist. Blätter des Netzwerks weisen Prozessoren auf und Zwischenknoten des Baumes weisen Schalter bzw. Zwischenspeicher auf. Die Zwischenspeicher können ein Verzeichnis mit Einträgen enthalten, welche Routing-Information bereitstellen. Die Routing-Information zeigt an, welcher Teilbaum des Knotens ein bestimmtes Datenobjekt enthält. Eine Anforderung, die an einem Knoten empfangen wurde, wird dann entlang des angezeigten Teilbaums geleitet. Wenn kein Routing-Eintrag in dem Verzeichnis für die Anforderung vorliegt, wird die Anforderung entlang beider Teilbäume geleitet.
  • Der Artikel "Performance of Pruning-Cache Directories for Large Scale Multiprocessors (Leistungsfähigkeit von Cache-Verzeichnissen mit Abschneiden für Mehrfachprozessoren in großem Maßstab) von S. L. Scott et al. (IEEE transaction on parallel and distributed systems, vol. 4, No. 5, 1 May 1993, pages 520.534) lehrt ein Verfahren zum Vermindern von Ungültigmachen des Verkehrs in einem Mehrprozessorsystem mit einer hierarchischen Topologie. Verzeichnisse können als Abschneide-Caches bzw. abschneidbare Caches ausgestaltet werden und hierarchisch aufgeteilt werden. Die Verzeichnis-Einträge zeigen an, welche Bereiche der Hierarchie oder welche Teilbäume Daten enthalten können, welche einem Ungültigmachen entsprechen. Empfangene Anweisungen zum Ungültigmachen werden dann an diejenige Teilbäume weitergeleitet, welche den Datengegenstand enthalten können. Wenn das Verzeichnis keinen entsprechenden Eintrag enthält, so wird das Ungültigmachen an alle Teilbäume weitergeleitet.
  • Der Artikel "Memory Coherence in Shared Virtual Memory Systems" (Speicher-Kohärenz in gemeinsam verwendeten virtuellen Speichersystemen) von Kai Li et al. (ACM transactions on computer systems, vol. 7, no. 4., 1 November 1989, pages 321-359) lehrt ein gemeinsam verwendetes, virtuelles Speichersystem, in welchem jeder Prozessor diejenigen Speicherseiten verwaltet, die ihm gehören. Bei einem Lese- oder Schreibfehler leitet der auslösende Prozessor eine Rundsendenachricht an die verbleibenden Prozessoren in dem System, um den Besitzer zu lokalisieren.
  • Der Artikel "An Economical Solution to the Cache Coherence Problem" (ökonomische Lösung für das Cache-Kohärenz-Problem) von Archibald J. et al. (Proceedings of annually symposium on computer architecture, Los Angeles, IEEE Comp. Soc. Press, U.S., pages 355-361) ist generell auf ein Cache-Kohärenz-Schema in einem Mehrprozessorsystem gerichtet. Insbesondere lehrt dieses Dokument eine Speichersteuerung, welche dafür ausgelegt ist, ein Verzeichnis zu verwenden, um den Zustand aller Speicherblöcke für ein entsprechendes Speichermodul aufzubewahren, jedoch ohne anzuzeigen, welcher Cache den Block aktuell hat. Demnach wird für die Kohärenz ein Rundsenden an alle Caches benötigt. Es wird weiterhin vorgeschlagen, zusätzlich zu dem Verzeichnis einen kleinen (spärlichen bzw. reduzierten) Verzeichnispuffer zu verwenden, der alle Caches, welche eine Kopie haben, vollständig identifiziert. Nur wenn ein Block in diesem reduzierten Verzeichnispuffer nicht gefunden wird, findet das Rundsenden statt.
  • Keines der oben beschriebenen Dokumente offenbart das Aufnehmen von Verzeichniszuständen in einem Cache, die sich auf einen Speicherblock beziehen, in einem Teilverzeichnis-Cache, wenn eine erste Speicherzugriffsanforderung bezüglich der Verzeichniszustände einen Erneuerungspunkt erzeugt.
  • Ein Erneuerungspunkt ist ein Punkt, an welchem ein Zugriff abgeschlossen ist und alle Zustände eines Speicherblocks an dem Knoten des Netzwerks auf Basis des zuletzt abgeschlossenen ersten Zugriffs vollständig festlegbar sind, ohne dass weitere nachfolgende Zugriffe berücksichtigt werden müssen.
  • In Anbetracht des Vorstehenden sind Verfahren und eine Vorrichtung wünschenswert, welche ermöglichen, dass Verzeichniseinträge, welche Speicherblöcken des verteilten Speichers eines Netzwerks entsprechen, beim Bedienen von Speicherzugriffsanforderungen in wirksamer Weise zugänglich sind.
  • In den anhängenden Ansprüchen sind entsprechende verschiedene Gesichtspunkte und Merkmale der Erfindung definiert.
  • Die Erfindung wird nun beispielhaft unter Bezug auf die beigefügten Figuren beschrieben, in welchen gleiche Teile durchgehend mit gleichen Bezugszeichen bezeichnet sind und in welchen:
  • 1, nur für Zwecke der Erläuterung, ein Computernetzwerk veranschaulicht, welches eine Mehrzahl von Knoten und eine Netzwerkinfrastruktur hat.
  • 2 ein Schema eines Computernetzwerkknotens zum Implementieren einer Version des Bus-basierten Protokolls nach dem Stand der Technik ist.
  • 3 nur für Zwecke der Erläuterung einen Computernetzwerkknoten zum Implementieren des Verzeichnisprotokolls nach dem Stand der Technik illustriert,
  • 4 nur zum Zwecke der Erläuterung und in Reaktion auf verschiedene Speicherzugriffsanforderungen, die Zustände eines Speicherblocks in dem Knoten des Netzwerks nach 1 illustriert.
  • 5 ein Zustandsdiagramm ist, welches die verschiedenen Kommunikationspfade zwischen einem anfordernden Knoten, einem Heimatknoten und einem abhängigen Knoten beim Bedienen von Speicherzugriffsanforderungen illustriert.
  • 6 ein Diagramm ist, welches ein Verzeichnis und einen Verzeichnis-Cache zum Implementieren des Verzeichnis-Cache-Protokolls zeigt,
  • 7 für Zwecke der Erläuterung einen Computernetzwerkknoten zum Implementieren des verzeichnisfreien Protokolls illustriert,
  • 8a und 8b entsprechend verschiedenen Aspekten der vorliegenden Erfindung die Organisation der Struktur mit Anhängigkeitsflag in dem verzeichnisfreien Protokoll zeigen.
  • 9 ein Zustandsdiagramm ist, welches die verschiedenen Kommunikationspfade zwischen einem anfordernden Knoten, einem Heimatknoten und einem abhängigen Knoten beim Bedienen von Speicherzugriffsanforderungen in dem verzeichnisfreien Protokoll illustriert.
  • 10 entsprechend einem Aspekt der vorliegenden Erfindung einen Computernetzwerkknoten zum Implementieren des Hybrid-Protokolls illustriert,
  • 11 ein Flussdiagramm ist, welches in einer Ausführungsform der vorliegenden Erfindung die an dem Heimatknoten erfolgenden Schritte beim Bedienen einer empfangenen Speicherzugriffsanforderung in einer Ausführungsform der vorliegenden Erfindung illustriert,
  • 12 ein Flussdiagramm ist, welches in einer Ausführungsform der vorliegenden Erfindung die Schritte veranschaulicht, die an dem Heimatknoten bei der Aufnahme eines Verzeichniseintrags in dem teilweisen Verzeichnis-Cache verwendet werden, wenn ein Erneuerungspunkt erfasst wird.
  • Es wird nun eine Erfindung beschrieben, die sich auf ein Hybrid-Protokoll bezieht, um es Knoten eines Computernetzwerks zu ermöglichen, auf den verteilten, gemeinsam verwendeten Speicher eines Netzwerks in effizienter Weise zuzugreifen. In der folgenden Beschreibung sind zahlreiche spezielle Details dargelegt, um ein gründliches Verständnis der vorliegenden Erfindung zu gewährleisten. Es liegt jedoch für Fachleute auf der Hand, dass die vorliegende Erfindung ohne einige oder gar alle dieser speziellen Details ausgeführt werden kann. In anderen Fällen sind wohlbekannte Strukturen und Verfahrensschritte nicht im Einzelnen beschrieben worden, um die vorliegende Erfindung nicht unnötig zu verschleiern.
  • Gemäß einer Ausführungsform der Erfindung wird ein Hybrid-Protokoll bereitgestellt, um es dem Heimatknoten eines angeforderten Speicherblocks zu ermöglichen, Vorteil aus einem Treffer im Verzeichnis-Cache zu ziehen. Unter Verwendung der in dem Verzeichnis-Eintrag eines Caches enthaltenen Information kann eine Speicherzugriffsanforderung schnell in der zu dem zuvor erwähnten Verzeichnisprotokoll gehörenden Weise bedient werden.
  • Im Falle eines Fehlzugriffs im Verzeichnis-Cache, das heißt es gibt keinen Verzeichniseintrag, welcher in dem Verzeichnis-Cache dem angeforderten Speicherblock entspricht, wird in vorteilhafter Weise ein verzeichnisloses bzw. verzeichnisfreies Protokoll verwendet. Wie schon der Name sagt, ermöglicht das verzeichnisfreie Protokoll es dem Heimatknoten, eine Speicherzugriffsanforderung von irgendeinem Knoten in dem Netzwerk zu bedienen, ohne Information zu verwenden, die typischerweise in einem zu dem Verzeichnisprotokoll gehörenden Verzeichniseintrag bereitgestellt wird.
  • Das verzeichnisfreie Protokoll wird nunmehr im Einzelnen in Verbindung mit den 7 bis 10 erläutert. 7 zeigt ein Schema eines Computernetzwerkknotens, wie zum Beispiel des Knotens 100 nach 1, welches geeignet ist, das verzeichnisfreie Protokoll zu implementieren. In 7 ist der Knoten 100 so dargestellt, dass er einen Prozessor 700 besitzt. Der Prozessor 700 ist mit einem Speicher-Cache 702 verbunden, welcher verwendet wird, um angeforderte Speicherblöcke im Cache aufzunehmen. Die durch den Speicher-Cache 700 aufgenommenen Speicherblöcke entsprechen Speicherblöcken, welche durch den Knoten 100 angefordert wurden. Der Heimatknoten eines im fache aufgenommenen Speicherblocks kann derselbe Knoten wie derjenige Knoten sein, auf welchem das Verzeichnis aufbewahrt WIRDoder es kann ein anderer Knoten in dem Netzwerk sein.
  • Sowohl der Speicher-Cache 702 als auch das Speichermodul 704 sind mit einer Netzwerkschnittstelle 706 verbunden. Die Netzwerkschnittstelle 706 entspricht dem Schaltkreis, der es dem Knoten 100 ermöglicht, mit der Netzwerkinfrastruktur zu kommunizieren, wie zum Beispiel der Netzwerkinfrastruktur 12 nach 1. Das Verzeichnismodul 704 hat typischerweise einen Adressbereich, der sich von den Adressbereichen, welche zu anderen Speichermodulen in dem Netzwerk gehören, unterscheidet. Die Einheit bzw. Gesamtheit aller Speichermodule 704 in einem Netzwerk bildet den verteilten, gemeinsam verwendeten Speicher (DSM). Das Speichermodul 704 enthält weiterhin alle Speicherblöcke eines Knotens. Wenn das Netzwerk im Ruhezustand ist, hat jeder Speicherblock einen Heimatknoten. Wie bereits zuvor erwähnt, kann der Knoten 100 einfach nur ein einzelner Prozessor sein, der einen Cache hat oder er kann so komplex sein, dass er ein komplettes Multiprozessor-System auf Bus-Basis ist.
  • Um das verzeichnisfreie Protokoll zu implementieren, wird eine Struktur 710 mit Anhängigkeitsflags bereitgestellt. Die Struktur 710 von Anhängigkeitsflags ist mit der Netzwerkschnittstelle 706 verbunden. Die Struktur 710 mit Anhängigkeitsflags repräsentiert die Speicherstruktur zum Speichern des Flags, das anzeigt, ob auf einem bestimmten Speicherblock, beispielsweise den Speicherblock 708, durch aktuell gerade durch einen Netzwerkknoten zugegriffen wird und ob dieser durch einen anderen Knoten nicht gelesen oder beschrieben werden soll. Wenn ein Anhängigkeitsflag gesetzt ist, wird der Zugriff auf den zugehörigen Speicherblock für andere Netzwerkknoten verhindert. Wenn ein Anhängigkeitsflag zurückgesetzt wird, ist der zugehörige Speicherblock für die Bedienung der nächsten Transaktion verfügbar, welche ihn anfordert.
  • Die Struktur 710 mit Anhängigkeitsflags kann implementiert werden, durch Bereitstellen eines Flag (was ein einziges Bit sein kann, auch wenn mehrere Bits ebenso gut verwendet werden können) für jeden Speicherblock des Speichermoduls 704. Eine gewisse vordefinierte Beziehung zwischen den Adressen der Speicherblöcke in dem Speichermodul 704 und den Adressen von Flags in der Struktur der Anhängigkeitsflags kann es dem Knoten 100 erlauben, den eindeutigen Speicherblock, der zu jedem Flag gehört, festzustellen. Beispielsweise kann, wenn die Adresse des Speichermoduls 704 um 64 erhöht wird, die Adresse der Struktur der Anhängigkeitsflags beispielsweise um 1 zunehmen. 8a zeigt diese Implementierung, wobei Anhängigkeitsflags 804810 auf die Speicherblöcke des Speichermoduls 704 abgebildet werden, wobei irgendeine übliche Zuordnungstechnik verwendet wird, beispielsweise die oben beschriebene Zuordnungstechnik.
  • Es ist nicht erforderlich, dass jeder Speicherblock in der Struktur 710 der Anhängigkeitsflags ein zugeordnetes Anhängigkeitsflag hat. Wie in 8b dargestellt, wird jeder Anhängigkeitsstruktur-Eintrag 830 in der Struktur 710 der Anhängigkeitsflags implementiert durch ein Feld 812 von Anhängigkeitsflags und ein Adressfeld 814, wenn ein Speicherblock "anhängig" ist, so wird seine Adresse in das Adressfeld 814 einer Anhängigkeitsstruktur 830 einge geben und das Anhängigkeitsflag in dem Feld 812 für Anhängigkeitsflags wird gesetzt. Die Anzahl der Einträge 430 der Anhängigkeitsstruktur in der Struktur 710 aus Anhängigkeitsflags kann kleiner sein als die Anzahl von Speicherblöcken in dem Speichermodul 704, um die Speichergrundlast ("overhead") zu reduzieren. Die Implementierung gemäß 8B ist vorteilhaft für Netzwerkknoten, die ein relativ großes Speichermodul 704 haben, da typischerweise nur eine kleine Anzahl von Speicherblöcken zu einem gegebenen Zeitpunkt im Cache aufgenommen ist und da die Anzahl von Einträgen 430 der Anhängigkeitsstruktur relativ klein gehalten werden kann. Die Anzahl von Einträgen 430 der Anhängigkeitsstruktur kann von System zu System in starkem Maße variieren, je nach der Anzahl der Speicherblöcke, von denen man erwartet, dass sie zu irgendeinem gegebenen Zeitpunkt im Cache aufgenommen sind (wobei diese Anzahl für ein bestimmtes Netzwerk statistisch bestimmt werden kann). Die Betriebsweise des vorliegenden verzeichnisfreien Protokolls kann am besten unter Bezug auf die Beispiele nach 4 und das Zustandsdiagramm nach 9 beschrieben werden. In 4 sind in den Reihen A-H die Zustände für den Speicherblock 708 des Knotens 100 nach 7 in den vier Knoten des Netzwerks dargestellt. Man sollte dabei im Hinterkopf behalten, dass, auch wenn hier im einzelnen nur einzelner Speicherblock 708 beschrieben wird, um die Darstellung zu vereinfachen, die Aufnahme im Cache typischerweise mit einer Mehrzahl von Speicherblöcken erfolgt. Man sollte auch im Hinterkopf behalten, dass die Anzahl von Knoten in einem Netzwerk entsprechend den Erfordernissen variiert werden kann. Weiterhin ist die Matrix gemäß 4 hier nur für Zwecke der Erläuterung dargestellt. In dem verzeichnisfreien Protokoll ist es nicht notwendig, eine zentralisierte Matrix oder ein Verzeichnis in dem Computerspeicher zu erzeugen und aufrecht zu erhalten.
  • In Reihe A ist der Knoten 100 mit einer exklusiven M-Kopie des Speicherblocks 708 (M-Zustand in Reihe A, Spalte 100) dargestellt. Definitionsgemäß müssen alle anderen Netzwerkknoten ungültige Kopien des Speicherblocks 708 haben (dargestellt durch den Zustand I in Reihe A, Spalten 102106). Im Übrigen ist die M-Kopie des Speicherblocks 708 aktuell durch den Speicher-Cache in seinem Heimatknoten 100 aufgenommen.
  • Transaktion # 1, Reihe A zur Reihe B in 4): Angenommen der Knoten 104 möchte nun eine exklusive M-Kopie des Speicherblocks 708 haben, die, wie in Reihe A angezeigt, aktuell in ihrem Heimatknoten 100 liegt. Gemäß 4 stellt der Knoten 104 den anfordernden Knoten 902 dar, während der Knoten 100 den Heimatknoten für den Speicherblock 708 darstellt, der in 4 als Heimatknoten 908 gezeigt ist. Der abhängige Knoten 912 repräsentiert den Knoten, bei welchem die Kopie des Speicherblocks 708 gerade liegt. In Reihe A ist der abhängige Knoten 912 zufällig derselbe Knoten, wie der Heimatknoten, das heißt der Knoten 100.
  • Die RTO-Anforderung von dem Knoten 104 (in dieser ersten Transaktion der anfordernde Knoten 902), wird an dem Heimatknoten 100 (Knoten 108) über den Pfad 904 weitergeleitet. Das Weiterleiten der RTO-Transaktion von dem anfordernden Knoten an den Heimatknoten kann durch die Netzwerkinfrastruktur 12 unter Verwendung der Adresse gehandhabt werden, die mit der RTO-Anforderung bereitgestellt wird. Die Netzwerkinfrastruktur 12 weiß, wo der Heimatknoten für einen bestimmten Speicherblock sich befindet, in dem sie beispielsweise seine Adresse auf die Adressbereiche der verschiedenen Knoten abbildet. Wenn der Heimatknoten 100 (Knoten 108) die RTO-Nachricht empfängt, setzt er das zu dem angeforderten Speicherblock 708 gehörige Anhängigkeitsflag. Weiterhin weiß er, dass er eine exklusive M-Kopie des Speicherblocks 708 besitzt und kann daher ableiten, dass alle anderen Knoten ungültige Kopien des Speicherblocks 708 haben müssen. Da dies außerdem der Knoten ist, bei welchem die Kopie liegt (abhängiger Knoten 912), kann man sich den Knoten 100 nach 9 vorstellen als einen, der sowohl den Heimatknoten 908 als auch den abhängigen Knoten 912 umfasst.
  • Der Knoten 100 (Heimatknoten 908/abhängiger Knoten 912) sendet dann eine Kopie des angeforderten Speicherblocks 708 über den Pfad 914 an den anfordernden Knoten 104 (Knoten 902). Nach Empfang einer Kopie des Speicherblocks 708 aktualisiert der anfordernde Knoten 104 (Knoten 902) dann seine Kopie zu einer exklusiven M-Kopie und sendet über den Pfad 906 eine Bestätigungsnachricht an den Heimatknoten 100 (Knoten 908). Der Empfang der Bestätigungsnachricht durch den Heimatknoten 100 (Knoten 908) ermöglicht es, dass das Anhängigkeitsflag, welches zu dem Speicherblock 708 gehört, zurückgesetzt wird, und erlaubt dadurch, dass nachfolgende Transaktionen, welche den Speicherblock 708 betreffen, bedient werden können. Wie bei der Transaktion #1 dargestellt, beseitigt die Verwendung von Anhängigkeitsflags und expliziten Nachrichten zwischen dem anfordernden Knoten, dem Heimatknoten und dem abhängigen Knoten (über die Pfade 904, 906, 910 und 914) das Erfordernis eines Netzwerk-weiten Rundsendens, um diese RTO-Transaktion # 1 zu bedienen.
  • Darüber hinaus beseitigt die Verwendung des Anhängigkeitsflags das Erfordernis eines natürlichen Ordnungsmechanismus, da Transaktionen durch den empfangenden Heimatknoten in der Reihenfolge in einer Schlange angeordnet werden können, in welcher sie empfangen werden und in dieser Reihenfolge bedient werden, sobald das Anhängigkeitsflag zurückgesetzt wird. Wie Fachleute auf diesem Gebiet erkennen, ist die Anzahl von Nachrichten, die in dem Netzwerk gesendet werden, in vorteilhafter Weise für die Transaktion # 1 in dem verzeichnisfreien Protokoll dieselbe wie bei der Implementierung, welche das Verzeichnis-Protokoll verwendet, das heißt es gibt keinen Nachteil hinsichtlich der Leistungsfähigkeit, der mit der Verwendung des verzeichnisfreien Protokolls für die Transaktion # 1 verknüpft wäre. In vorteilhafter Weise ist jedoch das Verzeichnis ebenso wie seine damit zusammenhängen den Komplexitäten und die Grundlast bzw. Überlast hinsichtlich Speicherung/Transaktion bei dem erfindungsgemäßen verzeichnisfreien Protokoll nicht erforderlich.
  • Transaktion # 2 (Reihe B zu Reihe D):
  • In der Transaktion # 2 wirkt der Knoten 102 als der anfordernde Knoten und fordert eine exklusive Kopie des Speicherblocks 708 an, indem er eine RTO-Transaktion ausgibt. Die RTO-Transaktion wird durch die Netzwerkinfrastruktur 12 an den Heimatknoten 100 des Speicherblocks 708 geleitet, das heißt über den Pfad 904 an den Knoten 908 in der Transaktion # 2, und bewirkt, dass der Heimatknoten 100 das mit dem Speicherblock 708 verknüpfte Anhängigkeitsflag setzt.
  • Da der Knoten 100 lediglich weiß, dass er eine ungültige Kopie des Speicherblocks 708 hat (Reihe B, Spalte 100), und keinen direkten Verzeichniseintrag hat, um das verzeichnisfreie Protokoll zu befragen, weiß der Knoten 100 nicht, wo in dem Netzwerk eine gültige Kopie des Speicherblocks 708 gefunden werden kann. Der Knoten 100 muss jedoch bei dem Knoten, der die Kopie des Speicherblocks 8 hat, das Weiterleiten dieser Kopie an den anfordernden Knoten 102 anfordern. Dementsprechend sendet der Heimatknoten 100 (Knoten 908) in einer Ausführungsform eine Anforderung über den Pfad 910 in paralleler Weise an alle anderen Knoten in dem Netzwerk mit Ausnahme des anfordernden Knotens (Knoten 102 in der Transaktion # 1) und an sich selbst (Knoten 100). In diesem Fall betrifft daher die Anzahl von Nachrichten, die durch die Netzwerkschnittstelle 12 von dem Heimatknoten gesendet wird, Total – 2, wobei Total die Gesamtzahl von Knoten in einem Computernetzwerk 10 repräsentiert.
  • Wenn ein Knoten, der die Nachricht von dem Heimatknoten 100 empfängt, auf die Anforderung nicht in der Weise erwidern kann, dass er eine Kopie des Speicherblocks 708 an den anfordernden Knoten sendet, das heißt wenn er keine gültige Kopie des Speicherblocks 708 hat, ignoriert der empfangende Knoten einfach die Anforderung von dem Heimatknoten. Bei dieser Transaktion antwortet der Knoten 104, der aktuell die einzige exklusive Kopie des Speicherblocks 708 hat (wie es in Reihe B dargestellt ist), über den Pfad 914 an den anfordernden Knoten 102 (Knoten 902 in der Transaktion # 2). Der Knoten 104 ist der abhängige Knoten in dieser Transaktion, da er den Knoten repräsentiert, bei welchem eine gültige Kopie des angeforderten Speicherblocks aktuell liegt. Der Knoten 104 (abhängiger Knoten 912) stuft seine Kopie von einer exklusiven M-Kopie herab zu einer ungültigen I-Kopie, da definitionsgemäß dann, wenn ein Knoten in dem Computernetzwerk, das heißt der anfordernde Knoten 102, eine exklusive M-Kopie hat, alle anderen Knoten ungültige Knoten I-Kopien haben müssen.
  • Wenn der anfordernde Knoten 902 (Knoten 102 in der Transaktion # 2) eine Kopie des Speicherblocks 708 empfängt, so vermerkt er intern, dass er nunmehr eine exklusive M-Kopie hat (Reihe D, Spalte 102, und gibt über Pfad 906 eine Bestätigung raus. Wenn der Heimatknoten 100 (Knoten 908) die Bestätigungsnachricht von dem anfordernden Knoten über den Pfad 906 empfängt, aktualisiert er seine Kopie, falls erforderlich (in diesem Fall erweist es sich als unnötig, und setzt das Anhängigkeitsflag, welches zu dem Speicherblock 708 gehört, zurück, so dass andere Transaktionen, welche den Speicherblock 708 betreffen, bedient werden können.
  • Wie man anhand der Diskussion bezüglich der Transaktion # 2 erkennen kann, beträgt, wenn der Heimatknoten nicht die exklusive M-Kopie eines Speicherblocks hat und eine RTO-Anforderung empfängt, die sich auf diesen Speicherblock bezieht, die Anzahl der Nachrichten, die er über die Netzwerkinfrastruktur 12 senden muss, um bei einem anderen Knoten anzufordern, dass er das Weiterleiten einer Kopie des angeforderten Speicherblocks an den anfordernden Knoten ermöglicht, zumindest Total – 2. Von den gesandten Nachrichten ist die Anzahl der Nachrichten, die "verschwindet" bzw. überflüssig ist, das heißt durch die empfangenden abhängigen Knoten ignoriert wird, Total – 3 (da einer der empfangenen Knoten derjenige Knoten ist, der durch Senden einer gültigen Kopie des Speicherblocks 708 an den anfordernden Knoten reagieren kann). Demnach ist in Transaktion # 2 die Anzahl von Nachrichten, die durch den Heimatknoten über die Netzwerkinfrastruktur 12 gesendet werden müssen, um die RTO-Anforderung zu erfüllen, möglicherweise größer als im Fall des Verzeichnis-Protokolls. Für relativ kleine Netzwerke, die eine relativ kleine Anzahl von Knoten haben, kann die Anzahl der verschwendeten Nachrichten jedoch aufgrund der beträchtlich einfacheren Implementierung des verzeichnisfreien Protokolls gerechtfertigt sein.
  • Transaktion # 3 (Reihe D zu Reihe A):
  • In der Transaktion # 3 fordert der Knoten 102, der eine exklusive M-Kopie hat, das Zurückschreiben des Inhalts des Speicherblocks 708 in den Heimatknoten 100. Ein Knoten möchte möglicherweise einen Speicherblock zurückschreiben, den er früher aus einer Vielzahl von Gründen im Cache aufgenommen hatte, das heißt er möchte einen anderen Speicherblock im Cache aufnehmen und hat keinen Platz in seinem Speicher-Cache. Gemäß 2 sendet der anfordernde Knoten 102 (Knoten 902) eine Rückschreibe-(WB-)Transaktion an die Netzwerkinfrastruktur. Die Netzwerkinfrastruktur leitet dann diese Anforderung an den Heimatknoten des Speicherblocks 708, das heißt den Knoten 100 über den Pfad 904. Nach Empfang dieser WB-Anforderung setzt der Heimatknoten 100 (Knoten 908) das zu dem Speicherblock 708 gehörige Anhängigkeitsflag.
  • Auch wenn der Heimatknoten 100 nur eine ungültige I-Kopie des Speicherblocks 708 hat (wie in Reihe D, Spalte 100 gemäß 4 dargestellt), kann er ableiten, dass, da der Knoten 102 ein Zurückschreiben fordert, der Knoten 102 eine exklusive M-Kopie des Speicherblocks 708 haben muss. Dementsprechend sendet der Heimatknoten 100 (Knoten 908) über den Pfad 910 eine Nachricht an den abhängigen Knoten 912 und fordert ihn zum Zurückschreiben auf. Der abhängige Knoten 912 repräsentiert denjenigen Knoten, der aktuell gerade die Kopie des Speicherblocks 708 hat, der zufälligerweise bei dieser Rückschreibe-Transaktion derselbe Knoten wie der anfordernde Knoten 102 ist. Dementsprechend können der anfordernde Knoten 902 und der abhängige Knoten 912 in dieser Transaktion als eine einzige Einheit betrachtet werden. Der Knoten 102 (abhängiger Knoten 912/anfordernder Knoten 902) sendet dann eine Kopie des Speicherblocks 708 über den Pfad 906 an den Heimatknoten 100 (Knoten 908), wo der Inhalt des Speicherblocks 708 in den Heimatknoten 100 (Knoten 908) geschrieben wird. Sobald der Inhalt des Speicherblocks 708 zurückgeschrieben worden ist, kann dann das Anhängigkeitsflag, welches zu dem Speicherblock 708 gehört, zurückgesetzt werden.
  • In der Transaktion # 3 liegt eine mögliche Konkurrenzsituation vor, wenn die Rückschreibeanforderung vom Knoten 102 hinsichtlich ihrer Ankunft am Heimatknoten 100 verzögert ist, und wenn in der Zwischenzeit ein anderer Knoten in dem Netzwerk eine Transaktion ausgibt, welche den Speicherblock 708 betrifft, dier bedient werden muss, bevor die Rückschreibeanforderung von dem anfordernden Heimatknoten 102 beim Heimatknoten 100 ankommt. In dieser Situation schreitet der Heimatknoten 100 nach Empfang der später ausgegebenen jedoch früher angekommenen Transaktionsanforderung, wenn er sieht, dass das Anhängigkeitsflag, welches zu dem Speicherblock 708 gehört, nicht gesetzt worden ist, möglicherweise zum Bedienen dieser später ausgegebenen Anforderung fort.
  • Das Bedienen dieser später ausgegebenen Anforderung kann bewirken, dass die Kopie des Speicherblocks 708 von dem Knoten 102 weg bewegt wird. Wenn die Rückschreibeanforderung von dem Knoten 102 schließlich am Heimatknoten 100 ankommt und bedient wird, hat der Knoten 102 möglicherweise keine exklusive M-Kopie des Speicherblocks 708 mehr. Wenn ein Heimatknoten, zum Beispiel der Knoten 100, eine Rückschreibeanforderung empfängt, so kann er einfach über den Pfad 910 an den anfordernden/abhängigen Knoten antworten, um den anfordernden/abhängigen Knoten zu bitten, nur dann zurückzuschreiben, wenn der anfordernde/abhängige Knoten noch immer eine exklusive M-Kopie des Speicherblocks hat. Ansonsten ignoriert der Heimatknoten einfach die empfangene Rückschreibeanforderung. In vorteilhafter Weise werden, indem an den Knoten, welcher des Zurückschreiben anfordert, auf diese Weise geantwortet wird, mögliche Konkurrenzsituationen in vorteilhafter Weise vermieden.
  • Transaktion # 4 (Reihe D zu Reihe E):
  • Der Knoten 104 möchte eine gemeinsam verwendete Nur-Lese-Kopie des Speicherblocks 708 haben und gibt eine RTS-(Read-to-Share)-Anforderung an die Netzwerkinfrastruktur aus, um eine Nur-Lese-Kopie des Speicherblocks 708 anzufordern. Die Netzwerkinfrastruktur 12 leitet die RTS-Anforderung über den Pfad 904 von dem anfordernden Knoten 104 (Knoten 902) an den Heimatknoten 100 (Knoten 908) was bewirkt, das das Anhängigkeitsflag, welches zu dem Speicherblock 708 gehört, gesetzt wird.
  • Der Heimatknoten 100 weiß lediglich, dass er eine ungültige I-Kopie hat (Reihe D, Spalte 100). Ohne Wissen darüber, welcher Knoten in dem Netzwerk eine gemeinsam verwendete S-Kopie oder eine exklusive M-Kopie hat, muss der Heimatknoten 100 (Knoten 908) eine Anforderung an alle übrigen Knoten in dem Netzwerk rundsenden, um den Knoten, der eine M-Kopie hat, aufzufordern, sich selbst zu einer S-Kopie herabzustufen und eine Kopie des angeforderten Speicherblocks 708 an den anfordernden Knoten 104 (Knoten 902) zu senden. Die Anzahl von Anforderungen, welche über den Pfad 910 von dem Heimatknoten 100 (Knoten 908) aus an die übrigen Knoten in dem Computernetzwerk gesendet werden, ist wiederum Total -2 (es ist nicht erforderlich, eine Anforderung an den Heimatknoten oder an denjenigen Knoten zu senden, welcher eine Kopie des Speicherblocks 708 anfordert).
  • In diesem Fall entspricht der Knoten 102 dem abhängigen Knoten, welcher zuvor die exklusive M-Kopie hatte (Reihe D, Spalte 102). Der abhängige Knoten 102 (Knoten 912) sendet dann eine Kopie des Speicherblocks 708 an den anfordernden Knoten 104 (Knoten 902), und stuft gleichzeitig die Kopie, die er hat, von einer exklusive M-Kopie in eine gemeinsam verwendete S-Kopie herab (von Reihe D, Spalte 102 zu Reihe E, Spalte 102). Nach Empfang einer Kopie des Speicherblocks 708 sendet dann der anfordernde Knoten 104 (Knoten 902) eine Bestätigungsnachricht an den Heimatknoten 100 (Knoten 908), welcher das Anhängigkeitsflag zurücksetzt.
  • Transaktion # 5 (Reihe F zu Reihe G):
  • Wann immer sich eine gemeinsam verwendete Nur-Lese-S-Kopie irgendwo in dem Knoten befindet, kann der Heimatknoten ebenfalls eine gemeinsam verwendete Nur-Lese-S-Kopie behalten. Die gemeinsam verwendete Nur-Lese-S-Kopie kann beispielsweise von dem anfordernden Knoten 902 (nachdem er eine Kopie des angeforderten Speicherblocks von dem abhängigen Knoten empfangen hat) zusammen mit einer Bestätigungsnachricht auf dem Pfad 906 an den Heimatknoten 908 gesendet werden. Da der Heimatknoten eine gemeinsam verwendete Nur-Lese-S-Kopie hat, kann er in vorteilhafter Weise einen nachfolgende RTS-Anforderung von einem anderen Knoten in dem Computernetzwerk bedienen, ohne ei nen anderen Knoten bitten zu müssen, seine Kopie an den anfordernden Knoten zu senden. Diese Transaktion ist als Transaktion # 5 dargestellt, wenn die Zustände des Speicherblocks 708 sich von denjenigen der Reihe F zu denjenigen der Reihe G in 4 verändern.
  • In Transaktion # 5 haben die Knoten 100 und 102 aktuell gemeinsam verwendete Nur-Lese-S-Kopien des Speicherblocks 708 und die Knoten 104 und 106 haben ungültige I-Kopien desselben Speicherblocks. Der Knoten 104 möchte eine gemeinsam verwendete Nur-Lese-S-Kopie des Speicherblocks 708 haben und gibt eine RTS-Anforderung aus, die am Heimatknoten 100 (Knoten 908) über den Pfad 906 ankommt und bewirkt, dass das Anhängigkeitsflag, welches zu dem Speicherblock 708 gehört, gesetzt wird. Da der Heimatknoten 100 (Knoten 908) bereits eine gemeinsam verwendete S-Kopie hat, muss er nicht eine Kopie des Speicherblocks 708 von irgendeinem anderem Knoten in dem Netzwerk anfordern und kümmert sich in der Tat nicht darum, welche anderen Kopien auf den Knoten des Netzwerks existieren mögen. Dementsprechend können der Heimatknoten 908 und der abhängige Knoten 912 als dieselbe Einheit, das heißt als Knoten 100, angesehen werden und können über den Pfad 914 an den anfordernden Knoten 104 (Knoten 902) mit einer Kopie des Speicherblocks 708 antworten. Nach Empfang einer Kopie des Speicherblocks 708 bestätigt der anfordernde Knoten 104 (Knoten 902) durch Senden einer Nachricht über den Pfad 906 an den Heimatknoten 100 (Heimatknoten 908/abhängiger Knoten 912), was bewirkt, dass das Anhängigkeitsflag, welches zu dem Speicherblock 708 gehört, zurückgesetzt wird.
  • Transaktion # 6 (Reihe G zu Reihe H):
  • In der Transaktion # 6 haben die Knoten 100, 102 und 104 gemeinsam verwendete Nur-Lese-S-Kopien, während der Knoten 106 eine ungültige I-Kopie des Speicherblocks 708 hat. Anschließend möchte der Knoten 106 (Knoten 902 in 4) eine exklusive M-Kopie haben und gibt eine RTO-Transaktion an die Netzwerkinfrastruktur 12 aus. Die Netzwerkinfrastruktur 12 leitet die RTO-Anforderung über den Pfad 904 an den Heimatknoten des Speicherblocks 708, das heißt an den Knoten 100, was bewirkt, dass das Anhängigkeitsflag, welches zu dem Speicherblock 708 gehört, gesetzt wird. Da der Heimatknoten 100 (Knoten 908) lediglich weiß, dass er eine gemeinsam verwendete Nur-Lese-S-Kopie hat (Reihe G, Spalte 100), und da es gemäß dem verzeichnisfreien Protokoll kein zentrales Verzeichnis in dem Heimatknoten gibt, welches befragt werden könnte, muss der Heimatknoten 100 (Knoten 908) Nachrichten an die anderen Knoten in dem Netzwerk senden, um sie aufzufordern, ihre Kopie des Speicherblocks 708 zu ungültigen I-Kopien herabzustufen, falls sie zuvor gemeinsam verwendete Nur-Lese-S-Kopien hatten. Erneut ist auch hier die Anzahl von Nachrichten, die über dem Pfad 910 an andere Knoten in dem Netzwerk gesendet werden müssen, Total – 2 (da der Heimatknoten 100 keine Nachricht an sich selbst oder an den anfordernden Knoten senden muss).
  • Weiterhin kann der Knoten 100 sich selbst als einen abhängigen Knoten behandeln, da in eine gültigen, wenn auch gemeinsam verwendete Kopie des Speicherblocks 708 gerade auf dem Knoten 100 liegt. Dementsprechend können der Heimatknoten 908 und der abhängige Knoten 912 als dieselbe Einheit betrachtet werden, das heißt als der Knoten 100. Der Heimatknoten 100 (Heimatknoten 908/abhängiger Knoten 912) sendet dann eine Kopie des Speicherblocks 708 über den Pfad 914 an den anfordernden Knoten 106 (Knoten 902).
  • Der Heimatknoten 100 (Heimatknoten 908/abhängiger Knoten 912) sendet an den anfordernden Knoten 106 (Knoten 902) auch Information bezüglich der Anzahl von abhängigen Knoten in dem Netzwerk, an welche er die Anforderung zum Herabstufen gesendet hat. Diese Information wird durch den anfordernden Knoten 106 (Knoten 902) gehalten. Jeder abhängige Knoten, an welchen der Heimatknoten 908 (über Pfad 910) die Nachricht sendet, sich selbst herabzustufen, berichtet ebenfalls an den anfordernden Knoten 106 (Knoten 902) über den Pfad 914, um zu bestätigen, dass er entweder seine Kopie von einer gemeinsam verwendeten S-Kopie in eine ungültige I-Kopie herabgestuft hat oder dass er bereits eine ungültige I-Kopie hat und nicht weiter herabzustufen braucht. Der anfordernde Knoten 106 (Knoten 902) zählt dann die Anzahl von Bestätigungen um sicherzustellen, dass alle abhängigen Knoten in dem Netzwerk eine Bestätigung gesendet haben.
  • Wenn der anfordernde Knoten 106 (Knoten 902) damit zufrieden gestellt ist, dass alle Knoten, die ihre Kopien herabstufen müssen, dies auch getan haben, sendet der anfordernde Knoten 906 (Knoten 902) dann über den Pfad 906 eine Bestätigungsnachricht an den Heimatknoten 100 (Knoten 908), um es dem Heimatknoten 100 zu ermöglichen, das zu dem Speicherblock 708 gehörige Anhängigkeitsflag zurückzusetzen. Auch hier ist wieder anzumerken, dass die Verwendung dieser ausdrücklichen Nachrichten und der Anhängigkeitsflags in vorteilhafter Weise das Erfordernis beseitigen, einen Ordnungsschaltkreis, wie zum Beispiel einen Vermittlungsschaltkreis, in dem Netzwerk zu haben, um eine natürliche Ordnung zu ermöglichen.
  • Wie Fachleute auf diesem Gebiet aus dem Vorstehenden erkennen, hat das verzeichnisfreie Protokoll einen Vorteil gegenüber dem Bus-basierten Rundsendeverfahren, da im schlechtesten Fall die Anzahl der Nachrichten, die an die abhängigen Knoten gesendet werden müssen, um zwei geringer ist als die Gesamtzahl der Knoten in dem Netzwerk. Im besten Fall, beispielsweise bei der Transaktion # 1, ist die Anzahl der Nachrichten, die gesendet werden, so gering, wie es bei dem Verzeichnisprotokoll erforderlich ist. Insbesondere beseitigt das erfindungsgemäße verzeichnisfreie Protokoll in vorteilhafter Weise das Erfordernis, eine Anforderung an jeden Knoten in dem Netzwerk rundzusenden, wenn der Heimatknoten eine M-Kopie hat und auf eine RTO- oder eine RTS-Anforderung von einem anderen Knoten reagiert. In ähnlicher Weise ist kein Rundsenden erforderlich, wenn der Heimatknoten eine S-Kopie hat und auf eine RTS-Transaktionsanforderung von dem anderen Knoten reagiert.
  • Ein reines verzeichnisfreies Protokoll ist jedoch im Vergleich zu den Verzeichnis- oder Verzeichnis-Cache-Protokollen inhärent langsamer, da im Durchschnitt eine größere Anzahl von Nachrichten erforderlich ist, um Speicherzugriffsanforderungen zu bedienen. Das Verzeichnis- oder Verzeichnis-Cache-Protokoll kann die Anzahl von Nachrichten reduzieren, die an andere Knoten des Netzwerks beim Bedienen von Speicherzugriffsanforderungen gesendet werden müssen und verbessert damit die Geschwindigkeit. Wie zuvor erwähnt, hat jedoch ein reines Verzeichnis- oder Verzeichnis-Cache-Protokoll den Nachteil einer hohen Speichergrundlast (overhead), um einen Verzeichniseintrag für jeden Speicherblock der Netzwerkknoten zu implementieren.
  • Gemäß einem Aspekt der vorliegenden Erfindung wird ein hybrides Protokoll für die Bedienung von Speicherzugriffsanforderungen bereitgestellt. Das erfindungsgemäße hybride Protokoll bzw. Hybridprotokoll erfordert in vorteilhafter Weise nicht die Implementierung eines Verzeichniseintrags für jeden Speicherblock (wie im Falle des Verzeichnisprotokolls oder des Verzeichnis-Cache-Protokolls). Weiterhin kann das erfindungsgemäße Hybrid-Protokoll in vorteilhafter Weise die Geschwindigkeit verbessern, mit welcher Speicherzugriffsanforderungen bedient werden können, indem der Vorteil von Verzeichniseinträgen genutzt wird, falls sie in einem Teilverzeichnis-Cache existieren, um Speicherzugriffsanforderungen zu beschleunigen.
  • In dem Hybrid-Protokoll ist nur ein Teilverzeichnis-Cache erforderlich. Ein teilweiser Verzeichnis-Cache bzw. Teilverzeichnis-Cache speichert nur eine geringe Anzahl der im Cache aufgenommenen Verzeichniseinträge und erfordert weniger Speicher für seine Implementierung, da es nicht notwendig ist, ein Verzeichniseintrag für jeden Speicherblock eines Netzwerkknotens bereitzustellen.
  • 10 ist ein Diagramm eines Netzwerkknotens um gemäß einer Ausführungsform der vorliegenden Erfindung das Hybrid-Protokoll zu implementieren. In 10 sind der Prozessor 700, der Speicher-Cache 702, das Speichermodul 704, der Speicherblock 708 und die Netzwerkschnittstelle 706 im wesentlichen dieselben wie die Elemente, welche in 7 die gleichen Bezugszahlen haben. In 10 wird ein Teilverzeichnis-Cache 950 bereitgestellt, um eine vorbestimmte Anzahl von Verzeichniseinträgen im Cache aufzunehmen, welche den Speicherblöcken des Speichermoduls 704 entsprechen. Jeder Verzeichniseintrag in dem Teilverzeichnis-Cache kann in einer Ausführungsform ein ähnlich einem Eintrag 603 in dem Verzeichnis-Cache nach 6 sein. Mit anderen Worten, es kann ein Feld vorgesehen werden, um anzuzeigen, ob der Verzeichniseintrag gültig ist, ein weiteres Feld zum Spei chern der Adresse des entsprechenden Speicherblocks und noch ein weiteres Feld zum Speichern der Verzeichniszustände der entsprechenden Speicherblöcke in den Knoten des Netzwerkes.
  • Die vorbestimmte Anzahl von Verzeichniseinträgen kann je nach Bedarf variieren. Für Knoten, deren Speicherblöcke möglicherweise oft angefordert werden, kann die vorbestimmte Anzahl von Plätzen für Verzeichniseinträge in dem Teilverzeichnis-Cache 950 erhöht werden, um das Bedienen von Speicherzugriffsanforderungen zu beschleunigen. Der Teilverzeichnis-Cache 950 kann so ausgewählt werden, dass er eine angemessenen Größe hat, so dass eine vernünftige Anzahl üblicherweise verwendeter Speicherblöcke während des größten Teiles der Zeit im Cache aufgenommen ist. In einer Ausführungsform können weniger Plätze für Verzeichniseinträge in dem Teilverzeichnis-Cache 950 vorgesehen sein als es Speicherblöcke in dem Speichermodul gibt, der auf demselben Knoten liegt.
  • Gemäß dem erfindungsgemäßen Hybrid-Protokoll wird in dem Fall eines Treffers dem Teilverzeichnis-Cache, das heißt wenn der Verzeichniseintrag, welcher dem angeforderten Speicherblock entspricht, in dem Teilverzeichnis-Cache 950 existiert, in vorteilhafter Weise das Verzeichnisprotokoll verwendet. Wenn jedoch ein Fehlzugriff auf den Teilverzeichnis-Cache vorliegt, wird in vorteilhafter Weise das verzeichnisfreie Protokoll verwendet. Es sollte für Fachleute auf dem Gebiet an dieser Stelle klar sein, dass, falls kein Verfahren existiert, um zu entscheiden, wann Verzeichniszustände, die sich auf einen bestimmten Speicherblock beziehen, in dem Cache in einem Verzeichniseintrag in dem Teilverzeichnis-Cache 950 aufgenommen werden sollten, ein Teilverzeichnis-Cache 950, der zu Beginn womöglich leer ist, immer leer bleibt. Wenn diese Situation nicht bereinigt wird, wird das Hybrid-Protokoll im wesentlichen ein verzeichnisfreies Protokoll, das es keinen Übergangsweg gibt, um sich von dem verzeichnisfreien Protokoll zu dem Verzeichnisprotokoll zu bewegen.
  • Gemäß einer Ausführungsform der vorliegenden Erfindung erfolgt der Übergang von dem verzeichnisfreien Protokoll zu dem Verzeichnisprotokoll dann, wenn bezüglich der Zustände eines bestimmten Speicherblocks in dem Knoten des Netzwerks ein Erneuerungspunkt vorliegt. Mathematisch gesprochen, bezieht sich ein Erneuerungspunkt auf einen Punkt, an welchem vergangene Transaktionen, die sich auf eine Einheit beziehen, das heißt in diesem Fall einen angeforderten Speicherblock, ignoriert werden können. An diesem Erneuerungspunkt können die Zustände des Speicherblocks an verschiedenen Knoten des Netzwerks einfach aus der zuletzt abgeschlossenen Transaktion unabhängig von der abgelaufenen Vergangenheit bestimmt werden.
  • Gemäß einer Ausführungsform der vorliegenden Erfindung liegt ein Erneuerungspunkt beim Abschluss einer Anforderung nach einer exklusiven M-Kopie eines Speicherblocks (einer RTO-Anforderung) vor. Der Abschluss einer RTO-Transaktion entspricht einem Erneuerungspunkt, da, falls beispielsweise eine RTO-Anforderung durch den Knoten 102 ausgegeben wird, der Knoten 102 nach dem erfolgreichen Abschluss der RTO-Transaktion die einzige exklusive M-Kopie des Speicherblocks hätte, und alle anderen Knoten in dem Netzwerk definitionsgemäß ungültige I-Kopien dieses Speicherblocks haben müssen. Wenn der Erneuerungspunkt erfasst wird, kann der Verzeichniseintrag, der sich auf den angeforderten Speicherblock bezieht, in vorteilhafter Weise abgeleitet und in einen Verzeichniseintrag in dem Teilverzeichnis-Cache 950 aufgenommen werden, ohne dass andere Knoten des Netzwerks befragt werden müssen, um die Zustände des angeforderten Speicherblocks in den Knoten des Netzwerks zu erfragen.
  • Die Vorteile des Hybrid-Protokolls versteht man besser unter Bezug auf die 11 und 12. 11 ist ein Flussdiagramm, welches in einer Ausführungsform der vorliegenden Erfindung die Schritte veranschaulicht, die an dem Heimatknoten beim Bedienen einer empfangenen Speicherzusatzanforderung ablaufen. Im Schritt 1112 wird eine Speicherzugriffsanforderung, die sich auf einen Heimatspeicherblock bezieht, von der Netzwerkinfrastruktur empfangen. In Schritt 1104 bestimmt das Verfahren, ob ein Verzeichniseintrag, welcher dem angeforderten Speicherblock entspricht, in dem Teilverzeichnis-Cache existiert, beispielsweise in dem Teilverzeichnis-Cache 950 nach 10. Wenn ein Verzeichniseintrag entsprechend dem angeforderten Speicherblock bereits in dem Teilverzeichnis-Cache des Heimatknotens existiert, verwendet das Verfahren in vorteilhafter Weise das Verzeichnisprotokoll, um die empfangene Speicherzugriffsanforderung zu bedienen (Schritt 1106). Der Übergang von einem verzeichnisfreien Protokoll zu einem Verzeichnisprotokoll erfolgt dann, wenn es einen Treffer in dem Teilverzeichnis-Cache 950 gibt.
  • Wenn andererseits ein Verzeichniseintrag, welcher dem angeforderten Speicherblock entspricht, in dem Teilverzeichnis-Cache an dem Heimatknoten nicht gefunden werden kann, verwendet das Verfahren in vorteilhafter Weise das verzeichnisfreie Protokoll beim Bedienen der empfangenen Speicherzugriffsanforderung. Auf diese Weise vermeidet das Hybrid-Protokoll in vorteilhafter Weise, dass es die Netzwerkknoten abfragen muss, um die Verzeichniszustände eines Speicherblocks zu bestimmen, wenn es einen Fehlzugriff im Teilverzeichnis-Cache gibt. Der Übergang von einem Verzeichnisprotokoll zu einem verzeichnisfreien Protokoll erfolgt dann, wenn es einen Fehlzugriff bzw. eine Fehlabfrage in dem Teilverzeichnis-Cache 950 gibt.
  • In Schritt 1110 wird die zuletzt bediente Speicherzugriffsanforderung untersucht, um zu bestimmen, ob sie eine Transaktion repräsentiert, die einen Erneuerungspunkt in den Verzeichniszuständen des angeforderten Speicherblocks erzeugen kann. Wie zuvor bereits erwähnt, wird ein solcher Erneuerungspunkt erzeugt, wenn die zuletzt erzeugte Speicher zugriffsanforderung eine RTO-(Read-to-Own – Lesen zum Zwecke des Besitzens) Anforderung ist.
  • Wenn die zuletzt bediente Speicherzugriffsanforderung zu einem Erneuerungspunkt führt, geht das Verfahren mit Schritt 1112 weiter, wobei die Verzeichniszustände, die sich auf den zuletzt angeforderten Speicherblock beziehen, in einem Verzeichniseintrag in dem Teilverzeichnis-Cache 950 aufgenommen werden. Falls nicht, enden die Schritte des Bedienens einer Speicherzugriffsanforderung unter Verwendung des Hybrid-Protokolls bei Schritt 1104.
  • Gemäß einer Ausführungsform der vorliegenden Erfindung können die Verzeichniseinträge, die in dem Teilverzeichnis-Cache 950 aufgenommen sind, in dem Teilverzeichnis-Cache 950 solange wie möglich gehalten werden. Zu irgendeinem Zeitpunkt kann jedoch der Teilverzeichnis-Cache voll werden. Wenn ein zusätzlicher Verzeichniseintrag in dem Teilverzeichnis-Cache 950 aufgenommen werden muss, wird es notwendig, in dem Teilverzeichnis-Cache 950 Platz zu schaffen, um dem neu im Cache aufzunehmenden Verzeichniseintrag Platz zu geben.
  • Gemäß einer Ausführungsform der vorliegenden Erfindung sondert die Erfindung einfach Verzeichniseinträge, die nicht anhängig sind, aus dem Teilverzeichnis-Cache 950 aus, um für zusätzliche im Cache aufzunehmende Verzeichniseinträge Platz zu schaffen. Ein Verzeichniseintrag ist nicht anhängig, wenn festgestellt wird, dass sein Anhängigkeitsflag nicht gesetzt ist. Der Aussonderungsvorgang kann so einfach sein, dass der Raum bzw. Abschnitt des Verzeichniseintrags, welcher den nicht anhängigen Verzeichniseintrag enthält, überschrieben wird.
  • Es ist möglich, einen nicht anhängigen Verzeichniseintrag einfach aus dem Teilverzeichnis-Cache 950 in dem Hybrid-Protokoll auszusondern, da, falls eine nachfolgende Speicherzugriffsanforderung, die sich auf einen Speicherblock bezieht, dessen Verzeichniseintrag zuvor ausgesondert wurde, empfangen wird, die Hybrid-Technik einfach diese Speicherzugriffsanforderung unter Verwendung des verzeichnisfreien Protokolls bedient.
  • 12 ist ein Flussdiagramm, welches die bei dem Heimatknoten bei der Aufnahme eines Verzeichniseintrags in dem Teilverzeichnis-Cache ablaufenden Schritte beim Erfassen eines Erneuerungspunkts genauer zeigt. Im Schritt 1202 wird festgestellt, ob es zusätzlichen Platz in dem Teilverzeichnis-Cache gibt, um den neuen Verzeichniseintrag darin aufzunehmen. Wenn dies der Fall ist, wird der Verzeichniseintrag einfach in einen nicht verwendeten Verzeichniseintragsplatz in dem Teilverzeichnis-Cache 950 geschrieben (Schritt 1204). Falls in dem Teilverzeichnis-Cache 950 kein Platz ist, stellt das Verfahren fest, ob ein nicht anhängiger Eintrag im dem Teilverzeichnis-Cache 950 verfügbar ist (Schritt 905). Wenn alle aktuel len Einträge in dem Teilverzeichnis-Cache 950 anhängig sind, kann der Teilverzeichnis-Cache 950 für Einträge den Verzeichniseintrag, der als nächster im Cache aufgenommen werden soll, in einer Schlange anordnen und ihn dann aufnehmen, wenn ein Eintrag in dem Teilverzeichnis-Cache 950 nicht-anhängig wird. Alternativ kann der Teilverzeichnis-Cache 950 den Verzeichniseintrag, der als nächstes im Cache aufzunehmen ist, ignorieren und ihn überhaupt nicht im Cache aufnehmen.
  • Falls ein nicht anhängiger Eintrag in dem Teilverzeichnis-Cache 950 ist, kann der nicht anhängige Eintrag ausgesondert werden. Die Auswahl eines nicht anhängigen Verzeichniseintrags zum Aussondern, wenn mehrere Verzeichniseinträge nicht anhängig sind, kann unter Verwendung irgendeiner bekannten Technik ausgeführt werden. In einer Ausführungsform kann, wie bereits erwähnt, der nicht anhängige Verzeichniseintrag einfach mit dem neuen Verzeichniseintrag in dem Teilverzeichnis-Cache 950 überschrieben werden (Schritt 1206).

Claims (18)

  1. In einem Computernetzwerk, welches eine erste Mehrzahl von Knoten hat, die mit einer gemeinsamen Netzwerk-Infrastruktur verbunden sind, und welches weiterhin einen verteilten, gemeinsam verwendeten Speicher hat, bei welchem Speichermodule (704) über die erste Mehrzahl von Knoten hinweg verteilt sind, ein Verfahren zum Bedienen einer Speicherzugriffsanforderung durch einen ersten Knoten (902) des Computernetzwerkes, welcher zu einem Speicherblock (708) eines Speichermoduls (704) gehört, der einen Heimatknoten (908) hat, welcher sich von dem ersten Knoten in dem Computernetzwerk unterscheidet, wobei der Heimatknoten einen Teilverzeichnis-Cache (950) hat, der weniger Verzeichnis-Cacheeinträge hat als eine Gesamtzahl von Speicherblöcken in dem Speichermodul (704) vorhanden ist, wobei das Verfahren aufweist: Empfangen einer ersten Speicherzugriffsanforderung für den Speicherblock über die gemeinsame Netzwerkinfrastruktur an dem Heimatknoten (908) und von dem ersten Knoten (902), falls die Verzeichniszustände, welche Zustände von Kopien des Speicherblockes auf der ersten Mehrzahl von Knoten repräsentieren, in dem Eintrag eines Verzeichnis-Caches des Teilverzeichnis-Caches (950) aufgenommen sind, Bedienen der ersten Speicherzugriffsanforderung unter Verwendung eines Verzeichnisprotokolls, indem der Verzeichnis-Cacheeintrag herangezogen wird, um zu bestimmen, welcher Knoten in dem Computernetzwerk aktuell eine erste gültige Kopie des Speicherblockes besitzt, wobei die erste gültige Kopie des Speicherblockes eine gültige Kopie des Speicherblockes repräsentiert, die in der Lage ist, die erste Speicherzugriffsanforderung zu erfüllen, und falls die Verzeichniszustände, welche sich auf den Speicherblock beziehen, nicht in dem Teilverzeichnis-Cache aufgenommen sind, Bedienen der ersten Speicherzugriffsanforderung unter Verwendung eines verzeichnisfreien Protokolls, Aufnehmen der Verzeichniszustände in den fache, welche sich auf den Speicherblock beziehen, und zwar in den Teilverzeichnis-Cache, falls die erste Speicherzugriffsanforderung einen Erneuerungspunkt bezüglich der Verzeichniszustände erzeugt, wobei der Erneuerungspunkt ein Punkt ist, in welchem der Zugriff abgeschlossen wird und alle Zustände des Speicherblocks an den Knoten des Netzwerkes aufgrund des zuletzt abgeschlossenen ersten Zugriffes ohne Rückgriff auf weitere vergangene Zugriffe vollständig bestimmbar ist.
  2. Verfahren nach Anspruch 1, wobei die erste Speicherzugriffsanforderung, welche einen Erneuerungspunkt erzeugt, eine Anforderung nach einer exklusiven Kopie des Speicherblockes durch den ersten Knoten ist.
  3. Verfahren nach Anspruch 1, welches weiterhin die Schritte aufweist: Markieren eines Zustandes des Speicherblockes als anhängig, nach Empfang der ersten Speicherzugriffsanforderung an dem Heimatknoten, Anzeigen, daß ein Zugriff auf den Speicherblock gerade abläuft, wobei der Zustand während der Anhängigkeit den Heimatknoten außer Stand setzt, andere Speicherzugrifftsanforderungen, die sich auf den Speicherblock beziehen, zu bedienen, bei Empfang einer Bestätigung von dem ersten Knoten, Bestätigen, daß die erste Speicherzugriffsanforderung erfüllt worden ist, Markieren des Zustandes des Speicherblockes als nicht anhängig, um anzuzeigen, daß keine Zugriffsanforderung, die sich auf den Speicherblock bezieht, aktuell abläuft, und dadurch Ermöglichen, daß die weiteren Speicherzugriffsanforderungen, die sich auf den Speicherblock beziehen, bedient werden können.
  4. Verfahren nach Anspruch 3, welches weiterhin den Schritt aufweist, daß vor der Aufnahme der Verzeichniszustände, die sich auf den Speicherblock beziehen, in den Cache bestimmt wird, ob in dem Teilverzeichnis-Cachespeicher für die Aufnahme der Verzeichniszustände, die sich auf den Speicherblock beziehen, Platz vorhanden ist.
  5. Verfahren nach Anspruch 4, welches den Schritt aufweist, daß ein nicht anhängiger, vorhandener Verzeichnis-Cacheeintrag in dem Teilverzeichnis-Cache mit den Verzeichniszuständen überschrieben wird, die sich auf den Speicherblock beziehen, falls in dem Teilverzeichnis-Cache kein Platz für die Aufnahme der Verzeichniszustände, die sich auf den Speicherblock beziehen, vorhanden ist.
  6. Verfahren nach Anspruch 4, wobei die Verzeichniszustände, welche sich auf den Speicherblock beziehen, nicht in dem Cache aufgenommen werden, falls in dem Teilverzeichnis-Cache kein Platz für die Aufnahme der Verzeichniszustände vorhanden ist, die sich auf den Speicherblock beziehen.
  7. Verfahren nach Anspruch 4, wobei die Verzeichniszustände, welche sich auf den Speicherblock beziehen, an dem Heimatknoten in einer Schlange angeordnet werden, falls in dem Teilverzeichnis-Cache kein Platz für die Aufnahme der Verzeichniszustände ist, die sich auf den Speicherblock beziehen, wobei die Verzeichniszustände, die sich auf den Speicherblock beziehen, dann durch Überschreiben eines existierenden Verzeichnis-Cacheeintrages in dem Teilverzeichnis-Cache aufgenommen werden, wenn der existierende Verzeichnis-Cacheeintrag zu einem nicht mehr anhängigen Eintrag wird.
  8. Verfahren nach Anspruch 1, wobei das verzeichnisfreie Protokoll den Schritt aufweist, daß, falls der Heimatknoten die erste gültige Kopie des Speicherblockes nicht hat, eine Anforderung von dem Heimatknoten zu einer zweiten Mehrzahl von Knoten in dem Computernetzwerk gesendet wird, um anzufordern, daß ein zweiter Knoten in dem Computernetzwerk die erste gültige Kopie des Speicherblockes an den ersten Knoten sendet, wobei die zweite Mehrzahl von Knoten die erste Mehrzahl von Knoten mit Ausnahme des ersten Knotens und des Heimatknotens repräsentiert.
  9. Verfahren nach Anspruch 8, welches weiterhin den Schritt aufweist, daß, nachdem der zweite Knoten eine erste gültige Kopie des Speicherblockes von einem Cachespeicher des zweiten Knotens an den ersten Knoten gesendet hat, die erste gültige Kopie des Speicherblockes an dem zweiten Knoten von einer Kopie eines ersten Typs zu einer Kopie eines zweiten Typs herabgestuft wird, der sich von dem ersten Typ unterscheidet.
  10. Verfahren nach Anspruch 8, welches weiterhin den Schritt aufweist, daß die erste gültige Kopie des Speicherblockes von dem Heimatknoten zu dem ersten Knoten gesendet wird, wenn der Heimatknoten die erste gültige Kopie des Speicherblockes besitzt.
  11. Netzwerkknoten für den Anschluß in einem Computernetzwerk, welches eine erste Mehrzahl von Knoten hat, die mit einer gemeinsamen Netzwerkinfrastruktur und einem verteilten, gemeinsam verwendeten Speicher mit Speichermodulen (704) verbunden sind, welche über die erste Mehrzahl von Knoten hinweg verteilt sind, wobei der Netzwerkknoten dafür ausgelegt ist, Speicherzugriffsanforderungen durch andere Knoten des Computernetzwerks nach Speicherblöcken (708) eines Speichermoduls (704), für welche der Netzwerkknoten ein Heimatknoten (908) ist, zu bedienen, wobei der Netzwerkknoten aufweist: einen Teilverzeichnis-Cache (950), der weniger Verzeichnis-Cacheeinträge hat als es der Gesamtanzahl von Speicherblöcken in dem Speichermodul entspricht, eine Einrichtung (706), um über die gemeinsame Netzwerkstruktur von einem ersten Knoten (902) in dem Computernetzwerk eine erste Speicherzugriffsanforderung nach einem Speicherblock (708) zu empfangen, für welchen der Netzwerkknoten ein Heimatknoten ist, eine Einrichtung, um zu erfassen, ob Verzeichniszustände, welche Zustände von Kopien des Speicherblockes auf der ersten Mehrzahl von Knoten repräsentieren, in einem Verzeichnis-Cacheeintrag des Teilverzeichnis-Caches aufgenommen sind, eine Einrichtung, um nach dem Erfassen der im Cache aufgenommenen Zustände die erste Speicherzugriffsanforderung unter Verwendung eines Verzeichnisprotokolls zu bedienen, indem der Verzeichnis-Cacheeintrag untersucht wird, um zu bestimmen, welcher Knoten in dem Computernetzwerk aktuell eine erste gültige Kopie des Speicherblockes besitzt, wobei die erste gültige Kopie des Speicherblockes eine gültige Kopie des Speicherblockes repräsentiert, die in der Lage ist, die erste Speicherzugriffsanforderung zu bedienen, eine Einrichtung, um zu erfassen, ob die Verzeichniszustände, welche sich auf den Speicherblock beziehen, in dem Teilverzeichnis-Cache nicht aufgenommen sind, eine Einrichtung, um die Speicherzugriffsanforderung unter Verwendung eines verzeichnisfreien Protokolls zu bedienen, nachdem in dem Cache aufgenommene Zustände nicht erfaßt wurden, und eine Einrichtung, um die Verzeichniszustände, welche sich auf den Speicherblock beziehen, in dem Teilverzeichnis-Cache aufzunehmen, wenn die erste Speicherzugriffsanforderung einen Erneuerungspunkt bezüglich der Verzeichniszustände erzeugt wobei der Erneuerungspunkt ein Punkt ist, in welchem der Zugriff abgeschlossen ist und alle Zustände des Speicherblockes an den Knoten des Netzwerkes aus dem zuletzt abgeschlossenen ersten Zugriff ohne Rückgriff auf weitere vergangene Zugriffe vollständig bestimmbar sind.
  12. Netzwerkknoten nach Anspruch 11, wobei die erste Speicherzugriffsanforderung, welche einen Erneuerungspunkt erzeugt, eine Anforderung nach einer exklusiven Kopie des Speicherblockes durch den ersten Knoten ist.
  13. Netzwerkknoten nach Anspruch 11, welcher weiterhin aufweist: eine Einrichtung zum Markieren eines Zustandes des Speicherblockes als anhängig, nachdem die erste Speicherzugriffsanforderung an dem Netzwerkknoten empfangen wurde, um anzuzeigen, daß ein Zugriff auf diesen Speicherblock in Bearbeitung ist, wobei der Zustand während der Anhängigkeit den Netzwerkknoten unfähig macht, weitere Speicherzugriffsanforderungen, die sich auf diesen Speicherblock beziehen, zu bedienen, und eine Einrichtung zum Markieren des Zustandes des Speicherblockes als nicht mehr anhängig nach Empfang einer Bestätigung von dem ersten Knoten, welche bestätigt, daß die erste Speicherzugriffsanforderung erfüllt worden ist, um anzuzeigen, daß keine Zugriffsanforderung, die sich auf diesen Speicher bezieht, in Bearbeitung ist, um dadurch zu ermöglichen, daß die weiteren Speicherzugriffsanforderungen, welche sich auf den Speicherblock beziehen, bedient werden.
  14. Netzwerkknoten nach Anspruch 11, wobei die Verzeichniszustände, die sich auf den Speicherblock beziehen, in dem Teilverzeichnis-Cache aufgenommen werden, indem ein nicht anhängiger, existierender Verzeichnis-Cacheeintrag in dem Teilverzeichnis-Cache mit den Verzeichniszuständen, welche sich auf den Speicherblock beziehen, überschrieben werden, falls in dem Teilverzeichnis-Cache für die Aufnahme der Verzeichniszustände, welche sich auf den Speicherblock beziehen, kein Platz vorhanden ist.
  15. Netzwerkknoten nach Anspruch 11, wobei die Verzeichniszustände, welche sich auf den Speicherblock beziehen, in dem Teilverzeichnis-Cache nicht aufgenommen werden, falls in dem Teilverzeichnis-Cache für die Aufnahme der Verzeichniszustände, welche sich auf den Block beziehen, kein Platz vorhanden ist, selbst wenn die erste Speicherzugriffsanforderung einen Erneuerungspunkt bezüglich der Verzeichniszustände erzeugt.
  16. Netzwerkknoten nach Anspruch 11, welcher weiterhin eine Schlange aufweist, um an dem Netzwerkknoten die Verzeichniszustände, welche sich auf den Speicherblock beziehen, in einer Schlange aufzunehmen, falls die erste Speicherzugriffsanforderung einen Erneuerungspunkt bezüglich der Verzeichniszustände erzeugt und in dem Teilverzeichnis-Cache für die Aufnahme der Verzeichniszustände, welche sich auf den Speicherblock beziehen, kein Platz vorhanden ist, wobei die Verzeichniszustände, welche sich auf den Speicherblock beziehen, dann von der Schlange in den Teilverzeichnis-Cache aufgenommen werden, indem ein existierender Verzeichnis-Cacheeintrag in dem Teilverzeichnis-Cache überschrieben wird, wenn der existierende Verzeichnis-Cacheeintrag zu einem nicht anhängigen Eintrag wird.
  17. Netzwerkknoten nach Anspruch 11, welcher weiterhin eine Einrichtung aufweist, um, falls der Netzwerkknoten keine erste gültige Kopie des Speicherblockes hat und die erste Speicherzugriffsanforderung unter Verwendung des verzeichnisfreien Protokolls bedient wird, eine Anforderung von dem Netzwerkknoten an eine zweite Mehrzahl von Knoten in dem Computernetzwerk zu senden, um anzufordern, daß ein zweiter Knoten in dem Computernetzwerk die erste gültige Kopie des Speicherblockes an den ersten Knoten sendet, wobei die zweite Mehrzahl von Knoten die erste Mehrzahl von Knoten mit Ausnahme des ersten Knotens und des Netzwerkknotens repräsentiert.
  18. Netzwerkknoten nach Anspruch 17, welcher weiterhin Einrichtungen für das Senden der ersten gültigen Kopie des Speicherblockes von dem Netzwerkknoten zu dem ersten Knoten für den Fall aufweist, daß der Netzwerkknoten die erste gültige Kopie des Speicherblockes besitzt und die erste Speicherzugriffsanforderung unter Verwendung des verzeichnisfreien Protokolls bedient wird.
DE69732938T 1996-07-01 1997-06-25 Hybrides Speicherzugangsprotokoll in einem Datenverarbeitungssystem mit verteiltem, gemeinsamem Speicher Expired - Lifetime DE69732938T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/673,957 US5864671A (en) 1996-07-01 1996-07-01 Hybrid memory access protocol for servicing memory access request by ascertaining whether the memory block is currently cached in determining which protocols to be used
US673957 1996-07-01

Publications (2)

Publication Number Publication Date
DE69732938D1 DE69732938D1 (de) 2005-05-12
DE69732938T2 true DE69732938T2 (de) 2006-02-02

Family

ID=24704771

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69732938T Expired - Lifetime DE69732938T2 (de) 1996-07-01 1997-06-25 Hybrides Speicherzugangsprotokoll in einem Datenverarbeitungssystem mit verteiltem, gemeinsamem Speicher

Country Status (4)

Country Link
US (3) US5864671A (de)
EP (1) EP0818732B1 (de)
JP (1) JPH10177518A (de)
DE (1) DE69732938T2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7991963B2 (en) 2007-12-31 2011-08-02 Intel Corporation In-memory, in-page directory cache coherency scheme

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09204403A (ja) * 1996-01-26 1997-08-05 Hitachi Ltd 並列計算機
US6092155A (en) * 1997-07-10 2000-07-18 International Business Machines Corporation Cache coherent network adapter for scalable shared memory processing systems
US6826651B2 (en) * 1998-05-29 2004-11-30 International Business Machines Corporation State-based allocation and replacement for improved hit ratio in directory caches
US6374331B1 (en) * 1998-12-30 2002-04-16 Hewlett-Packard Company Distributed directory cache coherence multi-processor computer architecture
US6311253B1 (en) * 1999-06-21 2001-10-30 International Business Machines Corporation Methods for caching cache tags
US6651157B1 (en) * 1999-10-15 2003-11-18 Silicon Graphics, Inc. Multi-processor system and method of accessing data therein
WO2001098920A1 (en) * 2000-06-21 2001-12-27 Idt Corporation Method and apparatus for distributing video programs using partial caching
US6699125B2 (en) * 2000-07-03 2004-03-02 Yahoo! Inc. Game server for use in connection with a messenger server
US7146429B2 (en) * 2001-03-16 2006-12-05 The Aerospace Corporation Cooperative adaptive web caching routing and forwarding web content data requesting method
US7555561B2 (en) * 2001-03-19 2009-06-30 The Aerospace Corporation Cooperative adaptive web caching routing and forwarding web content data broadcasting method
EP1255201B1 (de) * 2001-05-01 2009-12-23 Sun Microsystems, Inc. Multiprozessorsystem mit gemeinsamem Speicher, welches gemischte Broadcast-Snoop und verzeichnisbasierte Kohärenzprotokolle benutzt
US7222220B2 (en) * 2001-05-01 2007-05-22 Sun Microsystems, Inc. Multiprocessing system employing address switches to control mixed broadcast snooping and directory based coherency protocols transparent to active devices
US20040128343A1 (en) * 2001-06-19 2004-07-01 Mayer Daniel J Method and apparatus for distributing video programs using partial caching
US6973543B1 (en) 2001-07-12 2005-12-06 Advanced Micro Devices, Inc. Partial directory cache for reducing probe traffic in multiprocessor systems
US6721852B2 (en) 2001-10-17 2004-04-13 Sun Microsystems, Inc. Computer system employing multiple board sets and coherence schemes
US6961827B2 (en) * 2001-11-13 2005-11-01 Sun Microsystems, Inc. Victim invalidation
US6820174B2 (en) * 2002-01-18 2004-11-16 International Business Machines Corporation Multi-processor computer system using partition group directories to maintain cache coherence
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
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
GB2416416B (en) * 2003-04-11 2006-11-22 Sun Microsystems Inc Multi-node computer system implementing global access state dependent transactions
US7225298B2 (en) * 2003-04-11 2007-05-29 Sun Microsystems, Inc. Multi-node computer system in which networks in different nodes implement different conveyance modes
WO2004093488A2 (en) 2003-04-15 2004-10-28 Ipventure, Inc. Directional speakers
US7395375B2 (en) * 2004-11-08 2008-07-01 International Business Machines Corporation Prefetch miss indicator for cache coherence directory misses on external caches
US7716411B2 (en) 2006-06-07 2010-05-11 Microsoft Corporation Hybrid memory device with single interface
US8479203B2 (en) * 2009-07-24 2013-07-02 International Business Machines Corporation Reducing processing overhead and storage cost by batching task records and converting to audit records
US9176671B1 (en) 2011-04-06 2015-11-03 P4tents1, LLC Fetching data between thread execution in a flash/DRAM/embedded DRAM-equipped system
US9158546B1 (en) 2011-04-06 2015-10-13 P4tents1, LLC Computer program product for fetching from a first physical memory between an execution of a plurality of threads associated with a second physical memory
US9164679B2 (en) 2011-04-06 2015-10-20 Patents1, Llc System, method and computer program product for multi-thread operation involving first memory of a first memory class and second memory of a second memory class
US8930647B1 (en) 2011-04-06 2015-01-06 P4tents1, LLC Multiple class memory systems
US9170744B1 (en) 2011-04-06 2015-10-27 P4tents1, LLC Computer program product for controlling a flash/DRAM/embedded DRAM-equipped system
US9417754B2 (en) 2011-08-05 2016-08-16 P4tents1, LLC User interface system, method, and computer program product
US9477600B2 (en) 2011-08-08 2016-10-25 Arm Limited Apparatus and method for shared cache control including cache lines selectively operable in inclusive or non-inclusive mode
CN102521163B (zh) 2011-12-08 2014-12-10 华为技术有限公司 目录替换方法及设备
US8812744B1 (en) 2013-03-14 2014-08-19 Microsoft Corporation Assigning priorities to data for hybrid drives
US9626126B2 (en) 2013-04-24 2017-04-18 Microsoft Technology Licensing, Llc Power saving mode hybrid drive access management
US9946495B2 (en) 2013-04-25 2018-04-17 Microsoft Technology Licensing, Llc Dirty data management for hybrid drives
GR20180100189A (el) 2018-05-03 2020-01-22 Arm Limited Δικτυο επεξεργασιας δεδομενων με συμπυκνωση ροης για μεταφορα δεδομενων μεσω streaming
US10613996B2 (en) * 2018-05-03 2020-04-07 Arm Limited Separating completion and data responses for higher read throughput and lower link utilization in a data processing network
US10917198B2 (en) * 2018-05-03 2021-02-09 Arm Limited Transfer protocol in a data processing network
US11163688B2 (en) 2019-09-24 2021-11-02 Advanced Micro Devices, Inc. System probe aware last level cache insertion bypassing

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5151989A (en) * 1987-02-13 1992-09-29 International Business Machines Corporation Directory cache management in a distributed data processing system
US5119481A (en) * 1987-12-22 1992-06-02 Kendall Square Research Corporation Register bus multiprocessor system with shift
US5251308A (en) * 1987-12-22 1993-10-05 Kendall Square Research Corporation Shared memory multiprocessor with data hiding and post-store
US5055999A (en) * 1987-12-22 1991-10-08 Kendall Square Research Corporation Multiprocessor digital data processing system
US5072369A (en) * 1989-04-07 1991-12-10 Tektronix, Inc. Interface between buses attached with cached modules providing address space mapped cache coherent memory access with SNOOP hit memory updates
JPH05210640A (ja) * 1992-01-31 1993-08-20 Hitachi Ltd マルチプロセッサシステム
US5394555A (en) * 1992-12-23 1995-02-28 Bull Hn Information Systems Inc. Multi-node cluster computer system incorporating an external coherency unit at each node to insure integrity of information stored in a shared, distributed memory
JP2809961B2 (ja) * 1993-03-02 1998-10-15 株式会社東芝 マルチプロセッサ
US5511208A (en) * 1993-03-23 1996-04-23 International Business Machines Corporation Locating resources in computer networks having cache server nodes
US5535116A (en) * 1993-05-18 1996-07-09 Stanford University Flat cache-only multi-processor architectures
US5491817A (en) * 1993-05-25 1996-02-13 Bell Communications Research Inc. Linking system and method for accessing directory information about an object in one context when information in another context is known
CA2097540C (en) * 1993-06-01 1998-05-12 William G. O'farrell Accessing remote data objects in a distributed memory environment
US5584007A (en) * 1994-02-09 1996-12-10 Ballard Synergy Corporation Apparatus and method for discriminating among data to be stored in cache
JP3340846B2 (ja) * 1994-07-05 2002-11-05 富士通株式会社 Atm−lan及びサーバ及びatmアドレス管理方法
US5680576A (en) * 1995-05-05 1997-10-21 Silicon Graphics, Inc. Directory-based coherence protocol allowing efficient dropping of clean-exclusive data
JPH10154100A (ja) * 1996-11-25 1998-06-09 Canon Inc 情報処理システム及び装置及びその制御方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7991963B2 (en) 2007-12-31 2011-08-02 Intel Corporation In-memory, in-page directory cache coherency scheme
DE102008062044B4 (de) 2007-12-31 2018-09-06 Intel Corporation 1Speicherinterne, seiteninterne Verzeichnis-Chache-Kohärenz-Konfiguration

Also Published As

Publication number Publication date
US6496854B1 (en) 2002-12-17
EP0818732A2 (de) 1998-01-14
EP0818732B1 (de) 2005-04-06
US6243742B1 (en) 2001-06-05
US5864671A (en) 1999-01-26
DE69732938D1 (de) 2005-05-12
JPH10177518A (ja) 1998-06-30
EP0818732A3 (de) 1999-03-10

Similar Documents

Publication Publication Date Title
DE69732938T2 (de) Hybrides Speicherzugangsprotokoll in einem Datenverarbeitungssystem mit verteiltem, gemeinsamem Speicher
DE102009023898B4 (de) Optimierung von gleichzeitigen Zugriffen in einem verzeichnisbasierten Kohärenzprotokoll
DE10393919B4 (de) Spekulative verteilte Konfliktauflösung für ein Cache-Kohärenzprotokoll
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE2241257C3 (de) Datenverarbeitende Anlage
DE69724354T2 (de) Ein Mehrprozessorrechnersystem mit lokalen und globalen Adressräumen und mehreren Zugriffsmoden
DE69906585T2 (de) Datenverarbeitungssystem mit nichtuniformen speicherzugriffen (numa) mit spekulativer weiterleitung einer leseanforderung an einen entfernten verarbeitungsknoten
DE10394081B4 (de) Verfahren und Vorrichtung zum Einprägen von Schreibdaten in einen Cache-Speicher
DE69628127T2 (de) Verfahren und Gerät um die Kohärenz in einem Multiprozessorsystem anzuzeigen
DE69722512T2 (de) Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll
DE2226382C3 (de) Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern
DE102007030116B4 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE69721640T2 (de) Multiprozessor-Rechnersystem und Verfahren zur Steuerung des Verkehrsflusses
DE60117818T2 (de) Verwaltung des ersetzens von daten in einem zwischenspeicher auf einem knoten aufgrund von zwischenspeichern anderer knoten
DE112008002018B4 (de) Bereitstellen eines gemeinsam genutzten Inklusiv-Cache bei Mehrkern-Cache-Clustern
DE69628493T2 (de) Cache-kohärentes Computersystem, das Entwertungs- und Rückschreiboperationen minimiert
DE102006030879B4 (de) System zum Reduzieren der Latenzzeit von exklusiven Leseanforderungen in einem symmetrischen Multiprozessorsystem
DE3621321A1 (de) Cache-speicher- bzw. multiprozessor-system und betriebsverfahren
DE69736544T2 (de) Verfahren zur Verminderung der Anzahl von Kohärenz-Zyklen in einem verzeichnisbasierten Cachekohärenz-Speichersystem unter Verwendung eines Speicherzustands-Cachespeichers
DE3724730A1 (de) Cache-steuereinrichtung
DE2841041A1 (de) Datenverarbeitungsanlage mit mindestens zwei mit einem schnellen arbeitsspeicher ausgeruesteten prozessoren
DE2230266A1 (de) Datenverarbeitungsanlagen mit einer zentraleinheit unter verwendung virtueller adressierung
DE69721641T2 (de) Verfahren und Vorrichtung für ein verzeichnisloses Speicherzugriffsprotokoll in einem Rechnersystem mit verteiltem gemeinsamen Speicher
DE102007048601A1 (de) Datenspeicherung in einem Schaltsystem, das mehrere Prozessoren eines Computersystems koppelt

Legal Events

Date Code Title Description
8364 No opposition during term of opposition