DE102009032076B4 - Erfüllung von Speicherordnungsanforderungen zwischen Teillesevorgängen und Nicht-Snoop-Zugriffen - Google Patents

Erfüllung von Speicherordnungsanforderungen zwischen Teillesevorgängen und Nicht-Snoop-Zugriffen Download PDF

Info

Publication number
DE102009032076B4
DE102009032076B4 DE102009032076.8A DE102009032076A DE102009032076B4 DE 102009032076 B4 DE102009032076 B4 DE 102009032076B4 DE 102009032076 A DE102009032076 A DE 102009032076A DE 102009032076 B4 DE102009032076 B4 DE 102009032076B4
Authority
DE
Germany
Prior art keywords
data
cache
agent
home
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102009032076.8A
Other languages
English (en)
Other versions
DE102009032076A1 (de
Inventor
Robert H. Beers
Ching-Tsun Chou
Robert J. Safranek
James Vash
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE102009032076A1 publication Critical patent/DE102009032076A1/de
Application granted granted Critical
Publication of DE102009032076B4 publication Critical patent/DE102009032076B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0824Distributed directories, e.g. linked lists of caches
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • 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/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management

Abstract

Es werden ein Verfahren und eine Vorrichtung zum Bewahren von Speicherordnung in einer cachekohärenten Verbindung anhand von Verbindung angesichts von teil- und nichtkohärenten Speicherzugriffen beschrieben. In einer Ausführungsform werden Teilspeicherzugriffe, wie z. B. ein Teillesen, unter Verwendung einer Read Invalidate- und/oder Snoop Invalidate-Nachricht implementiert. Wenn ein Peer-Knoten auf eine Snoop Invalidate-Nachricht bezogene Daten von einem anfordernden Knoten empfängt, dient der Peer-Knoten zum Ungültigerklären einer mit den Daten verbundenen Cache-Zeile und zum nicht direkten Weiterleiten der Daten an den anfordernden Knoten. Wenn der Peer-Knoten die betreffende Cache-Zeile in einem Modifiziert-Kohärenzzustand als Antwort auf Empfang der Snoop Invalidate-Nachricht hält, dient in einer Ausführungsform der Peer-Knoten zum Zurückschreiben der Daten zu einem mit den Daten verbundenen Home node.

Description

  • GEBIET
  • Die vorliegende Erfindung betrifft schnelle Punkt-zu-Punkt-Verbindungen (interconnect links) und insbesondere Kohärenzprotokolle zur Implementierung einer kohärenten Verbindungsarchitektur.
  • HINTERGRUND
  • Wenn ein elektronisches System mehrere Cache-Speicher enthält, wird die Gültigkeit oder Kohärenz der in dem System gehaltenen Daten beibehalten, um die Integrität von Datenoperationen sicherzustellen. Kohärenz wird häufig durch Manipulieren von Daten gemäß einem Cache-Kohärenzprotokoll erzielt. Da die Anzahl von Caches und/oder Prozessoren zunimmt, nimmt die Komplexität des Bewahrens von Kohärenz zu, was möglicherweise zu einer größeren Anzahl von Konflikten zwischen der Vielzahl von Komponenten eines Systems führt.
  • Wenn beispielsweise mehrere Komponenten (z. B. ein Cache-Speicher, ein Prozessor) denselben Datenblock anfordern, wird ein Konflikt zwischen den mehreren Komponenten auf eine Art gelöst, die die Gültigkeit der Daten bewahrt. Bisherige Cache-Kohärenzprotokolle weisen typischerweise eine einzige Komponente auf, die für die Konfliktlösung verantwortlich ist. Da jedoch die Komplexität des Systems zunimmt, kann der Verlass auf eine einzige Komponente zur Konfliktlösung die Gesamtsystemleistung verringern.
  • Allgemein gibt es zwei grundlegende Schemata zum Liefern von Kohärenz: Snooping („Schnüffeln”) (nun häufig Symmetric MultiProcessing (SMP) genannt) und Verzeichnisse (häufig Distributed Shared Memory (DSM) genannt). Der grundlegende Unterschied zwischen diesen beiden Schemata dreht sich um die Platzierung und den Zugriff auf Meta-Information; d. h. darüber, wo Kopien einer Cache-Zeile gehalten werden.
  • Für verzeichnisbasierte Schemata gibt es zusätzlich zu einem festen Platz, an dem die nicht gecacheten (gepufferten) Daten gespeichert werden, einen festen Ort, das Verzeichnis, der bzw. das angibt, wo gecachete Kopien stehen bzw. gespeichert sind. Zum Zugreifen auf eine Cache-Zeile in einer neuen Weise muss ein Knoten mit dem Knoten kommunizieren, der das Verzeichnis enthält und gewöhnlich derselbe Knoten ist, der den Aufbewahrungsort der ungecacheten Daten enthält, wodurch dem antwortenden Knoten ermöglicht wird, die Daten bereitzustellen, wenn die Hauptspeicherkopie gültig ist. Ein derartiger Knoten, in einem Verzeichnissystem, wird als ein Home node bezeichnet.
  • Das Verzeichnis kann auf zwei Arten verteilt sein. Erstens werden Hauptspeicherdaten (der ungecachete Aufbewahrungsort) häufig auf Knoten aufgeteilt, wobei das Verzeichnis in derselben Weise verteilt ist. Zweitens kann die Meta-Information selbst verteilt sein, wobei sie an dem Home node als kleine Information, ob die Zeile gecachet ist, und falls ja, wo eine einzelne Kopie steht, bleibt. SCI z. B. verwendet dieses Schema, wobei jeder Knoten, der eine gecachte Kopie enthält, Verbindungen zu anderen Knoten mit gecachten Kopien aufrechterhält, wodurch somit ein vollständiges Verzeichnis gemeinsam aufrechterhalten wird.
  • Für Snooping-Caches wird die Meta-Information mit den gecacheten Kopien selbst verteilt, so dass jede gültige Kopie einer Cache-Zeile von einer Einheit gehalten wird, die Anforderungen von Zugriff auf die Cache-Zeile erkennen und entsprechend antworten soll. Typischerweise gibt es einen Aufbewahrungsort, an dem die Daten in einem ungecacheten Zustand gehalten werden, d. h. deren ursprünglichen Ort. Häufig wird ein Agent oder eine für diesen ursprünglichen Ort verantwortliche Einheit als ein Home node bezeichnet. Wenn Zugriff auf eine Cache-Zeile angefordert wird, sendet ein anfordernder Knoten häufig die Adresse einer angeforderten Cache-Zeile gemeinsam mit notwendigen Berechtigungen, und Knoten, die eine Kopie der angeforderten Cache-Zeile halten, antworten entsprechend.
  • In einigen der gegenwärtigen Kohärenz- und Nachrichtenprotokolle führen jedoch Teillesevorgänge Lesen von Cache-Zeilen und Nicht-Snoop-Speicherzugriffe, d. h. nicht kohärente Zugriffe in einer kohärenten Architektur, unter bestimmten Bedingungen potentiell zum Weiterleiten von ungültigen Daten an einen Anforderer. Häufig ergeben sich diese Umstände anhand von Verletzungen von Speicherordnungsregeln in einem Protokoll. Folglich kann eine illegale Operation von Agenten durchgeführt werden, die die ungültigen Daten empfangen, was potentiell zur Instabilität in einem System führt.
  • In US 6922756 B2 ist ein sogenannter Forward-Zustand zur Gewährleistung einer Cache-Kohärenz offenbart. Dieser Zustand dient der Markierung einer Cache-Zeile zum Versenden an einen anfordernden Knoten.
  • Der vorliegenden Erfindung liegt die Aufgabe zugrunde, die Kohärenz in einem Cache-System zu erhalten. Diese Aufgabe wird gemäß den nebengeordneten Ansprüchen gelöst.
  • Die Unteransprüche betreffen jeweilige vorteilhafte Weiterbildungen.
  • Kurzbeschreibung der Zeichnungen
  • Die vorliegende Erfindung wird beispielhaft und nicht beschränkend durch die Figuren der beigefügten Zeichnungen beschrieben.
  • 1 stellt eine Ausführungsform einer Protokollarchitektur dar.
  • 2 stellt eine Ausführungsform eines Systems dar, das mehrere Prozessoren enthält, die mit einem Chipsatz unter Verwendung einer Punkt-zu-Punkt-Verbindung gekoppelt sind.
  • 3 stellt eine Ausführungsform eines Blockdiagramms für eine bidirektionale Verbindungsarchitektur unter Verwendung eines geschichteten Eingabe-Ausgabe(Input/Output(I/O))-Stapels dar.
  • 4a stellt eine Ausführungsform eines Protokolldiagramms für ein Nachrichtenprotokoll zwischen mehreren Knoten dar, das potentiell zu einem Zugriff auf ungültige Daten führt.
  • 4b stellt eine Ausführungsform eines Protokolldiagramms zum Liefern von gültigen Daten als Antwort auf Teil- und Nicht-Snoop-Speicherzugriffe dar.
  • 5a stellt eine weitere Ausführungsform eines Protokolldiagramms für ein Nachrichtenprotokoll zwischen mehreren Knoten dar, das potentiell zu einem Zugriff auf ungültige Daten führt.
  • 5b stellt eine weitere Ausführungsform eines Protokolldiagramms zum Liefern von gültigen Daten als Antwort auf Teil- und Nicht-Snoop-Speicherzugriffe dar.
  • Ausführliche Beschreibung
  • In der folgenden Beschreibung werden zahlreiche spezielle Details, wie z. B. spezielle Verbindungsarchitekturen, spezielle Nachrichten, spezieller Pseudocode, spezielle Verbindungsarchitekturschichten, etc., dargestellt, um für ein umfassendes Verständnis der vorliegenden Erfindung zu sorgen. Für einen Fachmann auf dem Gebiet wird jedoch ersichtlich sein, dass diese speziellen Details zur Umsetzung der vorliegenden Erfindung nicht verwendet werden müssen. In anderen Fällen sind allgemein bekannte Komponenten oder Verfahren, wie z. B. spezielle Verbindungsschichtarchitekturdetails, spezielle nicht wichtige Nachrichten und Protokolle, spezielle Funktionsdetails von Prozessoren und Caches, etc. nicht im Detail beschrieben worden, um ein unnötiges Verschleiern der vorliegenden Erfindung zu vermeiden.
  • Das hierin beschriebene Verfahren und die hierin beschriebene Vorrichtung dienen zur richtigen Speicherordnung zwischen Teilzugriffen und Nicht-Snoop-Speicherzugriffen in einer Verbindungsarchitektur. Speziell wird Beachtung von Speicherordnungsanforderungen hauptsächlich unter Bezugnahme auf eine illustrative Verbindungsarchitektur auf Basis einer Cache-kohärenten Verbindung diskutiert. Die Verfahren und Vorrichtungen zum Liefern von richtigen Speicherordnungsanforderungen sind jedoch nicht so eingeschränkt, da sie mit jeder Verbindungsarchitektur implementiert werden können.
  • Ausführungsform einer illustrativen Verbindungsarchitektur
  • 1 stellt eine Ausführungsform einer höheren vereinfachten Protokollarchitektur dar. In einer Ausführungsform dient die Protokollarchitektur zum Bewahren von Datenkonsistenz zwischen Daten in Caches in der Architektur während normaler Transaktionen, sowie während widerstreitender Anforderungen. Zusätzlich sorgt die Protokollarchitektur in einer Ausführungsform auch für Fortschritt (forward progress) für jede Anforderung, so dass jede Anforderung erfüllt und beendet bzw. abgeschlossen (retired) ist.
  • Eine Protokollarchitektur kann irgendeine Anzahl von Knoten oder Agenten enthalten. In einer Ausführungsform enthält ein Knoten einen Prozessor, der mit einem internen Cache-Speicher, einem externen Cache-Speicher und/oder einem externen Speicher verbunden ist. Ein Knoten oder Agent kann sich jedoch auf jedes Bauelement oder Ansammlung derselben in einer Verbindungsarchitektur, wie z. B. einen Prozessor, einen Memory Controller Hub, und E/A(I/O)-Hub, einen Generic Controller Hub, E/A(I/O)-Bauelement, eine Ansammlung von E/A(I/O)-Bauelementen oder irgendein anderes Bauelement/andere Komponente, die auf Speicher zugreifen kann, beziehen. In einer anderen Ausführungsform ist ein Knoten ein elektronisches System (z. B. Computersystem, Mobilgerät), das mit anderen elektronischen Systemen verbunden ist. Es können auch andere Typen von Knotenkonfigurationen verwendet werden.
  • Wie dargestellt, enthält die Architektur 100 Cache-Knoten/Agenten 105106 und Home Agents 110112. In einer Ausführungsform dienen die Home Agents 110112 zum Schützen von Speicherstellen, die finale Aufbewahrungsorte eines kohärenten Speicherplatzes sind. Mit anderen Worten ist der Agent 110 ein Home Agent, der für eine Vielzahl von ursprünglichen physikalischen Speicherstellen für Daten eines kohärenten Speicherplatzes verantwortlich ist. Home Agents 110112 können irgendeine Kombination der folgenden Aufgaben ausführen, die einschließen: Verfolgen von Cache-Zustandsübergängen von Caching-Agenten 105106, Verwalten von Konflikten unter Caching-Agenten 105106, Verbinden mit Speicher, Liefern von Daten und/oder Eigentümerschaft (ownership), sowie irgendwelche anderen bekannten mit Home Agents verbundene Aufgaben.
  • In einer Ausführungsform enthalten Cache-Agenten 105106 Agenten, die mit Cache-Speichern verbunden sind, wie z. B. Prozessoren, die Cache-Speicher und Caching-E/A(I/O)-Proxy-Instanzen enthalten. Cache-Agenten 105106 können irgendeine Kombination der folgenden Aufgaben sowie irgendwelche andere Aufgaben, wie Durchführen von Lese- und Schreibanforderungen in kohärenten Speicherplatz, Halten von gecacheten Kopien von Daten aus kohärentem Speicherplatz und Liefern von gecacheten Kopien an andere Peer-Caching-Agenten durchführen. Ein Caching-Agent oder -Knoten kann auch als ein Peer-Agent/Knoten im Verhältnis zu einem anderen Caching-Agenten bezeichnet werden. Obwohl dies in 1 nicht speziell dargestellt ist, kann die Protokollarchitektur auch Nicht-Caching-Agenten, wie z. B. einen Eingabe/Ausgabe(Input/Output(I/O))-Hub enthalten, um Transaktionen im Namen von I/O-Einrichtungen mitzumachen oder zu bezeugen.
  • In einer Ausführungsform bewahren Caching-Agenten 105106 und Home Agents 110112 Datenkonsistenz und sorgen sie für Fortschritt durch Austausch von Nachrichten über Netzwerkstruktur 101. In einer Ausführungsform erleichtert das Netz 101 den Transport von Nachrichten von einem Agenten/Knoten zu einem anderen Agenten/Knoten durch ein Punkt-zu-Punkt-Verbindungsnetzwerk. Es wird häufig gesagt, dass 1 eine abstrakte Ansicht von einem zugrunde liegenden Netzwerk eines Cache-Kohärenzprotokolls darstellt.
  • In einer Ausführungsform kann die Verbindungsarchitektur 100 eine Kombination von neuartigen Merkmalen enthalten, wie sie in den folgenden parallel anhängigen Anmeldungen beschrieben sind. Zum Beispiel beschreibt US-Patent Nr. 6,922,756 mit dem Titel „Forward State for Use in Cache Coherency in a Multi-Node System” die Verwendung eines Forward-Cache-Kohärenzzustands (F-Zustand). Ferner werden Beispiele für Kohärenzprotokolle in zahlreichen Situationen in der Anmeldung mit der Anmeldenummer XX/XXX,XXX (Anwaltsaktenzeichen P15925), eingereicht ..., mit dem Titel „A Two-Hop Cache Coherency Protocol”, Anmeldung mit der Anmeldenummer XX/XXX,XXX (Anwaltsaktenzeichen P18890), eingereicht am ..., mit dem Titel „A Messaging Protocol”, Anmeldung mit der Anmeldenummer XX/XXX,XXX (Anwaltsaktenzeichen P118891) eingereicht am ..., mit dem Titel „A Cache Coherence Protocol”, Anmeldung mit der Anmeldenummer XX/XXX,XXX (Anwaltsaktenzeichen P22376), eingereicht am ..., mit dem Titel „A Two-Hop Source Snoop Based Cache Coherence Protocol” und Anmeldung mit der Anmeldenummer XX/XXX,XXX (Anwaltsaktenzeichen P23106), eingereicht am ..., mit dem Titel „A Two-Hop Source Snoop Based Messaging Protocol” diskutiert.
  • Weitere Beispiele schließen die Anmeldung mit der Nummer 10/XXX,XXX (Anwaltsaktenzeichen P13923), eingereicht am ..., 2002, mit dem Titel „Speculative Distributed Conflict Resolution for a Cache Coherency Protocol”; Anmeldung mit der Nummer 10/XXX,XXX (Anwaltsaktenzeichen P13984), eingereicht am ..., 2002, mit dem Titel „Hierarchical Directories for Cache Coherency in a Multiprocessor System”; Anmeldung mit der Nummer 10/XXX,XXX (Anwaltsaktenzeichen P13985), eingereicht am ..., 2002, mit dem Titel „Hierarchical Virtual Model of a Cache Hierarchy in a Multiprocessor System”; Anmeldung mit der Nummer 10/XXX,XXX (Anwaltsaktenzeichen P 13986), eingereicht am ..., 2002, mit dem Titel „Non-Speculative Distributed Conflict Resolution for a Cache Coherency Protocol” ein.
  • Man beachte, dass die in den oben erwähnten parallel anhängigen Anmeldungen beschriebenen Merkmale in den hierin beschriebenen Ausführungsformen enthalten sein können; die hierin beschriebenen Ausführungsformen sind jedoch nicht derart eingeschränkt, da sie zusätzliche Merkmale sowie potentiell keines der oben beschriebenen Merkmale enthalten können.
  • 2 stellt eine Ausführungsform eines Systems dar, das mehrere Prozessoren enthält, die unter Verwendung einer Punkt-zu-Punkt-Verbindungsarchitektur mit einem Chipsatz gekoppelt sind. Das System von 2 kann auch mehrere Prozessoren enthalten, von denen nur zwei, Prozessoren 205, 210, der Klarheit halber gezeigt sind. Wie dargestellt ist, enthält jeder der Prozessoren 205, 210 zwei Verarbeitungselemente 206207, 211212; trotzdem kann irgendeine Anzahl von Verarbeitungselementen in den Prozessoren 205, 210 enthalten sein.
  • Ein Verarbeitungselement bezieht sich auf eine Thread-Einheit, eine Prozesseinheit, einen Kontext, einen logischen Prozessor, einen Hardware-Thread, einen Kern und/oder irgendein anderes Element, das einen Zustand für einen Prozessor halten kann, wie z. B. einen Ausführungszustand oder Architekturzustand. Mit anderen Worten bezieht sich ein Verarbeitungselement in einer Ausführungsform auf irgendeine Hardware, die mit Code unabhängig verknüpft werden kann, wie z. B. einem Software-Thread, Betriebssystem, einer Anwendung oder einem anderen Code. Als ein Beispiel bezieht sich ein physikalischer Prozessor typischerweise auf eine integrierte Schaltung, die potentiell irgendeine Anzahl von anderen Verarbeitungselementen, wie z. B. Kerne oder Hardware-Threads, enthält.
  • Ein Kern bezieht sich häufig auf Logik, die sich auf einer integrierten Schaltung befindet, die einen unabhängigen Architekturzustand bewahren kann, wobei jeder unabhängig bewahrte Architekturzustand mit mindestens einigen dedizierte Ausführungsressourcen verknüpft ist. Im Gegensatz zu Kernen bezieht sich ein Hardware-Thread, der auch als ein physikalischer Thread bezeichnet werden kann, typischerweise auf jede Logik, die sich auf einer integrierten Schaltung befindet, die einen unabhängigen Architekturzustand bewahren kann, wobei die unabhängig bewahrten Architekturzustände sich den Zugriff auf Ausführungsressourcen teilen. Somit können ersichtlich mehrere Software-Threads, wie z. B. mehrere Replikationen einer Single-Threaded-Anwendung, parallel auf mehreren Verarbeitungselementen ausgeführt werden, die eine Kombination von irgendwelchen der vorangehend genannten Verarbeitungselementen, wie z. B. Kerne oder Hardware-Threads, enthalten können.
  • In den Prozessoren 205, 210 sind auch Ressourcen 208, 213 dargestellt, die typischerweise Register, Einheiten, Logik, Firmware, Speicher und andere Ressourcen zum Ausführen von Code oder zum Verbinden mit anderen Einrichtungen enthalten. Wie oben angegeben, können einige der Ressourcen 110 für Verarbeitungselemente teilweise oder vollständig dediziert sein, während andere zwischen Verarbeitungselementen geteilt werden. Zum Beispiel können kleinere Ressourcen, wie z. B. Befehlszeiger und Umbenennungslogik für physikalische Threads repliziert werden. Einige Ressourcen, wie z. B. Umordnungspuffer in einer Umordnungs/Rückordnungseinheit (reorder/retirement unit), Befehlsnachschlageübersetzungspuffer (Instruction lookaside translation buffer (ILTB)), Lade/Speicherpuffer, und Warteschlangen können durch Partitionieren geteilt werden. Andere Ressourcen, wie z. B. universelle interne Register, Seitentabellenbasisregister, niedriger Daten-Cache, ein Daten-TLB, Ausführungseinheit und eine Out-Off-Order-Einheit werden potentiell unter Threads vollständig geteilt. Im Gegensatz dazu können Kerne dedizierte Ausführungsressourcen aufweisen, während sie sich zumindest einen Teil eines höheren Caches, wie z. B. einen prozessorexternen Cache-Speicher (second level cache (L2)), teilen.
  • In einer Ausführungsform schließen Ressourcen 208, 213 eine Prozessor-Pipeline ein, die irgendeine Anzahl von Pipeline-Stufen enthalten kann. Übliche Beispiele für Pipeline-Stufen schließen eine Befehlszeigerstufe, eine Holstufe, eine Dekodierstufe, eine Ansteuerstufe und Zuordnungsstufe, eine Umbenennungsstufe, eine Warteschlangenbildungsstufe, eine Umordnungsstufe, eine Zeitsteuerstufe, eine Verteilstufe, eine Ausführungsstufe, eine Speicherzugriffsstufe, und eine Registerzugriffsstufe ein. Man beachte, dass diese Liste von Stufen eine beispielhafte nicht abschließende Liste von Prozessor-Pipeline-Stufen enthält, da irgendwelche bekannten Pipeline-Stufen in Prozessor 100 enthalten sein können.
  • Die Prozessoren 205, 210 können dementsprechend jeweils auch eine Speichersteuerung oder einen lokalen Memory Controller Hub (MCH) als Verbindung mit dem Speicher 209, 214 enthalten. Die Speicher 209, 214 enthalten irgendeinen Speicherbaustein, wie z. B. Random Access Memory (RAM), Cache-Speicher, Flash-Speicher oder einen anderen Speicherbaustein. In einer Ausführungsform enthält der Speicher 214 einen Cache-Speicher auf höherer Ebene (Higher-Level Cache Memory) enthalten, während Ressourcen 213 einen Cache-Speicher auf niedrigerer Ebene enthalten. In einer anderen Ausführungsform enthält der Speicher 209 einen Dynamic Random Access Memory (DRAM), der mit dem Prozessor 205 verbunden ist, der einen Cache-Speicher zum Cachen von Daten aus dem DRAM 209 enthält. Man beachte, dass es sich hierbei um eine illustrative Ausführungsform handelt, da Speicher 209, 214 potentiell jede Art von Speichereinrichtung enthält.
  • In einer Ausführungsform, in der die Speicher 209, 214 Cache-Speicher enthalten, die entweder in den Prozessoren 205, 210 enthalten oder dazu extern angeordnet sind, wie dies dargestellt ist, können die Prozessoren 205, 210 ein Home node sowie ein Peer-Caching-Knoten sein. Wenn zum Beispiel eine Transaktion auf eine Speicherstelle in dem Speicher 209 Bezug nimmt, wird festgelegt, dass der für den Speicher 209 verantwortliche Agent, d. h.
  • Prozessor 205, ein Home Agent im Verhältnis zur Transaktion und zur Speicherstelle ist. In ähnlicher Weise wird bei einer Transaktion, die auf eine andere Speicherstelle Bezug nimmt, wie z. B. eine Stelle in dem Speicher 214, der Prozessor 205 als ein Peer-Caching-Agent bestimmt.
  • Wie ersichtlich ist, verbinden Punkt-zu-Punkt-Verbindungen 220224 Komponenten miteinander in einer Punkt-zu-Punkt-Weise. Physikalische Verbindungen 220224 enthalten in einer Ausführungsform jeweils eine bidirektionale Differenzsignalisierungsverbindung, wie z. B. die mit einer unten unter Bezugnahme auf 3 diskutierten physikalischen Schicht verbundenen physikalischen Verbindungen. Folglich können die Prozessoren 205, 210 und der Chipsatz 230 miteinander direkt kommunizieren.
  • Der Chipsatz 230 ist häufig ein allgemeiner Bezugspunkt für mehrere integrierte Schaltungen, wie z. B. ein Memory Controller Hub, der mit einem Input/Output(I/O)-Hub gekoppelt ist. In einer Ausführungsform, in der Agenten jeweils eine Version eines Memory Controller Hub als Verbindung mit dem Speicher enthalten, bezieht sich jedoch der Chipsatz 230 auf einen I/O-Hub oder einen anderen Steuer-Hub. In einer Ausführungsform ist der Chipsatz 230, wie oben erörtert, ein nicht-cachender Agent zum Mitmachen an Transaktionen oder Bezeugen derselben. Der Chipsatz 230 ist jedoch nicht derart beschränkt, da in anderen Ausführungsformen der Chipsatz 230 ein Caching Agent (zwischenspeichernder Agent), der einen Cache-Speicher enthält, und/oder ein Home Agent ist, der einen Speicher mit Aufbewahrungsorten für Daten an ursprünglichen Speicherstellen enthält.
  • Wie dargestellt ist, dient der Chipsatz 230 auch zum Verbinden mit einer Vielzahl von Verbindungs- und I/O-Einrichtungen, wie z. B. Peripheral Component Interconnect(PCI)- oder PCI Express(PCI-E)-Einrichtung 261, Integrated Device Electronics IDE)- oder Advanced Transfer Attachment(ATA)-Einrichtung 262, Universal Serial Bus(USB)-Einrichtung 262, Local Area Network (LAN) oder Wireless LAN(WLAN)-Einrichtung 264, Audioeinrichtung 265 und andere I/O-Einrichtung 266, die auch andere Verbindungsarchitektur zur Kopplung von I/O-Einrichtungen, wie hierin beschrieben, enthalten können.
  • In 3 ist eine Ausführungsform eines Blockdiagramms für eine bidirektionale Verbindungsarchitektur unter Verwendung eines geschichteten Verbindungsstapels dargestellt. Die Bezugnahme auf Schichten von 3, wie z. B. eine physikalische Schicht 302, enthält auch die Diskussion einer generischen Schicht, die in verschiedenen Agenten implementiert werden kann, wie z. B. physikalische Schicht 302a und physikalische Schicht 302b. Wie dargestellt ist, ist der Verbindungsstapel in fünf Schichten unterteilt, von denen eine oder mehrere potentiell optional auf einer Entwurfimplementierung basieren. Zum Beispiel ist Routing-Schicht 304 in einer Ausführungsform in die Funktionalität der Verbindungsschicht 303 eingebettet; somit ist die Routing-Schicht in einer Ausführungsform keine separate und verschiedene Schicht.
  • In einer Ausführungsform ist die physikalische Schicht 302 für elektrische Übertragung von Information auf ein physikalisches Medium verantwortlich. Zum Beispiel wird eine physikalische Punkt-zu-Punkt-Verbindung zwischen Verbindungsschichtinstanzen 303a und 303b verwendet. Als ein Anschauungsbeispiel enthält die physikalische Verbindung ein Differenzsignalisierungsschema, das ein bidirektionales Differenzsignalisierungspaar 351 und 352 enthält. Hier ist die physikalische Schicht in einen elektrischen Unterblock und einen logischen Unterblock potentiell logisch aufgeteilt, so dass die physikalische Schicht zum Isolieren des Restes des Stapels von der elektrischen Übertragung von Information und zum Kommunizieren mit der Verbindungsschicht 303 dient.
  • In einer Ausführungsform abstrahiert die Verbindungsschicht 303 die physikalische Schicht 302 von oberen Schichten des Stapels und liefert verbindungsbezogene Dienste, wie z. B. zuverlässige Datenübertragung und Flusskontrolle zwischen verbundenen Agenten/Instanzen, und Virtualisierung eines physikalischen Kanals/einer physikalischen Schnittstelle in mehrere virtuelle Kanäle und Nachrichtenklassen. Hier können virtuelle Kanäle als mehrere virtuelle Netzwerke zur Verwendung durch obere Schichten des Stapels angesehen werden. Zum Beispiel stützt sich die Protokollschicht 306 potentiell auf die durch die Verbindungsschicht 303 bereitgestellte Abstraktion zum Abbilden einer Protokollnachricht in eine Nachrichtenklasse und somit auf einen oder mehrere virtuelle(n) Kanal/Kanäle.
  • Die Routing-Schicht 304 liefert in einer Ausführungsform ein flexibles Verfahren zum Routen (Leiten) von Paketen von einer Quelle zu einem Ziel. Wie oben angegeben, kann in extrem einfachen Topologien die Routing-Schicht 304 nicht explizit vorliegen, sondern stattdessen in der Funktionalität der Verbindungsschicht 303 integriert sein. Zum Beispiel kann sich die Routing-Schicht 304 auf der Abstraktion der Verbindungsschicht 303 zum Spezifizieren eines <Port, virutelles Netzwerk> Paares zum Routen eines Pakets stützen. Hier wird Routingtabelleninformation bereitgehalten, um Routing-Informationen für Pakete zu liefern.
  • In einer Ausführungsform stellt die Transportschicht 305 zuverlässige Endpunkt (end-to-end) Übertragungsdienste bereit. Ähnlich wie die Routing-Schicht 304 basiert die Transportschicht 305 auch optional auf Entwurfimplentierung. Beispielsweise stützt sich die Transportschicht 305 auf Routing-Schicht 304-Dienste zum Bereitstellen von zuverlässiger Übertragungsunterstützung für die Protokollschicht 306. In einer Verbindungsarchitektur enthält eine Untergruppe von Komponenten in einer Ausführungsform die Transportschicht 305. Folglich definiert diese Untergruppe von Komponenten Unterfelder von Paketen bezüglich der Transportschicht 305, während andere Komponenten potentiell keine derartigen Unterfelder definieren.
  • Die Protokollschicht 306 dient in einer Ausführungsform zum Implementieren eines höheren Kommunikationsprotokolls zwischen Knoten/Agenten, wie z. B. Cache-Kohärenz, Ordnung, Peer-zu-Peer-Kommunikation, Unterbrechungszustellung etc. Mit anderen Worten definiert dementsprechend die Protokollschicht 306 zulässige Nachrichten, Anforderungen, Antworten, Phasen, Kohärenzzustände, etc. für Knoten oder Agenten, wie z. B. Home nodes, Peer-Knoten, Caching-Knoten und Nicht-Caching-Knoten. Beispiele für Nachrichten, wie z. B. Home-node-Nachrichten, Snoop-Nachrichten, Antwortnachrichten etc. werden unten erörtert.
  • Es ist zu beachten, dass Diskussion von Schichten und damit verbundener Logik in beliebiger Weise gekoppelt werden kann. Zum Beispiel kann gesagt werden, dass die Protokolllogik mit einer physikalischen Schicht gekoppelt ist, d. h. Übertragungs- oder Empfangslogik. Wie anhand von 3 ersichtlich ist, kann hier in einer Ausführungsform die Protokolllogik mit einer physikalischen Schicht nicht direkt gekoppelt sein, sondern über eine Logik einer anderen Schicht. Ferner ist in einer Ausführungsform der Verbindungsstapel mit Logik einer inneren Komponente, wie z. B. Cache-Steuer- oder Cache-Speicher-Logik, gekoppelt, um geeignete Cache-Kohärenzaktionen zu initiieren.
  • Überblick von einer Ausführungsform eines MESIF-Protokolls
  • In einer Ausführungsform liefert das grundlegende Modified Exclusive Shared Invalid Forward(MESIF)-Protokoll ein Protokoll, das einem Snoop-Protokoll ähnelt, ohne die potentiellen Beschränkungen eines einzelnen Serialisierungsbusses. Wie ein Snooping-Cache-Protokoll stützt sich MESIF auf Knoten mit gecachten Kopien von Daten, um Kohärenz aufrechtzuerhalten. Die Verwendung von Punkt-zu-Punkt-Verbindungen statt eines synchronen, zentralisierten Sendens führt zum Problem von „time-warp”, d. h. der Tatsache, dass Ereignisse anscheinend in einer anderen Reihenfolge aus Sicht von unterschiedlichen Knoten stattfinden. Als ein Beispiel handhabt das MESIF-Protokoll „time-warp” durch Erkennen von potentiellen Fehlern aufgrund von „time-warp” und liefert Protokoll- oder Softwarelösung dafür.
  • Ein Home node ist häufig mit einer ungecacheten Kopie von Daten verbunden. Folglich kann ein Home node an einer Transaktion bezüglich Daten teilnehmen, die mit dem Home node verbunden sind. Jedoch muss der Home node nicht in einem mit einer Transaktion verbundenen „kritischen Weg” enthalten sein, sondern kann sich vielmehr ein Home node sich in die Transaktion einwerfen (interject), um Konflikte und time-warp-Probleme zu lösen. Aufgrund der gleichzeitigen Sendeart des Schemas erzielt das MESIF in einer Ausführungsform die mit Snooping-Protokollen verbundene geringe Latenz, während es eine cachebare Kopie der Daten erlangt, in bestimmten Fällen, bei der minimal möglichen Latenz: eine Anforderung-Antwort in einem einzigen Umlauf.
  • In einer Ausführungsform ist eine mit einem MESIF-Protokoll in Beziehung stehende grundlegende Transaktion mit Senden einer anfänglichen Anforderung an alle Peer-Knoten sowie einen Home node verbunden. Wenn eine Kopie in Kohärenzzustand E, F oder M gecacht ist, ist sie in der Antwort enthalten. Eine zweite Nachricht wird danach an den Home node gesendet, die ihn informiert, dass die Anforderung erfüllt worden ist. Wenn die angeforderte Zeile nicht gecachet ist oder wenn nur S-Zustand-Kopien existieren, wird die an den Home node gesendet zweite Anforderung verwendet, um die frühere Anforderung zu bestätigen, die der Home node inzwischen aus seinem Speicher geholt haben kann. In jedem Fall antwortet der Home node auf die zweite Anforderung (und potentiell auf die erste, obwohl sie manchmal kombiniert werden können) zum Zwecke der Synchronisation und Konfliktlösung. Man beachte, dass der Home node einen oder mehr Cache(s) aufweisen kann, so dass er auf die anfängliche Anforderung genau wie jeder andere Knoten antworten kann.
  • In einer Ausführungsform werden Konflikte in einer verteilten Art gehandhabt. Das time-warp-Problem erschwert die Detektion von Konflikten, weil individuelle Anforderungen um eine beliebig lange Zeit verzögert werden können. Es wird jedoch ein Konflikt detektiert werden, wenn jeder Knoten eine Überwachung hinsichtlich Konflikten nach Vornahme einer Anforderung durchführt. Mehrere Knoten können potentiell einen Konflikt detektieren, aber als ein Beispiel wird mindestens einer der Knoten einen Konflikt detektieren. Folglich enthält eine Antwort von einem Knoten in einer Ausführungsform potentiell Konfliktinformation.
  • In einer Ausführungsform kann ein Knoten, der eine Kopie der Daten von einer Antwort erhält, die Daten intern unmittelbar nach Erhalt verwenden, aber bewirkt er nicht die für den Rest des Systems, d. h. global sichtbare Verwendung der Daten, bis der Knoten eine Bestätigung erhalten hat. Die Bestätigung kann auch Befehle enthalten, dass der anfordernde Knoten eine Kopie an einen anderen Knoten weiterleiten muss und vielleicht den Knoten zum Verlassen seines eigenen Caches zwingen.
  • Wenn ein Knoten auf eine Anforderung von einem anderen Knoten durch Liefern der gecacheten Daten antwortet, verschiebt letztendlich der Knoten in einer Ausführungsform andere Anfragen, die er für dieselben Cache-Zeile erhält, bis der Knoten eine Antwort von dem Home node empfängt, die die Tatsache bestätigt, dass der Knoten die Daten weitergeleitet hat, wodurch somit sichergestellt wird, dass alle Knoten dieselbe Reihenfolge der Übertragung der (wahrscheinlich beschreibbaren) Cache-Zeile beachten.
  • Wie oben angegeben, ist der Home node ein Aufbewahrungsort für ungecachete Daten, aber der Home node kann auch einen Prozessor und einen Cache enthalten. Wenn der Home node-Prozessor einen Fehlgriff auf den Cache begeht, sendet der Home node Anforderungen an alle anderen (Peer-)Knoten und handhabt der Home node die Anforderung intern so, als wäre sie irgendeine andere Anforderung, die bei dem Home node ankommt. Es ist zu beachten, dass dies ein Speziellfall ist, in dem der Home node Nachrichten nicht explizit an sich selbst (den Home node) sendet. Wenn zusätzlich eine externe Anforderung von Daten, die lokal gecachet sind, eintrifft, antwortet der Home node geeignet.
  • Das offenbarte Nachrichtenprotokoll definiert einen Satz von zulässigen Nachrichten zwischen Kohärenz(Cache und Home)-Agenten, Nicht-Caching-Agenten sowie anderen Agenten (Speichersteuerungen, Prozessoren etc.). Ein Kohärenzprotokoll verwendet die Nachrichten als Wörter und Grammatik in einem Algorithmus zum Ausdrücken eines Kohärenzgedankens. Dieser Algorithmus ordnet Anforderungen vernünftig, löst Konflikte und beschreibt Interaktionen zwischen Caching-Agenten. Obwohl oben ein MESIF-Protokoll beschrieben wird, muss das MESIF-Cache-Kohärenzprotokoll nicht notwendigerweise benutzt werden. Zum Beispiel kann der Forward-Zustand nicht benutzt werden, was zur Verwendung des bekannten MESI-Protokolls führt. Außerdem ist zu beachten, dass die obige Diskussion einen beispielhaften Überblick von einer Ausführungsform für ein MESIF-Protokoll enthält. Demzufolge können sich oben beschriebene zahlreiche Komponenten in separaten Ausführungsformen unterscheiden. Eine nicht abschließende beispielhafte Auflistung von potentiellen Nachrichten, die in einem Nachrichten- und/oder Kohärenzprotokoll verwendet werden, ist unten enthalten.
  • Snoop-Nachrichten
  • In einer Ausführungsform sind Snoop-Nachrichten auf Caching-Agenten, wie z. B. Peer-Caching-Agenten, gerichtet. Snoop-Nachrichten enthalten typischerweise keine Home node Kennung (Identifier (ID)), so dass sie zu Peer-Caching-Agenten, aber nicht zu einem Home node geleitetet werden.
  • Snoop Data (SnpData): Dies ist ein Snoop zum Erhalten von Daten in E-, F- oder S-Zuständen.
  • Snoop Invalidate Own (SnpInvOwn): Dies ist ein Snoop zum Erhalten von Daten in E- oder M-Zuständen. In einer Ausführungsform dient ein Peer-Agent zum Liefern der Daten als Antwort auf Halten der Daten in seinem lokalen Speicher in dem E- oder M-Zustand.
  • Snoop Invalidate Invalid to Exclusive (SnpInvItoE): Dies ist ein Snoop zur Ungültigerklärung eines Peer-Caching-Agenten und zum Entleeren irgendwelcher M-Zustand-Daten zum Home node.
  • Snoop Invalidate X to Invalid (SnpInvXtoI): Dies ist ein Snoop zur Ungültigerklärung eines Peer-Caching-Agenten und zum Entleeren irgendwelcher M-Zustand-Daten zum Home node.
  • Snoop Invalidate No Forward (SnpInvNoFwd): Dies ist ein Snoop zum Erhalten von Daten, die bewirken, dass ein Peer-Agent (1) die Daten in Speicher zurückschreibt (write back), die in bestimmten Cache-Kohärenzzuständen gehalten werden, (2) die in einem lokalen Speicher gehaltenen Daten ungültig erklärt und (3) die Daten dem anfordernden Knoten nicht direkt bereitstellt. In einer Ausführungsform dient ein Peer-Agent zum Zurückschreiben der in einem M-Zustand gehaltenen Daten. In anderen Ausführungsformen dient ein Peer-Agent auch zum Zurückschreiben der in einem E-Zustand, S-Zustand, F-Zustand oder einer Kombination derselben gehaltenen Daten.
  • Home-Nachrichten
  • Die folgenden Nachrichten sind mit einem Home node verbunden. Beispielsweise sind einige der folgenden Anforderungsnachrichten an einen Home node. In der Tat beachte man die Ähnlichkeit zwischen einigen der Snoop-Nachrichten und Home-Nachrichten. Zum Beispiel sind SnpInvNoFwd von oben und RdInvNoFwd von unten ähnlich, außer dass die Snoop-Nachricht auf Peer-Caching-Agenten gerichtet ist und die Lesenachricht auf einen Home Agent gerichtet ist. Folglich wird häufig gesagt, dass sowohl die SnpInvNoFwd als auch die RdInvNoFwd derselbe Nachrichtentyp, wie z. B. ein Read Invalidate-Typ, ein Snoop Invalidate-Typ, ein Read Invalidate No Forward-Typ und der Snoop Invalidate No Forward-Typ, sind.
  • Andere Home-Nachrichten schließen Home-Zurückschreib-Markierungsnachrichten ein. Hier können Daten über WbData-Nachrichten separat gesendet werden, die in irgendeiner Reihenfolge bezüglich der Markierungsnachrichten empfangen werden können. Andere Beispiele für Home-Nachrichten, die unten enthalten sind, sind Home-Snoop-Antwortnachrichten von Caching-Agenten an Home Agents und Home-Konfliktbestätigungsnachrichten zum Signalisieren eines Beginns einer Konfliktphase.
  • Read Data (RdData): Dies ist eine Anforderung von Daten in einem Exklusiv(E)-Zustand sowie potentiell einem Forward(F)-Zustand oder einem S-Zustand in Abhängigkeit von der Ausführungsform.
  • Read Invalidate Own (RdInvOwn): Dies ist eine Anforderung einer Cache-Zeile in M- oder E-Zuständen.
  • Invalidate Invalid to Exclusive (InvItoE): Dies ist eine Anforderung einer Cache-Zeile ohne Daten.
  • Non-Snoop Read (NonSnpRd): Dies ist eine Anforderung zur Durchführung eines nicht kohärenten Lesens aus Speicher.
  • Non-Snoop Write (NonSnpW): Dies ist eine Anforderung zur Durchführung eines nicht kohärenten Schreibens in Speicher.
  • Read Invalidate No Forward (RdInvNoFwd): Dies ist eine Anforderung zum Lesen von Daten aus Speicher. In einer Ausführungsform dient ein Home node zum Warten auf Daten, die aus einem Caching-Agenten als Antwort auf Empfangen dieser Nachricht zurückzuschreiben sind, und dann zum Liefern von korrekten Daten an den anfordernden Agenten nach Empfang der Daten, die zurückschrieben wurden. In einer anderen Ausführungsform dient der Home node zum Empfangen einer Antwortnachricht von einem Peer-Caching-Agenten, das eine in Bezug genommene Zeile in einem Ungültig-Zustand gehalten wird. Hier dient der Home node zum Liefern der korrekten Daten aus seinem lokalen Speicher oder dem ursprünglichen Speicheraufbewahrungsort.
  • Wie oben diskutiert, ist zu beachten, dass eine RdInvNoFwd- einer SnpInvFwd-Nachricht ähnelt; jedoch ist häufig bei einer Snoop-Nachricht eine Home node-Kennung (ID) nicht in der Nachricht enthalten, so dass ein Snoop nicht zum Home node geleitet wird, während eine RdInvNoFwd zu einem Home node geleitet wird.
  • Write Back Modified to Invalid, Shared, or Exclusive (WbMtoI, WbMtoS und WbMtoE): Die ist eine Anforderung zum Zurückschreiben einer Cache-Zeile in einem M-Zustand in Speicher und entsprechendes Überführen des Cache-Zeilenzustands in einen Ungültig-Zustand, einen Geteilt-Zustand oder einen Exklusiv-Zustand. In einer Ausführungsform sind diese Nachrichten Markierungsnachrichten zum Anzeigen, dass Daten gesendet werden sollen. während die Daten tatsächlich über eine separate Nachricht, wie z. B. eine WB*Data*-Nachricht transportiert werden.
  • Response Invalid or Shared (RspiI oder RspS): Peer-Agent wird dementsprechend mit Zeile in Ungültig-Zustand oder in einem S-Zustand gelassen.
  • Response Forward Invalid or Shared (RspFwdI oder RspFwdS): Peer hat Daten an den Anforderer gesendet und die Zeile bleibt entsprechend in einem Ungültig- oder Geteilt-Zustand.
  • Response Forward Invalid or Shared Writeback (RspFwdIWb oder RspFwdSWb): Peer hat Daten an den Anforderer und eine WbIData an einen Home node gesendet und die Zeile bleibt entsprechend in dem Ungültig- oder Geteilt-Zustand.
  • Response Invalid or Shared Writeback (RespIWb oder RespSWb): Peer hat die Daten mit einer in-flight-WbIData-Nachricht an den Home geleert und hat keine Nachricht an den Anforderer gesendet.
  • Response Conflict (RspCnflt): Peer bleibt mit Zeile in Ungültig-Zustand und der Peer weist eine widersprechende offene Anforderung auf.
  • Acknowledge Conflict (AckCnflt): Bestätige Empfang eines Datenabschluss/Datenbewilligung und Abschluss/Zwangsbestätigung-Konflikts.
  • Nicht-Daten-Antwortnachrichten
  • In einer Ausführungsform enthalten Nicht-Daten-Antwortnachrichten Bewilligungsnachrichten zum Bewilligen von Eigentümerschaft an einer Zeile ohne Senden von Daten. Nicht-Daten-Antwortnachrichten können auch Abschlussnachrichten zum Signalisieren von Abschluss und potentiellen Extrahieren von Daten von einem Eigentümer unter Konfliktbedingungen enthalten.
    Grant_Completion (GntCmp): Bewilligungsexklusive Eigentümerschaft ohne Daten
    Grant Force Acknowledge Conflict (Gnt_FrcAckCnflt): Bewilligungsexklusive Eigentümerschaft ohne Daten plus ein Zwangsbestätigungskonflikt.
    Completion (CMP): Alle Snoop-Antworten erfasst und keinen Konflikt detektiert.
    Force Acknowledge Conflict (FrcAckCnflt): Snoop-Antworten erfasst für einen Bestätigungskonflikt.
    Complete Forward Invalidate Own (Cmp_FwdInvOwn): Schließe Anforderung ab, leite die Zeile in Exklusiv- oder Modifiziert-Zustand an den Anforderer und erkläre lokale Kopie für ungültig.
  • Datenantwortnachrichten
    • DataC_*: Daten in korrespondierendem MESIF-Zustand.
    • DataC_*_Cmp: Daten in korrespondierendem ESIF-Zustand mit einem Abschuss.
    • DataC_*_FrcAckCnflt: Daten in korrepondierendem ESIF-Zustand mit einem FrcAckCnflt.
    • Wb*Data: Schreibe Daten zurück (writeback), Übergang in korrespondierenden E-, S- oder I-Zustand.
    • Non-Snoop Write Data (NonSnpWr): Dies ist ein nicht-kohärentes Schreiben in Speicher.
  • In 4a ist eine Ausführungsform eines Protokolldiagramms zur Nachrichtenübertragung zwischen mehreren Knoten dargestellt. Vier Knoten oder Agenten sind dargestellt: Ein I/O-Hub, ein Home node, ein Prozessor A mit einem Cache und ein Prozessor B mit einem Cache. Man beachte, dass, wie dargestellt, die Prozessoren A, B Peer-Caching-Agenten enthalten, während der I/O-Hub ein Non-Caching Agent, d. h. ein Zeuge (witness), ist.
  • Das in 4a dargestellte Protokoll ergibt sich als Antwort auf die folgende stark vereinfachte Wechselwirkungsstruktur:
    Figure DE102009032076B4_0002
  • Man beachte hier, dass in einer Ausführungsform die Verbindungsarchitektur Teilspeicherzugriffe und Nicht-Snoop-Speicherzugriffe unterstützt. Zum Beispiel enthält ein Teilspeicherzugriff, der auch als ein nicht cachebarer (un-cacheable(UC))-Speicherzugriff bezeichnet werden kann, einen Zugriff auf einen Teil einer Cache-Zeile. Hier enthält ein Teil der Cache-Zeile potentiell ungültige Daten, so dass ein Teil entweder aktualisiert oder gelesen wird, gemäß dem Speicherzugriff. Zusätzlich bezieht sich ein Nicht-Snoop-Speicherzugriff auf einen nicht kohärenten Speicherzugriff von einem Nicht-Caching-Agenten, wie z. B. dem I/O-Hub.
  • Unter spezieller Bezugnahme auf 4a führt der Prozessor B das Schreiben auf Daten X, d. h. X = 1 durch. Als Antwort auf das Teillesen von Daten X von dem Prozessor A wird eine RdInvOwn(X)-Nachricht an den Home node gesendet und eine SnpInvOwn(X)-Nachricht an den Peer-Agenten B gesendet. Da B gegenwärtig die mit Daten X verbundene Cache-Zeile in einem modifizierten Zustand hält, liefert der Agent B als Antwort auf Empfang der SnpInvOwn(X) die Daten X in einer DataC_M(X = 1)-Nachricht an den anfordernden Agenten A und sendet RspFdwI(X)-Nachricht an den Home node, um anzuzeigen, dass er die Daten an den anfordernden Agenten A geliefert und die Cache-Zeile in dem Ungültig-Zustand, d. h. LLC = M, I, gelassen hat. Hier sendet der Home node eine Abschluss(X)-Nachricht an den Prozessor A, um einen Abschluss der Transaktion anzuzeigen.
  • Nachdem der Agent B die Daten an den anfordernden Agenten A sendet, aber bevor der Agent A die Abschlussnachricht erhält, gibt jedoch der Agent B eine Anforderungsnachricht d. h. SnpInvOwn(X), die Daten X anfordert und als eine separate Transaktion mit gepunkteten Linien dargestellt ist, aus. Folglich detektiert der Agent A einen Konflikt bezüglich der Daten X. Demzufolge sendet der Agent A eine RspCnflt an den Home node und später eine AckCnflt(X) als Antwort auf Erhalt von Daten/den Abschluss.
  • Demzufolge sendet der Home node, als der Vermittler von Konflikten, einer Agent A Cmp_FwdInvOwn an Agent A. Als Antwort schreibt Agent A X = 1 an den Home-nod mit Nachrichtenmarkierung RspIWb(X) und Datennachricht WbIData(X = 1) zurück und führt Agent A das cachebare Schreiben auf Y, d. h. Y = 1, durch. Hier wird Y = 1 an den Home Agent mit Markierung WbMtoI(Y) und Datennachricht WbIData(Y = 1) zurückgeschrieben.
  • Die Rückschreib(writeback)-Nachrichten von dem Agenten A zum Liefern des Werts von X als 1 werden jedoch aufgrund einer Vielzahl von Gründen verzögert. Zwischenzeitlich führt der Nicht-Caching-Agent I/O-Hub das Nicht-Snoop-Lesen von Y, d. h. NonSnpRd(Y) und das Nicht-Snoop-Lesen von X, d. h. NonSnpRd(X), durch. Wie anhand der Darstellung ersichtlich ist, weist X in der DataC_I_Cmp(X = 0)-Nachricht, die als Antwort auf die NonSnpRd(X) erfolgt, einen Wert von 0 statt 1 aufgrund der Verzögerung der Rückschreib(writeback)-Nachrichten vom Agenten A zum Home node auf. Im wesentlichen wird ein ungültiger Wert von 0 dem I/O-Hub anstelle des gültigen Werts von 1 bereitgestellt, was daran liegt, dass ein früheres Teillesen in einen Konflikt verwickelt ist und ein Nicht-Snoop-Lesen von einem Nicht-Caching-Agenten durchgeführt wird, bevor die korrekten Daten in dem Home node empfangen werden.
  • Hier können die potentiellen Probleme dahingehend zusammengefasst werden, dass die Read Invalidate Own-Nachricht potentiell bewirkt, dass ein Peer-Agent (B) eine modifizierte Kopie an den Teilleseanforderer (A) ohne ein Zurückschreiben in den Speicher weiterleitet und mit der Zeit A globale Beobachtung erreicht und den korrekten Wert von X an den Home node zurückliefert, wobei der Home node bereits potentiell einen falschen Wert an den I/O-Hub geliefert hat.
  • Somit wird in einer Ausführungsform ein spezieller Nachrichtentyp für Teilspeicherzugriffe, wie z. B. ein Teillesen, verwendet. In einer Ausführungsform enthält der Nachrichtentyp eine Snoop-Ungültigerklärungs-Nachricht, die an einen Peer-Agenten gerichtet ist, um anzuzeigen, dass eine zugehörige Cache-Zeile für ungültig erklärt und nicht an den Teilleseanforderer weitergeleitet werden sollte. Außerdem dient in einer anderen Ausführungsform die Nachricht auch dazu, dem Peer-Agenten anzuzeigen, dass Daten in einem speziellen Cache-Kohärenzzustand, wie z. B. einem modifizierten Zustand, in den Speicher, d. h. den Home node, zurückgeschrieben werden sollten.
  • In ähnlicher Weise enthält der spezielle Nachrichtentyp in einer Ausführungsform eine an einen Home node gerichtete Leseungültigkeitserklärungsnachricht anstelle einer an einen Peer-Agenten gerichteten Snoop-Ungültigerklärungsnachricht. In einer Ausführungsform dient ein Home node zum Liefern der korrekten Daten an den Teilleseanforderer als Antwort auf Erhalt der Leseungültigerklärungsnachricht. Hier enthält Bereitstellen der korrekten Daten potentiell Warten auf einen Cache-Agenten, der die Snoop-Nachricht zum Zurückschreiben seiner Kopie der in dem speziellen Cache-Kohärenzzustand, wie z. B. einem modifizierten Zustand, gehaltenen Daten erhielt, und Liefern der Kopie an den Teilleseanforderer. In einer anderen Ausführungsform enthält das Liefern der korrekten Daten potentiell Empfangen einer Antwort von einem Peer-Agenten, dass er die Cache-Zeile in einem ungültigen Zustand hält, und Liefern einer lokalen Kopie der Daten in dem Home node oder einer Kopie der Daten von einem ursprünglichen Aufbewahrungsort, der mit dem Home node verbunden ist, an den Teilleseanforderer.
  • Als ein erstes Beispiel enthält der Nachrichtentyp eine Read Invalidate No Forward(RdInvNoFwd)-Nachricht, wobei die Snoop-Invalidate-Nachricht an den Peer-Agenten eine Snoop Invalidate No Forward(SnpInvNoFwd)-Nachricht enthält und die Read Invalidate-Nachricht an den Home Node eine Read Invalidate No Forward-Nachricht enthält. Der Nachrichtentyp und die Nachrichten sind jedoch nicht so beschränkt. In der Tat wird in einer anderen Ausführungsform eine andere Snoop Invalidate-Nachricht, wie zum Beispiel SnpInvItoE oder SnpInvXtoI verwendet. Wie oben diskutiert, dient hier der Snoop zum Ungültigerklären und Anzeigen durch die Nachricht selbst oder durch Implementierung des generischen Protokolls, dass Daten nicht direkt von dem empfangenen Agenten an den ein Teillesen fordernden Agenten weitergeleitet werden sollen.
  • 4b stellt eine Ausführungsform eines Protokolldiagramms zum Liefern von gültigen Daten als Antwort auf Teil- und Nicht-Snoop-Speicherzugriffe dar. Ähnlich wie das Diagramm von 4a sind dieselben Agenten im oben erwähnten Wechselwirkungsmuster involviert. Hier wird jedoch statt Senden einer RdInvOwn(X)-Nachricht an den Home node und einer SnpInvOwn(X)-Nachricht an den Peer-Agenten B als Antwort auf die Teilleseanforderung durch Agent A eine RdInvNoFwd(X)-Nachricht an den Home node gesendet und eine SnpInvNoFwd(X)-Nachricht an den Peer-Agenten B als Antwort auf die Teilleseanforderung gesendet.
  • Wenn hier der Peer-Agent B die SnpInvOwn(X)-Nachricht empfängt, wird die mit den Daten verbundene Cache-Zeile in einem modifizierten Cache-Kohärenzzustand gehalten. Somit wird die modifizierte Kopie der Daten, d. h. X = 1, zu dem Home node zurückgeschrieben, d. h. zurückgeschoben, durch Nachrichten RspIWb(X) und WbIData(X = 1), statt dass Daten direkt an den Teilleseanforderagenten A in 4a geliefert werden.
  • Ein ähnlicher Protokollfluss wie in 4a fährt dann mit einer Konfliktphase fort. Man beachte jedoch, dass, wenn die NonSnpRd(X), d. h. Nicht-Snoop-Lesen, von dem I/O-Hub angefordert wird, die gültigen Daten von X = 1 bereits in den Speicher zurückgeschrieben worden sind, selbst wenn die Verzögerung von RspI(X) nach dem Nicht-Snoop-Lesen auftritt. Somit führt in dieser Ausführungsform die Verwendung einer Snoop-Invalidate No Forward-Nachricht anstelle der Snoop Invalidate Own-Nachricht für das Teillesen zu einer Korrektur der obengenannten potentiellen Probleme. Mit anderen Worten werden als Antwort auf die Snoop Invalidate No Forward-Nachricht für das Teillesen die Daten nicht direkt an den Teilleseanforderer weitergeleitet und erfolgt das Zurückschreiben von modifizierten Daten vor dem Nicht-Snoop-Lesen durch den I/O-Hub.
  • In 5a ist eine Ausführungsform eines Protokolldiagramms für ein anderes Szenario, das bei einer Speicherordnungsverletzung potentiell auftreten kann, dargestellt. Das in 5a dargestellte Protokoll ergibt sich als Antwort auf das folgende beispielhafte Wechselwirkungsmuster:
    Figure DE102009032076B4_0003
  • Als erstes initiiert Agent B eine Cache-kohärente Lesetransaktion von Daten. RdData- und SnpData-Nachrichten werden an den Home node und Peer-Agenten A gesendet. Peer-Knoten A antwortet dem Home node mit einer RspI, um anzuzeigen, dass eine mit Daten verbundene Cache-Zeile in einem Gültig-Zustand geblieben ist. Demzufolge liefert der Home node eine DataC_E_E_Cmp-Nachricht an Agent B, der die Cache-Zeile in einen Exklusiv-Zustand mit Daten = 0, d. h. alt, überführt. Außerdem initiiert der I/O-Hub oder Erzeuger Nicht-Snoop-Schreibtransaktionen mit dem Home, was dazu führt, dass Daten und Flag jeweils auf neu, d. h. einen Wert von 1, gesetzt werden.
  • Verbraucheragent A initiiert dann Teillesetransaktionen von Flag und Daten. Wenn jedoch Peer-Agent B die SnpInvOwn(D) empfangt, hält Agent B die mit den Daten verbundene Cache-Zeile in einem Exklusiv-Zustand. Folglich liefert der Peer-Agent B seine gecachte Kopie von Daten, d. h. Daten gleich alt, und eine RspFwdI-Nachricht an den Home node. Leider führt As Lesen von Daten, statt Holen der letzten Kopie von Daten, die der Erzeuger I/O-Hub, in Speicher abgelegt hat, zu einer veralteten Kopie in Bs Cache zur Weiterleitung an A, obwohl As Lesen von Flag nicht die letzte Kopie aus dem Speicher erhält.
  • Beispielsweise nehme man an, dass I/O-Hub das Nicht-Snoop-Schreiben im Auftrag einer I/O-Einrichtung durchführt, die mit dem Prozessor A kommuniziert. Idealerweise überprüft der Prozessor A das Flag, um zu sehen, wann neue Daten eingetroffen sind, was dem Prozessor ermöglicht, andere Operationen durchzuführen, bis die Daten für die Handhabung bereit sind. In der dargestellten Gruppe von Bedingungen liest jedoch der Prozessor A das Flag als neu, um darauf hinzuweisen, dass neue Daten eingetroffen sind, und arbeitet er potentiell an ungültigen, alten Daten, in der Annahme, dass sie neue Daten sind, auf der Grundlage des neuen Flag-Werts. Demzufolge führt diese Speicherordnungsverletzung potentiell zu einer ungültigen Ausführung.
  • In 5b ist eine Ausführungsform eines Protokolldiagramms zum Liefern von geeigneter Speicherordnung für das obengenannte Wechselwirkungsmuster dargestellt. Hier wird die ursprüngliche kohärente Lesetransaktion mit Anforderung-, Antwort- und Abschlussphasen durchgeführt. In ähnlicher Weise werden die Nicht-Snoop-Schreibvorgänge von einem Nicht-Caching-Agenten durchgeführt, um Daten und Flag zu aktualisieren. Für die Teillesevorgänge von Flag und Daten werden jedoch Read Invalidate No Forward- und Snoop Invalidate No Forward-Nachrichten verwendet. Folglich leitet der Peer-Agent B in beiden Fällen Daten nicht direkt an Verbraucher/teilleseanfordernde Agenten A weiter. Stattdessen wird mit in dem Exklusiv-Zustand gehaltenen Daten in dieser Ausführungsform eine RspI an den Home node gesendet und die Cache-Zeile in einen Ungültig-Zustand überführt. Außerdem liefert der Home node die korrekten Daten, d. h. Daten = neu, die von dem I/O-Hub-Erzeuger hinterlegt wurden.
  • Wie anhand des Vorangehenden ersichtlich ist, können somit Speicherordnungsverletzungen, die sich anhand von Teillesevorgängen und nicht kohärenten Speicherzugriffen ergeben, durch Verwendung von Protokollnachrichten für die Teillesevorgänge, damit Peer-Agenten deren gecachten Kopien für ungültig erklären und nicht weiterleiten, vermieden werden. Oben werden einige erläuternde Beispiele für Speicherordnungsverletzungen und wie sie korrigierbar sind, diskutiert. Dennoch sind durch die Verwendung von genannten Nachrichten potentiell viel mehr Wechselwirkungsmuster zwischen Teilzugriffen und nicht kohärenten Zugriffen korrigierbar. Außerdem führt die Implementierung dieser Protokollnachrichten, in einer Ausführungsform, in Protokolllogik potentiell zu vermindertem Risiko, das Legacy-Softwarespeicherordnungsverletzungen verursacht werden, reduziert die Last auf Software-Programmierer, an Softwarebeschränkungen festzuhalten, um Speicherordnung zu erzwingen, und ermöglicht neue Hardware- und Softwarenutzungsmodelle.
  • Ein hierin verwendetes Modul bezieht sich auf irgendeine Hardware, Software, Firmware oder eine Kombination derselben. Häufig variieren und potentiell überlappen Modulgrenzen, die als gewöhnlich separat dargestellt sind. Zum Beispiel können ein erstes und ein zweites Modul sich Hardware, Software, Firmware oder eine Kombination derselben teilen, während sie potentiell etwas unabhängige Hardware, Software oder Firmware beibehalten können. In einer Ausführungsform schließt die Verwendung des Begriffes Logik Hardware, wie z. B. Transistoren, Register oder andere Hardware, wie z. B. programmierbare logische Einrichtungen, ein. In einer Ausführungsform kann jedoch Logik auch Software oder mit Hardware integrierten Code, wie z. B. Firmware oder Mikrocode, enthalten.
  • In der hierin verwendeten Form schließt ein Wert irgendeine bekannte Darstellung einer Zahl, eines Zustands, eines logischen Zustands oder eines binären logischen Zustands ein. Häufig bezieht sich die Verwendung von Logikebenen, Logikwerten oder logischen Werten auch auf 1 und 0, die binäre Logikzustände einfacher präsentieren. Zum Beispiel bezieht sich eine 1 auf eine hohe Logikebene und 0 bezieht sich auf eine niedrige Logikebene. In einer Ausführungsform kann eine Speicherzelle, wie z. B. ein Transistor oder eine Flashzelle, einen einzigen logischen Wert oder mehrere logische Werte halten. Andere Darstellungen von Werten in Computersystemen sind jedoch verwendet worden. Zum Beispiel kann die Dezimalzahl Zehn auch als ein Binärwert von 1010 und als ein hexadezimaler Buchstabe A repräsentiert werden. Somit enthält ein Wert jede Darstellung von Information, die in einem Computersystem gehalten werden kann.
  • Ferner können Zustände durch Werte oder Teile von Werten repräsentiert werden. Beispielsweise kann ein erster Wert, wie z. B. eine logische Eins, einen Standard- oder Anfangszustand repräsentieren, während ein zweiter Wert, wie z. B. eine logische Null, einen Nicht-standard-Zustand repräsentieren kann. Zusätzlich beziehen sich die Begriffe Rücksetzen und Setzen in einer Ausführungsform auf einen Standard- bzw. einen aktualisierten Wert oder Zustand. Zum Beispiel enthält ein Standardwert potentiell einen hohen logischen Wert, d. h. Rücksetzen, während ein aktualisierter Wert potentiell einen niedrigen logischen Wert, d. h. Setzen, enthält. Man beachte, dass irgendeine Kombination von Werten zum Repräsentieren einer beliebigen Zahl von Zuständen verwendet werden kann.
  • Die Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code, die/der oben dargelegt sind/ist, können über Befehle oder Code implementiert werden, die/der auf einem maschinenzugänglichen oder maschinenlesbaren Medium gespeichert sind bzw. ist, das durch ein Verarbeitungselement ausführbar ist. Ein maschinenzugängliches/lesbares Medium enthält irgendeine Einrichtung, die Information liefert (d. h. speichert und/oder sendet) in einer durch eine Maschine wie z. B. einen Computer oder ein elektronisches System, lesbaren Form. Zum Beispiel enthält ein maschinenzugängliches Medium Direktzugriffsspeicher (Random-Access Memory (RAM)), wie z. B. SRAM (Static RAM) oder DRAM (Dynamic RAM); ROM, magnetisches oder optisches Speichermedium; Flash-Speichereinrichtungen; elektrische Speichereinrichtung, optische Speichereinrichtungen, akustische Speichereinrichtungen oder andere Form von Fortpflanzungssignal(z. B. Trägerwellen, Infrarotsignale, digitale Signale)-Speichereinrichtung etc. Zum Beispiel kann eine Maschine auf eine Speichereinrichtung durch Empfang eines Fortpflanzungssignals, wie z. B. einer Trägerwelle, von einem Medium zugreifen, das die auf dem Fortpflanzungssignal zu sendende Information halten kann.
  • Die Bezugnahme auf „eine (1) Ausführungsform” oder „eine Ausführungsform” in der gesamten Beschreibung bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine Charakteristik, das/die in Verbindung mit der Ausführungsform beschrieben wurde, in mindestens einer Ausführungsform der vorliegenden Erfindung enthalten ist. Somit muss sich das Auftreten der Phrasen „in einer (1) Ausführungsform” oder „in einer Ausführungsform” an zahlreichen Stellen in der gesamten Beschreibung nicht notwendigerweise immer auf dieselbe Ausführungsform beziehen. Außerdem können die bestimmten Merkmale, Strukturen oder Charakteristiken in irgendeiner geeigneten Weise in einer oder mehreren Ausführungsformen kombiniert werden.
  • In der vorangehenden Beschreibung erfolgte eine ausführliche Beschreibung unter Bezugnahme auf spezielle beispielhafte Ausführungsformen. Es wird jedoch ersichtlich sein, dass zahlreiche Modifikationen und Änderungen daran vorgenommen werden können, ohne aus dem breiten Geist und Schutzbereich der Erfindung zu gelangen, wie sie in den beigefügten Ansprüchen dargelegt ist. Die Beschreibung und die Zeichnungen sind somit in einem erläuternden Sinne statt in einem beschränkenden Sinne zu betrachten. Außerdem bezieht sich die vorangehende Verwendung von Ausführungsformen und andere beispielhafte Sprache nicht notwendigerweise auf dieselbe Ausführungsform oder dasselbe Beispiel, sondern bezieht sich auf unterschiedliche und verschiedene Ausführungsformen sowie potentiell auf dieselbe Ausführungsform.

Claims (2)

  1. System mit einem Home-Agent und zwei Cache-Agenten A, B, die zur Bewahrung der Datenkonsistenz Nachrichten eines Cache-Kohärenzprotokolls über eine Netzwerkstruktur mit einer Peer-to-Peer-Kommunikation austauschen, wobei ein Home-Agent Daten an ihrem finalen Aufbewahrungsort beziehungsweise an ihrem ursprünglichen Speicherort, an dem die Daten in einem ungecacheten Zustand gehalten werden, schützt und verwaltet, wobei ein Cache-Agent Daten eines Caches verwaltet, wobei Cache-Agent A ausgebildet ist, einen Teilspeicherlesezugriff auf Daten auszuführen, indem er eine Snoop-Invalidate-No-Forward-Nachricht an den Cache-Agenten B sendet, um ihm anzuzeigen, dass der Cache-Agent B die Daten einer zugehörigen Cache-Zeile in den Speicher des Home-Agenten zurückschreiben soll, die zugehörigen, im. lokalen Cache-Speicher des Cache-Agenten B gehaltenen Daten ungültig erklären soll, und die zugehörigen Daten dem anfordernden Cache-Agenten A nicht direkt bereitstellen soll, und indem er eine Read-Invalidate-No-Forward Nachricht an den Home-Agenten sendet, um diesem anzuzeigen, dass der Home-Agent gegebenenfalls auf den Empfang von Daten aus einem Cache-Agenten warten und die Daten in den ursprünglichen Speicherort zurückschreiben soll und anschließend die empfangenen Daten an den anfordernden Cache-Agenten A liefern soll, beziehungsweise falls der Home-Agent eine Nachricht von einem Cache-Agenten empfängt, dass eine in Bezug genommene Zeile in einem Ungültig-Zustand gehalten wird, der Home-Agent die korrekten Daten aus dem ursprünglichen Speicherort an den anfordernden Cache-Agenten A liefern soll.
  2. Verfahren zum Ausführen durch einen Cache-Agenten A, der mit einem Home-Agent und einem Cache-Agenten B gekoppelt ist, die zur Bewahrung der Datenkonsistenz Nachrichten eines Cache-Kohärenzprotokolls über eine Netzwerkstruktur mit einem Peer-to-Peer-Kommunikation austauschen, wobei ein Home-Agent Daten an ihrem finalen Aufbewahrungsort beziehungsweise an ihrem ursprünglichen Speicherort, an dem die Daten in einem ungecacheten Zustand gehalten werden, schützt und verwaltet, wobei ein Cache-Agent Daten eines Caches verwaltet, wobei das Verfahren umfasst: Senden einer Snoop-Invalidate-No-Forward-Nachricht an den Cache-Agenten B, um ihm anzuzeigen, dass der Cache-Agent B die Daten einer zugehörigen Cache-Zeile in den Speicher des Home-Agenten zurückschreiben soll, die zugehörigen, im lokalen Cache-Speicher des Cache-Agenten B gehaltenen Daten ungültig erklären soll, und die zugehörigen Daten dem anfordernden Cache-Agenten A nicht direkt bereitstellen soll; und Senden einer Read-Invalidate-No-Forward Nachricht an den Home-Agenten sendet, um diesem anzuzeigen, dass der Home-Agent gegebenenfalls auf den Empfang von Daten aus einem Cache-Agenten warten und die Daten in den ursprünglichen Speicherort zurückschreiben soll und anschließend die empfangenen Daten an den anfordernden Cache-Agenten A liefern soll, beziehungsweise falls der Home-Agent eine Nachricht von einem Cache-Agenten empfängt, dass eine in Bezug genommene Zeile in einem Ungültig-Zustand gehalten wird, der Home-Agent die korrekten Daten aus dem ursprünglichen Speicherort an den anfordernden Cache-Agenten A liefern soll.
DE102009032076.8A 2008-07-07 2009-07-07 Erfüllung von Speicherordnungsanforderungen zwischen Teillesevorgängen und Nicht-Snoop-Zugriffen Active DE102009032076B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/168,613 2008-07-07
US12/168,613 US8250311B2 (en) 2008-07-07 2008-07-07 Satisfying memory ordering requirements between partial reads and non-snoop accesses

Publications (2)

Publication Number Publication Date
DE102009032076A1 DE102009032076A1 (de) 2010-02-25
DE102009032076B4 true DE102009032076B4 (de) 2016-11-03

Family

ID=41465231

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102009032076.8A Active DE102009032076B4 (de) 2008-07-07 2009-07-07 Erfüllung von Speicherordnungsanforderungen zwischen Teillesevorgängen und Nicht-Snoop-Zugriffen

Country Status (4)

Country Link
US (5) US8250311B2 (de)
JP (1) JP5059061B2 (de)
CN (1) CN101625663B (de)
DE (1) DE102009032076B4 (de)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7930459B2 (en) * 2007-09-28 2011-04-19 Intel Corporation Coherent input output device
US8250311B2 (en) 2008-07-07 2012-08-21 Intel Corporation Satisfying memory ordering requirements between partial reads and non-snoop accesses
US8205045B2 (en) * 2008-07-07 2012-06-19 Intel Corporation Satisfying memory ordering requirements between partial writes and non-snoop accesses
US9235520B2 (en) 2011-12-20 2016-01-12 Intel Corporation Protocol for conflicting memory transactions
WO2013103347A1 (en) * 2012-01-06 2013-07-11 Intel Corporation Improving value of forward state by increasing local caching agent forwarding
US9563560B2 (en) * 2012-09-28 2017-02-07 Qualcomm Technologies, Inc. Adaptive tuning of snoops
KR101598746B1 (ko) * 2012-10-22 2016-02-29 인텔 코포레이션 고성능 상호연결 물리 계층
US9342306B2 (en) 2012-10-23 2016-05-17 Analog Devices Global Predicate counter
US9201828B2 (en) * 2012-10-23 2015-12-01 Analog Devices, Inc. Memory interconnect network architecture for vector processor
US9152501B2 (en) 2012-12-19 2015-10-06 International Business Machines Corporation Write performance in fault-tolerant clustered storage systems
US9213643B2 (en) 2013-03-13 2015-12-15 Applied Micro Circuits Corporation Broadcast messaging and acknowledgment messaging for power management in a multiprocessor system
US20140281270A1 (en) * 2013-03-15 2014-09-18 Henk G. Neefs Mechanism to improve input/output write bandwidth in scalable systems utilizing directory based coherecy
US9785556B2 (en) * 2014-12-23 2017-10-10 Intel Corporation Cross-die interface snoop or global observation message ordering
US9684603B2 (en) * 2015-01-22 2017-06-20 Empire Technology Development Llc Memory initialization using cache state
US9424192B1 (en) 2015-04-02 2016-08-23 International Business Machines Corporation Private memory table for reduced memory coherence traffic
US9842050B2 (en) 2015-04-30 2017-12-12 International Business Machines Corporation Add-on memory coherence directory
KR102428563B1 (ko) 2015-09-30 2022-08-03 삼성전자주식회사 수눕 작동을 관리하는 코히런트 인터커넥트와 이를 포함하는 데이터 처리 장치들
WO2017123208A1 (en) 2016-01-12 2017-07-20 Hewlett Packard Enterprise Development Lp Partially coherent memory transfer
JP2018195183A (ja) * 2017-05-19 2018-12-06 富士通株式会社 演算処理装置および演算処理装置の制御方法
US10599567B2 (en) 2017-10-06 2020-03-24 International Business Machines Corporation Non-coherent read in a strongly consistent cache system for frequently read but rarely updated data
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
GR20180100189A (el) 2018-05-03 2020-01-22 Arm Limited Δικτυο επεξεργασιας δεδομενων με συμπυκνωση ροης για μεταφορα δεδομενων μεσω streaming
US10917198B2 (en) * 2018-05-03 2021-02-09 Arm Limited Transfer protocol in a data processing network
US10877836B2 (en) * 2018-08-29 2020-12-29 Arm Limited Method and apparatus for coherent interconnect recovery with protocol layer re-transmission
US11113232B2 (en) * 2018-10-26 2021-09-07 Super Micro Computer, Inc. Disaggregated computer system
US11294707B2 (en) * 2019-05-24 2022-04-05 Texas Instruments Incorporated Global coherence operations
US10999397B2 (en) * 2019-07-23 2021-05-04 Microsoft Technology Licensing, Llc Clustered coherent cloud read cache without coherency messaging
CN110727465B (zh) * 2019-09-11 2021-08-10 无锡江南计算技术研究所 一种基于配置查找表的协议可重构一致性实现方法
US20200133649A1 (en) * 2019-12-23 2020-04-30 Intel Corporation Processor controlled programmable logic device modification
US11544193B2 (en) 2020-09-11 2023-01-03 Apple Inc. Scalable cache coherency protocol
CN116848516A (zh) * 2021-05-28 2023-10-03 华为技术有限公司 分布式缓存系统和数据缓存方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6922756B2 (en) * 2002-12-19 2005-07-26 Intel Corporation Forward state for use in cache coherency in a multiprocessor system
US20050240734A1 (en) * 2004-04-27 2005-10-27 Batson Brannon J Cache coherence protocol
US20080005482A1 (en) * 2006-06-30 2008-01-03 Robert Beers Requester-generated forward the late conflicts in a cache coherency protocol

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5467460A (en) * 1990-02-14 1995-11-14 Intel Corporation M&A for minimizing data transfer to main memory from a writeback cache during a cache miss
US6065099A (en) * 1997-08-20 2000-05-16 Cypress Semiconductor Corp. System and method for updating the data stored in a cache memory attached to an input/output system
JP2000132531A (ja) 1998-10-23 2000-05-12 Pfu Ltd マルチプロセッサ
JP2002108836A (ja) * 2000-09-29 2002-04-12 Hitachi Ltd プロセッサシステム
GB2367646B (en) * 2000-10-03 2002-11-20 Sun Microsystems Inc Resource access control
US7471675B2 (en) * 2002-07-12 2008-12-30 Intel Corporation Arrangements facilitating ordered transactions
US7917646B2 (en) 2002-12-19 2011-03-29 Intel Corporation Speculative distributed conflict resolution for a cache coherency protocol
US7111128B2 (en) 2002-12-19 2006-09-19 Intel Corporation Hierarchical virtual model of a cache hierarchy in a multiprocessor system
US7130969B2 (en) 2002-12-19 2006-10-31 Intel Corporation Hierarchical directories for cache coherency in a multiprocessor system
US6954829B2 (en) 2002-12-19 2005-10-11 Intel Corporation Non-speculative distributed conflict resolution for a cache coherency protocol
TWI242134B (en) * 2004-02-12 2005-10-21 Via Tech Inc Data extraction method and system
US20050262250A1 (en) 2004-04-27 2005-11-24 Batson Brannon J Messaging protocol
US7822929B2 (en) 2004-04-27 2010-10-26 Intel Corporation Two-hop cache coherency protocol
US9727468B2 (en) * 2004-09-09 2017-08-08 Intel Corporation Resolving multi-core shared cache access conflicts
WO2006090328A2 (en) * 2005-02-28 2006-08-31 Koninklijke Philips Electronics N.V. Multiprocessor system, testing device and method for generating cache coherence testing traffic
US7376793B2 (en) * 2005-07-21 2008-05-20 Sun Microsystems, Inc. Cache coherence protocol with speculative writestream
US7512741B1 (en) * 2006-01-11 2009-03-31 Intel Corporation Two-hop source snoop based messaging protocol
US7543115B1 (en) 2006-01-11 2009-06-02 Intel Corporation Two-hop source snoop based cache coherence protocol
US7451277B2 (en) * 2006-03-23 2008-11-11 International Business Machines Corporation Data processing system, cache system and method for updating an invalid coherency state in response to snooping an operation
US20080065835A1 (en) * 2006-09-11 2008-03-13 Sun Microsystems, Inc. Offloading operations for maintaining data coherence across a plurality of nodes
US7657710B2 (en) * 2006-11-17 2010-02-02 Sun Microsystems, Inc. Cache coherence protocol with write-only permission
US8250311B2 (en) 2008-07-07 2012-08-21 Intel Corporation Satisfying memory ordering requirements between partial reads and non-snoop accesses

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6922756B2 (en) * 2002-12-19 2005-07-26 Intel Corporation Forward state for use in cache coherency in a multiprocessor system
US20050240734A1 (en) * 2004-04-27 2005-10-27 Batson Brannon J Cache coherence protocol
US20080005482A1 (en) * 2006-06-30 2008-01-03 Robert Beers Requester-generated forward the late conflicts in a cache coherency protocol

Also Published As

Publication number Publication date
US20120317369A1 (en) 2012-12-13
US8694736B2 (en) 2014-04-08
US20140115275A1 (en) 2014-04-24
CN101625663B (zh) 2013-07-10
JP2010015572A (ja) 2010-01-21
JP5059061B2 (ja) 2012-10-24
US20150178210A1 (en) 2015-06-25
US20170308471A1 (en) 2017-10-26
CN101625663A (zh) 2010-01-13
US9703712B2 (en) 2017-07-11
US9058271B2 (en) 2015-06-16
DE102009032076A1 (de) 2010-02-25
US10019366B2 (en) 2018-07-10
US20100005246A1 (en) 2010-01-07
US8250311B2 (en) 2012-08-21

Similar Documents

Publication Publication Date Title
DE102009032076B4 (de) Erfüllung von Speicherordnungsanforderungen zwischen Teillesevorgängen und Nicht-Snoop-Zugriffen
DE102009031497A1 (de) Erfüllung der Speicher-Ordering-Anforderungen zwischen Partial-Write- und Non-Snoop-Zugriffen
DE112013002069B4 (de) Hohes Leistungsverbindungskohärenz-Protokoll
DE69724353T2 (de) Mehrrechnersystem mit einem Drei-Sprung-Kommunikationsprotokoll
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE102007030116B4 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE112017001959T5 (de) Cachespeicher-Zugriff
DE69906585T2 (de) Datenverarbeitungssystem mit nichtuniformen speicherzugriffen (numa) mit spekulativer weiterleitung einer leseanforderung an einen entfernten verarbeitungsknoten
DE60219436T2 (de) System mit adressbasierter Intraknotenkohärenz und datenbasierter Interknotenkohärenz
DE102009031870B4 (de) Dynamisches Aktualisieren der Routing-Tabelle
DE112012005210B4 (de) Bereitstellen eines gemeinsamen Caching-Agenten für ein Kern- und integriertes Ein-/Ausgabe-(IO)-Modul
DE69722512T2 (de) Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll
DE112015004336T5 (de) Konfigurationsbasierte Auswahl eines Cachekohärenz-Protokolls
DE112019000629B4 (de) Koordination von cacheoperationen
DE102013201079A1 (de) Mechanismus des Weiterleitungsfortschritts für Speichervorgänge beim Vorhandensein einer Überlastung in einem System, das Belastungen durch Zustandsänderungen begünstigt
DE112016004303T5 (de) Hardware-Vorhersageelement mit geringem Verwaltungsaufwand zur Verringerung der Leistungsumkehr für Kern-zu-Kern-Datenübertragungsoptimierungsbefehle
DE112013000889T5 (de) Weiterleitungsfortschritts-Mechanismus für Speichervorgänge bei Vorhandensein von Ladekonflikten in einem Ladevorgänge begünstigenden System
DE112016006065T5 (de) Spekulative nummerierung von adressräumen für bus-einrichtungsfunktionen
DE112016005863T5 (de) Minimierung von Snoop-Verkehr lokal und über Kerne auf einem Chip-Mehrkern-Fabric
Al-Waisi et al. An overview of on-chip cache coherence protocols
DE112020005147B4 (de) Cache-snooping-modus, der einen kohärenzschutz für bestimmte anforderungen erweitert
DE102016222041A1 (de) Ungültigmachen eines umsetzungseintrags in einem multithread-datenverarbeitungssystem
JP2022549095A (ja) キャッシュ禁止書き込みオペレーション
DE112022001978T5 (de) E/a-agent

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R130 Divisional application to

Ref document number: 102009061746

Country of ref document: DE

R130 Divisional application to

Ref document number: 102009061746

Country of ref document: DE

Effective date: 20150213

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final