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

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

Info

Publication number
DE102008062044A1
DE102008062044A1 DE102008062044A DE102008062044A DE102008062044A1 DE 102008062044 A1 DE102008062044 A1 DE 102008062044A1 DE 102008062044 A DE102008062044 A DE 102008062044A DE 102008062044 A DE102008062044 A DE 102008062044A DE 102008062044 A1 DE102008062044 A1 DE 102008062044A1
Authority
DE
Germany
Prior art keywords
cache line
memory
requested cache
coherence information
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.)
Granted
Application number
DE102008062044A
Other languages
English (en)
Other versions
DE102008062044B4 (de
Inventor
Ian Hillsboro Steiner
Zhong-Ning Cai Lake Oswego George
Saurabh Tiwari
Kai Portland 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

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

Bei einer Ausführungsform umfasst ein Verfahren das Empfangen einer Speicherzugriffsanforderung einer angeforderten Cache-Zeile von einem Prozessor von mehreren Prozessoren; das Zugreifen auf Kohärenz-Informationen, die der angeforderten Cache-Zeile aus einer Speichereinheit 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 enthält, die der angeforderten Cache-Zeile entsprechen; das Lesen von Daten, die der angeforderten Cache-Zeile zugeordnet sind, entsprechend den Kohärenz-Informationen, und das Zurücksenden der Daten an den Prozessor.

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 Mehrkernsysteme 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.
  • Kurze Beschreibung der Zeichnungen
  • 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 Mehrkernsystem 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 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: Anew 504 = Aold 502 + ((Aold >> 6) & mask-lower-x-bits),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: Anew[n – 1:0] = Aold[n – 1:0]; Anew[63:n] = Aold[63:n] + Aold[63:n] >> n,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 64 B aus dem DRAM-Speicherplatz von jedem 4 KB 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 64 B von jeweils 8 KB 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 4 KB eingefügt (12 Adressbits in einem Byte-adressierbaren System). Die Cache-Zeilen habe eine Größe von 64 B (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 (23)

  1. Verfahren mit den folgenden Schritten: Empfangen einer Speicherzugriffsanforderung einer angeforderten Cache-Zeile von einem von mehreren Prozessoren; Zugreifen auf Kohärenz-Informationen, die der angeforderten Cache-Zeile zugeordnet sind, aus einer Speichereinheit durch Einfügen aus einer Speicherseite, in der die angeforderte Cache-Zeile gespeichert ist, wobei die Speicherseite auch eine Verzeichniszeile mit Kohärenz-Informationen enthält entsprechend der angeforderten Cache-Zeile; Lesen von Daten, die der angeforderten Cache-Zeile zugeordnet sind entsprechend den Kohärenz-Informationen; und Zurücksenden der Daten an den Prozessor.
  2. Verfahren nach Anspruch 1, wobei die Kohärenz-Informationen angeben, dass kein anderer Prozessor der mehreren Prozessoren die angeforderte Cache-Zeile hat, und das Lesen von Daten, die der angeforderten Cache-Zeile zugeordnet sind, das Lesen der Daten von der Speicherseite umfasst.
  3. Verfahren nach Anspruch 1, wobei die Kohärenz-Informationen angeben, dass ein oder mehrere andere Prozessoren der mehreren Prozessoren die angeforderte Cache-Zeile haben kann, und das Lesen von Daten, die der angeforderten Cache-Zeile zugeordnet sind, das Lesen der Daten aus einem Besitzer-Cache oder von der Speicherseite umfasst.
  4. Verfahren nach Anspruch 1, das weiterhin das Ermitteln, dass ein Verzeichnis-Cache keinen Eintrag hat, der der angeforderten Cache-Zeile entspricht, vor dem Zugreifen auf Kohärenz-Informationen umfasst, die der angeforderten Cache-Zeile aus der Speichereinheit zugeordnet sind.
  5. Verfahren nach Anspruch 4, das weiterhin das Durchführen eines spekulativen Snoops an anderen Prozessoren der mehreren Prozessoren umfasst, wobei das Durchführen im Wesentlichen gleichzeitig mit dem Zugreifen auf Kohärenz-Informationen erfolgt.
  6. Verfahren nach Anspruch 5, wobei das Lesen von Daten, die der angeforderten Cache-Zeile zugeordnet sind, zumindest teilweise auf Ergebnissen des spekulativen Snoops beruht.
  7. Verfahren nach Anspruch 4, das weiterhin folgende Schritte aufweist: wenn der Verzeichnis-Cache 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.
  8. Verfahren nach Anspruch 7, wobei das Zugreifen auf Kohärenz-Informationen, die der angeforderten Cache-Zeile zugeordnet sind, aus einer Speichereinheit durch Einfügen einer Speicherseite aus der Speichereinheit, in der die angeforderte Cache-Zeile gespeichert ist, weiterhin das Zuweisen der Kohärenz-Informationen in dem Verzeichnis-Cache umfasst.
  9. Vorrichtung mit: einem Home Agent zum Empfangen einer Speicherzugriffsanforderung einer angeforderten Cache-Zeile von einem Prozessor von mehreren Prozessoren und einem Speichersteuergerät zum Zugreifen auf Kohärenz-Informationen, die der angeforderten Cache-Zeile zugeordnet sind, aus einer Speichereinheit durch Einfügen aus einer Speicherseite, 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, Lesen von Daten, die der angeforderten Cache-Zeile zugeordnet sind, entsprechend den Kohärenz-Informationen; und Zurücksenden der Daten an den Prozessor.
  10. Vorrichtung nach Anspruch 9, wobei die Kohärenz-Informationen angeben, dass kein anderer Prozessor der mehreren Prozessoren die angeforderte Cache-Zeile hat, und das Speichersteuergerät zum Lesen von Daten, die der angeforderten Cache-Zeile zugeordnet sind, das Speichersteuergerät zum Lesen der Daten aus der Speicherseite umfasst.
  11. Vorrichtung nach Anspruch 9, wobei die Kohärenz-Informationen angeben, dass einer oder mehrere andere Prozessoren der mehreren Prozessoren die angeforderte Cache-Zeile haben kann, und das Speichersteuergerät zum Lesen von Daten, die der angeforderten Cache-Zeile zugeordnet sind, das Speichersteuergerät zum Lesen der Daten aus einem Besitzer-Cache oder aus der Speicherseite umfasst.
  12. Vorrichtung nach Anspruch 9, bei der das Speichersteuergerät weiterhin ermittelt, dass ein Verzeichnis-Cache keinen Eintrag hat, der der angeforderten Cache-Zeile entspricht, bevor das Speichersteuergerät auf Kohärenz-Informationen zugreift, die der angeforderten Cache-Zeile aus der Speichereinheit zugeordnet sind.
  13. Vorrichtung nach Anspruch 12, bei der das Speichersteuergerät weiterhin einen spekulativen Snoop an andere Prozessoren der mehreren Prozessoren absetzt, wobei das Speichersteuergerät den Snoop im Wesentlichen gleichzeitig mit dem Zugreifen auf Kohärenz-Informationen durchführt.
  14. Vorrichtung nach Anspruch 12, wobei das Speichersteuergerät 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, 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.
  15. Vorrichtung nach Anspruch 14, wobei das Speichersteuergerät weiterhin die Kohärenz-Informationen in dem Verzeichnis-Cache zuweist, wenn es auf die Kohärenz-Informationen, die der angeforderten Cache-Zeile aus einer Speichereinheit zugeordnet sind, durch Einfügen einer Speicherseite aus der Speichereinheit zugreift, in der die angeforderte Cache-Zeile gespeichert ist.
  16. Vorrichtung nach Anspruch 9, dadurch gekennzeichnet, dass die Vorrichtung von einem Prozessorchip umfasst ist.
  17. System mit: einer Speichereinheit; einem mit der Speichereinheit gekoppelten Speicherbus und einem mit dem Speicherbus gekoppelten Hub-Controller, der Folgendes aufweist: einen Home Agent zum Empfangen einer Speicherzugriffsanforderung einer angeforderten Cache-Zeile von einem Prozessor von mehreren Prozessoren und ein Speichersteuergerät zum Zugreifen auf Kohärenz-Informationen, die der angeforderten Cache-Zeile zugeordnet sind, aus der Speichereinheit durch Einfügen aus einer Speicherseite, in der die angeforderte Cache-Zeile gespeichert ist, wobei die Speicherseite auch eine Verzeichniszeile mit Kohärenz-Informationen enthält entsprechend der angeforderten Cache-Zeile, Lesen von Daten, die der angeforderten Cache-Zeile zugeordnet sind entsprechend den Kohärenz-Informationen und Zurücksenden der Daten an den Prozessor.
  18. System nach Anspruch 17, wobei die Kohärenz-Informationen angeben, dass kein anderer Prozessor der mehreren Prozessoren die angeforderte Cache-Zeile hat, und das Speichersteuergerät zum Lesen von Daten, die der angeforderten Cache-Zeile zugeordnet sind, das Speichersteuergerät zum Lesen der Daten aus der Speicherseite umfasst.
  19. System nach Anspruch 17, wobei die Kohärenz-Informationen angeben, dass einer oder mehrere andere Prozessoren der mehreren Prozessoren die angeforderte Cache-Zeile haben kann, und das Speichersteuergerät zum Lesen von Daten, die der angeforderten Cache-Zeile zugeordnet sind, das Speichersteuergerät zum Lesen der Daten aus einem Besitzer-Cache oder aus der Speicherseite umfasst.
  20. System nach Anspruch 17, bei dem das Speichersteuergerät weiterhin ermittelt, dass ein Verzeichnis-Cache keinen Eintrag hat, der der angeforderten Cache-Zeile entspricht, bevor das Speichersteuergerät auf Kohärenz-Informationen zugreift, die der angeforderten Cache-Zeile aus der Speichereinheit zugeordnet sind.
  21. System nach Anspruch 20, bei dem das Speichersteuergerät weiterhin einen spekulativen Snoop an andere Prozessoren der mehreren Prozessoren absetzt, wobei das Speichersteuergerät den Snoop im Wesentlichen gleichzeitig mit dem Zugreifen auf Kohärenz-Informationen durchführt.
  22. System nach Anspruch 20, wobei das Speichersteuergerät 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, 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.
  23. System nach Anspruch 22, wobei das Speichersteuergerät weiterhin die Kohärenz-Informationen in dem Verzeichnis-Cache zuweist, wenn es auf die Kohärenz-Informationen, die der angeforderten Cache-Zeile zugeordnet sind, aus einer Speichereinheit dadurch zugreift, dass es aus der Speichereinheit eine Speicherseite einfügt, in der die angeforderte Cache-Zeile gespeichert 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 true DE102008062044A1 (de) 2009-07-16
DE102008062044B4 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

Family Cites Families (13)

* 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
US5864671A (en) 1996-07-01 1999-01-26 Sun Microsystems, Inc. Hybrid memory access protocol for servicing memory access request by ascertaining whether the memory block is currently cached in determining which protocols to be used
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
US6389514B1 (en) 1999-03-25 2002-05-14 Hewlett-Packard Company Method and computer system for speculatively closing pages in memory
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
US7404046B2 (en) 2005-02-10 2008-07-22 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
DE102008062044B4 (de) 2018-09-06
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
DE112008002018B4 (de) Bereitstellen eines gemeinsam genutzten Inklusiv-Cache bei Mehrkern-Cache-Clustern
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE102011076894B9 (de) Persistenter Speicher für einen Hauptspeicher eines Prozessors
DE102007030116B4 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE69734129T2 (de) Hierarchisches Datenverarbeitungssystem mit symetrischen Multiprozessoren
DE102007032307A1 (de) Dedizierter Mechanismus zur Seitenabbildung in einer GPU
DE102008048630B4 (de) Speicheranordnung und Speichersystem
DE102005029852B4 (de) Steueranordnung zum Freigeben einer oder mehrerer virtueller Speicherseiten nach Beendigung eines Programms in einem Multiprozessorcomputersystem
DE112009000836T5 (de) Adaptive Cache-Organisation für Chip-Multiprozessoren
DE102019105879A1 (de) Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher
DE112008002019T5 (de) Auslagern von Eingabe/Ausgabe (I/O)-Virtualisierungsarbeitsgängen an einem Prozessor
DE112005002180T5 (de) Lösen von Cachekonflikten
DE112009000373T5 (de) Technik, um Information zwischen unterschiedlichen Kohärenz-Domains von Caches zu nutzen
DE102007018033A1 (de) Kohärenzverzeichnisaktualisierung
DE112010004971T5 (de) Ein System, Verfahren und eine Vorrichtung für einen Cache-Flush eines Seitenbereichs und TLB Invalidierung eines Bereichs von Einträgen
DE102013205886A1 (de) Dynamische Bankmodus-Adressierung für Speicherzugriff
DE102006032832A1 (de) Netzwerksystem und Verfahren zur Steuerung verteilter Speicher
DE102011076895A1 (de) Cachekohärenzprotokoll für persistente Speicher
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE102014103056A1 (de) Ein-Chip-System und Verfahren des Betreibens desselben
DE112012004926B4 (de) Gemeinsame Speichernutzung durch Prozessoren
DE102019117794A1 (de) Speichervorrichtungen, die heterogene Prozessoren umfassen, welche sich Speicher teilen, und Verfahren zu deren Betrieb
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