-
Die vorliegende Erfindung betrifft
ein Datenverwaltungsverfahren für
ein Distributed Shared Memory(DSM)-System und insbesondere ein Datenverwaltungsverfahren
für ein
Distributed Shared Memory(DSM)-System mit einem externen Cache (L3-Cache).
-
Aufgrund des zunehmenden Fortschritts
von Wissenschaft und Technologie spielen Mittel zur Verarbeitung
von digitalisierten Informationen eine zunehmend wichtigere Rolle
in unseren täglichen
Leben und Geschäftstätigkeiten.
Demzufolge ist die Datenverarbeitungsmenge zu riesig, um unter Verwendung
eines einfachen Datenverarbeitungsgerätes, wie zum Beispiel eines
Computersystems mit einem einzigen Prozessor und einem lokalen Speicher, durchgeführt zu werden.
Zur effizienten Handhabung von großen Datenmengen ist ein Mehrprozessorsystem
zur Lösung
dieses Problems entwickelt worden.
-
Bisher sind zwei Typen von Paralleldatenverarbeitungssystemen
verwendet worden. Einer ist das fest gekoppelte Paralleldatenverarbeitungssystem und
das andere ist das lose gekoppelte Paralleldatenverarbeitungssytem.
-
Das fest gekoppelte Paralleldatenverarbeitungssystem
enthält
mehrere Zentralverarbeitungseinheiten (Central Processing Units
(CPU)) und einen von allen CPUs zugänglichen Speicher. Diese Architektur
ist aus einem Einzel-CPU-System derart erweitert worden, daß sie ein
relativ einfaches Design aufweist. Ein derartiges System weist jedoch
eine innewohnende Beschränkung
auf. Da die Vielzahl von CPUs auf den Speicher über einen einzigen gemeinsamen
Bus zugreifen, kann die gesamte Größenordnung des Systems nicht
zu groß sein.
Abgesehen davon, wird die große
Anzahl von CPUs dem Bus eine schwere Last auferlegen.
-
Andererseits stellt das lose gekoppelte
Paralleldatenverarbeitungssystem ein System dar, das aus mehreren über ein
Hochgeschwindigkeitsnetzwerk untereinander verbundenen Computern
besteht. Über
eine feingestaltete topologische Architektur kann das lose gekoppelte
Paralleldatenverarbeitungssystem, im Vergleich mit dem fest gekoppelten Paralleldatenverarbeitungssystem,
recht erweiterbar sein. Mit anderen Worten kann eine große Anzahl von
Prozessoren in dem System enthalten sein. Da die Kommunikation des
gesamten Systems über
ein Netzwerk durchgeführt
wird, würde
die Komplexität der
Architektur viel schwieriger als das fest gekoppelte Paralleldatenverarbeitungssytem
zum Erzielen von Höchstleistung
sein.
-
Zur Lösung der Probleme der obengenannten
Systeme ist ein Verarbeitungssystem, umfassend einen Distributed
Shared Memory (DSM) für
den Zweck der parallelen Datenverarbeitung und schnellen gemeinsamen
Datennutzung für
einen fernen Knoten zum Zugreifen auf einen lokalen Speicher entwickelt
worden. Das DSM-System weist die Vorteile sowohl des fest als auch
des lose gekoppelten Paralleldatenverarbeitungssystems auf. Das
heißt, daß das DSM-System
einfach und erweiterbar ist. Seit 1980 sind mehrere DSM-Systeme
genutzt worden. Ein Beispiel stellt die cache coherency Non-Uniform
Memory Access (ccNUMA)-Architektur
dar.
-
Es soll auf 1 Bezug genommen werden, die ein Blockdiagramm
zeigt, das ein herkömmliches DSM-System
vom ccNUMA-Typ darstellt. Das DSM-System 10 enthält vier
durch ein Netzwerk 15 miteinander verbundene Knoten 11–14.
Wie gezeigt, enthalten die Knoten 11–14 jeweilige Prozessoren 111, 112, 121, 122, 131, 132, 141, 142,
Speichersteuerchips 113, 123, 133, 143 zur
I/O-Steuerung und zum Speicherzugriff, lokale Speicher 1131, 1231, 1331, 1431,
DSM-Controller 114, 124, 134, 144,
externe Caches oder L3-Caches 1141, 1241, 1341, 1441,
Systembusse 115, 125, 135, 145 und
interne Busse 116, 126, 136, 146.
Jeder lokale Speicher 1131, 1231, 1331, 1431 ist
in mehrere lokale Memory-Lines zur separaten Speicherung von Daten
unterteilt, die lokale Primärdaten
sind, die zu seinem eigenen Knoten gehören. In ähnlicher Weise ist jeder Cache 1141, 1241, 1341, 1441.
in mehrere Cache-Lines zur separaten Speicherung von Cachedaten
unterteilt, die fremde Daten darstellen, die zu lokalen Speichern
von anderen Knoten gehören.
Das Vorhandensein der Caches dient dazu, Zeit für den Zugriff auf Daten aus
den lokalen Speichern von anderen Knoten zu sparen.
-
Jeder DSM-Controller 114, 124, 134, 144 verwaltet
ein darin gespeichertes Memory coherency Directory (nicht gezeigt),
um die Zustände
aller lokaler Memory-Lines zu erfassen. Wenn irgendeiner der Knoten
Daten aus einer speziellen lokalen Memory-Line lesen will, wird
der Lesevorgang von dem DSM-Controller entsprechend dem Memory coherency
Directory geleitet. Der DSM-Controller verwaltet auch ein darin
gespeichertes cache coherency directory (nicht gezeigt), um die
Zustände
aller Cache-Lines zu erfassen. Wenn irgendeiner der Knoten Daten
aus einer speziellen Cache-Line lesen will, wird der Lesevorgang
von dem DSM-Controller entsprechend dem cache coherency directory
geleitet.
-
Da die DSM-Controller aller Knoten
miteinander über
das Netzwerk 15 kommunizieren, würde ein Netzwerkkommunikationsprotokoll,
wie zum Beispiel TCP/IP, als Datenübertragungsformat für Zwischenkommunikation
verwendet werden.
-
Die Zustände jeder L3-Cache-Line, die
von dem cache coherency directory angezeigt werden, enthalten CLEAN-,
FRESH-, DIRTY-, VOID-, IDLE- und STALE-Zustände. Die Bedeutungen dieser
Zustände
werden wie folgt beschrieben:
CLEAN: Die Daten in der Cache-Line
des lokalen Knotens existieren auch in einem fernen Knoten, der als
ein Home-Knoten bezeichnet wird, und die Daten sind nicht von einem
bestimmten Prozessor des lokalen Knotens modifiziert worden, obwohl
der bestimmte Prozessor die Daten ausschließlich hält;
FRESH: Die Daten in
der Cache-Line sind von keinem der Knoten modifiziert worden und
werden von allen Knoten gemeinsam genutzt;
DIRTY: Die Daten
in der Cache-Line sind modifiziert worden und werden exklusiv von
einem bestimmten Prozessor des lokalen Knotens gehalten und sind
somit anders als die vorhandenen in dem Home-Knoten geworden;
VOID:
Die Daten in der Cache-Line sind ungültig gemacht worden und neue
Daten dürfen
in dieselbe Position des L3-Cache geschrieben werden;
IDLE:
Die Cache-Line befindet sich in einem Übergangszustand und wartet
auf den Empfang von neuen Daten; und
STALE: Die Cache-Line
befindet sich in einem Übergangszustand
und wartet auf das Herauslöschen
von gespeicherten Daten.
-
Die Datenwartung des L3-Cache ist,
obwohl sie normalerweise entsprechend den obengenannten Zuständen betrieben
wird, möglicherweise
ineffizient, speziell wenn sich die Cache-Line in dem DIRTY-Zustand befindet.
Wie bekannt, werden die Daten in der Cache-Line exklusiv von einem
bestimmten Prozessor des lokalen Knotens in dem DIRTY-Zustand ge halten.
Wenn ein anderer Prozessor des lokalen Knotens auf die Daten in
der Cache-Line zugreifen soll, muß er somit eine weitere Systembustransaktionsanfrage
vorbringen, um auf die Daten von dem bestimmten Prozessor desselben
Knotens zuzugreifen. Demzufolge wird die Belastung des Systembusses
innerhalb des Knotens erhöht
und somit die Systemeffizienz ungünstig beeinflußt.
-
Weiterhin wird das Zugangsverklemmungsproblem,
das wahrscheinlich zwischen irgendwelchen zwei Knoten zur Verarbeitung
von Paralleldaten auftritt, im allgemeinen durch das Betriebssystem (Operation
System (OS)) gelöst.
Wenn sich das Betriebssystem nicht rechtzeitig mit dem Zugangsverklemmungsproblem
aufgrund eines instabilen Zustands desselben oder irgendeines anderen
Faktors befassen kann, hält
das DSM-System möglicherweise
an und beeinflußt
es die Zuverlässigkeit
des DSM-System ungünstig.
-
Somit besteht eine Aufgabe der vorliegenden
Erfindung darin, ein Datenverwaltungsverfahren für ein DSM-System bereitzustellen,
um den Systembustransaktionszweck mit reduzierten Transaktionsanfragen
zu erzielen.
-
Eine weitere Aufgabe der vorliegenden
Erfindung besteht darin, ein Datenverwaltungsverfahen für ein DSM-System
bereitzustellen, um das Zugangsverklemmungsproblem effizient zu
lösen.
-
Die vorliegende Erfindung betrifft
ein Datenverwaltungsverfahren für
ein Distributed Shared Memory DSM)-System. Das DSM-System enthält mindestens
einen ersten und einen zweiten Knoten. Der erste Knoten enthält einen
externen Cache zum Speichern von Daten aus einem lokalen Speicher des
zweiten Knotens und mindestens zwei Prozessoren, die optional auf
die Daten aus dem externen Cache zugreifen.
-
Gemäß einem ersten Aspekt der vorliegenden
Erfindung umfaßt
das Datenverwaltungsverfahren die Schritte: Entscheiden, ob die
Daten, von dem anderen Knoten stammend, von einem ersten bestimmten
einen der mindestens zwei Prozessoren in modifizierte Daten modifiziert
worden sind; Entscheiden, ob ein zweiter bestimmter einer der mindestens zwei
Prozessoren die modifizierten Daten gemeinsam nutzen darf, wenn
die Daten von dem bestimmten Prozessor modifiziert worden sind;
und direktes Abrufen der modifizierten Daten von dem zweiten bestimmten
Prozessor über
einen Bus innerhalb des ersten Knotens, wenn der zweite bestimmte
Prozessor die modifizierten Daten gemeinsam nutzen darf.
-
In einem Beispiel ist jeder der mindestens zwei
Prozessoren mit dem Bus elektrisch verbunden, der vorzugsweise ein
Systembus des ersten Knotens ist, und ruft der zweite bestimmte
Prozessor die modifizierten Daten direkt ab, ohne irgendeine Netzwerktransaktionsanfrage
vorzubringen.
-
In einem Beispiel sind die ersten
und zweiten Knoten über
ein Netzwerk, das unter einem Netzwerkkommunikationsprotokoll, wie
zum Beispiel TCP/IP arbeitet, miteinander verbunden.
-
In einer Ausführungsform wird auf die modifizierten
Daten ausschließlich
von dem ersten bestimmten Prozessor zugegriffen, wenn der zweite
bestimmte Prozessor nicht die modifizierten Daten gemeinsam nutzen
darf.
-
In einer Ausführungsform werden die Entscheideschritte
entsprechend einem cache coherency directory durchgeführt, das
den Zustand einer Cache-Line des externen Cache, wo die Daten gespeichert
sind, aufzeichnet.
-
Vorzugsweise umfaßt das Verfahren außerdem die
Schritte: Entscheiden, ob sich eine Memory-Line des lokalen Speichers
des zweiten Knotens, wo die Daten gespeichert werden, in einem Übergangszustand
befindet, wobei die Daten von dem ersten bestimmten Prozessor modifiziert
werden oder davon darauf zugegriffen wird, um die Cache-Line von
einem ersten Zustand in einen zweiten Zustand umzuschalten; und
Zurückbringen
des Zustands der Cache- Line
von dem zweiten Zustand zum ersten Zustand, wenn sich die Memory-Line
in dem Übergangszustand
befindet.
-
Gemäß einem zweiten Aspekt der
vorliegenden Erfindung umfaßt
das Datenverwaltungsverfahren die Schritte: Entscheiden, ob die
Daten von einem ersten bestimmten einen der mindestens zwei Prozessoren
unter der Bedingung, daß sich
eine Cache-Line des externen Cache, wo die Daten gespeichert sind,
in einem CLEAN-Zustand befindet, modifiziert worden ist; Umschalten
des Zustands der Cache-Line vom CLEAN-Zustand zu entweder DIRTY-SHARED- oder DIRTY-ONLY-Zustand,
wenn die Daten in modifizierte Daten modifiziert worden sind; und
gestatten, daß ein
zweiter bestimmter einer der mindestens zwei Prozessoren die modifizierten
Daten über
einen Bus innerhalb des ersten Knotens direkt abruft, wenn sich
die Cache-Line in dem DIRTY-SHARED-Zustand befindet. Zum Beispiel
werden die CLEAN-, DIRTY-SHARED- und DIRTY-ONLY-Zustände der
Cache-Line in einem cache coherency directory aufgezeichnet.
-
In einer Ausführungsform wird auf die modifizierten
Daten exklusiv von dem ersten bestimmten Prozessor zugegriffen,
wenn sich die Cache-Line in dem DIRTY-ONLY-Zustand befindet.
-
Vorzugsweise umfaßt das Verfahren außerdem die
Schritte: Entscheiden, ob sich eine Memory-Line des lokalen Speichers
des zweiten Knotens, wo die Daten gespeichert sind, in einem Übergangszustand
befindet, wobei die Daten von dem ersten bestimmten Prozessor modifiziert
werden oder davon darauf zugegriffen wird, um die Cache-Line von einem
ersten Zustand zu einem zweiten Zustand umzuschalten; und Zurückbringen
des Zustands der Cache-Line
vom zweiten Zustand zum ersten Zustand, wenn sich die Memory-Line
in dem Übergangszustand
befindet.
-
Zum Beispiel ist der erste Zustand
ein VOID-Zustand und ist der zweite Zustand ein IDLE-Zustand.
-
Alternativ ist der erste Zustand
ein FRESH-Zustand und ist der zweite Zustand ein IDLE-Zustand.
-
In einer Ausführungsform wird der Zustand der
Cache-Line vom zweiten Zustand zum ersten Zustand als Antwort auf
einen von dem zweiten Knoten vorgebrachten Wiederholbefehl zurückgebracht.
-
In einer Ausführungsform wird der Schritt
des Entscheidens über
den Zustand der Memory-Line entsprechend
einem local memory cherency directory durchgeführt.
-
Die vorliegende Erfindung kann am
besten durch die folgende Beschreibung unter Bezugnahme auf die
beigefügten
Zeichnungen verstanden werden, in denen:
-
1 ein
schematisches Schaltungsblockdiagramm ist, das ein herkömmliches
Distributed Shared Memory(DSM)-System zeigt;
-
2 ein
Schemadiagramm ist, das zahlreiche Zustände einer L3-Cache-Line als
Antwort auf einen Ortszugriffsbefehl zeigt;
-
3 ein
Schemadiagramm ist, das zahlreiche Zustände einer L3-Cache-Line als
Antwort auf einen Fernzugriffsbefehl zeigt; und
-
4 ein
Schemadiagramm ist, das zahlreiche Zustände einer lokalen Memory-Line
und einer korrespondierenden L3-Cache-Line als Antwort auf einen
Ortszugriffsbefehl, einen Rollout-Befehl und ein mit dem Rollout-Befehl
verbundenes Bestätigungssignal
zeigt; und
-
5 ein
Flußdiagramm
einer Ausführungsform
eines Datenverwaltungsverfahrens gemäß der vorliegenden Erfindung
ist.
-
Die vorliegende Erfindung wird nunmehr spezieller
unter Bezugnahme auf die folgenden Ausführungsformen beschrieben. Es
wird angemerkt, daß die
folgenden Beschreibungen von bevorzugten Ausführungsformen der vorliegenden
Erfindung nur zu Darstellungs- und Beschreibungszwecken präsentiert
werden; sie sollen nicht als vollständig oder auf die offenbarte
genaue Ausführungsform
beschränkt
gedacht sein.
-
Das in 1 gezeigte
DSM-System wird zur Darstellung einer Ausführungsform der vorliegenden Erfindung
verwendet. Die von einem cache coherency directory angezeigten Zustände der
Cache-Line sind jedoch modifiziert, um die im Stand der Technik angetroffenen
Probleme zu lösen.
-
Zum Demonstrieren der Datenübertragung des
vorliegenden DSM-Systems. Der Cache-Zustands-Übergang ist unter Bezugnahme
auf die 2 und 3 als Antwort auf einen jeweiligen
Ortszugriffsbefehl und einen Fernzugriffsbefehl dargestellt.
-
Entsprechend der vorliegenden Erfindung gibt
es sieben mögliche
von dem cache coherency directory angezeigte Zustände für jede der
L3-Cache-Lines, die CLEAN-, FRESH-, DIRTY-ONLY-, DIRTY-SHARED-, VOID-, IDLE- und
STALE-Zustände
einschließen.
Die Bedeutungen dieser Zustände werden
wie folgt beschrieben:
CLEAN: Die Daten in der Cache-Line des
lokalen Knotens existieren auch in einem fernen Knoten, der als
ein Home-Knoten bezeichnet wird, und die Daten sind nicht von einem
bestimmten Prozessor des lokalen Knotens modifiziert worden, obwohl
der bestimmte Prozessor die Daten ausschließlich hält;
FRESH: Die Daten in
der Cache-Line sind von keinem der Knoten modifiziert worden und
werden von allen Knoten gemeinsam genutzt;
DIRTY-ONLY: Die
Daten in der Cache-Line sind modifiziert worden und werden exklusiv
von einem bestimmten Prozessor des lokalen Knotens gehalten und
sind somit anders als die vorhandenen in dem Home-Knoten geworden;
DIRTY-SHARED:
Die Daten in der Cache-Line sind von einem bestimmten Prozessor
des lokalen Knotens modifiziert worden und sind somit anders als
die vorhandenen in dem Home-Knoten
geworden, und die anderen Prozessoren des lokalen Knotens können auf
die modifizierten Daten zugreifen;
VOID: Die Daten in der Cache-Line
sind ungültig
gemacht worden und neue Daten dürfen
in dieselbe Position des L3-Cache geschrieben werden;
IDLE:
Die Cache-Line befindet sich in einem Übergangszustand und wartet
auf den Empfang von neuen Daten; und
STALE: Die Cache-Line
befindet sich in einem Übergangszustand
und wartet auf das Herauslöschen
von gespeicherten Daten.
-
Der von einem lokalen Prozessor über den Systembus
vorgebrachte Ortszugriffsbefehl lautet:
BRL: Der Befehl wird
ausgegeben, um eine gemeinsam genutzte Kopie von speziellen Daten
zu lesen;
BFL(hit#): Der Befehl wird ausgegeben, um eine gemeinsam
genutzte Kopie der speziellen Daten, die in dem lokalen Knoten gespeichert
sind und nicht modifiziert worden sind, zu lesen;
BRL(hitm#):
Der Befehl wird ausgegeben, um eine gemeinsam genutzte Kopie der
speziellen Daten, die in dem lokalen Knoten gespeichert sind und
modifiziert worden sind, zu lesen,
BRIL: Der Befehl wird ausgegeben,
um eine exklusive Kopie der speziellen Daten zu lesen;
BRIL(hit#):
Der Befehl wird ausgegeben, um eine exklusive Kopie der speziellen
Daten, die in dem lokalen Knoten gespeichert sind und nicht modifiziert
worden sind, zu lesen;
BRIL(hitm#): Der Befehl wird ausgegeben,
um eine exklusive Kopie der speziellen Daten, die in dem lokalen
Knoten gespeichert sind und modifiziert worden sind, zu lesen.
-
BIL: Der Befehl wird ausgegeben,
um eine gemeinsam genutzte Kopie der speziellen Daten zu modifizieren
und die speziellen Daten exklusiv zu halten; oder
BWL: Der
Befehl wird ausgegeben, um die speziellen Daten in den Cache zurückzuschreiben.
-
Der von einem fernen Prozessor über den Systembus
vorgebrachte Fernzugriffsbefehl lautet:
LRL: Der Befehl wird
ausgegeben, um eine gemeinsam genutzte Kopie der speziellen Daten
zu lesen;
LRIL: Der Befehl wird ausgegeben, um eine exklusive
Kopie der speziellen Daten zu lesen;
LIL: Der Befehl wird ausgegeben,
um eine gemeinsam genutzte Kopie der speziellen Daten zu modifizieren
und die speziellen Daten exklusiv zu halten;
RTY BOP (BIL):
Der Befehl wird ausgegeben, um den als Antwort auf den BIL-Befehl
erstellten Zustand der Cache-Line in den früheren Zustand zurückzubringen;
oder
RTY BOP (BRL, BRIL): Der Befehl wird ausgegeben, um den
als Antwort auf den BRL- oder
BRIL-Befehl erstellten Zustand der Cache-Line in den früheren Zustand
zurückzubringen.
-
Zusätzlich könnte ein von einem lokalen
Prozessor vorgebrachter Fernzugriffsbefehl an einen fernen Knoten
beteiligt sein. Der Fernzugriffsbefehl lautet:
ROD (Rollout
DIRTY): Der Befehl wird ausgegeben, um den Zustand der lokalen Memory-Line des fernen Knotens,
wo die speziellen Daten gespeichert werden, von GONE in HOME unter
der Bedingung umzuschalten, daß der
Zustand der Cache-Line des lokalen Knotens, wo die Daten gespeichert
werden, sich von CLEAN, DIRTY-SHARED oder DIRTY-ONLY zu STALE geändert hat;
oder
ROF (Rollout FRESH): Der Befehl wird ausgegeben, um den
Zustand der lokalen Memory-Line
des fernen Knotens, wo die speziellen Daten gespeichert werden,
von SHARED in HOME unter der Bedingung umzuschalten, daß sich der
Zustand der Cache-Line des lokalen Knotens, wo die Daten gespeichert
werden, von FRESH zu STALE geändert
hat.
-
Die SHARED- und HOME- sowie GONE- und
WASH-Zustände
stellen Zustände
der lokalen Memory-Line des fernen Knotens auf, die in einem memory
coherency directory aufgezeichnet sind. Die Bedeutungen dieser Zustände werden
wie folgt beschrieben:
HOME: Die Daten aus der lokalen Memory-Line
werden von keinem fernen Knoten gelesen und die letzten Daten in
der lokalen Memory-Line werden in dem lokalen Speicher gespeichert;
SHARED:
Auf den lokalen Speicher wurde von einem fernen Knoten zugegriffen
und die Daten in der lokalen Memory-Line sind von dem fernen Knoten
nicht modifiziert;
GONE: Auf den lokalen Speicher wurde von
einem fernen Knoten zugegriffen und die Daten in der lokalen Memory-Line
wurden von dem fernen Knoten modifiziert; und
WASH: Die Daten
in dem lokalen Speicher wurden von einem fernen Knoten modifiziert
und an den lokalen Knoten gesendet.
-
Nachfolgend wird der Übergang
der Zustände
unter der Annahme, daß der
Knoten 11 ein lokaler Knoten ist und der Knoten 12 ein
ferner Knoten ist, beschrieben. Diesbezüglich ist auf 2 Bezug zu nehmen, die ein Zustandsdiagramm
darstellt, das zahlreiche Zustände
einer L3-Cache-Live als Antwort auf die obengenannten Ortszugriffsbefehle
zeigt. Nehmen wir an, daß spezielle
Daten in dem lokalen Speicher 1231 des fernen Knotens 12 ursprünglich gespeichert
werden und die speziellen Daten in einer Cache-Line des Cache 1141 des
lokalen Knotens 11 über
das Netzwerk 15 als Antwort auf die Anfrage eines speziellen
Prozessors, z. B. 112, des
lokalen Knotens zum Zugreifen auf die Daten gespeichert werden.
Der Knoten 12 wird auch als ein Home-Knoten der Daten bezeichnet.
-
Wenn der Prozessor 112 einen
BRL-Befehl zum Abrufen einer gemeinsam genutzten Kopie der speziellen
Daten vorbringt, ist der BRL-Befehl ein BRL(hit#)-Befehl, wenn die
speziellen Daten bereits in dem Cache 1141 gespeichert
worden sind. Das heißt,
daß sie
sich in einem Cache-hit-Zustand befindet. Somit können die
Daten in der Cache-Line von dem Prozessor 112 direkt gelesen
werden. Wenn die Daten von dem Prozessor 112 exklusiv gehalten
werden, würde
der Zustand der Cache-Line CLEAN sein.
-
Im CLEAN-Zustand, wenn der Prozessor 112 die
exklusive Kopie der Daten in der Cache-Line lesen, aber nicht modifizieren
will, sollte er einen BRIL-Befehl an den Systembus 115 vorbringen.
Da sich die unmodifizierten Daten weiterhin in dem Cache 1141 befinden,
wird ein Cache-hit-Zustand weiterhin angezeigt, und ist der BRIL-Befehl
ein BRIL(hit#)-Befehl. Die Daten in der Cache-Line werden von dem
Prozessor 112 direkt gelesen und exklusiv gehalten, und
somit bleibt der Zustand der Cache-Line in CLEAN.
-
Im CLEAN-Zustand, wenn der Prozessor 112 die
exklusive Kopie der Daten der Cache-Line lesen und modifizieren
will, sollte er einen BRIL-Befehl an den Systembus 115 vorbringen.
Wenn sich die Daten in dem Cache 1141 (cache hit) befinden,
aber modifiziert worden sind, ist der BRIL-Befehl ein BRIL(hitm#)-Befehl.
Die modifizierten Daten in der Cache-Line, die anders als die in
dem lokalen Speicher 1231 des Home-Knotens 12 gespeicherten
Daten werden, werden direkt von dem Bus 115 abgelesen und
exklusiv von dem Prozessor 112 gehalten, und somit ändert sich
der Zustand der Cache-Line von CLEAN zu DIRTY-ONLY.
-
Im CLEAN-Zustand, wenn der Prozessor 112 eine
gemeinsam genutzte Kopie der Daten in der Cache-Line erhalten will
und einem weiteren Prozessor, z. B. 111,
erlaubt, die Daten gemeinsam zu nutzen, sollte er einen BRL-Befehl
an den Systembus 115 vorbringen. Wenn sich die Daten in
dem Cache 1141 (cache hit) befinden, aber modifiziert worden sind,
ist der BRL-Befehl
ein BRL (hitm#)-Befehl. Die modifizierten Daten in der Cache-Line,
die anders als die in dem lokalen Speicher 1231 des Home-Knotens 12 gespeicherten
Daten werden, werden von dem Prozessor 112 direkt von dem
Bus 115 abgelesen und gemeinsam mit anderen Prozessoren
benutzt, und somit ändert
sich der Zustand der Cache-Line von CLEAN zu DIRTY-SHARED. Im DIRTY-SHARED-Zustand
kann ein anderer Prozessor 111 auf die Daten in der Cache-Line
aus dem Cache 1141 direkt zugreifen. Mit anderen Worten
kann, im DIRTY-SHARED-Zustand,
irgendeiner der anderen Prozessoren des lokalen Knotens auf die
modifizierten Daten über
den Systembus direkt zugreifen, ohne irgendeine Netzwerktransaktionsanfrage
vorzubringen. Somit kann die Belastung des Netzwerkes auf ein bestimmtes
Ausmaß reduziert
werden.
-
Wenn der Prozessor 111,
im DIRTY-ONLY-Zustand, Daten in der Cache-Line gemeinsam nutzen
möchte,
sollte er einen BRL-Befehl vorbringen, um den Zustand der Cache-Line
von DIRTY-ONLY auf DIRTY-SHARED umzuschalten.
-
Wenn im Gegensatz dazu irgendeiner
der Prozessoren, z. B. 111 oder 112,
im DIRTY-SHARED-Zustand,
die Daten in der Cache-Line exklusiv halten möchte, muß er einen BRIL- oder BIL-Befehl
vorbringen, um den Zustand der Cache-Line von DIRTY-SHARED auf DIRTY-ONLY
umzuschalten.
-
Zusätzlich zu den obengenannten
Orts- und Fernzugriffsbefehlen ist ein Bestätigungssignal B_ACK bei der
Datenübertragung
des DSM-Systems gemäß der vorliegenden
Erfindung auch beteiligt. Vom VOID-Zustand wird ein Übergangszustand
IDLE der Cache-Line als Antwort auf einen BRL-Befehl angenommen
werden. Wenn der BRL-Befehl fertig ist, wird ein Bestätigungssignal
B_ACK (BRL) vorgebracht, um den Zustand der Cache-Line in FRESH umzuschalten.
Wenn sich die Cache-Line in dem FRESH-Zustand befindet, wird in
gleicher Weise danach in einen Übergangszustand
IDLE als Antwort auf einen BRIL- oder BIL-Befehl eingetreten. Wenn der
BRIL- oder BIL-Befehl beendet ist, wird ein Bestätigungssignal B_ACK (BRIL,
BIL) vorgebracht, um den Zustand der Cache-Line in CLEAN umzuschalten.
Wenn sich die Cache-Line im CLEAN- oder DIRTY-ONLY-Zustand befindet,
wird außerdem
danach in einen Übergangszustand
STALE als Antwort auf ein BWL-Befehl getreten. Wenn der BWL-Befehl
beendet ist, wird ein Bestätigungssignal
B_ACK (BRIL, BIL) vorgebracht, um den Zustand der Cache-Line in VOID
umzuschalten.
-
Die weiteren Zustandsübergänge können anhand
der obigen Beschreibung von Fachleuten auf dem Gebiet abgeleitet
werden und sind somit hierin nicht redundant beschrieben.
-
Als nächstes wird auf 3 Bezug genommen, die ein
Zustandsdiagramm ist, das zahlreiche Zustände einer L3-Cache-Line als
Antwort auf die obengenannten Fernzugriffsbefehle zeigt. Außerdem wird
der Übergang
der Zustände
unter der Annahme beschrieben, daß der Knoten 11 ein
lokaler Knoten ist und daß der
Knoten 12 ein ferner Knoten ist. Spezielle Daten werden
ursprünglich
in dem lokalen Speicher 1231 des fernen Knotens oder Home-Knotens 12 gespeichert,
und die speziellen Daten werden in einer Cache-Line des Cache 1141 des
lokalen Knotens 11 über
das Netzwerk 15 als Antwort auf die Anfrage eines speziellen
Prozesses, z. B. 112, des
lokalen Knotens 11 zum Zugreifen auf die Daten gespeichert.
-
Im DIRTY-ONLY- oder DIRTY-SHARED-Zustand
zeigt der Empfang des LRL-Befehls an, daß die Daten in der Cache-Line
nicht länger
exklusiv von dem lokalen Knoten 11 gehalten werden. Statt
dessen können
alle Knoten die Daten gemeinsam nutzen. Somit verändert sich
der Zustand der Cache-Line von DIRTY-ONLY oder DIRTY-SHARED zu FRESH.
-
Im DIRTY-ONLY oder DIRTY-SHARED-Zustand
zeigt der Empfang des LRIL- oder LIL-Befehls an, daß die Daten in der Cache-Line
exklusiv von dem Prozessor 112 gehalten werden und die
Daten in dem Cache 1141 ungültig gemacht werden müssen. Somit
stellt die Cache-Line, wo die speziellen Daten früher gespeichert
wurden, keine gültigen
Daten dar. Der Zustand der Cache-Line ändert sich von DIRTY-ONLY oder
DIRTY-SHARED zu VOID.
-
Im VOID-Zustand sind die speziellen
Daten in der Cache-Line ungültig
und dürfen
neue Daten in die Cache-Line geschrieben werden. Wenn unterdessen
irgendeiner der Prozessoren, z. B. 111 oder 112,
einen BRL- oder BRIL-Befehl vorbringt, um eine gemeinsam genutzte
oder eine exklusive Kopie der speziellen Daten abzurufen, muß der lokale
Knoten 11, da es nicht die speziellen Daten in der Cache-Line
gibt, die speziellen Daten von dem Home-Knoten 12 erneut abrufen und
in der Cache-Line erneut speichern. Somit ändert sich der Zustand der Cache-Line
von VOID zu IDLE (2).
-
Wenn andererseits auf die speziellen
Daten in der lokalen Memory-Line des Home-Knotens 12 von
einem Prozessor des Knotens 12, z. B. 121 oder 122,
zugegriffen wird, wird sich die lokale Memory-Line in einem Übergangszustand,
z. B. WASH-Zustand, befinden. Unterdessen
wird der Knoten 12 einen RTY-BOP (BRL, BRIL)-Befehl an
den Knoten 11 vorbringen, um die Übertragung der speziellen Daten an
den Knoten 11 zurückzuweisen.
Zur Verbesserung der Effizienz des Systems wird der Knoten 11 nicht
auf die Daten warten, wenn er den RTY-BOP (BRL, BRIL)-Befehl empfängt. Statt
dessen wird der Zustand der Cache-Line von IDLE zu VOID als Antwort
auf RTY-BOP (BRL, BRIL)-Befehl wieder zurückgehen.
-
Im FRESH-Zustand können die
speziellen Daten in der Cache-Line von allen Knoten gemeinsam genutzt
werden. Wenn unterdessen ein Prozessor des Knotens 11,
z. B. 111 oder 112,
eine gemeinsam genutzte Kopie der speziellen Daten modifizieren
und die speziellen Daten durch Vorbringen eines BIL-Befehls exklusiv
halten will, ändert
sich der Zustand der Cache-Line von FRESH zu IDLE. Wenn auf die
speziellen Daten von einem anderen Knoten, z. B. 12,
zugegriffen wird, wird sich die lokale Memory-Line, wo die speziellen
Daten gespeichert sind, in einem Übergangszustand, z. B.
WASH-Zustand, befinden. Danach wird der Knoten 12 einen
RTY-BOP (BIL)-Befehl an den Knoten 11 zum Rückweisen
des Ungültigmachens
der speziellen Daten in dem Knoten 12 vorbringen. Zur Verbesserung
der Effizienz des Systems wird der Knoten 11 nicht auf
die Invalidierung der Daten warten, wenn er den RTY-BOP (BIL)-Befehl
empfängt.
Statt dessen wird der Zustand der Cache-Line von IDLE zu FRESH als
Antwort auf RTY-BOP(BIL)-Befehl zurückkehren.
-
Zusammengefaßt wird der ferne Knoten 11 oder 12 in
einem Fall, in dem zwei Knoten, z. B. 11 und 12,
die Daten voneinander zum selben Zeitpunkt anfordern und auf die
angeforderten Daten von dem fernen Knoten 11 oder 12 zugegriffen
wird, einen RTY BOP-Befehl zum Zurückbringen des anderen in den
früheren
Zugriffszustand vorbringen, um das Verklemmungsproblem zu verhindern.
Somit ist es für
das Betriebssystem nicht notwendig, sich in dem vorliegenden Verfahren
mit dem Verklemmungsproblem zu befassen.
-
Die anderen Zustandsübergänge können von
Fachleuten auf dem Gebiet anhand der obigen Beschreibung abgeleitet
werden und werden somit hierin nicht redundant beschrieben.
-
Es wird auf 4 Bezug genommen, die ein Zustandsdiagramm
ist, das zahlreiche Zustände
einer lokalen Memory-Line und einer korrespondierenden L3-Cache-Line
als Antwort auf einen Ortszugriffsbefehl, einen Rollout-Befehl und
ein mit dem Rollout-Befehl verbundenes Bestätigungssignal zeigt. Die Ortszugriffsbefehle
sind oben erörtert
worden. Der Rollout-Befehl
ist ein ROD- oder ROF-Befehl. Das Bestätigungssignal ist ein L_ACK
(ROD)- oder L_ACK (ROF)-Signal. Das Symbol „A" kennzeichnet einen lokalen Knoten,
und das Symbol „B" kennzeichnet einen
fernen oder Home-Knoten. Spezielle Daten sind aus einer lokalen
Memory-Line des Knotens „B" gelesen und in einer
Cache-Line des Knotens A gespeichert worden.
-
In einem Fall, in dem der Zustand
der Cache-Line des Knotens A CLEAN, DIRTY-SHARED oder DIRTY-ONLY
ist, und der Zustand der lokalen Memory-Line des Knotens B GONE
ist, wird der Zustand der Cache-Line in STALE als Antwort auf den BIL-
oder BRIL-Befehl umgeschaltet werden. Das heißt, daß die Daten in der Cache-Line
des Knotens A darauf warten, gelöscht
zu werden. Danach bringt der Knoten A einen ROD-Befehl an den Knoten
B zum Schreiben der Daten in der Cache-Line in den Knoten B zurück vor.
Unterdessen wird sich der Zustand der lokalen Memory-Line des Knotens
B von GONE zu HOME aufgrund des ROD-Befehls ändern. Nachdem die Daten in
der Cache-Line des Knotens A in den Knoten B vollständig zurückgeschrieben worden
sind, bringt der Knoten B ein Bestätigungssignal L_ACK (ROD) an
den Knoten vor und ändert sich
der Zustand der Cache-Line des Knotens A von STALE zu VOID. Mit
anderen Worten werden die Daten in der Cache-Line des Knotens A
ungültig
gemacht und können
neue Daten in die Cache-Line geschrieben werden.
-
In einem anderen Fall, in dem der
Zustand der Cache-Line des Knotens A FRESH ist und der Zustand der
lokalen Memory-Line des Knotens B SHARED ist, wird der Zustand der
Cache-Line in STALE
als Antwort auf den BIL-Befehl umgeschaltet werden. Das heißt, daß die Daten
in der Cache-Line des Knotens A darauf warten, gelöscht zu
werden. Danach bringt der Knoten A einen ROF-Befehl an den Knoten
B zum Verwerfen der Daten in der Cache-Line desselben vor. Unterdessen
wird sich der Zustand der lokalen Memory-Line des Knotens B von SHARED
zu HOME aufgrund des ROF-Befehls ändern. Nachdem der Knoten B
den ROF-Befehl empfängt,
wird der Knoten B ein Bestätigungssignal L_ACK
(ROF) an den Knoten A vorbringen und ändert sich der Zustand der
Cache-Line des Knotens A von STALE zu VOID. Mit anderen Worten werden
die Daten in der Cache-Line des Knotens ungültig gemacht und können neue
Daten in die Cache-Line geschrieben werden.
-
Das Datenverwaltungsverfahren gemäß der vorliegenden
Erfindung wird durch das Flußdiagramm
von 5 zusammengefaßt. Als
erstes wird bestimmt, ob die Daten in modifizierte Daten von einem
Prozessor eines lokalen Knotens modifiziert worden sind. Falls ja,
wird außerdem
bestimmt, ob ein anderer Prozessor des lokalen Knotens die modifizierten
Daten gemeinsam nutzen darf/dürfen.
Wenn der andere Prozessor die modifizierten Daten gemeinsam nutzen
darf, kann er die modifizierten Daten über einen Bus innerhalb des
lokalen Knotens direkt abrufen. Andererseits wird auf die modifizierten
Daten von dem Prozessor exklusiv zugegriffen werden, wenn der/die
andere(n) Prozessoren) nicht die modifizierten Daten gemeinsam nutzen
darf/dürfen.
Wenn die Daten von dem Prozessor modifiziert oder darauf von selbigem
zugegriffen wird, um die Cache-Line von einem ersten Zustand auf
einen zweiten Zustand umzuschalten, wird danach bestimmt, ob sich
eine Memory-Line des lokalen Speichers des fernen Knotens, wo die
Daten gespeichert werden, einem Übergangszustand
befindet. Der Zustand der Cache-Line wird vom zweiten Zustand zum
ersten Zustand umgeschaltet werden, wenn sich die Memory-Line in dem Übergangszustand
befindet.