DE60222402T2 - Verfahren und system zur spekulativen ungültigkeitserklärung von zeilen in einem cachespeicher - Google Patents

Verfahren und system zur spekulativen ungültigkeitserklärung von zeilen in einem cachespeicher Download PDF

Info

Publication number
DE60222402T2
DE60222402T2 DE60222402T DE60222402T DE60222402T2 DE 60222402 T2 DE60222402 T2 DE 60222402T2 DE 60222402 T DE60222402 T DE 60222402T DE 60222402 T DE60222402 T DE 60222402T DE 60222402 T2 DE60222402 T2 DE 60222402T2
Authority
DE
Germany
Prior art keywords
cache
line
cash
speculative
invalidation
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 - Lifetime
Application number
DE60222402T
Other languages
English (en)
Other versions
DE60222402D1 (de
Inventor
Teik-Chung Austin TAN
Benjamin T. Austin Sander
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.)
GlobalFoundries Inc
Original Assignee
Advanced Micro Devices 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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Application granted granted Critical
Publication of DE60222402D1 publication Critical patent/DE60222402D1/de
Publication of DE60222402T2 publication Critical patent/DE60222402T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control

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)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

  • 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.

Claims (10)

  1. Verfahren zum spekulativen Ungültigerklären einer Cash-Zeile (423), wobei das Verfahren umfasst: Empfangen einer Anforderung zum Ungültigerklären der Cash-Zeile; Initiieren mindestens einer Überprüfung, die bestimmt, ob die Ungültigerklärung fehlerhaft ist oder nicht, wobei das Bestimmen eine vorgegebene Anzahl an Zyklen erfordert; in Reaktion auf das Empfangen, spekulatives Ungültigerklären der Cash-Zeile, wobei das spekulative Ungültigerklären umfasst: Angeben, dass die Cash-Zeile ungültig ist und Schützen der Cash-Zeile vor einer nachfolgenden Ersetzung bis die mindestens eine Überprüfung abgeschlossen ist; und in Reaktion darauf, dass die mindestens eine Überprüfung feststellt, dass die Ungültigerklärung fehlerhaft ist, Revidieren der spekulativen Ungültigerklärung durch Angeben, dass die Cash-Zeile gültig ist.
  2. Verfahren nach Anspruch 1, wobei das spekulative Ungültigerklären das Umschalten eines Gültigkeitsbits umfasst, das der Cash-Zeile zugeordnet ist.
  3. Verfahren nach Anspruch 1 oder 2, wobei das spekulative Ungültigerklären nach der vorgegebenen Anzahl an Zyklen nicht-spekulativ wird.
  4. Verfahren nach Anspruch 3, das ferner umfasst: für die gegebene Anzahl der Zyklen Blockieren des Akzeptierens weiterer Anforderungen, die die spekulativ ungültig erklärte Cash-Zeile modifizieren oder von dieser abhängen.
  5. Cash-Subsystem mit: einem Cash-Speicher (423) mit mehreren Cash-Zeilenspeicherplätzen; einer Casch-Steuerung (419), die ausgebildet ist, eine Anforderung für das Ungültigerklären einer Cash-Zeile in einer Cash-Zeilenspeicherzelle zu empfangen; einer Fehlererkennungseinheit, die ausgebildet ist, mindestens eine Überprüfung zu initiieren, die bestimmt, ob das Ungültigerklären fehlerhaft ist oder nicht, wobei das Bestimmen eine vorgegebene Anzahl an Zyklen erfordert; wobei die Cash-Steuerung ausgebildet ist, die Cash-Zeile in der Cash-Zeilenspeicherstelle spekulativ ungültig zu erklären in Reaktion darauf, dass die Anforderung empfangen wird, wobei in Reaktion auf das spekulative Ungültigerklären der Cash-Zeile die Cash-Steuerung (419) ausgebildet anzugeben, dass die Cash-Zeile ungültig ist, und ferner ausgebildet ist, das Ersetzen der Cash-Zeile zu verhindern, bis die mindestens eine Prüfung abgeschlossen ist; und wobei die Cash-Steuerung ferner ausgebildet ist, die spekulative Ungültigerklärung umzukehren, indem angegeben wird, dass die Cash-Zeile gültig ist, in Reaktion darauf, dass die mindestens eine Prüfung bestimmt, dass die Ungültigerklärung fehlerhaft ist.
  6. Cash-Subsystem nach Anspruch 5, wobei die Cash-Steuerung (419) ausgebildet ist, die Cash-Zeile spekulativ ungültig zu erklären, indem ein Gültigkeitsbit umgeschaltet wird, das der Cash-Zeile zugeordnet ist.
  7. Cash-Subsystem nach Anspruch 6, wobei, wenn die mindestens eine Prüfung ausgeführt ist und keinen Fehler erkennt, die Cash-Steuerung (419) ferner ausgebildet ist, die spekulative Ungültigerklärung umzukehren, indem das der Cash-Zeile zugeordnete Gültigkeitsbit umgeschaltet wird.
  8. Cash-Subsystem nach Anspruch 5, 6 oder 7, das ferner eine Steuerung zur spekulativen Ungültigerklärung (506) aufweist, die ausgebildet ist, die Cash-Zeile vor dem Überschreiben für die vorgegebene Anzahl an Zyklen in Reaktion darauf zu schützen, dass die Cash-Steuerung (419) die Cash-Zeile spekulativ ungültig erklärt, wobei die spekulative Ungültigerklärung nach der vorgegebenen Anzahl an Zyklen nicht-spekulativ wird.
  9. Cash-Subsystem nach Anspruch 8, wobei die Steuerung für das spekulative Ungültigerklären (506) ferner ausgebildet ist zu verhindern, dass die Cash-Steuerung (419) für die vorgegebene Anzahl an Zyklen weitere Anforderungen akzeptiert, die die spekulativ ungültig erklärte Cash-Zeile modifizieren oder von dieser abhängen.
  10. Cash-Subsystem nach Anspruch 8 oder 9, wobei die Steuerung für das spekulative Ungültigerklären (506) ferner ausgebildet ist, einen ersten Teil einer Markierung der Cash-Zeile in ein Register (504) in Reaktion darauf einzuladen, dass die Cash-Steuerung (419) die Cash-Zeile spekulativ ungültig erklärt.
DE60222402T 2001-05-16 2002-03-21 Verfahren und system zur spekulativen ungültigkeitserklärung von zeilen in einem cachespeicher Expired - Lifetime DE60222402T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/859,290 US6725337B1 (en) 2001-05-16 2001-05-16 Method and system for speculatively invalidating lines in a cache
US859290 2001-05-16
PCT/US2002/008804 WO2002093385A2 (en) 2001-05-16 2002-03-21 Method and system for speculatively invalidating lines in a cache

Publications (2)

Publication Number Publication Date
DE60222402D1 DE60222402D1 (de) 2007-10-25
DE60222402T2 true DE60222402T2 (de) 2008-05-29

Family

ID=25330505

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60222402T Expired - Lifetime DE60222402T2 (de) 2001-05-16 2002-03-21 Verfahren und system zur spekulativen ungültigkeitserklärung von zeilen in einem cachespeicher

Country Status (9)

Country Link
US (1) US6725337B1 (de)
EP (1) EP1388065B1 (de)
JP (1) JP4128878B2 (de)
KR (1) KR100885277B1 (de)
CN (1) CN1248118C (de)
AU (1) AU2002248679A1 (de)
DE (1) DE60222402T2 (de)
TW (1) TW591384B (de)
WO (1) WO2002093385A2 (de)

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6961827B2 (en) 2001-11-13 2005-11-01 Sun Microsystems, Inc. Victim invalidation
US6842827B2 (en) 2002-01-02 2005-01-11 Intel Corporation Cache coherency arrangement to enhance inbound bandwidth
US20030200386A1 (en) * 2002-04-19 2003-10-23 Seagate Technology Llc Data retention prioritization for a data storage device
US6996678B1 (en) * 2002-07-31 2006-02-07 Cisco Technology, Inc. Method and apparatus for randomized cache entry replacement
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US7617329B2 (en) * 2002-12-30 2009-11-10 Intel Corporation Programmable protocol to support coherent and non-coherent transactions in a multinode system
US7636837B2 (en) * 2003-05-28 2009-12-22 Fujitsu Limited Apparatus and method for controlling instructions at time of failure of branch prediction
US7225299B1 (en) 2003-07-16 2007-05-29 Transmeta Corporation Supporting speculative modification in a data cache
US7149851B1 (en) 2003-08-21 2006-12-12 Transmeta Corporation Method and system for conservatively managing store capacity available to a processor issuing stores
US20050172076A1 (en) * 2004-01-30 2005-08-04 Gateway Inc. System for managing distributed cache resources on a computing grid
US9727468B2 (en) 2004-09-09 2017-08-08 Intel Corporation Resolving multi-core shared cache access conflicts
US7984248B2 (en) 2004-12-29 2011-07-19 Intel Corporation Transaction based shared data operations in a multiprocessor environment
US7930484B2 (en) * 2005-02-07 2011-04-19 Advanced Micro Devices, Inc. System for restricted cache access during data transfers and method thereof
US20060179231A1 (en) * 2005-02-07 2006-08-10 Advanced Micron Devices, Inc. System having cache memory and method of accessing
US7434007B2 (en) * 2005-03-29 2008-10-07 Arm Limited Management of cache memories in a data processing apparatus
CN100378687C (zh) * 2005-08-25 2008-04-02 北京中星微电子有限公司 一种高速缓存预取模块及其方法
US7577793B2 (en) * 2006-01-19 2009-08-18 International Business Machines Corporation Patrol snooping for higher level cache eviction candidate identification
US7640399B1 (en) 2006-05-10 2009-12-29 Advanced Micro Devices, Inc. Mostly exclusive shared cache management policies
JP4783229B2 (ja) * 2006-07-19 2011-09-28 パナソニック株式会社 キャッシュメモリシステム
US8606998B2 (en) * 2006-08-24 2013-12-10 Advanced Micro Devices, Inc. System and method for instruction-based cache allocation policies
US7702858B2 (en) * 2007-06-05 2010-04-20 Apple Inc. Latency reduction for cache coherent bus-based cache
US8156309B2 (en) * 2007-10-18 2012-04-10 Cisco Technology, Inc. Translation look-aside buffer with variable page sizes
US7996626B2 (en) * 2007-12-13 2011-08-09 Dell Products L.P. Snoop filter optimization
US8464000B2 (en) * 2008-02-29 2013-06-11 Qualcomm Incorporated Systems and methods for cache line replacements
US8489820B1 (en) 2008-03-18 2013-07-16 Netapp, Inc Speculative copying of data from main buffer cache to solid-state secondary cache of a storage server
US8775718B2 (en) * 2008-05-23 2014-07-08 Netapp, Inc. Use of RDMA to access non-volatile solid-state memory in a network storage system
US8239416B2 (en) 2008-05-30 2012-08-07 Armanta, Inc. System, method, and computer program product for modeling changes to large scale datasets
US20100083247A1 (en) * 2008-09-26 2010-04-01 Netapp, Inc. System And Method Of Providing Multiple Virtual Machines With Shared Access To Non-Volatile Solid-State Memory Using RDMA
US8095831B2 (en) * 2008-11-18 2012-01-10 Freescale Semiconductor, Inc. Programmable error actions for a cache in a data processing system
US8677075B2 (en) 2010-05-18 2014-03-18 Lsi Corporation Memory manager for a network communications processor architecture
US9461930B2 (en) 2009-04-27 2016-10-04 Intel Corporation Modifying data streams without reordering in a multi-thread, multi-flow network processor
US8521961B2 (en) * 2009-08-20 2013-08-27 International Business Machines Corporation Checkpointing in speculative versioning caches
US20110055482A1 (en) * 2009-08-28 2011-03-03 Broadcom Corporation Shared cache reservation
US8713277B2 (en) 2010-06-01 2014-04-29 Apple Inc. Critical word forwarding with adaptive prediction
US8935475B2 (en) * 2012-03-30 2015-01-13 Ati Technologies Ulc Cache management for memory operations
US9262320B2 (en) 2012-06-15 2016-02-16 International Business Machines Corporation Tracking transactional execution footprint
US9311101B2 (en) 2012-06-15 2016-04-12 International Business Machines Corporation Intra-instructional transaction abort handling
US9223687B2 (en) * 2012-06-15 2015-12-29 International Business Machines Corporation Determining the logical address of a transaction abort
US9298631B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Managing transactional and non-transactional store observability
US9015419B2 (en) 2012-06-15 2015-04-21 International Business Machines Corporation Avoiding aborts due to associativity conflicts in a transactional environment
US9298469B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Management of multiple nested transactions
CN103885890B (zh) * 2012-12-21 2017-04-12 华为技术有限公司 高速缓冲存储器cache中cache块的替换处理方法和装置
US9589606B2 (en) * 2014-01-15 2017-03-07 Samsung Electronics Co., Ltd. Handling maximum activation count limit and target row refresh in DDR4 SDRAM
US9632775B2 (en) 2014-02-11 2017-04-25 Apple Inc. Completion time prediction for vector instructions
US9442734B2 (en) * 2014-02-11 2016-09-13 Apple Inc. Completion time determination for vector instructions
US9672180B1 (en) 2014-08-06 2017-06-06 Sanmina Corporation Cache memory management system and method
US9715428B1 (en) * 2014-09-24 2017-07-25 Sanmina Corporation System and method for cache data recovery
US9760314B2 (en) 2015-05-29 2017-09-12 Netapp, Inc. Methods for sharing NVM SSD across a cluster group and devices thereof
US9952797B2 (en) 2015-07-31 2018-04-24 Netapp, Inc. Systems, methods and devices for addressing data blocks in mass storage filing systems
US10257273B2 (en) 2015-07-31 2019-04-09 Netapp, Inc. Systems, methods and devices for RDMA read/write operations
GB2543745B (en) * 2015-10-15 2018-07-04 Advanced Risc Mach Ltd An apparatus and method for operating a virtually indexed physically tagged cache
US10262721B2 (en) 2016-03-10 2019-04-16 Micron Technology, Inc. Apparatuses and methods for cache invalidate
TWI611296B (zh) 2017-04-13 2018-01-11 慧榮科技股份有限公司 記憶體控制器與資料儲存裝置
TWI676104B (zh) * 2017-04-13 2019-11-01 慧榮科技股份有限公司 記憶體控制器與資料儲存裝置
US10585734B2 (en) * 2018-01-04 2020-03-10 Qualcomm Incorporated Fast invalidation in peripheral component interconnect (PCI) express (PCIe) address translation services (ATS)
US10528482B2 (en) * 2018-06-04 2020-01-07 International Business Machines Corporation Cache management
US11334495B2 (en) * 2019-08-23 2022-05-17 Arm Limited Cache eviction
US11947456B2 (en) * 2021-09-30 2024-04-02 Advanced Micro Devices, Inc. Weak cache line invalidation requests for speculatively executing instructions
US11822479B2 (en) * 2021-10-29 2023-11-21 Advanced Micro Devices, Inc. History-based selective cache line invalidation requests
US11720444B1 (en) * 2021-12-10 2023-08-08 Amazon Technologies, Inc. Increasing of cache reliability lifetime through dynamic invalidation and deactivation of problematic cache lines
CN114726759B (zh) * 2022-02-21 2024-03-22 清华大学 一种本机或远程通信请求延迟异常监控方法和装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03154948A (ja) * 1989-11-13 1991-07-02 Toshiba Corp 情報処理装置
US5197144A (en) * 1990-02-26 1993-03-23 Motorola, Inc. Data processor for reloading deferred pushes in a copy-back data cache
EP0541319B1 (de) * 1991-11-04 1997-05-02 Sun Microsystems, Inc. Virtueller Durchschreibcachespeicher Synonym-Adressierung und Cache-Ungültigkeitserklärungen
JP3013631B2 (ja) * 1992-09-28 2000-02-28 日本電気株式会社 キャッシュメモリ同期方法
JPH06242977A (ja) * 1993-02-16 1994-09-02 Mitsubishi Electric Corp 1チップマイクロプロセッサ
US5717895A (en) 1994-12-01 1998-02-10 Cray Research, Inc. Associative scalar data cache with write-through capabilities for a vector processor
GB9521977D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Cache memory
JPH09190379A (ja) * 1996-01-10 1997-07-22 Mitsubishi Electric Corp キャッシュシステム
US5835950A (en) * 1996-07-12 1998-11-10 Samsung Electronics Co., Ltd. Self-invalidation method for reducing coherence overheads in a bus-based shared-memory multiprocessor apparatus
JP3083786B2 (ja) * 1996-09-30 2000-09-04 株式会社東芝 メモリ更新履歴保存装置およびメモリ更新履歴保存方法
TW379298B (en) 1996-09-30 2000-01-11 Toshiba Corp Memory updating history saving device and memory updating history saving method
US6175906B1 (en) 1996-12-06 2001-01-16 Advanced Micro Devices, Inc. Mechanism for fast revalidation of virtual tags
US5924118A (en) 1997-04-14 1999-07-13 International Business Machines Corporation Method and system for speculatively sourcing cache memory data prior to upstream cache invalidation within a multiprocessor data-processing system
US6119205A (en) 1997-12-22 2000-09-12 Sun Microsystems, Inc. Speculative cache line write backs to avoid hotspots
JP2001034533A (ja) * 1999-07-21 2001-02-09 Nec Kofu Ltd キャッシュコヒーレンシ制御装置、2次キャッシュメモリ、中央処理装置、マルチプロセッサシステム、プロセッサノード、キャッシュコヒーレンシ制御方法

Also Published As

Publication number Publication date
TW591384B (en) 2004-06-11
WO2002093385A3 (en) 2003-10-09
KR20030097871A (ko) 2003-12-31
EP1388065B1 (de) 2007-09-12
CN1509436A (zh) 2004-06-30
EP1388065A2 (de) 2004-02-11
WO2002093385A2 (en) 2002-11-21
AU2002248679A1 (en) 2002-11-25
JP2004529435A (ja) 2004-09-24
DE60222402D1 (de) 2007-10-25
US6725337B1 (en) 2004-04-20
JP4128878B2 (ja) 2008-07-30
CN1248118C (zh) 2006-03-29
KR100885277B1 (ko) 2009-02-23

Similar Documents

Publication Publication Date Title
DE60222402T2 (de) Verfahren und system zur spekulativen ungültigkeitserklärung von zeilen in einem cachespeicher
DE112007000812B4 (de) Vorrichtung mit einer speichereinheit und drei logiken, verfahren zum durchführen der verfahrensschritte der vorrichtung undsystem mit einem speicher und einem prozessor zur bereitstellung eines effizienten mechanismus‘ für transaktionalspeicherausführungen in out-of-order-prozessoren
DE69434728T2 (de) Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel
DE112004002848B4 (de) Mikroprozessor und Verfahren zum Verifizieren einer Speicherdatei in einem derartigen Mikroprozessor
DE60003235T2 (de) Cachespeicher zum bereitstellen von partiellen etiketten aus nicht-vorhergesagten wegen um die suche bei wegvorhersagefehlgriffen zu leiten
DE60025028T2 (de) Speicherpuffer, der daten, basierend auf index und freiwilliger weisebemusterung überträgt
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE102007048507B4 (de) Cache-Speichersystem und Verfahren zum Bereitstellen eines Transaktionsspeichers
DE60009151T2 (de) Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung
DE202007019502U1 (de) Globaler Überlauf für virtualisierten Transaktionsspeicher
DE69722512T2 (de) Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll
DE102008062044B4 (de) 1Speicherinterne, seiteninterne Verzeichnis-Chache-Kohärenz-Konfiguration
DE102007030116A1 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE112005002180T5 (de) Lösen von Cachekonflikten
DE112010004971T5 (de) Ein System, Verfahren und eine Vorrichtung für einen Cache-Flush eines Seitenbereichs und TLB Invalidierung eines Bereichs von Einträgen
US20030135669A1 (en) DMA controller and coherency-tracking unit for efficient data transfers between coherent and non-coherent memory spaces
JP2010507160A (ja) データ処理装置の共有メモリへの書込みアクセス要求の処理
US7757044B2 (en) Facilitating store reordering through cacheline marking
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE102016219651A1 (de) Für Vorabzugriff unempfindlicher transaktionsgebundener Speicher
DE112004001854T5 (de) System und Verfahren zur Handhabung von Sonderinstruktionen in einem Prozessor auf Grundlage eines Cache-Speichers mit Ablaufverfolgung
DE102010034555A1 (de) Bereitstellen von Zustandsspeicher in einem Prozessor für Systemmanagement-Modus
DE112006002237T5 (de) Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem
DE112006003453T5 (de) Per-Satz-Relaxation der Cache-Inklusion
DE19506734A1 (de) Computersystem und Verfahren zum Aufrechterhalten der Speicherkonsistenz in einer Busanforderungswarteschlange

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: GLOBALFOUNDRIES INC., GRAND CAYMAN, KY

8328 Change in the person/name/address of the agent

Representative=s name: GRUENECKER, KINKELDEY, STOCKMAIR & SCHWANHAEUSSER,