-
Hintergrund der Erfindung
-
1. Technisches Gebiet
-
Diese
Erfindung betrifft Cache-Speicher bzw. schnelle Zwischenspeicher
und betrifft insbesondere das Ungültigerklären von Zeilen in einem Cache-Speicher.
-
2. Stand der Technik
-
JP-A-03 154948 betrifft
ein Verfahren für
die Ungültigerklärung von
Cache-Speichern. Wenn ein Prozessor einen Ungültigkeitsbefehl an einen Bus ausgibt,
wird das Übertragen
des Befehls zur Ungültigerklärung von
dem Bus verhindert und der Befehl wird gelöscht, wenn ein weiterer Prozessor,
der den Bus zuerst angefordert hat, eine Schreiboperation in die
gleiche Cache-Adresse ausführt.
-
Da
das Hautspeichersystem typischerweise im Hinblick auf Speicherdichte
anstatt auf Geschwindigkeit ausgelegt ist, haben Entwurfsingenieure
für Mikroprozessoren
Cache-Speicher den
Entwürfen hinzugefügt, um die
Notwendigkeit des Mikroprozessors zu reduzieren, direkt auf den
Hauptspeicher zuzugreifen. Ein Cache-Speicher ist ein kleiner Speicher,
auf den schneller als auf den Hauptspeicher zugegriffen werden kann.
Computersysteme können eine
Reihe unterschiedlicher Ebenen an Cache-Speichern aufweisen. Beispielsweise
kann ein Computersystem einen Cache-Speicher der „Ebene
1" (L1) und einen
Cache-Speicher der „Ebene
2" (L2) aufweisen.
Diese Cache-Speicher sind typischerweise in dem Mikroprozessor integriert.
Cache-Speicher sind typischerweise aus schnellen Speicherzellen aufgebaut,
etwa statischen Speichern mit wahlfreiem Zugriff (SRAM), die geringere
Zugriffszeiten als die Speicher aufweisen, die für das Hauptspeichersystem verwendet
werden (typischerweise dynamische Speicher mit wahlfreiem Zugriff
(DRAM) oder synchrone dynamische Speicher mit wahlfreiem Zugriff (SDRAM)).
Die schnelleren SRAM werden typischerweise nicht für das Hauptspeichersystem
verwendet, da sie eine geringere Dichte besitzen und teurer sind.
-
Es
sind auch viele Arten der schnellen Zwischenspeicherung möglich. Beispielsweise
kann das Hauptspeichersystem als ein Cache-Speicher für die langsameren
Speichereinrichtungen für
den direkten Zugriff dienen (beispielsweise Festplatten). Andere Einrichtungen,
etwa Festplatten, können
ebenfalls interne Cache-Speicher zur Verbesserung des Leistungsverhaltens
aufweisen.
-
Wenn
ein Mikroprozessor Daten von einem Speicher benötigt, überprüft er typischerweise zunächst seinen
L1-Cache-Speicher, um zu ermitteln, ob die erforderlichen Daten
zwischengespeichert wurden. Wenn nicht, wird der L2-Cache-Speicher überprüft. Gleichzeitig
können
die Daten aus dem Speicher angefordert werden, wenn der L2-Cache-Speicher einen
Fehltreffer anzeigt. Wenn der L2-Cache-Speicher die Daten enthält, liefert
dieser die Daten an den Mikroprozessor (typischerweise bei einer
sehr viel höheren
Rate und geringeren Bearbeitungszeit als der Hauptspeicher in der
Lage wäre), und
wenn die Daten aus dem Speicher angefordert wurden, wird diese Anforderung
gelöscht.
Wenn die Daten nicht in dem L1- oder L2-Cache-Speicher sind (was
als ein „Cache-Fehltreffer" bezeichnet wird), werden
die Daten aus dem Hauptspeichersystem oder einer anderen Art einer
Massenspeichereinrichtung (beispielsweise einer Festplatte) ausgelesen.
Im Vergleich zum Zugreifen auf die Daten aus dem L1-Cache-Speicher
benötigen
Zugriffe auf den Speicher sehr viel mehr Taktzyklen. Wenn in ähnlicher Weise
die Daten nicht in dem Hauptspeicher sind, benötigt das Zugreifen auf Daten
in der Massenspeichereinrichtung noch mehr Taktzyklen.
-
Cache-Speicher
arbeiten typischerweise gemäß dem Prinzip
der Lokalität
der Referenz, was aussagt, dass die am jüngsten verwendeten Daten (und
die Daten in dieser Stelle) mit höherer Wahrscheinlichkeit abgerufen
werden als der Rest der Daten. Dieses Prinzip gilt, da Computersoftware
typischerweise Schleifen und Verzweigungen aufweist, die bewirken,
dass zuvor ausgeführte
Codierungen erneut ausgeführt
werden. Durch Speichern der kürzlich
abgerufenen Befehle und Daten in einem Cache-Speicher kann das Leistungsverhalten
des Systems erhöht
werden, da der Mikroprozessor nicht auf die Befehle und Daten warten
muss, die aus dem Hauptspeicher ausgelesen werden.
-
Entwurfsingenieure
für Mikroprozessor
und Computersysteme haben das Prinzip der Lokalität der Referenz
noch etwas weiter getrieben, indem Techniken angewendet werden,
etwa Verzweigungsvorhersage, um Befehle und Daten in dem Cache-Speicher
vorläufig
zu speichern, bevor diese tatsächlich
von dem Mikroprozessor benötigt
werden. Wenn ferner ein Befehls- oder Datenbyte aus dem Speicher
ausgelesen wird, werden weitere Bytes, die auf den Befehl oder die
Daten folgen, ausgelesen und zwischenge speichert. Wiederum diktiert
das Prinzip der Lokalität
der Referenz, dass diese Befehls- und
Datenbytes im Wesentlichen mit höherer Wahrscheinlichkeit
von dem Prozessor benötigt
werden als andere Daten oder Befehle.
-
Es
gibt diverse unterschiedliche Möglichkeiten,
das Speichersystem auf den Cache-Speicher abzubilden.
Ein üblicher
Ansatz verwendet einen n-Wege-teilassoziativen Cache-Speicher, wobei
der Cache-Speicher in Teile bzw. Gruppen unterteilt ist. Jeder Teil
bzw. Gruppe enthält
n-Cache-Zeilen. Eine Cache-Zeile ist eine sequenzielle Gruppe aus
Bytes (beispielsweise 32 oder 64). Zum Zwecke der Effizienz werden
Cache-Speichertransaktionen
typischerweise als Cache-Zeilen statt als einzelne Bytes ausgeführt. Speicherplätze in einem
Hauptspeicher, die zwischengespeichert werden können, werden jeweils einem
der Teile bzw. einer der Gruppe der Cache-Zeilen zugeordnet. Als
Folge kann jede Stelle in jeder der n-Speicherplätze innerhalb der zugeordneten
Gruppe zwischengespeichert werden. Ein Spezialfall des n-Wege-teilassoziativen
Cache-Speichers ist
der direkt zugeordnet bzw. abgebildete Cache-Speicher. In einem
direkt zugeordneten Cache-Speicher ist n = 1, und daher wird jede
Speicherstelle lediglich auf eine Stelle in dem Cache-Speicher abgebildet.
Ein weiterer Spezialfall des n-Wege-teilassoziativen Cache-Speichers ist
der vollständig
assoziative Cache-Speicher. In diesem Falle ist n = m, wobei m die
Anzahl der Zeilen in dem Cache-Speicher ist (und damit gibt es nur
einen einzelnen „Teil bzw.
Gruppe"). In diesem
Falle wird jede Speicherstelle auf einen der Cache-Speicherplätze abgebildet.
-
Zwei
grundlegende Verhaltenskriterien für Cache-Speicher sind das Trefferverhältnis (d.
h. das Verhältnis
der Speicherzugriffe, die den Cache-Speicher betrafen, zu der Gesamtzahl
an Speicherzugriffen) und die Suchgeschwindigkeit (d. h. wie schnell eine
Bestimmung über
einen Treffer bzw. einen Fehltreffer durchgeführt werden kann). In einem
direkt zugeordneten Cache-Speicher ist die Suchgeschwindigkeit auf
Kosten des Trefferverhältnisses
optimiert. Dies liegt daran, dass es relativ einfach ist, Treffer/Fehltreffer
zu bestimmen (da eine Speicherstelle lediglich auf eine einzelne
Cache-Zeile abgebildet ist, und es muss nur diese Zeile überprüft werden),
aber es ist schwieriger, ein hohes Trefferverhältnis zu haben, da mehrere
Speicherstellen auf eine einzelne Cache-Zeile abgebildet werden.
Andererseits ist in vollständig
assoziativen Cache-Speichern das Trefferverhältnis zu Ungunsten der Suchgeschwindigkeit optimal.
Das Zulassen, dass alle Speicherstellen auf eine beliebige Cache-Zeile
abgebildet werden, verbessert die Wahrscheinlichkeit, dass es einen
Treffer gibt, wodurch jedoch die Komplexität der Suchaufgaben deutlich
erhöht
wird, da alle Cache-Zeilen für jede
Speicherstelle durchsucht werden müssen. Teilassoziative Cache-Speicher
versuchen, einen Kompromiss zwischen diesen beiden Möglichkeiten
zu finden, indem ein höherer
Grad an Zuordnung (und damit ein höheres Trefferverhältnis) als
in direkt abgebildeten Cache-Speichern geboten wird, während auch
höhere
Suchgeschwindigkeiten als in vollständig assoziativen Cache-Speichern
ermöglicht
werden.
-
Da
die Größe des Cache-Speichers
durch eine Reihe von Faktoren (wozu die Chipgröße, die Leistungsaufnahme und
die Kosten gehören)
begrenzt ist, muss Vorsicht angewendet werden, wenn Informationen
in den Cache-Speicher eingeladen werden. Es treten gewisse Kriterien
für den
Entwurfsingenieur auf, wenn eine Strategie zum Überschreiben oder Ungültigerklären bestehender
Befehle und Daten in einem Cache-Speicher
zur Schaffung von Platz für
neue Befehle und Daten ermittelt wird. In teilassoziativen Cache-Speichern,
in denen n > 1 (und somit
viele Möglichkeiten
sind, in welcher Zeile eine spezielle Speicherstelle zwischenzuspeichern
ist), muss somit eine Möglichkeit
bestehen auszuwählen, welche
der möglichen
Cache-Zeilen mit neuen Daten zu füllen ist. Eine übliche Lösung besteht
darin, die relative Reihenfolge der Zugriffe auf jede zwischengespeicherte
Speicherstelle zu überwachen
und die am wenigsten aktuell verwendeten Befehle oder Daten durch
neue Befehle oder Daten zu ersetzen. Diese Lösung beruht auf dem Prinzip,
dass kürzlich
abgerufene Cache-Speicherzellen mit höherer Wahrscheinlichkeit abgerufen
werden. Andere Lösungen enthalten
eine zufällige
Ersetzung und Techniken mit dem Prinzip „zuerst hinein zuerst heraus".
-
Im
Mittel bieten Cache-Ersetzungsalgorithmen mit „am wenigsten aktuell verwendet" (LRU) ein besseres
Leistungsverhalten als andere Algorithmen. Um jedoch die am wenigsten
aktuell verwendete (LRU) Cache-Zeile in einem n-Wege-teilassoziativen
Cache-Speicher zu
bestimmen, erfordern konventionelle Vorgehensweise einen beträchtlichen Aufwand
an komplexer Hardware, wozu Zähler
und n-Wege-Multiplexer gehören,
um den LRU-Algorithmus einzurichten. Des weiteren überwachen
Statusbits für
jeden Cache-Eintrag die Verwendung jedes Eintrags. Wenn ein neuer
Eintrag in der Gruppe auftritt, werden die Statusbits überprüft, um zu
bestimmen, welche der Cache-Zeilen die wenigsten aktuell verwendete
oder ungültige
ist. Die am wenigsten aktuell verwendete oder ungültige Zeile
wird dann ausgewählt,
um Platz für
den neuen Eintrag zu schaffen.
-
Zu
Nachteilen eines konventionellen LRU-Ersetzungsalgorithmus gehören der
Aufwand an Hardware und die Anzahl der Statusbit-Zeiten, die zum
Implementieren des Algorithmus erforderlich ist, sowie die Zeit
und der Hardwareaufwand, der zum Durchsuchen im Hinblick auf unzulässige Einträge in der
Gruppe erforderlich sind.
-
Im
Allgemeinen ist es wünschenswert,
das Leistungsverhalten von Cache-Subsystemen zu verbessern. Wenn
beispielsweise die Prozessorgeschwindigkeit ansteigt, ist es wünschenswert,
Cache-Subsysteme bereitzustellen, die in der Lage sind, schneller
eine größere Menge
an Daten bereitzustellen.
-
Überblick über die Erfindung
-
Es
ist häufig
günstig,
eine Zeile in einem Cache-Speicher als ungültig zu erklären. Jedoch
kann die Ungültigerklärung einer
Cache-Zeile von vielen zu Grunde liegenden Faktoren abhängen. In
vielen Fällen
wird eine Fehlerprüfung
ausgeführt,
um zu bestimmen, ob diese zu Grunde liegenden Faktoren korrekt sind.
Wenn diese Faktoren nicht gültig
sind, kann die Ungültigerklärung fehlerhaft
sein und sollte nicht ausgeführt
werden. Da die Fehlerüberprüfung einen
beträchtlichen
Aufwand an Zeit bis zur Komplettierung erfordern kann, ist eine
Bestimmung, ob eine Ungültigerklärung fehlerhaft
ist oder nicht, ggf. nicht verfügbar,
wenn die Anforderung zur Ungültigkeitserklärung tatsächlich von
einer Cache-Steuerung erhalten wird. Als Folge davon können Anforderungen
für Ungültigkeitserklärungen es
erforderlich machen, dass eine Cache-Steuerug Zeit aufbringt, um
auf den Abschluss der Fehlerüberprüfung zu
warten, wodurch verhindert wird, dass die Cache-Steuerung sich anderen
anhängigen
Aufgaben zuwendet. Gleichzeitig ist es selten, dass eine Ungültigerklärung für eine Cache-Zeile
fehlerhaft ist, und daher ist die Zeitdauer, in der die Cache-Steuerung
auf die Fehlerüberprüfung wartet,
häufig
vergeudet.
-
Wenn
eine Cache-Steuerung konfiguriert ist, um spekulativ eine Cache-Zeile
als ungültig
zu erklären,
kann die Cache-Steuerung auf eine Anforderung zur Ungültigerklärung unmittelbar
reagieren, anstatt dass auf den Abschluss der Fehlerprüfung gewartet wird.
Um die seltene Situation zu handhaben, in der die Ungültigerklärung fehlerhaft
ist und damit nicht auszuführen
ist, kann die Cache-Steuerung auch die spekulativ als ungültig erklärte Cache-Zeile
vor einer Modifizierung bewahren, bis die Fehlerüberprüfung abgeschlossen ist. Auf
diese Weise kann, wenn die Ungültigerklärung in
einem späteren
Zustand als fehlerhaft ermittelt wird, die spekulative Ungültigerklärung wieder
rückgängig gemacht
werden.
-
Die
vorliegende Erfindung stellt ein Verfahren zur spekulativen Ungültigerklärung einer
Cache-Zeile (423) bereit, wobei das Verfahren umfasst: Empfangen
einer Anforderung zur Ungültigerklärung der
Cache-Zeile; Initiieren mindestens einer Überprüfung, die bestimmt, ob die
Ungültigerklärung fehlerhaft
ist oder nicht, wobei das Bestimmen eine gegebene Anzahl an Zyklen
beansprucht; in Reaktion auf das Empfangen wird die Cache-Zeile spekulativ
als ungültig
erklärt,
wobei das spekulative Ungültigerklären umfasst:
Angeben, dass die Cache-Zeile ungültig ist und Schützen der
Cache-Zeile vor der nachfolgenden Ersetzung, bis die mindestens
eine Überprüfung abgeschlossen
ist; und in Reaktion darauf, dass die mindestens eine Überprüfung bestimmt,
dass die Ungültigerklärung fehlerhaft
ist, rückgängig machen
der spekulativen Ungültigerklärung durch
Angeben, dass die Cache-Zeile gültig
ist.
-
Die
vorliegende Erfindung stellt ein Cache-Subsystem bereit mit: einem
Cache-Speicher (423) mit mehreren Cache-Zeilenspeicherplätzen; einer
Cache-Steuerung (419), die ausgebildet ist, eine Anforderung
zur Ungültigerklärung einer
Cache-Zeile in einer Cache-Zeilenspeicherstelle
empfangen; einer Fehlererkennungseinheit, die ausgebildet ist, mindestens
eine Überprüfung zu
veranlassen, die bestimmt, ob die Ungültigerklärung fehlerhaft ist oder nicht,
wobei die Bestimmung eine Reihe von Taktzyklen erfordert; wobei
die Cache-Steuerung ausgebildet ist, die Cache-Zeile in der Cache-Zeilenspeicherstelle
in Reaktion darauf spekulativ als ungültig zu erklären, dass
die Anforderung empfangen wird, wobei in Reaktion auf das spekulative
Ungültigerklären der Cache-Zeile
die Cache-Steuerung (419) ferner ausgebildet ist, anzugeben,
dass die Cache-Zeile ungültig
ist und ferner ausgebildet ist, das Ersetzen der Cache-Zeile zu
verhindern, bis die mindestens eine Überprüfung abgeschlossen ist; die
Cache-Steuerung ist ferner ausgebildet, die spekulative Ungültigerklärung rückgängig zu
machen, indem angegeben wird, dass die Cache-Zeile gültig ist,
in Reaktion darauf, dass die mindestens eine Überprüfung bestimmt, dass die Ungültigerklärung fehlerhaft
ist.
-
Kurze Beschreibung der Zeichnungen
-
1a zeigt
ein Venn-Diagramm, das die Abhängigkeit
zwischen internen Cache-Speichern
in einer Ausführungsform
zeigt.
-
1b zeigt
ein Venn-Diagramm, das die Abhängigkeit
zwischen exklusiven Cache-Speichern in
einer Ausführungsform
zeigt.
-
2 ist
eine Blockansicht einer Ausführungsform
eines Cache-Subsystems.
-
3 zeigt
eine Ausführungsform
einer Adressenkonflikerkennungshardware, die in einem Cache-Subsystem
verwendet werden kann, wie es in der 2 gezeigt
ist.
-
4a ist
ein Flussdiagramm, das angibt, wie Ungültigerklärungen in einem exklusiven
Cache-Speicher gemäß einer
Ausführungsform
ausgeführt
werden können.
-
4b ist
eine Fortsetzung des in 4a gezeigten
Flussdiagramms.
-
5 zeigt
eine Ausführungsform
eines Verfahrens zum spekulativen Ungültigerklären von Zeilen in einem Cache-Speicher
unabhängig
davon, ob der Cache-Speicher inklusiv, exklusiv oder keines von
beiden ist.
-
6 ist
eine Blockansicht einer Ausführungsform
eines Computersystems.
-
7 zeigt
eine Ausführungsform
eines Verarbeitungssystems mit mehreren Knoten.
-
Obwohl
die Erfindung diversen Modifizierungen und alternativen Formen unterliegen
kann, sind dennoch spezielle Ausführungsformen beispielhaft in den
Zeichnungen dargestellt und sind hierin detailliert beschrieben.
Es sollte jedoch beachtet werden, dass die Zeichnungen und die detaillierte
Beschreibung nicht beabsichtigen, die Erfindung auf die speziellen
offenbarten Formen einzuschränken,
sondern die Erfindung beabsichtigt vielmehr, alle Modifizierungen, Äquivalente
und Alternativen abzudecken, die innerhalb des Schutzbereichs der
vorliegenden Erfindung liegen, wie sie durch die angefügten Patentansprüche definiert
ist.
-
Arten zum Ausführen der Erfindung
-
Es
werden diverse Ausführungsformen
von Verfahren und Systemen zum spekulativen Ungültigerklären einer Zeile in einem Cache-Speicher
offenbart. In einer Ausführungsform
enthält
ein Computersystem einen Prozessor, einen Systemspeicher, eine Cache-Steuerung, einen
Cache-Speicher und eine Fehlererkennungseinheit. Der Cache-Speicher ist mit dem
Prozessor verbunden und enthält
mehrere Cache-Zeilenspeicherplätze. Die
Cache-Steuerung ist ausgebildet, eine erste Anforderung zu empfangen, die
eine erste Cache-Zeile als ungültig
erklärt.
In Reaktion auf das Empfangen der ersten Anforderung ist die Cache-Steuerung
ausgebildet, die erste Cache-Zeile spekulativ als ungültig zu
erklären.
Um die erste Cache-Zeile in dem Falle zu bewahren, dass die spekulative
Ungültigerklärung später rückgängig gemacht
werden muss, ist die Cache-Steuerung ferner ausgebildet, eine Modifizierung
der ersten Cache-Zeilenspeicherstelle
zu verhindern, bis die Ungültigerklärung der
ersten Cache-Zeile nicht-spekulativ wird. Die Fehlererkennungseinheit
ist ausgebildet, mindestens eine Überprüfung im Hinblick auf die erste
Anforderung auszuführen.
Beispielsweise kann die Fehlererkennungseinheit die Cache-Steuerung selbst
sein, und das Überprüfen kann
das Überprüfen beinhalten,
um sicherzustellen, dass eine Operation, die zu der spekulativen
Ungültigerklärung (beispielsweise
ein Treffer in einem exklusiven Cache-Speicher in Reaktion auf eine
Füllanforderung
von einem Cache-Speicher höherer
Ebene) führte,
zulässig
war unter der Voraussetzung des Zustands der ersten Cache-Zeile.
Wenn die Fehlererkennungseinheit die Überprüfung ausführt und keine Fehler erkennt,
wird die Ungültigerklärung der
ersten Cache-Zeile nicht-spekulativ.
-
In
einem Beispiel ist die Cache-Steuerung ausgebildet, die erste Cache-Zeile
als spekulativ ungültig
zu erklären,
indem ein Gültigkeitsbit,
das der ersten Cache-Zeile zugeordnet ist, umgeschaltet wird. Folglich
kann das Rückgängigmachen
des spekulativen Ungültigerklärens Umschalten
des Gültigkeitsbits
beinhalten, um zu zeigen, dass die erste Cache-Zeile wieder gültig ist.
In einigen Ausführungsformen
ist die Cache-Steuerung auch ausgebildet, Anforderungen nicht zu
akzeptieren, die von einem Zustand oder von Daten in der ersten
Cache-Zeile abhängen,
bis die Ungültigerklärung der
ersten Cache-Zeile
nicht-spekulativ wird. Auf diese Weise können diese Anforderungen verzögert werden,
bis die spekulative Ungültigerklärung entweder
nicht-spekulativ wird oder zurückgenommen
wird. Bis das Ungültigerklären der
ersten Cache-Zeile nicht-spekulativ wird, kann daher die Cache-Speicherung
im Allgemeinen so gestaltet sein, zusätzliche Anfor derungen entsprechend
der Art der Anforderung und beruhend darauf, dass die Anforderung
von der spekulativ als ungültig
erklärten
ersten Cache-Zeile abhängt
oder diese modifiziert, nicht zu akzeptieren. Beispielsweise kann
die Cache-Steuerung ausgebildet sein, die zusätzlichen Anforderungen nicht
zu akzeptieren, die da sind: Anforderungen zum Auffüllen von
einem Cache-Speicher höherer
Ebene, die die erste Cache-Zeile treffen, Sondierungs- bzw. Abfrage-
oder Statusänderungsanforderungen
für die
erste Cache-Zeile, oder Anforderungen zum Zurückkopieren von dem Cache-Speicher
höherer
Ebene, die die erste Cache-Zeile für die Ersetzung auswählen. Die
Cache-Steuerung kann ausgebildet sein, zusätzliche Anforderungen nicht
zu akzeptieren, die mit einem Teil der Markierung der ersten Cache-Zeile übereinstimmen.
-
In
einem Beispielen ist als Teil der spekulativen Ungültigerklärung die
Cache-Steuerung ausgebildet, den vor der spekulativen Ungültigerklärung vorhandenen
Ersetzungszustand (beispielsweise den Zustand, der zum Auswählen einer
Zeile für
das Ersetzen verwendet wurde), der mit der ersten Cache-Zeile verknüpft ist,
zu sichern und den Ersetzungszustand nach der spekulativen Ungültigerklärung der
ersten Cache-Zeile zu aktualisieren, so als ob die erste Cache-Zeile
als ungültig
erklärt
wurde. Wenn die spekulative Ungültigerklärung später als fehlerhaft
erkannt wird, kann die Cache-Steuerung den gesicherten Ersetzungszustand
vor der spekulativen Ungültigerklärung wieder
herstellen, wenn die spekulative Ungültigerklärung zurückgenommen wird.
-
In
einem weiteren Beispiel wird ein Verfahren zum spekulativen Ungültigerklären einer
Zeile in einem Cache-Speicher offenbart. Das Verfahren umfasst das
Empfangen einer Anforderung, die dazu führt, dass die Zeile in dem
Cache-Speicher als ungültig
erklärt
wird, das Initiieren von Überprüfungen, die
bestimmen, ob die Ungültigerklärung fehlerhaft ist,
und das spekulative Ungültigerklären der
Zeile. Das spekulative Ungültigerklären der
Zeile beinhaltet das Angeben, dass die Zeile ungültig ist und das Schützen der
Zeile vor einer nachfolgenden Modifizierung, bis die Überprüfungen abgeschlossen
sind. Wenn eine der Überprüfungen erkennt,
dass die Ungültigerklärung fehlerhaft
ist, umfasst das Verfahren auch das Rückgängigmachen der spekulativen
Ungültigerklärung, indem
angegeben wird, dass die Zeile wieder gültig ist.
-
In
einem weiteren Beispiel wird ein Verfahren zum spekulativen Ungültigerklären einer
ersten Cache-Zeile in einem exklusiven Cache-Speicher offenbart.
Das Verfahren um fasst das Empfangen einer Füllanforderung aus einem Cache-Speicher
höherer Ebene,
das Bestimmen, ob die Füllanforderung
den exklusiven Cache-Speicher trifft, das Initiieren von Überprüfungen,
die bestimmen, dass die Füllanforderung
fälschlicherweise
initiiert wurde, und, wenn die Füllanorderung
den exklusiven Cache-Speicher betrifft, Bereitstellen der ersten
Cache-Zeile aus dem exklusiven Cache-Speicher für den Cache-Speicher der höheren Ebene. Wenn die Überprüfungen noch nicht
abgeschlossen sind, wenn die erste Cache-Zeile den Cache-Speicher
der höheren
Ebene zugeleitet wird, kann die erste Cache-Zeile spekulativ ungültig erklärt werden.
Das spekulative Ungültigerklären beinhaltet
das Angeben, dass die erste Cache-Zeile ungültig ist und das Schützen der
ersten Cache-Zeile vor einer nachfolgenden Modifizierung, bis die Überprüfungen abgeschlossen
sind.
-
In
einem noch weiteren Beispiel wird ein Cache-Subsystem offenbart.
Das Cache-Subsystem umfasst
einen Cache-Speicher und eine Cache-Steuerung. Die Cache-Steuerung ist ausgebildet,
eine erste Cache-Zeile spekulativ als ungültig zu erklären. Wenn
die spekulative Ungültigerklärung als fehlerhaft
erkannt wird, ist die Cache-Steuerung
ausgebildet, die spekulative Ungültigerklärung rückgängig zu
machen. Das Cache-Subsystem umfasst ferner eine spekulative Ungültigerklärungssteuerung, die
ausgebildet ist, die erste Cache-Zeile vor einer Modifizierung zu
bewahren, bis die Ungültigerklärung nicht-spekulativ
wird. Das Erkennen, ob die spekulative Ungültigerklärung fehlerhaft ist, kann eine
gewisse Anzahl an Zyklen erfordern, und somit wird die spekulative
Ungültigerklärung nicht
als nicht-spekulativ bewertet, bis die gewisse Anzahl an Zyklen durchlaufen
sind.
-
Cache-Speicher-Subsysteme
-
Computersysteme
(wie sie nachfolgend in den 6 und 7 gezeigt
sind) enthalten typischerweise Cache-Subsysteme. Typischerweise
enthalten diese Cache-Subsysteme einen L1-Cache-Speicher, der in
einem Prozessor integriert ist, und einen L2-Cache-Speicher, der nicht
integriert ist. Da Fortschritte in der Prozesstechnologie einen
höheren
Integrationsgrad in Halbleiterbauelementen ermöglichen, sind nunmehr die Entwickler
von Mikroprozessoren in der Lage, Cache-Speicher der Ebene 2 (L2)
auf dem Chip vorzusehen, um damit das Leistungsverhalten weiter
zu verbessern. Durch das Integrieren des L2-Cache-Speichers wird
die Übertragungszeit
und die Übertragungsbandbreite zwischen dem
L1- und dem L2-Cache-Speicher verbessert, da die Kommunikation nun
nicht mehr über
Anschlussstifte stattfinden muss.
-
Herkömmliche
Vorgehensweisen beinhalteten das Gestalten des primären Cache-Speichers (L1) mit
dem Ziel, den L1-Cache-Speicher möglichst groß zu machen, ohne dass zusätzliche
Verarbeitungszeiten beim Zugreifen auftreten. Dieser große L1-Cache-Speicher war üblicherweise
mit einem ähnlich
großen
L2-Cache-Speicher vorgesehen, der normalerweise so groß oder größer als
der L1-Cache-Speicher war, und der normalerweise eine Verarbeitungszeit
aufweist, die üblicherweise
größer ist
als jene des L1-Cache-Speichers
aber kleiner als jene des Systemspeichers.
-
Ein
L2-Cache-Speicher kann als inklusiv, exklusiv oder keines von beiden
aufgebaut sein. In einem idealen inklusiven L2-Cache-Speicher ist
jede Zeile, die in dem L1-Cache-Speicher
vorhanden ist, auch in dem L2-Cache-Speicher vorhanden, wie dies durch
das Venn-Diagramm in 1a gezeigt ist. Im Gegensatz
dazu sind in einem idealen exklusiven L2-Cache-Speicher Zeilen vorhanden,
die im L1-Cache-Speicher aber nicht in dem L2-Cache-Speicher sind,
wie in dem Venn-Diagramm aus 1b gezeigt ist.
Zu beachten ist, dass in einigen Ausführungsformen sowohl der inklusive
als auch der exklusive L2-Cache-Speicher in Bezug auf den Systemspeicher
inklusiv sein können
(wie in den 1a und 1b gezeigt
ist), und somit kann ggf. ein „exklusiver" L2-Cache-Speicher
lediglich exklusiv auf einen L1-Cache-Speicher aufgebaut sein. In
einem Cache-System, das weder inklusiv noch exklusiv ist, hängen die
Zeilen, die nicht in dem L2-Cache-Speicher gespeichert sind, davon
ab, welche Zeilen in dem L1-Cache-Speicher gespeichert sind, und
es gibt somit keine Garantie dahingehend, ob eine Zeile in dem L1-Cache-Speicher
in dem L2-Cache-Speicher vorhanden ist oder nicht.
-
Für beide
Prinzipien gibt es Vorteile und Nachteile. Typischerweise waren
bislang die meisten L2-Cache-Speicher inklusiv. In einem inklusiven
Cache-Speicher kann die Anzahl der Datenübertragungen vom L1 zum L2
reduziert werden. Diese Verringerung in der Anzahl der Datentransferaktionen
ergibt sich, da ein nicht-modifiziertes L1-Opfer bzw. Ziel nicht
in den L2-Cache-Speicher zurückkopiert
werden muss. Ein Opfer bzw. ein Ziel ist ein Datenblock, der in
den Hauptspeicher zurückgeschrieben
wird, bevor er erneut verwendet wird. Wenn beispielsweise ein Auffüllen in
dem L1-Cache-Speicher erfordert, dass eine bestehende Zeile ersetzt
wird, wird die bestehende Zeile oder das Op fer bzw. Ziel aus dem L1-Cache-Speicher
herausgenommen, um für
die neue Zeile Platz zu schaffen. In einem inklusiven Cache-Speicher
ist eine Kopie eines L1-Ziels bereits in dem L2-Cache-Speicher vorhanden.
-
Wenn
daher das L1-Ziel nicht modifiziert ist, während es in dem L1-Cache-Speicher
ist, besteht kein Bedarf, diese Zeile in den L2-Cache-Speicher zu kopieren,
da eine identische Zeile bereits existiert. Für L2-Cache-Speicher außerhalb
des Chips kann die Inklusivität
auch sehr wichtig sein, da diese nicht die Notwendigkeit vermeidet,
eine externe L2-Markierungssuche während eines Rückkopiervorgangs vom
L1 in den L2 auszuführen,
da eine Zeile in dem L1-Cache-Speicher mit Sicherheit in dem L2-Cache-Speicher
ist. Ferner kann der L2-Cache-Speicher ein „Schnellsuchfilter" für den L1-Cache-Speicher sein (beispielsweise
wenn eine zeileninterne L2-Konfiguration verwendet wird). Ein wesentlicher Nachteil
eines inklusiven Cache-Speichers besteht darin, dass dies eine geringere
effektive Cache-Größe bietet.
Da jede Zeile in dem L1 auch in dem L2 ist, entspricht die effektive
Cache-Größe des L1-
und L2-Cache-Speichers zusammen lediglich der Größe des L2-Cache-Speichers,
wie in 1a gezeigt ist. Dies ist ein
Grund, warum L2-Cache-Speicher typischerweise größer als L1-Cache-Speicher sind.
Ein weiterer Nachteil ist der kompliziertere Steuerungsaufbau, der
für die
Cache-Steuerung auf Grund der Notwendigkeit, die Inklusivität zu bewahren,
erforderlich ist. Wenn beispielsweise ein potentielles L2-Ziel bzw.
Opfer ausgewählt
ist, muss die inklusive Cache-Steuerung
den L1-Cache-Speicher noch mal abfragen, um sicherzustellen, dass
das L2-Ziel nicht gleichzeitig
in dem L1-Cache-Speicher ist. Wenn ein mögliches L2-Ziel tatsächlich in
dem L1-Cache-Speicher vorhanden ist, muss gegebenenfalls ein weiteres
Opfer bzw. Ziel ausgewählt
werden, um die Inklusivität
zu bewahren. Wenn andererseits in einigen Ausführungsformen das mögliche L2-Ziel
ebenfalls in dem L1-Cache-Speicher enthalten ist, kann die Inklusivität beibehalten
werden, indem die entsprechende Zeile in dem L1-Cache-Speicher als
ungültig
erklärt wird
(im Gegensatz zum Auswählen
eines weiteren L2-Ziels).
-
Da
Cache-Speicher typischerweise Einrichtungen mit geringer Dichte
aber teuer in der Herstellung sind, ist das Integrieren der L2-Cache-Speicher in
der Vergangenheit eine wenig favorisierte Gestaltungsvariante im
Hinblick auf Kosten und im Hinblick auf die verfügbare Chipfläche, insbesondere
da L2-Cache-Speicher typischerweise inklusive sind und daher größer als
L1-Cache-Speicher sind.
-
Im
Gegensatz zu inklusiven Cache-Speichern bieten exklusive Cache-Speicher
unter Umständen
größere effektive
Cache-Speichergrößen, die
gleich ist der kombinierten Größe der L1-
und L2-Cache-Speicher, wie in 1b gezeigt
ist. Diese größere effektive
Speichergröße kann
zu besseren Trefferanteilen führen.
Da ferner keine Notwendigkeit besteht, den L1-Cache-Speicher erneut
abzufragen, wenn L2-Ziele bzw. Opfer ausgewählt werden, kann die Komplexität der L2-Steuerung
verringert werden.
-
Wenn
ein exklusiver Cache-Speicher verwendet wird, kann die Anzahl der
Transferaktionen zwischen dem L1- und dem L2-Cache-Speicher ansteigen.
Z. B. kann die Anzahl von Datenübertragungen
von dem L1 zum L2 ansteigen, da L1-Ziele, unabhängig davon, ob diese modifiziert
wurden oder nicht, in dem L2-Cache-Speicher gemäß dem Prinzip der Lokalität der Referenz
kopiert werden. Das Speichern von L1-Zielen in dem L2-Cache-Speicher kann das
Prinzip der Lokalität
der Referenz erfüllen,
da ein L1-Ziel mit höherer
Wahrscheinlichkeit in der näheren
Vergangenheit verwendet wurde als die anderen Zeilen in dem L2-Cache-Speicher.
In einigen Fällen lässt der
erhöhte
L1-zu-L2-Datenverkehr
einen inklusiven Cache-Speicher günstiger erscheinen, abhängig von
der Kommunikationsverbindung zwischen dem L1- und dem L2-Cache-Speicher.
-
Exklusive
Cache-Speicher können
auch in anderen Zwischenspeicheranwendungen nützlich sein. Beispielsweise
kann es vorteilhaft sein, ein Cache-Subsystem mit mehreren Ebenen
zur Verwendung in Graphiksystemen oder in einem Festplattensystem
vorzusehen. In diesen Ausführungsformen kann
es wünschenswert
sein, einen exklusiven Cache-Speicher zu verwenden, um damit die
effektive Größe des Cache-Subsystems
zu erhöhen,
ohne dass zuviel zusätzlicher
Cache-Speicherplatz erforderlich ist, wie dies für einen inklusiven Cache-Speicher
der Fall wäre.
In einigen Ausführungsformen kann
der exklusive Cache-Speicher eine praktische Entwurfsauswahl sein,
selbst wenn dieser nicht auf dem gleichen Substrat als ein Cache-Speicher
der höheren
Ebene integriert ist.
-
2 zeigt
eine Ausführungsform
eines Cache-Subsystems 407, das ausgebildet ist, Daten- und/oder
Befehlszeilen aus einem Systemspeicher 425 zur Verwendung
durch einen Ausführungskern 409 zu
speichern. Der Ausführungskern 409 fordert Daten
an, in dem eine Adresse auf einen Adressenbus 411 der Cache-Subsystemsteuerung 419 gelegt wird.
Die Adresse kann eine virtuelle Adresse sein. Obwohl die gleiche
Cache- Subsystemsteuerung 419 sowohl
den L1-Cache-Speicher als auch den L2-Cache-Speicher in diesem Beispiel steuert,
können
in anderen Ausführungsformen
separate L1- und L2-Steuerungen
verwendet werden. Der L2-Cache-Speicher 423 kann exklusiv,
inklusiv oder weder exklusiv noch inklusiv sein.
-
In
Reaktion auf das Empfangen einer Adresse von dem Ausführungskern 409 führt die
Cache-Subsystemsteuerung 419 die Adresse dem L1-Cache-Speicher 417 zu.
In einigen Ausführungsformen
kann der L1-Cache-Speicher 417 linear oder virtuell adressiert
sein, so dass, wenn die von dem Ausführungskern 409 empfangene
Adresse eine virtuelle Adresse ist, die Adresse nicht übersetzt
werden muss, bevor diese dem L1-Cache-Speicher 417 zugeführt wird.
Im Gegensatz dazu ist der L2-Cache-Speicher 423 ein physikalisch
adressierter Speicher in einigen Ausführungsformen, so dass virtuelle Adressen
vor der Weiterleitung zu dem L2-Cache-Speicher 423 übersetzt
werden müssen,
wenn ein Fehltreffer für
den L1-Cache-Speicher 417 vorliegt. In anderen Ausführungsformen
können
die Cache-Speicher in der gleichen Weise adressiert sein (beispielsweise
virtuell oder physikalisch).
-
Wenn
eine Anforderung zum Füllen
des L1 nicht den L2-Cache-Speicher 423 trifft, kann die
Zeile aus dem Speichersystem 425 angefordert werden und
in den L1-Cache-Speicher 417 gestellt
werden (beispielsweise wenn der L2-Cache-Speicher 423 exklusiv
ist), oder diese Zeile kann in dem L2-Cache-Speicher und in dem
L1-Cache-Speicher abgelegt werden (beispielsweise wenn der L2-Cache-Speicher 423 inklusiv
ist). Um die angeforderte Zeile in den L1-Cache-Speicher 417 einzulesen, kann
ein L1-Opfer bzw. Ziel erzeugt werden und in den L2-Cache-Speicher 423 zurückkopiert
werden, unabhängig
davon, ob das L1-Ziel unverändert
oder modifiziert ist (wenn der L2-Cache-Speicher 423 exklusiv
ist), oder ob das L1-Ziel modifiziert ist (wenn der L2-Cache-Speicher 423 inklusiv
ist). Wenn der L2-Cache-Speicher 423 exklusiv ist, kann
dieses Zurückkopieren
erfordern, dass eine L2-Zeile ausgewählt wird, so dass ein L2-Ziel
erzeugt werden kann, und wenn das Ziel modifiziert ist, wird dieses
in den Speicher 425 zurückgeschrieben.
In einer Ausführungsform,
in der der L2-Cache-Speicher 423 exklusiv ist, können beide
Cache-Speicher L1 und L2 einen oder mehrere Ziel- bzw. Opferpuffer 421 gemeinsam
benutzen, die Opferzeilen zwischenspeichern, wenn diese in den exklusiven
L2-Cache-Speicher 423 (wenn
es L1-Ziele gibt) oder in den Systemspeicher 425 (wenn
es modifizierte L2-Ziele gibt) zurückkopiert werden.
-
Wenn
eine Einlese- bzw. Füllanforderung
für den
L1 den L2-Cache-Speicher 423 trifft, kann die Zeile in
den L1-Cache-Speicher 417 kopiert werden. Wenn die L1-Anforderung
einen exklusiven L2-Cache-Speicher 423 trifft, kann es
vorteilhaft sein, die betroffene Zeile als ungültig zu erklären (im
Gegensatz dazu, dass diese gültig
bleibt) im Hinblick auf diverse Gründe, die mit der Erhaltung
der Exklusivität verknüpft sind.
Wenn beispielsweise die Zeile als ungültig erklärt wird, gibt es lediglich
eine Kopie der Zeile in dem Cache-Subsystem 407. Dies kann
die Steuerungslogik für
das Cache-Subsystem 407 stark vereinfachen, da diese nicht überwachen
muss, welche Kopie dieser Zeile aktueller ist. Ferner gibt das Ungültigerklären Speicherplatz
in dem L2-Cache-Speicher 423 frei, so dass eine größere effektive
Cache-Größe, die
von einem exklusiven Cache-System angeboten
wird, verwirklicht werden kann. Bevor jedoch eine Zeile als ungültig erklärt wird,
müssen
diverse Überprüfungen ausgeführt werden,
um zu bestimmen, ob die Operation (beispielsweise ein Fehltreffer
in einem L1-Cache-Speicher, der eine Einlese- bzw. Füllanforderung
für den
L2-Cache-Speicher erzeugt), die zu der Ungültigerklärung führte, fälschlicherweise ausgeführt wurde.
Wenn die Überprüfungen einen
Fehler ergeben, kann diese Operation gelöscht werden und/oder kann zu
einer späteren
Zeit erneut bearbeitet werden. Daher sollte das Ungültigerklären nur
dann auftreten, wenn diese Überprüfungen anzeigen,
dass die Bedingungen, die die Ungültigerklärung hervorgerufen haben, nicht
fehlerhaft waren.
-
Es
gibt auch viele Situation, in denen Zeilen in einem inklusiven Cache-Speicher
oder in einem Cache-Speicher, der weder exklusiv noch inklusiv ist, als
ungültig
erklärt
werden. Wie bei Ungültigerklärungen von
exklusiven Cache-Speichern hängen
diese Überprüfungen letztlich
von diversen Prüfungen
ab, die bestimmen, ob der ungültigerklärende Befehl
fehlerhaft war. Wenn beispielsweise Befehle außerhalb der Reihenfolge abgearbeitet
werden, kann ein Befehl als das Ergebnis einer Verzweigungsvorhersage abgerufen
werden. Wenn diese Verzweigungsvorhersage sich als falsch erweist,
muss das Ausführen des
abgeholten Befehls gelöscht
werden und/oder die Auswirkungen des Ausfüllens des abgeholten Befehls
müssen
revidiert werden. Alternativ kann ein außer der Reihenfolge abgearbeiteter
Befehl in einem nicht privilegierten Modus ein privilegierter Befehl
sein. Wenn einer dieser Befehle ein Befehl ist, der eine Cache-Zeile
oder einen Block als ungültig erklärt, ohne
dass die Zeile tatsächlich
aus dem Cache-Speicher gelöscht
wird, und der Befehl eine Zeile in einem L1-Cache-Speicher als ungültig erklärt, kann
es vorteilhaft sein, auch die Kopie dieser Zeile in einem inklusiven
L2-Cache-Speicher
als ungültig zu
erklären.
Wenn jedoch gewisse Überprüfungen später eine
falsch vorhergesagte Verzweigung oder eine Privilegverletzung erkennen,
kann eine Ausnahmebehandlung erzeugt werden und die Ungültigerklärungen,
die sich aus den Befehlen ergeben, die die Ausnahmebehandlung hervorgerufen
haben, muss ggf. revidiert werden. Somit können Ungültigerklärungen in einem Cache-Speicher
von der Überprüfung von
Ausnahmebehandlungen abhängen.
-
Ein
weiteres Beispiel des Überprüfens kann das Überprüfen im Hinblick
auf andere Versionen von Daten in dem Computersystem beinhalten,
um damit den Erfordernissen der Reihenfolge Rechnung zu tragen.
Beispielsweise kann eine modifizierte Kopie einer angeforderten
Datenzeile in einem Puffer gespeichert sein (beispielsweise einem
Schreibpuffer oder einem Ziel- bzw. Opferpuffer eines Cache-Speichers
höherer
Ebene). Diese modifizierte Kopie kann vor einer kürzeren Zeitspanne
modifiziert worden sein als eine Kopie, die in einem Cache-Speicher
der tieferen Ebene gespeichert ist, und wenn daher eine derartige
Kopie erkannt wird, kann eine Einleseanforderung für den Cache-Speicher
der tieferen Ebene gelöscht
werden, so dass das anfordernde Gerät die aktuellste modifizierte
Kopie der angeforderten Daten erhält. Weitere Überprüfungen,
die ausgeführt werden
können,
sind „alias"-Überprüfungen bzw. Ersatznamenüberprüfungen.
Das Überprüfen im Hinblick
auf Ersatznamen beinhaltet das Erkennen von Problemen, die in virtuell
adressierten Cache-Speichern auftreten können. Virtuelle Speichersysteme können eine
physikalische Seite des Speichers auf mehr als eine virtuelle Adresse
abbilden. Diese unterschiedlichen virtuellen Adressen (d. h. Alias-Adressen
bzw. Ersatzname) können
in mehr als einem virtuell adressierten Cache-Speicher gespeichert
sein. Beispielsweise können
Daten aus einer einzelnen physikalischen Seite möglicherweise in mehreren Speicherstellen
innerhalb eines virtuell adressierten Cache-Speichers zwischengespeichert
sein, wenn dieser auf zwei oder mehr unterschiedliche virtuelle Adressen
abgebildet ist, die unterschiedlichen Cache-Zeilen und unterschiedlichen
virtuellen Seiten zugeordnet sind. Folglich kann das Anfordern einer gewissen
Zeile unter Anwendung einer einzelnen virtuellen Adresse einen Fehltreffer
ergeben, obwohl das Anfordern der gleichen Zeile unter Anwendung eines
anderen Ersatznamens einen Treffer ergeben kann. Die Überprüfung im
Hinblick auf Ersatznamen kann erkennen, dass ein offensichtlicher
Fehltreffer tatsächlich
eine Zeile mit Ersatznamen in einem virtuell adressierten Cache-Speicher
trifft. Beispielsweise umfasst in einer Ausführungsform ein virtuell adressierter
L1-Cache-Speicher einen Befehls-Cache-Speicher und einen Daten-Cache-Speicher, die voneinander
unabhängig
sind. Der L1-Cache-Speicher kann so ausgebildet sein, dass eine
Kopie der gleichen Daten sowohl in dem Befehls-Cache-Speicher als
auch einem Daten-Cache-Speicher gleichzeitig vorhanden ist. Die
L1-Steuerung ist unter Umständen
nicht so ausgebildet, um eine Ersatznamenkopie zu finden, wenn ein
L1-Opfer in dem
Daten-Cache-Speicher ausgewählt
wird. Folglich kann ein L1-Opfer in einen exklusiven L1-Cache-Speicher
zurückkopiert
werden, selbst wenn eine Ersatznamenkopie dieser Zeile bereits in
dem Befehls-Cache-Speicher (oder dem Daten-Cache-Speicher, wenn das Opfer aus dem Befehls-Cache-Speicher ausgewählt wurde)
existiert. Als Folge davon kann eine spätere Einleseanforderung für diese
Daten den L1 unter Umständen
nicht treffen (bevor die Überprüfungen für Ersatznamen
abgeschlossen sind), kann aber den L2 treffen. Da die Ersatznamenüberprüfung die
unter einem Ersatznamen bestehende Kopie in dem L1-Cache-Speicher
erkennen sollte, sollte die Zeile in dem L2-Cache-Speicher nicht
als ungültig
erklärt
werden. Somit kann in einer derartigen Ausführungsform eine Ungültigerklärung in
einem exklusiven Cache-Speicher von den Ergebnissen der Ersatznamenprüfung abhängen.
-
In
einem weiteren Beispiel des Überprüfens kann
bestimmt werden, ob eine Zeile auf Grund ihres Zustands abgerufen
werden kann. Viele Systeme überwachen
den MESI oder MOESI-Zustand der Zeile (modifiziert, Eigentum von,
exklusiv, gemeinsam benutzt, ungültig).
Abhängig
von dem Zustand einer Zeile kann es erlaubt sein, gewisse Operationen
an dieser Zeile auszuführen.
Wenn beispielsweise eine Einleseanforderung von einem L1-Befehls-Cache-Speicher
eine modifizierte Zeile in dem L2-Cache-Speicher trifft, ist es
ggf. nicht günstig,
die Einleseanforderung abzuarbeiten, bis die modifizierte L2-Zeile
in den Speicher geschrieben ist (beispielsweise kann eine derartige
Beschränkung
verwendet werden, wenn der Befehlscache-Speicher keine Cache-Kohärenzzustände speichert).
Somit können
gewisse Überprüfungsstrategien
das Bestimmen beinhalten, ob ein spezieller Zugriff im Hinblick
auf den aktuellen Zustand der Zeile geeignet ist.
-
Somit
können
in exklusiven oder inklusiven Cache-Speichern Cache-Zeilen als Teil
oder als Ergebnis einer weiteren Cache-Operation als ungültig erklärt werden.
Gleichzeitig können
diese Ungültigkeitserklärung durch
die Ergebnisse diverser Überprüfungen revidiert
werden, zu deren Abschluss jedoch eine relativ lange Zeit erforderlich
sein kann.
-
Wenn
die Ungültigerklärungen verzögert werden,
bis diese Überprüfungen abgeschlossen sind,
verbringen die Cache-Speicher eine relativ lange Zeit damit, auf
die Überprüfungen zu
warten. Wenn die Cache-Steuerung auf den Abschluss der Überprüfungen wartet,
bevor die Zeile als ungültig
erklärt
wird, ist diese unter Umständen
nicht in der Lage, andere Operationen auszuführen und diese Verzögerung kann
das Cache-Leistungsverhalten
negativ beeinflussen. Wenn andererseits die Cache-Steuerung die
Ungültigerklärung vor
dem Abschluss der Überprüfungen ausführt, gibt
es keine Möglichkeit, die
als ungültig
erklärte
Zeile wieder herzustellen, wenn die Ungültigerklärung sich später als
fehlerhaft herausstellt. Obwohl folglich das Ausführen der Überprüfungen die
Genauigkeit des Cache-Sub-Systems verbessern kann, geht diese verbesserte
Genauigkeit zu Lasten des Leistungsverhaltens.
-
Cache-Steuerung
-
Um
das Leistungsverhalten eines Cache-Sub-Systems zu verbessern, wie
es beispielsweise in der 2 gezeigt ist, ist eine Cache-Steuerung
ausgebildet, spekulativ Cache-Zeilen
in Reaktion auf einen Befehl oder eine Anforderung als ungültig zu
erklären,
selbst wenn Überprüfungen der
Anforderung noch nicht abgeschlossen sind. Um beispielsweise die
Zugriffszeit für
einen exklusiven Cache-Speicher der unteren Ebene zu minimieren, kann
eine Füllanforderung
bzw. eine Einleseanforderung (die, wenn sie den exklusiven Cache-Speicher trifft,
eine Zeile in dem exklusiven Cache-Speicher als ungültig erklärt) zu der
exklusiven Cache-Steuerung der unteren Ebene gesendet werden, sobald
ein Fehltreffer in dem Cache-Speicher der höheren Ebene erkannt wird. Dies
kann das Senden einer Anforderung zu der Steuerung des exklusiven
Cache-Speichers der tieferen Ebene vor dem Ausführen diverser Überprüfungen,
etwa einer Ersatznamenprüfung
oder das Prüfen
von Reihenfolgenerfordernissen, beinhalten. Diese Überprüfungen können einige
Taktzyklen bis zur Vervollständigung
benötigen, aber
es ist relativ selten, dass diese fehlerhaft sind. Somit kann das
spekulative Ungültigerklären einer Cache-Zeile
vor dem Abschluss der Überprüfungen im
Allgemeinen das korrekte Ergebnis ergeben, während gleichzeitig unnötige Verzögerungen
vermieden werden. Zusätzlich
zu einer möglichen
Verbesserung der Effizienz ist ein weiterer Vorteil, der sich aus
dem Aufbau einer Cache-Steuerung zum Ausführen spekulativer Ungültigerklärungen ergibt,
die bessere Ressourcen ausnutzen. Beispielsweise kann eine exklusive
Cache-Steuerung in der Lage sein, die Markierungssuche und die spekulative
Ungültiger klärung als
einen einzelnen Befehl einzurichten, anstatt dass jeder Befehl separat
eingerichtet wird.
-
Für den seltenen
Fall, dass die Überprüfungen tatsächlich einen
Fehler anzeigen, kann der die Ungültigerklärung hervorrufende Befehl oder
die Anforderung gelöscht,
verzögert
und/oder erneut abgearbeitet werden, nachdem das Problem, dass eine Fehlermeldung
bei den Überprüfungen hervorrief, behoben
ist. Wenn beispielsweise eine Füllanforderung
bzw. Einleseanforderung von einem Befehlscache-Speicher einen exklusiven
L2-Cache-Speicher trifft,
kann die Anforderung gelöscht
werden, wenn die Trefferzeile in dem L2-Cache-Speicher in einem modifizierten
Zustand ist. Wenn die Trefferzeile spekulativ als ungültig erklärt wurde,
ist es jedoch möglich,
die Ungültigerklärung zum
Zeitpunkt des Abschlusses der Überprüfungen zu
revidieren. Um diese Situation zu vermeiden, ist eine Cache-Steuerung, die
zum Ausführen
spekulativer Ungültigerklärungen ausgebildet
ist, ferner in der Lage, ein Wiederherstellungsverfahren vorzusehen,
das es ermöglicht,
die spekulativ als ungültig
erklärte
Zeile wieder herzustellen, wenn die Überprüfungen nachfolgend einen Fehler
anzeigen.
-
In
einer Ausführungsform
bietet eine Cache-Steuerung einen derartigen Wiederherstellungsmechanismus,
indem die spekulativ als ungültig
erklärte
Zeile geschützt
wird, bis die Überprüfungen abgeschlossen
sind. Somit kann das spekulative Ungültigerklären der Zeile die Cache-Steuerung
in die Lage versetzen, weitere Operationen auszuführen, die
die spekulativ als ungültig
erklärte
Zeile nicht modifizieren. Beispielsweise können in einigen Ausführungsformen
der Cache-Steuerung mehrere Anforderungen zwischen dem Zeitpunkt,
ab welchem eine Zeile spekulativ als ungültig erklärt wurde, und den Zeitpunkt,
an dem die Überprüfungen abgeschlossen sind,
zugleitet werden. Um die Konflikte zwischen diesen aufeinanderfolgenden
Befehlen oder Anforderungen der spekulativen Ungültigerklärung zu vermeiden (wenn die
spekulative Ungültigerklärung später revidiert
wird), ist die Cache-Steuerung ausgebildet, Anforderungen nicht
zu akzeptieren, die mögliche
Konflikte darstellen. Die Cache-Steuerung ist ausgebildet, Anforderungen
herauszusuchen, die sich auf spekulativ als ungültig erklärte Zeilen beziehen, selbst
wenn diese Anforderungen die Zeile tatsächlich nicht modifizieren.
Wenn beispielsweise die spekulative Ungültigerklärung letztlich revidiert wird (beispielsweise
weil eine der Überprüfungen einen Fehler
zeigt), kann das Nichtakzeptieren dieser nicht modifizierenden Anforderungen
bis zum Abschluss der Überprüfungen verhindern,
dass eine Anforde rung fälschlich
so bearbeitet wird, als ob die Zeile ungültig war. Somit ist in einer
Ausführungsform
die Cache-Steuerung ausgebildet, Anforderungen oder Befehle nicht
zu akzeptieren, die Markierungen besitzen, die mit einem Teil der
Markierung der spekulativ als ungültig erklärten Zeilen übereinstimmen.
-
In
einer etwas komplexeren Ausführungsform
ist die Cache-Steuerung ausgebildet, Anforderungen auf der Grundlage
der Art der Anforderung oder des Befehls und/oder der möglichen
Wirkung des Befehls nicht zu akzeptieren. Beispielsweise ist die
Cache-Steuerung
ausgebildet, Einlese- bzw. Füllanforderungen,
Anfragen, oder Statusänderungen
herauszusuchen, die mit der Markierung der spekulativ als ungültig erklärten Zeile übereinstimmen. Ferner
kann die Cache-Steuerung ausgebildet sein, Rückkopien oder Einträge nicht
zu akzeptieren, die die spekulativ als ungültig erklärte Zeile auf der Grundlage
ersetzen würden,
dass sowohl eine Übereinstimmung
mit einer Markierung und ein Austauschzustand der Zeile vorliegt.
Es sei beispielsweise angenommen, dass eine LRU-Ersetzung angewendet
wird und wenn eine Rückkopie
mit der Markierung der spekulativ als ungültig erklärten Zeile übereinstimmt und diese Zeile
die am aktuellsten verwendete Zeile in einer Menge ist, wird diese
Zeile normalerweise durch eine Kopie ersetzt. Um die spekulativ
als ungültig
erklärte
Zeile zu schützen,
ist die Cache-Steuerung ausgebildet, die Rückkopie nicht zu akzeptieren.
Alternativ ist die Cache-Steuerung ausgebildet, das Zurückkopieren
zu akzeptieren aber eine andere Zeile (unter Ignorieren des aktuellen Austauschzustands)
anstelle der spekulativ als ungültig
erklärten
Zeile zu ersetzen. Wenn der Ersetzungszustand der spekulativ als
ungültig
erklärten Zeile
angibt, dass die Rückkopie
oder das Einlesen die spekulativ als ungültig erklärte Zeile nicht überschreibt
(beispielsweise wird ein LRU-Austauschschema verwendet und die spekulativ
als ungültig
erklärte
Zeile ist nicht die LRU-Zeile), dann ist die Cache-Steuerung ausgebildet,
die Anforderung zu akzeptieren.
-
In
einer Ausführungsform
umfasst die Cache-Steuerung eine Adressenkonflikterkennungshardware 500,
wie dies in 3 gezeigt ist. Die Adressenkonflikterkennungshardware
ist ausgebildet, die Wechselwirkungen zwischen einer Anforderung,
die zu einer spekulativen Ungültigerklärung einer
Zeile führte,
und nachfolgenden Anforderungen oder Befehlen zu erkennen, die zwischen
dem Zeitpunkt empfangen wurden, an dem die Zeile als ungültig erklärt wurde,
und dem Zeitpunkt, an dem die Überprüfungen für die spekulative
Ungültigerklärung abgeschlossen
ist.
-
Die
Adressenkonflikterkennungshardware 500 umfasst ein Adressenregister 504,
das ausgebildet ist, alle oder einen Teil der Adressen zu speichern,
die der spekulativ ungültig
erklärten
Zeile entsprechen. Beispielsweise kann das Adressenregister 504 die
Markierung einer spekulativ als ungültig erklärten Zeile speichern. Um die
Möglichkeit
zu bieten, mehrerer Zeilen spekulativ als ungültig zu erklären, können mehrere
dieser Register 504 in einer Speichereinheit 502 vorgesehen
sein. Ein Komparator 501 vergleicht die Adresse einer anhängigen Anforderung
mit einem oder mehreren Adressenregister 504 und/oder der
Speichereinheit 502. Wenn die Adressen nicht übereinstimmen,
setzt der Komparator 501 ein Freigabesignal. Auf der Grundlage
des Zustands des Freigabesignals kann dann die Cache-Steuerung die
anhängige
Anforderung akzeptieren oder auch nicht. Wenn beispielsweise die
Adresse der anhängigen
Anforderung mit der Adresse (oder einem Teil der Adresse), die der
spekulativ als ungültig
erklärten
Zeile entspricht, übereinstimmt, wird
von dem Komparator 501 das Freigabesignal zurückgesetzt,
wodurch die Cache-Steuerung veranlasst wird, die anhängige Anforderung
nicht zu akzeptieren.
-
Eine
Steuerung 506 für
die spekulative Ungültigerklärung steuert
die Adressenkonflikterkennungshardware 500 gemäß einigen
hierin offenbarten Ausführungsformen.
Die Steuerung für
die spekulative Ungültigerklärung 506 ist
ausgebildet, eines der Register 504 in der Speichereinheit 502 mit
einem Teil der Adresse oder einer Markierung einer spekulativ als
ungültig
erklärten
Zeile zu laden. Die Steuerung für
die spekulative Ungültigerklärung 506 ist
ausgebildet, die spekulativ als ungültig erklärte Zeile oder Zeilen über die
maximale Anzahl an Taktzyklen hinweg, die gewisse Überprüfungen benötigen, zu
schützen.
Beispielsweise ist die Steuerung für die spekulative Ungültigerklärung 506 ausgebildet,
die spekulativ ungültig
erklärten
Zeilen oder Zeile entsprechend der Anzahl an Taktzyklen zu schützen, die
für eine
Ersatznamenüberprüfung erforderlich sind.
In einer weiteren Ausführungsform
kann die Steuerung für
die spekulative Ungültigerklärung 506 die
spekulativ als ungültig
erklärte
Zeile bzw. Zeilen für
die Anzahl der Taktzyklen schützen,
die für
die Beendigung der Ausnahmeüberprüfung erforderlich sind.
-
In
einer Ausführungsform
ist die Steuerung für
die spekulative Ungültigerklärung 506 ausgebildet,
die spekulativ als ungültig
erklärte
Zeile für
eine gewisse Anzahl an Taktzyklen zu schützen, indem der Bereich der
Markierung oder der Adresse der spekulativ als ungültig erklärten Zeile
in ein Register 504 eingeladen wird und bewirkt wird, dass
der Wert in diesem Register mit den eintreffenden Anforderungen
mittels des Komparators 501 verglichen wird. Nach der spezifizierten
Anzahl an Taktzyklen setzt die Steuerung für die spekulative Ungültigerkärung 506 das
Register 504 zurück
oder weist den Komparator 501 an, den Wert in dem Register 504 nicht mehr
mit eintreffenden Anforderungen zu vergleichen. Die Steuerung für die spekulative
Ungültigerklärung kann
ferner ausgebildet sein, den Komparator 501 zu umgehen,
indem das Freigabesignal gesetzt wird, wenn es keine spekulative
ungültig
erklärten
Zeilen gibt, die zu schützen
sind.
-
In
einer Ausführungsform
ermöglicht
bis zum Abschluss der Überprüfungen die
Adressenkonfliktadressenhardware 500, dass die Cache-Steuerung zusätzliche
Einlese- bzw. Füllanforderungen
akzeptiert, solange diese nicht mit der spekulativ als ungültig erklärten Zeile
in Beziehung stehen. In ähnlicher Weise
können
zusätzliche
Sondierungsanforderungen oder Zustandsänderungsanforderungen akzeptiert
werden, solange diese nicht die spekulativ als ungültig erklärte Zeile
betreffen, und es kann eine L1- zu L2-Rückkopie akzeptiert werden,
solange nicht die als ungültig
erklärte
Zeile für
das Ersetzen ausgewählt
wird. Somit können
zusätzliche
Vergleiche gewisse Arten von Befehlen erkennen, und es werden lediglich
jene Befehle mit den Werten in den Adressenregistern 504 in
der Speichereinheit 502 verglichen.
-
Um
zu erkennen, ob eine L1-zu-L2-Kopie die spekulativ als ungültig erklärte Zeile
betrifft, kann die Adressenkonflikterkennungshardware zusätzlich eine
Logik aufweisen, die erkennt, welche Zeile für das Ersetzen ausgewählt wird.
Beispielsweise ersetzt in einem n-Wege-teilassoziativen Cache-Speicher,
der eine LRU-Ersetzung anwendet, eine Rückkopie typischerweise die
jüngst
verwendete Zeile in einer entsprechenden Menge bzw. Gruppe aus Zeilen.
Wenn die am jüngsten
verwendete Zeile in der entsprechenden Menge die spekulativ als
ungültig erklärte Zeile
ist, sollte jedoch das Zurückkopieren nicht
akzeptiert werden. Anstelle des nicht Akzeptierens des Rückkopierens
kann alternativ das Zurückkopieren
akzeptiert werden, aber anstelle des Ersetzens der spekulativ als
ungültig
erklärten
Zeilen kann das Zurückkopieren
eine andere Zeile in der Gruppe ersetzen, unabhängig von dem LRU-Zustand der spekulativ
ungültig
erklärten
Zeile. Somit kann die Adressenkonflikterkennungshardware 500 eine
Logik enthalten, die bestimmt, ob eine spekulativ ungültig erklärte Zeile
durch eine Rückkopie
ersetzt wird in Abhängigkeit
vom Ersetzungszustand (beispielsweise LRU-Zutand, FIFO, etc.) der
Zeile oder der Gruppe, die die Zeile enthält. Wenn eine Rückkopie
die spekulativ ungültig
erklärte
Zeile ersetzt, kann die Adressenkonflikterkennungshardware 500 das
Freigabesignal zurücksetzen
oder kann die Rückkopie zum
Ersetzen einer anderen Zeile bewirken.
-
Es
sei wieder auf 2 Bezug genommen; somit kann
anstelle des Abwartens mehrerer Zyklen für den Abschluss der Überprüfungen die
Cache-Steuerung 419 ausgebildet sein, eine Zeile spekulativ
als ungültig
zu erklären
in Reaktion auf eine erste Anforderung oder einen Befehl, wenn die
mit der ersten Anforderung oder dem Befehl verknüpften Überprüfungen noch nicht abgeschlossen
sind. Die Cache-Steuerung kann spekulativ die Zeile als ungültig erklären, indem
die Zeile als ungültig
markiert wird (beispielsweise durch Umschalten eines Gültigkeitsbits
von gültig
auf ungültig).
In einer bevorzugten Ausführungsform
gibt die Cache-Steuerung an, dass die Zeile ungültig ist, ohne dass die in
der Zeile gespeicherten Daten beeinflusst werden, so dass für die Zeile
in noch effizienterer Weise eine Umkehrung der Ungültigkeitserklärung herbeigeführt werden kann,
wenn eine der Prüfungen
entsprechendes angibt. Die Cache-Steuerung 419 kann ferner
einen Schutzmechanismus, etwa die Adressenkonfliktadressenhardware 500 aufeisen,
um spekulativ ungültig
erklärte
Zeilen zu schützen.
Folglich kann die Cache-Steuerung 419 einen Schutzmechanismus
in Verbindung mit dem spekulativen Ungültigerklären einer Zeile initiieren.
Beispielsweise kann die gesamte Adresse oder ein Teil davon, die
der spekulativ als ungültig
erklärten
Zeile entspricht, in ein Adressenregister 504 eingeladen
werden, um die in 3 gezeigten Schutzmechanismus
in Gang zu setzen. Wenn Überprüfungen entsprechend
der Ungültigerklärung einen
Fehler anzeigen, kann die Cache-Steuerung 419 die spekulative
Ungültigerklärung rückgängig machen,
indem diese angibt, dass diese Zeile wieder gültig ist (beispielsweise Umschalten
eines Gültigkeitsbits
von ungültig
auf gültig).
Die Cache-Steuerung 419 ist ferner ausgebildet, den Schutzmechanismus
nach dem Abschluss der Überprüfungen abzuschalten.
-
Wie
zuvor erwähnt
ist, kann in vielen Ausführungsformen
die Cache-Steuerung 419 Zeilen in einem Cache-Speicher
unter Anwendung einer gewissen Art eines Ersetzungsschemas ersetzen.
Beispielsweise kann die Cache-Steuerung einen LRU- oder FIFO-Ersetzungsmechanismus
anwenden. Um ein derartiges Schema einzurichten, kann die Cache-Steuerung
Ersetzungszustandsinformation für jede
Zeile oder Gruppe aus Zeilen speichern. In einer Ausführungsform
zur Einrichtung eines LRU-Austauschschemas gibt dieser Ersetzungszustand
den relativen Nutzungsstatus jeder Zeile in dem Cache- Speicher oder einem
Teil eines Cache-Speichers an (beispielsweise eine Gruppe in einem
teilassoziativen Cache-Speicher). Alternativ gibt in einer Ausführungsform
mit Implementierung eines FIFO-Ersetzungsschemas der Ersetzungszustand
an, wie lange jede Zeile in dem Cache-Speicher oder einem Teil des
Cache-Speichers (beispielsweise einer Gruppe) im Vergleich zu anderen
Zeilen in diesem Bereich des Cache-Speichers war.
-
Wenn
eine Zeile spekulativ als ungültig
erklärt
wird, kann der Ersetzungszustand entsprechend dem Cache-Speicher
oder dem Bereich des Cache-Speichers aktualisiert werden, so als
ob die spekulative Ungültigerklärung eine
nicht-spekulative Ungültigerklärung war.
Wenn jedoch die spekulative Ungültigerklärung später verworfen
wird, gibt die aktualisierte Ersetzungszustandsinformation den geeigneten
Ersetzungszustand für
die Zeile nicht wieder. Zur Kompensierung kann die Cache-Steuerung 419 ausgebildet
sein, den zuvor existierenden Ersetzungszustand zu speichern, wenn
eine Zeile spekulativ als ungültig
erklärt
wird, bevor der Ersetzungszustand aktualisiert wird, so dass dieser
die Ungültigerklärung ergibt.
Wenn die spekulative Ungültigerklärung später rückgängig gemacht
wird, ist die Cache-Steuerung 419 ausgebildet, den gesicherten
Versetzungszustand wieder herzustellen. Somit ist in einigen Ausführungsformen
die Cache-Steuerung 419 ausgebildet den Versetzungszustand
zu modifizieren und zu sichern, wenn spekulative Ungültigerklärungen ausgeführt werden.
-
In
den 4a und 4b ist
eine Ausführungsform
eines Verfahrens zum Ausführen
von spekulativen Ungültigerklärungen in
einem exklusiven Cache-Speicher gezeigt. Zu beachten ist, dass obwohl
die funktionellen Blöcke
in einer gewissen Reihenfolge in der dargestellten Ausführungsform
angeordnet sind, diese Anordnung lediglich anschaulicher Natur ist
und nicht bedeutet, dass das Verfahren eine spezielle zeitliche
Reihenfolge erfordert, da andere Ausführungsformen unter Anwendung
unterschiedlicher Anordnungen der Funktionsblöcke realisiert werden können. Bei 601 wird
eine Einlese- bzw. Füllanforderung
von der exklusiven Cache-Steuerung akzeptiert. In einigen Ausführungsformen
ist der exklusive Cache-Speicher ein L2-Cache-Speicher, und die
Steuerung für
den exklusiven Cache-Speicher steuert sowohl den L1- als auch den
L2-Cache-Speicher.
An einem gewissen Punkt vor oder nach dem Zeitpunkt, an dem der
exklusive Cache-Speicher die Anforderung akzeptiert, können Überprüfungen im
Hinblick auf einen Fehltreffer in dem anfordernden Cache-Speicher
und/oder im Hinblick auf einen Treffer in dem exklusiven Cache-Speicher,
die sich aus der Anforderung ergeben, kommuniziert werden, wie dies
bei 603 angegeben ist.
-
Wenn
die Einlesenanforderung, die bei 601 akzeptiert wurde,
den exklusiven Cache-Speicher trifft,
sendet der exklusive Cache-Speicher die angeforderte Zeile mit Daten
zu dem anfordernden Cache-Speicher, wie dies bei 605 angegeben
ist. Der Einfachheit halber wird die angeforderte Zeile im Weiteren
als „Zeile
N" bezeichnet. Um
die Exklusivität
zu bewahren, erklärt
die Steuerung des exklusiven Cache-Speichers die Zeile N als ungültig, wie dies 607 angegeben
ist. Jedoch kann diese Ungültigerklärung auftreten,
bevor die Überprüfungen 603 abgeschlossen
sind, so dass die Cache-Steuerung die Ungültigerklärung in spekulativer Weise
ausführt. Um
die Ungültigerklärung in
dem Fall umzukehren, dass die Überprüfungen einen
Fehler angeben, kann die Cache-Steuerung bei 607 auch die
vorhergehende Ersetzungszustandsinformation sichern (d. h. Information,
die bestimmt, welche Zeile in einer Gruppe oder einem Cache-Speicher
zuerst ersetzt wird, etwa eine LRU-Information oder eine FIFO-Information) entsprechend
der Zeile N, wenn die Ungültigerklärung diese
Ersetzungszustandsinformation beeinflusst, und es wird die Ersetzungszustandsinformation
aktualisiert, so dass diese die Ungültigerklärung beinhaltet.
-
Eine
weitere Komponente der spekulativen Ungültigerklärung beinhaltet, dass die Steuerung
für den
exklusiven Cache-Speicher einen Schutzmechanismus aufruft, der die
Zeile N schützt.
Obwohl die Zeile N als ungültig
erklärt
wurde, kann somit die Steuerung für den exklusiven Cache-Speicher
davon befreit werden, andere Anforderungen zu akzeptieren, und die
Steuerung für
den exklusiven Cache-Speicher kann das Akzeptieren von Anforderungen,
die möglicherweise
die Zeile N beeinflussen oder von dieser abhängen, verzögern oder zurückweisen,
bis die Überprüfungen abgeschlossen
sind. Wenn folglich bei 611 dem exklusiven Cache-Speicher
eine neue Anforderung zugleitet wird, und wenn diese Anforderung
möglicherweise
die Zeile N beeinflusst oder von dieser abhängt, wie die bei 613 gezeigt
ist, akzeptiert die Cache-Steuerung die Anforderung nicht. Beispielsweise
akzeptiert die Cache-Steuerung eine Anforderung nicht, die die Zeile N überschreiben
würde.
Wenn jedoch die Anforderung die Zeile N nicht betrifft, akzeptiert
der exklusive Cache-Speicher die Anforderung und verarbeitet diese
entsprechend, wie dies bei 617 angegeben ist. In einigen
Ausführungsformen
bestimmt die Steuerung des exklusiven Cache-Speichers, ob eine Anforderung
möglicherweise
die Zeile N beeinflusst, indem überprüft wird,
ob die Markierung der Anforderung mit der Markierung der Zeile N übereinstimmt.
Wenn in einer Ausführungsform
eine Rückkopieranforderung
auftritt, enthält
die Steuerung des exklusiven Cache-Speichers auch eine Logik, die
bestimmt, ob die Zeile N durch das Kopieren unter Voraussetzung des
aktuellen Ersetzungszustands ersetzt würde. Wenn die Zeile N ersetzt
würde,
kann die Steuerung des exklusiven Cache-Speichers das Rückkopieren entweder
nicht akzeptieren oder das Zurückkopieren wird
akzeptiert, jedoch wird eine andere Zeile anstelle der Zeile N ersetzt.
Wenn die Überprüfungen,
die bei 603 initiiert wurden, einen Fehler anzeigen, kann die
Steuerung für
den exklusiven Cache-Speicher den Wiederherstellungsmechanismus
anwenden, um die Ungültigerklärung bei 623 rückgängig zu
machen. Beispielsweise kann Steuerung für den exklusiven Cache-Speicher
die Zeile erneut als gültig
erklären
(indem ein Gültigkeitsbit
von ungültig
auf gültig geschaltet
wird) und kann die Ersetzungszustandsinformation vor der Ungültigerklärung, die
die Zeile N betrifft, wieder herstellen. Wenn stattdessen die Überprüfungen,
die bei 603 initiiert werden, keinen Fehler ergeben, kann
die Steuerung des exklusiven Cache-Speichers damit aufhören, Anforderungen überprüfen, die
möglicherweise
die spekulativ ungültig
erklärte
Zeile N beeinflussen. Sobald die Überprüfungen positiv abgeschlossen
sind, kann die Ungültigerklärung als
eine nicht-spekulative Ungültigerklärung behandelt
werden, und wenn daher die Ersetzungszustandsinformation in 607 gesichert
wurde, wird diese gesicherte Information nicht mehr bewahrt, sobald
die Überprüfungen abgeschlossen sind.
-
In
einigen Ausführungsformen
sind die bei 603 initiierten Überprüfungen abgeschlossen, bevor die
Cache-Steuerung die Anforderung beendet, die bei 601 akzeptiert
wurde, und wenn eine dieser Überprüfungen einen
Fehler anzeigt, wird die Anforderung verworfen, bevor eine Zeile
spekulativ ungültig
erklärt wird.
In dieser Situation erklärt
die Cache-Steuerung die
Zeile nicht spekulativ als ungültig
(im Gegensatz zum Ausführen
der spekulativen Ungültigerklärung, die
bei 607 gezeigt ist).
-
Wenn
die Einlese- bzw. Füllanforderung,
die bei 601 akzeptiert wurde, den exklusiven Cache-Speicher
nicht trifft, kann der anfordernde Cache-Speicher eine Einleseanforderung
zu einem Cache-Speicher oder einem Systemspeicher der unteren Eben
senden, wenn dies nicht bereits geschehen ist, wie dies bei 609 angegeben
ist. In vielen Ausführungsformen
kann der anfordernde Cache-Speicher eine Einleseanforderung an den
Systemspeicher zeitgleich mit dem Senden einer Einleseanforderung für den exklusiven Cache-Speicher
senden, um damit die Bearbeitungszeit in dem Systemspeicher in dem
Falle zu minimieren, dass die Einleseanforderung den exklusiven
Cache-Speicher nicht trifft. Nach dem Senden der Einleseanforderung
kann der exklusive Cache-Speicher weiter andere Anforderungen empfangen
und auf diese reagieren.
-
5 ist
eine Ausführungsform
eines Verfahrens zum Ausführen
einer spekulativen Ungültigerklärung in
einem Cache-Speicher, unabhängig
davon, ob der Cache-Speicher exklusiv, inklusiv oder weder exklusiv
noch inklusiv ist. Bei 701 akzeptiert eine Cache-Steuerung einen Befehl
oder eine Anforderung. Beispielsweise kann der erhaltene Befehl eine
Einleseanforderung, eine Rückkopieranforderung,
eine Anfrage, eine Zustandsänderung
oder eine Ungültigkeitserklärung sein.
Das Abarbeiten der Anforderung kann jetzt notwendig machen, dass
eine Zeile in den akzeptierenden Cache-Speicher als ungültig erklärt wird.
Jedoch können
gewisse Überprüfungen ausgeführt werden
(wie bei 703 gezeigt) im Hinblick auf die Quelle des Befehls
oder der Anforderung (beispielsweise ein Fehlertreffer in einem
Cache-Speicher der höheren
Ebene), oder im Hinblick auf das Ergebnis, das zu der Ungültigerklärung führte (beispielsweise
ein Treffer in einem exklusiven Cache-Speicher), und wenn diese Überprüfungen einen Fehler
anzeigen, wird die Anforderung und/oder die Ungültigerklärung verworfen. Da diese Überprüfungen mehrere
Taktzyklen bis zum Abschluss benötigen,
kann die Cache-Steuerung die Zeile spekulativ als ungültig erklären, so
dass die Cache-Steuerung weiterhin neue Anforderungen akzeptieren
kann, während
die Überprüfungen gerade
abgearbeitet werden. Somit erklärt
bei 707 die Cache-Steuerung die Zeile als spekulativ ungültig, indem
das Gültigkeitsbit
für die
Zeile umgeschaltet wird, und wenn die Ungültigerklärung die Ersetzungszustandsinformation,
die der ungültig
erklärten
Zeile entspricht, beeinflusst, wird die vorhergehende Ersetzungszustandsinformation
gespeichert und die Ersetzungszustandsinformation wird aktualisiert,
so dass diese die Ungültigkeit
wiedergibt.
-
Die
Cache-Steuerung kann die spekulativ ungültig erklärte Zeile schützen, indem
Anforderungen nicht akzeptiert werden, die die spekulativ ungültig erklärte Zeile
beeinflussen oder von dieser abhängen,
bis die im Schritt 703 initiierten Überprüfungen abgeschlossen sind.
Wenn daher eine neue Anforderung eintrifft, die möglicherweise
die ungültig
erklärte Zeile
betrifft und die Überprüfungen noch
nicht abgeschlossen sind, kann die Cache-Steuerung die Anforderung
nicht akzeptieren, wie bei 719 gezeigt ist. Bei 717 akzeptiert
die Cache-Steuerung eine Anforderung, die potentiell nicht die spekulativ
un gültig
erklärte
Zeile betrifft. Wenn die Überprüfungen positiv sind,
hört die
Cache-Steuerung
damit auf, die spekulativ ungültig
erklärte
Zeile zu schützen,
da die Ungültigerklärung nicht
mehr spekulativ ist. Wenn die Überprüfungen einen
Fehler anzeigen, kann jedoch die Cache-Steuerung die Ungültigerklärung umkehren, wie
bei 723 gezeigt ist, indem das Gültigkeitsbit für die ungültig erklärte Zeile
umgeschaltet wird, um damit anzugeben, dass diese zulässig ist,
und wenn Ersetzungszustandsinformation gesichert wurde, wird die
gesicherte Ersetzungszustandsinformation wieder hergestellt.
-
In
einigen Ausführungsformen
wird, wenn die Überprüfungen einen
Fehler anzeigen, bevor die Cache-Steuerung die bei 701 akzeptierte
Anforderung abschließt,
die Anforderung verworfen, bevor eine Zeile spekulativ ungültig erklärt wird.
In dieser Situation erklärt
die Cache-Steuerung die Zeile nicht spekulativ als ungültig (im
Gegensatz zum Ausführen der
spekulativen Ungültigerklärung, die
bei 707 gezeigt ist).
-
Computersystem
-
6 zeigt
eine Blockansicht einer Ausführungsform
eines Computersystems 200, das einen Prozessor 10 aufweist,
der mit mehreren Systemkomponenten über eine Busbrücke 202 verbunden ist.
Es sind andere Ausführungsformen
eines Computersystems möglich
und hierin berücksichtigt.
In dem dargestellten System ist ein Hauptspeicher 204 mit
der Busbrücke 202 über einen
Speicherbus 206 verbunden, und eine Graphiksteuerung 208 ist
mit der Busbrücke 202 über einen
AGP-Bus 210 verbunden. Mehrere PCI-Geräte 212a bis 212b sind
mit der Busbrücke 202 über einen
PCI-Bus 214 verbunden. Eine zweite bzw. sekundäre Busbrücke 216 ist
ebenso vorgesehen, um eine elektrische Schnittstelle zu einem oder
mehreren EISA- oder ISA-Geräten 218 über einen
EISA/ISA-Bus 220 bereitzustellen.
In diesem Beispiel ist der Prozessor 10 mit der Busbrücke 202 über einen
CPU-Bus 224 und mit einem optionalen L2-Cache-Speicher 228 verbunden.
In einigen Ausführungsformen
umfasst der Prozessor 10 einen integrierte L1-Cache-Speicher (nicht gezeigt).
-
Die
Busbrücke 202 bildet
eine Schnittstelle zwischen dem Prozessor 10, dem Hauptspeicher 204,
der Graphiksteuerung 208 und den Geräten, die an den PCI-Bus 214 angeschlossen
sind. Wenn eine Operation von einem der Geräte, die mit der Busbrücke 202 verbunden
sind, empfangen wird, erkennt die Busbrücke 202 das Ziel der
Operation (beispielsweise ein spezielles Gerät oder im Falle eines PCI-Busses 214,
dass das Ziel auf dem PCI-Bus 214 liegt). Die Busbrücke 202 leitet
die Operation an das Zielgerät
weiter. Die Busbrücke 202 übersetzt
im Allgemeinen eine Operation von dem Protokoll, das von dem Ausgangsgerät oder dem
Bus verwendet wird, in das Protokoll, das von dem Zielgerät oder dem Zielbus
verwendet wird.
-
Zusätzlich zum
Bereitstellen einer Schnittstelle zu einem ISA/EISA-Bus für den PCI-Bus 214 kann
die zweite Busbrücke 216 weitere
Zusatzfunktionen aufweisen. Eine Eingangs/Ausgangs-Steuerung (nicht
gezeigt), die entweder extern zu der sekundären Busbrücke 216 oder dann
integriert ist, kann ebenfalls in dem Computersystem 200 vorgesehen
sein, um eine zusätzliche
Unterstützung
für eine
Tastatur und eine Maus 222 und für diverse serielle und parallele
Anschlüsse
zu bieten. Eine externe Cache-Einheit (nicht gezeigt) kann ebenso
mit dem CPU-Bus 224 zwischen dem Prozessor 10 und der
Busbrücke 202 in
weiteren Ausführungsformen angeschlossen
sein. Alternativ ist der externe Cache-Speicher mit der Busbrücke 202 verbunden,
und die Cache-Steuerlogik für
den externen Cache-Speicher kann in der Busbrücke 202 integriert
sein. Der L2-Cache-Speicher 228 ist
in Form einer Rückseitenkonfiguration
in Bezug auf den Prozessor 10 dargestellt. Zu beachten
ist, dass der L2-Cache-Speicher 228 separat zum Prozessor 10 vorgesehen
sein kann, oder in einem Gehäuse
integriert sein kann (beispielsweise Einschub 1 oder Einschub A)
zusammen mit dem Prozessor 10, oder dieser kann auf einem
Halbleitersubstrat zusammen mit dem Prozessor 10 integriert
sein.
-
Der
Hauptspeicher 204 ist ein Speicher, in welchem Anwendungsprogramme
gespeichert sind und aus dem heraus der Prozessor 10 hauptsächlich arbeitet.
Ein geeigneter Hauptspeicher 204 umfasst einen DRAM (dynamischen
Speicher mit wahlfreiem Zugriff). Beispielsweise sind mehrere Bänke eines SDRAM
(synchroner DRAM) oder eines Rambus (RDRAM) geeignet.
-
Die
PCI-Geräte 212A bis 212B sind
stellvertretend für
eine Vielzahl peripherer Geräte,
etwa Netzwerkschnittstellenkarten, Videobeschleuniger, Klangkarten,
Festplatten oder Diskettenlaufwerke oder Laufwerkssteuerungen, SCSI-(Kleincomputersystemschnittstellen)Adapter
und Telefonkarten. In ähnlicher
Weise ist das ISA-Gerät 218 ein
Repräsentant
für diverse
Arten von peripheren Geräten,
etwa für
ein Modem, eine Klangkarte und eine Vielzahl von Datennahmekarten,
etwa GPIB- oder Feldbusschnittstellenkarten.
-
Die
Graphiksteuerung 208 ist vorgesehen, um das Erzeugen von
Text und Bildern auf einer Anzeige 226 zu steuern. Die
Graphiksteuerung 208 kann einen typischen Graphikbeschleuniger
repräsentieren,
wie er im Allgemeinen im Stand der Technik bekannt ist, um dreidimensionale
Datenstrukturen zu erzeugen, die in effizienter Weise in den Hauptspeicher 204 verschoben
und daraus ausgelesen werden können.
Die Graphiksteuerung 208 kann daher ein übergeordnetes
Gerät für den AGP-Bus 210 sein
in dem Sinne, dass dieses Zugriff zu einer Zielschnittstelle innerhalb
der Busbrücke 202 anfordern kann
und diesen Zugriff erhält,
um damit Zugriff auf den Hauptspeicher 204 zu erhalten.
Ein spezieller Graphikbus übernimmt
das rasche Abrufen von Daten aus dem Hauptspeicher 204.
Für gewisse
Operationen ist die Graphiksteuerung 208 ferner ausgebildet,
PCI-Protokolltransaktionen auf dem AGP-Bus 210 zu erzeugen.
Die AGP-Schnittstelle
der Busbrücke 202 enthält daher
Funktionen, um sowohl AGP-Protokolltransaktionen
sowie PCI-Protokollziel- und Initiator-Transaktionen zu unterstützen. Die
Anzeige 226 ist eine beliebige elektronische Anzeige, auf
der Bild oder Text dargestellt werden kann. Zu geeigneten Anzeigen 226 gehören Kathodenstrahlröhren („CRT"), eine Flüssigkristallanzeige
(„LCD"), etc.
-
Zu
beachten ist, dass, obwohl die AGP-, PCI- und ISA- oder EISA-Busse
in der obigen Beschreibung als Beispiele aufgezählt sind, auch andere Busarchitekturen
nach Bedarf eingesetzt werden können.
Des weiteren ist zu beachten, dass das Computersystem 200 ein
Multiprozessorcomputersystem mit weiteren Prozessoren sein kann
(beispielsweise dem Prozessor 10a, wie er als optionale Komponente
des Computersystems 200 gezeigt ist). Der Prozessor 10a kann ähnlich zu
dem Prozessor 10 ausgebildet sein. Insbesondere kann der
Prozessor 10a eine identische Kopie des Prozessors 10 sein.
Der Prozessor 10a wird mit der Busbrücke 202 über einen
unabhängigen
Bus (wie in 6 gezeigt) verbunden oder benutzt
gemeinsam mit dem Prozessor 10 den CPU-Bus 224.
Ferner kann der Prozessor 10a mit einem optionalen L2-Cache-Speicher 228a, ähnlich zu
dem L2-Cache-Speicher 228 verbunden sein.
-
Mehrknotenverarbeitungssystem
-
7 zeigt
eine weitere Ausführungsform
eines Computersystems 300. Andere Ausführungsformen sind möglich und
hierin mit eingeschlossen. In der Ausführungsform aus 7 umfasst
das Computersystem 300 mehrere Verarbeitungsknoten 312a, 312b, 312c und 312d.
Jeder Verarbeitungsknoten ist mit einem entsprechenden Speicher 314A bis 314D über eine
Speichersteuerung 316A bis 316D verbunden, die
in dem jeweiligen Verarbeitungsknoten 312A bis 312D vorgesehen
ist. Des weiteren enthalten die Verarbeitungsknoten 312A bis 312D eine
Schnittstellenlogik, die verwendet wird, um eine Kommunikation zwischen
den Verarbeitungsknoten 312A bis 312D zu unterhalten.
Beispielsweise enthält
der Verarbeitungsknoten 312A eine Schnittstellenlogik 318A zur
Kommunikation mit dem Verarbeitungsknoten 312D, eine Schnittstellenlogik 318B für die Kommunikation
mit dem Verarbeitungsknoten 312C und eine dritte Schnittstellenlogik 318C für die Kommunikation
mit einem noch weiteren Verarbeitungsknoten (nicht gezeigt). In ähnlicher Weise
umfasst der Verarbeitungsknoten 312B die Schnittstellenlogiken 318D, 318E und 318F;
der Verarbeitungsknoten 312C umfasst die Schnittstellenlogiken 318G, 318H und 318I;
und der Verarbeitungsknoten 312D umfasst die Schnittstellenlogiken 318J, 318K und 318L.
Der Verarbeitungsknoten 312D ist so angeschlossen, dass
er mit mehreren Eingabe/Ausgabe-Geräte (beispielsweise die Geräte 320A, 320B in
einer Prioritätskettenkonfiguration) über die
Schnittstellenlogik 318F kommuniziert. Andere Verarbeitungsknoten
können
mit anderen I/O-Geräten
in ähnlicher
Weise kommunizieren.
-
Die
Verarbeitungsknoten 312A bis 312B bilden eine
paketbasierte Verbindung für
die Kommunikation zwischen den Verarbeitungsknoten. In der vorliegenden
Ausführungsform
ist die Verbindung als eine Gruppe von unidirektionalen Leitungen
eingerichtet (beispielsweise werden die Leitungen 324A verwendet,
um Pakete von dem Verarbeitungsknoten 312A zu dem Verarbeitungsknoten 312B zu
senden, und die Leitungen 324 werden verwendet, um Pakete von
dem Verarbeitungsknoten 312B zu dem Verarbeitungsknoten 312A zu
senden). Es werden weitere Gruppen aus Leitungen 324C bis 324H verwendet, um
Pakete zwischen anderen Verarbeitungsknoten auszutauschen, wie in 7 gezeigt
ist. Im Allgemeinen enthält
jede Gruppe aus Leitungen 324 eine oder mehrere Datenleitungen,
eine oder mehrere Taktleitungen entsprechend den Datenleitungen
und eine oder mehrere Steuerleitungen, die die Art des übertragenen
Pakets angeben. Die Verbindung kann in einer mit dem Cache-Speicher
kohärenten
Weise für eine
Kommunikation für
den Verarbeitungsknoten oder in einer mit dem Cache-Speicher nicht
kohärenten
Weise für
die Kommunikation zwischen einem Verarbeitungsknoten und einem I/O-Gerät betrieben werden
(oder einer Busbrücke
und einem I/O-Bus mit konventionel lem Aufbau, etwa dem PCI-Bus oder dem
ISA-Bus). Ferner kann die Verbindung in einer nicht-kohärenten Weise
unter Anwendung einer Prioritätsstruktur
zwischen den I/O-Geräten betrieben werden,
wie dies gezeigt ist. Zu beachten ist, dass ein von einem Verarbeitungsknoten
zu einem anderen Verarbeitungsknoten zu sendendes Paket durch einen
oder mehrere Zwischenknoten laufen kann. Beispielsweise kann ein
von dem Verarbeitungsknoten 321A zu dem Verarbeitungsknoten 312D gesendetes
Paket durch den Verarbeitungsknoten 312B oder dem Verarbeitungsknoten 312C laufen,
wie dies in 7 gezeigt ist. Es kann ein beliebiger
geeigneter Signalführungsalgorithmus
eingesetzt werden. In anderen Ausführungsformen des Computersystems 300 sind
mehr oder weniger Verarbeitungsknoten vorgesehen, als dies in der
in 7 gezeigten Ausführungsform der Fall ist.
-
Im
Allgemeinen können
die Pakete als eine oder mehrere Bitzeiten auf den Leitungen 324 zwischen
den Knoten versendet werden. Eine Bitzeit kann die ansteigende oder
abfallende Flanke des Taktsignals in den entsprechenden Taktleitungen sein.
Die Pakete können
Befehlspakete zum Initiieren von Transaktionen, Abfragepakete bzw.
Sondierungspakete zum Beibehalten der Cache-Kohärenz und Antwortpakte zum Antworten
auf Abfrage und Befehle enthalten.
-
Die
Verarbeitungsknoten 312A bis 312D können zusätzlich zu
einer Speichersteuerung und eine Schnittstellenlogik einen oder
mehrere Prozessoren enthalten. Allgemein gesagt, ein Verarbeitungsknoten
umfasst mindestens einen Prozessor und enthält optional eine Speichersteuerung
zur Kommunikation mit einem Speicher und anderen Logikeinheiten
je nach Bedarf. Insbesondere kann jeder Verarbeitungsknoten 312A bis 312D eine
oder mehrere Kopien des Prozessors 10 enthalten. Die externe
Schnittstelleneinheit 18 kann die Schnittstellenlogik 318 innerhalb
des Knotens sowie die Speichersteuerung 316 aufweisen.
-
Die
Speicher 314A bis 314D können beliebige geeignete Speichereinrichtungen
aufweisen. Beispielsweise kann der Speicher 314A bis 314D einen oder
mehrere RAMBUS DRAM's
(RDRAM's), synchrone
DRAM's (SDRAM's), statische RAM,
etc. aufweisen. Der Adressenraum des Computersystems 300 ist
auf die Speicher 314A bis 314D aufgeteilt. Jeder
Verarbeitungsknoten 312A bis 312D kann eine Speicherzuordnung
enthalten, die verwendet wird, um zu bestimmen, welche Adressen
welchen Speichern 314A bis 314D zugeordnet sind,
und somit bestimmt, welchen Verarbeitungsknoten 312A bis 312D eine
Speicheranforderung für
eine spezielle Adresse zuzuführen
ist. In einer Ausführungsform
ist der Kohärenzpunkt
für eine
Adresse innerhalb des Computersystems 300 die Speichersteuerung 316A bis 316D,
die mit dem Speicher verbunden ist, der die Bytes entsprechend der
Adresse enthält.
Anders ausgedrückt,
die Speichersteuerung 316A bis 316D ist dafür verantwortlich,
dass sichergestellt ist, dass jeder Speicherzugriff auf den entsprechenden
Speicher 314A bis 315D in einer mit dem Cache-Speicher kohärenten Weise
von statten geht. Die Speichersteuerungen 316A bis 316D enthalten
eine Steuerschaltung zur Kommunikation mit den Speichern 314A bis 314D.
Ferner können
die Speichersteuerungen 316A bis 316D Anforderungswarteschlangen aufweisen,
um Speicheranforderungen in einer Wartereihe anzuordnen.
-
Im
Allgemeinen können
die Schnittstellenlogiken 318A bis 318L eine Vielzahl
von Puffern aufweisen, um Pakete von der Verbindung zu empfangen
und um Pakete, die über
die Verbindung zu senden sind, zwischenzuspeichern. Das Computersystem 300 enthält einen
geeigneten Ablaufsteuerungsmechanismus zum Senden von Paketen. Beispielsweise
speichert in einer Ausführungsform
jede Schnittstellenlogik 318 eine Anzahl jedes Typs an Puffer
innerhalb des Empfängers
auf der anderen Seite der Verbindung, mit der die Schnittstellenlogik verbunden
ist. Die Schnittstellenlogik sendet kein Paket, sofern die empfangende
Schnittstellenlogik nicht einen freien Puffer zum Speichern des
Pakets aufweist. Ein empfangender Puffer wird frei, indem ein Paket
weitergeleitet wird, und die empfangende Schnittstellenlogik sendet
eine Nachricht zu der sendenden Schnittstellenlogik, um anzugeben,
dass der Puffer nunmehr frei ist. Ein derartiger Mechanismus wird
als ein „Coupon-basiertes" System bezeichnet.
-
Die
I/O-Geräte 320A bis 320B können beliebige
I/O-Geräte
sein. Beispielsweise können
die I/O-Geräte 320A bis 320B Geräte für die Kommunikation
mit einem weiteren Computersystem beinhalten, mit dem die Geräte verbunden
sind (beispielsweise Netzwerkschnittstellenkarten oder Modems). Ferner
können
die I/O-Geräte 320A bis 320B Videobeschleuniger,
Audiokarten, Festplatten oder Diskettenlaufwerke oder Laufwerkssteuerungen,
SCSI-(Kleincomputersystemschnittstellen-)Adapter und Telefonkarten,
Klangkarten und eine Vielzahl von Datennahmekarten repräsentieren,
etwa GPIB- oder Feldbusschnittstellenkarten. Zu beachten ist, dass der
Begriff „I/O-Gerät" und der Begriff „peripheres Gerät" hierin als synonyme
Begriffe gedacht sind.
-
Der
Fachmann erkennt, dass diverse Variationen und Modifizierungen im
Lichte der vorhergehenden Offenbarung möglich sind. Es ist beabsichtigt,
dass die folgenden Patentansprüche
so zu verstehen sind, dass sie alle derartigen Variationen und Modifizierungen
umfassen.
-
Industrielle Anwendbarkeit
-
Die
Erfindung ist industriell auf Cache-Speicher anwendbar.