DE102013201079A1 - Mechanismus des Weiterleitungsfortschritts für Speichervorgänge beim Vorhandensein einer Überlastung in einem System, das Belastungen durch Zustandsänderungen begünstigt - Google Patents

Mechanismus des Weiterleitungsfortschritts für Speichervorgänge beim Vorhandensein einer Überlastung in einem System, das Belastungen durch Zustandsänderungen begünstigt Download PDF

Info

Publication number
DE102013201079A1
DE102013201079A1 DE102013201079A DE102013201079A DE102013201079A1 DE 102013201079 A1 DE102013201079 A1 DE 102013201079A1 DE 102013201079 A DE102013201079 A DE 102013201079A DE 102013201079 A DE102013201079 A DE 102013201079A DE 102013201079 A1 DE102013201079 A1 DE 102013201079A1
Authority
DE
Germany
Prior art keywords
cache
memory
cache line
destination
state
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.)
Ceased
Application number
DE102013201079A
Other languages
English (en)
Inventor
Guy L. Guthrie
Hien M. Le
Hugh Shen
Jeff A. Stuecheli
Derek E. Williams
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102013201079A1 publication Critical patent/DE102013201079A1/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

Abstract

Ein Mehrprozessor-Datenverarbeitungssystem enthält eine Vielzahl von Cache-Speichern, darunter einen Cache-Speicher. 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 stellt einen Kohärenzzustand der Ziel-Cache-Zeile, die in dem Cache-Speicher installiert wurde, anhand der Tatsache ein, ob die konkurrierende Operation des Speicher-Typs erfasst wird.

Description

  • 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
    • US 7389388 [0035]

Claims (9)

  1. Verfahren in einem Mehrprozessor-Datenverarbeitungssystem, das eine Vielzahl von Cache-Speichern enthält, die einen Cache-Speicher aufweisen, wobei das Verfahren aufweist: Ausgeben einer Operation des Lese-Typs für eine Ziel-Cache-Zeile durch den Cache-Speicher; während des Wartens auf den Empfang der Ziel-Cache-Zeile, die durch die Operation des Lese-Typs angefordert wird, Überwachen durch den Cache-Speicher, um eine konkurrierende Operation des Speicher-Typs für die Ziel-Cache-Zeile zu erfassen; in Reaktion auf das Empfangen der Ziel-Cache-Zeile: Installieren der Ziel-Cache-Zeile in dem Cache-Speicher; und Einstellen eines Kohärenzzustands für die Ziel-Cache-Zeile, die in dem Cache-Speicher installiert wurde, anhand der Tatsache, ob die konkurrierende Operation des Speicher-Typs erfasst wurde.
  2. Verfahren nach Anspruch 1, wobei der Kohärenzzustand ein erster Zustand ist, der angibt, dass die Ziel-Cache-Zeile Kopien der Ziel-Cache-Zeile an Anforderer ausgeben kann.
  3. Verfahren nach Anspruch 2, das ferner aufweist: in Reaktion auf das Ausgeben der Operation des Lesetyps Empfangen einer Kohärenznachricht, die den ersten Zustand angibt, durch den Cache-Speicher, wobei das Einstellen des Kohärenzzustands für die Ziel-Cache-Zeile aufweist, dass der Cache-Speicher den Kohärenzzustand auf den ersten Zustand einstellt, der durch die Kohärenznachricht angegeben ist, wenn keine konkurrierende Operation des Speicher-Typs erfasst wird.
  4. Verfahren nach Anspruch 1, wobei der Kohärenzzustand ein zweiter Zustand ist, der angibt, dass die Cache-Zeile keine Kopien der Cache-Zeile an Anforderer ausgeben kann.
  5. Verfahren nach Anspruch 4, wobei das Einstellen des Kohärenzzustands aufweist, dass der Cache-Speicher den Kohärenzzustand auf den zweiten Zustand einstellt, wenn die konkurrierende Operation des Speicher-Typs erfasst wird.
  6. Verfahren nach Anspruch 1, das ferner aufweist: Empfangen einer systemweiten Kohärenznachricht, die einen ersten Zustand für die Ziel-Cache-Zeile angibt, wobei der erste Zustand angibt, dass die Ziel-Cache-Zeile Kopien der Ziel-Cache-Zeile an Anforderer ausgeben kann, wobei das Einstellen des Kohärenzzustands das Einstellen des Kohärenzzustands auf einen zweiten Zustand aufweist, der angibt, dass die Ziel-Cache-Zeile keine Kopien der Ziel-Cache-Zeile an Anforderer ausgeben kann.
  7. Cache-Speicher für ein Mehrprozessor-Datenverarbeitungssystem, wobei der Cache-Speicher aufweist: ein Daten-Array; ein Verzeichnis von Inhalten des Daten-Arrays; und eine Read-Claim-(RC-)Maschine, die Anforderungen verarbeitet, die von einem zugehörigen Prozessorkern empfangen werden, wobei die RC-Maschine: eine Operation des Lese-Typs für eine Ziel-Cache-Zeile ausgibt; während des Wartens auf den Empfang der Ziel-Cache-Zeile eine Überwachung ausführt, um eine konkurrierende Operation des Speicher-Typs für die Ziel-Cache-Zeile zu erfassen; in Reaktion auf das Empfangen der Ziel-Cache-Zeile: die Ziel-Cache-Zeile in dem Cache-Speicher installiert; und einen Kohärenzzustand für die Ziel-Cache-Zeile, die in dem Cache-Speicher installiert ist, anhand der Tatsache einstellt, ob die konkurrierende Operation des Speicher-Typs erfasst wird.
  8. Verarbeitungseinheit, die aufweist: einen Cache-Speicher nach Anspruch 7; und den zugehörigen Prozessorkern, der mit dem Cache-Speicher verbunden ist.
  9. Mehrprozessor-Datenverarbeitungssystem, das aufweist: ein Interconnect-Fabric; und eine Vielzahl von Verarbeitungseinheiten, die mit dem Interconnect-Fabric verbunden sind, wobei jede aus der Vielzahl von Verarbeitungseinheiten einen entsprechenden Cache-Speicher aus einer Vielzahl von Cache-Speichern enthält, wobei ein Cache-Speicher aus der Vielzahl von Cache-Speichern eine Read-Claim-(RC-)Maschine enthält, die Operation verarbeitet, die von einem Interconnect empfangen werden, wobei die RC-Maschine: eine Operation des Lese-Typs für eine Ziel-Cache-Zeile ausgibt; während des Wartens auf den Empfang der Ziel-Cache-Zeile eine Überwachung ausführt, um eine konkurrierende Operation des Speicher-Typs für die Ziel-Cache-Zeile zu erfassen; in Reaktion auf das Empfangen der Ziel-Cache-Zeile: die Ziel-Cache-Zeile in dem Cache-Speicher installiert; und einen Kohärenzzustand für die Ziel-Cache-Zeile, die in dem Cache-Speicher installiert ist, anhand der Tatsache einstellt, ob die konkurrierende Operation des Speicher-Typs erfasst wird.
DE102013201079A 2012-02-08 2013-01-24 Mechanismus des Weiterleitungsfortschritts für Speichervorgänge beim Vorhandensein einer Überlastung in einem System, das Belastungen durch Zustandsänderungen begünstigt Ceased DE102013201079A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/368,987 2012-02-08
US13/368,987 US8799588B2 (en) 2012-02-08 2012-02-08 Forward progress mechanism for stores in the presence of load contention in a system favoring loads by state alteration

Publications (1)

Publication Number Publication Date
DE102013201079A1 true DE102013201079A1 (de) 2013-08-08

Family

ID=48794765

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013201079A Ceased DE102013201079A1 (de) 2012-02-08 2013-01-24 Mechanismus des Weiterleitungsfortschritts für Speichervorgänge beim Vorhandensein einer Überlastung in einem System, das Belastungen durch Zustandsänderungen begünstigt

Country Status (3)

Country Link
US (2) US8799588B2 (de)
CN (1) CN103246614B (de)
DE (1) DE102013201079A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11714755B2 (en) 2020-07-31 2023-08-01 Hewlett Packard Enterprise Development Lp System and method for scalable hardware-coherent memory nodes

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8799588B2 (en) * 2012-02-08 2014-08-05 International Business Machines Corporation Forward progress mechanism for stores in the presence of load contention in a system favoring loads by state alteration
US9058273B1 (en) 2013-12-20 2015-06-16 International Business Machines Corporation Frequency determination across an interface of a data processing system
US9495312B2 (en) 2013-12-20 2016-11-15 International Business Machines Corporation Determining command rate based on dropped commands
CN104331352B (zh) * 2014-11-19 2018-03-09 浪潮(北京)电子信息产业有限公司 cache一致性芯片地址带外读取检测方法及装置
US10152417B2 (en) * 2016-04-11 2018-12-11 International Business Machines Corporation Early freeing of a snoop machine of a data processing system prior to completion of snoop processing for an interconnect operation
US10585800B2 (en) 2017-06-16 2020-03-10 International Business Machines Corporation Reducing cache transfer overhead in a system
CN107577625B (zh) * 2017-09-22 2023-06-13 北京算能科技有限公司 数据处理芯片和系统、数据存储转发处理方法
US10558604B2 (en) * 2017-12-20 2020-02-11 Qualcomm Incorporated Communication interface transaction security
US10387310B2 (en) 2018-01-17 2019-08-20 International Business Machines Corporation Remote node broadcast of requests in a multinode data processing system
US10713169B2 (en) 2018-01-17 2020-07-14 International Business Machines Corporation Remote node broadcast of requests in a multinode data processing system
US10579527B2 (en) 2018-01-17 2020-03-03 International Business Machines Corporation Remote node broadcast of requests in a multinode data processing system
CN110196818B (zh) * 2018-02-27 2021-07-16 华为技术有限公司 缓存数据的方法、缓存设备和存储系统
US20200034146A1 (en) * 2018-07-30 2020-01-30 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a fronting load
US11068407B2 (en) 2018-10-26 2021-07-20 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a load-reserve instruction
US10884740B2 (en) 2018-11-08 2021-01-05 International Business Machines Corporation Synchronized access to data in shared memory by resolving conflicting accesses by co-located hardware threads
US11119781B2 (en) * 2018-12-11 2021-09-14 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a fronting load
US11016692B2 (en) * 2019-09-11 2021-05-25 International Business Machines Corporation Dynamically switching between memory copy and memory mapping to optimize I/O performance
US10970215B1 (en) 2019-12-03 2021-04-06 International Business Machines Corporation Cache snooping mode extending coherence protection for certain requests
US11157408B2 (en) 2019-12-17 2021-10-26 International Business Machines Corporation Cache snooping mode extending coherence protection for certain requests
US11157409B2 (en) 2019-12-17 2021-10-26 International Business Machines Corporation Cache snooping mode extending coherence protection for certain requests
US11106608B1 (en) 2020-06-22 2021-08-31 International Business Machines Corporation Synchronizing access to shared memory by extending protection for a target address of a store-conditional request
US11693776B2 (en) 2021-06-18 2023-07-04 International Business Machines Corporation Variable protection window extension for a target address of a store-conditional request
US11487672B1 (en) 2021-08-20 2022-11-01 International Business Machines Corporation Multiple copy scoping bits for cache memory
US11620231B2 (en) 2021-08-20 2023-04-04 International Business Machines Corporation Lateral persistence directory states

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7389388B2 (en) 2005-02-10 2008-06-17 International Business Machines Corporation Data processing system and method for efficient communication utilizing an in coherency state

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5940864A (en) * 1997-04-14 1999-08-17 International Business Machines Corporation Shared memory-access priorization method for multiprocessors using caches and snoop responses
DE69717124T2 (de) 1997-12-11 2003-07-17 Bull Sa Verfahren zum Lesen von Daten auf einem gemeinsamen Speicher in einem Multiprozessor-Rechnersystem
US7100001B2 (en) * 2002-01-24 2006-08-29 Intel Corporation Methods and apparatus for cache intervention
US7546422B2 (en) * 2002-08-28 2009-06-09 Intel Corporation Method and apparatus for the synchronization of distributed caches
US7194587B2 (en) * 2003-04-24 2007-03-20 International Business Machines Corp. Localized cache block flush instruction
US8176259B2 (en) * 2004-01-20 2012-05-08 Hewlett-Packard Development Company, L.P. System and method for resolving transactions in a cache coherency protocol
US7676637B2 (en) * 2004-04-27 2010-03-09 International Business Machines Corporation Location-aware cache-to-cache transfers
US7404046B2 (en) * 2005-02-10 2008-07-22 International Business Machines Corporation Cache memory, processing unit, data processing system and method for filtering snooped operations
JP4806959B2 (ja) 2005-05-17 2011-11-02 株式会社日立製作所 主記憶共有型マルチプロセッサシステムの高性能化技術
US7409504B2 (en) 2005-10-06 2008-08-05 International Business Machines Corporation Chained cache coherency states for sequential non-homogeneous access to a cache line with outstanding data response
US7447845B2 (en) 2006-07-13 2008-11-04 International Business Machines Corporation Data processing system, processor and method of data processing in which local memory access requests are serviced by state machines with differing functionality
US8627017B2 (en) * 2008-12-30 2014-01-07 Intel Corporation Read and write monitoring attributes in transactional memory (TM) systems
US10489293B2 (en) * 2009-04-15 2019-11-26 International Business Machines Corporation Information handling system with immediate scheduling of load operations
US8799588B2 (en) * 2012-02-08 2014-08-05 International Business Machines Corporation Forward progress mechanism for stores in the presence of load contention in a system favoring loads by state alteration

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7389388B2 (en) 2005-02-10 2008-06-17 International Business Machines Corporation Data processing system and method for efficient communication utilizing an in coherency state

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11714755B2 (en) 2020-07-31 2023-08-01 Hewlett Packard Enterprise Development Lp System and method for scalable hardware-coherent memory nodes
DE102021108294B4 (de) 2020-07-31 2023-09-07 Hewlett Packard Enterprise Development Lp System und verfahren für skalierbare hardware-kohärente speicherknoten

Also Published As

Publication number Publication date
US20130205099A1 (en) 2013-08-08
US20130205096A1 (en) 2013-08-08
US8806148B2 (en) 2014-08-12
CN103246614A (zh) 2013-08-14
US8799588B2 (en) 2014-08-05
CN103246614B (zh) 2016-07-06

Similar Documents

Publication Publication Date Title
DE102013201079A1 (de) Mechanismus des Weiterleitungsfortschritts für Speichervorgänge beim Vorhandensein einer Überlastung in einem System, das Belastungen durch Zustandsänderungen begünstigt
DE112013000889B4 (de) Weiterleitungsfortschritts-Mechanismus für Speichervorgänge bei Vorhandensein von Ladekonflikten in einem Ladevorgänge begünstigenden System
DE102009023898B4 (de) Optimierung von gleichzeitigen Zugriffen in einem verzeichnisbasierten Kohärenzprotokoll
DE112015004336B4 (de) Konfigurationsbasierte Auswahl eines Cachekohärenz-Protokolls
DE60219436T2 (de) System mit adressbasierter Intraknotenkohärenz und datenbasierter Interknotenkohärenz
DE69724353T2 (de) Mehrrechnersystem mit einem Drei-Sprung-Kommunikationsprotokoll
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE69724354T2 (de) Ein Mehrprozessorrechnersystem mit lokalen und globalen Adressräumen und mehreren Zugriffsmoden
DE102007030116B4 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE69727856T2 (de) Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE69906585T2 (de) Datenverarbeitungssystem mit nichtuniformen speicherzugriffen (numa) mit spekulativer weiterleitung einer leseanforderung an einen entfernten verarbeitungsknoten
DE60204213T2 (de) Level 2 Cache mit lokaler Beibehaltung von Kohärenzblöcken
DE69233655T2 (de) Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedenartiger Prozessoren
DE69732938T2 (de) Hybrides Speicherzugangsprotokoll in einem Datenverarbeitungssystem mit verteiltem, gemeinsamem Speicher
DE69729243T2 (de) Multiprozessorsystem mit Vorrichtung zur Optimierung von Spin-Lock-Operationen
DE112017001959T5 (de) Cachespeicher-Zugriff
DE69722512T2 (de) Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll
DE112013000891T5 (de) Verbessern der Prozessorleistung für Befehlsfolgen, die Sperrbefehle enthalten
DE102013204414B4 (de) Daten-Cachespeicherblock-Freigabeanforderungen in einer Cachespeicherhierarchie mit mehreren Ebenen
DE102007012058A1 (de) Synchronisieren von Neuheitsinformation in einer inklusiven Cache-Hierarchie
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE102020108666A1 (de) Cache-kohärenz-management für multi-kategorie-erinnerungen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: RICHARDT PATENTANWAELTE GBR, DE

Representative=s name: RICHARDT PATENTANWAELTE PART GMBB, DE

Representative=s name: RICHARDT PATENTANWAELTE PARTG MBB, DE

R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final