-
Diese
Erfindung bezieht sich auf ein Verfahren zur Aufrechterhaltung einer
Kohärenz
für ein
Multi-Prozessor-System.
-
Die
meisten Computersysteme verwenden eine Mehrebenenhierarchie von
Speichersystemen mit relativ schnellen, teueren, Speichern mit begrenzter
Kapazität
auf der höchsten
Ebene der Hierarchie fortschreitend zu relativ langsamen, kostengünstigen Speichern
höherer
Kapazität
auf der untersten Ebene der Hierarchie. Typischerweise umfaßt die Hierarchie
einen kleinen, schnellen Speicher, der als ein Cache bezeichnet
wird, und der entweder physisch in einer integrierten Schaltung
eines Prozessors integriert ist oder für eine Schnelligkeit physisch
nahe an dem Prozessor angeordnet ist. Es können getrennte Befehls-Caches
und Daten-Caches existieren. Ebenso können mehrere Ebenen von Caches
existieren.
-
Die
minimale Speichermenge, die zwischen einem Cache und einer nächsttieferen
Ebene der Speicherhierarchie transferiert werden kann, wird als Zeile,
Block oder Seite bezeichnet. In dem vorliegenden Patentdokument
wird der Begriff "Zeile" verwendet.
-
Bei
den meisten Mehrebenen-Caches besitzt jede Cache-Ebene eine Kopie
einer jeder Speicherzeile, die sich in jeder, in der Hierarchie
höheren Cache-Ebene
befindet, eine Eigenschaft, die als Implikation (bzw. Inklusion)
bezeichnet wird. Beispielsweise befindet sich in einem Implikation-Zwei-Ebenen-Cache-System
jeder Eintrag in dem Primär-Cache
auch in dem Sekundär-Cache.
Wird eine Zeile von einem Cache einer oberen Ebene geräumt, so
ist es erlaubt, daß die
Zeile in Caches unterer Ebenen verbleibt. Wird eine Zeile von einem
Cache einer unteren Ebene geräumt,
so muß umgekehrt, um
eine Kohärenz
aufrecht zu erhalten, der Cache einer unteren Ebene eine Bus-Transaktion
ausgeben, die als Zurückungültigmachungs-Transaktion
bezeichnet wird, um sämtliche
Kopien der geräumten
Zeile aus oberen Ebenen der Cache-Hierarchie zu räumen. Zurückungültigmachungs-Transaktionen
treten häufig
auf und haben aufgrund eines erhöhten
Bus-Gebrauchs zwischen den Caches und einem erhöhten Bus-Überwachungs-Verkehr (Abhör-Verkehr)
einen wesentlichen Einfluß auf
das Gesamtverhalten. Es besteht ein Bedarf, die Anzahl der Zurückungültigmachungs-Transaktionen
zu reduzieren, um das Verhalten zu verbessern.
-
Viele
Computersysteme verwenden mehrere Prozessoren, von denen jeder mehrere
Ebenen von Caches besitzen kann. Alle Prozessoren und Caches können einen
gemeinsamen Hauptspeicher verwenden. Eine bestimmte Zeile kann gleichzeitig
in einem gemeinsam verwendeten Speicher und in den Cache-Hierarchien für mehrere
Prozessoren existieren. Alle Kopien einer Zeile in den Caches müssen identisch
sein, eine Eigenschaft, die als eine Kohärenz bezeichnet wird. Die Kopie
einer Zeile in einem gemeinsam verwendeten Speicher kann "abgestanden" (nicht aktualisiert)
sein. Ändert
ein beliebiger Prozessor den Inhalt einer Zeile, dann ist nur die
eine geänderte
Kopie gültig,
während
alle anderen Kopien daraufhin aktualisiert oder ungültig gemacht
werden müssen.
Die Protokolle zum Aufrechterhalten einer Kohärenz für mehrere Prozessoren werden
als Cache-Kohärenzprotokolle
bezeichnet. Bei einigen Protokollen wird der Status einer Zeile
eines physischen Speichers an einem Ort gehalten, der als das Verzeichnis
bezeichnet wird. Bei anderen Protokollen besitzt jeder Cache, der
eine Kopie einer Zeile eines physischen Speichers besitzt, ferner
eine Kopie des Gemeinsamverwendungsstatus der Zeile. Wenn kein zentralisierter
Zustand gehalten wird, überwachen alle
Cache-Überwachungseinheiten
einen gemeinsam verwendeten Bus oder hören denselben ab, um zu bestimmen,
ob sie im Besitz einer Kopie einer Zeile sind, die auf dem Bus angefordert
wird, oder nicht. Die vorliegende Erfindung ist für jedes
Mehr ebenen-Cache-System relevant, jedoch ist es im besonderen für Mehrprozessorsysteme
in einem auf Abhören
basierenden System, bei denen jeder Prozessor eine Hierarchie von
Caches, die alle einen Hauptspeicher gemeinsam verwenden, relevant.
-
1 zeigt ein Zustandsdiagramm
als ein Beispiel eines bekannten Mehrprozessor-Cache-Kohärenzprotokolls
bei einem auf Abhören
basierenden System. 1 zeigt
vier mögliche
Zustände
für jede Zeile
in einem Cache. Bevor Zeilen in dem Cache plaziert werden, sind
alle Einträge
in einem Vorgabezustand, der als "ungültig" (100) bezeichnet
wird. Wird eine Nicht-Cache-gespeicherte physikalische Zeile in
dem Cache plaziert, ändert
sich der Eintragungszustand in dem Cache von ungültig zu "exklusiv" (102). Das Wort "exklusiv" bedeutet, daß exakt eine
Cache-Hierarchie eine Kopie der Zeile besitzt. Ist eine Zeile in
einem Exklusiv-Zustand in einer Cache-Hierarchie für einen
ersten Prozessor und fordert ein zweiter Prozessor die gleiche Zeile
an, wird die Zeile in zwei Cache-Hierarchien kopiert, und der Eintragungszustand
in jedem Cache wird auf "gemeinsam
verwendet" ("shared") (104)
eingestellt. Wird eine Zeile in einem Cache modifiziert, kann dieselbe ferner
sofort in einem gemeinsam verwendeten Speicher modifiziert werden
(was als Durchschreiben bezeichnet wird). Alternativ kann ein Cache
eine modifizierte Zeile in einen gemeinsam verwendeten Speicher
nur schreiben, wenn die modifizierte Zeile in dem Cache ungültig gemacht
oder ersetzt wird (was als Zurückschreiben
bezeichnet wird). In 1 sei angenommen,
daß der
Cache ein Zurückschreibe-Cache
ist, weshalb folglich der Eintragungszustand in dem Cache auf "modifiziert" (106) geändert wird,
wenn eine Zeile in dem Cache modifiziert wird. Das Protokoll von 1 wird als ein MESI-Protokoll bezeichnet,
was sich auf die ersten vier Buchstaben des englischsprachigen Ausdrucks
für jeden
der vier Zustände
(modified, exclusive, shared, invalid) bezieht.
-
Bei
dem Protokoll von 1 ist
der modifizierte Zustand (106) tatsächlich ein exklusiv-modifizierter
Zustand, was bedeutet, daß nur
eine Cache-Hierarchie in dem System eine Kopie der modifizierten
Zeile besitzt. Manche Systeme fügen
einen zusätzlichen
modifizierten Zustand hinzu, um zu ermöglichen, daß mehrere Caches eine Kopie
der modifizierten Daten besitzen. 2 zeigt
ein bekanntes Protokoll, bei dem ein zusätzlicher Zustand hinzugefügt wurde,
der als "zugehörig" (208) bezeichnet
ist. Zustände 200, 202 und 206 in 2 haben die gleiche Funktion
wie die identisch benannten Zustände von 1. Im Gegensatz dazu können bei
dem Protokoll von 2 andere
Cache-Hierarchien Kopien einer modifizierten Zeile in dem Gemeinsam-Verwendet-Zustand
(204) besitzen, jedoch nur eine Cache-Hierarchie kann eine
modifizierte Zeile in einem Zugehörig-Zustand (208)
besitzen. Nur der eine Cache, der eine modifizierte Zeile in dem
Zugehörig-Zustand
besitzt, kann die modifizierte Zeile zurück in einen gemeinsam verwendeten
Speicher schreiben.
-
Die
US-A-5,671,391 betrifft
ein Mehrebenen-Cache-Speichersystem, welches ein Kohärenzprotokoll
umfaßt,
das vermeidet, daß mehr
als eine Modifikation von Daten, die an mehreren Orten gespeichert
sind, durchgeführt
wird. Bei diesem Protokoll wird der "Exklusiv"-Zustand durch einen neuen Zustand ersetzt,
der als "letzter
Zustand" (latest)
bezeichnet wird. Dieser "latest"-Zustand ist der
einzige Zustand, in dem das Rückkopieren
nicht zu einem höherstufigen
Cache-Speicher weitergegeben wird. Der Cache-Speicher, der die Zeile
im "latest"-Zustand enthält, ist
der Speicher an einer höchsten Ebene
mit einer Kopie dieser Zeile. Um den "latest"-Zustands zu erhalten, werden Daten
an einen Cache-Speicher einer höheren
Ebene modifiziert und zurück
zu einem Cache-Speicher bei einer niedrigeren Ebene kopiert. Die
Hierachie wird hierdurch nach oben abgeschottet.
-
Es
ist die Aufgabe der vorliegenden Erfindung, ein Verfahren zur Aufrechterhaltung
einer Kohärenz
für ein
Multi-Prozessor-System mit einem hierarchischen Cache-Speicher-System
zu schaffen, das bei der Räumung
eines sauberen Eintrags in einem Cache höherer Ordnung effizient arbeitet.
-
Dies
Aufgabe wird durch ein Verfahren nach Anspruch 1 gelöst.
-
Neue
zusätzliche
Cache-Kohärenzzustände, die
anzeigen, daß eine
Zeile nicht in höheren
Ebenen der Cache-Hierarchie Cache-gespeichert ist, sind vorgesehen,
weshalb keine Zurückungültigmachungs-Transaktion
benötigt
wird, wenn die Zeile geräumt
wird. Ein neuer Zustand wird als Mu, was für modifiziert und Nicht-Cache-gespeichert
(uncached) steht, bezeichnet, was bedeutet, daß die modifizierte Zeile nicht
in einer höheren
Ebene der Cache-Hierarchie cache-gespeichert ist. Gleichartig dazu
können Zustände mit
Su (gemeinsam verwendet und nicht-cache-gespeichert) und Eu (exklusiv
und Nicht-Cache-gespeichert) vorgesehen sein.
-
Den
Mu-Zustand betreffend horcht das System Räumungen von oberen Ebenen der
Cache-Hierarchie ab. Spezifischer wird jedes Zurückschreiben von einem Cache
einer oberen Ebene durch einen Cache einer unteren Ebene geschrieben.
Beim Empfangen eines Zurückschreibens
von einer unteren Ebene ändert
der Cache einer oberen Ebene den Zustand der relevanten Eintragung
in Mu um. Wird eine Zeile, die einen Zustand mit Mu besitzt, geräumt, so wird
keine Zurückungültigmachungs-Transaktion
erzeugt. Wird eine Zeile in dem Mu-Zustand nachfolgend gelesen,
so wird der Zustand auf M (modifiziert) geschaltet.
-
Su-
und Eu-Zustände
können
immer dann vorgesehen sein, wenn ein System einen Hinweis liefert,
daß eine
Zeile nicht in höheren
Ebenen der Cache-Hierarchie Cache-gespeichert ist. Beispielsweise
können
Su- und Eu-Zustände
vorgesehen sein, wenn ein System eine Transaktion liefert, um einen Cache
einer unteren Ebene oder ein Verzeichnis zu informieren, wenn eine
saubere Zeile von einem Cache einer oberen Ebene verschoben wurde.
-
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend unter Bezugnahme auf
die beiliegenden Zeichnungen näher
erläutert.
Es zeigen:
-
1 ein Zustandsdiagramm eines
bekannten Cache-Kohärenzprotokolls;
-
2 ein Zustandsdiagramm einer
bekannten Variation des Protokolls von 1;
-
3 ein Blockdiagramm eines
Beispiel-Computersystems, das zur Verwendung mit der Erfindung geeignet
ist;
-
4 ein Zustandsdiagramm eines
Cache-Kohärenzprotokolls
gemäß einem
Beispiel;
-
5 ein Zustandsdiagramm eines
Cache-Kohärenzprotokolls
gemäß einem
weiteren Beispiel; und
-
6 ein Zustandsdiagramm eines
Cache-Kohärenzprotokolls
in Übereinstimmung
mit einem Ausführungsbeispiel
der Erfindung;
-
Die
Erfindung ist bezüglich
jedes Mehrebenen-Cache-Systems anwendbar, sie ist jedoch besonders
vorteilhaft bei großen
Mehrprozessorsystemen. 3 zeigt
ein Beispiel eines Computersystems, bei dem die vorliegenden Erfindung
besonders anwendbar ist. In 3 besitzt
ein Computersystem N Prozessoren, von denen zwei gezeigt sind (300, 302).
Jeder Prozessor besitzt drei Ebenen von internen Caches (304, 306, 308 und 310, 312, 314)
und einen vierten externen Cache (316, 318). Alle
Prozessoren und deren zugeordnete Cache-Hierarchien verwenden gemeinsam einen
Systembus 320 und einen Systemspeicher 322. Ein
Bus 324 veranschaulicht, daß mehrere Prozessoren einen
externen Cache, beispielsweise den Cache 316, gemeinsam
verwenden können.
Die Erfindung befaßt
sich mit einem Cache-Kohärenz-Protokoll,
das für
jeden Cache einer unteren Ebene, beispielsweise für die zwei L3-Caches
(316 und 318) in 3,
verwendet werden kann. Bei einem System gemäß der Erfindung erfaßt ein Cache
einer unteren Ebene, beispielsweise der Cache 316, wenn
eine Zeile von einem Cache einer höheren Ebene geräumt wird.
Wurde eine Zeile von einem Cache einer höheren Ebene geräumt, so besteht
daraufhin kein Bedarf nach einer Zurückungültigmachungs-Transaktion, wenn
die Zeile von dem Cache einer unteren Ebene geräumt wird. Folglich umfaßt das Kohärenzprotokoll
eines Caches einer unteren Ebene einen zusätzlichen Zustand, der anzeigt,
daß eine
Zeile nicht in höheren
Ebenen Cache-gespeichert ist, weshalb eine Zurückungültigmachungs-Transaktion nicht
benötigt
wird, wenn dieselbe geräumt
wird. Eine Verringerung der Zurückungültigmachungs-Transaktionen
verbessert das Verhalten.
-
Einige
Computersysteme können
ein Verzeichnis anstelle eines Caches einer unteren Ebene verwenden.
Ein Verzeichnis ist ein Satz von Etiketten (tags) für alle der
gemeinsam verwendeten Systemspeicher. Die Etiketten umfassen Zustands-Bits, um Zustände, wie
z. B. "modifiziert", "exklusiv", "gemeinsam-verwendet" und "ungültig", anzuzeigen. Die
Etiketten können
auch anzeigen, welche Cachespeicher Kopien einer Zeile besitzen.
Für die
Zwecke der Erfindung stellt ein Verzeichnis einen Cache dar (der sehr
groß sein
kann), und die Erfindung ist genauso auf Zustände innerhalb eines Verzeichnisses
anwendbar.
-
4 zeigt ein Beispiel eines
Cache-Kohärenzprotokolls. 4 zeigt einen zusätzlichen
Zustand (Modifiziert Nicht-Cache-gespeichert), Mu (408),
der zu dem bekannten Protokoll von 1 hinzugefügt wurde.
Der zusätzliche
Zustand kann auch zu dem bekannten Protokoll von 2 hinzugefügt werden, oder allgemein zu
jedem Protokoll, das einen M-Zustand (Modifiziert-Zustand) besitzt.
Ist eine Zeile in einem Mu-Zustand und wird die Zeile geräumt, so
wird keine Zurückungültigmachungs-Transaktion
erzeugt. Ist beispielsweise bei dem System von 3 eine Zeile in einem Cache 316 in
einem Mu-Zustand und wird die Zeile von dem Lache 316 geräumt, so
braucht der Cache 316 keine Transaktion auszugeben, um
die Zeile von den Caches 304, 306, oder 308 zu
räumen.
-
Erfaßt bei dem
Protokoll, das in 4 gezeigt
ist, ein Cache einer unteren Ebene eine Zurückschreib-Transaktion von einem
Cache einer höheren Ebene
in der gleichen Hierarchie, so wird der Zustand der Zeile, die von
dem Cache einer höheren Ebene
geräumt
wurde, in dem Cache einer unteren Ebene von M (406) auf
Mu (408) geändert.
Es sei für einen
Prozessor 0 (300) in 3 beispielsweise
angenommen, daß der
Cache L2 (308) eine Zeile räumt. L2 schreibt daraufhin
in einen Cache einer unteren Ebene (L3) oder in den gemeinsam verwendeten
Speicher (322) zurück.
Der Cache L3 (316) erfaßt die Zurückschreib-Transaktion und das
entsprechende Etikett oder Adresse, und der Zustand des entsprechenden
Eintrags in L3 (316) wird auf Mu (4, 408) geschaltet. Wird eine Zeile,
die einen Zustand Mu besitzt, gelesen, so wird der Zustand auf M
(406) geschaltet. Ist beispielsweise in 3 eine Zeile in dem Cache 316 in
einem Zustand Mu und wird die Zeile durch den Prozessor 0 (300)
gelesen, so wird der Zustand der Zeile in dem Cache 316 auf
M (406) geschaltet.
-
Bei
dem System von 4 verwendet
der Cache einer unteren Ebene eine Zurückschreib-Transaktion, um zu
erfahren, wenn eine modifizierte Zeile von einem Cache einer höheren Ebene
geräumt
wird. Liefert das System eine Transaktion oder einen anderen Hinweis
zum Anzeigen, daß eine saubere
Zeile von einem Cache einer oberen Ebene geräumt wurde, beispielsweise eine
explizite Zurückschreib/Aktualisierungs-Transaktion,
dann können zusätzliche
Zustände
für "gemeinsam verwendet
und Nicht-Cache-gespeichert" und
für "exklusiv und Nicht-Cache-gespeichert" hinzugefügt werden. 5 zeigt einen zusätzlichen
Zustand (gemeinsam verwendet nicht-Cachegespeichert), Su (508),
der zu dem bekannten Protokoll von 1 hinzugefügt wurde. 6 zeigt einen zusätzlichen
Zustand (exklusiv nicht-cache-gespeichert), Eu (608), der
dem Protokoll nach Stand der Technik von 1 hinzugefügt wurde. Gemäß 5 und 6 bewirkt eine Erfassung einer spezifischen
Transaktion oder eines Hinweises, der eine Räumung einer sauberen Zeile
anzeigt, einen Übergang
von dem Gemeinsam-Verwendet-Zustand 504 in den Su-Zustand 508 oder
einen Übergang
von dem Exklusiv-Zustand 602 in den Eu-Zustand 608.
-
Ist
eine Zeile in dem Cache 316 (3)
in den Zustänen
Su (5, 508)
oder Eu (6, 608), so
bewirkt ein nachfolgendes Lesen der Zeile durch den Prozessor 300,
daß die
Zeile auf "Gemeinsam-verwendet" bzw. "Exklusiv" übergeht. Ist eine Zeile in
dem Su- oder Eu-Zustand in dem Cache 316, so bewirkt ein
Beschreiben der Zeile durch den Prozessor 300, daß die Zeile
in den Modifiziert-Zustand (406, 606) in dem Cache 316 übergeht.
Wenn eine Zeile in dem Cache 316 in dem Su- oder dem Eu-Zustand
ist und der Prozessor 302 ein Lesen für die Zeile ausgibt, wird das
Lesen auf dem Bus 320 gesendet. Die Abhöroperation, die durch den Cache 316 ausgeführt wird,
bewirkt, daß die
Zeile einen Übergang
zu "Gemeinsam-verwendet" (504, 604)
durchführt.
Es besteht kein Bedarf danach, daß eine Ungültigmachungs-Transaktion zu
den Caches 304, 306 und 308 gesendet
wird. Ist eine Zeile in dem Cache 316 in dem Su- oder dem
Eu-Zustand und wird eine Ungültigmachung
für die
Zeile oder ein Schreiben in die Zeile auf dem Bus 320 abgehört, so wird die
Zeile in den "Ungültig"-Zustand (500, 600)
in dem Cache 316 übergehen,
und es besteht kein Bedarf danach, daß eine Ungültigmachungs-Transaktion zu den
Caches 304, 306 und 308 gesendet wird.
-
Die
zusätzlichen
Zustände
Mu, Su und Eu, die in den 4, 5 bzw. 6 gezeigt sind, schließen sich
nicht gegenseitig aus. Jede Kombination der zusätzlichen Zustände kann
nach Eignung innerhalb einem Systems implementiert werden.