DE69327387T2 - An einen paketvermittelten Bus gekoppelte Nachschreibsteuerungsschaltung für eine Cachespeichersteuerungsschaltung - Google Patents

An einen paketvermittelten Bus gekoppelte Nachschreibsteuerungsschaltung für eine Cachespeichersteuerungsschaltung

Info

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
Application number
DE69327387T
Other languages
English (en)
Other versions
DE69327387D1 (de
Inventor
Douglas Lee
Bjorn Liencres
Tung Pham
Pradeep S. Sindhu
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xerox Corp
Sun Microsystems Inc
Original Assignee
Xerox Corp
Sun Microsystems Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xerox Corp, Sun Microsystems Inc filed Critical Xerox Corp
Application granted granted Critical
Publication of DE69327387D1 publication Critical patent/DE69327387D1/de
Publication of DE69327387T2 publication Critical patent/DE69327387T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache 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

    HINTERGRUND DER ERFINDUNG 1. Gebiet der Erfindung:
  • 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.
  • 2. Technischer Hintergrund:
  • 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.
  • ZUSAMMENFASSENDE DARSTELLUNG DER ERFINDUNG
  • 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.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 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.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • 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.
  • Lesetransaktionen
  • 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.
  • Schreibtransaktionen
  • 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
  • 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 Anhängiges-Rückschreiben-Steuereinrichtungs-Logik
  • 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.
  • Unterblock-Logik
  • 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.
  • Cache-Zeilen-Logik
  • 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].
  • Globale Anhängiges-Rückschreiben-Steuereinrichtungslogik
  • 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.
  • Anhängiges-Rückschreiben-Steuereinrichtungslogikverbindungen
  • 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.
DE69327387T 1992-11-09 1993-11-08 An einen paketvermittelten Bus gekoppelte Nachschreibsteuerungsschaltung für eine Cachespeichersteuerungsschaltung Expired - Fee Related DE69327387T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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