DE69327387T2 - An einen paketvermittelten Bus gekoppelte Nachschreibsteuerungsschaltung für eine Cachespeichersteuerungsschaltung - Google Patents
An einen paketvermittelten Bus gekoppelte Nachschreibsteuerungsschaltung für eine CachespeichersteuerungsschaltungInfo
- Publication number
- DE69327387T2 DE69327387T2 DE69327387T DE69327387T DE69327387T2 DE 69327387 T2 DE69327387 T2 DE 69327387T2 DE 69327387 T DE69327387 T DE 69327387T DE 69327387 T DE69327387 T DE 69327387T DE 69327387 T2 DE69327387 T2 DE 69327387T2
- Authority
- DE
- Germany
- Prior art keywords
- cache
- memory
- line
- controller
- write
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 230000015654 memory Effects 0.000 claims description 262
- 238000000034 method Methods 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 10
- 230000003139 buffering effect Effects 0.000 claims description 4
- 230000008878 coupling Effects 0.000 claims 1
- 238000010168 coupling process Methods 0.000 claims 1
- 238000005859 coupling reaction Methods 0.000 claims 1
- 238000012545 processing Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 10
- 239000000872 buffer Substances 0.000 description 8
- 238000012546 transfer Methods 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 150000004053 quinones Chemical class 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
- Die vorliegende Erfindung bezieht sich auf das Gebiet der Cache-Speicherstrukturen für Multi-Prozessor-Computersysteme. Insbesondere bezieht sich die vorliegende Erfindung auf eine Ausstehendes-Rückschreiben-Cache-Steuereinrichtung in einem Cache-Steuersystem für ein Multi-Prozessor-Computersystem, das einen paketvermittelten Bus verwendet.
- Bei einem typischen Computersystem arbeitet die Verarbeitungseinheit bei einer wesentlich schnelleren Geschwindigkeit als der Hauptspeicher. Wenn die Verarbeitungseinheit Befehle schneller ausführt als der Speicher diese liefern kann, muß die Verarbeitungseinheit untätig bleiben, während sie darauf wartet, daß der Speicher den nächsten Befehl wiedergewinnt (liest). Die Leerzeit der Verarbeitungseinheit beeinflußt die Systemleistung negativ. Um unnötige Leerzeiten der Verarbeitungseinheit während des Wartens auf Daten oder Befehle aus dem Hauptspeicher zu vermeiden, wird oftmals ein Cache-Speicher, der bei einer höheren Geschwindigkeit als der Hauptspeicher arbeiten kann, verwendet, um die Daten und die Befehle zwischen dem Hauptspeicher und der Verarbeitungseinheit zu puffern. Der Cache-Speicher ist üblicherweise viel kleiner als der Hauptspeicher.
- Die Daten und Befehle aus dem Hauptspeicher werden in dem Cache-Speicher in gleichförmigen Einheiten abgebildet, die als Cache-Zeilen bezeichnet werden. Jede Cache-Zeile stellt ein ausgerichtetes zusammenhängendes Segment des Hauptspeichers dar. Da der Cache-Speicher üblicherweise viel kleiner als der Hauptspeicher ist, kann er nur eine begrenzte Untermenge des Hauptspeichers speichern. Folglich muß der Cache-Speicher einen Abschnitt der Hauptspei cheradresse der Daten speichern. Dieser Abschnitt der Adresse wird Adreß-Tag genannt und es gibt nur ein Adreß-Tag pro Cache-Zeile. Jede Cache-Zeile kann weiter in kleinere gleichförmige Inkremente unterteilt werden, die als Unterblöcke bezeichnet werden. Der Zugriff auf eine Cache-Zeile in dem Cache-Speicher wird typischerweise unter Verwendung eines Cache-Verzeichnisses ausgeführt, welches die Adreß- Tags und einen Satz von der Cache-Zeile zugeordneten Statusbits speichert.
- In jüngerer Zeit wurden Computersysteme, die mehrere Prozessoren aufweisen, üblich, welche darauf gerichtet sind, die Verabeitungsgeschwindigkeit zu erhöhen. Bei einem Multi- Prozessor-System kann jedes der Prozessor-Subsysteme seinen eigenen Cache-Speicher aufweisen. Damit das Multi-Prozessor- System mit individuellen Cache-Speichern richtig arbeitet, muß das System eine geeignete Korrespondenz der Daten, die in den Cache-Speichern gespeichert sind, aufrechterhalten, da jeder Prozessor die in seinem lokalen Cache-Speicher gespeicherten Daten ändern kann. Die Korrespondenz der Daten in den verschiedenen Caches wird "Cache-Konsistenz" genannt. Ein Cache-System wird als "konsistent" angesehen, wenn der aus einer "Lade-aus-Speicher"-Operation zurückgegebene Wert der gleiche Wert der letzten "Speichere-in-den-Speicher"- Operation zu derselben Speicheradresse ist.
- Um die Cache-Konsistenz aufrechtzuerhalten, werden üblicherweise verschiedene Statusbits in dem Cache-Verzeichnis gehalten, welche den aktuellen Zustand der in jeder Cache- Zeile enthaltenen Informationen reflektieren. Übliche gehaltene Statusbits umfassen ein "Gültig"-Bit, ein "Geteilt"-Bit und eine "Eigene"-Bit ("owned"-Bit). Ein "Gültig"-Bit gibt wieder, ob die in der Cache-Zeile gespeicherten Informationen gegenwärtig gültig sind. Ein "Geteilt"-Statusbit zeigt an, ob die in der Cache-Zeile vorhandenen Informationen mit anderen Cache-Speichern geteilt sind. Wenn eine Cache-Zeile "geteilt" ist, kann sie nicht modifiziert werden, ohne zunächst die Cache-Zeile in den anderen Cache-Speichern ungültig zu machen oder die Cache-Zeile in den anderen Cache-Speichern zu aktualisieren. Ein "Eigene"-Statusbit zeigt an, daß die in der Cache-Zeile vorhandenen Informationen modifiziert worden sind, ohne in den Hauptspeicher zurückgeschrieben worden zu sein. Eine Zeile im Speicher kann nur jeweils einem Prozessor-Subsystem gleichzeitig "eigen" sein. Sofern ein Prozessor die Inhalte einer seiner Cache-Zeilen modifizieren muß, muß der Prozessor zunächst den Status der Cache-Zeile derart ändern, daß er sie "eigen" macht. Eigene Cache-Zeilen müssen in den Hauptspeicher zurückgeschrieben werden, bevor sie durch neue Informationen ersetzt werden.
- Ein Beispiel eines Multi-Prozessor-Systems, das die Cache-Konsistenz aufrechterhält, ist in den Fig. 1a bis 1b veranschaulicht. In Fig. 1a weist die Hauptspeichereinheit eine Adresse A auf, die einen Wert von 1 enthält. Die Prozessoren 2 und 3 führen Lade-A-Operationen aus, um den Wert von A zu erlangen. Während jeder Lade-Operation der Prozessoren wird der Wert von A in dem lokalen Cache-Speicher des Prozessors gespeichert. Die Prozessoren 2 und 3 "teilen" sich jetzt den Speicherplatz A und beide Caches haben "gültige" Daten. In Fig. 1b hat der Prozessor 1 einen Wert von 2 in den Speicherplatz A geschrieben. Dies ist gestattet, da weder der Prozessor 2 noch der Prozessor 3 den Speicherplatz A "besitzen", d. h., er ihnen "eigen" ist. Um den Inhalt des Speicherplatzes A zu ändern, sendet der Prozessor 1 eine Nachricht über den Speicherbus aus, die die anderen Speichereinrichtungen darüber informiert, daß der Inhalt des Speicherplatzes A geändert worden ist. Diese Nachricht veranlaßt die Cache-Speicher der Prozessoren 2 und 3, den Status des Speicherplatzes A in "ungültig" zu ändern. Die Hauptspeichereinheit hält keinen Satz von Statusbits für jede Speicherzeile aufrecht. Stattdessen überwacht der Hauptspeicher eine Steuerleitung auf dem Speicherbus, die immer dann aktiviert wird, wenn eine Anforderung nach einer Speicherzeile, die einem Prozessor-Subsystem "eigen" ist, ausgeführt wird. Wenn die "Eigen"-Steuerleitung angelegt ist, erfährt der Hauptspeicher, daß die Zeile irgendeinem Prozessor-Subsystem "eigen" ist und antwortet folglich nicht auf die Anforderung. Der Cache-Speicher 1 besitzt jetzt den Speicherplatz A, da er den Inhalt des Speicherplatzes A modifiziert hat, ohne den Hauptspeicher zu aktualisieren. In Fig. 1c hat der Prozessor I den Inhalt des Speicherplatzes A auf den Wert 3 geändert. Da der Prozessor 1 sich den Speicherplatz 1 nicht mit irgendeinem anderen Prozessor teilt, braucht der Prozessor 1 keine Nachricht über den Speicherbus auszusenden. In Fig. 1d jedoch fordert der Prozessor 3 den Wert des Speicherplatzes A für eine Ladeoperation. Prozessor 3 muß folglich eine Anforderung über den Bus aussenden, die den Wert des Speicherplatzes A anfordert. Da der Prozessor 1 den Speicherplatz A "besitzt", muß er auf die Anforderung mit einer Erwiderung antworten, die den Inhalt des Speicherplatzes A enthält. Speicherplatz A ist jetzt in den Cache- Speichern der Prozessoren 1 und 3 repräsentiert. Obwohl der Speicherplatz A noch dem Prozessor 1 "eigen" ist (er ihn "besitzt"), muß er sich jetzt einen Speicherplatz A mit dem Prozessor 3 "teilen". Folglich müssen irgendwelche weiteren Änderungen an dem Speicherplatz A durch den Prozessor 1 an den Prozessor 3 weitergeleitet werden. Schließlich muß der Prozessor 1 den geänderten Inhalt des Speicherplatzes A in den Hauptspeicher zurückschreiben.
- Bei Computersystemen, die ein Cache-Speichersystem implementieren, wird zunächst der Cache-Speicher durchsucht, wenn ein Prozessor Daten Von einer Speicheradresse anfordert. Eine Cache-Steuereinrichtung (Cache-Controller) überprüft die Adreß-Tags in dem Cache-Verzeichnis nach der angeforderten Speicheradresse. Wenn ein Adreß-Tag in dem Cache- Verzeichnis mit der erforderlichen Speicheradresse übereinstimmt und die Cache-Zeile gültig ist, gibt es einen Cache-"Treffer", und die Daten werden aus dem Cache-Speicher zu dem Prozessor übertragen. Wenn der Prozessor nachfolgend die in einer Cache-Zeile gespeicherten Daten modifiziert, wird die Cache-Zeile zu einer "eigenen" Cache-Zeile. Wie oben veranschaulicht, muß die modifizierte oder "eigene" Cache- Zeile schließlich zurück in den Hauptspeicher geschrieben werden. Wenn die Cache-Steuereinrichtung den Hauptspeicher stets aktualisiert, unmittelbar nachdem eine Cache-Zeile modifiziert worden ist, wird das System als "Durchschreib"- Cache bezeichnet. Es wird ein "Durchschreib"-Cache genannt, da das Cache-System stets durch den Cache-Speicher hindurch in den Hauptspeicher schreibt.
- Wenn andererseits ein Prozessor eine Leseanforderung nach Daten aus einer Speicheradresse ausführt und keines der Adreß-Tags in dem Cache-Verzeichnis mit der angeforderten Speicheradresse übereinstimmt oder eine Adreßübereinstimmung auftritt, aber die Cache-Zeile ungültig ist, tritt ein Cache-"Fehlversuch" auf. Die Cache-Steuereinrichtung muß folglich die Daten aus dem Hauptspeicher oder aus einem Cache-Speicher eines anderen Prozessors, welcher die Daten besitzt, gewinnen. Während des Wiedergewinnens der Speicherzeile muß die Verarbeitungseinheit üblicherweise untätig bleiben, bis die Wiedergewinnung abgeschlossen ist.
- Wenn eine Cache-Steuereinrichtung eine Zeile von Daten aus dem Hauptspeicher oder aus einem Cache-Speicher eines anderen Prozessors für den lokalen Prozessor wiedergewinnt, wird die Zeile in dem lokalen Cache-Speicher angeordnet. Sofern keine leere Cache-Zeile verfügbar ist, muß der Cache eine der gegenwärtig verwendeten Cache-Zeilen ersetzen. Die als zu ersetzend ausgewählte Cache-Zeile wird üblicherweise als die verdrängte oder Opferzeile bezeichnet. Wenn das Cache-System eine "Durchschreib"-Cache-System ist, wird die Opferzeile sofort ersetzt. Die Opferzeile in einem "Durchschreib"-Cache-System kann sofort ersetzt werden, da der Hauptspeicher bereits die Inhalte der Opferzeile enthält. Wenn jedoch der Prozessor die Inhalte der Cache-Zeile modifiziert hat (eine "eigene" Cache-Zeile), muß die Cache- Steuereinrichtung zunächst den Inhalt der Cache-Zeile in den Hauptspeicher zurückschreiben, bevor die Cache-Zeile ersetzt werden kann. Cache-Systeme, welche nur dann die Inhalte einer eigenen Cache-Zeile zurückschreiben, wenn die Cache- Zeile ersetzt werden muß, werden als "Rückschreib"-Caches bezeichnet. "Rückschreib"-Cache-Systeme aktualisieren den Hauptspeicher weniger häufig als "Durchschreib"-Systeme, da aufeinanderfolgende Schreiboperationen durch den Prozessor zu der gleichen eigenen Cache-Zeile nicht zu mehreren Schreiboperationen in den Hauptspeicher führen. Da "Rückschreib"-Cache-Systeme den Hauptspeicher weniger häufig aktualisieren, sind sie effizienter als "Durchschreib"- Cache-Systeme.
- Fig. 2 veranschaulicht eine bekanntes Multi-Prozessor- System mit einzelnen "Rückschreib"-Cache-Speichern für jedes Prozessor-Subsystem. Das Multi-Prozessor-System gemäß Fig. 2 hält die Cache-Konsistenz aufrecht, indem es einen Satz von Cache-Verzeichnissen 28 benutzt, die in jeder Cache- Steuereinrichtung 29 angeordnet sind. Die Cache-Verzeichnisse 28 enthalten die Tag-Adressen für jede Cache-Zeile und die Statusbits, welche angeben, ob eine Cache-Zeile gültig ist (gültige Daten enthält), eigen ist (modifiziert und nicht in den Hauptspeicher zurückgeschrieben ist) und/oder geteilt ist (in einem Cache-Speicher eines weiteren Prozessors vorhanden ist).
- Wenn ein Prozessor in dem Multi-Prozessor-System gemäß Fig. 2 Informationen lesen muß, die nicht aktuell in dem lokalen Cache-Speicher gespeichert sind, muß es oftmals eine gegenwärtig benutzte Cache-Zeile ersetzen. Wenn die zu ersetzende Cache-Zeile eine "eigene" ist, müssen die Inhalte der Cache-Zeile in den Hauptspeicher 23 zurückgeschrieben werden. Bei einem typischen Rückschreib-Cache-Speichersystem schreibt die Cache-Steuereinrichtung 29 zunächst die "eigene" Cache-Zeile in den Hauptspeicher 23 zurück und fordert dann, nachdem das Rückschreiben abgeschlossen ist, die neue Zeile von Daten aus dem Hauptspeicher 23 an. Obwohl das Anfordern der neuen Cache-Zeile ausschließlich nach dem Rückschreiben der eigenen Cache-Zeile zu einem einfachen Design führt, erzeugt dieses Verfahren eine lange Verzögerungszeit, während die eigene Cache-Zeile zurückgeschrieben und die neue Cache-Zeile erlangt wird. Während dieser Verzögerungsdauer bleibt der Prozessor 21 üblicherweise untätig, während er auf die erforderlichen Daten wartet. Demzufolge verschlechtert diese lange Verzögerungszeit, die für die Zeilenersetzung des Cache erforderlich ist, die Effizienz des Multi-Prozessor-Computersystems. Dies ist insbesondere der Fall bei großen Cache-Speichern 37, bei denen die Cache- Zeilen lang sind und verschiedene eigene Unterblöcke in den Speicher zurückgeschrieben werden müssen, bevor die neue gewünschte Cache-Zeile von Daten angefordert wird.
- COMPCON 88, THIRTY-THIRD IEEE COMPUTERS SOCIETY INTERNATIONAL CONFERENCE, DIGEST OF PAPERS, 29. Februar 1988, SAN FRANCISCO, US, Seiten 218 bis 222, QUINONES: "The NS32605 cache controller" offenbart einen Cache-Controller und erörtert das Problem des Minimierens von Fehlversuchsnachteilen bei einem Rückschreib-Cache. Wenn ein Cache-Fehlversuch auftritt und die für die Ersetzung ausgewählte Zeile eine Zeile ist, welche modifiziert worden ist, muß sie zu dem Hauptspeicher gespült (flushed) werden, bevor die neue Zeile in den Cache eingegeben werden kann (siehe Fig. 2). Um diesen Nachteil des Fehlversuchs zu verringern, wird ein Schreib- Cache-Zeilen-Puffer in den Rückschreib-Cache aufgenommen zum Speichern einer modifizierten Zeile, die aus dem Cache geopfert worden ist, was das Lesen aus dem Hauptspeicher ermöglicht, sobald der Bus erlangt worden ist. Die modifizierte Zeile wird aus dem Cache-Speicher zu dem Schreib-Cache-Zeilenpuffer gleichzeitig mit der Bewerbung um den Systembus (Arbitration) übertragen. Wenn der Cache-Steuereinrichtung die Zuteilung als Master des Busses gewährt wird, wird der Buszyklus verwendet, um die durch den Prozessor angeforderten Daten zu lesen. Der dem Datenlesen folgende Buszyklus kann dann verwendet werden, um das Spülen (Flush-Operation) durchzuführen oder die geopferte Zeile kann in dem Schreib- Cache verbleiben. Da eine modifizierte (dirty) Zeile sich in dem Schreib-Cache-Zeilenpuffer aufhalten kann, müssen die Adreß- und Statusabschnitte für Snoop-Operationen auf sowohl der System- als auch der Prozessorseite verfügbar bleiben.
- Es werden Einrichtungen und Verfahren zum Implementieren eines Dual-Verzeichnis-Cache-Steuersystems offenbart, das eine Anhängiges-Rückschreiben-Cache-Steuereinrichtung in einer Cache-Speicherstruktur aufweist, die mehrere Verarbeitungseinheiten unterstützt. Die Verarbeitungseinheiten im Multi-Prozessor-System sind miteinander unter Verwendung eines synchronen paketvermittelten Hochgeschwindigkeitsbusses gekoppelt, der Speicherbus genannt wird. Jede Verarbeitungseinheit weist ein zugeordnetes Rückschreib-Cache-Steuersystem auf. Jedes Rückschreib-Cache-Steuersystem ist in zwei separate Cache-Steuereinrichtungen unterteilt: Die Bus- Cache-Steuereinrichtung und die Prozessor-Cache-Steuereinrichtung. Die Bus-Cache-Steuereinrichtung und die Prozessor- Cache-Steuereinrichtung sind miteinander über einen zweiten synchronen paketvermittelten Hochgeschwindigkeitsbus gekoppelt, der Cache-Bus genannt wird. Die Bus-Cache-Steuereinrichtung und die Prozessor-Cache-Steuereinrichtung halten jeweils ein separates Verzeichnis, das Tag-Adressen und Statusbits enthält.
- Die Prozessor-Cache-Steuereinrichtung ist eng mit der tatsächlichen Verarbeitungseinheit gekoppelt. Die Prozessor- Cache-Steuereinrichtung bedient Speicheranforderungen, die von der Verarbeitungseinheit ausgegeben werden. Wenn die Prozessor-Cache-Steuereinrichtung einen angeforderten Speicherplatz nicht in dem Cache-Speicher hat, sendet sie eine Anforderung über den Cache-Bus an die Bus-Cache-Steuereinrichtung. Wenn eine Cache-Zeile ersetzt werden muß, fährt dann die Prozessor-Cache-Steuereinrichtung unmittelbar damit fort, die eigenen Unterblöcke aus der Cache-Zeile, die ersetzt werden wird, an die Bus-Cache-Steuereinrichtung zu senden.
- Die Bus-Cache-Steuereinrichtung ist direkt mit dem Speicherbus verbunden und behandelt sämtliche Speicherbus-Transaktionen für die Verarbeitungseinheit. Die Bus-Cache-Steuereinrichtung enthält eine Anhängiges-Rückschreiben-Steuereinrichtung, welche für das Handhaben von Rückschreiboperationen der eigenen Cache-Zeilen zum Hauptspeicher verantwortlich ist. Wenn die Bus-Cache-Steuereinrichtung eine Speicheranforderung aus der Prozessor-Cache-Steuereinrichtung empfängt, die von einem Cache-Fehlversuch herrührt, sendet sie schnell ein zugehöriges Speicheranforderungspaket auf dem Speicherbus aus. Wenn eine eigene Cache-Zeile ersetzt werden soll, sendet die Prozessor-Cache-Steuereinrichtung die Unterblöcke aus der eigenen Cache-Zeile an die Bus- Cache-Steuereinrichtung, welche die eigenen Unterblöcke in der Anhängiges-Rückschreiben-Steuereinrichtung puffert. Wenn die Bus-Cache-Steuereinrichtung die neuen Cache-Zeilen- Informationen aus dem Speicherbus empfängt, sendet sie sofort die neuen Cache-Zeilen-Informationen an die Prozessor-Cache-Steuereinrichtung, welche die Cache-Zeile ersetzt und dem Prozessor ermöglicht fortzufahren. Durch Pufferung der eigenen Cache-Zeile gestattet die Anhängiges-Rückschreiben-Steuereinrichtung der neuen Cache-Zeile, angefordert und ersetzt zu werden, bevor die eigene Cache-Zeile in den Hauptspeicher zurückgeschrieben wird. Dies gestattet es, daß die Cache-Fehlversuch-Verzögerungsdauer im Mittel wesentlich verringert wird.
- Die Anhängiges-Rückschreiben-Steuereinrichtung in der Bus-Cache-Steuereinrichtung dient als intelligenter Rückschreibpuffer für die Bus-Cache-Steuereinrichtung. Sobald die Bus-Cache-Steuereinrichtung eine Leseanforderung für neue Cache-Zeilendaten ausgesendet hat, werden die alten Cache-Zeilendaten aus der eigenen Cache-Zeile, die in den Hauptspeicher zurückgeschrieben werden sollen, in die Anhängiges-Rückschreiben-Steuereinrichtung eingegeben. Während die Anhängiges-Rückschreiben-Steuereinrichtung eine eigene Cache-Zeile kontrolliert, welche noch nicht zurückgeschrie ben ist, muß sie auf an diese Cache-Zeile gerichtete Leseanforderungen antworten. Wenn eine andere Einrichtung an dem Speicherbus ein Schreiben zu einer Cache-Zeile durchführt, die im Besitz der Anhängiges-Rückschreiben-Steuereinrichtung ist, braucht die Anhängiges-Rückschreiben-Steuereinrichtung das Rückschreiben nicht durchzuführen, da sie veraltete Daten enthält.
- Die vorliegende Erfindung ist vollständiger aus der unten angegebenen detaillierten Beschreibung und aus den begleitenden Zeichnungen des bevorzugten Ausführungsbeispiels der Erfindung zu verstehen, in welchen:
- Fig. 1a-1d eine Veranschaulichung der Aufrechterhaltung der Cache-Konsistenz in einem Multi-Prozessor- System, bei dem jedes Prozessor-Subsystem seinen eigenen Cache-Speicher aufweist, bereitstellen.
- Fig. 2 ist eine Blockdarstellung eines Multi-Prozessor- Systems mit einem bekannten Rückschreib-Cache-Speichersystem für jedes Prozessor-Subsystem.
- Fig. 3a ist eine Blockdarstellung eines Multi-Prozessor-Systems mit dem Cache-Steuersystem gemäß der vorliegenden Erfindung, bei dem die Cache-Steuereinrichtung in eine Prozessor-Cache-Steuereinrichtung und eine Bus-Cache-Steuereinrichtung unterteilt ist.
- Fig. 3b ist eine Blockdarstellung eines alternativen Ausführungsbeispiels des Cache-Speichersystems gemäß der vorliegenden Erfindung, bei dem das Multi-Prozessor-System mehrere Speicherbusse aufweist.
- Fig. 4 ist eine Blockdarstellung, die die Interna der Bus-Cache-Steuereinrichtung zeigt, welche sich auf die Anhängiges-Rückschreiben-Steuereinrichtung gemäß der vorliegenden Erfindung beziehen.
- Fig. 5 ist eine Blockdarstellung der Cache-Speicherstruktur, die bei der vorliegenden Erfindung verwendet wird.
- Fig. 6 ist ein Schaltbild, das die Unterblocklogik in der Anhängiges-Rückschreiben-Steuereinrichtung gemäß der vorliegenden Erfindung zeigt.
- Fig. 7a ist eine erste Schaltung, die die Cache-Zeilenlogik in der Anhängiges-Rückschreiben-Steuereinrichtung der vorliegenden Erfindung zeigt.
- Fig. 7b ist eine zweite Schaltung, die die Cache-Zeilenlogik in der Anhängiges-Rückschreiben-Steuereinrichtung der vorliegenden Erfindung zeigt.
- Fig. 8a ist eine erste Schaltung, die die globale Anhängiges-Rückschreiben-Steuereinrichtungslogik bei der vorliegenden Erfindung zeigt.
- Fig. 8b ist eine zweite Schaltung, die die globale Anhängiges-Rückschreiben-Steuereinrichtungslogik bei der vorliegenden Erfindung zeigt.
- Fig. 9 ist ein Blockschaltbild, das die Verbindungen zwischen den verschiedenen hierarchischen Logikebenen der Anhängiges-Rückschreiben-Steuereinrichtung gemäß der vorliegenden Erfindung veranschaulicht.
- Es werden Einrichtungen und Verfahren zum Implementieren eines Dual-Verzeichnis-Cache-Steuersystems mit einer Anhängiges-Rückschreiben-Steuereinrichtung offenbart. In der folgenden Beschreibung werden aus Gründen der Erläuterung spezielle Anzahlen, Zeiten, Signale, etc. angegeben, um ein besseres Verständnis der vorliegenden Erfindung zu erreichen. Für einen Fachmann ist es jedoch klar, daß die vorliegende Erfindung auch ohne diese speziellen Details ausgeführt werden kann. An anderen Stellen werden gut bekannte Schaltungen und Einrichtungen in Blockdarstellungsform gezeigt, um die vorliegende Erfindung nicht unnötigerweise zu verdunkeln.
- Es wird jetzt auf Fig. 3a Bezug genommen, welchen eine Blockdarstellungsübersicht eines Mehr-Prozessor-Hochleistungs-Computersystems zeigt, das die Lehren der vorliegen den Erfindung in sich aufnimmt. In Fig. 3a ist eine Hauptspeichereinheit 23 mit einem Speicherbus 25 gekoppelt gezeigt. Obwohl nur eine Hauptspeichereinheit in Fig. 3a veranschaulicht ist, kann der Hauptspeicheradreßraum auf mehrere verschiedene Speichereinheiten aufgeteilt sein. Folglich ist es möglich, daß mehr als eine Speichereinheit mit dem Speicherbus 25 verbunden ist. Ebenfalls mit dem Speicherbus 25 gekoppelt gezeigt ist ein Paar von Prozessor- Subsystemen 20. Die Prozessor-Subsysteme 20 lesen Daten aus dem Hauptspeicher 23 über den Speicherbus 25 und schreiben Daten in diesen hinein. Es können mehr als zwei Prozessor- Subsysteme mit dem Speicherbus 25 gekoppelt werden, um eine zusätzliche Verarbeitungsleistung bereitzustellen.
- Der Speicherbus 25 gemäß Fig. 3a ist eine synchroner paketvermittelter Hochgeschwindigkeitsbus, der zum Übertragen von Daten zwischen einer Mehrzahl von Einrichtungen an dem Speicherbus 25 verwendet wird. Details der Implementierung eines paketvermittelten Speicherbusses sind in der US- Patentanmeldung mit der Seriennummer 07/620,508, angemeldet am 30. November 1990 mit dem Titel "Consistent Packet Switched Memory Bus for Shared Memory Multiprocessors" (siehe EP-A 0 488 770) angegeben. Die meisten Transaktionen auf dem Speicherbus 25 bestehen aus einem durch eine erste Einrichtung ausgesendeten Anforderungspaket, dem eine beliebige Zeitdauer später ein durch eine zweite Einrichtung gesendetes Erwiderungspaket folgt. Beispielsweise kann ein Prozessor-Subsystem 20 an dem Speicherbus 25 ein Leseanforderungspaket senden, das einen Unterblock des Speichers anfordert. Der Hauptspeicher 23 (oder ein anderes Prozessor- Subsystem 20, das den Unterblock "besitzt") würde dann an das anfordernde Prozesser-Subsystem mit einem Leseerwiderungspaket erwidern, das den angeforderten Speicherunterblock enthält. Einige wenige Transaktionen des Speicherbusse 25 bestehen nur aus einem Anforderungspaket, wie beispielsweise eine Schreibanforderung, ohne ein zugehöriges Erwiderungspaket.
- Die Prozessor-Subsysteme 20 gemäß Fig. 3a bestehen aus einer Bus-Cache-Steuereinrichtung 31, einem Cache-Bus 33 und einem Prozessormodul 32. Das Prozessormodul 32 führt die tatsächliche Verarbeitung durch. Die Bus-Cache-Steuereinrichtung 31 führt sämtliche erforderlichen Transaktionen des Speicherbusses 25 für das zugehörige Prozessormodul 32 durch. Die Bus-Cache-Steuereinrichtung 31 und das Prozessormodul 32 kommunizieren miteinander über einen synchronen paketvermittelten Hochgeschwindigkeitsbus, der als Cache-Bus 33 bezeichnet wird. Der Cache-Bus 33 ist insofern dem Speicherbus 25 ähnlich, da jede Transaktion aus einem Anforderungspaket und einem eine beliebige Zeitdauer später folgenden Erwiderungspaket besteht.
- Der Cache-Bus 33 kann von dem Prozessormodul 32 verwendet werden, um mehrere Bus-Cache-Steuereinrichtungen zu unterstützen, die mit separaten Speicherbussen gekoppelt sind. Es wird jetzt auf Fig. 3b Bezug genommen, in der ein alternatives Ausführungsbeispiel der vorliegenden Erfindung mit zwei Speicherbussen veranschaulicht ist. Bei dem Ausführungsbeispiel gemäß Fig. 3b ist eine Prozessormodul 32 mit einem Cache-Bus 33 gekoppelt, welches zwei separate Bus- Cache-Steuereinrichtungen 30 und 32 aufweist. Jede Bus- Cache-Steuereinrichtung 30 und 31 steuert Bustransaktionen auf einem separaten Speicherbus. Die separaten Speicherbusse weisen jeweils ihre eigenen zugehörigen Hauptspeichereinheiten 22 und 24 auf.
- Es wird wieder auf Fig. 3a Bezug genommen. Das Prozessormodul 32 enthält einen Prozessor 21, eine Prozessor- Cache-Steuereinrichtung und einen Cache-Speicher 37. Die Prozessor-Cache-Steuereinrichtung 35 hält ein Prozessor- Cache-Verzeichnis 34, das Adreß-Tags und Statusbits für die in dem Prozessor-Cache-Speicher 37 gespeicherten Cache-Zeilen enthält. Die Prozessor-Cache-Steuereinrichtung 45 ist verantwortlich dafür, daß sie als Schnittstelle zwischen dem Prozessor-Cache-Speicher 37 und dem Prozessor 21 agiert.
- Die Bus-Cache-Steuereinrichtung 31 führt eine Reihe von Cache-Steueroperationen für das Prozessor-Subsystem 20 durch. Der Hauptzweck der Bus-Cache-Steuereinrichtung 31 besteht darin, sämtliche erforderlichen Transaktionen des Speicherbusses 25 für das Prozessor-Subsystem 20 durchzuführen. Die Bus-Cache-Steuereinrichtung 31 hält ein Cache-Verzeichnis 46, das die Adreß-Tags und Statusbits für die Daten in dem Cache-Speicher 37 enthält. Die Bus-Cache-Steuereinrichtung 31 umfaßt eine Anhängiges-Rückschreiben-Steuereinrichtung 40, welche für das Rückschreiben eigener Cache-Zeilen, welche durch neue Informationen ersetzt worden sind, verantwortlich ist, wie weiter unten erläutert wird. Die Funktionalität der Bus-Cache-Steuereinrichtung 31 wird am besten unter Bezugnahme auf die Transaktionen, die sie auf dem Speicherbus 25 verwaltet, erläutert. Die Bus-Cache-Steuereinrichtung 31 führt drei Arten von Bustransaktionen auf dem Speicherbus 25 aus: Lesen, Schreiben und Rückschreiben. Jeder Transaktionsart soll separat behandelt werden.
- Wenn eine Speicheranforderung durch den Prozessor 21 nicht von den Daten in dem Prozessor-Cache-Speicher 37 erfüllt werden kann, sendet die Prozessor-Cache-Steuereinrichtung 35 ein Leseanforderungspaket über den Cache-Bus 33 an die Bus-Cache-Steuereinrichtung 31. Die Bus-Cache-Steuereinrichtung 31 fährt damit fort, ein zugehöriges Leseanforderungspaket über den Speicherbus 25 auszusenden. Die von der Bus-Cache-Steuereinrichtung 31 initiierte Lesetransaktion besteht aus zwei Paketen: Einem von der Bus-Cache-Steuereinrichtung 31 auf den Speicherbus 25 ausgesendeten Leseanforderungspaket und einem von einer anderen Einrichtung an den Speicherbus gesendeten Leseerwiderungspaket. Das Leseanforderungspaket enthält die Adresse des von der Prozessor- Cache-Steuereinrichtung 35 angeforderten Speichers und wird an sämtliche Entitäten an dem Speicherbus 25, ausgesendet. Eine Einrichtung an dem Speicherbus 25 die die angeforderte Speicheradresse enthält, antwortet auf das Leseanforderungspaket mit einem Leseerwiderungspaket, das den Unterblock enthält, welcher die angeforderte Speicheradresse aufweist. Das Leseerwiderungspaket wird grundsätzlich durch den Hauptspeicher 23 ausgegeben, ausgenommen dann, wenn die gewünschte Speicheradresse einen anderen Prozessor-Subsystem 20 "eigen" ist. In diesem Fall muß das Prozessor-Subsystem, das den Unterblock besitzt, ein Leseerwiderungspaket mit den angeforderten Daten erzeugen.
- Wenn das Cache-Seichersystem für ein Prozessor-Subsystem eine bestimmte Cache-Zeile "besitzt", so ist es ihm gestattet, den Inhalt der Cache-Zeile zu modifizieren. Sofern der Prozessor 21 eine Cache-Zeile modifiziert, welche er sich mit anderen Cache-Speichern teilt, führt die Bus-Cache-Steuereinrichtung 31 eine Schreibtransaktion durch, um die Informationen in den Cache-Speichern, die sich die Cache-Zeile teilen, zu aktualisieren. Sofern die Cache-Zeile in Unterblöcke unterteilt ist, führen nicht sämtliche Modifikationen an Daten in einer Cache-Zeile zu einer Schreibtransaktion. In einem System mit Unterblöcken ist es nur erforderlich, diejenigen Unterblöcke auszusenden, welche modifiziert worden sind und sich ebenso in anderen Caches aufhalten. Es sind "Geteilt"-Flags für jeden Unterblock erforderlich, um diese Informationen zu halten, was aber hier nicht näher erörtert wird. Die Offenbarung der US-Patentanmeldung Seriennummer der 07/620,496, hinterlegt am 30. November 1990 mit dem Titel "Consistency Protocols For Shared Multiprocessors" (siehe EP-A-0 489 556).
- Rückschreib-Transaktionen werden von der Bus-Cache-Steuereinrichtung 31 ausgegeben, wenn der Hauptspeicher 23 mit eigenen Unterblöcken aus Cache-Zeilen aktualisiert wird, die nicht länger von dem Prozessor 21 benötigt werden. Rück schreib-Transaktionen auf dem Speicherbus 25 sind an den Hauptspeicher 23 gerichtet und werden von den anderen Prozessor-Subsystemen an dem Speicherbus ignoriert. Um die Rückschreib-Transaktionen vollständig zu erläutern, ist es am besten, Schritt für Schritt die Ereignisse zu erläutern, die stattfinden, wenn es einen Cache-Fehlversuch gibt und keine leeren Cache-Zeilen verfügbar sind. In einem solchen Falle gibt es sowohl eine Rückschreib-Transaktion, bei welcher die Cache-Zeile die alten Informationen loswird, als auch eine Lesetransaktion, welche die neuen Informationen für die neue Cache-Zeile erlangt.
- Es wird auf Fig. 3a Bezug genommen. Wenn der Prozessor 21 Daten anfordert, die nicht in dem lokalen Cache-Speicher 37 gespeichert sind, tritt ein Cache-Fehlversuch auf. Die Prozessor-Cache-Steuereinrichtung 35 gibt ein die geforderte Speicheradresse enthaltendes Leseanforderungspaket an die Bus-Cache-Steuereinrichtung 31 über den Cache-Bus 33 aus. Wie in dem Abschnitt der Lesetransaktion erörtert wurde, antwortet die Bus-Cache-Steuereinrichtung 31 auf das Leseanforderungspaket, indem sie ein entsprechendes Leseanforderungspaket über den Speicherbus 25 aussendet. Schließlich sollte die richtige Speichereinheit oder das richtige Prozessor-Subsystem an dem Speicherbus 25 auf das Leseanforderungspaket mit einem Leseerwiderungspaket antworten, das die angeforderten Daten enthält. Nach dem Ausgeben des Leseanforderungspakets für die neuen Informationen übergibt die Bus-Cache-Steuereinrichtung 31 der Anhängiges-Rückschreiben- Steuereinrichtung 40 die Verantwortung für das Rückschreiben der alten eigenen Unterblöcke aus der zu ersetzenden Cache- Zeile. Die Anhängiges-Rückschreiben-Steuereinrichtung 40 dient als intelligenter Puffer, welcher sämtliche Leseanforderungen für die alten Cache-Zeilendaten behandelt, bis sie in den Hauptspeicher 23 zurückgeschrieben sind.
- Nachdem die Prozessor-Cache-Steuereinrichtung das Leseanforderungspaket an die Bus-Cache-Steuereinrichtung 31 gesendet hat und unabhängig davon, ob die Bus-Cache-Steuer einrichtung 31 das Leseanforderungspaket ausgegeben hat, beginnt die Prozessor-Cache-Steuereinrichtung 35, der Bus- Cache-Steuereinrichtung 31 irgendwelche eigenen Unterblöcke in der Cache-Zeile, welche durch die neuen Informationen ersetzt wird, zu senden. Die Bus-Cache-Steuereinrichtung 31 lenkt diese eigenen Unterblöcke in die Anhängiges-Rückschreiben-Steuereinrichtung 40, welche sie in einen Daten- RAM speichert. Nachdem die Prozessor-Cache-Steuereinrichtung 35 sämtliche der eigenen Unterblöcke in die Anhängiges-Rückschreiben-Steuereinrichtung 40 gesendet hat, markiert die Prozessor-Cache-Steuereinrichtung 35 die Cache-Zeile als ungültig und ist bereit, die neuen Cache-Zeilendaten zu empfangen.
- Nachdem die Abhängiges-Rückschreiben-Steuereinrichtung 40 sämtliche der eigenen Unterblöcke aus der Prozessor-Cache- Steuereinrichtung 35 empfangen hat und die Bus-Cache-Steuereinrichtung 31 eine Leseanforderung für die gewünschten Daten ausgegeben hat, beginnt die Anhängiges-Rückschreiben- Steuereinrichtung 40 damit, die eigene Unterblöcke enthaltenden Rückschreibpakete an den Hauptspeicher 23 zu senden. Das Rückschreiben zum Hauptspeicher 23 tritt unabhängig davon auf, ob die Bus-Cache-Steuereinrichtung ein Leseerwiderungspaket empfangen hat.
- Während diese Transaktionen ablaufen, können andere Prozessor-Subsysteme Schreibtransaktionen zu den in den Hauptspeicher 23 zurückgeschriebenen Unterblöcken ausgeben. In ähnlicher Weise können andere Prozessoren Leseanforderungen an die gleichen Unterblöcke ausgeben. Um die Cache-Konsistenz aufrechtzuerhalten, müssen die folgenden Regeln von der Anhängiges-Rückschreiben-Steuereinrichtung 40 eingehalten werden:
- 1. Wenn ein anderes Prozessor-Subsystem eine Schreibtransaktion an eine Adresse ausgibt, die einem eigenen Unterblock entspricht, bevor der Unterblock in den Hauptspeicher von der Anhängiges-Rückschreiben-Steu ereinrichtung 40 zurückgeschrieben ist, darf das Rückschreiben nicht auftreten, da dann die Anhängiges-Rückschreiben-Steuereinrichtung 40 "veraltete" Daten enthält.
- 2. Wenn ein anderes Prozessor-Subsystem ein Leseanforderungspaket an eine Adresse ausgibt, die einem Unterblock entspricht, den die Anhängiges-Rückschreiben- Steuereinrichtung 40 besitzt, bevor der Unterblock in den Hauptspeicher zurückgeschrieben ist oder bevor ein anderer Prozessor eine Schreibtransaktion an eine Adresse ausgibt, die dem gleichen Unterblock entspricht, so muß dann die Anhängiges-Rückschreiben-Steuereinrichtung 40 mit einem Leseerwiderungspaket erwidern.
- Es ist aus Fig. 3a zu ersehen, daß das Rückschreib- Cache-System gemäß der vorliegenden Erfindung drei separate Cache-Verzeichnisse aufrechterhält: Das Prozessor-Cache-Verzeichnis 34, das Bus-Cache-Steuereinrichtungsverzeichnis 46 und ein kleines Verzeichnis in der Anhängiges-Rückschreiben- Steuereinrichtung.
- Das Prozessor-Cache-Verzeichnis 34 und das Bus-Cache- Steuereinrichtungsverzeichnis 46 speichern die Adreß-Tags und Statusbits für die Informationen in dem Cache-Speicher 37. Die Adreß-Tags und Statusbits in dem Prozessor-Cache- Verzeichnis 34 und dem Bus-Cache-Steuereinrichtungsverzeichnis 46 stimmen üblicherweise überein. Jedoch korrelieren die Adreß-Tags und Statusbits für eine gegebene Cache-Zeile in dem Prozessor-Cache-Verzeichnis 34 und dem Bus-Cache-Steuereinrichtungsverzeichnis 46 nicht immer. Beispielsweise kann es ein, daß die Prozessor-Cache-Steuereinrichtung 35 einen Unterblock aus einer Cache-Zeile in die Bus-Cache-Steuereinrichtung 31 zurückgeschrieben hat, so daß die Prozessor- Cache-Steuereinrichtung 35 nicht mehr den Unterblock "besitzt", aber die Bus-Cache-Steuereinrichtung 31 noch den Unterblock besitzt. Wenn die Bus-Cache-Steuereinrichtung 31 eine Anforderung nach neuen Informationen ausgibt und die Kontrolle für die alten Unterblöcke an die Anhängiges-Rückschreiben-Steuereinrichtung 40 überträgt, stimmt das Bus- Cache-Steuereinrichtungsverzeichnis 46 wieder mit dem Prozessor-Cache-Verzeichnis 34 überein.
- Die Anhängiges-Rückschreiben-Steuereinrichtung 40 hält ein kleines Verzeichnis der eigenen Unterblöcke aufrecht, die sie puffert, bis sie in den Hauptspeicher 23 zurückgeschrieben werden. Jeder der in der Anhängiges-Rückschreiben- Steuereinrichtung 40 gespeicherten Unterblöcke kann in einem von drei Zuständen sein: Gültig, eigen und ungültig. Die Anhängiges-Rückschreiben-Steuereinrichtung 40 verwendet ihr Verzeichnis, um die zwei oben angegebenen Regeln zu implementieren. Wenn ein anderes Prozessor-Subsystem ein Schreiben zu einem der eigenen Unterblöcke in der Anhängiges-Rückschreiben-Steuereinrichtung ausführt, ändert sie den Status des Unterblocks auf nicht eigen, da die Daten in der Anhängiges-Rückschreiben-Steuereinrichtung jetzt veraltet sind. Wenn die Anhängiges-Rückschreiben-Steuereinrichtung 40 ein Leseanforderungspaket von einem anderen Prozessor-Subsystem empfängt, das einen eigenen Unterblock anfordert, antwortet die Anhängiges-Rückschreiben-Steuereinrichtung 40 mit einem Leseerwiderungspaket, das die angeforderten Informationen enthält.
- Fig. 4 veranschaulicht in Blockdarstellungsform die Interna der Bus-Cache-Steuereinrichtung 31, welche verwendet wird, um Cache-Zeilen-Rückschreiboperationen durchzuführen. Andere Teile der Bus-Cache-Steuereinrichtung wurden fortgelassen, um eine Verwirrung zu vermeiden. Die Teile der Bus- Cache-Steuereinrichtung 31, die zum, Durchführen von Rückschreiboperationen verwendet werden, umfassen eine Zuteilungsentscheidungs-Steuereinrichtung 41, eine Bus-Daten- Steuereinrichtung 43, eine Anhängiges-Rückschreiben-Steuereinrichtung 40 und eine Tag-Steuereinrichtung 45 mit einem zugeordneten Cache-Verzeichnis 46, das Adreß-Tags und Statusbits enthält.
- Die Zuteilungsentscheidungs-Steuereinrichtung 41 führt die erforderlichen Speicherbus-Zuteilungsbewerbungsschritte für die Anhängiges-Rückschreiben-Steuereinrichtung 40 durch. Die Zuteilungsentscheidungs-Steuereinrichtung 41 wird von der Anhängiges-Rückschreiben-Steuereinrichtung 40 verwendet, wenn diese den Speicherbus 25 benötigt, um ein Rückschreiben einer eigenen Cache-Zeile durchzuführen oder um ein Leseerwiderungspaket in Erwiderung eines aus einem anderen Prozessor-Subsystem empfangenen Leseanforderungspakets zu senden. Verfahren zum Durchführen der Buszuteilung auf einem paketvermittelten Bus sind in der US-Patentanmeldung mit der Seriennummer 07/621,123, angemeldet am 30. November 1990 mit dem Titel "Arbitration Of Packet Switched Buses, Including Buses for Shared Memory Multiprocessors" angegeben (siehe EP-A 0 488 771).
- Die Busdatensteuereinrichtung 43 führt die zum Senden von "Anforderungs"- und "Erwiderungs"-Paketen auf dem Speicherbus erforderlichen "Verpack"-Operationen aus, sobald die Zuteilungsentscheidungs-Steuereinrichtung 41 den Besitz des Speicherbusses 25 erlangt hat. Die Anhängiges-Rückschreiben- Steuereinrichtung 40 verwendet die Busdaten-Steuereinrichtung 43, um Rückschreib- und Leseerwiderungspakete zu senden. Verfahren und Einrichtungen zum Senden von Paketen auf einem paketvermittelten Bus sind im Stand der Technik gut bekannt, und folglich wird die Busdaten-Steuereinrichtung 43 nicht weiter erörtert.
- Die Tag-Steuereinrichtung 45 kontrolliert das Bus-Cache- Steuereinrichtungsverzeichnis 46 von Adreß-Tags und Statusbits, welche den Zustand des Cache-Speichers 37 reflektieren. Die Tag-Steuereinrichtung 45 liefert ein owned_flag[L]- Signal an die Anhängiges-Rückschreiben-Steuereinrichtung 40. Das [L] bezeichnet einen Unterblockindex, wie später erörtert wird. Das owned_flag[L] wird verwendet, um den Besitz der Unterblöcke aus der Bus-Cache-Steuereinrichtung an die Anhängiges-Rückschreiben-Steuereinrichtung zu übertragen. Die Anhängiges-Rückschreiben-Steuereinrichtung 40 speichert die eigenen Cache-Zeilen, welche in den Hauptspeicher zurückgeschrieben werden müssen, und steuert die Rückschreiboperation. Die Interna der Anhängiges-Rückschreiben-Steuereinrichtung 40 werden jetzt im Detail erläutert.
- Die Steuerlogik in der Anhängiges-Rückschreiben-Steuereinrichtung ist am besten zu erläutern, indem sie in drei hierarchische Ebenen aufgeteilt wird. Die unterste Ebene ist die Unterblocklogik. Die Unterblocklogik ist diejenige Logik, von der gefordert wird, daß sie jeden in der Anhängiges-Rückschreiben-Steuereinrichtung gespeicherten Unterblock kontrolliert. Die nächste Ebene ist die Cache-Zeilen-Logik. Die Cache-Zeilen-Logik ist diejenige Logik, die jede Cache- Zeile in der Anhängiges-Rückschreiben-Steuereinrichtung kontrollieren soll. Die höchste Ebene ist die Globallogik. Die Globallogik verwendet die Informationen aus den beiden niedrigeren Ebenen der Logik bei ihrem Betrieb.
- Fig. 6, 7a, 7b, 8a, 8b und 9 werden benutzt, um die Anhängiges-Rückschreiben-Steuerlogik zu erläutern. In den Fig. 6, 7a, 7b, 8a und 8b sind sämtliche Signale auf der linken Seite des Blattes Eingangssignale und sämtliche Signale auf der rechten Seite des Blattes sind Ausgangssignale. Signalnamen mit dem begleitenden Etikett "(extern)" stellen Signale dar, die mit einer höheren hierarchischen Ebene verbunden sind. Signalnamen ohne das Etikett "(extern)" stellen Signale dar, die mit einer niedrigeren hierarchischen Ebene verbunden sind.
- Die Fig. 6, 7a, 7b, 8a und 8b erläutern eine Anhängiges-Rückschreiben-Steuerlogik in einem System mit dem in Fig. 5 gezeigten Cache-Speicher. Der Cache-Speicher gemäß Fig. 5 enthält M Cache-Zeilen, welche von 1 bis M unter Verwendung eines Index K indexiert sind. Die Cache-Zeilen sind jeweils in N Unterblöcke aufgeteilt, welche von 1 bis N unter Verwendung eines Index L indexiert sind. M und N werden im allgemeinen so ausgewählt, daß sie eine Potenz von 2 ergeben. In den Fig. 6, 7a, 7b, 8a und 8b wird den Signalen, die zu einer speziellen Cache-Zeile gehören, ein angehängter Indexwert [K] gegeben, und den Signalen, die zu einem speziellen Unterblock gehören, wird ein angehängter Indexwert [L] gegeben. Darüber hinaus wird I definiert als log&sub2; M oder die Anzahl von Bits, die zum Darstellen einer beliebigen Zahl zwischen 1 und M erforderlich sind. J wird als die Anzahl von Bits definiert, die für ein Adreß-Tag benötigt werden, welches die Adresse einer Cache-Zeile innerhalb des Hauptspeichers eindeutig identifiziert. Diese Zahl ist definiert als J = A - log&sub2; N - log&sub2; B, wobei A die Gesamtanzahl der Bits ist, die den gesamten Speicheradreßraum definieren, und B die Anzahl der adressierbaren Bytes ist, die in jedem Unterblock [K] gespeichert sind.
- Die Logik für die Anhängiges-Rückschreiben-Steuereinrichtung soll im Detail aus einer "von unten nach oben"-Perspektive erläutert werden. Das heißt, zunächst wird die Unterblocklogik für jeden Unterblock [L] in der Anhängiges- Rückschreiben-Steuereinrichtung unter Bezugnahme auf Fig. 6 erläutert. Die Cache-Zeilenlogik für jede Cache-Zeile [K] wird als nächstes unter Bezugnahme auf Fig. 7a und 7b erläutert. Schließlich wird die globale Anhängiges-Rückschreiben-Steuereinrichtungslogik unter Bezugnahme auf die Fig. 8a und 8b erläutert. Die Verbindung zwischen den verschiedenen hierarchischen Ebenen der Anhängiges-Rückschreiben-Steuereinrichtungslogik ist in Fig. 9 veranschaulicht.
- Es wird auf Fig. 6 Bezug genommen, in der die Steuerlogik für einen einzelnen Unterblock veranschaulicht ist. Jeder Unterblock innerhalb der Anhängiges-Rückschreiben-Steuereinrichtung weist zwei Flip-Flops 61 und 63 auf, welche die beiden Signalbits subblock_valid[L] bzw. subblock_owned[L] erzeugen. Diese Bits geben den Status des Unterblocks in der Anhängiges-Rückschreiben-Steuereinrichtung wieder. Zusätzliche Logik erzeugt das Signal subblock_owned_match [L].
- Wenn das Signalbit subblock_valid[L] 61 angelegt ist, zeigt es an, daß der zugehörige Unterblock in dem Daten-RAM der Anhängiges-Rückschreiben-Steuereinrichtung entweder die gültigen Daten für den Unterblock enthält, welche aus der Prozessor-Cache-Steuereinrichtung für den Cache-Bus empfangen worden sind, oder daß von diesen Daten nicht erwartet wird, daß sie von der Prozessor-Cache-Steuereinrichtung gesendet werden. Folglich wird es gesetzt, wenn last_data_arrived angelegt ist, was signalisiert, daß die Prozessor-Cache-Steuereinrichtung der Anhängiges-Rückschreiben-Steuereinrichtung sämtliche eigenen Unterblöcke gesendet hat, oder wenn die Bus-Cache-Steuereinrichtung das Leseanforderungspaket (siehe Fig. 7b) ausgibt und das zugehörige Eigen-Bit in dem Tag-Verzeichnis nicht gesetzt ist.
- Das Signalbit subblock_valid[L] 61 wird zurückgesetzt, wenn es keine für andere Prozessoren anhängigen Leseerwiderungen gibt, sämtliche erforderlichen Unterblöcke von der Anhängiges-Rückschreiben-Steuereinrichtung aus der Prozessor-Cache-Steuereinrichtung empfangen und zurückgeschrieben worden sind, wenn sie noch eigen sind. Das Rücksetzen des subblock_valid[L]-Signals wird detaillierter in der Beschreibung der Cache-Zeilenlogik erläutert.
- Das subblock_owned[L]-Flip-Flop 63 zeigt an, daß der zugehörige Unterblock im Besitz der Anhängiges-Rückschreiben-Steuereinrichtung ist. Wenn ein Unterblock im Besitz der Anhängiges-Rückschreiben-Steuereinrichtung ist, müssen Leseerwiderungen zu anderen Prozessor-Subsystemen die diesen Unterblock anfordern, gesendet werden, und der Unterblock muß in den Hauptspeicher zurückgeschrieben werden, bevor das subblock_owned[L]-Flip-Flop gelöscht werden kann. Das subblock_owned[L]-Bit 63 wird gesetzt, wenn die Bus-Cache-Steuereinrichtung ein Leseanforderungspaket auf den Speicherbus ausgibt und das zugehörige "Eigen"-Status-Bit in dem Bus- Cache-Steuereinrichtungsverzeichnis 46 (siehe Fig. 3a) gesetzt ist, wie es durch das owned_flag[L] angezeigt wird. Dies überträgt im Endeffekt den "Besitz" des Unterblocks von dem Bus-Cache-Steuereinrichtungsverzeichnis 46 zu der Anhängiges-Rückschreiben-Steuereinrichtung.
- Das subblock_owned[L]-Bit 63 wird zurückgesetzt, wenn das Rückschreiben zum Hauptspeicher durch die Anhängiges- Rückschreiben-Steuereinrichtung durchgeführt wird oder ein anderer Prozessor in den Unterblock schreibt, bevor das Rückschreiben stattfindet, wodurch signalisiert wird, daß die Daten für diesen Unterblock in der Anhängiges-Rückschreiben-Steuereinrichtung veraltet sind. Das das subblock_owned[L]-Bit 63 zurücksetzende Signal wird durch das logische UND eines Signals, das ein Schreiben auf dem Speicherbus erfaßt (wb_or_write), eines eine Cache-Zeilenübereinstimmung erfassenden Signals (cache_line_match) und eines eine Unterblockübereinstimmung erfassenden Signals (mem_bus_addr_dec[L]) gebildet.
- Das subblock_owned_match[L]-Signal zeigt an, daß der aktuelle Unterblock auf dem Speicherbus mit diesem bestimmten Unterblock übereinstimmt und daß der Unterblock im Besitz der Anhängiges-Rückschreiben-Steuereinrichtung ist. Dieses Signal wird von den nächsten beiden höheren Ebenen der Anhängiges-Rückschreiben-Steuereinrichtungslogik verendet. Das subblock_owned_match[L]-Signal wird durch das logische UND des Signals cache line match (welches signalisiert, daß die Adresse auf dem Speicherbus mit der Adresse dieser Cache-Zeile übereinstimmt), des Signals mem_bus_addr_dec[L] (welches signalisiert, daß der Unterblock auf dem Speicherbus mit diesem Unterblock übreinstimmt) und des Signals subblock_owned[L] erzeugt.
- Es wird auf die Fig. 7a und 7b Bezug genommen, in denen die Steuerlogik für eine einzelne Cache-Zeile veranschaulicht ist. Die im vorhergehenden Abschnitt beschriebe nen Signale subblock_valid[1-N], subblock_owned[1-N], und subblock_owned_match[1-N] sind Eingangssignale aus den Unterblocklogikeinheiten, die dieser speziellen Cache-Zeile zugeordnet sind.
- Das Signal cache_line_valid wird von dem Zeitpunkt an angelegt, zu dem die Prozessor-Cache-Steuereinrichtung eine Leseanforderung ausgibt, bis zu dem Zeitpunkt, zu dem sämtliche erforderlichen Unterblöcke zum Hauptspeicher zurückgeschrieben worden sind und keine weiteren Leseerwiderungen an andere anfordernde Prozessoren ausgegeben werden müssen. Dieses Signal wird durch ein logisches ODER der der Cache- Zeile zugeordneten Bits subblock_valid[1-N], subblock_owned[ 1-N], rd_req_pending und rd_reply_pending.
- Das Signalbit rd_req_pending 73 wird gesetzt, wenn die Prozessor-Cache-Steuereinrichtung eine Leseanforderung an die Bus-Cache-Steuereinrichtung ausgibt. Dieses Signal zeigt an, daß die Prozessor-Cache-Steuereinrichtung eine neue Cache-Zeile angefordert hat, aber die Bus-Cache-Steuereinrichtung keine zugehörige Leseanforderung auf den Speicherbus ausgesendet hat. Das Signalbit rd_req_pending 73 wird zurückgesetzt, wenn die Bus-Cache-Steuereinrichtung die zugehörige Leseanforderung auf den Speicherbus aussendet. Zu diesem Zeitpunkt wird das Signal Set_subblock_valid angelegt, um den Besitz der eigenen Unterblöcke von der Bus- Cache-Steuereinrichtung zu der Anhängiges-Rückschreiben- Steuereinrichtung zu übertragen. Bei den nicht der Bus- Cache-Steuereinrichtung eigenen Unterblöcken sind die zugehörigen subblock_valid[L]-Signalbits auf hohen Pegel gesetzt.
- Das rd_reply_pending-Signalbit 75 wird immer dann gesetzt, wenn ein weiterer Prozessor in dem System eine Leseanforderung für einen Unterblock ausgibt, den die Anhängiges-Rückschreiben-Steuereinrichtung besitzt. Das rd_reply_pending-Signalbit 75 zeigt an, daß die Anhängiges- Rückschreiben-Steuereinrichtung eines oder mehrere die eigenen Unterblöcke enthaltenden Leseerwiderungspakete zurück an die richtigen anfordernden Prozessorsubsysteme senden muß, bevor die Cache-Zeile gereinigt werden kann. Das Signalbit rd_reply_pending 75 wird durch ein logisches UND des Signals other_rd_req und eines Signals gesetzt, das eine Adreßübereinstimmung zwischen dem Speicherbus und eines Unterblocks in dieser Cache-Zeile anzeigt. Das zum Setzen des Signalbits rd_reply_pending 75 verwendete Signal wird darüber hinaus verwendet, um die Anhängiges-Rückschreiben-Globallogik zu informieren, indem ein Signal queue_other_rd_req[K] erzeugt wird, um die Leseanforderung in eine FIFO-Warteschlange einzureihen, die eine Liste von Leseerwiderungen speichert, die ausgesendet werden müssen.
- Das rd_reply_pending-Bit 75 wird zurückgesetzt, wenn sämtliche Leseanforderungen aus anderen Prozessoren bedient worden sind, indem die richtigen Erwiderungspakete gesendet wurden. Dieses Rücksetzen wird durch ein Signal durchgeführt, das anzeigt, daß die FIFO-Warteschlange, die die Liste von Leseerwiderungen speichert, die ausgesendet werden müssen, leer ist.
- Die cache_line_addr-Flip-Flops 71 speichern die aktuelle Adresse der zugehörigen Cache-Zeile. Das Signal mem_bus_addr_match wird angelegt, wenn die Adresse für das Kommando auf dem Speicherbus mit der in den cache_line_addr- Flip-Flops 71 gespeicherten Adresse übereinstimmt.
- Das Signal cache_line_busy[K] ist ähnlich dem Signal cache_line_valid mit der Ausnahme, daß es nur dann angelegt wird, wenn die Prozessor-Cache-Steuereinrichtung ein Paket über den Cache-Bus mit der gleichen Adresse sendet, die in den cache_line_addr-Flip-Flops 71 gespeichert ist. Dies gestattet es der Prozessor-Cache-Steuereinrichtung, mehrere ausstehende Leseanforderungen an die gleiche Cache-Zeile zu senden, wie sie beispielsweise zum Vorab-Heranholen zusätzlicher Daten innerhalb der Cache-Zeile implementiert sein könnten.
- Die Leitung cache_subblock_xfer wird für jeden Unterblock angelegt, den die Prozessor-Cache-Steuereinrichtung zu der Anhängiges-Rückschreiben-Steuereinrichtung sendet. Da das Signal cache_subblock_xfer logisch mit einem Signal zu UND-verknüpft wird, welches eine Adreßübereinstimmung zwischen dem aktuellen cache_bus_addr und jedem cache_line addr anzeigt, wird höchstens ein Signal cache_xfer_match[K] für jeden eigenen Unterblock angelegt, den die Prozessor-Cache- Steuereinrichtung zu der Anhängiges-Rückschreiben-Steuereinrichtung sendet. Das Signal cache_xfer_match[K] wird von der Anhängiges-Rückschreiben-Steuereinrichtung-Globalsteuereinrichtung verwendet, um eine Rückschreibanforderung in eine FIFO-Warteschlange zu laden, die anhängige Unterblockrückschreiboperationen speichert.
- Das Signal rst_subblock_valid wird angelegt, wenn sämtliche der subblock_valid[L]-Bits für die Cache-Zeile gesetzt sind, es kein rd_req_pending für die Cache-Zeile gibt, es kein rd_reply_pending für die Cache-Zeile gibt und keiner der Unterblöcke eigen ist (wie es durch ein logisches NOR sämtlicher subblock_owned[L]-Bits angezeigt wird). Dies zeigt an, daß sämtliche erforderliche Unterblöcke von der Anhängiges-Rückschreiben-Steuereinrichtung empfangen worden sind, gegebenenfalls zu dem Hauptspeicher zurückgeschrieben wurden und keine weiteren Leseerwiderungen an andere anfordernde Prozessorsubsysteme ausgegeben werden müssen. Das Signal rst_subblock_valid veranlaßt, daß sämtliche zugeordneten subblock_valid[L]-Bits für die Cache-Zeile zurückgesetzt werden und dadurch das Signal cache_line_valid zurückgesetzt wird. Dies signalisiert, daß die Anhängiges-Rückschreiben- Steuereinrichtung ihre Aufgabe zum Zurückschreiben der eigenen Unterblöcke der Cache-Zeile erfüllt hat.
- Die Leitung queue_other_rd_req[K] zeigt an, wenn ein anderer Prozessor einen eigenen Unterblock aus dieser Cache- Zeile in der Anhängiges-Rückschreiben-Steuereinrichtung angefordert hat. Die Leitung queue_other_rd_req[K] wird angelegt, wenn irgendeines der subblock owned match[L]-Bits eine Adreßübereinstimmung mit einem Paket auf dem Speicherbus anzeigt und das Signal other_rd_req anzeigt, daß das Paket auf dem Speicherbus eine Leseanforderung auf einem anderen Prozessorsubsystem ist. Das Signal queue_other_rd_req bewirkt, daß eine Leseanforderung in eine FIFO-Warteschlange in der Globallogik, die eine Liste Von auszusendenden Leseerwiderungen speichert, eingereiht werden soll.
- Das Signal rd_rply_enable[K] für die Cache-Zeile wird angelegt, wenn entweder sämtliche angeforderten eigenen Unterblöcke durch den Prozessor-Cache ausgegeben worden sind oder wenn diese Cache-Zeilen-Steuereinrichtung nicht verwendet wird. Dieses Signal wird von der Globallogik verwendet, um zu bestimmen, ob die Zuteilungsentscheidungssteuereinrichtung versuchen sollte, einen Zugriff auf den Speicherbus zu erlangen.
- Das Signal last_data_arrived zeigt an, wenn der letzte einen eigenen Unterblock aus der Prozessor-Cache-Steuereinrichtung in die Anhängiges-Rückschreiben-Steuereinrichtung übertragende Zyklus aufgetreten ist. Dieses Signal ist die logische UND-Verknüpfung von cache_line_valid, last_data_xferred und wb_fifo_dec[K].
- Die Fig. 8a und 8b veranschaulichen die globale Anhängiges-Rückschreiben-Steuereinrichtungslogik. Wenn die Prozessor-Cache-Steuereinrichtung eine Leseanforderung ausgibt, dekodiert der Dekodierer 82 die Leseanforderungssteuerinformationen und weist eine Cache-Zeile zu, indem er unter Verwendung eines Prioritätskodierers 89 die Cache-Zeilen überprüft, die nicht beschäftigt sind. Dies bewirkt, daß eines der Signale cache_line_allocated[K] angelegt wird, welches die Adresse in die cache_line_addr-Flip-Flops 71 der ausgewählten Cache-Zeilen-Steuereinrichtung lädt.
- Der Daten-RAM 81 speichert die Daten für sämtliche Unterblöcke, die die Anhängiges-Rückschreiben-Steuereinrichtung besitzt. Die Adresse zum Schreiben der Daten in dem Daten-RAM 81 wird durch Verkettung der log&sub2;N Adreßbits niedriger Ordnung, die den Unterblock spezifizieren, und der I Adreßbits, welche die Cache-Zeile spezifizieren, die die Adresse für die Daten enthält, gebildet. Die in dem Daten- RAM 81 gespeicherten eigenen Unterblöcke werden schließlich in den Hauptspeicher über den Speicherbus zurückgeschrieben, vorausgesetzt, daß die Daten nicht veraltet geworden sind.
- Das wb-FIFO 83 enthält eine kodierte Liste der Unterblöcke in den Daten-RAM 81, die in den Hauptspeicher zurückgeschrieben werden müssen. Diese Unterblöcke können solange nicht zum Hauptspeicher gesendet werden, bis sämtliche Signale rd_req_pending[1-M] nicht mehr angelegt sind, was anzeigt, daß die Leseanforderung durch die Bus-Cache-Steuereinrichtung ausgegeben worden ist und der Besitz der Unterblöcke auf die Anhängiges-Rückschreiben-Steuereinrichtung übertragen wurde. Sobald die Unterblöcke bereit sind, zu dem Speicherbus übertragen zu werden, muß das richtige subblock_owned[L]-Bit erneut überprüft werden, um zu sichern, daß es noch gesetzt ist. Sofern eine Schreibanforderung durch einen anderen Prozessor auf einen bestimmten Unterblock aufgetreten ist, wird sein subblock_owned[L]-Bit nicht gesetzt sein. Wenn das subblock owned[L]-Bit nicht gesetzt ist, dann darf der Unterblock nicht in den Hauptspeicher zurückgeschrieben werden, da der Unterblock veraltet ist. Eine ähnliche Überprüfung kann ausgeführt werden, bevor ein Zugriff auf den Speicherbus angefordert wird, jedoch liegen die Details der Speicherbuszuteilungsentscheidungslogik außerhalb des Umfangs dieses Patents.
- Das rd-FIFO 85 enthält eine kodierte Liste der Leseanforderungen, die von den anderen Prozessorsubsystemen an die der Anhängiges-Rückschreiben-Steuereinrichtung eigenen Unterblöcke ausgegeben wurden. Die Anhängiges-Rückschreiben- Steuereinrichtung erwidert nicht auf die anhängigen Leseanforderungen in dem rd-FIFO 85, bis sämtliche eigenen Unterblöcke, welche ersetzt werden, aus der Prozessor-Cache-Steuereinrichtung gesendet worden sind. Die Anhängiges-Rückschreiben-Steuereinrichtung muß auch sämtliche der Leseanforderungen in dem rd-FIFO 85 antworten, bevor die Unter blöcke in der Anhängiges-Rückschreiben-Steuereinrichtung ungültig gemacht werden können.
- Der Daten-RAM 81, der wb-FIFO 83 und der rd-FIFO brauchen nicht als einzelne RAMs oder FIFOs implementiert zu sein. Sie können jeweils zusammen mit so vielen RAMs und FIFOs implementiert sein, wie es Cache-Zeilen gibt. Diese Lösung beseitigt die Abhängigkeit von sämtlichen der Cache- Zeilen beim Entleeren des wb-FIFO 83 und des rd-FIFO 85. Wenn beispielsweise ein einzelner RAM verwendet wird, um den rd-FIFO 85 zu implementieren, kann es sein, daß die der Leseanforderung an der Spitze der Warteschlange entsprechende Cache-Zeile noch nicht die Daten aus der Prozessor- Cache-Steuereinrichtung empfangen hat. Dies würde verhindern, daß andere Leseanforderungen in dem rd-FIFO 85, die Informationen aus anderen Cache-Zeilen anfordern, fortfahren, selbst wenn die Daten in dem Daten-RAM 81 verfügbar sind.
- Die Verbindungen zwischen den verschiedenen hierarchischen Ebenen der in den Fig. 6, 7a, 7b, 8a und 8b gezeigten Logik sind in Fig. 9 veranschaulicht. Die einzelne globale Anhängiges-Rückschreiben-Steuereinrichtungslogikeinheit wird im folgenden als Globallogik bezeichnet. Jeder Cache- Zeilen-Logikeinheit wird eine Bezeichnung Cx gegeben, wobei x ein Wert von 1 bis M ist, der der Cache-Zeile entspricht. Jeder Unterblock-Logikeinheit wird eine Bezeichnung Cx.SBy gegeben, wobei x ein Wert von 1 bis M ist, der der Cache- Zeile entspricht, und y ein Wert von 1 bis N ist, der dem Unterblock entspricht. In Fig. 9 sind drei Cache-Zeilen- Logikeinheiten gezeigt mit jeweils zwei Unterblocklogikeinheiten für jede Cache-Zeilen-Logikeinheit. Folglich ist das in Fig. 9 gezeigte System ein vollständiges System, bei dem es drei Cache-Zeilen gibt (M = 3), von denen jede zwei Unterblöcke aufweist (N = 2). Bei dem gegenwärtig bevorzugten Ausführungsbeispiel weist der Cache-Speicher zwei Cache- Zeilen (M = 2) auf, welche jeweils vier Unterblöcke aufweisen (N = 4).
- Die globale Anhängiges-Rückschreiben-Steuerlogik weist zwei externe Eingangssignale und vier externe Ausgangssignale auf. Die zwei externen Eingangssignale bestehen aus dem Cache-Bus aus der Prozessor-Cache-Steuereinrichtung und dem Speicherbus. Die externen Ausgangssignale sind die Signale enable_subblock_xfer, arb_rq_rd_reply, arb_rq_wb und der Speicherbus. Die Signale arb_rq_rd_reply und arb_rq_wb_ werden für die Speicherbuszuteilungsentscheidung verwendet.
- Die Globallogik weist darüber hinaus verschiedene interne Eingangssignale und Ausgangssignale auf, welche die Cache-Zeilen-Logikeinheiten und die Unterblocklogikeinheiten verbinden. Die Globallogikausgangsleitungen 91 führen die Signale issued_rd_req, mem_bus_addr, cache_bus_addr, cache_subblock_xfer, other_rd_req und rd_fifo_empty zu jeder Cache-Zeilen-Logikeinheit C1-CM. Die Globallogikausgangsleitungen 91 führen darüber hinaus die geeigneten Signale cache_line_allocated[K] und wb_fifo_dec[K] zu jede Cache- Logikeinheit CK, wobei K von 1 bis M reicht. Die Globallogikausgangsleitungen 93 führen Signale zu sämtlichen der Unterblocklogikeinheiten. Die Globallogikausgangsleitungen 93 führen das Signal wb_or_write zu jeder Unterblocklogikeinheit und das richtige mem_bus_addr_dec[L]-Signal zu jeder Unterblocklogik Cx.SBL. Die Globallogikeingangsleitungen 95 führen die Signale cache_line_busy[K], cache_line_valid[K], cache_xfer_match[K], rd_req_pending[K], last_data_xfer, queue_other_rd_req[K] und rd_rply_enable[K] von jeder Cache- Zeilen-Logik CK, wobei K von 1 bis M reicht. Die Globallogikeingangsleitungen 97 führen die Signale subblock_owned[K, L] und subblock_owned_match[K, L] von jeder Unterblocklogikeinheit CK.SBL, wobei K von 1 bis M und L von 1 bis N reicht.
- Die Cache-Zeilen-Logikeinheiten rechts von der Globallogik empfangen Eingangssignale aus der Globallogik und den zugehörigen Unterblöcken. Jede Cache-Zeilen-Logik CK empfängt die Globallogikausgangsleitungen 91, die oben als Ein gangssignale beschrieben wurden. Jede Cache-Zeilen-Logik CK empfängt darüber hinaus die Signale subblock_valid[1-N], subblock_owned[1-N] und subblock_owned_match[1-N] aus den zugehörigen Unterblöcken L über die Unterblockausgangsleitungen 99. Die Cache-Zeilen-Logikeinheiten geben die Globallogikeingangsleitungen 95, die oben beschrieben wurden, aus. Jede Cache-Zeilen-Logikeinheit gibt darüber hinaus die Signale set_subblock_valid, rst_subblock_valid, last_data_arrived und cache_line_match auf den Cache-Zeilen-Ausgangsleitungen 92 an jede zugeordnete Unterblocklogikeinheit aus.
- Die Unterblocklogikeinheiten empfangen Eingangssignale aus der zugehörigen Cache-Zeilen-Logikeinheit, der Globallogik und der Tag-Steuereinrichtung. Die Unterblock-Logikeinheiten empfangen jeweils die Globallogikausgangssignalleitungen 93 aus der Globallogik und die Cache-Zeilen-Ausgangssignalleitungen 92 aus der zugehörigen Cache-Zeilen-Logik. Jede Unterblocklogikeinheit empfängt darüber hinaus das Eingangssignal owned_flag[L] aus der Tag-Steuereinrichtung in der Bus-Cache-Steuereinrichtung. Dieses Signal wird verwendet, um den Besitz von der Bus-Cache-Steuereinrichtung zu der Anhängiges-Rückschreiben-Steuereinrichtung zu übertragen. Jede Unterblocklogikeinheit gibt die Globallogikeingangssignalleitungen 97 und die oben beschriebenen Unterblock-Zu-Cache-Zeilen-Signale aus.
- Im vorstehenden wurden Einrichtungen und Verfahren zum Implementieren eines Dual-Verzeichnis-Cache-Steuersystems mit einer Anhängiges-Rückschreiben-Cache-Steuereinrichtung in einem Multi-Prozessorsystem beschrieben. Es ist vorgesehen, daß Änderungen und Modifikationen von einem Fachmann an den Einrichtungskomponenten und Anordnungen von Elementen gemäß der vorliegenden Erfindung ausgeführt werden können, ohne vom Umfang der Erfindung abzuweichen. Beispielsweise könnte, obwohl die Anhängiges-Rückschreiben-Steuereinrichtung so beschrieben wurde, daß sie in einem Cache-Steuersystem betrieben wird, das in zwei separate Einheiten, die Bus-Cache-Steuereinrichtung und die Prozessor-Cache-Steuer einrichtung, unterteilt worden ist, die Anhängiges-Rückschreiben-Steuereinrichtung in einem beliebigen Rückschreib- Cache-Steuersystem verwendet werden, das einen paketvermittelten Speicherbus verwendet.
Claims (15)
1. Ein Computersystem mit einem ersten
Prozessor-Subsystem und einem Hauptspeicher (23), wobei das erste
Prozessor-Subsystem und der Hauptspeicher (23) über einen
paketvermittelten Speicherbus miteinander gekoppelt sind, wobei
das erste Prozessor-Subsystem ein
Rückschreib-Cache-Speichersystem und einen ersten Prozessor aufweist, wobei das
Rückschreib-Cache-Speichersystem aufweist:
einen Cache-Speicher, wobei der Cache-Speicher
wenigstens eine Cache-Zeile aufweist, wobei jede der Cache-Zeilen
Informationen speichert;
ein Cache-Verzeichnis (46), wobei das
Cache-Verzeichnis (46) die in dem Cache-Speicher gespeicherten
Informationen beschreibt, wobei das Cache-Verzeichnis (46) ein Adreß-
Tag und eine Mehrzahl von Statusbits für jede Cache-Zeile in
dem Cache-Speicher aufweist, wobei die Mehrzahl von
Statusbits ein Gültig-Bit (valid bit) und ein Eigene-Bit (owned
bit) umfaßt;
ein Cache-Steuersystem, wobei das Cache-Steuersystem
mit dem Cache-Speicher und dem Cache-Verzeichnis (46)
gekoppelt ist, wobei das Cache-Steuersystem ferner mit dem
paketvermittelten Speicherbus gekoppelt ist, wobei das Cache-
Steuersystem das Cache-Verzeichnis (46) aufrechterhält;
eine Ausstehendes-Rückschreiben-Steuereinrichtung
(40), wobei die Ausstehendes-Rückschreiben-Steuereinrichtung
(40) mit dem Cache-Steuersystem gekoppelt ist, wobei die
Ausstehendes-Rückschreiben-Steuereinrichtung (40) aufweist:
einen Datenspeicher (81) zum Puffern einer Mehrzahl
von eigenen (owned) Cache-Zeilen, wobei jede der eigenen
Cache-Zeilen eine zugehörige Hauptspeicheradresse hat;
ein Verzeichnis zum Speichern eines Rückschreib-
Adreß-Tags und einer Mehrzahl von Statusbits für jede der
Mehrzahl von eigenen Cache-Zeilen, die in dem Datenspeicher
gespeichert sind, wobei das Rückschreib-Adreß-Tag eine
Hauptspeicheradresse der eigenen Cache-Zeile definiert;
einen Rückschreibspeicher (83), wobei der
Rückschreibspeicher eine kodierte Liste von in dem Datenspeicher
gespeicherten eigenen Cache-Zeilen, die in den Hauptspeicher
(23) zurückgeschrieben werden müssen, speichert;
eine Ausstehendes-Rückschreiben-Steuerlogikeinheit
zum Steuern der Ausstehendes-Rückschreiben-Steuereinrichtung
(40) derart, daß jede in der kodierten Liste in dem
Rückschreibspeicher aufgelistete eigene Cache-Zeile zurück in
den Hauptspeicher (23) geschrieben wird, nachdem die
jeweilige eigene Cache-Zeile ersetzt worden ist;
wobei das Cache-Steuersystem aufweist:
eine Einrichtung zum Ausgeben einer Anforderung nach
einer neuen Zeile von Informationen für eine eine eigene
Cache-Zeile in dem Cache-Speicher speichernde Cache-Zeile
über den paketvermittelten Speicherbus;
eine Einrichtung zum Kopieren der eigenen Zeile von
Informationen aus der Cache-Zeile in dem Cache-Speicher zu
einer Ausstehendes-Rückschreiben-Steuereinrichtung (40),
nachdem das Cache-Steuersystem eine Speicheranforderung aus
dem ersten Prozessor empfangen hat, aber unabhängig von der
Ausgabe einer Anforderung nach einer neuen Zeile von
Infor
mationen, wobei die
Ausstehendes-Rückschreiben-Steuereinrichtung (40) ferner aufweist:
eine Einrichtung zum Ausführen der Pufferung der
eigenen Zeile von Informationen aus dem Cache-Speicher;
eine Einrichtung zum Ausführen des Speicherns eines
Rückschreib-Adreß-Tags und einer Mehrzahl von Statusbit für
die eigene Zeile von Informationen, wobei das Rückschreib-
Adreß-Tag die zugehörige Hauptspeicheradresse der eigenen
Zeile von Informationen ist;
eine Einrichtung zum Rückschreiben der eigenen Zeile
von Informationen zu dem Hauptspeicher (23), wenn keine
Leseanforderungen für die eigene Zeile von Informationen
anhängig sind;
eine Einrichtung zum Ausführen des Ersetzens der
eigenen Zeile von Informationen durch die angeforderte neue
Zeile von Informationen in der Cache-Zeile des
Cache-Speichers.
2. Das ein Rückschreib-Cache-Speichersystem
enthaltende Computersystem nach Anspruch 1, wobei die
Ausstehendes-Rückschreiben-Steuereinrichtung (40) ferner
gekennzeichnet ist durch:
einen Leseanforderungsspeicher, wobei der
Leseanforderungsspeicher eine Liste von Leseanforderungen speichert,
die aus einem zweiten mit dem paketvermittelten Speicherbus
gekoppelten Prozessor-Subsystem empfangen worden sind, wobei
die Leseanforderungen die eigenen Cache-Zeilen in dem
Datenspeicher anfordern, und
wobei die
Ausstehendes-Rückschreiben-Steuerlogikeinheit eine Leseanforderungserwiderung zu dem zweiten
Prozes
sor-Subsystem für jede in dem Leseanforderungsspeicher
gespeicherte Leseanforderung sendet.
3. Das Computersystem nach Anspruch 2, wobei die
Mehrzahl von Statusbits in der
Ausstehendes-Rückschreiben-Steuereinrichtung (40) gekennzeichnet ist durch ein Gültig-Bit
und ein Eigene-Bit.
4. Das Computersystem nach Anspruch 3, wobei die
Ausstehendes-Rückschreiben-Steuerlogikeinheit ferner
gekennzeichnet ist durch eine Einrichtung zum Rücksetzen des Eigene-
Statusbits für eine in dem Datenspeicher gespeicherte eigene
Cache-Zeile, wenn eine Schreibtransaktion auf dem
paketvermittelten Speicherbus zu der zugehörigen
Hauptspeicheradresse der eigenen Cache-Zeile auftritt, so daß die
Ausstehendes-Rückschreiben-Steuereinrichtung (40) die eigene Cache-
Zeile nicht zurückschreibt.
5. Das Computersystem nach Anspruch 4, wobei der
Rückschreibspeicher in der
Ausstehendes-Rückschreiben-Steuerlogikeinheit gekennzeichnet ist durch einen FIFO-Speicher.
6. Das Computersystem nach Anspruch 5, wobei der
Leseanforderungsspeicher in der
Ausstehendes-Rückschreiben-Steuerlogikeinheit gekennzeichnet ist durch einen FIFO-Speicher.
7. Das Computersystem nach Anspruch 6, wobei das Cache-
Steuersystem gekennzeichnet ist durch:
eine Bus-Cache-Steuereinrichtung, wobei die Bus-
Cache-Steuereinrichtung (31) eine Schnittstelle des Cache-
Steuersystems zu dem paketvermittelten Speicherbus bildet,
wobei die Bus-Cache-Steuereinrichtung (31) ein erstes Cache-
Verzeichnis aufweist;
eine Prozessor-Cache-Steuereinrichtung (35), wobei
die Prozessor-Cache-Steuereinrichtung (35) eine
Schnittstelle des Cache-Speichers zu einem ersten Prozessor in dem
ersten Prozessor-Subsystem bildet, wobei die Prozessor-
Cache-Steuereinrichtung (35) ein zweites Cache-Verzeichnis
aufweist; und
einen paketvermittelten Cache-Bus, wobei der
paketvermittelte Cache-Bus die Bus-Cache-Steuereinrichtung (31)
und die Prozessor-Cache-Steuereinrichtung (35) koppelt.
8. Das Computersystem nach Anspruch 7, wobei jede der
Cache-Zeilen ferner in M Unterblöcke unterteilt ist, wobei
jeder der Unterblöcke separate Statusbits aufweist, wobei
jeder der Unterblöcke der Cache-Zeilen als einzelner
Speicherblock behandelt wird.
9. Das Computersystem nach Anspruch 8, wobei die
Ausstehendes-Rückschreiben-Steuereinrichtung (40) ferner
gekennzeichnet ist durch:
eine Einrichtung zum Empfangen und Speichern
wenigstens einer Leseanforderung aus einem zweiten Prozessor-
Subsystem, wobei die Leseanforderung die eigene Zeile von
Informationen anfordert;
eine Einrichtung zum Erwidern auf die Leseanforderung
aus dem zweiten Prozessor-Subsystem mit einer
Leseanforderungserwiderung an das zweite Prozessor-Subsystem, wobei die
Leseanforderungserwiderung die eigene Zeile von
Informationen enthält.
10. Das Computersystem nach Anspruch 9, wobei die
Mehrzahl von Statusbits in der
Ausstehendes-Rückschreiben-Steuereinrichtung (40) ein Gültig-Bit und ein Eigene-Bit umfaßt.
11. Das Computersystem nach Anspruch 10, wobei die
Ausstehendes-Rückschreiben-Steuereinrichtung (40) ferner
gekennzeichnet ist durch:
eine Einrichtung zum Empfangen einer Mehrzahl von
Schreibanforderungen, wobei die Schreibanforderungen zu der
Hauptspeicheradresse der eigenen Zeile von Informationen
schreiben;
eine Einrichtung zum Antworten auf die
Schreibanforderungen, indem das Eigene-Bit der eigenen Zeile von
Informationen zurückgesetzt wird, so daß die eigene Zeile von
Informationen nicht in den Hauptspeicher (23)
zurückgeschrieben wird.
12. Ein Verfahren für ein Computersystem mit einem ersten
Prozessor-Subsystem und einem Hauptspeicher (23), die über
einen paketvermittelten Speicherbus miteinander gekoppelt
sind, wobei das erste Prozessof-Subsystem einen ersten
Prozessor und ein Rückschreib-Cache-Speichersystem mit einem
Cache-Speicher mit mehr als einer Cache-Zeile aufweist,
wobei das Rückschreib-Cache-Speichersystem ferner ein Cache-
Verzeichnis (46) aufweist, das ein Adreß-Tag und eine
Mehrzahl von Statusbits für jede Cache-Zeile in dem
Cache-Speicher aufweist, wobei die Mehrzahl von Statusbits ein Gültig-
Bit und ein Eigene-Bit umfassen, und wobei das Rückschreib-
Cache-Speichersystem ein mit dem Cache-Speicher und dem
Cache-Verzeichnis gekoppeltes Cache-Steuersystem und eine
mit dem Cache-Steuersystem gekoppelte
Ausstehendes-Rückschreiben-Steuereinrichtung (40) aufweist, wobei das
Verfahren die Cache-Zeileh in dem ersten Prozessor-Subsystem-
Cache-Speicher (23) ersetzt, wobei das Verfahren die
Schritte umfaßt:
Ausgeben einer Anforderung nach einer neuen Zeile von
Informationen für eine eine eigene Zeile in dem ersten
Pro
zessor-Subsystem-Cache-Speicher speichernde erste Cache-
Zeile über den paketvermittelten Speicherbus;
Kopieren der eigenen Zeile von Informationen aus der
ersten Cache-Zeile des Prozessor-Subsystem-Cache-Speichers
in die Ausstehendes-Rückschreiben-Steuereinrichtung (40),
nachdem das Cache-Steuersystem eine Speicheranforderung aus
dem ersten Prozessor empfangen hat, aber unabhängig von dem
Ausgeben einer Anforderung nach einer neuen Zeile von
Informationen, wobei die
Ausstehendes-Rückschreiben-Steuereinrichtung (40) die eigene Zeile von Informationen puffert;
Aufnehmen der anforderten neuen Zeile von
Informationen in die erste Cache-Zeile des ersten Prozessor-Subsystem-
Cache-Speichers;
Rückschreiben der eigenen Zeile von Informationen,
die in der Ausstehendes-Rückschreiben-Steuereinrichtung (40)
gespeichert ist, zu dem Hauptspeicher (23), wobei der
Schritt des Rückschreibens der eigenen Zeile von
Informationen nach dem Schritt des Anforderns der neuen Zeile von
Informationen und dann, wenn keine Leseanforderungen für die
eigene Zeile von Informationen anhängig sind, auftritt.
13. Das ein Verfahren zum Ersetzen der Cache-Zeilen in
dem ersten Prozessor-Subsystem-Cache-Speicher umfassende
Verfahren für ein Computersystem nach Anspruch 12, wobei der
Schritt des Rückschreibens der eigenen Zeile von
Informationen in die Ausstehendes-Rückschreiben-Steuereinrichtung (40)
ferner gekennzeichnet ist durch:
Empfangen von Leseanforderungen für die eigene Zeile
von Informationen aus einem zweiten Prozessor-Subsystem, das
mit dem paketvermittelten Speicherbus gekoppelt ist; und
Antworten auf die Leseanforderungen nach der eigenen
Zeile von Informationen aus dem zweiten Prozessor-Subsystem,
indem eine Leseanforderungserwiderung an das zweite
Prozessor-Subsystem gesendet wird, wobei die
Leseanforderungserwiderung die eigene Zeile von Informationen enthält.
14. Das Verfahren zum Ersetzen der Cache-Zeilen in dem
ersten Prozessor-Subsystem-Cache-Speicher nach Anspruch 13,
wobei der Schritt des Rückschreibens der eigenen Zeile von
Informationen in die
Ausstehendes-Rückschreiben-Steuereinrichtung (40) ferner gekennzeichnet ist durch:
Empfangen von Schreibanforderungen zu der eigenen
Zeile von Informationen aus einem zweiten
Prozessor-Subsystem, das mit dem paketvermittelten Speicherbus gekoppelt
ist; und
Antworten auf die Schreibanforderungen zu der eigenen
Zeile von Informationen aus dem zweiten Prozessor-Subsystem,
indem die eigene Zeile von Informationen nicht in den
Hauptspeicher (23) zurückgeschrieben wird.
15. Das Verfahren zum Ersetzen von Cache-Zeilen in dem
ersten Prozessor-Subsystem-Cache-Speicher nach Anspruch 14,
wobei jede der Cache-Zeilen ferner in M Unterblöcke
aufgeteilt ist, wobei jeder der Unterblöcke in den Cache-Zeilen
als einzelner Speicherblock behandelt wird.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/973,309 US5434993A (en) | 1992-11-09 | 1992-11-09 | Methods and apparatus for creating a pending write-back controller for a cache controller on a packet switched memory bus employing dual directories |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69327387D1 DE69327387D1 (de) | 2000-01-27 |
DE69327387T2 true DE69327387T2 (de) | 2000-08-31 |
Family
ID=25520741
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69327387T Expired - Fee Related DE69327387T2 (de) | 1992-11-09 | 1993-11-08 | An einen paketvermittelten Bus gekoppelte Nachschreibsteuerungsschaltung für eine Cachespeichersteuerungsschaltung |
Country Status (4)
Country | Link |
---|---|
US (1) | US5434993A (de) |
EP (1) | EP0598535B1 (de) |
JP (1) | JPH076092A (de) |
DE (1) | DE69327387T2 (de) |
Families Citing this family (58)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE59209766D1 (de) * | 1992-08-19 | 1999-12-09 | Siemens Nixdorf Inf Syst | Multiprozessorsystem mit Cache-Speichern |
US6088768A (en) * | 1993-12-28 | 2000-07-11 | International Business Machines Corporation | Method and system for maintaining cache coherence in a multiprocessor-multicache environment having unordered communication |
US5832534A (en) * | 1994-01-04 | 1998-11-03 | Intel Corporation | Method and apparatus for maintaining cache coherency using a single controller for multiple cache memories |
TW243509B (en) * | 1994-01-31 | 1995-03-21 | Ibm | Data processor with memory cache and method of operation |
JP2778913B2 (ja) * | 1994-04-26 | 1998-07-23 | 株式会社東芝 | マルチプロセッサシステム及びメモリアロケーション方法 |
JP3360933B2 (ja) * | 1994-06-01 | 2003-01-07 | 富士通株式会社 | 情報処理システムにおける記憶制御方法および記憶制御装置 |
US5566317A (en) * | 1994-06-14 | 1996-10-15 | International Business Machines Corporation | Method and apparatus for computer disk drive management |
US5642494A (en) * | 1994-12-21 | 1997-06-24 | Intel Corporation | Cache memory with reduced request-blocking |
US6000017A (en) * | 1995-01-20 | 1999-12-07 | Intel Corporation | Hybrid tag architecture for a cache memory |
JP3872118B2 (ja) * | 1995-03-20 | 2007-01-24 | 富士通株式会社 | キャッシュコヒーレンス装置 |
US5649157A (en) * | 1995-03-30 | 1997-07-15 | Hewlett-Packard Co. | Memory controller with priority queues |
US5657472A (en) * | 1995-03-31 | 1997-08-12 | Sun Microsystems, Inc. | Memory transaction execution system and method for multiprocessor system having independent parallel transaction queues associated with each processor |
DE69628493T2 (de) * | 1995-03-31 | 2004-05-19 | Sun Microsystems, Inc., Santa Clara | Cache-kohärentes Computersystem, das Entwertungs- und Rückschreiboperationen minimiert |
DE69628079T2 (de) * | 1995-03-31 | 2004-02-26 | Sun Microsystems, Inc., Santa Clara | Mechanismus auf Systemebene zum Entwerten von Daten, die im externen Cache eines Prozessors in einem Computersystem gespeichert sind |
US5581729A (en) * | 1995-03-31 | 1996-12-03 | Sun Microsystems, Inc. | Parallelized coherent read and writeback transaction processing system for use in a packet switched cache coherent multiprocessor system |
US5655100A (en) * | 1995-03-31 | 1997-08-05 | Sun Microsystems, Inc. | Transaction activation processor for controlling memory transaction execution in a packet switched cache coherent multiprocessor system |
US5710891A (en) * | 1995-03-31 | 1998-01-20 | Sun Microsystems, Inc. | Pipelined distributed bus arbitration system |
US5634068A (en) * | 1995-03-31 | 1997-05-27 | Sun Microsystems, Inc. | Packet switched cache coherent multiprocessor system |
US5907485A (en) * | 1995-03-31 | 1999-05-25 | Sun Microsystems, Inc. | Method and apparatus for flow control in packet-switched computer system |
US5684977A (en) * | 1995-03-31 | 1997-11-04 | Sun Microsystems, Inc. | Writeback cancellation processing system for use in a packet switched cache coherent multiprocessor system |
US5689713A (en) * | 1995-03-31 | 1997-11-18 | Sun Microsystems, Inc. | Method and apparatus for interrupt communication in a packet-switched computer system |
US5737756A (en) * | 1995-04-28 | 1998-04-07 | Unisys Corporation | Dual bus computer network using dual busses with dual spy modules enabling clearing of invalidation queue for processor with store through cache while providing retry cycles for incomplete accesses to invalidation queue |
US6076150A (en) * | 1995-08-10 | 2000-06-13 | Lsi Logic Corporation | Cache controller with improved instruction and data forwarding during refill operation |
US5887146A (en) * | 1995-08-14 | 1999-03-23 | Data General Corporation | Symmetric multiprocessing computer with non-uniform memory access architecture |
US6021472A (en) * | 1995-08-21 | 2000-02-01 | Canon Kabushiki Kaisha | Information processing device and control method thereof |
US5778208A (en) * | 1995-12-18 | 1998-07-07 | International Business Machines Corporation | Flexible pipeline for interlock removal |
US5829035A (en) * | 1995-12-22 | 1998-10-27 | Apple Computer, Inc. | System and method for preventing stale data in multiple processor computer systems |
DE69705072T2 (de) * | 1996-01-25 | 2002-03-21 | Unisys Corp., Blue Bell | Verfahren zur ausführung von lese- und schreibbefehlen in einem mehrstufigen verteilten datenverarbeitungssystem |
JPH09223118A (ja) * | 1996-02-14 | 1997-08-26 | Oki Electric Ind Co Ltd | スヌープキャッシュメモリ制御システム |
US6385710B1 (en) | 1996-02-23 | 2002-05-07 | Sun Microsystems, Inc. | Multiple-mode external cache subsystem |
US5765196A (en) * | 1996-02-27 | 1998-06-09 | Sun Microsystems, Inc. | System and method for servicing copyback requests in a multiprocessor system with a shared memory |
US5911052A (en) * | 1996-07-01 | 1999-06-08 | Sun Microsystems, Inc. | Split transaction snooping bus protocol |
US5829033A (en) * | 1996-07-01 | 1998-10-27 | Sun Microsystems, Inc. | Optimizing responses in a coherent distributed electronic system including a computer system |
US5860117A (en) * | 1996-05-31 | 1999-01-12 | Sun Microsystems, Inc. | Apparatus and method to improve primary memory latencies using an eviction buffer to store write requests |
US5893165A (en) * | 1996-07-01 | 1999-04-06 | Sun Microsystems, Inc. | System and method for parallel execution of memory transactions using multiple memory models, including SSO, TSO, PSO and RMO |
JPH1078934A (ja) * | 1996-07-01 | 1998-03-24 | Sun Microsyst Inc | パケット切替えコンピュータ・システムのマルチサイズ・バス結合システム |
US5809548A (en) * | 1996-08-30 | 1998-09-15 | International Business Machines Corporation | System and method for zeroing pages with cache line invalidate instructions in an LRU system having data cache with time tags |
US6202125B1 (en) | 1996-11-25 | 2001-03-13 | Intel Corporation | Processor-cache protocol using simple commands to implement a range of cache configurations |
US5829029A (en) * | 1996-12-18 | 1998-10-27 | Bull Hn Information Systems Inc. | Private cache miss and access management in a multiprocessor system with shared memory |
US6122711A (en) | 1997-01-07 | 2000-09-19 | Unisys Corporation | Method of and apparatus for store-in second level cache flush |
US6061755A (en) * | 1997-04-14 | 2000-05-09 | International Business Machines Corporation | Method of layering cache and architectural specific functions to promote operation symmetry |
US6032226A (en) * | 1997-04-14 | 2000-02-29 | International Business Machines Corporation | Method and apparatus for layering cache and architectural specific functions to expedite multiple design |
US6209072B1 (en) | 1997-05-06 | 2001-03-27 | Intel Corporation | Source synchronous interface between master and slave using a deskew latch |
US6434639B1 (en) * | 1998-11-13 | 2002-08-13 | Intel Corporation | System for combining requests associated with one or more memory locations that are collectively associated with a single cache line to furnish a single memory operation |
US6859399B1 (en) | 2000-05-17 | 2005-02-22 | Marvell International, Ltd. | Memory architecture and system and multiport interface protocol |
US7472230B2 (en) * | 2001-09-14 | 2008-12-30 | Hewlett-Packard Development Company, L.P. | Preemptive write back controller |
US6785779B2 (en) * | 2002-01-09 | 2004-08-31 | International Business Machines Company | Multi-level classification method for transaction address conflicts for ensuring efficient ordering in a two-level snoopy cache architecture |
GB2416417B (en) * | 2003-04-11 | 2006-12-13 | Sun Microsystems Inc | Multi-node computer system with proxy transaction to read data from a non-owning memory device |
US7945738B2 (en) * | 2003-04-11 | 2011-05-17 | Oracle America, Inc. | Multi-node computer system employing a reporting mechanism for multi-node transactions |
WO2004093408A2 (en) * | 2003-04-11 | 2004-10-28 | Sun Microsystems, Inc. | Multi-node computer system implementing global access state dependent transactions |
US7360029B2 (en) * | 2003-04-11 | 2008-04-15 | Sun Microsystems, Inc. | Multi-node computer system in which interfaces provide data to satisfy coherency transactions when no owning device present in modified global access state node |
US20050013294A1 (en) * | 2003-04-11 | 2005-01-20 | Sun Microsystems, Inc. | Multi-node computer system with active devices employing promise arrays for outstanding transactions |
US7814278B2 (en) * | 2003-04-11 | 2010-10-12 | Oracle America, Inc. | Multi-node system with response information in memory |
US20050010615A1 (en) * | 2003-04-11 | 2005-01-13 | Sun Microsystems, Inc. | Multi-node computer system implementing memory-correctable speculative proxy transactions |
US20050005075A1 (en) * | 2003-04-11 | 2005-01-06 | Sun Microsystems, Inc. | Multi-node computer system employing multiple memory response states |
US8559443B2 (en) | 2005-07-22 | 2013-10-15 | Marvell International Ltd. | Efficient message switching in a switching apparatus |
DE112013005093T5 (de) * | 2012-10-22 | 2015-10-22 | Intel Corporation | Hochleistungszusammenschaltungsbitübertragungsschicht |
CN112416615B (zh) * | 2020-11-05 | 2024-08-16 | 珠海格力电器股份有限公司 | 多核处理器及其缓存一致性的实现方法、装置和存储介质 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5025365A (en) * | 1988-11-14 | 1991-06-18 | Unisys Corporation | Hardware implemented cache coherency protocol with duplicated distributed directories for high-performance multiprocessors |
US5247648A (en) * | 1990-04-12 | 1993-09-21 | Sun Microsystems, Inc. | Maintaining data coherency between a central cache, an I/O cache and a memory |
US5347648A (en) * | 1990-06-29 | 1994-09-13 | Digital Equipment Corporation | Ensuring write ordering under writeback cache error conditions |
DE69127936T2 (de) * | 1990-06-29 | 1998-05-07 | Digital Equipment Corp | Busprotokoll für Prozessor mit write-back cache |
US5263144A (en) * | 1990-06-29 | 1993-11-16 | Digital Equipment Corporation | Method and apparatus for sharing data between processors in a computer system |
US5265235A (en) * | 1990-11-30 | 1993-11-23 | Xerox Corporation | Consistency protocols for shared memory multiprocessors |
US5303362A (en) * | 1991-03-20 | 1994-04-12 | Digital Equipment Corporation | Coupled memory multiprocessor computer system including cache coherency management protocols |
US5265233A (en) * | 1991-05-17 | 1993-11-23 | Sun Microsystems, Inc. | Method and apparatus for providing total and partial store ordering for a memory in multi-processor system |
US5313609A (en) * | 1991-05-23 | 1994-05-17 | International Business Machines Corporation | Optimum write-back strategy for directory-based cache coherence protocols |
US5325504A (en) * | 1991-08-30 | 1994-06-28 | Compaq Computer Corporation | Method and apparatus for incorporating cache line replacement and cache write policy information into tag directories in a cache system |
US5353424A (en) * | 1991-11-19 | 1994-10-04 | Digital Equipment Corporation | Fast tag compare and bank select in set associative cache |
US5355471A (en) * | 1992-08-14 | 1994-10-11 | Pyramid Technology Corporation | Multiprocessor cache coherency tester that exercises the coherency logic exhaustively and also detects errors in a processor using an automatic CPU sort |
-
1992
- 1992-11-09 US US07/973,309 patent/US5434993A/en not_active Expired - Lifetime
-
1993
- 1993-11-08 EP EP93308913A patent/EP0598535B1/de not_active Expired - Lifetime
- 1993-11-08 DE DE69327387T patent/DE69327387T2/de not_active Expired - Fee Related
- 1993-11-09 JP JP5302259A patent/JPH076092A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US5434993A (en) | 1995-07-18 |
EP0598535A1 (de) | 1994-05-25 |
EP0598535B1 (de) | 1999-12-22 |
DE69327387D1 (de) | 2000-01-27 |
JPH076092A (ja) | 1995-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69327387T2 (de) | An einen paketvermittelten Bus gekoppelte Nachschreibsteuerungsschaltung für eine Cachespeichersteuerungsschaltung | |
DE68924306T2 (de) | Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern. | |
DE69900797T2 (de) | Cache-Speicherkohärenzprotokoll mit unabhängiger Implementierung von optimierten Cache-Speicheroperationen | |
DE69323790T2 (de) | Verfahren und Vorrichtung für mehreren ausstehende Operationen in einem cachespeicherkohärenten Multiprozessorsystem | |
DE69524564T2 (de) | Kohärenz- und synchronisationsmechanismus für ein-/ausgangkanalsteuereinheiten in einem datenverarbeitungssystem | |
DE3782335T2 (de) | Speichersteuersystem. | |
DE69721643T2 (de) | Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen | |
DE69514165T2 (de) | Mehrstufige Cache-Speicheranordnung | |
DE69724354T2 (de) | Ein Mehrprozessorrechnersystem mit lokalen und globalen Adressräumen und mehreren Zugriffsmoden | |
DE69226928T2 (de) | Verfahren und Direktspeicherzugriffssteuerung zum asynchronen Daten-Lesen von einem -Schreiben in einen Speicher mit verbessertem Durchfluss | |
DE69130086T2 (de) | Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien | |
DE10262164B4 (de) | Computersystem mit einer hierarchischen Cacheanordnung | |
DE69701078T2 (de) | Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedener Prozessoren | |
DE69708188T2 (de) | Speichersteuerungseinheit | |
DE69722079T2 (de) | Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen | |
DE69727856T2 (de) | Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren | |
DE69127111T2 (de) | Verfahren zum Nachladen aufgeschobener Datenauslagerungen in einen Copy-back Daten-Cachespeicher | |
DE3687307T2 (de) | Computeranordnungen mit cache-speichern. | |
DE68927172T2 (de) | Multiprozessorsystem mit cache-speichern | |
DE69729243T2 (de) | Multiprozessorsystem mit Vorrichtung zur Optimierung von Spin-Lock-Operationen | |
DE69906585T2 (de) | Datenverarbeitungssystem mit nichtuniformen speicherzugriffen (numa) mit spekulativer weiterleitung einer leseanforderung an einen entfernten verarbeitungsknoten | |
DE69031978T2 (de) | Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern | |
DE3750107T2 (de) | Cachespeicherkohärenzsteuerung mit einem Speicher, der ein laufendes Lesen anzeigt. | |
DE68924206T2 (de) | Verfahren und Einrichtung zum Filtern von Ungültigkeitserklärungsanforderungen. | |
DE69722512T2 (de) | Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |