-
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:
worin A
new die neu abgebildete (remapped) Kanal-Adresse ist und A
old die decodierte Kanal-Adresse ist, die in die Abbildungs-Funktion eingegeben wird.
-
Anders ausgedrückt:
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.