DE102008062044B4 - 1Speicherinterne, seiteninterne Verzeichnis-Chache-Kohärenz-Konfiguration - Google Patents

1Speicherinterne, seiteninterne Verzeichnis-Chache-Kohärenz-Konfiguration Download PDF

Info

Publication number
DE102008062044B4
DE102008062044B4 DE102008062044.0A DE102008062044A DE102008062044B4 DE 102008062044 B4 DE102008062044 B4 DE 102008062044B4 DE 102008062044 A DE102008062044 A DE 102008062044A DE 102008062044 B4 DE102008062044 B4 DE 102008062044B4
Authority
DE
Germany
Prior art keywords
cache line
directory
cache
memory
requested
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE102008062044.0A
Other languages
English (en)
Other versions
DE102008062044A1 (de
Inventor
Ian Steiner
Zhong-Ning Cai George
Saurabh Tiwari
Kai Cheng
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 DE102008062044A1 publication Critical patent/DE102008062044A1/de
Application granted granted Critical
Publication of DE102008062044B4 publication Critical patent/DE102008062044B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements

Landscapes

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

Abstract

Verfahren mit den folgenden Schritten:Empfangen einer Speicherzugriffsanforderung einer angeforderten Cache-Zeile von einem von mehreren Prozessoren (302);Bestimmen, ob ein Cache-Eintrag mit Kohärenz-Informationen für die angeforderte Cache-Zeile in einem Verzeichnis-Cache vorliegt;falls kein Cache-Eintrag mit Kohärent-Informationen für die angeforderte Cache-Zeile in dem Verzeichnis-Cache vorliegt, Zugreifen auf Kohärenz-Informationen, die der angeforderten Cache-Zeile zugeordnet sind, aus einer Speichereinheit durch Einfügen aus einer Speicherseite in den Verzeichnis-Cache, in der die angeforderte Cache-Zeile gespeichert ist, wobei die Speicherseite auch eine Verzeichniszeile mit Kohärenz-Informationen enthält, die der angeforderten Cache-Zeile (304) entsprechen, sowie Durchführen eines spekulativen Snoops an anderen Prozessoren (102) der mehreren Prozessoren umfasst, wobei das Durchführen im Wesentlichen gleichzeitig mit dem Zugreifen auf Kohärenz-Informationen erfolgt;Lesen von Daten, die der angeforderten Cache-Zeile zugeordnet sind entsprechend den Kohärenz-Informationen (306); undZurücksenden der Daten an den Prozessor (308),wobei vor dem Zurücksenden der Daten die Ergebnisse des spekulativen Snoops abgewartet werden, falls die aus der Speicherseite in den Verzeichnis-Cache gezogenen Kohärenz-Informationen anzeigen, dass einer der anderen Prozessoren die angeforderte Cache-Zeile hat, und wobei die Daten ohne Warten zurückgesendet werden, wenn die Kohärenz-Informationen anzeigen, dass keiner der anderen Prozessoren die angeforderte Cache-Zeile hat.

Description

  • Gebiet der Erfindung
  • Ausführungsformen dieser Erfindung betreffen eine speicherinterne, seiteninterne Verzeichnis-Chache-Kohärenz-Konfiguration.
  • Hintergrund der Erfindung
  • Mehrere Prozessoren oder Prozessoren mit mehreren Kernen finden als Methode zur Erhöhung der Rechenleistung neuer Computersysteme immer breitere Verwendung. Mehrprozessoren- und Mehrkemsysteme nutzen Systemressourcen, wie etwa den Systemspeicher und Speichervorrichtungen, gemeinsam. Mehrere Prozessoren oder Kerne greifen oftmals auf die gleichen Daten in Arbeitsspeicher- oder Speichervorrichtungen zu, um diese Daten gleichzeitig zu nutzen. Um das zu erreichen, verwalten Mehrprozessoren- und Mehrkernsysteme die Verwendung von Daten, um die Datenkohärenz aufrechtzuerhalten. Ein Aspekt des Aufrechterhaltens der Datenkohärenz in Mehrprozessorensystemen ist das Gewährleisten, dass Daten, die in jedem Prozessor gecachet sind, kohärent sind. Zum Beispiel kann jeder Prozessor in den Besitz einer Cache-Zeile in seinem Cache kommen, bevor er sie in den Systemspeicher zurückschreibt. Wenn ein anderer Prozessor dazu auffordert, diese Daten in den Systemspeicher zu schreiben, muss er die kohärenten Protokoll-Anforderungen erfüllen, um in den Besitz dieser Cache-Zeile vor deren Zurückschreiben zu gelangen.
  • Figurenliste
  • Ausführungsformen der vorliegenden Erfindung sind in den Figuren der beigefügten Zeichnungen, in denen ähnliche Bezugssymbole ähnliche Elemente bezeichnen, beispielhaft und nicht beschränkend erläutert.
    • 1 zeigt ein System nach einer Ausführungsform der Erfindung.
    • 2 zeigt ein System nach einer weiteren Ausführungsform der Erfindung.
    • 3 zeigt ein Verfahren nach einer Ausführungsform der Erfindung.
    • 4 zeigt ein Verfahren nach einer Ausführungsform der Erfindung.
    • 5 zeigt eine Vorrichtung zum Einfügen von Cache-Zeilenlöchern nach einer Ausführungsform der Erfindung.
    • 6 zeigt ein Verfahren nach einer weiteren Ausführungsform der Erfindung.
  • Detaillierte Beschreibung
  • Die nachstehend beschriebenen Beispiele dienen nur der Erläuterung und sollen die Ausführungsformen der Erfindung auf keinen Fall beschränken. Es dürfte daher klar sein, dass in dem Fall, dass Beispiele näher beschrieben werden oder dass ein oder mehrere Beispiele gegeben werden, die Beispiele nicht als erschöpfend angesehen werden dürfen und dass die Ausführungsformen der Erfindung nicht auf die beschriebenen und/oder dargestellten Beispiele beschränkt werden dürfen.
  • 1 ist ein Diagramm einer Ausführungsform eines Systems. Ein System 100 kann jede Art von Mehrprozessoren- oder Mehrkemsystem sein, unter anderem ein Personal Computer, ein Großrechner, ein Handheld-Computer, ein Verbraucherelektronikgerät (ein Mobiltelefon, eine Handheld-Spielekonsole, eine Set-Top-Box oder ein ähnliches Gerät), ein Netzwerk-Gerät, ein elektronisches Kraftfahrzeug-/Avionik-Steuergerät oder ein anderes ähnliches Gerät.
  • Das System 100 kann jede Anzahl von Prozessoren 102A, 102B, 102C haben, die jeweils mindestens einen Cache 104A, 104B, 104C haben, der dem Prozessor 102A, 102B, 102C zugeordnet ist. Bei einer Ausführungsform kann das System 100 eine skalierbare Anzahl von Prozessoren 102A, 102B, 102C haben, wobei die Anzahl der Prozesse aufgrund der unterschiedlichen Systemkonfigurationen für unterschiedliche Marktsegmente variiert werden kann. Bei einer anderen Ausführungsform kann das System 100 Aufnahmen oder Schnittstellen für jede Anzahl von Prozessoren haben. Die Anzahl von Prozessoren kann durch Hinzufügen oder Entfernen von Prozessoren zu/aus dem System geändert werden.
  • Bei einer Ausführungsform können die Prozessoren 102A, 102B, 102C Prozessoren mit getrennten Kernen und auf getrennten Substraten und in getrennten Gehäusen sein. Bei einer weiteren Ausführungsform können die Prozessoren 102A, 102B, 102C mehrere Kerne auf einem einzigen Substrat und in einem einzigen Chip-Gehäuse oder Kombinationen davon enthalten. Der Einfachheit der Beschreibung halber ist das beschriebene Beispiel-System ein Mehrprozessoren-Personalcomputersystem. Jeder Prozessor 102A, 102B, 102C kann einem oder mehreren Caches 104A, 104B, 104C entsprechen. Zum Beispiel können die Prozessoren 102A, 102B, 102C einen Cache der Ebene 1 sowie einen Cache der Ebene 2 haben. Der Cache der höchsten Ebene kann als Cache der letzten Ebene (last level cache; LLC) bezeichnet werden.
  • Jeder Prozessor 102A, 102B, 102C kann über einen entsprechenden Bus 110, 112 mit einem Hub-Controller 108 kommunizieren. Der Hub-Controller 108 kann eine Vorrichtung oder ein Chipsatz sein, die/der ein Speichersteuergerät/Speichercontroller 114 zum Verwalten des Transports von Daten zwischen den Prozessoren 102A, 102B, 102C und einem Systemspeicher 106 sowie andere Vorrichtungen (nicht dargestellt) in dem System 100 umfasst. Bei einer Ausführungsform kann nur ein einziger Hub-Controller 108 in dem System 100 vorhanden sein. Bei einer weiteren Ausführungsform können mehrere Hub-Controller vorhanden sein, oder der Hub-Controller 108 kann in mehrere Komponenten unterteilt sein. Zum Beispiel können einige Personalcomputersysteme zwei Hub-Controller haben, die als Northbridge und Southbridge bezeichnet werden. Darüber hinaus können als weiteres Beispiel Systeme mit mehreren Sockeln und mehreren Speichersteuergeräten getrennte Hub-Controller haben.
  • Bei der Ausführungsform von 1 kann der Hub-Controller 108 weiterhin einen Home Agent 116 und einen Verzeichnis-Cache 118 aufweisen, die in Verbindung mit dem Speichersteuergerät 114 zur Verwaltung der Datenkohärenz zwischen den Prozessoren 102A, 102B, 102C arbeiten können. Der Home Agent 116 kann Speicherlese- und -schreiboperationen, spezielle Lese- und -schreiboperationen, die Speicherkonsistenz und das Erteilen von Anweisungen (ordering) verwalten und kann auch das Systemkohärenz-Protokoll für Speicherzugriffe verwalten. Der Verzeichnis-Cache 118 kann Einträge speichern, die Adressen des Speichers 106 entsprechen. Bei einer Ausführungsform kann die Größe des Verzeichnis-Cache 118 gleich der Anzahl von offenen Seiten in dem Speichersteuergerät 114 sein, um zu gewährleisten, dass jeder Seitenzugriffstreffer in dem Speicher 106 auch zu einem Treffer in dem Verzeichnis-Cache 118 führt.
  • Bei einer weiteren Ausführungsform, die in einem System 200 von 2 dargestellt ist, können sich der Home Agent 116 und der Verzeichnis-Cache 118 zusammen mit einem integrierten Speichersteuergerät 208A auf dem Chip eines Prozessors 202 befinden. Bei dieser Ausführungsform können Prozessoren 202A, 202B, 202C ebenfalls ein integriertes Speichersteuergerät 208A, 208B bzw. 208C umfassen. Die integrierten Speichersteuergeräte 208A, 208B, 208C können auf einen bestimmten Teil (nicht dargestellt) des Speichers 106 zugreifen, wobei jedes Speichersteuergerät 208A, 208B, 208C einen entsprechenden bestimmten Speicherbus 112A, 112B, 112C verwendet.
  • Der Systemspeicher 106 kann jede Art von dynamischem Schreib-Lese-Speicher (DRAM) oder eine Gruppe von Speichervorrichtungen sein. Der Systemspeicher 105 kann zum Beispiel einen synchronen DRAM, einen DRAM mit doppelter Datenrate, einen statischen Schreib-Lese-Speicher (SRAM) und ähnliche Arten von Speichervorrichtungen umfassen. Darüber hinaus kann der Systemspeicher 105 als Modul gekapselt sein, wie zum Beispiel als SIMM (Single Inline Memory Module) oder als DIMM (Dual Inline Memory Module). Der Systemspeicher 106 kann zum Speichern von Daten und Programmbefehlen zur Verwendung durch die Prozessoren 102A, 102B, 102C genutzt werden. Bei einer Ausführungsform kann der Systemspeicher 106 Daten nach einer vorgegebenen Gruppierung speichern, sodass die Daten unter Verwendung dieser Gruppierung abgerufen werden können. Zum Beispiel können Daten in dem Speicher 106 so gespeichert werden, dass sie seitenweise abgerufen werden können. Bei einer weiteren Ausführungsform kann der Systemspeicher 106 eine statische Speichervorrichtung, eine Flash-Speichervorrichtung oder eine ähnliche Speichervorrichtung sein, wie etwa ein elektrisch löschbarer, programmierbarer Nur-Lese-Speicher (EEPROM), ein Speicher-Stick oder ein ähnliches Gerät.
  • 3 zeigt ein Verfahren nach einer Ausführungsform der Erfindung. Bei einer Ausführungsform kann ein Block 302 von 3 von dem Home Agent 116 ausgeführt werden, und die übrigen Blöcke von Fig. 3 können von dem Speichersteuergerät 114, 208A ausgeführt werden.
  • Das Verfahren beginnt an einem Block 300 und geht zu dem Block 302 weiter, wo das Verfahren das Empfangen einer Speicherzugriffsanforderung einer angeforderten Cache-Zeile von einem von mehreren Prozessoren umfassen kann. Bei einer Ausführungsform können, wie in 2 gezeigt ist, die Speichersteuergeräte 208A, 208B, 208C auf einem Chip mit den Prozessoren 202A, 202B, 202C integriert werden, und jeder Prozessor 202A, 202B, 202C kann einen Cache 104A, 104B, 104C haben.
  • Bei dieser Ausführungsform wird, wenn die Speicherzugriffsanforderung an das Speichersteuergerät 208A von einem der anderen Prozessoren 202B, 202C stammt, die Speicherzugriffsanforderung als „entfernt“ bezeichnet. In diesem Fall kann ein Snoop für den lokalen Cache 104A ausgegeben werden, da der Verzeichnis-Cache 118 nicht den lokalen Cache 104A verfolgt. Zum Beispiel kann der Home Agent 116 einen Snoop an den lokalen Cache 104A parallel zu einer Anforderung an den Speicher 106 ausgeben. Wenn der Home Agent 116 später feststellt, dass der Snoop nicht nötig war, kann er darauf warten, dass die Snoop-Antwort zurückkommt, und kann dann das Speicherlesen abschließen.
  • Gleichermaßen wird, wenn die Speicherzugriffsanforderung an das Speichersteuergerät 208A von dem Prozessor 202A stammt, die Speicherzugriffsanforderung als „lokal“ bezeichnet. In diesem Fall wird der Snoop an den lokalen Cache 208A ausgegeben, bevor die Speicherzugriffsanforderung an das Speichersteuergerät 208A gesendet wird.
  • Bei Block 304 umfasst das Verfahren das Zugreifen auf Kohärenz-Informationen aus einer Speichereinheit, die der angeforderten Cache-Zeile zugeordnet sind, durch Einfügen aus einer Speicherseite, in der die angeforderte Cache-Zeile gespeichert ist, wobei die Speicherseite auch eine Verzeichniszeile mit Kohärenz-Informationen aufweist, die der angeforderten Cache-Zeile entsprechen. Der hier benutzte Begriff „Einfügen“ umfasst das Zugreifen auf eine Speicherseite aus einer Speichereinheit, wie etwa dem Systemspeicher 106, unter Verwendung einer Zeilenadresse und das Einlesen der Speicherseite in den Verzeichnis-Cache 118. Bei Ausführungsformen der Erfindung kann eine „Speicherseite“ eine Verzeichnis-Cache-Zeile mit Kohärenz-Informationen sein, die mindestens einer Cache-Zeile entsprechen, die die angeforderte Cache-Zeile umfasst. Insbesondere kann zum Beispiel ein Teil der Speicherseite eine Verzeichnis-Cache-Zeile, die Kohärenz-Informationen hält, die angeforderte Cache-Zeile sowie andere Cache-Zeilen umfassen, die in dieser Speicherseite gespeichert sind.
  • 4 zeigt ein Verfahren zum Speichern von Kohärenz-Informationen in einer Verzeichnis-Cache-Zeile in einer Speicherseite. Das Verfahren beginnt mit einem Block 400 und geht dann zu einem Block 402 weiter, wo das Verfahren das Verschieben der empfangenen Systemadresse in einen zusammenhängenden Kanal-Adressraum (Kanal-Adressen-Decodierung) umfassen kann. Unter Verwendung der empfangenen Systemadresse werden Region, Home und Way-Interleave decodiert und dann neu berechnet. Bei einer Ausführungsform kann das dadurch implementiert werden, dass zunächst die Sockel-Interleave-Bits eliminiert werden und dann die Kanal-Interleave-Bits eliminiert werden (oder bei Dreikanalsystemen eine div3 durchgeführt wird). Die Adresse der Basisregion wird abgezogen, und die Fine-Grain-Spalte aus dem Way-Interleave werden entfernt, um einen zusammenhängenden Adressraum für jeden Kanal (z. B. durch Subtraktion und Verschiebung) zu erhalten.
  • Bei einem Block 404 kann das Verfahren das Anwenden einer Abbildungs-Funktion zum Einfügen der Löcher für jede Verzeichnis-Cache-Zeile umfassen. Wie in 5 gezeigt ist, kann zum Beispiel die folgende Funktion zum Einfügen der Cache-Zeilenlöcher verwendet werden: A new 504 = A old 502 + ( ( A old > > 6 ) &mask lower x bits ) ,
    Figure DE102008062044B4_0001
    worin Anew die neu abgebildete (remapped) Kanal-Adresse ist und Aold die decodierte Kanal-Adresse ist, die in die Abbildungs-Funktion eingegeben wird.
  • Anders ausgedrückt: A new [ n 1 : 0 ] = A old [ n 1 : 0 ] ;
    Figure DE102008062044B4_0002
    A new [ 63 : n ] = A old [ 63 : n ] + A old [ 63 : n ] > > n ,
    Figure DE102008062044B4_0003
    worin n = ln(Cache-Zeilengröße) ist.
  • Der Effekt dieser Abbildungs-/Mapping-Funktion besteht darin, dass die neu abgebildeten Adressen in der physischen Seite, auf die sie abbilden, verschoben werden und Platz für die Verzeichniszeilen zwischen physischen Adressbereichen entsteht. Diese Operation kann mit nur einem Adder 506 implementiert werden - die Verschiebung und Maskierung erfordern keine zusätzliche Hardware. Bei einer Ausführungsform ist der Umfang der Verschiebung fest, kann aber an verschiedene Adressdecodierungsverfahren angepasst werden.
  • Bei einem Block 406 kann das Verfahren das Entfernen von Fine-Grain-Lücken aus dem Rang-Interleaving umfassen.
  • Bei einem Block 408 kann das Verfahren das Umwandeln der Rang-Adresse in eine tatsächliche Speicheradresse umfassen. Zum Beispiel kann in einem DRAM die Rang-Adresse in ein tatsächliches DIMM, Rang, Bank, Zeile und Spalte umgewandelt werden. Die Zeile kann zum Zugreifen auf den Verzeichnis-Cache verwendet werden, und die Spalte kann zum Absetzen einer Lese-Anforderung verwendet werden.
  • Das Verfahren von 4 endet bei Block 410.
  • Die Verzeichnis-Informationen können zum Beispiel in dem gesamten Adressraum eines Speichers (z. B. eines DRAM) gespeichert werden. In diesem Beispiel werden 64B-Stücke von Verzeichnisdaten in dem DRAM an DRAM-Adressen gespeichert, wenn die Spaltenbits [4:8] 0 sind. Die Spaltenbits [3:0] können zum Wählen des Stücks in der 64B-Zeile verwendet werden. Dadurch werden effektiv 64B aus dem DRAM-Speicherplatz von jedem 4KB DRAM-Speicherplatz gestohlen. Der Algorithmus kann problemlos angepasst werden, um die Größe und Frequenz der Verzeichniszeilen (directory lines) zu ändern. Zum Beispiel könnte man den Algorithmus so einrichten, dass 64B von jeweils 8KB DRAM-Speicherplatz gestohlen werden und die Verzeichniszeilen aufweisen, wenn die Spaltenbits [4:9] 0 sind.
  • Bei einer Ausführungsform können einige Spaltenadressbits zusammenhängend sein. Bei diesem Beispiel werden Löcher alle 4KB eingefügt (12 Adressbits in einem Byte-adressierbaren System). Die Cache-Zeilen habe eine Größe von 64B (6 Adressbits), sodass es sechs zusammenhängende Spaltenadressbits für das Funktionieren der Mapping-Funktion gibt. Es ist zulässig, dass die Sockel- und Kanal-Interleave-Bits den System-Adressraum zwischen diesen 6 Spaltenbits aufteilen.
  • Um die winzigen Löcher zu berücksichtigen, die über den Speicher-Adressraum hinweg eingefügt werden, können große Blöcke der Systemadresse im oberen Teil jedes SAD/TAD-Bereichs wiedergewonnen werden (SAD: System Adress Decoder, Systemadressen-Decodierer; TAD: Target Adress Decoder, Zieladressen-Decodierer). Der Systemadressen-Decodierer stellt die Anforderungen und Regeln für die Systemspeicherkonfiguration bereit Der Zieladressen-Decodierer stellt die Anforderungen und Regeln für den DRAM bereit, der mit seinem Home Agent in einem Sockel verbunden ist. Dadurch wird vermieden, dass Adressen von einem Bereich in einen anderen driften, was illegal ist, da der Verschiebungsprozess abläuft, nachdem der SAD/TAD-Bereich decodiert worden ist Diese großen Löcher in dem physischen Adressraum werden mit dem BIOS wiedergewonnen und werden über die bestehende Infrastruktur dem Betriebssystem mitgeteilt, sodass das Betriebssystem keine virtuellen Adressen an diese physischen Adressen abbildet.
  • Da der Speicheradressendecodierer nicht die Verzeichniszeilenadressen erzeugt, kann das Zugreifen auf die Verzeichniszeilen zum Testen oder für die Sichtbarkeit schwierig sein. Daher kann ein Indikator (z. B. ein 1-Bit-Indikator) verwendet werden, damit der Home Agent 116 die Verzeichniszeile lesen kann, die der von dem Home Agent 116 vergebenen Eingabe-Adresse entspricht, und dieser sendet ihn als Daten zurück. Dadurch werden die 6 niedrigerwertigen Spaltenbits der Adresse „0“, bevor der Speicheradressendecodierer die Decodierung durchführt.
  • Das Zugreifen auf Kohärenz-Informationen kann das Zuweisen der Kohärenz-Informationen in dem Verzeichnis-Cache 118 umfassen. Das Zuweisen der Kohärenz-Informationen in dem Verzeichnis-Cache 118 kann das Einfügen der Verzeichniszeile in den Verzeichnis-Cache 118 umfassen, sodass Kohärenz-Informationen für Cache-Zeilen in der Speicherseite in dem Verzeichnis-Cache 118 verfügbar sind. Das Zuweisen der Kohärenz-Informationen kann mit einer Seitenschließmaßnahme zur Reduzierung des Overheads übersprungen werden. Alternativ kann der Verzeichnis-Cache über die Seitentabelle hinaus erweitert werden, sodass viele Cache-Zeilen gleichzeitig gespeichert werden können, und in diesem Fall können Kohärenz-Informationen zugewiesen werden.
  • Bei Block 306 kann das Verfahren das Lesen von Daten umfassen, die der angeforderten Cache-Zeile entsprechend den Kohärenz-Informationen zugeordnet sind. Daten können aus einem der Caches 104A, 104B, 104C oder direkt aus dem Speicher 106 gelesen werden. Der hier benutzte Begriff „Kohärenz-Informationen“ bezieht sich auf Informationen zu dem Kohärenzzustand einer Cache-Zeile. Der Kohärenzzustand kann von dem speziellen Kohärenzprotokoll abhängen, das gerade verwendet wird. Zum Beispiel können bei dem MESI-Protokoll (MESI: Modified Exclusive Shared Invalid) die Kohärenz-Informationen „ausschließlich für den Prozessor“, „gemeinsam verwendet“, „ungültig“ oder „modifiziert“ umfassen.
  • Wenn Kohärenz-Informationen angeben, dass kein anderer Prozessor 202A, 202B, 202C die angeforderte Cache-Zeile hat, können die Daten direkt aus dem Speicher 106 gelesen werden, ohne entfernte Caches abhören (snoop) zu müssen.
  • Wenn die Kohärenz-Informationen angeben, dass ein oder mehrere andere Prozessoren 202A, 202B, 202C die angeforderte Cache-Zeile haben können, können Snoops an die Prozessorsockel ausgegeben (issued) werden, um nach der angeforderten Cache-Zeile zu suchen. Wenn einer der Caches 104A, 104B, 104C die angeforderte Cache-Zeile hat, können die Daten aus diesem Prozessor gelesen werden. Dieser Prozessor kann als „Besitzerprozessor“ bezeichnet werden.
  • Bei Block 308 kann das Verfahren das Rücksenden der Daten an den anfordernden Prozessor umfassen.
  • Das Verfahren kann an Block 310 enden.
  • Bei einer Ausführungsform kann das vorstehende Verfahren in Verbindung mit der Verwendung des Verzeichnis-Cache 118 durchgeführt werden. Das Verfahren nach dieser Ausführungsform ist in 6 gezeigt, die bei Block 600 beginnt. Es geht zu Block 602 weiter, wo zunächst ermittelt werden kann, ob der Verzeichnis-Cache 118 einen Cache-Eintrag hat, der der angeforderten Cache-Zeile entspricht Ein Cache-Eintrag, der einer angeforderten Cache-Zeile entspricht, kann Kohärenz-Informationen zu der angeforderten Cache-Zeile umfassen. Wenn der Verzeichnis-Cache 118 keinen Cache-Eintrag hat, der der angeforderten Cache-Zeile entspricht, geht das Verfahren zu Block 604 weiter. Wenn der Verzeichnis-Cache 118 einen Cache-Eintrag hat, der der angeforderten Cache-Zeile entspricht, geht das Verfahren zu Block 606 weiter.
  • Bei Block 604 umfasst das Verfahren das Zugreifen auf Kohärenz-Informationen, die der angeforderten Cache-Zeile aus einer Speichereinheit zugeordnet sind, durch Einfügen derselben von einer Speicherseite, in der die angeforderte Cache-Zeile gespeichert ist, wobei die Speicherseite auch eine Verzeichniszeile mit Kohärenz-Informationen hat, die der angeforderten Cache-Zeile entsprechen.
  • Bei einigen Ausführungsformen der Erfindung kann ein spekulativer Snoop an einem anderen Prozessor 202A, 202B, 202C im Wesentlichen gleichzeitig mit dem Zugreifen auf die Kohärenz-Informationen durchgeführt werden. Die hier benutzte Formulierung „im Wesentlichen gleichzeitig“ bezeichnet den Umstand, dass zwei Dinge zu dem gleichen Zeitpunkt oder ungefähr zu dem gleichen Zeitpunkt geschehen. Insbesondere kann ein spekulativer Snoop im Wesentlichen gleichzeitig mit dem Zuweisen der Kohärenz-Informationen in dem Verzeichnis-Cache 118 abgesetzt (dispatched) werden. Da unbekannt ist, ob einer der Prozessoren 202A, 202B, 202C, und wenn ja, welcher, die angeforderte Cache-Zeile (in ihren entsprechenden Caches 104A, 104B, 104C) hat, kann ein Snoop spekulativ an die Prozessoren 202A, 202B, 202C gesendet werden, um zu ermitteln, ob einer der Prozessoren 202A, 202B, 202C die angeforderte Cache-Zeile hat.
  • Wenn zum Beispiel der Verzeichnis-Cache 118 angibt, dass einer oder mehrere der Prozessoren 202A, 202B, 202C die angeforderte Cache-Zeile haben könnten, kann der Home Agent 116 auf die Ergebnisse des spekulativen Snoops warten, bevor er die Daten zurücksendet Wenn hingegen der Verzeichnis-Cache 118 angibt, dass keiner der Prozessoren 202A, 202B, 202C die angeforderte Cache-Zeile hat, kann die angeforderte Cache-Zeile direkt von dem Speicher 106 zurückgesendet werden. Und wenn ein spekulativer Snoop gesendet wurde, ist es nicht erforderlich, auf die Ergebnisse des spekulativen Snoops zu warten, bevor die angeforderte Cache-Zeile direkt von dem Speicher 106 zurückgesendet wird. Daher kann das Lesen der Daten, die der angeforderten Cache-Zeile zugeordnet sind, zumindest teilweise auf den Ergebnissen des spekulativen Snoops beruhen.
  • Da das Hineinziehen der Cache-Zeile in den Verzeichnis-Cache 118 bei bestimmten Ausführungsformen einige Zeit dauern kann, kann die Snoop-Transaktion spekulativ abgesetzt werden, um aus der Verwendung der Zeitspanne Kapital zu schlagen. Das Erzeugen des spekulativen Snoops kann jedoch auch von dem Intersocket-Linker-Verkehr und der Auslastung abhängen. Wenn die Auslastung der Intersocket-Linker hoch ist, darf der spekulative Snoop nicht vor dem Zuweisen der Kohärenz-Informationen in dem Verzeichnis-Cache 118 abgesetzt (dispatched) werden.
  • Bei Block 606 kann das Verfahren das Zugreifen auf einen Verzeichnis-Eintrag umfassen, wobei der Verzeichnis-Eintrag einen Eintrag für die angeforderte Cache-Zeile enthält.
  • Bei Block 608 kann das Verfahren das Ermitteln umfassen, ob eine Snoop-Transaktion erzeugt werden muss (oder ob bereits eine erzeugt worden ist). Eine Snoop-Transaktion kann zum Beispiel erzeugt werden müssen, wenn die Kohärenz-Informationen in dem Verzeichnis-Eintrag angeben, dass einer der Prozessoren 202A, 202B, 202C eine Kopie der Zeile haben kann, oder wenn die Speicherzugriffsanforderung die Notwendigkeit eines exklusiven Besitzes angibt. Wenn keine Snoop-Transaktion erzeugt werden muss, geht das Verfahren zu Block 610 weiter. Wenn eine Snoop-Transaktion erzeugt werden muss (oder bereits erzeugt worden ist), geht das Verfahren zu Block 612 weiter.
  • Wenn bei Block 610 keine Snoop-Transaktion erzeugt werden muss, können die Daten, die der angeforderten Cache-Zeile entsprechen, direkt aus dem Speicher gelesen werden.
  • Wenn bei Block 612 eine Snoop-Transaktion erzeugt werden muss, kann der Home Agent 116 eine Snoop-Transaktion entsprechend den Kohärenzprotokoll-Anforderungen des Systems erzeugen (wenn nicht bereits eine Snoop-Transaktion erzeugt worden ist). Wenn bereits eine Snoop-Transaktion erzeugt worden ist, kann das Verfahren zu Block 614 weitergehen.
  • Bei Block 614 können Daten aus dem Besitzer-Cache oder dem Speicher gelesen werden, sobald die Ergebnisse der Snoop-Transaktion zurückgesendet worden sind. Wenn die Snoop-Transaktion angibt, dass keiner der Caches die angeforderte Cache-Zeile hat, können Daten direkt aus dem Speicher bereitgestellt werden, andernfalls können sie von dem besitzenden Cache bereitgestellt werden.
  • Bei einer Ausführungsform kann der Home Agent 116 einen Datensende-Ende-Indikator senden, um anzugeben, dass die Snoops beendet worden sind, sodass die Zuweisung von Identifikatoren und anderen Variablen aufgehoben werden kann. Darüber hinaus kann der Home Agent 116 einen Datensende-Indikator getrennt von einem Ende-Indikator senden, wenn spekulative Snoops gesendet werden oder nicht benötigt werden, sodass die Daten vor dem Zurücksenden der spekulativen Snoops gelesen und gesendet werden. Und wenn die Speicherzugriffsanforderung eine entfernte Anforderung ist, kann der Home Agent 116 warten, bis der lokale Snoop beendet ist, bevor er einen Datensende-Ende-Indikator oder einen Ende-Indikator sendet.
  • Das Verfahren endet bei Block 616.
  • Wenn ein Seitenschließ-(Vor-Lade-)Befehl an den Speicher 106 abgesetzt wird, kann ein Räumungshinweis an den Verzeichnis-Cache 118 gesendet werden. Mit dieser Maßnahme kann unter Beibehaltung eines Verzeichnis-Cache 118 mit einer geringeren Größe eine Korrelation hergestellt werden zwischen einem Seitentreffer für Daten in dem Speicher 106, die mit einem Treffer des Verzeichnis-Cache 118 in Verbindung zu bringen sind. Beim Empfangen eines Seitenschließbefehls kann der Verzeichnis-Cache 118 einen geposteten Schreib-Befehl an das Speichersteuergerät 114, 208A absetzen, wenn eine Verzeichniszeile modifiziert worden ist. Die Verzeichniszeile kann in einer Write Post Queue (WPQ) des Speichersteuergeräts 114, 208A liegen, bis sie geleert wird. Auf diese Weise arbeitet die WPQ als Opferpuffer für den Verzeichnis-Cache 118 und übt auch zusätzlichen Druck auf die WPQ aus, die Frequenz des Schreibhauptmodus zu erhöhen. Als Folge kann die Größe der WPQ erhöht werden müssen. Schmutzige Daten des Verzeichnis-Cache 118 können auch vor dem Schließen der Seite zurückgeschrieben werden, was die Wahrscheinlichkeit verringert, dass eine zusätzliche Seite angefordert wird, die zum Zurückschreiben der Verzeichnisdaten offen ist.
  • Es können noch weitere Optimierungen erreicht werden. Zum Beispiel kann der Verzeichnis-Cache auch die MESI-Zustandsinformationen der Kopie einer bestimmten Cache-Zeile in einem anderen Prozessor verwenden, um die optimale (minimale(r) Verkehr und Latenz) kohärente Implementierung zur Erzielung der besten Leistung zu bestrafen. Zum Beispiel braucht der Lese-Zugriff keinen exklusiven Zustand zu haben, da modifizierte Daten bereits in einem exklusiven Zustand sind und direkt an den Anfordernden (Requester) gesendet werden können.
  • Ausführungsformen der Erfindung passen sich leicht an eine Erhöhung der Anzahl von Prozessoren oder Prozessorkernen an. Wenn ein System zum Beispiel Prozessoren hinzufügt, können der Home Agent und der zugehörige Speicher eine entsprechende Vermehrung von Verzeichnis-Informationen in dem Speicher ermöglichen.
  • In der vorstehenden Patentbeschreibung ist die Erfindung unter Bezugnahme auf ihre speziellen Ausführungsformen beschrieben worden. Es ist jedoch klar, dass verschiedene Modifikationen und Abwandlungen an diesen Ausführungsformen vorgenommen werden können, ohne von ihnen abzuweichen. Die Patentbeschreibung und die Zeichnungen sind daher in einem erläuternden und nicht in einem beschränkenden Sinne zu betrachten.

Claims (7)

  1. Verfahren mit den folgenden Schritten: Empfangen einer Speicherzugriffsanforderung einer angeforderten Cache-Zeile von einem von mehreren Prozessoren (302); Bestimmen, ob ein Cache-Eintrag mit Kohärenz-Informationen für die angeforderte Cache-Zeile in einem Verzeichnis-Cache vorliegt; falls kein Cache-Eintrag mit Kohärent-Informationen für die angeforderte Cache-Zeile in dem Verzeichnis-Cache vorliegt, Zugreifen auf Kohärenz-Informationen, die der angeforderten Cache-Zeile zugeordnet sind, aus einer Speichereinheit durch Einfügen aus einer Speicherseite in den Verzeichnis-Cache, in der die angeforderte Cache-Zeile gespeichert ist, wobei die Speicherseite auch eine Verzeichniszeile mit Kohärenz-Informationen enthält, die der angeforderten Cache-Zeile (304) entsprechen, sowie Durchführen eines spekulativen Snoops an anderen Prozessoren (102) der mehreren Prozessoren umfasst, wobei das Durchführen im Wesentlichen gleichzeitig mit dem Zugreifen auf Kohärenz-Informationen erfolgt; Lesen von Daten, die der angeforderten Cache-Zeile zugeordnet sind entsprechend den Kohärenz-Informationen (306); und Zurücksenden der Daten an den Prozessor (308), wobei vor dem Zurücksenden der Daten die Ergebnisse des spekulativen Snoops abgewartet werden, falls die aus der Speicherseite in den Verzeichnis-Cache gezogenen Kohärenz-Informationen anzeigen, dass einer der anderen Prozessoren die angeforderte Cache-Zeile hat, und wobei die Daten ohne Warten zurückgesendet werden, wenn die Kohärenz-Informationen anzeigen, dass keiner der anderen Prozessoren die angeforderte Cache-Zeile hat.
  2. Verfahren nach Anspruch 1, wobei das Lesen von Daten, die der angeforderten Cache-Zeile zugeordnet sind, zumindest teilweise auf Ergebnissen des spekulativen Snoops beruht.
  3. Verfahren nach Anspruch 1, das weiterhin folgende Schritte aufweist: wenn der Verzeichnis-Cache (118) einen Eintrag enthält, der der angeforderten Cache-Zeile entspricht, Zugreifen auf den Eintrag in dem Verzeichnis-Cache, wobei der Eintrag Kohärenz-Informationen enthält, die der angeforderten Cache-Zeile zugeordnet sind; und wenn die Kohärenz-Informationen angeben, dass eine Snoop-Transaktion erforderlich ist, Erzeugen einer Snoop-Transaktion für den Besitzerprozessor.
  4. Vorrichtung mit: einem Home Agent (116) zum Empfangen einer Speicherzugriffsanforderung einer angeforderten Cache-Zeile von einem Prozessor (102) von mehreren Prozessoren und einem Speichersteuergerät (114, 208) zum Bestimmen, ob ein Cache-Eintrag mit Kohärenz-Informationen für die angeforderte Cache-Zeile in einem Verzeichnis-Cache vorliegt; falls kein Cache-Eintrag mit Kohärent-Informationen für die angeforderte Cache-Zeile in dem Verzeichnis-Cache vorliegt, Zugreifen auf Kohärenz-Informationen, die der angeforderten Cache-Zeile zugeordnet sind, aus einer Speichereinheit (106) durch Einfügen aus einer Speicherseite in den Verzeichnis-Cache, in der die angeforderte Cache-Zeile gespeichert ist, wobei die Speicherseite auch eine Verzeichniszeile mit Kohärenz-Informationen enthält, die der angeforderten Cache-Zeile entsprechen, sowie Durchführen eines spekulativen Snoops an anderen Prozessoren (102) der mehreren Prozessoren umfasst, wobei das Durchführen im Wesentlichen gleichzeitig mit dem Zugreifen auf Kohärenz-Informationen erfolgt; Lesen von Daten, die der angeforderten Cache-Zeile zugeordnet sind, entsprechend den Kohärenz-Informationen; und Zurücksenden der Daten an den Prozessor (102), wobei vor dem Zurücksenden der Daten die Ergebnisse des sepkulativen Snoops abgewartet werden, falls die aus der Speicherseite in den Verzeichnis-Cache gezogenen Kohärenz-Informationen anzeigen, dass einer der anderen Prozessoren die angeforderte Cache-Zeile hat, und wobei die Daten ohne Warten zurückgesendet werden, wenn die Kohärenz-Informationen anzeigen, dass keiner der anderen Prozessoren die angeforderte Cache hat-.
  5. Vorrichtung nach Anspruch 4, wobei das Speichersteuergerät (114, 208) weiterhin folgende Schritte ausführt: wenn der Verzeichnis-Cache einen Eintrag enthält, der der angeforderten Cache-Zeile entspricht, Zugreifen auf den Eintrag in dem Verzeichnis-Cache (118), wobei der Eintrag Kohärenz-Informationen enthält, die der angeforderten Cache-Zeile zugeordnet sind; und wenn die Kohärenz-Informationen angeben, dass eine Snoop-Transaktion erforderlich ist, Erzeugen einer Snoop-Transaktion für den Besitzerprozessor.
  6. Vorrichtung nach Anspruch 4, dadurch gekennzeichnet, dass die Vorrichtung von einem Prozessorchip umfasst ist.
  7. System mit: einem Hub-Controller (108), welcher eine Vorrichtung nach einem der Ansprüche 4 bis 6 umfasst; der Speichereinheit (106); und einem mit der Speichereinheit gekoppelten Speicherbus (112), wobei der Hub-Controller (108) mit dem Speicherbus gekoppelt ist.
DE102008062044.0A 2007-12-31 2008-12-12 1Speicherinterne, seiteninterne Verzeichnis-Chache-Kohärenz-Konfiguration Expired - Fee Related DE102008062044B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/006,326 2007-12-31
US12/006,326 US7991963B2 (en) 2007-12-31 2007-12-31 In-memory, in-page directory cache coherency scheme

Publications (2)

Publication Number Publication Date
DE102008062044A1 DE102008062044A1 (de) 2009-07-16
DE102008062044B4 true DE102008062044B4 (de) 2018-09-06

Family

ID=40758616

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102008062044.0A Expired - Fee Related DE102008062044B4 (de) 2007-12-31 2008-12-12 1Speicherinterne, seiteninterne Verzeichnis-Chache-Kohärenz-Konfiguration

Country Status (4)

Country Link
US (1) US7991963B2 (de)
KR (1) KR101139565B1 (de)
CN (1) CN101493796B (de)
DE (1) DE102008062044B4 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101639672B1 (ko) * 2010-01-05 2016-07-15 삼성전자주식회사 무한 트랜잭션 메모리 시스템 및 그 동작 방법
US8676920B2 (en) * 2010-12-08 2014-03-18 GM Global Technology Operations LLC Intelligent cache management protocol for vehicular networks
US8935485B2 (en) 2011-08-08 2015-01-13 Arm Limited Snoop filter and non-inclusive shared cache memory
US9110830B2 (en) * 2012-01-18 2015-08-18 Qualcomm Incorporated Determining cache hit/miss of aliased addresses in virtually-tagged cache(s), and related systems and methods
US20130219105A1 (en) * 2012-02-16 2013-08-22 Micron Technology, Inc. Method, device and system for caching for non-volatile memory device
KR101446924B1 (ko) * 2013-02-12 2014-10-06 한국과학기술원 일관성 관리 방법, 일관성 관리 회로, 이를 포함하는 캐시 장치 및 반도체 장치
US9489309B2 (en) * 2014-10-31 2016-11-08 Oracle International Corporation Method and system for dynamic cache partitioning using address remapping
US11237965B2 (en) * 2014-12-31 2022-02-01 Arteris, Inc. Configurable snoop filters for cache coherent systems
WO2017000124A1 (zh) * 2015-06-29 2017-01-05 华为技术有限公司 目录中表项合并的方法以及设备
US9812221B1 (en) 2015-09-09 2017-11-07 Rockwell Collins, Inc. Multi-core cache coherency built-in test
CN106250341B (zh) * 2016-07-29 2018-12-18 福州瑞芯微电子股份有限公司 一种多簇处理器及其脚本设计和连接方法
US10282297B2 (en) * 2017-02-08 2019-05-07 Arm Limited Read-with overridable-invalidate transaction
CN109597776B (zh) * 2017-09-30 2020-12-08 华为技术有限公司 一种数据操作方法、内存控制器以及多处理器系统
US11188255B2 (en) 2018-03-28 2021-11-30 Intel Corporation Dynamic major mode for efficient memory traffic control

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6389514B1 (en) 1999-03-25 2002-05-14 Hewlett-Packard Company Method and computer system for speculatively closing pages in memory
DE69732938T2 (de) 1996-07-01 2006-02-02 Sun Microsystems, Inc., Santa Clara Hybrides Speicherzugangsprotokoll in einem Datenverarbeitungssystem mit verteiltem, gemeinsamem Speicher
US20060179244A1 (en) 2005-02-10 2006-08-10 International Business Machines Corporation Cache memory, processing unit, data processing system and method for filtering snooped operations

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5297269A (en) * 1990-04-26 1994-03-22 Digital Equipment Company Cache coherency protocol for multi processor computer system
US5813030A (en) * 1991-12-31 1998-09-22 Compaq Computer Corp. Cache memory system with simultaneous access of cache and main memories
DE69519816T2 (de) * 1994-05-03 2001-09-20 Hewlett Packard Co Anordnung mit Duplikat des Cache-Etikettenspeichers
US6023746A (en) * 1997-04-14 2000-02-08 International Business Machines Corporation Dual associative-cache directories allowing simultaneous read operation using two buses with multiplexors, address tags, memory block control signals, single clock cycle operation and error correction
US6295598B1 (en) * 1998-06-30 2001-09-25 Src Computers, Inc. Split directory-based cache coherency technique for a multi-processor computer system
US6502174B1 (en) * 1999-03-03 2002-12-31 International Business Machines Corporation Method and system for managing meta data
FR2814555B1 (fr) * 2000-09-25 2003-02-28 Thomson Multimedia Sa Systeme et procede de gestion memoire de coherence de donnees et reseau multiprocesseur associe
US6877088B2 (en) * 2001-08-08 2005-04-05 Sun Microsystems, Inc. Methods and apparatus for controlling speculative execution of instructions based on a multiaccess memory condition
US6868485B1 (en) * 2002-09-27 2005-03-15 Advanced Micro Devices, Inc. Computer system with integrated directory and processor cache
US7051166B2 (en) * 2003-04-21 2006-05-23 Hewlett-Packard Development Company, L.P. Directory-based cache coherency scheme for reducing memory bandwidth loss

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69732938T2 (de) 1996-07-01 2006-02-02 Sun Microsystems, Inc., Santa Clara Hybrides Speicherzugangsprotokoll in einem Datenverarbeitungssystem mit verteiltem, gemeinsamem Speicher
US6389514B1 (en) 1999-03-25 2002-05-14 Hewlett-Packard Company Method and computer system for speculatively closing pages in memory
US20060179244A1 (en) 2005-02-10 2006-08-10 International Business Machines Corporation Cache memory, processing unit, data processing system and method for filtering snooped operations

Also Published As

Publication number Publication date
CN101493796A (zh) 2009-07-29
KR20090073983A (ko) 2009-07-03
US7991963B2 (en) 2011-08-02
DE102008062044A1 (de) 2009-07-16
CN101493796B (zh) 2013-03-13
US20090172295A1 (en) 2009-07-02
KR101139565B1 (ko) 2012-04-30

Similar Documents

Publication Publication Date Title
DE102008062044B4 (de) 1Speicherinterne, seiteninterne Verzeichnis-Chache-Kohärenz-Konfiguration
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE112008002018B4 (de) Bereitstellen eines gemeinsam genutzten Inklusiv-Cache bei Mehrkern-Cache-Clustern
DE102007030116B4 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE60222402T2 (de) Verfahren und system zur spekulativen ungültigkeitserklärung von zeilen in einem cachespeicher
DE102011076894B9 (de) Persistenter Speicher für einen Hauptspeicher eines Prozessors
DE68924306T2 (de) Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern.
DE68902193T2 (de) Datenspeicheranordnung.
DE112005002180T5 (de) Lösen von Cachekonflikten
DE69732181T2 (de) Verfahren und gerät zum zwischenspeichern von systemverwaltungsinformationen mit anderen informationen
DE112009000836T5 (de) Adaptive Cache-Organisation für Chip-Multiprozessoren
DE102013218370B4 (de) Akquirierung spekulativer Genehmigung für gemeinsam genutzten Speicher
DE112010003758T5 (de) Instruktionen zum Verwalten einer parallelen Cache-Hierarchie
DE112009000373T5 (de) Technik, um Information zwischen unterschiedlichen Kohärenz-Domains von Caches zu nutzen
DE112006003453T5 (de) Per-Satz-Relaxation der Cache-Inklusion
DE112007001171T5 (de) Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf
DE112010004971T5 (de) Ein System, Verfahren und eine Vorrichtung für einen Cache-Flush eines Seitenbereichs und TLB Invalidierung eines Bereichs von Einträgen
DE112008002019T5 (de) Auslagern von Eingabe/Ausgabe (I/O)-Virtualisierungsarbeitsgängen an einem Prozessor
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE102015007709A1 (de) Invalidationsdatenbereich für einen Cache
DE112012005210T5 (de) Bereitstellen eines gemeinsamen Caching-Agenten für ein Kern- und integriertes Ein-/Ausgabe-(IO)-Modul
DE102007018033A1 (de) Kohärenzverzeichnisaktualisierung
DE10006430B4 (de) Verfahren zur Aufrechterhaltung einer Kohärenz für ein Multi-Prozessor-System
DE112005000996T5 (de) Mechanismus zum Annullieren von Dateneinträgen eines Umsetzungspuffers in einem Mehrprozessorsystem

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8125 Change of the main classification

Ipc: G06F 12/08 AFI20090401BHDE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee