-
HINTERGRUND DER ERFINDUNG
-
1. Technisches Gebiet:
-
Die vorliegende Erfindung bezieht sich im Allgemeinen auf die Datenverarbeitung und insbesondere das Unterhalten von Prozessoroperationen in einem Datenverarbeitungssystem. Die vorliegende Erfindung bezieht sich genauer auf das dynamische Einrichten eines Kohärenzzustands einer Cache-Speicher-Zeile, um Überlastungen zu vermindern, die durch speichertypische Operationen auftreten.
-
2. Beschreibung des Standes der Technik:
-
Ein herkömmliches symmetrisches Mehrprozessor-(SMP-)Computersystem wie z. B. ein Server-Computersystem enthält mehrere Verarbeitungseinheiten, die alle an ein System-Interconnect angeschlossen sind, das üblicherweise einen oder mehrere Adress-, Daten- und Steuerbusse aufweist. An das System-Interconnect ist ein Systemspeicher angeschlossen, der die unterste Ebene des flüchtigen Speichers in dem Mehrprozessor-Computersystem darstellt und auf die durch alle Verarbeitungseinheiten für Lese- und Schreibzugriffe zugegriffen werden kann. Um die Zugriffslatenzzeit für Befehle und Daten, die sich in dem Systemspeicher befinden, zu verringern, wird jede Verarbeitungseinheit üblicherweise ferner durch eine entsprechende Mehrebenen-Cache-Speicher-Hierarchie unterstützt, deren untere(n) Ebene(n) durch einen oder mehrere Prozessorkerne gemeinsam genutzt werden können.
-
Cache-Speicher werden üblicherweise genutzt, um Speicherblöcke, auf die gegebenenfalls durch einen Prozessor zugegriffen werden kann, vorübergehend zu Puffern, um eine Verarbeitung zu beschleunigen, indem die Zugriffslatenzzeit verringert wird, die eingeführt wird, wenn benötigte Daten und Befehle vom Systemspeicher geladen werden müssen. In einigen Mehrprozessor-(MP-)Systemen enthält die Cache-Hierarchie wenigstens zwei Ebenen. Der Cache der Ebene 1 (L1-Cache) oder der Cache der oberen Ebene ist gewöhnlich ein privater Cache, der einem bestimmten Prozessorkern zugehörig ist und auf den in einem MP-System durch andere Kerne nicht zugegriffen werden kann. In Reaktion auf einen Speicherzugriffsbefehl wie etwa ein Lade- oder Speicherbefehl greift der Prozessorkern üblicherweise auf das Verzeichnis des Cache der oberen Ebene zu. Wenn der geforderte Speicherblock nicht in dem Cache der oberen Ebene gefunden wird, greift der Prozessorkern anschließend auf Caches der unteren Ebene (z. B. den Cache der Ebene zwei (L2-Cache) oder den Cache der Ebene drei (L3-Cache)) zu. Der Cache der untersten Ebene (z. B. L3-Cache) wird häufig von mehreren Prozessorkernen gemeinsam genutzt.
-
Da mehrere Prozessorkerne einen Schreibzugriff auf eine gleiche Cache-Zeile von Daten fordern können und da modifizierte Cache-Zeilen nicht sofort mit dem Systemspeicher synchronisiert sind, setzen die Cache-Hierarchien von Mehrprozessor-Computersystemen üblicherweise ein Cache-Kohärenz-Protokoll um, um wenigstens einen minimalen Pegel der Kohärenz zwischen den ”Sichtweisen” des Prozessorkerns auf den Inhalt des Systemspeichers sicherzustellen. Im Einzelnen erfordert Cache-Kohärenz im Minimum, dass nachdem eine Verarbeitungseinheit auf eine Kopie eines Speicherblocks zugegriffen hat und anschließend auf eine aktualisierte Kopie des Speicherblocks zugreift, die Verarbeitungseinheit nicht erneut auf die alte Kopie des Speicherblocks zugreifen kann.
-
Ein Cache-Kohärenzprotokoll definiert üblicherweise eine Gruppe von Kohärenzzuständen, die in Verbindung mit den Cache-Zeilen jeder Cache-Hierarchie gespeichert sind, sowie eine Gruppe von Kohärenz-Nachrichten, die verwendet werden, um die Kohärenz-Zustandsinformationen zwischen Cache-Hierarchien zu kommunizieren. In vielen Fällen sind die Kohärenzzustände und die Zustandsübergänge des Kohärenzprotokolls eingerichtet, um Speicherzugriffsoperationen des Lesetyps gegenüber Operationen des Speichertyps vorzuziehen. Die Priorisierung von Operationen des Lesetyps gegenüber Operationen des Speichertyps kann zu Problemen des Weiterleitungsfortschritts für Operationen des Speichertyps beim Vorhandensein einer wesentlichen Überlastung führen.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Ein Mehrprozessor-Datenverarbeitungssystem enthält eine Vielzahl von Cache-Speichern, die einen Cache-Speicher enthält. Der Cache-Speicher gibt eine Operation des Lesetyps für eine Ziel-Cache-Zeile aus. Während des Wartens auf den Empfang der Ziel-Cache-Zeile führt der Cache-Speicher eine Überwachung aus, um eine konkurrierende Operation des Speichertyps für die Ziel-Cache-Zeile zu erfassen. In Reaktion auf den Empfang der Ziel-Cache-Zeile installiert der Cache-Speicher die Ziel-Cache-Zeile in dem Cache-Speicher und stellt einen Kohärenz-Zustand der Ziel-Cache-Zeile, die in dem Cache-Speicher installiert ist, anhand der Tatsache ein, ob die konkurrierende Operation des Speichertyps erfasst wurde.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Die neuartigen Merkmale, von denen angenommen wird, dass sie für die Erfindung kennzeichnend sind, werden in den angefügten Ansprüchen dargestellt. Die eigentliche Erfindung sowie eine bevorzugte Verwendungsart, ihre weiteren Aufgaben und Vorteile werden jedoch durch Bezugnahme auf die folgende genaue Beschreibung einer erläuternden Ausführungsform am besten verstanden, wenn diese in Verbindung mit den beigefügten Zeichnungen gelesen wird, worin:
-
1 ein Übersichts-Blockschaubild eines beispielhaften Datenverarbeitungssystems gemäß einer Ausführungsform ist;
-
2 ein genaueres Blockschaubild einer beispielhaften Verarbeitungseinheit gemäß einer Ausführungsform ist;
-
3 ein genaues Blockschaubild eines L2-Cache-Sektors gemäß einer Ausführungsform ist;
-
4 ein beispielhaftes Zeitablaufdiagramm der Verarbeitung einer Prozessor-Speicherzugriffsoperation in einem Cache der unteren Ebene gemäß einer Ausführungsform ist; und
-
5 ein logischer Übersichts-Ablaufplan eines beispielhaften Vorgangs der Ausführung einer Prozessor-Speicherzugriffsoperation gemäß einer Ausführungsform ist.
-
GENAUE BESCHREIBUNG ERLÄUTERNDER AUSFÜHRUNGSFORMEN
-
In sämtlichen Figuren, in denen gleiche Bezugszeichen ähnliche und entsprechende Teile bezeichnen, und insbesondere in 1 ist ein Übersichts-Blockschaubild erläutert, das ein beispielhaftes Datenverarbeitungssystem gemäß einer Ausführungsform darstellt. Das Datenverarbeitungssystem ist als ein cache-kohärentes symmetrisches Mehrprozessor-(SMP-)Datenverarbeitungssystem 100 dargestellt. Wie gezeigt enthält das Datenverarbeitungssystem 100 mehrere Verarbeitungsknoten 102a, 102b zum Verarbeiten von Daten und Befehlen. Die Verarbeitungsknoten 102 sind an ein System-Interconnect 110 angeschlossen, um Adressen, Daten und Steuerinformationen zu übertragen. Das System-Interconnect 110 kann z. B. als ein Bus-Interconnect, ein Switch-Interconnect oder ein Hybrid-Interconnect umgesetzt sein.
-
In der dargestellten Ausführungsform ist jeder Verarbeitungsknoten 102 als ein Mehrchip-Modul (MCM) realisiert, das vier Verarbeitungseinheiten 104a bis 104d enthält, wovon jede als vorzugsweise als eine entsprechenden integrierte Schaltung realisiert ist. Die Verarbeitungseinheiten 104 in jedem Verarbeitungsknoten 102 sind für einen Datenaustausch durch ein lokales Interconnect 114, das wie das System-Interconnect 110 z. B. mit einem oder mehreren Bussen und/oder Switches umgesetzt sein kann, untereinander und mit dem System-Interconnect 110 verbunden.
-
Wie im Folgenden in 2 genauer beschrieben enthalten die Verarbeitungseinheiten 104 jeweils eine Speicher-Steuereinheit 106, die mit dem lokalen Interconnect 114 verbunden ist, um eine Schnittstelle zu einem entsprechenden Systemspeicher 108 bereitzustellen. Auf Daten und Befehle, die sich in Systemspeichern 108 befinden, kann im Allgemeinen durch einen Prozessorkern in jeder Verarbeitungseinheit 104 von jedem Verarbeitungsknoten 102 in dem Datenverarbeitungssystem 100 zugegriffen werden und sie können durch diesen modifiziert werden. In alternativen Ausführungsformen können ein oder mehrere Speicher-Steuereinheiten 106 (und Systemspeicher 108) mit dem System-Interconnect 110 anstelle eines lokalen Interconnect 114 verbunden sein.
-
Einem Fachmann wird klar sein, dass das SMP-Datenverarbeitungssystem 100 von 1 viele zusätzliche nicht dargestellte Komponenten enthalten kann wie z. B. Interconnect-Brücken, nichtflüchtige Speichereinrichtungen, Ports zum Verbinden mit Netzwerken und angeschlossenen Einheiten usw. Da derartige zusätzliche Komponenten für ein Verständnis der beschriebenen Ausführungsformen nicht erforderlich sind, sind sie in 1 nicht dargestellt oder werden an dieser Stelle nicht weiter erläutert. Es sollte jedoch außerdem klar sein, dass die hier beschriebenen Verbesserungen auf cache-kohärente Datenverarbeitungssysteme diverser Architekturen angewendet werden können und in keiner Weise auf die in 1 dargestellte verallgemeinerte Architektur des Datenverarbeitungssystems beschränkt sind.
-
In 2 ist ein genaueres Blockschaubild einer beispielhaften Verarbeitungseinheit 104 gemäß einer Ausführungsform dargestellt. In der dargestellten Ausführungsform ist jede Verarbeitungseinheit 104 eine integrierte Schaltung, die zwei Prozessorkerne 200a, 200b zum Verarbeiten von Befehlen und Daten enthält. In einer bevorzugten Ausführungsform kann jeder Prozessorkern 200 gleichzeitig mehrere Hardware-Ausführungsthreads unabhängig ausführen. Wie dargestellt enthält jeder Prozessorkern 200 eine oder mehrere Ausführungseinheiten wie etwa die Lade-Speicher-Einheit (LSU) 202 zum Ausführen von Befehlen. Die Befehle, die durch die LSU 202 ausgeführt werden, enthalten Speicherzugriffsbefehle, die den Zugriff auf einen Speicherblock fordern oder die Erzeugung einer Anforderung zum Zugriff auf einen Speicherblock bewirken.
-
Der Betrieb jedes Prozessorkerns 200 wird durch eine Mehrebenen-Hierarchie eines flüchtigen Speichers unterstützt, die auf ihrer untersten Ebene einen gemeinsam genutzten Systemspeicher 108 aufweist, auf den über eine integrierte Speicher-Steuereinheit 106 zugegriffen wird, und auf ihren oberen Ebenen eine oder mehrere Ebenen eines Cache-Speichers aufweist, die in der dargestellten Ausführungsform in jedem Prozessorkern 200 und speziell für diesen einen Store-through-Cache 226 der Ebene eins (L1-Cache) und für jeden Prozessorkern 200a, 200b einen entsprechenden Store-in-Cache 230 der Ebene zwei (L2-Cache) enthalten. Um mehrere gleichzeitige Speicherzugriffsanforderungen auf cache-fähige Adressen effektiv abzuwickeln, kann jeder L2-Cache 230 mit mehreren L2-Cache-Sektoren 230a1 bis 230aN umgesetzt sein, von denen jede Speicherzugriffsanforderungen für eine entsprechenden Gruppe von reellen Speicheradressen abwickelt.
-
Obwohl die dargestellten Cache-Hierarchien lediglich zwei Cache-Ebenen enthalten, ist es für einen Fachmann klar, dass alternative Ausführungsformen zusätzliche Ebenen (L3, L4 usw.) eines On-Chip- oder Off-Chip-Inline- oder Lookaside-Cache enthalten können, die in dem Inhalt der oberen Ebenen des Cache vollständig, teilweise oder nicht enthalten sein können.
-
Jede Verarbeitungseinheit 104 enthält ferner eine integrierte und verteilte Fabric-Steuereinheit 216, die für die Steuerung des Ablaufs von Operationen auf dem lokalen Interconnect 114 und dem System-Interconnect 110 und die Umsetzung der Kohärenz-Kommunikation, die erforderlich ist, um das ausgewählte Cache-Kohärenz-Protokoll umzusetzen, verantwortlich ist. Die Verarbeitungseinheit 104 enthält ferner eine integrierte E/A-(Eingabe/Ausgabe-)Steuereinheit 214, die den Anschluss einer oder mehrerer E/A-Einheiten (nicht gezeigt) unterstützt.
-
Wenn im Betrieb ein Hardware-Thread, der durch einen Prozessorkern 200 ausgeführt wird, einen Speicherzugriffsbefehl enthält, der fordert, dass eine spezielle Speicherzugriffsoperation ausgeführt wird, führt die LSU 202 den Speicherzugriffsbefehl aus, um die reelle Zieladresse der Speicherzugriffsanforderung zu bestimmen. Die LSU 202 überträgt dann wenigstens die Speicherzugriffsanforderung, die wenigstens einen Transaktionstyp (ttype) und eine reelle Zieladresse enthält, zur Hash-Logik 206 in ihrem Prozessorkern 200. Die Hash-Logik 206 bildet einen Hash-Wert der reellen Zieladresse, um das geeignete Ziel zu identifizieren (z. B. L2-Cache-Sektor 230a1 bis 230aN) und sendet die Anforderung ab zum Versorgen des geeigneten Ziels.
-
In 3 ist ein genaueres Blockschaubild einer beispielhaften Ausführungsform eines der L2-Cache-Sektoren 230a1 bis 230aN (die allgemein als L2-Cache-Sektor 230a bezeichnet sind) gemäß einer Ausführungsform dargestellt. Wie in 3 gezeigt enthält der L2-Cache-Sektor 230a ein Cache-Array 302 und ein Verzeichnis 308 der Inhalte des Cache-Array 302. Obwohl nicht explizit dargestellt ist das Cache-Array 302 vorzugsweise mit einem einzigen Leseanschluss und einem einzigen Schreibanschluss umgesetzt, um die Fläche zu reduzieren, die für die Umsetzung des Cache-Array 302 erforderlich ist.
-
Unter der Annahme, dass das Cache-Array 302 und das Verzeichnis 308 in herkömmlicher Weise inhaltsadressiert eingestellt werden, werden Speicherstellen in Systemspeichern 108 auf bestimmte Kongruenzklassen in dem Cache-Array 302 unter Verwendung von im Voraus festgelegten Indexbits in den (reellen) Systemspeicher-Adressen abgebildet. Die speziellen Speicherblöcke, die in den Cache-Zeilen des Cache-Array 302 gespeichert sind, werden im Cache-Verzeichnis 308 aufgezeichnet, das für jede Cache-Zeile einen Verzeichniseintrag enthält. Obwohl in 3 nicht ausdrücklich dargestellt ist es einem Fachmann klar, dass jeder Verzeichniseintrag im Cache-Verzeichnis 308 verschiedene Felder enthält, zum Beispiel ein Bezeichnungsfeld, das die reelle Adresse des Speicherblocks identifiziert, der in der entsprechenden Cache-Zeile des Cache-Array 302 gespeichert wird, ein Zustandsfeld, das den Kohärenzzustand der Cache-Zeile angibt, ein LRU-Feld (Zuletzt-verwendet-Feld), das eine Ersetzungsreihenfolge für die Cache-Zeile in Bezug auf andere Cache-Zeilen in derselben Kongruenzklasse angibt, und Inklusivitätsbits, die angeben, ob der Speicherblock in dem zugehörigen L1-Cache 226 gespeichert wird.
-
Der L2-Cache-Sektor 230a enthält mehrere (z. B. 16) Read-Claim-(RC-)Maschinen 312a bis 312n, um unabhängig und gleichzeitig Lade-(LD-) und Speicher-(ST-)Anforderungen zu bedienen, die von dem angeschlossenen Prozessorkern 200 empfangen werden. Um ferne Speicherzugriffsanforderungen zu bedienen, die von Prozessorkernen 200 stammen, die von dem angeschlossenen Prozessorkern 200 verschieden sind, enthält der L2-Cache-Sektor 230a außerdem mehrere Snoop-Maschinen 311a bis 311m. Jede Snoop-Maschine 311 kann unabhängig und gleichzeitig eine ferne Speicherzugriffsanforderung abwickeln, die auf dem lokalen Interconnect 114 ”beobachtet” (”snooped”) wird. Es ist klar, dass die Bedienung von Speicherzugriffsanforderungen durch RC-Maschinen 312 die Ersetzung oder Ungültigmachung von Speicherblöcken in dem Cache-Array 302 erfordern kann. Dementsprechend enthält der L2-Cache-Sektor 230a CO-(Castout-)Maschinen 310, die das Entfernen und Zurückschreiben von Speicherblöcken aus dem Cache-Array 302 verwalten.
-
Der L2-Cache-Sektor 230a enthält ferner einen Arbiter 305, der Multiplexer M1 bis M2 steuert, um die Verarbeitung von lokalen Speicherzugriffsanforderungen, die vom angeschlossenen Prozessorkern 200 empfangen werden, und Fernanforderungen, die auf dem lokalen Interconnect 114 geliefert werden, anzuweisen. Speicherzugriffsanforderungen, die lokale Lade- und Speicheroperationen und Fern-Lese- und Schreiboperationen enthalten, werden gemäß der Entscheidungsrichtlinie, die durch den Arbiter 305 umgesetzt wird, zur Sendelogik wie etwa eine Sende-Pipeline 306 weitergeleitet, die jede Lese/Lade- und Speicheranforderung, die in Bezug auf das Verzeichnis 308 und das Cache-Array 302 vorhanden ist, über eine vorgegebene Anzahl von Zyklen verarbeitet.
-
Der L2-Cache-Sektor 230a enthält außerdem eine RC-Warteschlange 320 und eine CPI-(Castout Push Intervention-)Warteschlange 318, die jeweils Daten Puffern, die in das Cache-Array 302 eingesetzt und entfernt werden. Die RC-Warteschlange 320 enthält eine Anzahl von Puffereinträgen, die jeweils einer speziellen der RC-Maschinen 312 entsprechen, so dass jede RC-Maschine 312, die eingesetzt wird, Daten lediglich von dem vorgesehenen Puffereintrag abruft. In ähnlicher Weise enthält die CPI-Warteschlange 318 eine Anzahl von Puffereinträgen, die jeweils individuell einer speziellen der Castout-Maschinen 310 und Snoop-Maschinen 311 entsprechen, so dass jede CO-Maschine 310 und jeder Snooper 311, die eingesetzt werden, Daten lediglich von dem entsprechenden vorgesehenen CPI-Puffereintrag abruft.
-
Jede RC-Maschine 312 weist außerdem einen entsprechenden ihr zugewiesenen von mehreren RC-Daten-(RCDAT-)Puffern 322 auf zum Puffern eines Speicherblocks, der von dem Cache-Array 302 gelesen und/oder vom lokalen Interconnect 114 über den Umladebus 323 empfangen wird. Der RCDAT-Puffer 322, der jeder RC-Maschine 312 zugewiesen ist, ist vorzugsweise mit Verbindungen und einer Funktionalität, die den Speicherzugriffsanforderungen entsprechen, die durch die zugehörige RC-Maschine 312 bedient werden können, aufgebaut. RCDAT-Puffer 322 weisen einen zugehörigen Speicherdaten-Multiplexer M4 auf, der Datenbytes aus seinen Eingaben auswählt, um sie in dem RCDAT-Puffer 322 in Reaktion auf nicht gezeigte Auswahlsignale, die durch den Arbiter 305 erzeugt werden, zu Puffern.
-
Im Betrieb werden Prozessorspeicheranforderungen, die einen Transaktionstyp (ttype), eine reelle Zieladresse und Speicherdaten aufweisen, von dem angeschlossenen Prozessorkern 200 in einer Speicher-Warteschlange (STQ) 304 empfangen. Aus der STQ 304 werden die Speicherdaten über den Datenweg 324 zum Speicherdaten-Multiplexer M4 übertragen und der Speichertyp und die Zieladresse werden zum Multiplexer M1 geleitet. Der Multiplexer M1 empfängt außerdem als Eingaben Prozessorladeanforderungen vom Prozessorkern 200 und Verzeichnisschreibanforderungen von RC-Maschinen 312. In Reaktion auf nicht dargestellte Auswahlsignale, die durch den Arbiter 305 erzeugt werden, wählt der Multiplexer M1 eine seiner Eingabeanforderungen zum Weiterleiten zum Multiplexer M2 aus, der zusätzlich als eine Eingabe eine Fernanforderung empfängt, die vom lokalen Interconnect 114 über den Fernanforderungsweg 326 empfangen wird. Der Arbiter 305 plant lokale und ferne Speicherzugriffsanforderungen zur Verarbeitung und erzeugt anhand der Planung eine Folge von Auswahlsignalen 328. In Reaktion auf Auswahlsignale 328, die durch den Arbiter 305 erzeugt werden, wählt der Multiplexer M2 entweder die lokale Anforderung, die vom Multiplexer M1 empfangen wird, oder die ferne Anforderung, die vom lokalen Interconnect 114 geliefert wird, als die nächste Speicherzugriffsanforderung, die zu verarbeiten ist.
-
In
4 ist ein Zeit-Raum-Diagramm einer beispielhaften Operation auf dem Interconnect-Fabric des Datenverarbeitungssystems
100 von
1. Die Operation beginnt mit einer Anforderungsphase
450, in der ein Master
400 z. B. eine RC-Maschine
312 eines L2-Cache
230 eine Anforderung
402 auf dem Interconnect-Fabric ausgibt. Die Anforderung
402 enthält vorzugsweise wenigstens einen Transaktionstyp, der einen Typ des gewünschten Zugriffs angibt, und eine Ressourcenkennung (z. B. eine reelle Adresse), die eine Ressource angibt, auf die durch die Anforderung zugegriffen werden soll. Zu üblichen Typen von Anforderungen gehören jene, die in der nachfolgenden Tabelle 1 dargestellt sind. TABELLE 1
Anforderung | Beschreibung |
READ | Fordert eine Kopie des Abbilds eines Speicherblocks für Abfragezwecke |
RWITM (Read-With-Intent-To-Modify) | Fordert eine eindeutige Kopie des Abbilds eines Speicherblocks mit der Absicht es zu aktualisieren (zu modifizieren) und fordert gegebenenfalls die Zerstörung anderer Kopien |
DCLAIM (Data Claim) | Fordert von der Instanz, eine vorhandene lediglich zur Abfrage dienende Kopie des Speicherblocks zu einer eindeutigen Kopie zu machen mit der Absicht sie zu aktualisieren (zu modifizieren) und fordert gegebenenfalls die Zerstörung anderer Kopien |
DCBZ (Data Cache Block Zero) | Fordert von der Instanz, eine neue eindeutige Kopie eines Speicherblocks zu erzeugen unabhängig von ihrem gegenwärtigen Zustand und modifiziert anschließend seinen Inhalt; fordert gegebenenfalls die Zerstörung anderer Kopien |
CASTOUT | Kopiert das Abbild eines Speicherblocks von einem Speicher der höheren Ebene zu einem Speicher der niedrigeren Ebene in Vorbereitung der Zerstörung der Kopie der höheren Ebene |
WRITE | Fordert von der Instanz, eine neue eindeutige Kopie eines Speicherblocks zu erzeugen unabhängig von seinem gegenwärtigen Zustand und das Abbild des Speicherblocks von einem Speicher der höheren Ebene zu einem Speicher der niedrigeren Ebene sofort zu kopieren in Vorbereitung der Zerstörung der Kopie der höheren Ebene |
PARTIAL WRITE | Fordert von der Instanz, eine neue eindeutige Kopie eines unvollständigen Speicherblocks zu erzeugen unabhängig von seinem gegenwärtigen Zustand und das Abbild des unvollständigen Speicherblocks von einem Speicher der höheren Ebene zu einem Speicher der niedrigeren Ebene sofort zu kopieren in Vorbereitung der Zerstörung der Kopie der höheren Ebene |
-
Die Anforderung 402 wird von Snoopern 404 z. B. den Snoopern 311a bis 311m der L2-Cache-Sektion 230a empfangen. Im Allgemeinen beobachten (snoop) mit einigen Ausnahmen Snooper 311 in demselben L2-Cache 230a als Master der Anforderung 402 keine Anforderungen 402 (d. h. es gibt im Allgemeinen keine Selbstbeobachtung (Selbst-Snooping)), da eine Anforderung 402 nur dann auf dem Interconnect-Fabric übertragen wird, wenn die Anforderung 402 nicht intern durch eine Verarbeitungseinheit 104 bedient werden kann.
-
Die Operation wird mit einer Teilantwortphase 455 fortgesetzt. Während der Teilantwortphase 455 liefern Snooper 404, die Anforderungen 402 empfangen und verarbeiten, jeweils eine entsprechende Teilantwort 406, die die Antwort von wenigstens diesem Snooper 404 auf die Anforderung 402 darstellt. Ein Snooper 404 mit einer integrierten Speicher-Steuereinheit 106 bestimmt die Teilantwort 406, die z. B. anhand der Tatsache bereitgestellt wird, ob dieser Snooper 404 für die Anforderungsadresse verantwortlich ist und ob er verfügbare Ressourcen zum Bedienen der Anforderung aufweist. Ein Snooper 404 eines L2-Cache 230 kann seine Teilantwort 406 z. B. anhand der Verfügbarkeit seines L2-Cache-Verzeichnisses 308, der Verfügbarkeit einer Snoop-Logikinstanz 311 in dem Snooper 404 zum Bewältigen der Anforderung und des Kohärenzzustands, der der Anforderungsadresse in dem L2-Cache-Verzeichnis 308 zugehörig ist, festlegen.
-
Die Operation wird mit einer Phase 460 der kombinierten Antwort fortgesetzt. Während der Phase 460 der kombinierten Antwort werden die Teilantworten 406 der Snooper 404 entweder stufenweise oder insgesamt durch eine oder mehrere Instanzen der Antwortlogik 422 logisch kombiniert, um eine systemweite kombinierte Antwort 410 (hier als ”CR” oder ”Cresp” bezeichnet) auf die Anforderung 402 zu bestimmen. In einer bevorzugten Ausführungsform, die im Folgenden betrachtet wird, befindet sich die Instanz der Antwortlogik 422, die für das Erzeugen der kombinierten Antwort 410 verantwortlich ist, in der Verarbeitungseinheit 104, die den Master 400 enthält, der z. B. in der Fabric-Steuereinheit 216 die Anforderung 402 ausgibt. Die Antwortlogik 422 stellt eine kombinierte Antwort 410 an den Master 400 und Snooper 404 über das Interconnect-Fabric bereit, um die systemweite Antwort (z. B. Erfolg, Fehler, Neuversuch usw.) auf die Anforderung 402 anzugeben. Wenn die CR 410 den Erfolg der Anforderung 402 angibt, kann die CR 410 z. B. eine Datenquelle für einen angeforderten Speicherblock angeben, einen Kohärenzzustand angeben, in dem der angeforderte Speicherblock durch den Master 400 zwischenzuspeichern ist, oder angeben, ob ”Reinigungs-”Operationen, die den angeforderten Speicherblock in einem oder mehreren L2-Caches 230 ungültig machen, erforderlich sind.
-
In Reaktion auf den Empfang einer kombinierten Antwort 410 führen der Master 400 und/oder die Snooper 404 üblicherweise eine oder mehrere Operationen aus, um die Anforderung 402 zu bedienen. Zu diesen Operationen können das Liefern von Daten an den Master 400, das Ungültigmachen oder das anderweitige Aktualisieren des Kohärenzzustands von Daten, die in einem oder mehreren L2-Caches 230 zwischengespeichert sind, das Ausführen von Castout-Operationen, das Rückschreiben von Daten zu einem Systemspeicher 108 usw. gehören. Falls durch die Anforderung 402 gefordert kann ein angeforderter oder Ziel-Speicherblock vor oder nach der Erzeugung der kombinierten Antwort 410 durch die Antwortlogik 422 zu dem Master 400 oder von diesem übertragen werden.
-
In der folgenden Beschreibung werden die Teilantwort 406 eines Snoopers 404 auf eine Anforderung 402 und die Operationen, die durch den Snooper 404 in Reaktion auf die Anforderung 402 und/oder seine kombinierte Antwort 410 ausgeführt werden, unter Bezugnahme darauf beschrieben, ob dieser Snooper einen höchsten Punkt der Kohärenz (HPC), einen niedrigsten Punkt der Kohärenz (LPC) oder keines von beiden in Bezug auf die Anforderungsadresse, die durch die Anforderung spezifiziert ist, darstellt. Ein LPC ist dabei als eine Speichereinheit oder E/A-Einheit definiert, die als die endgültige Ablage für einen Speicherblock dient. Beim Fehlen eines Zwischenspeicher-Teilnehmers, der eine Kopie des Speicherblocks speichert, speichert der LPC das einzige Abbild dieses Speicherblocks. Beim Fehlen eines HPC-Zwischerspeicher-Teilnehmers für den Speicherblock, besitzt der LPC die alleinige Autorität, um Anforderung zum Modifizieren des Speicherblocks zu gewähren oder abzuweisen. Wenn die LPC-Daten aktuell sind und beim Fehlen eines Zwischenspeicher-Teilnehmers, der die Daten bereitstellen kann, stellt außerdem ein LPC diese Daten an Anforderungen bereit, um den Speicherblock entweder zu lesen oder zu modifizieren. Wenn ein Zwischenspeicher-Teilnehmer eine aktuellere Kopie der Daten aufweist, aber nicht in der Lage ist, sie für eine Anforderung bereitzustellen, stellt der LPC keine veralteten Daten bereit und die Anforderung wird erneuert. Bei einer typischen Anforderung in der Ausführungsform des Datenverarbeitungssystems wird der LPC die Speicher-Steuereinheit 106 für den Systemspeicher 108 sein, der den betreffenden Speicherblock speichert. Ein HPC ist hier als eine eindeutig identifizierte Einheit definiert, die ein wahres Abbild des Speicherblocks zwischenspeichert (der mit dem entsprechenden Speicherblock in dem LPC konsistent sein kann) und die Autorität besitzt, eine Anforderung zum Modifizieren des Speicherblocks zu gewähren oder abzuweisen. Anschaulich stellt der HPC (selbst wenn seine Kopie mit dem Hauptspeicher hinter dem LPC konsistent ist) außerdem eine Kopie des Speicherblocks in Reaktion auf eine Anforderung, den Speicherblock zu lesen oder zu modifizieren, an einen Anforderer bereit (wobei Cache-Cache-Übertragungen schneller sind als Übertragungen zwischen einem LPC und einem Cache). Deswegen wird der HPC für eine typische Anforderung in der Ausführungsform des Datenverarbeitungssystems gegebenenfalls ein L2-Cache 230 sein. Obwohl andere Angaben verwendet werden können, um einen HPC für einen Speicherblock zu bezeichnen, bezeichnet eine bevorzugte Ausführungsform den HPC gegebenenfalls für einen Speicherblock unter Verwendung eines oder mehrerer ausgewählter Cache-Kohärenzzustände in dem L2-Cache-Verzeichnis 308 eines L2-Cache 230. In einer bevorzugten Ausführungsform geben die Kohärenzzustände in dem Kohärenzprotokoll zusätzlich zum Bereitstellen (1) einer Angabe, ob ein Cache den HPC für einen Speicherblock darstellt, außerdem an (2), ob die zwischengespeicherte Kopie eindeutig ist (d. h. systemweit die einzige zwischengespeicherte Kopie ist), (3) ob und wann der Cache eine Kopie des Speicherblocks an einen Master einer Anforderung für den Speicherblock bereitstellen kann, und (4) ob das zwischengespeicherte Abbild des Speicherblocks mit dem entsprechenden Speicherblock in dem LPC (Systemspeicher) konsistent ist. Diese vier Attribute können z. B. in einer beispielhaften Variante des bekannten MESI-Protokolls (Modified, Exclusive, Shared, Invalid), das im Folgenden in Tabelle II zusammengefasst ist, ausgedrückt werden.
-
Weitere Informationen in Bezug auf das Kohärenzprotokoll können z. B. im
US-Patent Nr. 7,389,388 gefunden werden, das hier durch Bezugnahme eingeschlossen ist. TABELLE II
Kohärenzzustand | HPC? | Eindeutig? | Datenquelle? | Konsistent mit LPC? | Zulässige gleichzeitige Zustände |
M | Ja | Ja | Ja, vor CR | Nein | I (& LPC) |
Me | Ja | Ja | Ja, vor CR | Ja | I (& LPC) |
T, Te | Ja | Unbekannt | Ja, nach CR, wenn nicht vor CR bereitgestellt | Nein | SL, S, I (& LPC) |
SL | Nein | Unbekannt | Ja, vor CR | Unbekannt | T, S, I (& LPC) |
S | Nein | Unbekannt | Nein | Unbekannt | T, SL, S, I (& LPC) |
I | Nein | Keine Angabe | Nein | Keine Angabe | M, Me, T, SL, S, I (& LPC) |
-
Die oben in Tabelle II angegebenen Zustände T, SL und S sind alle ”gemeinsam genutzte” Kohärenzzustände dahingehend, dass ein Cache-Speicher zeitgleich eine Kopie einer Cache-Zeile speichern kann, die in jedem dieser Zustände durch einen anderen Cache-Speicher gespeichert wird. Der Zustand T oder Te identifiziert einen HPC-Cache-Speicher, der zuvor die zugehörige Cache-Zeile in einem der Zustände M bzw. Me gespeichert hat und eine lediglich zur Abfrage dienende Kopie der zugehörigen Cache-Zeile an einen anderen Cache-Speicher ausgibt. Als ein HPC besitzt ein Cache-Speicher, der in dem Kohärenzzustand T oder Te eine Cache-Zeile speichert, die Autorität, die Cache-Zeile zu modifizieren und eine derartige Autorität an einen anderen Cache-Speicher zu übergeben. Ein Cache-Speicher, der im Zustand Tx (z. B. T oder Te) eine Cache-Zeile speichert, dient als die Cache-Datenquelle der letzten Instanz (nach dem Signal Cresp) für lediglich zur Abfrage dienende Kopien dieser Cache-Zeile dahingehend, dass der Cache-Speicher lediglich eine zur Abfrage dienende Kopie an einen anderen Cache-Speicher ausgibt, wenn kein Cache-Speicher, der die Cache-Zeile im Zustand SL hält, zur Verfügung steht, um als eine Datenquelle zu dienen (vor dem Signal Cresp).
-
Der Zustand SL wird in einem Cache-Speicher in Reaktion auf darauf gebildet, dass der Cache-Speicher eine lediglich zur Abfrage dienende Kopie einer Cache-Zeile von einem Cache-Speicher in dem Kohärenzzustand T empfängt. Obwohl der Zustand SL kein HPC-Kohärenzzustand ist, besitzt ein Cache-Speicher, der eine Cache-Zeile in dem Zustand SL hält, die Fähigkeit, eine lediglich zur Abfrage dienende Kopie dieser Cache-Zeile an einen anderen Cache-Speicher auszugeben und kann das vor dem Empfang des Signals Cresp tun. In Reaktion auf das Ausgeben einer lediglich zur Abfrage dienenden Kopie einer Cache-Zeile an einen anderen Cache-Speicher (der den Zustand SL einnimmt) aktualisiert der Cache-Speicher, der die lediglich zur Abfrage dienende Kopie der Cache-Zeile ausgibt, seinen Kohärenzzustand für die Cache-Zeile von SL auf S. Somit kann die Realisierung des Kohärenzzustands SL zahlreiche lediglich zur Abfrage dienende Kopien von häufig abgefragten Cache-Zeilen bewirken, die im gesamten Mehrprozessor-Datenverarbeitungssystem erzeugt werden, wodurch Latenzzeiten des lediglich der Abfrage dienenden Zugriffs auf diese Cache-Zeilen vorteilhaft verringert werden.
-
In 4 besitzt der HPC gegebenenfalls für einen Speicherblock, auf den bei einer Anforderung 402 Bezug genommen wird, oder beim Fehlen eines HPC besitzt der LPC des Speicherblocks vorzugsweise die Verantwortung des Schutzes der Übergabe der Eigentümerschaft eines Speicherblocks falls erforderlich in Reaktion auf eine Anforderung 402. In dem beispielhaften Szenario, das in 4 gezeigt ist, schützt ein Snooper 404n in dem HPC (oder beim Fehlen eines HPC im LPC) für den Speicherblock, der durch die Anforderungsadresse der Anforderung 402 spezifiziert ist, die Übergabe der Eigentümerschaft des angeforderten Speicherblocks an den Master 400 während eines Schutzfensters 412a, das sich von dem Zeitpunkt, an dem dieser Snooper 404n seine Teilantwort 406 bestimmt, bis zu dem Zeitpunkt, an dem der Snooper 304n eine kombinierte Antwort 410 empfängt und während einer nachfolgenden Fenstererweiterung 412b erstreckt, die sich um eine programmierbare Zeit über den Empfang der kombinierten Antwort 410 durch den Snooper 404n hinaus erstreckt. Während des Schutzfensters 412a und der Fenstererweiterung 412b schützt der Snooper 404n die Übergabe der Eigentümerschaft durch das Bereitstellen von Teilantworten 406 an andere Anforderungen, die dieselbe Anforderungsadresse spezifizieren, wodurch verhindert wird, dass andere Master die Eigentümerschaft erlangen (z. B. eine Neuversuch-Teilantwort), bis die Eigentümerschaft erfolgreich an den Master 400 übertragen wurde. Der Master 400 löst gleichfalls ein Schutzfenster 413 aus, um seine Eigentümerschaft an dem Speicherblock zu schützen, der in der Anforderung 402 nach dem Empfang der kombinierten Antwort 410 angefordert wurde.
-
Da alle Snooper 404 begrenzte Ressourcen zum Abwickeln der oben beschriebenen CPU- und E/A-Anforderungen aufweisen, sind verschiedene unterschiedliche Ebenen der Teilantworten und der entsprechenden CRs möglich. Wenn z. B. ein Snooper in einer Speichersteuereinheit 106, die für einen angeforderten Speicherblock verantwortlich ist, eine Warteschlange aufweist, die zum Abwickeln einer Anforderung verfügbar ist, kann der Snooper mit einer Teilantwort antworten, die angibt, dass er als LPC für die Anforderung dienen kann. Wenn dagegen der Snooper keine Warteschlange aufweist, die zum Abwickeln der Anforderung verfügbar ist, kann der Snooper mit einer Teilantwort antworten, die angibt, dass er der LPC für den Speicherblock ist, jedoch gegenwärtig nicht in der Lage ist, die Anforderung zu bedienen. Gleichfalls kann ein Snooper 311 in einem L2-Cache 230 eine verfügbare Instanz der Snoop-Logik anfordern und auf das L2-Cache-Verzeichnis 406 zugreifen, um eine Anforderung abzuwickeln. Das Fehlen des Zugriffs auf eine dieser Ressourcen (oder beide) hat eine Teilantwort (und entsprechende CR) zur Folge, die eine Unfähigkeit signalisieren, die Anforderung infolge des Fehlens einer erforderlichen Ressource zu bedienen.
-
Wie oben erläutert werden Operationen des Lesetyps in Datenverarbeitungssystemen im Allgemeinen gegenüber Operationen des Speichertyps priorisiert, da der zeitkritische Weg durch ein Softwareprogramm im Allgemeinen durch Lade-Latenzzeiten festgelegt ist. Die Priorisierung von Operationen des Lesetyps gegenüber Operationen des Speichertyps kann in mehreren Attributen des Datenverarbeitungssystems ausgedrückt werden, zu denen die Hardware-Architektur, das Speichermodell und das durch ein vorgegebenes Datenverarbeitungssystem umgesetzte Kohärenzprotokoll gehören. Zum Beispiel gibt das in Tabelle II zusammengefasste Kohärenzprotokoll diese Priorisierung wieder, indem die Bildung von zahlreichen verteilten lediglich zur Abfrage dienenden Kopien (SL oder S) einer häufig abgefragten Cache-Zeile in einem gesamten Mehrprozessor-Datenverarbeitungssystem favorisiert wird. Während die Verfügbarkeit von zahlreichen Quellen einer lediglich zur Abfrage dienenden Kopie einer Cache-Zeile die Zugriffslatenzzeit von Operationen, die die Speichereinrichtung nicht modifizieren, reduziert, kann das Vorhandensein von vielen Kopien der Cache-Zeile, die über das gesamte Datenverarbeitungssystem verteilt sind, die Zugriffslatenzzeit von speichermodifizierenden Zugriffen vergrößern, da jeder der Cache-Speicher, der eine lediglich zur Abfrage dienende Kopie der Cache-Zeile speichert und eine Anforderung für einen lediglich zur Abfrage dienenden Zugriff bedient, erzwingen kann, dass eine konkurrierende Anforderung eines speichermodifizierenden Zugriffs wiederholt wird. In bestimmten Fällen kann ein wiederholter Neuversuch des speichermodifizierenden Zugriffs den Weiterleitungsfortschritt des Programms verlangsamen oder sogar anhalten (z. B. wenn der speichermodifizierende Zugriff erforderlich ist, um eine Blockierung durch starke Belastung aufzulösen).
-
Wie später unter Bezugnahme auf 5 beschrieben können Leistungsprobleme, die der Lesepriorisierung zugehörig sind, adressiert werden, indem Überlastungen vermindert werden, die durch Operationen des Speichertyps für ausgewählte Speicherblöcke auftreten. Im Einzelnen kann eine Überlastung für Operationen des Speichertyps in einem Datenverarbeitungssystem vermindert werden, indem die Wiederholung von gemeinsam genutzten Kopien einer Cache-Zeile, die das Ziel von konkurrierenden Operationen des Lese- und Speichertyps im gesamten System ist, begrenzt wird, indem der Kohärenzzustand der Cache-Zeile auf einen Kohärenzzustand gesetzt wird, der angibt, dass der Cache-Speicher, der die Cache-Zeile speichert, zusätzliche Kopien der Cache-Zeile an andere Anforderer nicht ausgeben kann. Durch Verminderung der Wiederholung zusätzlicher Kopien der Cache-Zeile wird außerdem die Wahrscheinlichkeit vermindert, dass eine Operation des Speichertyps, die die Cache-Zeile zum Ziel hat, durch einen Snooping-Cache-Speicher zwangsläufig erneut versucht wird.
-
In 5 ist ein logischer Übersichts-Ablaufplan eines beispielhaften Vorgangs dargestellt, durch den ein Cache-Speicher einen Kohärenzzustand für eine Cache-Zeile, die das Ziel von konkurrierenden Operationen des Lese- und Speichertyps ist, dynamisch einstellt, um die Wiederholung von zusätzlichen Kopien der Cache-Zeile zu begrenzen. Zur Klarheit nimmt die Beschreibung des Ablaufplans gelegentlich Bezug auf die 1 bis 4.
-
Der in 5 dargestellte Vorgang beginnt im Block 500 und geht zum Block 501 vor, der eine RC-Maschine 312 in einem L2-Cache-Speicher 230 darstellt, die eine Anforderung des Lese-Typs auf dem lokalen Interconnect 114 ausgibt, z. B. in Reaktion auf eine Prozessor-Ladeanforderung, die im Verzeichnis 308 fehlt. Die Operation des Lese-Typs kann wie zuvor beschrieben eine READ-Anforderung oder jeder andere die Speichereinrichtung nicht modifizierende Zugriff auf eine Ziel-Cache-Zeile sein. Wie im Block 502 dargestellt, bleibt während die RC-Maschine 312 den Empfang der kombinierten Antwort für ihre Anforderung des Lese-Typs wartet, die RC-Maschine 312 in einem Belegt-Zustand. Wie oben unter Bezugnahme auf 4 beschrieben wird die Anforderung des Lese-Typs durch die Snooper 404 empfangen, von denen jeder an die Antwortlogik 422 ein Signal Presp bereitstellt, das die Fähigkeit dieses Snoopers 404 angibt, die Anforderung des Lese-Typs zu bedienen. Die Antwortlogik 422 erzeugt ein Signal Cresp aus den Signalen Presp, die von den Snoopern 404 empfangen werden, und stellt die Signale Cresp an die RC-Maschine 312 und die Snooper 404 bereit. Das Signal Cresp kann z. B. eine Datenquelle, die die angeforderte (Ziel-)Cache-Zeile an den anfordernden L2-Cache-Speicher 230 liefert, und einen Kohärenzzustand, der der Cache-Zeile in dem anfordernden L2-Cache-Speicher 230 zugeordnet werden soll, bezeichnen.
-
In Reaktion auf die RC-Maschine 312, die ein Signal Cresp für die Anforderung des Lese-Typs erfasst, geht der Vorgang zum Block 510 vor, der im Folgenden beschrieben wird. Wenn das Signal Cresp noch nicht empfangen wurde, führt die RC-Maschine 312 eine Überwachung aus, um eine konkurrierende Operation des Speicher-Typs (d. h. eine die Speichereinrichtung modifizierende Operation), die auf die gleiche Ziel-Cache-Zeile gerichtet ist, als die Anforderung des Lese-Typs zu erfassen (Block 506). Wenn keine derartige konkurrierende Speichereinrichtung erfasst wird, wird der Vorgang im Block 502 fortgesetzt, der beschrieben wurde. Wenn andernfalls eine konkurrierende Operation des Speicher-Typs im Block 506 erfasst wird, bevor im Block 504 ein Signal Cresp empfangen wird, setzt sich der Vorgang im Block 508 fort.
-
Im Block 508 setzt die RC-Maschine 312 einen Überschreibmerker um anzugeben, dass wenn ein SL-Kohärenzzustand durch das folgende Signal Cresp bezeichnet wird, der bezeichnete SL-Zustand überschrieben werden sollte und stattdessen ein S-Kohärenzzustand der Ziel-Cache-Zeile in dem anfordernden L2-Cache-Speicher 230 zugeordnet werden sollte. Allgemeiner setzt die RC-Maschine 312 einen Merker, der erzeugt werden soll, um jeden bezeichneten Kohärenzzustand zu überschreiben, der angibt, dass sein L2-Cache-Speicher ermöglicht, Kopien der Ziel-Cache-Zeile an zukünftige Anforderer mit einem Ersatz-Kohärenzzustand auszugeben, der angibt, dass eine Cache-Zeile möglicherweise keine Kopien der Ziel-Cache-Zeile an zukünftige Anforderer ausgeben kann. Ein Halten der Cache-Zeile in einem Kohärenzzustand, der angibt, dass der L2-Cache-Speicher 230 keine Kopien der Cache-Zeile an Anforderer ausgeben kann, verringert möglicherweise die Anzahl von gemeinsam genutzten Cache-Snoopern, die Daten vor einem Signal Cresp an zukünftige Anforderungen einschieben können und möglicherweise bewirken, dass der HSP-Cache als eine Dateneinschubquelle der letzten Instanz dient. Nach dem Block 508 kehrt der Vorgang zum Block 502 zurück, der beschrieben wurde.
-
Im Block 510 stellt die RC-Maschine 312 fest, ob der Kohärenzzustand, der für die angeforderte Cache-Zeile vorgesehen ist, ermöglichen würde, dass der L2-Cache-Speicher 230 die Cache-Zeile vor einem Signal Cresp an zukünftige Anforderer ausgibt (z. B. der SL-Zustand ist). Wenn das Signal Cresp keinen Kohärenzzustand bezeichnet, der zulassen würde, dass der anfordernde L2-Cache-Speicher 230 die Cache-Zeile an derartige zukünftige Anforderer ausgibt, aktualisiert die RC-Maschine 312 den Eintrag im Verzeichnis 308, das der Cache-Zeile entspricht, auf den Kohärenzzustand, der durch das Signal Cresp angegeben ist (Block 516). Daraufhin geht der Vorgang zum Block 518, der die RC-Maschine 312 darstellt, die den Überschreibmerker bei Bedarf löscht. Nach dem Block 518 wird der Vorgang im Block 520 fortgesetzt und die RC-Maschine 312 verarbeitet dann normalerweise die Operation des Lese-Typs. Zum Beispiel installiert die RC-Maschine 312 im Block 520 die Ziel-Cache-Zeile, die in Reaktion auf die Anforderung des Lese-Typs im Cache-Speicher 302 empfangen wurde. Nach dem Block 520 kehrt die RC-Maschine 312 in einen Leerlaufzustand zurück und der Vorgang endet im Block 522.
-
Wenn im Block 510 das Signal Cresp einen Kohärenzzustand für die angeforderte Cache-Zeile bezeichnet, der angibt, dass der L2-Cache-Speicher 230 zulassen würde, eine Kopie der Ziel-Cache-Zeile an einen anderen Anforderer auszugeben (z. B. SL), setzt sich der Vorgang im Block 512 fort. Im Block 512 stellt die RC-Maschine 312 fest, ob der Überschreibmerker im Block 508 gesetzt wurde. In einigen Fällen wird jedoch der Block 508 niemals erreicht und deswegen wird der Überschreibmerker niemals gesetzt. Wenn die RC-Maschine 312 im Block 512 feststellt, dass der Überschreibmerker nicht gesetzt wurde, wird der Vorgang im Block 516 fortgesetzt, der oben beschrieben wurde. Wenn die RC-Maschine 312 im Block 512 feststellt, dass der Überschreibmerker gesetzt wurde, wird der Vorgang im Block 514 fortgesetzt, der die RC-Maschine 312 darstellt, wie sie den Eintrag im Verzeichnis 308 auf einen Zustand, der angibt, dass der L2-Cache-Speicher 230 keine Kopien an Anforderer ausgeben kann, z. B. den gemeinsam genutzten Zustand einstellt. Der Vorgang setzt sich im Block 518 fort, der oben beschrieben wurde.
-
Wie beschrieben enthält ein Mehrprozessor-Datenverarbeitungssystem eine Vielzahl von Cache-Speichern, die einen Cache-Speicher enthält. Der Cache-Speicher gibt eine Operation des Lese-Typs für eine Ziel-Cache-Zeile aus. Während des Wartens auf den Empfang der Ziel-Cache-Zeile führt der Cache-Speicher eine Überwachung aus, um eine konkurrierende Operation des Speicher-Typs für die Ziel-Cache-Zeile zu erfassen. In Reaktion auf das Empfangen der Ziel-Cache-Zeile installiert der Cache-Speicher die Ziel-Cache-Zeile in dem Cache-Speicher und setzt einen Kohärenzzustand der Ziel-Cache-Zeile, die in dem Cache-Speicher installiert ist, anhand der Tatsache, ob die konkurrierende Operation des Speicher-Typs erfasst wird.
-
Obwohl verschiedene Ausführungsformen besonders gezeigt und beschrieben wurden, ist es für einen Fachmann klar, dass daran verschiedene Änderungen an Form und Detail ausgeführt werden können, ohne vom Erfindungsgedanken und Umfang der angefügten Ansprüche abzuweichen, und diese alternativen Umsetzungen sämtlich in den Umfang der angefügten Ansprüche fallen.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-