-
In
einer modernen Computersystemarchitektur werden mehrere Speicher-Caches
beibehalten, um die Latenzzeit beim Zugreifen auf den Hauptspeicher
zu reduzieren. Ein Cache weist üblicherweise eine
Mehrzahl von Einträgen
auf. Jeder Eintrag enthält
eine bestimmte Anzahl von Bytes, die als Cacheleitung bekannt ist.
-
Wenn
ein Prozessor eine Änderung
an Daten in dem Hauptspeicher ausführt, können Kopien der Daten, die
in einem oder mehreren der Caches beibehalten werden, inkonsistent
(z. B. veraltet oder überholt)
mit dem Hauptspeicher oder mit anderen Caches werden. Auf ähnliche
Weise, wenn ein Prozessor eine Änderung
an Daten in einem der Caches ausführt, können Kopien der Daten in dem
Hauptspeicher oder in anderen Caches inkonsistent mit den geänderten
Daten werden. Cache-Kohärenzprotokolle
werden verwendet, um die Konsistenz von Daten zwischen Caches beizubehalten.
Es gibt zwei allgemeine Klassen von Cachekohärenzprotokollen: Schnüffeln und
Verzeichnis-basiert.
-
Bei
einem Schnüffelprotokoll
weist jeder Cache, der eine Kopie der Daten aus einem Block eines physischen
Speichers aufweist, ebenfalls eine Kopie von Informationen über den
Datenblock auf. Jeder Cache ist üblicherweise
auf einem gemeinschaftlich verwendeten Speicherbus angeordnet, und
alle Cachesteuerungen überwachen
den Bus oder schnüffeln
auf dem Bus, um zu bestimmen, ob sie eine Kopie des gemeinschaftlich
verwendeten Blocks aufweisen oder nicht. Üblicherweise wurden Schnüffel- bzw.
Abhör-Protokolle
primär
in einem kleinen Multiprozessor oder einzelnen Prozessorsystemen
verwendet, während
größere Hochleistungs-Multiprozessorsysteme
verzeichnisbasierte Kohärenzprotokolle
verwenden.
-
Bei
einem verzeichnisbasierten Protokoll wird ein Verzeichnis verwendet,
um eine Speichercachekohärenz
und einen Zustand beizubehalten. Eine Kohärenzeinheit ist ein Block eines
physischen Speichers, der einer Cacheleitung entspricht. Üblicherweise
ist die kleinste Einheit eines Speichers, die zwischen dem Hauptspeicher
und dem Cache übertragen
werden kann, eine Kohärenzeinheit.
Informationen über
eine Kohärenzeinheit
werden an nur einem Ort gehalten; d. h., jede Kohärenzeinheit
weist ein Verzeichnis auf. Informationen in dem Verzeichnis umfassen
allgemein, welcher Cache oder welche Caches eine Kopie der Kohärenzeinheit
aufweisen, und ob diese Kopie ausschließlich für eine zukünftige Modifikation markiert
ist. Ein Zugriff auf eine bestimmte Kohärenzeinheit fragt zuerst das
Verzeichnis ab. Wenn ein Cache eine exklusive Kopie aufweist, können die
Speicherdaten in der Kohärenzeinheit überholt
sein. Die echten Daten können
dann eine modifizierte Cacheleitung sein, die in dem exklusiven
Cache vorliegt. Wenn es möglich
ist, dass die Daten in der Kohärenzeinheit überholt
sind, dann wird der Cache, der die echten Daten enthält, gezwungen,
seine Daten zu der entsprechenden Kohärenzeinheit in dem Hauptspeicher
zurückzusenden.
Der physische Speicher leitet dann die Daten zu der neuen Anforderungseinrichtung
weiter, die das Verzeichnis mit dem neuen Cacheort dieser Kohärenzeinheit
aktualisiert.
-
Häufig wird
ein dynamischer Direktzugriffsspeicher (DRAM; dynamic random access
memory) verwendet, um das Verzeichnis zu speichern. Ein großer Teil
einer Speicherbandbreite und einer Leistung kann jedoch für das Zugreifen
auf und Aktualisieren von Verzeichnissen verbraucht werden. Die Verwendung
eines chipintegrierten Verzeichniscaches kann die Menge externer
Speicherbandbreite reduzieren, ist jedoch allgemein nicht erwünscht, aufgrund
von erhöhten
Kosten einer anwendungsspezifischen, integrierten Schaltung (ASIC),
aufgrund einer Vergrößerung des
Siliziumbereichs und der Entwurfskomplexität, und erhöhten chipintegrierten Leistungsanforderungen.
-
Im
Gegensatz zu älteren
Speichermodulen mit beidseitig beschichteter Platine (DIMMs; dual
inline memory modules), verwenden vollständig gepufferte DIMM-Module
(FBD-Module; FBD = fully-buffered DIMM) serielle Hochgeschwindigkeitsverknüpfungen.
FBD DIMMs sind im Allgemeinen in der Lage, zweimal soviel Lesebandbreite
bereitzustellen wie Schreibbandbreite, basierend auf einer Entwurfsannahme,
dass Anwendungen mehr Lesebandbreite benötigen als Schreibbandbreite.
Diese Annahme ist problematisch für bestehende, verzeichnisbasierte
System, da Verzeichnisaktualisierungen verursachen können, dass
sich die Schreibbandbreite relativ zu der Lesebandbreite verdoppelt
oder verdreifacht, was eine schlechte Verwendung der verfügbaren Speicherbandbreite
verursacht. Insbesondere bei High-End-Server-Chipsatz-Architekturen können Situationen
entstehen, in denen ein Prozessor zwei Lesetransaktionen pro Schreibtransaktion
ausgibt. Wenn z. B. Verzeichnisinformationen für Cacheleitungs-Besitz in den
DIMMs beibehalten wird, verwandelt sich eine typische Speicherlesetransaktion
aus der Perspektive der DIMMs in eine Lesen-Modifizieren-Schreiben-Transaktion.
Bei einem darstellenden Beispiel können zwei Prozessor-Lesevorgänge und ein
Prozessor-Schreibvorgang zu zusätzlichen
Verzeichnisaktualisierungen führen,
was zwei DRAM-Speicher-Lesevorgänge und
drei DRAM-Speicher-Schreibvorgänge
ergibt und somit 60 % mehr Speicherbandbreite und Leistung verbraucht
als die Cacheleitungszugriffe allein.
-
Es
ist die Aufgabe der vorliegenden Erfindung, ein System und ein Verfahren
für ein
Kohärenzverzeichnisaktualisieren
in einem Multiprozessorrechensystem mit verbesserten Charakteristika
zu schaffen.
-
Diese
Aufgabe wird durch ein System gemäß Anspruch 1 und 9 und ein
Verfahren gemäß Anspruch
5 gelöst.
-
Zum
Zweck der Darstellung der Erfindung ist in den Zeichnungen eine
Form gezeigt, die gegenwärtig
exemplarisch ist; es wird jedoch darauf hingewiesen, dass diese
Erfindung nicht auf die genauen Anordnungen und Instrumentalitäten beschränkt ist, die
gezeigt sind.
-
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf
die beiliegenden Zeichnungen näher
erläutert.
Es zeigen:
-
1 ein
Blockdiagramm, das eine exemplarische Speicherorganisation in einem
Multiprozessorrechensystem gemäß einem
Ausführungsbeispiel der
Erfindung zeigt;
-
2A ein
Diagramm, das Merkmale eines Cache gemäß einem Ausführungsbeispiel
der Erfindung darstellt;
-
2B ein
Diagramm, das einen darstellenden Cacheeintrag in einem Cachespeicher
gemäß einem
Ausführungsbeispiel
der Erfindung zeigt;
-
3 ein
Flussdiagramm eines Verfahrens zur Kohärenzverzeichnisaktualisierung,
das kein Ausführungsbeispiel
der vorliegenden Erfindung verwendet, um zu prüfen, ob ein Speicherblock eine
lokale Speicherregion ist; und
-
4 ein
Flussdiagramm eines exemplarischen Verfahrens zur Kohärenzverzeichnisaktualisierung
gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung.
-
Übersicht
-
Aspekte
der Erfindung sind in der Lage, das Verhalten zu verbessern und
den Leistungsverbrauch für
verzeichnisba sierte Systeme zu reduzieren, die einen DRAM-Speicher
zum Speichern und Aktualisieren von Verzeichnissen verwenden, durch Bereitstellen
eines kostengünstigen
Mechanismus zum Reduzieren der Bandbreite, die für Verzeichnisaktualisierungen
erforderlich ist, während
der Betrag an Bandbreite vergrößert wird,
der für
Softwareanwendungen und ein Betriebssystem verfügbar ist. Ein minimaler Siliziumbereich
und ein Verifizierungs-Mehraufwand ist erforderlich, um eine Verzeichnistaktik
gemäß Ausführungsbeispielen
der vorliegenden Erfindung zu implementieren.
-
Bei
Multiprozessorrechensystemen ist der Speicher im Allgemeinen unter
verschiedenen Prozessoren verteilt. Ein Speicher, der lokal an einem Prozessor
ist (z. B. an dieselbe ASIC angebracht ist oder auf demselben Motherboard
vorliegt), kann gemeinschaftlich durch viele Prozessoren verwendet werden
oder kann primär
durch die lokalen Prozessoren verwendet werden. Einige Speicherregionen
können
im Wesentlichen als für
lokale Prozessoren reserviert bezeichnet sein oder für einen
bestimmten Prozess-Thread (Teilprozess), der auf lokalen Prozessoren
läuft.
Bei einem exemplarischen Ausführungsbeispiel
werden solche Regionen lokale Speicherregionen genannt. Darstellende
Beispiele von lokalen Speicherregionen umfassen lokale Zellspeicherregionen
(CLM-Regionen; CLM = cell local memory), und andere Arten von Ein-Eigentümer-Speicherregionen.
In solchen Speicherregionen neigt jede Cacheleitung dazu, dass sie
im Besitz von oder reserviert ist für einen einzelnen Cache-Agenten.
-
Bei
einem darstellenden Ausführungsbeispiel,
das in 1 gezeigt ist, ist eine lokale Speicherregion
eine CLM-Region.
Bei einigen Ausführungsbeispielen
sind CLM-Regionen Hauptspeicherregionen, die eine nichteinheitliche
Speicherzugriffs-Affinität
mit niedriger Latenzzeit (NUMA-Affinität; NUMA = non-uniform memory
access) für
einen spezifischen Satz aus einem oder mehreren Prozess-Threads
aufweisen, die auf einer oder mehreren CPUs laufen, die ihrer seits
auf einem oder mehreren CPU-Sockeln vorliegen. Bei einem darstellenden
Beispiel können
exemplarische Systeme, die auf dem sx2000-Sever-Chipsatz basieren
(handelsüblich erhältlich von
der Hewlett-Packard Company) bis zu 16 Prozess-Threads aufweisen,
die auf acht Doppel-Thread-Prozessorkernen
laufen, die sich in vier CPU-Sockeln für eine CLM-Region befinden.
Bei anderen Ausführungsbeispielen,
wie z. B. bei Systemen mit integrierten Speichersteuerungen auf
dem CPU-Sockel, kann jede CLM-Region nur Prozess-Threads unterstützen, die
auf dem CPU-Sockel laufen. Die Bezeichnung einer Speicherregion
als eine CLM-Region zeigt bei einigen Ausführungsbeispielen nur an, dass
ein spezifischer Prozess-Thread eine Affinität für die CLM-Region aufweist, aber garantiert nicht
einen exklusiven Zugriff auf die CLM-Region durch den bevorzugten
Prozess-Thread.
-
Aspekte
der Erfindung identifizieren lokale Speicherregionen, wie z. B.
unter Verwendung eines inhaltsadressierbaren Speichers (CAM; content-addressable
memory) (z. B. einen kleinen und kostengünstigen Adress-CAM), mit Zustandsinformationen
zum Identifizieren lokaler Speicherregionen. Ausführungsbeispiele
der Erfindung implementieren eine spezialisierte Verzeichnis-Aktualisierungs-Taktik
für einen
Speicher in einer lokalen Speicherregion. Weitere Aspekte der Erfindung
vermeiden das Ändern
des Verzeichniszustands einer lokalen Speichercacheleitung, da bei
einigen Ausführungsbeispielen
die Cacheleitung im Allgemeinen primär im Besitz desselben Prozessor-Threads
ist (was denselben Cache-Agenten impliziert).
-
Ein
verzeichnisbasiertes System gemäß einem
Ausführungsbeispiel
der Erfindung weist exklusive (E), gemeinschaftlich verwendete (S;
shared), und ungültige
(I; invalid) Verzeichniszustände
auf. Daher sind die möglichen
Verzeichniszustandsübergänge E-zu-E,
E-zu-S, E-zu-I, S-zu-E, S-zu-S, S-zu-I, I-zu-E, I-zu-S und I-zu-I.
Für Speicherregionen,
auf die primär
durch einen einzelnen Prozessor zugegriffen wird, wie z. B. lokale
Speicherregionen, sind die E-zu-I und I-zu-E-Verzeichnisübergänge am häufigsten
vorherrschend.
-
Bei
einem typischen, exemplarischen Multiprozessorrechensystem, das
verzeichnisbasierte Kohärenzprotokolle
verwendet, zeigen schätzungsweise
bis zu 50 % aller Speicherzugriffe E-zu-I-Verzeichniszustandsübergänge. Dementsprechend
können durch Ändern der
Verzeichnistaktik für
lokale Speicherregionen derart, dass E-zu-I-Verzeichniszustandsübergänge verboten
sind, Ausführungsbeispiele
der Erfindung die Anzahl von Verzeichnisübergängen wesentlich reduzieren,
wodurch zusätzliche Bandbreite
und Leistung reduziert wird, die für Verzeichnisaktualisierungen
erforderlich ist.
-
Ausführungsbeispiele
der Erfindung ermöglichen
es verzeichnisbasierten Multiprozessorrechensystemen, wie z. B.
jenen, die die FBD-DIMM-Technik verwenden, mehr Speicherbandbreite
zu gewinnen, durch Reduzieren der Menge an verschwenderischen Schreibvorgängen auf
einem Schreibkanal. Eine solche Reduzierung hat auch indirekt Einfluss auf
die Bandbreite auf einem Lesekanal. Daher ist mehr Bandbreite für die Anwendung
verfügbar
und weniger wird für
unnötige
Verzeichnisaktualisierungen verschwendet. Durch Reduzieren der Anzahl von
Schreibvorgängen
kann weniger Leistung für
einen gegebenen Pegel eines Rechenverhaltens verbraucht werden.
-
Darstellende
Rechenumgebun
-
Bezug
nehmend auf die Zeichnungen, in denen gleiche Bezugszeichen gleiche
Elemente darstellen, zeigt 1 eine exemplarische
Speicherorganisation in einem Multiprozessorrechensystem 100 gemäß einem
Ausführungsbeispiel
der Erfindung, bei dem die hierin beschriebenen Verfahren und Vorrichtungen
eingesetzt werden können.
Das Multiprozessorrechensystem 100 weist eine Mehrzahl
von Zellen 100A...100N auf. Zu darstellenden Zwecken
ist die Zelle 100A detail lierter gezeigt als die Zellen 100B...100N,
wobei jede derselben funktional ähnlich
zu der Zelle 100A oder im Wesentlichen identisch zu der
Zelle 100A ist.
-
Jede
der Zellen 100A...100N ist mit einer Verbindungsstruktur 185 verbunden,
durch die auf Speicherressourcen zugegriffen werden kann. Die Verbindungsstruktur 185 kann
eine Netzwerkinfrastruktur zum Verbinden von Systemressourcen umfassen,
wie z. B. Chips, Zellen, Speichersteuerungen, und ähnlichem.
Die Verbindungsstruktur 185 kann z. B. Schalter, Router,
Rückwandplatinen und/oder
Kreuzschienen umfassen. Bei einem weiteren darstellenden Beispiel
kann eine Verbindungsstruktur 185 ein InfiniBand-System
mit Hostkanal-Adaptern in Servern, Zielkanal-Adaptern in Speichersystemen
oder Gateways und eine Verbindungshardware aufweisen (z. B. Schalter,
die Fibre Channel und/oder Ethernet Verbindungen verwenden).
-
Bei
einem exemplarischen Ausführungsbeispiel
ist das System 100 in der Lage, mehrere Instanzen eines
Betriebssystems zu betreiben, durch definieren mehrerer Partitionen,
die durch Software verwaltet und neu konfiguriert werden können. Bei
solchen Ausführungsbeispielen
umfasst eine Partition eine oder mehrere der Zellen 100A...100N,
die der Partition zugewiesen sind, ausschließlich durch die Partition verwendet
werden und nicht durch andere Partitionen in dem System 100 verwendet
werden. Jede Partition richtet einen Teilsatz der Hardwareressourcen
des Systems 100 ein, die als eine Systemumgebung zum Booten
einer einzelnen Instanz des Betriebssystems verwendet werden sollen.
Dementsprechend sind alle Prozessoren, Speicherressourcen und I/O
in einer Partition ausschließlich
für die Software
verfügbar,
die in der Partition läuft.
-
Eine
exemplarische Partition 190 ist in dem dargestellten Ausführungsbeispiel
gezeigt; Ausführungsbeispiele
der Erfindung sind jedoch in Systemen verwendbar, die ein Partitionieren
unterstützen, und
in Systemen, die ein Partitionieren nicht unterstützen. Die
exemplarische Partition 190 weist eine Zelle 100A und
eine Zelle 100B auf. Bei dem Ausführungsbeispiel, das in 1 gezeigt
ist, kann jeder der Zellen 100A...100N eine und
nur eine Partition zugewiesen sein; dementsprechend können weitere
exemplarische Partitionen (nicht gezeigt) definiert sein, um jegliche
der Zellen 100C...100N zu umfassen.
-
Bei
einem darstellenden Beispiel eines Multiprozessorrechensystems 100 mit
einer Mehrzahl von Zellen 100A...100N können eine
oder mehrere Zellenplatinen vorgesehen sein. Jede Zellenplatine
kann eine Zellensteuerung und eine Mehrzahl von CPU-Sockeln 110 umfassen.
Bei dem exemplarischen Ausführungsbeispiel
ist jede der Zellen 100A...100N einem CPU-Sockel 110 zugeordnet.
Jeder CPU-Sockel 110 kann mit einem CPU-Modul ausgestattet
sein (z. B. einem Einzelprozessormodul, einem Dual-Prozessor-Modul
oder jeglichem Typ eines Mehrfachprozessormoduls), zum Ausrüsten des Systems 100 mit
einer Mehrzahl von CPUs, wie z. B. der exemplarischen CPU 120.
-
Bei
einem exemplarischen Ausführungsbeispiel
ist eine CPU 120, wie z. B. durch eine interne Verknüpfung, mit
einem Prozessor-Cache-Speicher gekoppelt, wie z. B. dem Cache 130.
Der Cache 130 kann z. B. ein Agent oder ein Logikblock
sein, der in einem Chipsatz für
das System 100 implementiert ist. Bei einigen Ausführungsbeispielen
kann der Cache 130 in dem CPU-Sockel 110 angeordnet
sein. Der Cache 130 umfasst eine Mehrzahl von Eingängen, die
jeweils eine Cacheleitung und zusätzliche Informationen für die Cacheleitung
aufweisen, wie in 2A und 2B unten
gezeigt ist.
-
Der
Cache 130 ist bei dem exemplarischen Ausführungsbeispiel
mit einer Speichersteuerung 142 mit einer Kohärenzsteuerung 140 verbunden
(z. B. elektronisch gekoppelt oder über eine Verbindungsstruktur 185 mit
derselben verbunden); bei anderen Ausführungsbeispielen jedoch kann
der Cache 130 entworfen sein, um jegliche gewünschte Anzahl von
Speichersteuerungen 142 und Kohärenzsteuerungen 140 zu
unterstützen.
-
Jede
Speichersteuerung 142 ist in der Lage, physische Speicherressourcen 150 zu
unterstützen, die
ein oder mehrere Speichermodule oder -banken umfassen, die einen
oder mehrere herkömmliche oder
handelsüblich
erhältliche
dynamische Direktzugriffsspeicher (DRAM), synchrone DRAM (SDRAM), Doppeldatenraten-SDRAM
(DDR-SDRAM) oder Rambus-DRAM (RDRAM) Speichervorrichtungen unter
anderen Speichervorrichtungen sein und/oder umfassen können. Für organisatorische
Zwecke sind diese Speicherressourcen 150 in Blöcke organisiert, die
Speicherblöcke 180 genannt
werden. Jede Speichersteuerung 142 kann eine Mehrzahl von Speicherblöcken 180 unterstützen.
-
Jede
Kohärenzsteuerung 140 umfasst
einen zugeordneten Komparator, wie z. B. einen Speicherziel-CAM
(MTC; memory target CAM) 141. Der MTC 141 umfasst
Einträge,
wobei sich jeder Eintrag auf einen Speicherblock 180 bezieht.
Jeder Speicherblock 180 weist eine Mehrzahl von Kohärenzeinheiten
auf, wie z. B. exemplarische Kohärenzeinheiten 160A, 160B, 160C, 160D, 160E, 160F...160N (allgemein bezeichnet
als „160"). Jede Kohärenzeinheit 160 in dem
System 100 ist Teil eines Speicherblocks 180.
-
Bei
einem Ausführungsbeispiel
der Erfindung umfasst jeder der Einträge in der MTC 141 Zustandsinformationen,
um anzuzeigen, ob der zugeordnete Speicherblock 180 eine
lokale Speicherregion ist. Jeder Speicherblock 180 kann
als eine CLM-Region oder als eine nichtlokale Speicherregion bezeichnet
sein.
-
Bei
dem dargestellten Beispiel ist der Speicherblock 180 eine
lokale Speicherregion und der Speicherblock 180 umfasst
Kohärenzeinheiten 160E...160N.
Dementsprechend umfasst der Eintrag in der MTC 141 für den Speicherblock 180 Zustandsinformationen,
die anzeigen, dass der Speicherblock 180 eine lokale Speicherregion
ist. Die Zustandsinformationen, die durch die MTC 141 geliefert werden,
können
durch die Kohärenzsteuerung 140 und/oder
die Speichersteuerung 142 verwendet werden, um zu bestimmen,
ob jegliche der Kohärenzeinheiten 160 in
einer lokalen Speicherregion umfasst ist (wie z. B. dem dargestellten
Speicherblock 180).
-
Während die
Darstellung Speicherressourcen 150 zeigt, die in eine Mehrzahl
von Kohärenzeinheiten 160 organisiert
sind, kann bei einigen Ausführungsbeispielen
jegliche Anzahl von Kohärenzeinheiten 160 vorgesehen
sein. Während
die Darstellung nur einen Speicherblock 180 explizit zeigt,
kann jegliche Anzahl von Speicherblöcken 180 vorgesehen sein.
-
Ein
Datenfeld 270 (gezeigt in 2B), das Speicherdaten
enthält,
die einer Cacheleitung 220 entsprechen (gezeigt in 2B),
ist in jeder Kohärenzeinheit 160 der
Speicherressourcen 150 umfasst. Ein Verzeichnis 170 ist
ferner in jeder Kohärenzeinheit 160 der
Speicherressourcen 150 umfasst. Jedes Verzeichnis 170 enthält Informationen,
die dem Cache-Speichern bzw. Zwischenspeichern der Speicherressourcen 150 zugeordnet
sind. Ein exemplarisches Verzeichnis 170 kann verfolgen,
wohin die entsprechende Kohärenzeinheit 160 zwischengespeichert
wurde. Beispiele von Informationen in einem Verzeichnis 170 umfassen
das Eigentums-Feld 172 (gezeigt in 2B) für Cacheleitungen,
wie z. B. Daten, die die Kohärenzeinheit 160 einem
bestimmten Cache 130 auf dem System 100 zuordnen.
-
Es
wird darauf hingewiesen, dass das exemplarische Computersystem 100 ausschließlich darstellend
für eine
Rechenumgebung ist, in der die hierin beschriebenen Systeme und
Verfahren arbeiten können,
und die Implementierung der hierin beschriebenen Systeme und Verfahren
in Rechenumgebungen mit unterschiedlichen Komponenten und Konfiguration nicht
einschränkt,
da die erfindungsgemäßen Konzepte,
die hierin beschrieben sind, in verschiedenen Rechenumgebungen mit
verschiedenen Komponenten und Konfigurationen implementiert sein
können.
Die Erfindung ist für
viele unterschiedliche Typen von Prozessoren und Multiprozessorarchitekturen
angepasst.
-
Exemplarische
Cache-Merkmale
-
2A ist
ein Diagramm, das Merkmale eines Caches 130 gemäß einem
Ausführungsbeispiel der
Erfindung darstellt. Bei einem Ausführungsbeispiel kann der Cache 130 als
ein Agent oder als ein Logikblock in einem Chipsatz für das System 100 oder
auf einem CPU-Sockel 110 implementiert sein. Der Cache 130 umfasst
eine Cache-Tabelle 210 mit einer Mehrzahl von Cache-Einträgen 211A, 211B, 211C...211N (jeder
ein Cacheeintrag 211).
-
2B ist
ein Diagramm, das einen darstellenden Cacheeintrag 211 in
einem Cache 130 zum Praktizieren eines Ausführungsbeispiels
der Erfindung zeigt. Jeder Cacheeintrag 211 umfasst ein
Datum mit einer festen Anzahl von Bytes, bekannt als eine Cacheleitung 220,
zum Halten einer Kopie eines Datenfeldes 270 einer ausgewählten Kohärenzeinheit 160,
die in dem Hauptspeicher vorliegt. Der Hauptspeicher umfasst z.
B. Speicherressourcen 150, wie z. B. einen DRAM-Speicher, der jeglicher der
Zellen 100A...100N zugeordnet ist. Bei einigen Ausführungsbeispielen
ist eine Kohärenzeinheit 160 die
kleinste Speichereinheit, die zwischen Hauptspeicher und dem Cache 130 übertragen
werden kann.
-
Bei
einigen Ausführungsbeispielen
umfasst der Cacheeintrag 211 zusätzliche Informationen, die der
Cacheleitung 220 zugeordnet sind. Ein darstellendes Beispiel
des Cacheeintrags 211 umfasst ein Adress-Etikett 230 und
Zustandsinformationen, wie z. B. Zustand 250. Bei einigen
Ausführungsbeispielen
ist das Adress-Etikett 230 ein Wert (z. B. ein Schlitz-Etikett),
der verwendet werden kann, um den Cacheeintrag 211 an ausgewählte Bits
einer Adresse 260 für
die Kohärenzeinheit 160 in
dem Hauptspeicher entsprechend der Cacheleitung 220 anzupassen.
Die ausgewählten
Bits der Adresse 260 müssen nicht
zusammenhängend
sein und sind im Allgemeinen nicht zusammenhängend.
-
Beispiele
von Zustandsinformationen können
Informationen umfassen, wie z. B. ein gültiges Bit, ein Bit mit modifiziertem
Speicherinhalt (dirty bit; schmutziges Bit), und andere Datenelemente,
die in der Lage sind, einen oder mehrere Zustände darzustellen, die der Cacheleitung 220 zugeordnet
sind. Bei einem Ausführungsbeispiel
der Erfindung weist der Zustand 250 einen Wert auf, der
einen modifizierten Zustand, einen exklusiven Zustand, einen gemeinschaftlich
verwendeten Zustand und einen ungültigen Zustand darstellen kann.
-
Bei
einem Ausführungsbeispiel
umfasst das Verzeichnis 170 Verzeichniszustandsinformationen, die
der Kohärenzeinheit 160 zugeordnet
sind. Gemäß einem
Ausführungsbeispiel
der Erfindung umfasst das Verzeichnis 170 einen Verzeichniszustand 171 mit
einem Wert, der einen exklusiven Zustand, einen gemeinschaftlich
verwendeten Zustand und einen ungültigen Zustand darstellen kann.
Bei weiteren Ausführungsbeispielen
umfasst das Verzeichnis 170 ein Eigentumsfeld 172 für die Kohärenzeinheit 160, wie
z. B. Daten, die die Kohärenzeinheit 160 einem bestimmten
Cache 130 auf dem System 100 zuordnen.
-
Exemplarische
Verfahren
-
3 ist
ein Flussdiagramm eines Verfahrens 300 zur Kohärenzverzeichnisaktualisierung,
das kein Ausführungsbeispiel
der vorliegenden Erfindung verwendet, um zu prüfen, ob ein Speicherblock 180 eine
lokale Speicherregion ist.
-
Das
Verfahren 300 beginnt bei Startblock 301 und schreitet
zu Block 310 fort. Bei Block 310 wird eine Speichertransaktion
decodiert, wie z. B. durch die Speichersteuerung 142 oder
die Kohärenzsteuerung 140,
so dass die Speichertransaktion unter Verwendung des Cache 130 ausgeführt werden kann.
Die Speichertransaktion kann von der lokalen CPU 120 empfangen
worden sein; z. B. eine Anforderung durch eine Anwendung, die auf
der CPU 120 läuft.
Bei anderen Ausführungsbeispielen
kann die Speichertransaktion über
die Verbindungsstruktur 185 von einer der Zellen 100A...100N empfangen worden
sein.
-
Beispiele
von Typen von Speichertransaktionen umfassen Lesetransaktionen,
Schreibtransaktionen und ausgestoßene Transaktionen (z. B. saubere Auswürfe einer
Cacheleitung 220). Bei einem Ausführungsbeispiel wird eine Adresse 260 (z.
B. eine physische Adresse) für
einen gewünschten Speicherblock 180 decodiert,
nachdem die Transaktion ausgeführt
werden soll. Bei einigen Ausführungsbeispielen
wird die Adresse 260 durch einen Übersetzungspuffer (translation
lookaside buffer; TLB) von einer virtuellen Adresse in eine physische Adresse übersetzt.
Bei anderen Ausführungsbeispielen
kann die Adresse 260 eine Systemadresse sein, hergeleitet
aus einer physischen Adresse. Bei weiteren Ausführungsbeispielen kann die Adresse 260 eine
Strukturadresse sein. Unter Verwendung der Adresse 260 wird
ein Cacheeintrag 211 ausgewählt.
-
Bei
Block 320 wird eine Prüfung
ausgeführt, wie
z. B. durch die Speichersteuerung 142 oder die Kohärenzsteuerung 140,
basierend auf dem Typ der Speichertransaktion. Wenn der Typ der
Speichertransaktion eine Lesetransaktion ist, fährt das Verfahren 300 mit
Block 330 fort. Wenn der Typ der Speichertransaktion eine
saubere Auswurf-Transaktion ist (clean cast-out), fährt das
Verfahren 300 ebenfalls mit Block 330 fort. Wenn
der Typ der Speichertransaktion eine Schreibtransaktion ist, fährt das
Verfahren 300 mit Block 350 fort.
-
Bei
Block 330 liest die Speichersteuerung 142 oder
die Kohärenzsteuerung 140 Daten
in die Speicherressourcen 150 (z. B. DIMMs, FBD-DIMMs, DRAM)
für die
Kohärenzeinheit 160,
die der Cacheleitung 220 entspricht. Die Kohärenzeinheit 160 umfasst
ein Datenfeld 270 und ein Verzeichnis 170.
-
Bei
Block 340 schreibt die Speichersteuerung 142 oder
die Kohärenzsteuerung 140 Daten
in Speicherressourcen 150 (z. B. DIMMs, FBD-DIMMs, DRAM)
für die
Kohärenzeinheit 160,
die der Cacheleitung 220 entspricht. Die Kohärenzeinheit 160 umfasst
das Datenfeld 270 und das Verzeichnis 170. Wenn
der Typ der Speichertransaktion eine Lesen-Ungültigerklären-Transaktion ist, schreibt
ein exemplarisches Ausführungsbeispiel
den Verzeichniszustand 171 als exklusiv (z. B. „E"), und schreibt das Eigentumsfeld 172 mit
einem Wert, der das Eigentum durch den Cache 130 identifiziert,
der die Lesetransaktion initiiert hat. Wenn der Typ der Speichertransaktion
eine saubere Auswurf-Transaktion ist, schreibt ein exemplarisches
Ausführungsbeispiel
den Verzeichniszustand 171 als ungültig (z. B. „I"), was anzeigt, dass
der Wert des Eigentumsfeldes 172 unwichtig ist. Das Verfahren 300 endet
dann bei Block 399.
-
Bei
Block 350 schreiben die Speichersteuerung 142 oder
die Kohärenzsteuerung 140 für eine Schreibtransaktion
Daten in die Speicherressourcen 150 (z. B. DIMMs, FBD-DIMMs,
DRAM) für
die Kohärenzeinheit 160,
die der Cacheleitung 220 entspricht. Die Kohärenzeinheit 160 umfasst
das Datenfeld 270 und das Verzeichnis 170. Bei
einigen Ausführungsbeispielen
stellen die Speichersteuerung 142 oder die Kohärenzsteuerung 140 die
Zustandsinformationen des Verzeichnisses 170 ein, um einen
ungültigen Zustand
darzustellen (der auch anzeigt, dass der Wert des Eigentumsfeldes 172 unwichtig
ist), bevor das Verzeichnis 170 in die Speicherressourcen 150 als
Teil der Kohärenzeinheit 160 geschrieben
wird. Das Verfahren 300 endet dann bei Block 399.
-
4 ist
ein Flussdiagramm eines exemplarischen Verfahrens 400 zur
Kohärenzverzeichnisaktualisierung
gemäß einem
zweiten Ausführungsbeispiel
der vorliegenden Erfindung.
-
Das
Verfahren 400 beginnt bei Startblock 301 und schreitet
zu Block 310 fort. Block 310 ist wie oben Bezug
nehmend auf 3 beschrieben wurde.
-
Die
Prüfung
bei Block 320 wird ausgeführt, wie oben Bezug nehmend
auf 3 beschrieben wurde. Basierend auf der Prüfung bei
Block 320, fährt das
Verfahren 400 mit Block 330 fort, wenn der Typ der
Speichertransaktion eine Lesetransaktion ist. Wenn der Typ der Speichertransaktion
eine saubere Auswurftransaktion ist, fährt das Verfahren 400 mit Block 370A fort.
Wenn der Typ der Speichertransaktion eine Schreibtransaktion ist,
fährt das
Verfahren 400 mit Block 370B fort.
-
Block 330 ist,
wie oben Bezug nehmend auf 3 beschrieben
wurde. Das Verfahren 400 fährt mit Block 360 fort,
wo eine Prüfung
ausgeführt
wird, um die Richtigkeit des Verzeichnisses 170 zu bestimmen;
z. B. ob das Verzeichnis 170 in einem korrekten Zustand
ist. Die Prüfung
bezieht sich auf die Kombination des Verzeichniszustands 171 und
der Eigentumsinformationen in dem Eigentumsfeld 172 des Verzeichnisses 170.
Die Prüfung
bestimmt, ob das Eigentumsfeld 172 für das Verzeichnis 170,
das in den Speicherressourcen 150 vorliegt, bereits ordnungsgemäß aufzeichnet,
dass der Cache 130, der die Lesetransaktion ausgegeben
hat, der Eigentümer der
Cacheleitung 220 ist. Der Zustand des Verzeichnisses 170 wird
als korrekt betrachtet, wenn er nicht als Ergebnis der aktuellen
Transaktion geändert
werden muss.
-
Wenn
das Verzeichnis 170 in dem korrekten Zustand ist, ist keine
Aktion erforderlich, und das Verfahren 400 endet bei Block 399.
Dementsprechend, bei einem Ausführungsbeispiel
der Erfindung, wenn eine Aktualisierung an dem Verzeichnis 170 zu
keiner Änderung
an dem Zustand des Verzeichnisses 170 führen würde, wird die Verzeichnisaktualisierung
verworfen. Auf diese Weise vermeiden Ausführungsbeispiele der Erfindung
verschwenderische Aktualisierungen des Verzeichnisses 170 für Lesetransaktionen,
die den Zustand des Verzeichnissen 170 in den Speicherressourcen 150 eigentlich
nicht ändern.
Das heißt,
in dem Fall, dass die Kohärenzeinheit 160 in
einem Speicherblock 180 umfasst ist, der eine lokale Speicherregion
ist, wird der vorangehende Cache 130 als Eigentümer der
Cacheleitung 220 gelassen. In diesem Fall ist das Verzeichnis 170 in
dem Hauptspeicher bereits korrekt und muss nicht mit einem Speicherschreibvorgang
aktualisiert werden.
-
Wenn
das Verzeichnis 170 nicht in dem korrekten Zustand ist,
fährt das
Verfahren 400 mit Block 340 fort, der wie oben
Bezug nehmend auf 3 beschrieben wurde erfolgt,
und nachfolgend endet das Verfahren 400 bei Block 399.
-
Wenn
der Typ der Speichertransaktion eine saubere Auswurftransaktion
ist, basierend auf der Prüfung
bei Block 320, dann wird bei Block 370A eine Prüfung ausgeführt, um
zu bestimmen, ob der Speicherblock 180, der die Kohärenzeinheit 160 aufweist,
die der Cacheleitung 220 entspricht, lokal ist; d. h.,
ob die Kohärenzeinheit 160 Teil
eines Speicherblock 180 ist, der eine lokale Speicherregion
ist. Bei einem Ausführungsbeispiel
wird die Prüfung
bei Block 370A durch die MTC 141 ausgeführt.
-
Wenn
der Speicherblock 180, der die Kohärenzeinheit 160 aufweist,
nicht lokal ist, fährt
das Verfahren 400 mit Block 330A fort, der identisch
zu Block 330 ist, der oben Bezug nehmend auf 3 beschrieben
wurde. Das Verfahren 400 fährt mit Block 340 fort,
der so ist, wie oben Bezug nehmend auf 3 beschrieben
wurde. Das Verfahren 400 endet dann bei Block 399.
-
Wenn
der Speicherblock 180, der die Kohärenzeinheit 160 aufweist,
lokal ist, ist keine Aktion erforderlich, und das Verfahren endet
bei Block 399. Auf diese Weise verwerfen Ausführungsbeispiele
der Erfindung die saubere Auswurftransaktion, um ein zyklisches
Betreiben der Speicherressourcen 150 (z. B. DIMMs) zu vermeiden,
um den Zustand des Verzeichnisses 170 zu Ungültig zu ändern. Dementsprechend
vermeidet eine zukünftige
Lesetransaktion aus demselben Cache 130 (oder bei einigen
Ausführungsbeispielen
Prozess-Thread)
in den meisten Fällen
eine Aktualisierung des Verzeichnisses 170. Bei einigen
Ausführungsbeispielen
jedoch wird die Aktualisierung des Verzeichnisses 160 nicht
vermieden, wenn die Transaktion eine Lesen-Ungültigerklären-Transaktion ist, aus demselben
Prozess-Thread, zu einer Cacheleitung 220, die vorangehend
in dem gemeinschaftlich verwendeten Zustand war.
-
Wenn
der Typ der Speichertransaktion eine Schreibtransaktion ist, basierend
auf der Prüfung
bei Block 320, dann wird bei Block 370B eine Prüfung ausgeführt, um
zu bestimmen, ob der Speicherblock 180, der die Kohärenzeinheit 160 aufweist,
die der Cacheleitung 220 entspricht, lokal ist; d. h.,
ob die Kohärenzeinheit 160 Teil
eines Speicherblocks 180 ist, der eine lokale Speicherregion
ist. Bei einem Ausführungsbeispiel
wird die Prüfung
bei Block 370A durch die MTC 141 ausgeführt.
-
Wenn
der Speicherblock 180, der die Kohärenzeinheit 160 aufweist,
nicht lokal ist, fährt
das Verfahren 400 mit Block 350 fort, der ist,
wie oben Bezug nehmend auf 3 beschrieben
wurde. Das Verfahren 400 endet dann bei Block 399.
-
Wenn
der Speicherblock 180, der die Kohärenzeinheit 160 aufweist,
lokal ist, fährt
das Verfahren 400 mit Block 355 fort. Bei Block 355 schreibt
die Speichersteuerung 142 oder die Kohärenzsteuerung 140 für eine Schreibtransaktion
Daten in die Speicherressourcen 150 (z. B. DIMMs, FBD DIMMs, DRAM)
für die
Kohärenzeinheit 160,
die der Cacheleitung 220 entspricht. Die Kohärenzeinheit 160 umfasst
das Datenfeld 270 und das Verzeichnis 170. Bei einem
exemplarischen Ausführungsbeispiel
stellt die Speichersteuerung 142 oder die Kohärenzsteuerung 140 den
Verzeichniszustand 171 des Verzeichnisses 170 ein,
um einen exklusiven Zustand darzustellen, vor dem Schreiben des
Verzeichnisses 170 in die Speicherressourcen 150 als
Teil der Kohärenzeinheit 160.
Bei einem weiteren Ausführungsbeispiel
aktualisiert die Speichersteuerung 142 oder die Kohärenzsteuerung 140 die
Informationen in dem Eigentumsfeld 172 des Verzeichnisses 170 derart,
dass der Cache 130, der die Schreibtransaktion initiiert,
exklusiver Eigentümer
der Kohärenzeinheit 160 ist.
Auf diese Weise stellen Ausführungsbeispiele
der Erfindung den exklusiven Zustand für eine explizite Zurückschreibtransaktion
zu den Speicherressourcen 150 für eine lokale Speicherregion
ein, die den Speicherblock 180 umfasst, wodurch einer zukünftigen
Lesetransaktion aus demselben Cache 130 ermöglicht wird
(oder bei einigen Ausführungsbeispielen
dem Prozess-Thread), das Aktualisieren des Verzeichnisses 170 zu
vermeiden.
-
Bei
einem anderen Ausführungsbeispiel
wird das Konzept eines voreingestellten Eigentümers unterstützt. Der
MTC 141 ist mit voreingestellten Eigentümerinformationen für jeden
Eintrag programmiert, der sich auf einen Speicherblock 180 bezieht.
Bei dem Verarbeitungsschritt von Block 355 aktualisiert die
Speichersteuerung 142 oder die Kohärenzsteuerung 140 das
Eigentumsfeld 172 des Verzeichnisses 170 und stellt
die Zustandsinformationen 171 des Verzeichnisses 170 auf
exklusiv ein, derart, dass die voreingestellten Eigentumsinformationen
von der MTC 141 in dem Verzeichnis 170 als exklusiver
Eigentümer
der Kohärenzeinheit 160 aufgezeichnet werden.
Auf diese Weise sind Ausführungsbeispiele der
Erfindung in der Lage, den exklusiven Zustand für eine explizite Zurückschreibtransaktion
zu den Speicherressourcen 150 für eine lokale Speicherregion einzustellen,
die den Speicherblock 180 umfasst, wodurch eine zukünftige Lesetransaktion
aus dem Cache ermöglicht
wird (oder bei einigen Ausführungsbeispielen
dem Prozess-Thread), der der voreingestellte Eigentümer ist,
um ein Aktualisieren des Verzeichnisses 170 zu vermeiden.
Das Verfahren 400 endet dann bei Block 399.
-
Obwohl
exemplarische Implementierungen der Erfindung oben detailliert beschrieben
wurden, werden Fachleute auf dem Gebiet ohne weiteres erkennen,
dass viele zusätzlich
Modifikationen bei den exemplarischen Ausführungsbeispielen möglich sind,
ohne materiell von den neuen Lehren und Vorteilen der Erfindung
abzuweichen. Dementsprechend sollen diese und alle derartigen Modifikationen
in dem Schutzbereich dieser Erfindung umfasst sein. Die Erfindung
kann durch die nachfolgenden, exemplarischen Ansprüche besser
definiert werden.