-
GEBIET DER
ERFINDUNG
-
Die
vorliegende Erfindung betrifft das Gebiet der Computerbusse. Insbesondere
betrifft die vorliegende Erfindung ein Multiprocessing-Cache-Kohärenz-Protokoll
zur Verwendung auf einem lokalen Prozessorbus.
-
HINTERGRUND
DER ERFINDUNG
-
In
vielen Computersystemen ist ein Prozessor über einen Hochgeschwindigkeitsspeicherbus
mit einem internen oder externen Cache und möglicherweise einer zusätzlichen
externen Speichereinrichtung gekoppelt. Dieses lokale Konglomerat
wird manchmal Prozessor/Cache/Speicher-„Komplex" genannt (im folgenden als „Cache-Komplex" bezeichnet). 1 zeigt
ein bekanntes Computersystem mit einem derartigen Cache-Komplex 140.
-
Die
Peripherieeinrichtungen, beispielsweise Grafik-Controller, Plattenlaufwerke
und Zusatzplatinen kommunizieren über einen lokalen Peripheriebus 100,
wie in 1 gezeigt. Eine Busbrücke 130 kann zur Erleichterung
der Kommunikation zwischen dem lokalen Peripheriebus 100 und
dem Prozessor 110 und dem Cache 120 verwendet
werden.
-
In
vielen Computersystemen kann ein Teil oder der ganze Systemspeicher
mit dem lokalen Peripheriebus gekoppelt sein. In diesen Computersystemen
fordern Peripherieeinrichtungen oder „Busagenten" Transaktionen mit
dem Speicher 150 über
den lokalen Peripheriebus an. Während
die Busagenten eine Lese- oder
Schreibtransaktion mit dem Speicher 150 initiieren, werden
sie als Bus-Master bezeichnet. Einer dieser Bus-Master 160 ist
in 1 dargestellt.
-
Wenn
der Bus-Master eine Transaktionsanforderung mit dem Speicher initiiert
hat, können
die anderen Cache-Komplexe die Transaktion überwachen oder „snoopen". Der Grund ist,
daß ein Cache-Komplex eine
Teilmenge von Datenelementen aus dem Speicher enthält, die
durch die Transaktion geändert
werden können.
Während
des Snooping-Prozesses durchsucht der Cache-Komplex seinen Cache
nach dem von dem Bus-Master angeforderten Datenelement.
-
Der
Cache-Komplex hält
die Kohärenz
aufrecht, indem er eines von verschiedenen bekannten Protokollen
verwendet. Ein derartiges Protokoll ist das Durchschreibprotokoll,
wobei ein Schreibzyklus immer zum Speicher durchschreibt, so daß der Speicher
immer die letzte Kopie des Datenelementes enthält. Ein anderes Protokoll ist
ein Rückschreibprotokoll.
Das Rückschreibprotokoll
ist ein verzögerter
Schreibprozeß,
wobei jedem Datenelement in dem Cache ein Invalid-, Exklusiv- oder
Modifiziert-Zustand zugewiesen wird. Der Modifiziert-Zustand zeigt
an, daß das
Datenelement in dem Cache „dirty" ist, oder sich von
der in dem Speicher gespeicherten Kopie unterscheidet (aktueller
als diese ist). Der Exklusiv-Zustand zeigt an, daß das Datenelement
im Cache „clean" ist bzw. gleich
der in dem Speicher gespeicherten Kopie ist. Der Invalid-Zustand
zeigt an, daß die
Zuordnung für
das Datenelement in dem Cache aufgehoben wurde. Eine weitere Ausführungsform eines
verzögerten
Schreibprotokolls wird manchmal als „MESI"-Protokoll bezeichnet, wobei den Datenelementen
in dem Cache vier Zustände
zugewiesen werden: modifiziert, exklusiv, shared oder invalid. Ähnlich wie
bei dem Rückschreibprotokoll
gibt der Modifiziert-Zustand
an, daß das
Datenelement dirty ist und der Exklusiv-Zustand gibt an, daß das Datenelement clean ist.
Der Shared-Zustand
gibt an, daß das
Datenelement clean ist und es in mehr als einem Cache zu finden
ist. Diese Cache-Kohärenz-Protokolle
und Variationen von diesen werden in dem US-Patent Nr. 4 755 930
erörtert.
-
Für einen
Typ des Bus-Cache-Kohärenz-Protokolls,
der für
von der Intel Corporation hergestellte moderne Prozessorsysteme
spezifisch ist, werden drei Signale verwendet. Das erste Signal
wird von dem Cache-Komplex angelegt, wenn ein Cache-Hit auf eine
Dirty-Zeile auftritt. Dieses Signal ist in 1 als SBO# (Snoop
back off) dargestellt. Das zweite Signal wird von dem Cache-Komplex
angelegt, wenn der Cache-Komplex die Snoop-Operation beendet. Dieses
Signal ist als SDONE (Snoop Done bzw. Snoop Erledigt) dargestellt.
Das dritte Signal wird von dem Speicher angelegt, wenn der Speicher
einen Cache-Hit bzw. Cache-Treffer auf eine Dirty-Zeile erfaßt. Der
Speicher überwacht
sowohl das SBO#-Signal als auch das SDONE-Signal, und wenn beide
gleichzeitig angelegt sind, legt der Speicher das dritte Signal
an, STOP#. Der Bus-Master 160 erfaßt das STOP#-Signal und hält die Speicher-Transaktion
an, so daß die
Dirty-Zeile aus dem Cache 120 in dem Speicher 150 aktualisiert
werden kann.
-
Ein
Beispiel für
ein die obigen drei Signale verwendendes Busprotokoll ist der Peripheral
Component Interconnect (PCI) Bus. Das PCI-Speichertransaktionsprotokoll
und die Cache-Kohärenz-Signale
sind beschrieben in der PCI Local Bus Specification, Rev. 2.0, veröffentlicht
von der PCI Special Interest Group (SIG), Hillsboro, Oregon.
-
Da
SBO#, SDONE und STOP# für
Ein-Cache-Systeme definiert sind, wird dieses Dreisignalprotokoll üblicherweise
nicht zur Kommunikation zwischen Cache-speichernden Prozessoren
und Systemspeichern in einem Mehrprozessorsystem verwendet.
-
Ein
weiteres Beispiel einer bekannten Anordnung ist in der
US 5 335 335 Jackson et al. beschrieben.
-
ZUSAMMENFASSENDE
DARSTELLUNG DER ERFINDUNG
-
Gemäß der vorliegenden
Erfindung wird ein Computersystem bereitgestellt, aufweisend:
einen
lokalen Bus;
eine Mehrzahl von mit dem lokalen Bus gekoppelten
Caches, von denen wenigstens einer ein Rückschreib-Cache ist;
einen
mit dem lokalen Bus gekoppelten Hauptspeicher; wenigstens einen
mit dem lokalen Bus gekoppelten Prozessor;
einen mit dem lokalen
Bus gekoppelten Bus-Master zum Ausgeben einer Transaktionsanforderung
an den Hauptspeicher, wobei jeder Cache der Mehrzahl von Caches
eine Snoop-Operation an dem lokalen Bus durchführt und eine Mehrzahl von Signalen
auf dem lokalen Bus anlegen kann, wobei die Mehrzahl von Signalen einschließt:
ein
Shared-Signal, das dann erzeugt wird, wenn ein Datenelement auf
einem Cache gefunden wird, und
ein Snoop-Busy-Signal, das aktiv
ist, wenn der jeweilige Cache der Mehrzahl von Caches nach dem auf
dem lokalen Bus angeforderten Datenelement sucht; und
eine
direkt mit jedem der mehreren Caches gekoppelte Schaltung, die das
Snoop-Busy-Signal von jedem der mehreren Caches empfängt und
in Erwiderung ein Erledigt-Signal auf dem lokalen Bus an den Hauptspeicher sendet.
-
Ferner
wird gemäß der vorliegenden
Erfindung ein Verfahren bereitgestellt zum Betreiben mehrerer mit
einem lokalen Bus in einem Computersystem gekoppelter Caches, die
wenigstens einen Rückschreib-Cache
einschließen,
umfassend:
Durchführen
einer Snoop-Operation, wobei eine Bus-Master-Komponente eine Transaktionsanforderung
für ein
Datenelement in jedem der mehreren Caches initiiert;
Senden
eines Shared-Signals aus jedem der mehrern Caches an den Bus-Master
in Erwiderung des Auffindens des Datenelements in dem Cache;
Anlegen
eines Snoop-Busy-Signals für
jeden der mehreren Caches, der nach einem Datenelement sucht;
Abtasten
eines Snoop-Busy-Signals aus mehreren Caches; und Senden eines Erledigt-Signals
auf dem lokalen Bus an einen Hauptspeicher in Abhängigkeit
von den Zuständen
der Snoop-Busy-Signale.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Die
vorliegende Erfindung ist zur Veranschaulichung und nicht zur Beschränkung in
den Figuren der zugehörigen
Zeichnung dargestellt, in denen gleiche Bezugszeichen auf ähnliche
Elemente hinweisen und in denen:
-
1 ein
Blockschaltbild eines bekannten Computersystems zeigt.
-
2 ein
Blockschaltbild eines Computersystems zeigt, das ein Mehrprozessor-Cache-Prozessor-Protokoll
gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung verwendet.
-
3 zeigt
ein Prinzipschaltbild einer Snoop-Busy-Detektionsschaltung.
-
4 zeigt
ein Ablaufdiagramm eines Speicher-Lesens mit einem Treffer auf eine
modifizierte Cache-Zeile.
-
5 zeigt
ein Ablaufdiagramm für
ein Speicher-Lesen mit einem Treffer auf eine Shared- bzw. gemeinsam
genutzte oder Exklusiv-Cache-Zeile.
-
DETAILLIERTE
BESCHREIBUNG
-
Es
wird ein Mehrprozessor-Lokalbus-Cache-Kohärenz-Protokoll und eine Implementierung
für ein Computersystem
beschrieben. Das Cache-Kohärenz-Protokoll
stellt ein Verfahren zur Verfügung,
mit dem mehrere mit einem lokalen Bus gekoppelte Cache-Einrichtungen
während
Speicher-Lese- und -Schreiboperationen ihre Kohärenz beibehalten können.
-
Das
unten beschriebene Cache-Kohärenz-Protokoll
ist integriert in ein Mehrprozessorcomputersystem. Das Computersystem
enthält
einen mit einer Mehrzahl von Cache-speichernden Prozessoren und
einer Systemspeichereinrichtung gekoppelten lokalen Bus. Bei einem
Ausführungsbeispiel
des Computersystems ist der lokale Bus ein PCI-Bus.
-
Mit
dem lokalen Bus kann eine beliebige Anzahl von Cachespeichernden
Prozessoren und von Systemspeichereinrichtungen gekoppelt sein:
Bei einem Ausführungsbeispiel
ist der Cachespeichernde Prozessor ein interner Cache. Bei einem
alternativen Ausführungsbeispiel
ist der Cache speichernde Prozessor mit einem externen Cache gekoppelt.
-
Das
Computersystem und das Verfahren zur Verwendung des Cache-Kohärenz-Protokolls
werden hier im folgenden detaillierter beschrieben.
-
2 zeigt
ein Blockschaltbild eines Ausführungsbeispiel
eines Computersystems. Das in 2 dargestellte
System enthält
Cache-Komplexe 210 und 220, die mit einem PCI- Bus 200 gekoppelt
sind. Bei einem Ausführungsbeispiel
enthalten die Cache-Komplexe 210 und 220 jeweils
einen mit einem Cache und einer PCI-Brücke gekoppelten Prozessor,
wie es in dem Cache-Komplex 140 in 1 dargestellt
ist. Alternative Ausführungsbeispiele
des Cache-Komplexes umfassen lokal miteinander gekoppelte Dualprozessoren
mit nur einer Schnittstelle zu dem PCI-Bus 200, einen einzelnen
Prozessor mit einem internen Cache und einfach einen Cache mit einem
Cache-Controller und einer PCI-Schnittstellenlogik.
-
Bei
einem Ausführungsbeispiel
des Computersystems hält
der Cache in jedem Cache-Komplex 210 und 220 die
Kohärenz
aufrecht, indem er das MESI-Protokoll verwendet. Alternative Ausführungsformen
umfassen Durchschreib-Caches, Rückschreib-Caches und Schreiben-Verzögert- bzw.
Write-Deferred-Caches, die vielfältige
Kohärenzprotokolle
verwenden.
-
Der
in 2 dargestellte Bus-Master 270 repräsentiert
jeden beliebigen mit dem PCI-Bus 200 gekoppelten Busagenten,
der in der Lage ist, ein Lesen aus einem Speicher 250 oder
ein Schreiben in diesen zu initiieren. Eine Ausführungsform des Bus-Masters 270 ist
ein zu den Cache-Komplexen 210 und 220 ähnlicher Cache-Komplex.
Alternative Ausführungsformen
können
Prozessoren, Grafik-Controller, LAN-Controller oder andere Peripherieeinrichtungen
umfassen, die im Speicher gespeicherte Daten verarbeiten können.
-
Von
dem Bus-Master 270 wird eine Speichertransaktion initiiert,
wenn der Bus-Master 270 eine Operation an einem in dem
Speicher 250 gespeicherten Datenelement ausführen möchte. Der
Bus-Master 270 initiiert die Transaktion, indem er eine
dem Datenelement zugeordnete Adresse an dem PCI-Bus 200 anlegt.
Jeder der Cache-Komplexe 210 und 220 führt eine
Snoop-Operation
der Transaktion durch, indem er das Datenelement in seinem Cache
sucht. Von dem Zeitpunkt, wenn der Cache-Komplex 210 die
Adresse für
die Snoop-Operation empfängt,
bis er seine Snoop-Operation beendet und bestimmt, ob er einen „Treffer"-anzeigt oder nicht, legt er ein aktives
Signal auf der SBSY(1)#-Leitung 272 an. Außerhalb
dieses Zeitrahmens wird SBSY(1)# inaktiv gesteuert. In ähnlicher
Weise legt der Cache- Komplex 220 ein
aktives Signal auf der SBSY(2)#-Leitung 274 an. Wenn einer
der Cache-Komplexe 210 oder 220 eine Kopie des
Datenelements enthält,
hat es einen Cache-„Treffer" gegeben.
-
Wenn
ein Cache-Treffer verursacht wurde und das Datenelement in dem Cache
im Modifiziert-Zustand ist, legt der Cache-Komplex ein aktives Signal auf der (SBO#
bezeichneten) Leitung 266 an. Der Cache-Komplex muß das SBO#-Signal
anlegen, bis er erfaßt,
daß der
Snoop-Zyklus beendet ist (SDONE ist aktiv). Bei einem Ausführungsbeispiel
der Erfindung ist SBO# 266 eine STS-Leitung (Sustained-Tristate-Leitung).
Eine STS-Leitung darf zu jeder Zeit nur von einer Einrichtung gesteuert
werden. Die Leitung wird erst in ihren aktiven Zustand gesteuert,
und dann für
wenigstens einen Taktzyklus in ihren inaktiven Zustand gesteuert.
Ein Pull-up-Widerstand ermöglicht
der Leitung, den inaktiven Wert aufrecht zu erhalten, bis die Leitung
wieder angesteuert wird. Einer der Cache-Komplexe 210 oder 220 kann
ein Signal auf der SBO# 266-Leitung anlegen, das den aufrechterhaltenen
Wert der Leitung aufhebt. Ein Cache-Komplex, der keinen Treffer
auf eine modifizierte Leitung anzeigt, steuert die SBO# 266-Leitung
weder auf den aktiven noch auf den inaktiven Zustand. Bei einem
anderen Ausführungsbeispiel
ist die SBO#-Leitung 266 eine herkömmliche Tristate-Leitung. Alternative
Ausführungsformen
umfassen andere Arten der gemeinsam genutzten Signalleitungen, welche
so konzipiert sind, daß sie
von mehreren Einrichtungen angesteuert werden können. Der Modifiziert-Zustand
ist derart definiert, daß nur
ein Cache die letzte Kopie des Datenelements enthält. Daher
legt nur ein Cache-Komplex 210 oder 220 während einer
vorgegebenen Transaktion ein Signal auf der SBO#-Leitung 266 an.
-
Bei
einem anderen Ausführungsbeispiel
der Erfindung verwenden ein oder mehrere Cache-Komplexe 210 und 220 ein
Durchschreib-Cache-Kohärenz-Protokoll.
Da ein Durchschreib-Cache immer die letzte Version eines Datenelements
in dem Speicher 250 enthält, steuert ein Durchschreib-Cache
die SBO#-Leitung 266 nicht an.
-
Der
Speicher 250 ist mit dem PCI-Bus 200 gekoppelt.
Eine Ausführungsform
des Speichers 250 umfaßt
einen dynamischer RAM (DRAM) und einen Speicher-Controller als Schnittstelle
mit dem PCI-Bus. Bei einer alternativen Ausführungsform ist der Speicher-Controller
in das Speicher-Array auf dem gleichen Siliziumchip integriert.
Alternative Ausführungsbeispiele
des Speichers 250 umfassen jedes beliebige bekannte Speicherdesign,
das zum Speichern von Datenelementen verwendet wird.
-
Der
Speicher 250 erfaßt
das Anlegen des aktiven Signals auf der SBO#-Leitung 266 und
der SDONE-Leitung 262. Da das SBO#-Signal 266 aktiv
niedrig ist, zeigt eine logische Null (0) an, daß ein Cache-Treffer auf eine
modifizierte Leitung aufgetreten ist. Das SDONE-Signal 226 ist
ein logisch hohes Signal, so daß eine
logische Eins (1) anzeigt, daß die
Cache-Komplexe 210 und 220 die
Snoop-Operation beendet haben. Die folgende Tabelle gibt die von
dem Speicher 250 erfaßten
möglichen
Zustände
an:
-
-
Der
Standby-Modus zeigt an, daß die
Cache-Komplexe 210 und 220 derzeit eine Snoop-Operation durchführen und
noch nicht beendet haben. Wenn der Speicher 250 den Standby-Modus
erfaßt,
wartet er auf die Snoop-Ergebnisse.
-
Der
Clean-Zustand zeigt an, daß es
keinen Cache-Treffer auf einen modifizierten Eintrag gibt und die Speicher-Lese- oder -Schreib-Transaktion
kann fortfahren. Der Clean-Zustand kann auf verschiedene Weisen auftreten.
Erstens, wenn es in beiden Cache-Komplexen 210 und 220 keinen
Cache-Treffer gibt. Die andere Möglichkeit
ist, wenn es in einem oder beiden Cache-Komplexen 210 und 220 einen
Cache-Treffer gibt, aber das Treffer-Datenelement nicht in dem Modifiziert-Zustand
war. Statt dessen war das Datenelement in einem Clean-, Exklusiv- oder Shared-Zustand.
-
Der
Dirty-Zustand zeigt an, daß es
einen Cache-Treffer in einem der Cache-Komplexe 210 und 220 gab,
und daß das
Treffer-Datenelement
modifiziert ist bzw. jünger
ist als dasjenige im Speicher 250. Wenn der Speicher 250 den
Dirty-Zustand über
die SBO# 266- und SDONE 262-Signale erfaßt, legt
er das STOP#-Signal
auf der Leitung 264 an. Das STOP#-Signal wird von dem Bus-Master 270 erfaßt und die
Speichertransaktion wird angehalten, um zu ermöglichen, daß das Dirty-Datenelement in
den Speicher 250 rückgeschrieben wird.
-
Bei
einem Ausführungsbeispiel
verwendet einer oder mehrere der Cache-Komplexe 210 und 220 ein Durchschreibprotokoll.
Da ein Durchschreib-Cache immer die letzte Version des im Speicher
gehaltenen Datenelements enthält,
gibt es keinen Grund, eine Speichertransaktion anzuhalten, indem
das STOP# auf der Leitung 264 angelegt wird.
-
Bei
der Ausführungsform,
bei der die Cache-Komplexe 210 und 220 ein Rückschreiben-
oder MESI-Cache-Kohärenz-Protokoll
verwenden, können
die Cache-Komplexe 210 und 220 das SH#-Signal während Speiche-Lese-Operationen
auf die Leitung 268 steuern. Wenn eine Snoop-Operation
auf einem der Cache-Komplexe 210 oder 220 zu einem
Treffer auf ein Datenelement in dem Shared- oder Exklusiv-Zustand führt, dann
legt der Cache-Komplex
ein aktives Signal auf der SH#-Leitung 268 an. Bei einem
Ausführungsbeispiel
ist SH# ein aktiv niedriges Signal, so daß eine logische Null (0) einen
Cache-Treffer auf eine Shared- oder Exklusiv-Leitung anzeigt. Es
gibt die Möglichkeit,
daß mehrere
der Cache-Komplexe 210 und 220 das Datenelement
in dem Shared-Zustand enthalten, so daß die SH#-Leitung 268 von
mehr als einer Quelle gesteuert werden kann. Bei einem Ausführungsbeispiel
ist die SH#-Leitung 268 eine Sustained-Tristate-Signal, wie unter Bezug auf
die obige SBO#-Signalleitung 266 oben erläutert wurde.
Bei alternativen Ausführungsbeispielen
wird die SH#-Signalleitung 268 unter Verwendung einer der
anderen wohlbekannten Designs implementiert, welche mehreren Einrichtungen
ermöglichen,
ein Shared-Signal zu steuern.
-
Eine
Ausführungsform
des Bus-Masters 270 enthält einen ein Rückschreib-
oder MESI-Protokoll verwendenden Cache, und ist ähnlich zu den Cache-Komplexen 210 und 220 aufgebaut.
Bei dieser Ausführungsform überwacht
der Bus-Master 270 den Zustand der SH#-Leitung 268 während Speicher-Lese-Transaktionen.
Wenn der Bus-Master 270 ein aktives Anlegen auf der SH#-Leitung 268 und
der SDONE-Leitung 262 erfaßt, weiß der Bus-Master 270,
daß das
aus dem Speicher 250 gelesene Datenelement auch in wenigstens einem
Cache-Komplex 210 oder 220 angeordnet ist. Der
Bus-Master 270 versetzt das Datenelement daher in den Shared-Zustand in seinem
Cache, wenn es aus dem Speicher 250 empfangen wird, oder
verursacht, daß der
Cache-Komplex, der die Zeile enthält, in den Ungültig- bzw.
Invalid-Zustand übergeht.
Da der Bus-Master 270 die SH#-Leitung 268 nur
während
Schreib-Lese-Operationen überwacht,
ist die Möglichkeit
optional, während
Speicher-Schreib-Operationen ein Signal auf die SH#-Leitung 268 steuern
zu können.
Bei einer alternativen Ausführungsform
legt ein Cache-Komplex daher ein Signal auf SH# 268 während Speicher-Schreib-Operationen
an.
-
Bei
einer Ausführungsform
verwenden die in den Cache-Komplexen 210 und 220 enthaltenen
Caches ein Durchschreib-Cache-Kohärenz-Protokoll.
Wenn der Durchschreib-Cache ein Datenelement in dem Shared- bzw.
Exklusiv-Zustand enthält,
steuert er das SH#-Signal 268 in ähnlicher Weise wie der Rückschreib-Cache-Komplex.
-
Wie
oben erwähnt,
legen die Cache-Komplexe 210 und 220 die Signale
SBSY(1)# auf Leitung 272 und SBSY(2)# auf Leitung 274 an.
Diese Signale werden in die Detektionsschaltung 260 eingespeist,
welche erfaßt,
wenn beide Signale auf den Leitungen 272 und 274 weggenommen
bzw. unterbrochen wurden. 3 enthält ein Prinzipschaltbild
der Detektionsschaltung 260. Die SBSY(1)#-Leitung 272 und
die SBSY(2)#-Leitung 274 sind zugeführt zu einem UND-Gatter 300.
Da SBSY(1)# und SBSY(2)# beide aktiv niedrig sind, zeigt ein Wert
einer logischen Null (0) an, daß die
Cache-Komplexe 210 bzw 220 noch belegt sind. Wenn
beide Leitungen 272 und 274 eine logische Eins
(1) sind, wobei dies anzeigt, daß die Snoop-Operation von beiden
Cache-Komple xen 210 und 220 beendet wurde, dann
legt das UND-Gatter 300 ein Signal auf der Leitung 322 an. Dieses
Signal wiederum wird in das Latch 310 eingespeist, das
von dem PCI-Takt 324 getaktet wird. Das Latch 310 wird
zur Synchronisation verwendet, da das PCI-Bus-Protokoll mit der
ansteigenden Flanke jedes PCI-Taktes
synchronisiert ist. Wenn das Signal 322 latch-gespeichert
ist, wird es auf der SDONE-Leitung 262 angelegt. Das Signal
auf der SDONE-Leitung 262 wird dann an die Cache-Komplexe 210 und 220,
den Speicher 250 und den Bus-Master 270 gesendet,
um anzuzeigen, daß die
Snoop-Operation beendet wurde.
-
4 zeigt
ein Zeitdiagramm, das ein Beispiel einer Speicher-Lese-Operation
mit einem Cache-Treffer auf eine modifizierte Zeile darstellt. Jedes
der Signale in 4 ist auf der ansteigenden Flanke
des PCI-Taktes 400 aktiv. Daher wird jede Taktperiode separat
analysiert, um die Zeitsteuerung und die Synchronisation der relevanten
Signale zu veranschaulichen.
-
Das
Zeitdiagramm von 4 wird unter Bezugnahme auf
das Computersystem gemäß 2 erläutert.
-
Während des
ersten PCI-Taktzyklus 401 wird das FRAME#-Signal 410 von
dem Bus-Master 270 für einen
Taktzyklus in seinen aktiven Zustand heruntergezogen. Dies initiiert
die Lesetransaktion mit dem Speicher 250. Gleichzeitig
wird die Adresse 421 auf AD 420 von dem Bus-Master 270 angelegt.
-
Im
nächsten
Takt 402, wird die Adresse 421 von den Cache-Komplexen 210 und 220 und
dem Speicher 250 empfangen.
-
Während des
Taktes 403 snoopen die Cache-Komplexe die Lese-Transaktionsanforderung,
indem sie in ihren Caches nach der Adresse 421 suchen.
Bei dem in 4 gezeigten Ausführungsbeispiel
verwenden die Cache-Komplexe ein Rückschreib- oder MESI-Kohärenz-Protokoll. Der Cache-Komplex 210 legt SBSY(1)# 440 an,
indem er es während
des Taktes 403 herunterzieht. Zur gleichen Zeit legt der
Cache-Komplex 220 SBSY(2)# 450 an. Während des
Taktes 403 wird das Signal IRDY# 430 auch heruntergezogen,
wobei dies anzeigt, daß der
Bus-Master nun bereit ist, um die angeforderten Daten aus dem Speicher 250 zu
akzeptieren.
-
Bei
dem in 4 dargestellten Ausführungsbeispiel beendet der
Cache-Komplex 210 die Snoop-Operation in einem Takt. Somit
wird SBSY(1)# 440 in dem Takt 404 nach oben gezogen.
Dagegen benötigt
der Cache-Komplex 220 zwei Takte für die Snoop-Operation, so daß SBSY(2)# 450 im
Takt 405 hoch gezogen wird.
-
Die
Detektionsschaltung 260 erfaßt, wenn SBSY(1)# 440 und
SBSY(2)# 450 beide hoch gezogen wurden, und legt in dem
Takt 406 SDONE 470 an. Bei dem in 4 dargestellten
speziellen Ausführungsbeispiel enthält der Cache-Komplex 220 das
der Adresse 421 zugeordnete Datenelement und es befindet
sich im Modifiziert-Zustand. Folglich legt der Cache-Komplex 220 im
Takt 406 ein niedriges Signal auf SBO# 480 an,
und zwar im Taktzyklus, nachdem SBSY(2)# weggenommen wurde. Das
Signal SBO# 480 kann von einem der Cache-Komplexe 210 oder 220 auf
niedrig gezogen werden, jedoch sei daran erinnert, daß nur ein
Cache-Komplex 210 oder 220, die Daten in dem „Modifiziert"- oder Dirty-Zustand haben kann und folglich
nur ein Cache-Komplex das SBO#-Signal 480 zu einem Zeitpunkt
ansteuern kann. Im Takt 406 erfaßt der Speicher 250 auch
das Anlegen des SBO#-Signals 480 und
des SDONE-Signals 470 zur gleichen Zeit.
-
Da
das SBO#-Signal 480 anzeigt, daß der Speicher 250 nicht
die letzte Kopie des Datenelementes enthält, wird die Lese-Transaktion zwischen
dem Bus-Master 270 und dem Speicher nicht wie geplant beendet.
Der Bus-Master 270 erwirbt statt dessen die letzte Version
des Datenelements.
-
Der
Speicher 250 legt daher das STOP#-Signal 490 im
Takt 407 an, um die Speicher-Lese-Anforderung von dem Bus-Master 270 anzuhalten.
Wenn die Lese-Transaktion angehalten wurde, wird das modifizierte
Datenelement aus dem Cache-Komplex 220 bei einer Ausführungsform
in den Speicher 250 geschrieben, und anschließend initialisiert
der Bus-Master 270 erneut die Lese-Anforderung aus dem Speicher 250.
Alternative Ausführungsformen
verwenden andere Verfahren zur Weiterleitung der letzten Kopie des
Datenelementes aus dem Cache-Komplex 220 an den Bus-Master 270 und
zur Aktualisierung des Speichers 250.
-
5 zeigt
ein Zeitdiagramm einer Speicher-Lese-Transaktionsanforderung mit
einem Treffer auf eine Exklusiv- oder Shared-Zeile. Das Diagramm
von 5 wird unter Bezugnahme auf das Computersystem
gemäß 2 erläutert.
-
Der
Bus-Master 270 fordert ein Speicher-Lesen unter Verwendung
der gleichen Schritte wie in 4 an. Daher
ist das Zeitdiagramm gemäß 5 für die Takte 501 bis 505 identisch
mit dem Zeitdiagramm gemäß 4 für die Schritte 401 bis 405.
-
Bei
dem in 5 dargestellten Ausführungsbeispiel enthält der Cache-Komplex 220 das
der Adresse 521 zugeordnete Datenelement in dem Exklusiv-Zustand.
Der Exklusiv-Zustand zeigt an, daß das Datenelement im Cache-Komplex 220 das
gleiche ist, wie die in dem Speicher 250 gehaltene Kopie.
Das Zeitdiagramm gemäß 5 sieht
für den
Fall genauso aus, in dem das Datenelement in dem Cache-Komplex 220 im Shared-Zustand ist.
-
Im
Takt 506 wird das SDONE-Signal 570 angelegt, um
anzuzeigen, daß die
Cache-Komplexe 210 und 220 die Snoop-Operation
beendet haben. Gleichzeitig wird SH# 560 vom Cache-Komplex 220 angelegt
oder auf niedrig gezogen.
-
Der
Bus-Master 270 erfaßt
das gleichzeitige Anlegen von SH# 560 und SDONE 570 im
Takt 507. Bei einer Ausführungsform der Erfindung enthält der Bus-Master 270 einen
ein Rückschreib-
oder MESI-Kohärenz-Protokoll
verwendenden Cache. Bei dieser Ausführungsform fordert das gleichzeitige
Anlegen von SH# 560 und SDONE 570 dem Bus-Master 270 auf,
das aus dem Speicher 250 gelesene Datenelement in dem Shared-Zustand
in den Cache des Bus-Masters zu bringen.
-
In
der in 5 gezeigten Transaktion muß die Lese-Anforderung nicht angehalten werden,
wie in der in 4 gezeigten Transaktion. Daher
sind das SBO#-Signal 580 und das STOP#-Signal 590 nicht
angelegt.
-
Bei
einer alternativen Ausführungsform
der Erfindung hat der Bus-Master 270 keinen Cache. Daher wird
das SH#-Signal 560 von dem Bus-Master 270 nicht überwacht.
Bei noch einer anderen Ausführungsform enthält der Bus-Master 270 einen
Cache, der ein Kohärenz-Protokoll
verwendet, welches keinen Shared-Zustand
umfaßt.
Wiederum muß der
Bus-Master 270 das SH#-Signal 560 nicht überwachen.
-
In
der vorangegangenen detaillierten Beschreibung wurde somit ein Computersystem
und ein Verfahren zum Aufrechterhalten der Cache-Kohärenz in
einem Mehrprozessorsystem über
einen lokalen Peripheriebus beschrieben. Das beschriebene Computersystem
kann einen PCI-Bus oder andere typische lokale Busse zur Kommunikation
zwischen Cache-Komplexen verwenden. Das Computersystem kann eine
unbegrenzte Mehrzahl von Cache-Komplexen enthalten, die verschiedene
Cache-Kohärenz-Protokolle
verwenden. Außerdem
kann das beschriebene Computersystem eine Mehrzahl von mit dem lokalen
Bus gekoppelten Systemspeichereinrichtungen verwenden.
-
Das
beschriebene Verfahren ermöglicht
Cache-Komplexen, eine Cache-Kohärenz
zwischen der Mehrzahl von Cache-Komplexen und den mit dem lokalen
Bus gekoppelten Systemspeichereinrichtungen aufrecht zu erhalten.
-
In
der vorangegangenen Beschreibung wurde die Erfindung unter Bezugnahme
auf spezielle beispielhafte Ausführungsformen
von dieser beschrieben. Es wird jedoch klar sein, daß verschiedene
Modifikationen und Änderungen
an dieser vorgenommen werden können,
ohne den Schutzbereich der Erfindung zu verlassen, der in den beigefügten Ansprüchen definiert
ist. Die Beschreibung und die Zeichnungen sollen daher der Veranschaulichung
und nicht der Beschränkung
dienen.