-
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),
gemäß dem Oberbegriff
des Patentanspruchs 1.
-
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 sind zahlreiche Cache coherency-Systeme zur Verwaltung von
Daten in Multiprozessorsystemen entwickelt worden. Beispiele für derartige
Cache-coherency-Systeme schließen
diejenigen ein, die in der
EP
0 936 553 A2 ,
GB
2 178 205 A und
US
5 241 664 A beschrieben sind.
-
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 cohenrency 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 gehalten.
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.
-
Somit
besteht die Aufgabe der vorliegenden Erfindung darin, den Systembustransaktionszweck mit
reduzierten Transaktionsanfragen zu erzielen.
-
Diese
Aufgabe wird durch ein Datenverwaltungsverfahren gemäß Anspruch
1 gelöst.
-
In
einer besonderen Ausführungsform
ist jeder der mindestens zwei Prozessoren mit dem Bus elektrisch
verbunden, der vorzugsweise ein Systembus des ersten Knotens ist,
und ruft der zweite Prozessor die modifizierten Daten direkt ab,
ohne irgendeine Netzwerktransaktionsanfrage vorzubringen.
-
In
einer weiteren besonderen Ausführungsform
sind die ersten und zweiten Knoten über ein Netzwerk, das unter
einem Netzwerkkommunikationsprotokoll, wie zum Beispiel TCP/IP arbeitet,
miteinander verbunden.
-
In
einer weiteren Ausführungsform
wird auf die modifizierten Daten ausschließlich von dem ersten Prozessor
zugegriffen, wenn der zweite Prozessor nicht die modifizierten Daten
gemeinsam nutzen darf.
-
In
einer weiteren besonderen 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 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äß einer
weiteren besonderen Ausführungsform
der vorliegenden Erfindung umfaßt
das Datenverwaltungsverfahren die Schritte: Entscheiden, ob die
Daten von dem ersten Prozessor modifiziert worden sind, anhand der
Bedingung, daß sich eine
Cache-Line des externen Cache, wo die Daten gespeichert werden,
in einem CLEAN-Zustand befindet; 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
Zulassen, daß zweite
Prozessor die modifizierten Daten über den Bus innerhalb des ersten
Knotens direkt abruft, wenn sich die Cache-Line im DIRTY-SHARED-Zustand
befindet.
-
In
einer weiteren besonderen Ausführungsform
wird auf die modifizierten Daten exklusiv von dem ersten 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 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 beispielsweise der erste Zustand ein FRESH-Zustand und ist der
zweite Zustand ein IDLE-Zustand.
-
In
einer weiteren besonderen 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 weiteren besonderen 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 Zustande 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 modifziert 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-Line 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 Pro zessoren 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-Live, 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
empfangt. 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 Zustande einer lokalen Memory-Line und einer
korrespondierenden L3-Cache-Live 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) Prozessor(en) 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
befin det. Der Zustand der Cache-Line wird vom zweiten Zustand zum
ersten Zustand umgeschaltet werden, wenn sich die Memory-Line in
dem Übergangszustand
befindet.