DE112013000889B4 - Weiterleitungsfortschritts-Mechanismus für Speichervorgänge bei Vorhandensein von Ladekonflikten in einem Ladevorgänge begünstigenden System - Google Patents

Weiterleitungsfortschritts-Mechanismus für Speichervorgänge bei Vorhandensein von Ladekonflikten in einem Ladevorgänge begünstigenden System Download PDF

Info

Publication number
DE112013000889B4
DE112013000889B4 DE112013000889.0T DE112013000889T DE112013000889B4 DE 112013000889 B4 DE112013000889 B4 DE 112013000889B4 DE 112013000889 T DE112013000889 T DE 112013000889T DE 112013000889 B4 DE112013000889 B4 DE 112013000889B4
Authority
DE
Germany
Prior art keywords
memory
cache
response
target address
read
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.)
Active
Application number
DE112013000889.0T
Other languages
English (en)
Other versions
DE112013000889T5 (de
Inventor
c/o IBM Corporation Williams Derek Edward
c/o IBM Corporation Guthrie Guy Lynn
c/o IBM Corporation Le Hien Minh
c/o IBM Corporation Stuecheli Jeffrey A.
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 DE112013000889T5 publication Critical patent/DE112013000889T5/de
Application granted granted Critical
Publication of DE112013000889B4 publication Critical patent/DE112013000889B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Verfahren in einem Mehrfachprozessor-Datenverarbeitungssystem (104), das eine Vielzahl von Cachespeichern enthält, die einen Cachespeicher (230) enthalten, der ein Zustandsfeld aufweist, das den Kohärenzzustand der Cachespeicherzeile angibt, wobei das Verfahren aufweist:als Reaktion auf ein Erkennen (506) einer ersten speichermodifizierenden Operation, die eine selbe Zieladresse wie diejenige einer ersten durch den Cachespeicher verarbeiteten (505) Operation des Lesetyps angibt, durch den Cachespeicher:Bereitstellen einer Neuversuchsantwort für die speichermodifizierende Operation;als Reaktion auf einen Abschluss der Operation des Lesetyps Eintreten (514) in einen Schiedsrichtermodus; undwährend er sich im Schiedsrichtermodus befindet, erhöht der Cachespeicher vorübergehend dynamisch eine Priorität irgendeiner speichermodifizierenden Operation, die auf die Zieladresse abzielt, im Verhältnis zu irgendeiner zweiten Operation des Lesetyps, die auf die Zieladresse abzielt;während des Schiedsrichtermodus Empfangen (522) einer zweiten speichermodifizierenden Operation, welche dieselbe Zieladresse angibt;als Reaktion auf das Empfangen der zweiten speichermodifizierenden Operation, welche dieselbe Zieladresse angibt:Verlassen (524) des Schiedsrichtermodus, undBedienen (526) der zweiten speichermodifizierenden Operation beim Cachespeicher,wobei der Cache-Speicher nur als Antwort auf dieKohärenzzustandsinformationen für die Zieladresse, die einen gemeinsam genutzten modifizierten Zustand anzeigen, in den Schiedsrichtermodus wechselt.

Description

  • HINTERGRUND DER ERFINDUNG
  • TECHNISCHES GEBIET
  • Die vorliegende Erfindung betrifft allgemein die Datenverarbeitung und insbesondere ein Bedienen von Prozessoroperationen in einem Datenverarbeitungssystem. Noch genauer betrifft die vorliegende Erfindung ein dynamisches Erhöhen der Priorität von speichermodifizierenden Operationen relativ zu Operationen eines Lesetyps in Datenverarbeitungssystemen.
  • STAND DER TECHNIK
  • Ein herkömmliches Computersystem mit symmetrischem Mehrfachprozessor (symmetric multiprocessor (SMP)), wie beispielsweise ein Servercomputersystem, enthält mehrere Verarbeitungseinheiten, die alle mit einer Systemverbindung verbunden sind, die üblicherweise eine oder mehrere Adressen, Daten und einen oder mehrere Steuerbusse aufweist. Mit der Systemverbindung ist ein Systemspeicher verbunden, der die unterste Ebene von einem flüchtigen Speicher im Mehrfachprozessor-Computersystem darstellt und allgemein für den Lese- und Schreibzugriff für alle Verarbeitungseinheiten zugänglich ist. Um die Zugriffslatenzzeiten auf im Systemspeicher befindliche Anweisungen und Daten zu verringern, wird jede Verarbeitungseinheit üblicherweise weiterhin durch eine entsprechenden Cachespeicherhierarchie mit mehreren Ebenen unterstützt, deren unterste Ebene(n) durch einen oder mehrere Prozessorkerne gemeinsam genutzt werden können.
  • Cachespeicher werden üblicherweise verwendet, um Speicherblöcke, auf die durch einen Prozessor zugegriffen werden könnte, vorübergehend zu puffern, um die Verarbeitung durch Verringern der Zugriffslatenzzeiten zu beschleunigen, die dadurch verursacht werden, dass benötigte Daten und Anweisungen aus dem Systemspeicher geladen werden müssen. In manchen Mehrfachprozessor(MP)-Systemen enthält die Cachespeicherhierarchie mindestens zwei Ebenen. Bei dem Cachespeicher der Ebene Eins (level one (L1)) oder oberen Ebene handelt es sich üblicherweise um einen privaten Cachespeicher, der einem bestimmten Prozessorkern zugeordnet ist und für andere Kerne in einem MP-System nicht zugänglich ist. Üblicherweise greift der Prozessorkern als Reaktion auf eine Speicherzugriffsanweisung wie beispielsweise eine Lade- oder Speicheranweisung zuerst auf das Verzeichnis des Cachespeichers der oberen Ebene zu. Wenn der angefragte Speicherblock im Cachespeicher der oberen Ebene nicht gefunden wird, greift der Prozessorkern dann wegen des angefragten Speicherblocks auf Cachespeicher niedrigerer Ebenen (z.B. Cachespeicher der Ebene Zwei (level two (L2)) oder Ebene Drei (level three (L3)) zu. Der Cachespeicher der niedrigsten Ebene (z.B. L3) wird oft von mehreren Prozessorkernen gemeinsam genutzt.
  • Da mehrere Prozessorkerne Schreibzugriff auf eine selbe Cachespeicherzeile von Daten anfordern können und da modifizierte Cachespeicherzeilen nicht sofort mit dem Systemspeicher synchronisiert werden, realisieren die Cachespeicherhierarchien von Mehrfachprozessor-Computersystemen üblicherweise ein
  • Cachespeicher-Kohärenzprotokoll, um zumindest ein Mindestmaß an Kohärenz zwischen den „Ansichten“ der Inhalte des Systemspeichers der verschiedenen Prozessorkerne sicherzustellen. Insbesondere erfordert Cachespeicherkohärenz zum Mindesten, dass nach einem Zugreifen einer Verarbeitungseinheit auf eine Kopie eines Speicherblocks und anschließendem Zugreifen auf eine aktualisierte Kopie des Speicherblocks die Verarbeitungseinheit nicht erneut auf die alte Kopie des Speicherblocks zugreifen darf.
  • Ein Cachespeicher-Kohärenzprotokoll definiert üblicherweise einen Satz von in Zuordnung zu den Cachespeicherzeilen jeder Cachespeicherhierarchie gespeicherten Cachespeicherzuständen sowie einen Satz von Kohärenznachrichten, die verwendet werden, um die Cachespeicher-Zustandsinformationen zwischen Cachespeicherhierarchien auszutauschen. In vielen Fällen sind die Cachespeicherzustände und Zustandsübergänge des Kohärenzprotokolls dafür konzipiert, Speicherzugriffsoperationen des Lesetyps gegenüber Operationen des Speichertyps zu bevorzugen. Die Priorisierung von Operationen des Lesetyps gegenüber Operationen des Speichertyps kann bei Vorhandensein von erheblichen Ladekonflikten für Operationen des Speichertyps zu Problemen beim Weiterleitungsfortschritt führen.
  • Es ist daher ein Bedarf in der Technik vorhanden, das zuvor genannte Problem zu lösen.
  • Die Druckschrift US 2002 / 0 035 675 A1 betrifft ein Verfahren zur Steuerung von Zugriffen auf gemeinsam genutzte Arbeitsspeicherorte in einem Computersystem. Das Verfahren umfasst: Empfangen einer Anforderung zum Lesen von einem Arbeitsspeicherort; Ermitteln, ob der Arbeitsspeicherort gemeinsam genutzt wird; Ermitteln, wenn der Arbeitsspeicherort gemeinsam genutzt wird, ob es einen Schreibvorgang gibt, der für den Arbeitsspeicherort geplant ist und der sich im Prioritätszustand befindet; und Zurückweisen der Leseanforderung, wenn ein Schreibvorgang für den Arbeitsspeicherort geplant ist und sich der Schreibvorgang im Prioritätszustand befindet.
  • Die Druckschrift US 2008 / 0 294 409 A1 betrifft ein Verfahren in einem computergestützten Entwurfssystem zum Erzeugen eines funktionalen Entwurfsmodells eines Mechanismus zum Durchführen einer Cacheline-Abfrage in einem Datenverarbeitungssystem mit einer Mehrzahl von Prozessen. Das Verfahren umfasst: Erzeugen einer funktionalen computersimulierten Darstellung eines Mechanismus zum Anfordern einer Aktion durch einen ersten Prozess, die durch einen zweiten Prozess durchgeführt werden soll, und zum Setzen einer Reservierung auf einen Arbeitsspeicherort mittels einer Speicheroperation; Erzeugen einer funktionalen computersimulierten Darstellung eines Mechanismus zum Lesen eines Arbeitsspeicherorts durch den ersten Prozess über eine Auslastung-Operation, um zu ermitteln, ob die angeforderte Aktion durch den zweiten Prozess abgeschlossen wurde oder nicht; Erzeugen einer funktionalen computersimulierten Darstellung eines Mechanismus zum Abwürgen der Operation zur Auslastung, bis die Reservierung auf dem Arbeitsspeicherort verloren ist; und Erzeugen einer funktionalen computersimulierten Darstellung eines Mechanismus zum Zurücksetzen der Reservierung in dem Arbeitsspeicherort durch den zweiten Prozess, nachdem die angeforderte Aktion abgeschlossen wurde.
  • Die Druckschrift US 5 682 516 A betrifft ein Verfahren zur Datenübertragung in einem Computersystem. Das Verfahren umfasst: Initiieren einer Datenübertragung über einen Bus, wobei die Datenübertragung eine Cache-Zeile spezifiziert; ein adressierter Bus-Agent erfasst die Datenübertragung auf dem Bus und überträgt eine Aufschiebungsanzeige über den Bus, um anzugeben, dass der Abschluss der Kommunikationstransaktion aufgeschoben wird; und ein Snooping-Agent erfasst die Datenübertragung auf dem Bus, setzt die Aufschiebungsanzeige außer Kraft und schließt die Datenübertragung ohne eine aufgeschobene Antworttransaktion ab, wenn der Snooping-Bus-Agent in der Lage ist, die Datenübertragung abzuschließen, wie durch den Snooping-Bus-Agenten, der eine Snoop-Operation durchführt, ermittelt.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Die Erfindung betrifft ein Verfahren, einen Cachespeicher, eine Verarbeitungseinheit, ein Mehrfachprozessor-Datenverarbeitungssystem, ein Computerprogrammprodukt und ein Computerprogramm, deren Merkmale in den entsprechenden unabhängigen Ansprüchen angegeben sind. Ausführungsformen der Erfindung sind in den abhängigen Patentansprüchen angegeben. Insbesondere enthält das Mehrfachprozessor-Datenverarbeitungssystem eine Vielzahl von Cachespeichern, die einen Cachespeicher enthalten. Als Reaktion auf ein Erkennen einer speichermodifizierenden Operation durch den Cachespeicher, die eine selbe Zieladresse wie diejenige einer ersten durch den Cachespeicher verarbeiteten Operation des Lesetyps angibt, stellt der Cachespeicher eine Neuversuchsantwort für die speichermodifizierende Operation bereit. Als Reaktion auf den Abschluss der Operation des Lesetyps tritt der Cachespeicher in einen Schiedsrichtermodus ein. Während er sich im Schiedsrichtermodus befindet, erhöht der Cachespeicher vorübergehend dynamisch eine Priorität irgendeiner speichermodifizierenden Operation, die auf die Zieladresse abzielt, im Verhältnis zu irgendeiner zweiten Operation des Lesetyps, die auf die Zieladresse abzielt.
  • Ein Verfahren für ein Mehrfachprozessor-Datenverarbeitungssystem, das eine Vielzahl von Cachespeichern enthält, die einen Cachespeicher enthalten, weist auf: als Reaktion auf ein Erkennen einer ersten speichermodifizierenden Operation, die eine selbe Zieladresse wie diejenige einer ersten durch den Cachespeicher verarbeiteten Operation des Lesetyps angibt, durch den Cachespeicher: Bereitstellen einer Neuversuchsantwort für die speichermodifizierende Operation; und als Reaktion auf einen Abschluss der Operation des Lesetyps Eintreten in einen Schiedsrichtermodus; und während er sich im Schiedsrichtermodus befindet, erhöht der Cachespeicher vorübergehend dynamisch eine Priorität irgendeiner zweiten speichermodifizierenden Operation, die auf die Zieladresse abzielt, im Verhältnis zu irgendeiner zweiten Operation des Lesetyps, die auf die Zieladresse abzielt.
  • Ein Cachespeicher für ein Mehrfachprozessor-Datenverarbeitungssystem weist auf: ein Daten-Array; ein Verzeichnis von Inhalten des Daten-Arrays; eine Snoop-Maschine zum Verarbeiten von einer Verbindung empfangener Operationen, wobei die Snoop-Maschine als Reaktion auf ein Erkennen einer ersten speichermodifizierenden Operation, die eine selbe Zieladresse wie diejenige einer ersten durch den Cachespeicher verarbeiteten Operation des Lesetyps angibt, in der Lage ist, den Cachespeicher zu veranlassen, eine Neuversuchsantwort für die speichermodifizierende Operation bereitzustellen und als Reaktion auf einen Abschluss der Operation des Lesetyps in einen Schiedsrichtermodus einzutreten, wobei die Snoop-Maschine, während sie sich im Schiedsrichtermodus befindet, vorübergehend dynamisch eine Priorität irgendeiner zweiten speichermodifizierenden Operation, die auf die Zieladresse abzielt, im Verhältnis zu irgendeiner zweiten Operation des Lesetyps, die auf die Zieladresse abzielt, erhöht.
  • Ein Mehrfachprozessor-Datenverarbeitungssystem weist auf: eine Vielzahl von Verarbeitungseinheiten, von denen jede einen Cachespeicher aufweist; und eine Systemverbindung, welche die Vielzahl von Verarbeitungseinheiten verbindet, wobei ein spezieller Cachespeicher einer der Vielzahl von Verarbeitungseinheiten einen Cachespeicher der Erfindung aufweist.
  • Eine Verarbeitungseinheit weist auf: einen Cachespeicher gemäß der vorliegenden Erfindung und mindestens einen mit dem Cachespeicher verbundenen Prozessorkern.
  • Ein Mehrfachprozessor-Datenverarbeitungssystem weist auf: eine Vielzahl von Verarbeitungseinheiten, von denen jede einen Cachespeicher aufweist; und eine Systemverbindung, welche die Vielzahl von Verarbeitungseinheiten verbindet, wobei ein spezieller Cachespeicher von einer der Vielzahl von Verarbeitungseinheiten eine Snoop-Maschine aufweist, die von einer Verbindung empfangene Operationen verarbeitet, wobei die Snoop-Maschine als Reaktion auf ein Erkennen einer ersten speichermodifizierenden Operation, die eine selbe Zieladresse wie diejenige einer ersten durch den Cachespeicher verarbeiteten Operation des Lesetyps angibt, den speziellen Cachespeicher veranlasst, eine Neuversuchsantwort für die speichermodifizierende Operation bereitzustellen und als Reaktion auf einen Abschluss der Operation des Lesetyps in einen Schiedsrichtermodus einzutreten, wobei die Snoop-Maschine, während sie sich im Schiedsrichtermodus befindet, vorübergehend dynamisch eine Priorität irgendeiner zweiten speichermodifizierenden Operation, die auf die Zieladresse abzielt, im Verhältnis zu irgendeiner zweiten Operation des Lesetyps, die auf die Zieladresse abzielt, erhöht.
  • Figurenliste
  • Die vorliegende Erfindung wird nun in lediglich beispielhafter Weise unter Bezugnahme auf bevorzugte Ausführungsformen beschrieben, wie sie in den folgenden Figuren dargestellt sind:
    • 1 zeigt ein Übersichtsblockschaubild eines beispielhaften Datenverarbeitungssystems gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
    • 2 zeigt ein detaillierteres Blockschaubild einer beispielhaften Verarbeitungseinheit gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
    • 3 zeigt ein detailliertes Blockschaubild eines L2-Cachespeichersektors gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
    • 4 zeigt ein beispielhaftes Zeitschaubild der Verarbeitung einer Prozessor-Speicherzugriffsoperation in einem Cachespeicher einer niedrigeren Ebene gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
    • 5 zeigt einen logischen Übersichtsablaufplan eines beispielhaften Prozesses eines Bedienens einer Prozessor-Speicherzugriffsoperation gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung; und
    • 6 zeigt ein Zeitschaubild eines beispielhaften Prozesses eines Bedienens einer Prozessor-Speicherzugriffsoperation gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung.
  • DETAILLIERTE BESCHREIBUNG
  • Unter Bezugnahme auf die Figuren, in denen gleiche Bezugszeichen durchgängig gleiche und entsprechende Teile bezeichnen, und unter besonderer Bezugnahme auf 1 wird ein Übersichtsblockschaubild veranschaulicht, in dem ein beispielhaftes Datenverarbeitungssystem gemäß einer Ausführungsform abgebildet ist. Das Datenverarbeitungssystem ist als ein cachespeicherkohärentes Datenverarbeitungssystem 100 mit symmetrischem Mehrfachprozessor (SMP) abgebildet. Wie gezeigt enthält das Datenverarbeitungssystem 100 mehrere Verarbeitungsknoten 102a, 102b zum Verarbeiten von Daten und Anweisungen. Die Verarbeitungsknoten 102 sind mit einer Systemverbindung 110 zum Übermitteln von Address-, Daten- und Steuerinformationen verbunden. Die Systemverbindung 110 kann zum Beispiel als eine Busverbindung, eine Switch-Verbindung oder eine Hybridverbindung realisiert sein.
  • In der abgebildeten Ausführungsform ist jeder Verarbeitungsknoten 102 als ein Mehrfachchipmodul (multi-chip module (MCM)) realisiert, das vier Verarbeitungseinheiten 104a bis 104d, enthält, von denen jede vorzugsweise als entsprechende integrierte Schaltung realisiert ist. Die Verarbeitungseinheiten 104 innerhalb jedes Verarbeitungsknotens 102 sind zum Datenaustausch miteinander und mit der Systemverbindung 110 durch eine lokale Verbindung 114 verbunden, die wie die Systemverbindung 110 zum Beispiel mit einem oder mehreren Bussen und/oder Switches realisiert werden kann.
  • Wie nachstehend unter Bezugnahme auf 2 detaillierter beschrieben, enthalten die Verarbeitungseinheiten 104 jeweils eine mit der lokalen Verbindung 114 verbundene Speichersteuereinheit 106, um eine Schnittstelle zu einem entsprechenden Systemspeicher 108 bereitzustellen. Auf in den Systemspeichern 108 befindliche Daten und Anweisungen kann allgemein durch einen Prozessorkern in irgendeiner Verarbeitungseinheit 104 irgendeines Verarbeitungsknotens 102 innerhalb des Datenverarbeitungssystems 100 zugegriffen werden und sie können durch diesen modifiziert werden. In alternativen Ausführungsformen können eine oder mehrere Speichersteuereinheiten 106 (und Systemspeicher 108) mit der Systemverbindung 110 anstelle einer lokalen Verbindung 114 verbunden sein.
  • Für den Fachmann ist ersichtlich, dass das SMP - Datenverarbeitungssystem 100 von 1 viele zusätzliche nicht veranschaulichte Komponenten enthalten kann, wie beispielsweise Verbindungsbrücken, nicht flüchtige Speicher, Anschlüsse zur Verbindung mit Netzwerken oder angebundenen Einheiten usw. Da solche zusätzlichen Komponenten für ein Verständnis der beschriebenen Ausführungsformen nicht notwendig sind, sind sie nicht in 1 veranschaulicht oder hierin erläutert. Es sollte zudem verstanden werden, dass die hierin beschriebenen Verbesserungen auf cachespeicherkohärente Datenverarbeitungssysteme diverser Architekturen anwendbar sind und in keiner Weise auf die in 1 veranschaulichte verallgemeinerte Datenverarbeitungssystem-Architektur beschränkt sind.
  • Unter Bezugnahme auf 2 ist nun ein detaillierteres Blockschaubild einer beispielhaften Verarbeitungseinheit 104 gemäß einer Ausführungsform abgebildet. In der abgebildeten Ausführungsform handelt es sich bei jeder Verarbeitungseinheit 104 um eine integrierte Schaltung, die zwei Prozessorkerne 200a, 200b zum Verarbeiten von Anweisungen und Daten enthält. In einer bevorzugten Ausführungsform ist jeder Prozessorkern 200 in der Lage, mehrere Hardware-Ausführungsstränge (hardware threads) gleichzeitig auszuführen. Wie abgebildet, enthält jeder Prozessorkern 200 eine oder mehrere Ausführungseinheiten, wie beispielsweise eine Lade-Speicher-Einheit (load-store unit (LSU)) 202 zum Ausführen von Anweisungen. Zu den durch die LSU 202 ausgeführten Anweisungen zählen Speicherzugriffsanweisungen, die Zugriff auf einen Speicherblock erfragen oder das Erzeugen einer Anfrage nach Zugriff auf einen Speicherblock verursachen.
  • Der Betrieb jedes Prozessorkerns 200 wird durch eine Hierarchie flüchtigen Speichers mit mehreren Ebenen unterstützt, auf deren niedrigster Ebene sich ein gemeinsam genutzter Systemspeicher 108 befindet, auf den über eine integrierte Speichersteuereinheit 106 zugegriffen wird, und auf deren oberen Ebenen sich eine oder mehrere Ebenen von Cachespeicher befinden, zu denen in der veranschaulichenden Ausführungsform innerhalb des Prozessorkerns 200 und für diesen privat ein Durchspeicher(store-through)-Cachespeicher der Ebene 1 (L1) 226 sowie ein entsprechender Einspeicher(store-in)-Cachespeicher der Ebene 2 (L2) 230 für jeden Prozessorkern 200a, 200b befinden. Um mehrere konkurrierende Speicherzugriffsanfragen auf cachespeicherfähige Adresse effizient abwickeln zu können, kann jeder L2-Cachespeicher 230 mit mehreren L2-Cachespeichersektoren 230a1 bis 230aN realisiert sein, von denen jede Speicherzugriffsanfragen für einen jeweiligen Satz realer Speicheradressen abwickelt.
  • Obwohl die veranschaulichten Cachespeicherhierarchien nur zwei Ebenen von Cachespeicher enthalten, ist für den Fachmann ersichtlich, dass alternative Ausführungsformen zusätzliche Ebenen (L3, L4 usw.) von On-Chip-, Off-Chip-, In-Line- oder Lookaside-Cachespeicher enthalten können, welche die Inhalte der oberen Ebenen von Cachespeicher vollständig, teilweise oder nicht einschließen können.
  • Jede Verarbeitungseinheit 104 enthält weiterhin eine integrierte und verteilte Struktursteuereinheit (fabric controller) 216, die für das Steuern des Operationsablaufs auf der lokalen Verbindung 114 und der Systemverbindung 110 und für das Realisieren der Kohärenzdatenübertragung zuständig ist, die zum Implementieren des ausgewählten Cachespeicher-Kohärenzprotokolls erforderlich ist. Die Verarbeitungseinheit 104 enthält weiterhin eine integrierte E/A(Eingabe/Ausgabe)-Steuereinheit 214, welche die Anbindung einer oder mehrerer (nicht abgebildeter) E/A-Einheiten unterstützt.
  • Wenn im Betrieb ein durch einen Prozessorkern 200 ausgeführter Hardware-Strang eine Speicherzugriffsanweisung enthält, die ein Durchführen einer speziellen Speicherzugriffsoperation anfragt, führt die LSU 202 die Speicherzugriffsanweisung aus, um die reale Zieladresse der Speicherzugriffsanfrage zu ermitteln. Dann übermittelt die LSU 202 einer Hash-Logik 206 innerhalb ihres Prozessorkerns 200 zumindest die Speicherzugriffsanfrage, die mindestens einen Transaktionstyp (ttype) und eine reale Zieladresse enthält. Die Hash-Logik 206 erstellt einen Hash-Wert der realen Zieladresse, um das geeignete Ziel (z.B. einen der L2-Cachespeichersektores 230a1 bis 230aN) zu identifizieren und verteilt die Anfrage zum Bedienen auf das geeignete Ziel.
  • Unter Bezugnahme auf 3 wird dort nun ein detaillierteres Blockschaubild einer beispielhaften Ausführungsform eines der L2-Cachespeichersektoren 230a1 bis 230aN (allgemein als L2-Cachespeichersektor 230a bezeichnet) gemäß einer Ausführungsform veranschaulicht. Wie in 3, gezeigt, enthält der L2-Cachespeichersektor 230a ein Cachespeicher-Array 302 und ein Verzeichnis 308 der Inhalte des Cachespeicher-Arrays 302. Obwohl nicht explizit veranschaulicht, ist das Cachespeicher-Array 302 vorzugsweise mit einem einzigen Leseanschluss und einem einzigen Schreibanschluss realisiert, um die zum Realisieren des Cachespeicher-Array 302 erforderliche Chipfläche zu verringern.
  • Unter der Annahme, dass das Cachespeicher-Array 302 und das Verzeichnis 308 wie herkömmlich zugeordnet eingerichtet sind, sind die Speicherorte in den Systemspeichern 108 unter Verwendung vorgegebener Indexbits innerhalb der (realen) Systemspeicheradressen bestimmten Kongruenzklassen innerhalb des Cachespeicher-Arrays 302 zugeordnet. Die bestimmten innerhalb der Cachespeicherzeilen des Cachespeicher-Array 302 gespeicherten Speicherblöcke werden im Cachespeicherverzeichnis 308 gespeichert, das für jede Cachespeicherzeile einen Verzeichniseintrag enthält. Obwohl in 3 nicht explizit abgebildet, ist es für den Fachmann ersichtlich, dass jeder Verzeichniseintrag im Cachespeicherverzeichnis 308 verschiedene Felder enthält, zum Beispiel ein Kennzeichnungs(tag)-Feld, das die reale Adresse des in den entsprechenden Cachespeicherzeilen des Cachespeicher-Array 302 enthaltenen Speicherblocks angibt, ein Zustandsfeld, das den Kohärenzzustand der Cachespeicherzeile angibt, ein LRU(Least Recently Used, am längsten nicht verwendet)-Feld, das eine Ersetzungsreihenfolge für die Cachespeicherzeile in Hinblick auf andere Cachespeicherzeilen in derselben Kongruenzklasse angibt, sowie Einschließlichkeitsbits, die angeben, ob der Speicherblock im zugeordneten L1-Cachespeicher 226 enthalten ist.
  • Der L2-Cachespeichersektor 230a enthält mehrere (z.B. 16) Lese-Beanspruchungs(Read-Claim(RC))-Maschinen 312a bis 312n zum unabhängigen und gleichzeitigen Bedienen von Lade(LD)- und Speicher(SP)-Anfragen, die vom angegliederten Prozessorkern 200 empfangen werden. Um Fern-Speicherzugriffsanfragen zu bedienen, die von Prozessorkernen 200 stammen, bei denen es sich nicht um den angegliederten Prozessorkern 200, handelt, enthält der L2-Cachespeichersektor 230a zudem mehrere Snoop-Maschinen 311a bis 311 m. Jede Snoop-Maschine 311 kann unabhängig und gleichzeitig eine von der lokalen Verbindung 114 „ausgespähte“ (snooped) Speicherzugriffsanfrage abwickeln. Wie ersichtlich ist, kann das Bedienen von Speicherzugriffsanfragen durch die RC-Maschinen 312 das Ersetzen oder für ungültig Erklären von Speicherblöcken innerhalb des Cachespeicher-Array 302 erfordern. Dementsprechend enthält der L2-Cachespeichersektor 230a CO (Castout, Austreibe)-Maschinen 310, die das Entfernen und Zurückschreiben von Speicherblöcken vom Cachespeicher-Array 302 verwalten.
  • Der L2-Cachespeichersektor 230a enthält weiterhin einen Arbiter 305, der Multiplexer M1 bis M2 steuert, um das Verarbeiten lokaler Speicherzugriffsanfragen, die vom angegliederten Prozessorkern 200 empfangen wurden, und Fernanfragen, die auf der lokalen Verbindung 114 ausgespäht wurden, zu ordnen. Speicherzugriffsanfragen, zu denen lokale Lade- und Speicheroperationen sowie Fernlese- und Fernschreiboperationen zählen, werden entsprechend den durch den Arbiter 305 realisierten Entscheidungsrichtlinie an eine Verteillogik weitergeleitet, wie beispielsweise eine Verteilpipeline 306, die jede Lese/Lade- und Speicheranfrage im Hinblick auf das Verzeichnis 308 und das Cachespeicher-Array 302 über eine gegebene Anzahl von Zyklen verarbeitet.
  • Der L2-Cachespeichersektor 230a enthält zudem eine RC-Warteschlange 320 und eine CPI(castout push intervention, Austreib-Push-Interventions)-Warteschlange 318, die jeweils in das Cachespeicher-Array 302 eingefügte und daraus entfernte Daten puffern. Die RC-Warteschlange 320 enthält eine Anzahl von Puffereinträgen, von denen jeder individuell einer bestimmten der RC-Maschinen 312 entspricht, so dass jede RC-Maschine 312, die zugeteilt ist, Daten nur vom bezeichneten Puffereintrag abruft. Gleichermaßen enthält die CPI-Warteschlange 318 eine Anzahl von Puffereinträgen, von denen jeder individuell einer bestimmten der Castout-Maschinen 310 und Snoop-Maschinen 311 entspricht, so dass jede zugeteilte CO-Maschine 310 und jeder zugeteilte Snooper 311 Daten nur vom jeweiligen bezeichneten CPI-Puffereintrag abruft.
  • Jeder RC-Maschine 312 ist zudem ein entsprechender von mehreren RC-Daten(RCDAT)-Puffern 322 zum Puffern eines vom Cachespeicher-Array 302 gelesenen und/oder über einen Neuladebus 323 von der lokalen Verbindung 114 empfangenen Speicherblocks zugewiesen. Der jeder RC-Maschine 312 zugewiesene RCDAT-Puffer 322 ist vorzugsweise mit Verbindungen und Funktionalität aufgebaut, die den Speicherzugriffsanfragen entsprechen, die unter Umständen durch die zugeordnete RC-Maschine 312 bedient werden. Die RCDAT-Puffer 322 besitzen einen zugeordneten Speicherdaten-Multiplexer M4, der als Reaktion auf durch den Arbiter 305 erzeugte, nicht veranschaulichte Auswahlsignale Datenbytes unter seinen Eingaben zum Puffern im RCDAT-Puffer 322 auswählt.
  • Im Betrieb werden Prozessorspeicheranfragen, die einen Transaktionstyp (ttype), eine reale Zieladresse und Speicherdaten enthalten, vom angegliederten Prozessorkern 200 innerhalb einer Speicherwarteschlange (SPW) 304 empfangen. Von der SPW 304 werden die Speicherdaten über einen Datenpfad 324 an den Speicherdaten-Multiplexer M4 übermittelt, und der Speichertyp und die Zieladresse werden an den Multiplexer M1 geleitet. Der Multiplexer M1 empfängt als Eingaben zudem Prozessorladeanfragen vom Prozessorkern 200 und Verzeichnisschreibanfragen von den RC-Maschinen 312. Als Reaktion auf die durch den Arbiter 305 erzeugten, nicht veranschaulichten Auswahlsignale wählt der Multiplexer M1 eine seiner Eingabeanfragen zum Weiterleiten an den Multiplexer M2 aus, der zusätzlich als eine Eingabe von der lokalen Verbindung 114 über einen Fernanfragepfad 326 eine Fernanfrage empfängt. Der Arbiter 305 plant lokale und Fern-Speicherzugriffsanfragen für die Verarbeitung und erzeugt auf der Grundlage der Planung eine Sequenz von Auswahlsignalen 328. Als Reaktion auf die durch den Arbiter 305 erzeugten Auswahlsignale 328 wählt der Multiplexer M2 entweder die vom Multiplexer M1 empfangene lokalen Anfrage oder die von der lokalen Verbindung 114 ausgespähte Fernanfrage als die nächste zu verarbeitende Speicherzugriffsanfrage aus.
  • Unter Bezugnahme auf 4 ist nun ein Raum-Zeit-Schaubild eines beispielhaften Betriebs auf der Verbindungsstruktur des Datenverarbeitungssystems 100 von 1 abgebildet. Die Operation beginnt mit einer Anfragephase 450, in der ein Hauptelement 400, zum Beispiel eine RC-Maschine 312 eines L2-Cachespeichers 230, eine Anfrage 402 auf der Verbindungsstruktur ausgibt. Die Anfrage 402 enthält vorzugsweise mindestens einen Transaktionstyp, der einen Typ eines gewünschten Zugriffs angibt, und eine Ressourcenkennung (z.B. eine reale Adresse), die eine Ressource angibt, auf die durch die Anfrage zuzugreifen ist. Bekannte Typen von Anfragen enthalten vorzugsweise die in Tabelle I dargelegten. TABELLE I
    Anfrage Beschreibung
    READ (Lesen) Erfragt eine Kopie des Image eines Speicherblocks für Abfragezwecke
    RWITM (Read-With-Intent-To-Modify, Lesen mit der Absicht zu modifizieren) Erfragt eine eindeutige Kopie des Image eines Speicherblocks mit der Absicht, sie zu aktualisieren (modifizieren), und erfordert die Zerstörung anderer Kopien, falls vorhanden
    DCLAIM (Data Claim, Datenanspruch) Erfragt eine Berechtigung, eine vorhandene Nur-Abfrage-Kopie des Speicherblocks zu einer eindeutigen Kopie heraufzustufen mit der Absicht, sie
    zu aktualisieren (modifizieren), und erfordert die Zerstörung anderer Kopien, falls vorhanden
    DCBZ (Data Cache Block Zero, Datencachespeicherblock Null) Erfragt eine Berechtigung, ungeachtet seines derzeitigen Zustands eine neue eindeutige Kopie eines Speicherblocks zu erstellen und anschließend seine Inhalte zu modifizieren; erfordert die Zerstörung anderer Kopien, falls vorhanden
    CASTOUT (Austreiben) Kopiert das Image eines Speicherblocks von einer höheren Speicherebene in eine niedrigere Speicherebene in Vorbereitung für die Zerstörung der Kopie der höheren Ebene
    WRITE (Schreiben) Erfragt eine Berechtigung, ungeachtet seines derzeitigen Zustands eine neue eindeutige Kopie eines Speicherblocks zu erstellen und das Image des Speicherblocks unmittelbar von einem Speicher einer höheren Ebene in einen Speicher einer niedrigeren Ebene in Vorbereitung für die Zerstörung der Kopie der höheren Ebene zu kopieren
    PARTIAL WRITE (teilweises Schreiben) Erfragt eine Berechtigung, ungeachtet seines derzeitigen Zustands eine neue eindeutige Kopie eines teilweisen Speicherblocks zu erstellen und das Image des teilweisen Speicherblocks unmittelbar von einem Speicher einer höheren Ebene in einen Speicher einer niedrigeren Ebene in Vorbereitung für die Zerstörung der Kopie der höheren Ebene zu kopieren
  • Die Anfrage 402 wird durch Snooper 404, zum Beispiel die Snooper 311a bis 311m des L2-Cachespeichersektors 230a empfangen. Im Allgemeinen spähen die Snooper 311 im selben L2-Cachespeicher 230a wie das Hauptelement der Anfrage 402 mit einigen Ausnahmen die Anfrage 402 nicht aus (d.h. es gibt allgemein kein Selbstausspähen), da eine Anfrage 402 nur auf der Verbindungsstruktur übermittelt wird, wenn die Anfrage 402 nicht intern durch eine Verarbeitungseinheit 104 bedient werden kann.
  • Der Betrieb wird mit einer teilweisen Antwortphase 455 fortgesetzt. Während der teilweisen Antwortphase 455 stellen die Snooper 404, welche die Anfragen 402 empfangen und verarbeiten, jeweils eine entsprechende teilweise Antwort 406 bereit, welche die Antwort mindestens dieses Snooper 404 auf die Anfrage 402 darstellt. Ein Snooper 404 innerhalb einer integrierten Speichersteuereinheit 106 ermittelt die bereitzustellende teilweise Antwort 406 zum Beispiel auf der Grundlage davon, ob dieser Snooper 404 für die Anfrageadresse zuständig ist und ob er Ressourcen verfügbar hat, um die Anfrage zu bedienen. Ein Snooper 404 eines L2-Cachespeichers 230 kann seine teilweise Antwort 406 zum Beispiel auf der Grundlage der Verfügbarkeit seines L2-Cachespeicherverzeichnisses 308, der Verfügbarkeit einer Snoop-Logikinstanz 311 innerhalb des Snooper 404 zum Abwickeln der Anfrage und des der Anfrageadresse im L2-Cachespeicherverzeichnis 308 zugeordneten Kohärenzzustands ermitteln.
  • Der Betrieb wird mit einer kombinierten Antwortphase 460 fortgesetzt. Während der kombinierten Antwortphase 460 werden die teilweisen Antworten 406 der Snooper 404 entweder stufenweise oder alle gemeinsam durch eine oder mehrere Instanzen einer Antwortlogik 422 kombiniert, um eine systemweite kombinierte Antwort (hierin als „KA“ oder „KAnt“ bezeichnet) 410 auf die Anfrage 402 zu ermitteln. In einer bevorzugten Ausführungsform, von der hierein nachstehend ausgegangen wird, befindet sich die für das Erzeugen der kombinierten Antwort 410 zuständige Instanz der Antwortlogik 422 in der Verarbeitungseinheit 104, die das Hauptelement 400 enthält, das die Anfrage 402 ausgegeben hat, zum Beispiel in der Struktursteuereinheit 216. Die Antwortlogik 422 stellt dem Hauptelement 400 und den Snoopern 404 über die Verbindungsstruktur die kombinierte Antwort 410 bereit, um die systemweite Antwort (z.B. Erfolg, Fehlschlag, Neuversuch usw.) auf die Anfrage 402 anzugeben. Wenn die KA 410 einen Erfolg der Anfrage 402 angibt, kann die KA 410 zum Beispiel eine Datenquelle für einen angefragten Speicherblock, einen Cachespeicherzustand, in dem der angefragte Speicherblock durch das Hauptelement 400 im Cachespeicher zu speichern ist, und ob „Bereinigungs“-Operationen erforderlich sind, die den angefragten Speicherblock in einem oder mehreren L2-Cachespeichern 230 für ungültig erklären, angeben.
  • Als Reaktion auf ein Empfangen der kombinierten Antwort 410 führt eines oder mehrere vom Hauptelement 400 und den Snoopern 404 üblicherweise eine oder mehrere Operationen durch, um die Anfrage 402 zu bedienen. Zu diesen Operationen kann ein Liefern von Daten an das Hauptelement 400, ein für ungültig Erklären oder anderweitiges Aktualisieren des Kohärenzzustandes von in einem oder mehreren L2-Cachespeichern 230 gespeicherten Daten, ein Durchführen von Castout-Operationen, ein Zurückschreiben von Daten in einen Systemspeicher 108 usw. zählen. Wenn es für die Anfrage 402 erforderlich ist, kann ein angefragter oder Zielspeicherblock vor oder nach der Erzeugung der kombinierten Antwort 410 durch die Antwortlogik 422 an das oder vom Hauptelement 400 übermittelt werden.
  • In der folgenden Beschreibung werden die teilweise Antwort 406 eines Snooper 404 auf eine Anfrage 402 und die durch den Snooper 404 als Reaktion auf die Anfrage 402 durchgeführten Operationen und/oder seine kombinierte Antwort 410 unter Bezugnahme darauf beschrieben, ob es sich bei diesem Snooper im Hinblick auf die durch die Anfrage angegebene Anfrageadresse um einen höchsten Kohärenzpunkt (Highest Point of Coherency (HPC)), einen niedrigsten Kohärenzpunkt (Lowest Point of Coherency (LPC)) oder keines von beidem handelt. Ein LPC ist hierein als eine Speichereinheit oder E/A-Einheit definiert, die als die letztendliche Ablage (repository) für einen Speicherblock dient. In Abwesenheit eines Caching-Teilnehmers, der eine Kopie des Speicherblocks enthält, enthält der LPC das einzige Image dieses Speicherblocks. In Abwesenheit eines HPC-Caching-Teilnehmers für den Speicherblock verfügt der LPC über die alleinige Berechtigung, Anfragen zum Modifizieren des Speicherblocks zu gewähren oder abzulehnen. Wenn darüber hinaus die LPC-Daten aktuell sind und in Abwesenheit eines Caching-Teilnehmers, der die Daten bereitstellen kann, stellt der LPC diese Daten Anfragen bereit, den Speicherblock entweder zu lesen oder zu modifizieren. Wenn ein Caching-Teilnehmer eine aktuellere Kopie der Daten besitzt, jedoch nicht in der Lage ist, sie einer Anfrage bereitzustellen, stellt der LPC keine veralteten Daten bereit und die Anfrage wird wiederholt. Für eine typische Anfrage in der Ausführungsform des Datenverarbeitungssystems wird es sich bei dem LPC um die Speichersteuereinheit 106 für den Systemspeicher 108 handeln, der den referenzierten Speicherblock enthält. Ein HPC ist hierin als eine eindeutig gekennzeichnete Einheit definiert, die ein wahres Image des Speicherblocks (das mit dem entsprechenden Speicherblock beim LPC konsistent sein kann aber nicht muss) in Cachespeicher speichert und die Berechtigung besitzt, eine Anfrage zum Modifizieren des Speicherblocks zu gewähren oder abzulehnen. Anschaulich stellt der HPC (auch wenn seine Kopie mit einem Hauptspeicher hinter dem LPC konsistent ist) einem Anfrager zudem als Reaktion auf irgendeine Anfrage zum Lesen oder Modifizieren des Speicherblocks eine Kopie des Speicherblocks bereit (Cachespeicher-zu-Cachespeicher-Transfers sind schneller als LPC-zu-Cachespeicher-Transfers). Somit wird es sich für eine typische Anfrage in der Ausführungsform des Datenverarbeitungssystem beim HPC, falls vorhanden, um einen L2-Cachespeicher 230 handeln. Obwohl andere Anzeiger verwendet werden können, um einen HPC für einen Speicherblock zu bezeichnen, bezeichnet eine bevorzugte Ausführungsform den HPC für einen Speicherblock, falls vorhanden, unter Verwendung eines oder mehrerer ausgewählter Cachespeicher-Kohärenzzustände innerhalb des L2-Cachespeicherverzeichnisses 308 eines L2-Cachespeichers 230. In einer bevorzugten Ausführungsform geben die Kohärenzzustände innerhalb des Kohärenzprotokolls zusätzlich zum Bereitstellen (1) einer Angabe, ob es sich bei einem Cachespeicher um den HPC für einen Speicherblock handelt, zudem an (2) ob die im Cachespeicher gespeicherte Kopie eindeutig ist (d.h. sie systemweit die einzige im Cachespeicher gespeicherte Kopie ist), (3) ob und wann der Cachespeicher einem Hauptelement einer Anfrage nach dem Speicherblock eine Kopie des Speicherblocks bereitstellen kann, und (4) ob das im Cachespeicher gespeicherte Image des Speicherblocks mit dem entsprechenden Speicherblock beim LPC (Systemspeicher) konsistent ist. Diese vier Attribute können zum Beispiel in einer beispielhaften Variante des allgemein bekannten MESI(Modified, Exclusive, Shared, Invalid (modifiziert, ausschließlich, gemeinsam genutzt, ungültig))-Protokolls ausgedrückt werden, das nachstehend in Tabelle II zusammengefasst ist. Weitere Informationen bezüglich des Kohärenzprotokolls finden sich zum Beispiel in der US-Patentschrift Nr. 7 389 388 . TABELLE II
    Cachespeicherzustan d HPC ? Eindeutig ? Datenquelle ? Konsisten t mit LPC? Gleichzeiti g zulässige Zustände
    M Ja ja Ja, vor KA nein I (& LPC)
    Me Ja ja Ja, vor KA ja I (& LPC)
    T, Te Ja unbekann t Ja, nach KA, falls nicht vor KA bereitgestellt nein SL, S, I (& LPC)
    SL Nein unbekann t Ja, vor KA unbekann t T, S, I (& LPC)
    S Nein unbekann t Nein unbekann t T, SL, S, I (& LPC)
    I nein nicht verfügbar Nein nicht verfügbar M, Me, T, SL, S, I (& LPC)
  • Beachtenswert in der vorstehenden Tabelle II sind die T-, SL- und S-Zustände, bei denen allen es sich dahingehend um „gemeinsam genutzt“-Kohärenzzustände handelt, als ein Cachespeicher gleichzeitig eine Kopie einer in irgendeinem dieser Zustände durch einen anderen Cachespeicher gespeicherten Cachespeicherzeile enthalten kann. Der T- oder Te-Zustand gibt einen HPC-Cachespeicher an, der vormals die zugeordnete Cachespeicherzeile in einem der M- oder Me-Zustände enthielt und Quelle einer Nur-Abfrage-Kopie der zugeordneten Cachespeicherzeile für einen anderen Cachespeicher war. Als ein HPC besitzt ein Cachespeicher, der eine Cachespeicherzeile in den Kohärenzzuständen T oder Te enthält, die Berechtigung, die Cachespeicherzeile zu modifizieren oder eine solche Berechtigung einem anderen Cachespeicher zu erteilen. Ein Cachespeicher, der eine Cachespeicherzeile im Tx-Zustand (z.B. T oder Te) enthält, dient insofern als die Cachespeicher-Datenquelle des letzten Bereichs (nach einer KAnt) für Nur-Abfrage-Kopien dieser Cachespeicherzeile, als der Cachespeicher nur Quelle einer Nur-Abfrage-Kopie für einen anderen Cachespeicher sein wird, wenn kein die Cachespeicherzeile im SL-Zustand enthaltender Cachespeicher verfügbar ist, um als Datenquelle zu dienen (vor einer KAnt).
  • Der SL-Zustand wird in einem Cachespeicher als Reaktion darauf gebildet, dass ein Cachespeicher eine Nur-Abfrage-Kopie einer Cachespeicherzeile von einem Cachespeicher im Kohärenzzustand T empfängt. Obwohl es sich beim SL-Zustand nicht um einen HPC-Kohärenzzustand handelt, besitzt ein eine Cachespeicherzeile im SL-Zustand enthaltender Cachespeicher die Fähigkeit, als Quelle einer Nur-Abfrage-Kopie dieser Cachespeicherzeile für einen anderen Cachespeicher zu dienen und kann dies vor einem Empfang einer KAnt tun. Als Reaktion auf ein Bilden einer Quelle einer Nur-Abfrage-Kopie einer Cachespeicherzeile für einen anderen Cachespeicher (der den SL-Zustand annimmt), aktualisiert der als Quelle für die Nur-Abfrage-Kopie der Cachespeicherzeile dienende Cachespeicher seinen Kohärenzzustand für die Cachespeicherzeile von SL zu S. Somit kann die Realisierung des Kohärenzzustandes SL ein Erzeugen zahlreicher Nur-Abfrage-Kopien häufig abgefragter Cachespeicherzeilen innerhalb eines Mehrfachprozessor-Datenverarbeitungssystems verursachen, was in vorteilhafter Weise Latenzzeiten von Nur-Abfrage-Zugriff auf diese Cachespeicherzeilen verringert.
  • Unter erneuter Bezugnahme auf 4, besitzt der HPC, falls vorhanden, für einen in einer Anfrage 402 referenzierten Speicherblock oder in Abwesenheit eines HPC der LPC des Speicherblocks vorzugsweise die Zuständigkeit, als Reaktion auf eine Anfrage 402 den Transfer des Besitzes eines Speicherblocks, falls notwendig, zu schützen. In dem in 4 gezeigten beispielhaften Szenario schützt ein Snooper 404n beim HPC (oder in Abwesenheit eines HPC beim LPC) für den durch die Anfrageadresse der Anfrage 402 angegebenen Speicherblock den Transfer des Besitzes des angefragten Speicherblocks an das Hauptelement 400 während eines Schutzfensters 412a, das sich vom Zeitpunkt, zu dem der Snooper 404n seine teilweise Antwort 406 ermittelt, bis zum Empfang der kombinierten Antwort 410 durch den Snooper 304n erstreckt, sowie während einer nachfolgenden Fenstererweiterung 412b, die sich über eine programmierbare Zeit nach Empfang der kombinierten Antwort 410 durch den Snooper 404n erstreckt. Während des Schutzfensters 412a und der Fenstererweiterung 412b schützt der Snooper 404n den Transfer des Besitzes durch Bereitstellen der teilweisen Antworten 406 für andere, dieselbe Anfrageadresse angebende Anfragen, die andere Hauptelemente davon abhalten, den Besitz zu erhalten (z.B. eine teilweise Neuversuchsantwort) bis der Besitz erfolgreich auf das Hauptelement 400 transferiert wurde. Das Hauptelement 400 startet gleichermaßen ein Schutzfenster 413, um auf einen Empfang der kombinierten Antwort 410 folgend seinen Besitz des in der Anfrage 402 angefragten Speicherblocks zu schützen.
  • Da alle Snooper 404 begrenzte Ressourcen zum Abwickeln der vorstehend beschriebenen CPU- und E/A-Anfragen besitzen, sind mehrere Ebenen teilweiser Antworten und entsprechende KAs möglich. Wenn zum Beispiel ein Snooper innerhalb einer Speichersteuereinheit 106, die für einen angefragten Speicherblock zuständig ist, eine Warteschlange zum Abwickeln der Anfrage verfügbar hat, kann der Snooper mit einer teilweisen Antwort antworten, die angibt, dass er in der Lage ist, als der LPC für die Anfrage zu dienen. Wenn andererseits der Snooper keine Warteschlange zum Abwickeln der Anfrage verfügbar hat, kann der Snooper mit einer teilweisen Antwort antworten, die angibt, dass er der LPC für den Speicherblock ist, jedoch derzeit nicht in der Lage ist, die Anfrage zu bedienen. Gleichermaßen kann ein Snooper 311 in einem L2-Cachespeicher 230 eine verfügbare Instanz von Snoop-Logik und Zugriff auf das L2-Cachespeicherverzeichnis 406 erfordern, um eine Anfrage abwickeln zu können. Die Abwesenheit von Zugriff auf eines (oder beide) dieser Ressourcen führt zu einer teilweisen Antwort (und entsprechenden KA), die aufgrund einer Abwesenheit einer erforderlichen Ressource eine Unfähigkeit signalisiert, die Anfrage zu bearbeiten.
  • Wie vorstehend erläutert, wird in Datenverarbeitungssystemen Operationen des Lesetyps allgemein eine Priorität gegenüber Operationen des Speichertyps eingeräumt, da der zeitkritische Pfad durch ein Softwareprogramm allgemein durch Ladelatenzzeiten bestimmt wird. Die Priorisierung von Operationen des Lesetyps gegenüber Operationen des Speichertyps kann in einer Anzahl von Datenverarbeitungssystem-Attributen ausgedrückt werden, zu denen die durch ein gegebenes Datenverarbeitungssystem realisierte Hardware-Architektur, das Speichermodell und das Kohärenzprotokoll zählen. Zum Beispiel gibt das in Tabelle II zusammengefasste Kohärenzprotokoll diese Priorisierung wieder, indem die Bildung zahlreicher verteilter Nur-Abfrage(SL oder S)-Kopien einer häufig abgefragten Cachespeicherzeile innerhalb eines Mehrfachprozessor-Datenverarbeitungssystems begünstigt wird. Während die Verfügbarkeit zahlreicher Quellen einer Nur-Abfrage-Kopie einer Cachespeicherzeile die Zugriffslatenzzeiten von nicht speichermodifizierenden Operationen verringert, kann ein Vorhandensein vieler über das Datenverarbeitungssystem verteilter Kopien der Cachespeicherzeile die Zugriffslatenzzeiten von speichermodifizierenden Zugriffen erhöhen, da jeder der eine Nur-Abfrage-Kopie der Cachespeicherzeile enthaltenden und eine Anfrage nach Nur-Abfrage-Zugriff bedienenden Cachespeicher einen Neuversuch einer konkurrierenden Anfrage nach speichermodifizierendem Zugriff erzwingen kann. In gewissen Fällen kann ein wiederholter Neuversuch der speichermodifizierenden Anfrage den Weiterleitungsfortschritt des Programms verlangsamen oder gar anhalten (z.B. wenn der speichermodifizierende Zugriff erforderlich ist, um eine Blockierung durch viele Konflikte zu lösen)
  • Insbesondere ist im vorstehend beschriebenen Kohärenzprotokoll ein HPC in einem Tx-Zustand erforderlich, um die erste von ihm wahrgenommene Leseoperation zu schützen und alle anderen Lese- und Modifikationsoperationen auf diese Adresse erneut zu versuchen, bis mindestens eine KAnt für diesen Lesevorgang erhalten wird. Dies dient dazu, sicherzustellen, dass in Abwesenheit einer SL-Kopie als Quelle der Lesedaten (entweder aufgrund dessen, dass die SL mit einer anderen Anfrage beschäftigt ist oder insgesamt fehlt) der HPC-Cachespeicher die Daten bereitstellen wird. Im Falle, dass insgesamt der HPC-Cachespeicher relativ zum Hauptspeicher im LPC modifiziert ist und der SL-Cachespeicher nicht vorhanden ist, muss der HPC diese Funktion durchführen, da die LPC-Daten veraltet sind und der HPC-Cachespeicher die Daten bereitstellen muss. In den anderen Fällen ist zu bevorzugen, den HPC die Daten bereitstellen zu lassen (auch nach einer KAnt), da der Cachespeicher-zu-Cachespeicher-Transfer effizienter ist als ein LPC-zu-Cachespeicher-Transfer. Insofern kann bei Vorhandensein einer erheblichen Anzahl von abfragenden Lesecachespeichern ein einzelner Cachespeicher, der versucht, auf einen Speicherort zu speichern (zum Beispiel um eine Blockierung aufzuheben) erhebliche Schwierigkeiten haben, zum HPC zu gelangen und die Berechtigung zu erhalten, den Speicherblock zu modifizieren, da der HPC während eines erheblichen Zeitanteils damit beschäftigt ist, als die Datenquelle des letzten Bereichs zu dienen und nicht in der Lage ist, sich der Blockmodifizierungsanfrage voll zu widmen
  • Wie nachstehend detailliert unter Bezugnahme auf 5 bis 6 beschrieben, können Probleme in Zusammenhang mit Lesepriorisierung gelöst werden, indem vorübergehend und dynamisch die Priorität von Operationen des Speichertyps relativ zu Operationen des Lesetyps erhöht wird, so dass ein Speichervorgang effektiver um das Erkanntwerden durch den HPC-Cachespeicher konkurrieren kann. In zumindest manchen Ausführungsformen wird die Priorität von Operationen des Speichertyps relativ zu Operationen des Lesetyps erhöht, indem für Operationen des Lesetyps, die auf Cachespeicherzeilen abzielen, für die eine Blockierung erkannt ist, ein Neuversuchen erzwungen wird.
  • Unter Zuwendung zu 5 wird nun ein logischer Übersichtsablaufplan eines beispielhaften Prozesses veranschaulicht, durch den gemäß einer Ausführungsform ein Cachespeicher dynamisch das Abwickeln von Speicheroperationen gegenüber Leseoperationen priorisiert. Zur Klarheit wird der Ablaufplan von 5 hierin in Verbindung mit dem Zeitschaubild 600 von 6 beschrieben.
  • Der in 5 abgebildete Prozess beginnt in Block 500 als Reaktion darauf, dass ein L2-Cachespeicher 230, der eine Ziel-Cachespeicherzeile einer Operation des Lesetyps in einem gemeinsam genutzten modifizierten Kohärenzzustand (z.B. dem Tx-Zustand) enthält, die Leseoperation von der lokalen Verbindung 114 ausspäht. Bei der Operation des Lesetyps kann es sich um einen READ-Vorgang wie zuvor beschrieben oder irgendeinen anderen speichermodifizierenden Zugriff auf eine Ziel-Cachespeicherzeile handeln. In Block 502 teilt eine Verteillogik 306 des L2-Cachespeichers 230 eine Snoop-Maschine 311 zu, um die von der lokalen Verbindung 114 ausgespähte Operation des Lesetyps abzuwickeln, wie bei Bezugszeichen 602 in 6 durch den Übergang der Snoop-Maschine 311 von einem Ruhezustand in einen beschäftigen Zustand dargestellt ist. Die zugeteilte Snoop-Maschine 311 beginnt dementsprechend mit dem Schutz für die Zieladresse der ausgespähten Operation des Lesetyps. Anders ausgedrückt: Während die Operation des Lesetyps durch die zugeteilte Snoop-Maschine 311 verarbeitet wird, wird, wie bei Bezugsziffer 606 in 6 dargestellt, jede während der Durchführung der normalen Verarbeitung für den Lesevorgang anschließend empfangene Operation des Speichertyps, welche dieselbe Zieladresse besitzt, eine teilweise Neuversuchsantwort vom L2-Cachespeicher 230 empfangen (und folglich eine Neuversuchs-KAnt, die das Hauptelement der Operation des Lesetyps zwingt, die Operation des Speichertyps erneut auszugeben, um die der Zieladresse zugeordnete Cachespeicherzeile zu aktualisieren). In einer oder mehreren Ausführungsformen besitzen die Operation des Lesetyps und die Operation des Speichertyps eine Zieladresse, die einem gemeinsam genutzten modifizierten Cachespeicherzustand zugeordnet ist, zum Beispiel dem Cachespeicherzustand „T“ oder „Te“, wie vorstehend beschrieben.
  • Wenn, wie in Block 504 veranschaulicht, die Snoop-Maschine 311 Ihre Verarbeitung, wie bei Bezugsziffer 604 von 6 dargestellt, abgeschlossen hat, wird der Prozess mit Block 510 fortgesetzt, der nachstehend beschrieben wird. Wenn im Entscheidungsblock 504 die Snoop-Maschine 311 die Verarbeitung der Leseoperation nicht abgeschlossen hat, wird der Prozess in Block 505 fortgesetzt, der veranschaulicht, wie die Snoop-Maschine 311 eine normale Verarbeitung der ausgespähten Operation des Lesetyps durchführt, wozu zum Beispiel zählen kann, als Reaktion auf ein Empfangen einer kombinierten Antwort, die einen Erfolg der Operation des Lesetyps angibt, durch Cachespeicher-zu-Cachespeicher-Intervention eine Quelle der Ziel-Cachespeicherzeile für das anfragende Hauptelement zu bilden. In Block 506 ermittelt die Snoop-Maschine 311, ob sie eine konkurrierende Operation des Speichertyps erkannt hat, wie bei Bezugsziffer 606 von 6 abgebildet, d.h. eine Operation des Speichertyps (d.h. irgendeine speichermodifizierende Operation), welche dieselbe Zieladresse besitzt wie die ausgespähte Operation des Lesetyps und die von einem anderen Ausführungsstrang stammt. Wie vorstehend festgehalten, erhält jede in Konflikt stehende Operation des Speichertyps, die anschließend empfangen wird, während die Snoop-Maschine 311 die Operation des Lesetyps verarbeitet, eine teilweise Neuversuchsantwort durch den L2, da die Snoop-Maschine 311 bereits aktiv eine auf die Ziel-Cachespeicherzeile gerichtete Operation des Lesetyps verarbeitet. Als Reaktion auf ein Erkennen einer konkurrierenden Operation des Speichertyps in Block 506 setzt die Snoop-Maschine 311 ein Flag, später in einen „Schiedsrichter“-Modus einzutreten, in dem eine Operation des Speichertyps auf die Ziel-Cachespeicherzeile vorübergehend gegenüber Operationen des Lesetyps auf die Ziel-Cachespeicherzeile priorisiert wird, wie in Block 508 von 5 und Bezugsziffer 608 von 6 abgebildet ist. In einer Ausführungsform setzt die Snoop-Maschine nur das Flag, später in den Schiedsrichtermodus einzutreten, wenn es sich bei dem der Zieladresse zugeordneten Cachespeicherzustand um einen gemeinsam genutzten modifizierten Zustand handelt. Auf Block 508 folgend kehrt der Prozess zu Block 504 zurück, der beschrieben wurde.
  • Unter Bezugnahme auf Block 510 ermittelt nun die Snoop-Maschine 311 nach Abschluss der Verarbeitung der Operation des Lesetyps, ob das Schiedsrichtermodus-Flag gesetzt ist. Falls nicht, kehrt die Snoop-Maschine 311 in einen Ruhezustand zurück, wie in 5 bei Block 512 und in 6 bei Bezugsziffer 610 veranschaulicht ist. Auf Block 512 folgend endet der in 5 veranschaulichte Prozess in Block 513. Wenn die Snoop-Maschine 311 unter Rückkehr zu Block 510 ermittelt, dass das Flag, in den Schiedsrichtermodus einzutreten, gesetzt ist, kehrt die Snoop-Maschine 311 nach Abschluss der Verarbeitung der Operation des Lesetyps nicht in den Ruhezustand zurück, sondern tritt stattdessen in den Schiedsrichtermodus ein, wie in Block 514 von 5 und Bezugsziffer 614 von 6 gezeigt ist. In Verbindung mit dem Eintreten in den Schiedsrichtermodus startet die Snoop-Maschine 311 in einer Ausführungsform zudem einen Zeitgeber.
  • In Block 516 ermittelt die Snoop-Maschine 311, ob sie, wie bei Bezugsziffer 618 von 6 abgebildet, eine konkurrierende Operation des Lesetyps erkannt hat, die auf dieselbe Cachespeicherzeile gerichtet ist wie diejenige, auf welche die konkurrierende Operation des Speichertyps zielt. Falls ja, stellt die Snoop-Maschine 311 der konkurrierenden Operation des Lesetyps eine teilweise Neuversuchsantwort bereit, wie in Block 518 von 5 gezeigt ist. Danach kehrt der Prozess zu Block 516 zurück, der beschrieben wurde.
  • Wenn die Snoop-Maschine 311 in Block 516 keine konkurrierende Operation des Lesetyps erkannt hat, ermittelt die Snoop-Maschine 311 in Block 520, ob eine Zeitüberschreitung des Schiedsrichtermodus aufgetreten ist. In vielfältigen Ausführungsformen kann eine Zeitüberschreitung bei einem statischen vorgegebenen Zeitgeberwert oder alternativ bei einem dynamischen Wert auftreten, der auf der Grundlage von zum Beispiel einer Anzahl während des Schiedsrichtermodus empfangener konkurrierender Operationen des Lesetyps oder wenn ein Verhältnis einer Anzahl konkurrierender Operationen des Lesetyps zu einer Anzahl von Operation des Speichertyps erreicht wird, bestimmt wird. Als Reaktion auf ein Ermitteln in Block 520, dass beim Schiedsrichtermodus eine Zeitüberschreitung aufgetreten ist, wird der Prozess mit Block 528 fortgesetzt, der veranschaulicht, wie die Snoop-Maschine 311 den Schiedsrichtermodus verlässt (in 6 nicht abgebildet). Danach wird die Snoop-Maschine 311 in den Ruhezustand versetzt (Block 512 von 5). Wenn jedoch die Snoop-Maschine 311 in Block 520 ermittelt, dass beim Schiedsrichtermodus keine Zeitüberschreitung aufgetreten ist, ermittelt die Snoop-Maschine 311 in Block 522 ferner, ob eine auf die Zieladresse der zuvor verarbeiteten Operation des Lesetyps zielende Operation des Speichertyps empfangen wurde. Im Falle erheblicher Lesekonflikte gegenüber einem einzelnen Speichervorgang, der eine Blockierung löst, stellt eine solche Operation des Speichertyps wahrscheinlich das Hauptelement der vorigen Operation des Speichertyps dar, die eine teilweise Neuversuchsantwort empfangen hat, die erneut eine Operation des Speichertyps auf dieselbe Zieladresse ausgibt. Wenn die Snoop-Maschine 311 eine Operation des Speichertyps auf die Zieladresse der zuvor verarbeiteten Operation des Lesetyps erkennt, wird der Prozess mit Block 524 fortgesetzt, der nachstehend beschrieben wird. Wenn jedoch die Snoop-Maschine 311 keine Operation des Speichertyps auf dieselbe Zieladresse wie diejenige der zuvor verarbeiteten Operation des Lesetyps erkennt, wird der Prozess mit Block 516 fortgesetzt, der beschrieben wurde.
  • Unter Bezugnahme auf Block 524 verlässt die Snoop-Maschine 311 den Schiedsrichtermodus, was bedeutet, dass Operationen des Lesetyps wieder gegenüber Operationen des Speichertyps priorisiert werden. Das Verlassen des Schiedsrichtermodus wird bei der Bezugsziffer 612 von 6 veranschaulicht.
  • In Block 526 verarbeitet die Snoop-Maschine 311 die Operation des Speichertyps normal, indem zum Beispiel die Ziel-Cachespeicherzeile im Verzeichnis 308 für ungültig erklärt wird und abhängig vom Typ der Operation des Speichertyps dem anfragenden Hauptelement als Reaktion auf den Empfang einer KAnt, die einen Erfolg der Operation des Speichertyps angibt, eine Kopie der Ziel-Cachespeicherzeile bereitgestellt wird. Die Verarbeitung der Operation des Speichertyps durch eine andere Snoop-Maschine 311 ist in 6 bei Bezugsziffer 630 abgebildet. Der Fachmann wird jedoch erkennen, dass es in anderen Ausführungsformen möglich wäre, den Speichervorgang 626 von 6 ebenfalls durch die Snoop-Maschine verarbeiten zu lassen, die im Schiedsrichtermodus war. Ob es machbar oder vorteilhaft ist, dies zu tun, hängt von speziellen Realisierungsangelegenheiten ab, die von Ausführungsform zu Ausführungsform variieren. Danach kehrt der Prozess zu Block 512 zurück, der beschrieben wurde.
  • In alternativen Ausführungsformen des Prozesses von 5 mit einer granulareren Priorisierung zwischen Operationen des Lesetyps und des Speichertyps kann sich die Snoop-Maschine 311 dafür entscheiden, den Neuversuch von weniger als allen konkurrierenden Operationen des Lesetyps zu erzwingen, die während des Schiedsrichtermodus empfangen wurden (z.B. eine Hälfte oder drei Viertel). Weiterhin kann sich in zumindest manchen Ausführungsformen der Umfang des durch den Schiedsrichtermodus erzwungenen Neuversuchens auf eine Speicherregion erstrecken, die größer als eine einzige Cachespeicherzeile ist (z.B. eine Speicherseite oder ein Speicherblock anderer Größe). Weiterhin kann sich in zumindest manchen Ausführungsformen die Dauer des Schiedsrichtermodus über das Empfangen einer einzigen Operation des Speichertyps für die Ziel-Cachespeicherzeile, für die ein Konflikt vorhanden ist, hinaus erstrecken.
  • Wie beschrieben wurde, enthält ein Mehrfachprozessor-Datenverarbeitungssystem eine Vielzahl von Cachespeichern, die einen Cachespeicher enthalten. Als Reaktion auf ein Erkennen einer speichermodifizierenden Operation durch den Cachespeicher, die eine selbe Zieladresse wie diejenige einer ersten durch den Cachespeicher verarbeiteten Operation des Lesetyps angibt, stellt der Cachespeicher eine Neuversuchsantwort für die speichermodifizierende Operation bereit. Als Reaktion auf den Abschluss der Operation des Lesetyps tritt der Cachespeicher in einen Schiedsrichtermodus ein. Während er sich im Schiedsrichtermodus befindet, erhöht der Cachespeicher vorübergehend dynamisch eine Priorität irgendeiner speichermodifizierenden Operation, die auf die Zieladresse abzielt, im Verhältnis zu irgendeiner zweiten Operation des Lesetyps, die auf die Zieladresse abzielt.
  • Wie für den Fachmann ersichtlich ist, können Aspekte der vorliegenden Erfindung als ein System, Verfahren, Computerprogrammprodukt oder Computerprogramm ausgeführt werden. Dementsprechend können Aspekte der vorliegenden Erfindung in Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder in einer Ausführungsform ausgebildet werden, die Software- und Hardware-Aspekte kombiniert, was hierin sämtlich allgemein als „Schaltung“, „Modul“ oder „System“ bezeichnet sein kann. Weiterhin können Aspekte der vorliegenden Erfindung in Form eines Computerprogrammprodukts ausgebildet werden, das in einem oder mehreren computerlesbaren Medien mit darauf enthaltenem computerlesbarem Programmcode enthalten sein kann.
  • Jede beliebige Kombination aus einem oder mehreren computerlesbaren Medien kann verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei einem computerlesbaren Speichermedium kann es sich zum Beispiel, ohne auf diese beschränkt zu sein, um ein System, eine Vorrichtung oder eine Einheit elektronischer, magnetischer, optischer, elektromagnetischer, Infrarot oder Halbleiter verwendender Art sowie jede beliebige geeignete Kombination des Vorgenannten handeln. Zu spezielleren Beispielen für das computerlesbare Speichermedium kann Folgendes gehören (nicht abschließende Liste): eine elektrische Verbindung mit einer oder mehreren Leitungen, eine transportable Computerdiskette, eine Festplatte, ein Speicher mit wahlfreiem Zugriff (random access memory (RAM)), ein Nur-Lese-Speicher (read-only memory (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (erasable programmable read-only memory (EPROM) oder Flash-Speicher), ein Lichtwellenleiter, ein transportabler Compact-Disk-Nur-Lese-Speicher (compact disc read-only memory (CD-ROM)), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine beliebige geeignete Kombination des Vorgenannten. Im Kontext dieses Dokuments kann es sich bei einem computerlesbaren Speichermedium um jedes gegenständliche Medium handeln, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zum Ausführen von Anweisungen beinhalten oder speichern kann.
  • Zu einem computerlesbaren Signalmedium kann ein verbreitetes Datensignal mit darin zum Beispiel in einem Basisband oder als Teil einer Trägerwelle ausgebildetem computerlesbarem Programmcode zählen. Solch ein verbreitetes Signal kann in jeder beliebigen einer Vielzahl von Formen vorliegen, wie beispielsweise, jedoch nicht beschränkt auf, elektromagnetische, optische oder jede geeignete Kombination davon. Bei einem computerlesbaren Signalmedium kann es sich um jedes computerlesbare Medium handeln, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Ausführung von Anweisungen übertragen, verbreiten oder transportieren kann.
  • In einem computerlesbaren Medium enthaltener Programmcode kann mittels eines beliebigen geeigneten Mediums übertragen werden, wie beispielsweise, jedoch nicht beschränkt auf, kabellose, kabelgebundene, Lichtwellenleiterkabel, HF (Hochfrequenz) usw., oder einer beliebigen geeigneten Kombination des zuvor Genannten.
  • Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in jeder Kombination einer oder mehrerer Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie Java®, Smalltalk, C++ oder Ähnliches und herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf einem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jede beliebige Art von Netzwerk, darunter ein lokales Netzwerk (local area network (LAN)) oder ein Weitverkehrsnetzwerk (wide area network (WAN) verbunden sein, oder es kann eine Verbindung zu einem externen Computer (zum Beispiel mittels eines Internetdienstanbieters über das Internet) hergestellt werden. Java und alle auf Java gestützten Marken und Logos sind Marken oder eingetragen Marken von Oracle und/oder seinen verbundenen Unternehmen.
  • Aspekte der vorliegenden Erfindung werden nachstehend unter Bezugnahme auf Abbildungen von Ablaufplänen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Abbildungen von Ablaufplänen und/oder der Blockschaubilder sowie Kombinationen von Blöcken in den Abbildungen von Ablaufplänen und/oder den Blockschaubildern durch Computerprogrammanweisungen realisiert werden kann. Diese Computerprogrammanweisungen können einem Prozessor eines universellen Computers, eines zweckbestimmten Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine so zu erzeugen, dass die Anweisungen, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zum Realisieren der im Block oder in den Blöcken des Ablaufplans und/oder Blockschaubildes angegebenen Funktionen/Handlungen erzeugen.
  • Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anleiten kann, auf eine bestimmte Weise zu funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsartikel einschließlich Anweisungen erzeugen, welche die im Block oder in den Blöcken des Ablaufplans und/oder des Blockschaubildes angegebene Funktion/Handlung ausführen.
  • Die Computerprogrammanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um eine Reihe von auf dem Computer, der anderen programmierbaren Vorrichtung oder den anderen Einheiten auszuführenden Operationsschritten hervorzurufen, um einen auf dem Computer realisierten Prozess so zu erzeugen, dass die auf dem Computer oder der anderen programmierbaren Vorrichtung ausgeführten Anweisungen Prozesse zum Realisieren der im Block oder in den Blöcken des Ablaufplans und/oder Blockschaubildes angegebenen Funktionen/Handlungen bereitstellen.
  • Die Ablaufplan- und Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und die Arbeitsweise möglicher Realisierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in den Ablaufplan- oder in den Blockschaubildern für ein Modul, ein Segment oder einen Codeabschnitt stehen, der eine oder mehrere ausführbare Anweisungen zum Realisieren der angegebenen logischen Funktion(en) aufweist. Es soll zudem angemerkt werden, dass bei einigen alternativen Realisierungen die im Block angegebenen Funktionen in anderer Reihenfolge als der in den Figuren angegebenen auftreten können. Zum Beispiel können zwei aufeinanderfolgend abgebildete Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal abhängig von der betreffenden Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es wird ebenfalls angemerkt, dass jeder Block der Blockschaubilder und/oder Abbildung von Ablaufplänen und Kombinationen von Blöcken in den Blockschaubildern und/oder der Abbildung von Ablaufplänen durch zweckbestimmte hardwaregestützte Systeme oder Kombinationen von zweckbestimmter Hardware und Computeranweisungen realisiert werden kann, welche die angegebenen Funktionen oder Handlungen durchführen.

Claims (13)

  1. Verfahren in einem Mehrfachprozessor-Datenverarbeitungssystem (104), das eine Vielzahl von Cachespeichern enthält, die einen Cachespeicher (230) enthalten, der ein Zustandsfeld aufweist, das den Kohärenzzustand der Cachespeicherzeile angibt, wobei das Verfahren aufweist: als Reaktion auf ein Erkennen (506) einer ersten speichermodifizierenden Operation, die eine selbe Zieladresse wie diejenige einer ersten durch den Cachespeicher verarbeiteten (505) Operation des Lesetyps angibt, durch den Cachespeicher: Bereitstellen einer Neuversuchsantwort für die speichermodifizierende Operation; als Reaktion auf einen Abschluss der Operation des Lesetyps Eintreten (514) in einen Schiedsrichtermodus; und während er sich im Schiedsrichtermodus befindet, erhöht der Cachespeicher vorübergehend dynamisch eine Priorität irgendeiner speichermodifizierenden Operation, die auf die Zieladresse abzielt, im Verhältnis zu irgendeiner zweiten Operation des Lesetyps, die auf die Zieladresse abzielt; während des Schiedsrichtermodus Empfangen (522) einer zweiten speichermodifizierenden Operation, welche dieselbe Zieladresse angibt; als Reaktion auf das Empfangen der zweiten speichermodifizierenden Operation, welche dieselbe Zieladresse angibt: Verlassen (524) des Schiedsrichtermodus, und Bedienen (526) der zweiten speichermodifizierenden Operation beim Cachespeicher, wobei der Cache-Speicher nur als Antwort auf die Kohärenzzustandsinformationen für die Zieladresse, die einen gemeinsam genutzten modifizierten Zustand anzeigen, in den Schiedsrichtermodus wechselt.
  2. Verfahren nach Anspruch 1, wobei: das Erhöhen der Priorität irgendeines zweiten speichermodifizierenden Zugriffs auf die Zieladresse ein Bereitstellen (518) einer Neuversuchsantwort für die beim Cachespeicher nicht vorhandene zweite Operation des Lesetyps einer weiteren ausstehenden Operation aufweist, welche die Zieladresse beim Cachespeicher angibt.
  3. Verfahren nach einem der vorhergehenden Ansprüche, wobei: die erste speichermodifizierende Operation und die zweite speichermodifizierende Operation von einem selben Hauptelement (400) empfangen werden.
  4. Verfahren nach einem der vorhergehenden Ansprüche, weiterhin aufweisend: in Abwesenheit eines Empfangens einer zweiten speichermodifizierenden Operation, welche dieselbe Zieladresse angibt, Erkennen (520), dass eine Zeitüberschreitungsbedingung existiert; und als Reaktion auf das Erkennen der Zeitüberschreitungsbedingung Verlassen des Schiedsrichtermodus durch den Cachespeicher.
  5. Cachespeicher (230) für ein Mehrfachprozessor-Datenverarbeitungssystem (104), wobei der Cachespeicher aufweist: ein Daten-Array (302); ein Verzeichnis (308) von Inhalten des Daten-Arrays; ein Cachsspeicherverzeichnis, aufweisend ein Zustandsfeld, das den Kohärenzzustand der Cachespeicherzeile angibt; eine Snoop-Maschine (311) zum Verarbeiten von von einer Verbindung (114) empfangenen Operationen, wobei die Snoop-Maschine als Reaktion auf ein Erkennen (506) einer ersten speichermodifizierenden Operation, die eine selbe Zieladresse wie diejenige einer ersten durch den Cachespeicher verarbeiteten (505) Operation des Lesetyps angibt, in der Lage ist, den Cachespeicher zu veranlassen, eine Neuversuchsantwort für die speichermodifizierende Operation bereitzustellen und als Reaktion auf einen Abschluss der Operation des Lesetyps in einen Schiedsrichtermodus einzutreten (514), wobei die Snoop-Maschine, während sie sich im Schiedsrichtermodus befindet, vorübergehend dynamisch eine Priorität irgendeiner zweiten speichermodifizierenden Operation, die auf die Zieladresse abzielt, im Verhältnis zu irgendeiner zweiten Operation des Lesetyps, die auf die Zieladresse abzielt, erhöht; und wobei die Snoop-Maschine als Reaktion auf das Empfangen (522) der zweiten dieselbe Zieladresse angebenden speichermodifizierenden Operation, während sie sich im Schiedsrichtermodus befindet, in der Lage ist, den Schiedsrichtermodus zu verlassen (524) und die zweite speichermodifizierende Operation zu bedienen (526), und wobei der Cache-Speicher nur als Antwort auf die Kohärenzzustandsinformationen für die Zieladresse, die einen gemeinsam genutzten modifizierten Zustand anzeigen, in den Schiedsrichtermodus wechselt.
  6. Cachespeicher nach Anspruch 5, wobei die Snoop-Maschine weiterhin in der Lage ist, eine Priorität irgendeines zweiten speichermodifizierenden Zugriffs auf die Zieladresse durch ein Bereitstellen (518) einer Neuversuchsantwort für eine beim Cachespeicher nicht vorhandene zweite Operation des Lesetyps einer weiteren ausstehenden Operation, welche die Zieladresse angibt, vorübergehend dynamisch zu erhöhen.
  7. Cachespeicher nach Anspruch 5 oder 6, wobei die erste speichermodifizierende Operation und die zweite speichermodifizierende Operation von einem selben Hauptelement (400) empfangbar sind.
  8. Cachespeicher nach einem der Ansprüche 5 bis 7, wobei die Snoop-Maschine in der Lage ist, in Abwesenheit des Empfangens einer zweiten speichermodifizierenden Operation, welche dieselbe Zieladresse angibt, eine Zeitüberschreitungsbedingung zu erkennen und als Reaktion auf das Erkennen (520) der Zeitüberschreitungsbedingung den Schiedsrichtermodus zu verlassen.
  9. Cachespeicher nach einem der Ansprüche 5 bis 8, wobei der Cachespeicher in der Lage ist, nur in den Schiedsrichtermodus einzutreten, wenn es sich bei einem der Zieladresse zugeordneten Cachespeicherzustand um einen gemeinsam genutzten modifizierten Zustand handelt.
  10. Verarbeitungseinheit (104), aufweisend: einen Cachespeicher (230) nach einem der Ansprüche 5 bis 9; und mindestens einen mit dem Cachespeicher verbundenen Prozessorkern (200).
  11. Mehrfachprozessor-Datenverarbeitungssystem (100), aufweisend: eine Vielzahl von Verarbeitungseinheiten (104), von denen jede einen Cachespeicher (230) aufweist; und eine Systemverbindung (114), welche die Vielzahl von Verarbeitungseinheiten verbindet, wobei ein spezieller Cachespeicher einer der Vielzahl von Verarbeitungseinheiten einen Cachespeicher eines der Ansprüche 5 bis 9 aufweist.
  12. Computerprogrammprodukt für ein Mehrfachprozessor-Datenverarbeitungssystem (100), das eine Vielzahl von Cachespeichern enthält, die einen Cachespeicher (230) enthalten, wobei das Computerprogrammprodukt aufweist: ein computerlesbares Speichermedium, das durch eine Verarbeitungsschaltung lesbar ist und Anweisungen zum Durchführen eines Verfahrens nach einem der Ansprüche 1 bis 4 zur Ausführung durch die Verarbeitungsschaltung speichert.
  13. Auf einem computerlesbaren Medium gespeichertes und in den internen Speicher eines digitalen Computers ladbares Computerprogramm, das Software-Codeabschnitte aufweist, um im Falle eines Ausführens des Programms auf einem Computer das Verfahren nach einem der Ansprüche 1 bis 4 durchzuführen.
DE112013000889.0T 2012-02-08 2013-01-23 Weiterleitungsfortschritts-Mechanismus für Speichervorgänge bei Vorhandensein von Ladekonflikten in einem Ladevorgänge begünstigenden System Active DE112013000889B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/368,958 2012-02-08
US13/368,958 US8793442B2 (en) 2012-02-08 2012-02-08 Forward progress mechanism for stores in the presence of load contention in a system favoring loads
PCT/IB2013/050573 WO2013118010A1 (en) 2012-02-08 2013-01-23 Forward progress mechanism for stores in the presence of load contention in a system favoring loads

Publications (2)

Publication Number Publication Date
DE112013000889T5 DE112013000889T5 (de) 2014-10-16
DE112013000889B4 true DE112013000889B4 (de) 2023-05-17

Family

ID=48903950

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013000889.0T Active DE112013000889B4 (de) 2012-02-08 2013-01-23 Weiterleitungsfortschritts-Mechanismus für Speichervorgänge bei Vorhandensein von Ladekonflikten in einem Ladevorgänge begünstigenden System

Country Status (5)

Country Link
US (2) US8793442B2 (de)
CN (1) CN104106061B (de)
DE (1) DE112013000889B4 (de)
GB (1) GB2512804B (de)
WO (1) WO2013118010A1 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8793442B2 (en) * 2012-02-08 2014-07-29 International Business Machines Corporation Forward progress mechanism for stores in the presence of load contention in a system favoring loads
WO2013154549A1 (en) * 2012-04-11 2013-10-17 Hewlett-Packard Development Company, L.P. Prioritized conflict handling in a system
US9360924B2 (en) * 2013-05-29 2016-06-07 Intel Corporation Reduced power mode of a cache unit
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
CN105245469B (zh) * 2015-08-27 2019-05-28 珠海豹好玩科技有限公司 数据传输方法、装置以及系统
WO2017091984A1 (zh) * 2015-12-01 2017-06-08 华为技术有限公司 数据缓存方法、存储控制装置、及存储设备
CN106951374B (zh) * 2016-01-06 2022-06-10 北京忆芯科技有限公司 用于检查块页地址的方法及其装置
US10423876B2 (en) * 2016-12-01 2019-09-24 Via Alliance Semiconductor Co., Ltd. Processor with memory array operable as either victim cache or neural network unit memory
US10235302B2 (en) * 2016-12-12 2019-03-19 Intel Corporation Invalidating reads for cache utilization in processors
CN106940712B (zh) * 2017-03-01 2020-02-14 星环信息科技(上海)有限公司 序列生成方法与设备
CN108664417B (zh) * 2017-03-31 2022-10-25 华为技术有限公司 一种目录更新方法及装置
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
US11714755B2 (en) * 2020-07-31 2023-08-01 Hewlett Packard Enterprise Development Lp System and method for scalable hardware-coherent memory nodes

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5682516A (en) 1994-03-01 1997-10-28 Intel Corporation Computer system that maintains system wide cache coherency during deferred communication transactions
US20020035675A1 (en) 1999-07-13 2002-03-21 Donald Lee Freerksen Apparatus and method to improve performance of reads from and writes to shared memory locations
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
US20080294409A1 (en) 2006-03-16 2008-11-27 International Business Machines Corporation Design structure for performing cacheline polling utilizing a store and reserve instruction

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6823409B2 (en) * 2001-09-28 2004-11-23 Hewlett-Packard Development Company, L.P. Coherency control module for maintaining cache coherency in a multi-processor-bus system
US7313658B2 (en) * 2001-10-23 2007-12-25 Via Technologies, Inc. Microprocessor and method for utilizing disparity between bus clock and core clock frequencies to prioritize cache line fill bus access requests
US6973549B1 (en) * 2001-12-10 2005-12-06 Incipient, Inc. Locking technique for control and synchronization
US7177987B2 (en) * 2004-01-20 2007-02-13 Hewlett-Packard Development Company, L.P. System and method for responses between different cache coherency protocols
CN100419715C (zh) * 2005-11-25 2008-09-17 华为技术有限公司 嵌入式处理器系统及其数据操作方法
CN100370440C (zh) * 2005-12-13 2008-02-20 华为技术有限公司 处理器系统及其数据操作方法
US7512742B2 (en) * 2006-01-17 2009-03-31 International Business Machines Corporation Data processing system, cache system and method for precisely forming an invalid coherency state indicating a broadcast scope
US7577797B2 (en) * 2006-03-23 2009-08-18 International Business Machines Corporation Data processing system, cache system and method for precisely forming an invalid coherency state based upon a combined response
JP4208895B2 (ja) 2006-05-30 2009-01-14 株式会社東芝 キャッシュメモリ装置および処理方法
US7484042B2 (en) * 2006-08-18 2009-01-27 International Business Machines Corporation Data processing system and method for predictively selecting a scope of a prefetch operation
CN101751980B (zh) 2008-12-17 2013-08-14 中国科学院电子学研究所 基于存储器知识产权核的嵌入式可编程存储器
CN101770437B (zh) 2008-12-30 2013-05-29 中国科学院电子学研究所 实现同步双端口存储器ip的并行读写的装置及方法
JP5460143B2 (ja) * 2009-06-29 2014-04-02 キヤノン株式会社 データ処理装置、データ処理方法およびプログラム
US8510512B2 (en) * 2009-08-21 2013-08-13 International Business Machines Corporation Memory coherence directory supporting remotely sourced requests of nodal scope
CN102110019B (zh) 2010-12-31 2013-01-30 北京航空航天大学 一种基于众核处理器和分区结构的事务存储方法
US8793442B2 (en) * 2012-02-08 2014-07-29 International Business Machines Corporation Forward progress mechanism for stores in the presence of load contention in a system favoring loads

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5682516A (en) 1994-03-01 1997-10-28 Intel Corporation Computer system that maintains system wide cache coherency during deferred communication transactions
US20020035675A1 (en) 1999-07-13 2002-03-21 Donald Lee Freerksen Apparatus and method to improve performance of reads from and writes to shared memory locations
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
US20080294409A1 (en) 2006-03-16 2008-11-27 International Business Machines Corporation Design structure for performing cacheline polling utilizing a store and reserve instruction

Also Published As

Publication number Publication date
GB201414384D0 (en) 2014-09-24
US8799589B2 (en) 2014-08-05
DE112013000889T5 (de) 2014-10-16
US8793442B2 (en) 2014-07-29
GB2512804A (en) 2014-10-08
WO2013118010A1 (en) 2013-08-15
CN104106061B (zh) 2017-06-23
US20130205087A1 (en) 2013-08-08
CN104106061A (zh) 2014-10-15
GB2512804B (en) 2015-03-04
US20130205098A1 (en) 2013-08-08

Similar Documents

Publication Publication Date Title
DE112013000889B4 (de) Weiterleitungsfortschritts-Mechanismus für Speichervorgänge bei Vorhandensein von Ladekonflikten in einem Ladevorgänge begünstigenden System
DE102013201079A1 (de) Mechanismus des Weiterleitungsfortschritts für Speichervorgänge beim Vorhandensein einer Überlastung in einem System, das Belastungen durch Zustandsänderungen begünstigt
DE102007030116B4 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE112015004336B4 (de) Konfigurationsbasierte Auswahl eines Cachekohärenz-Protokolls
DE69906585T2 (de) Datenverarbeitungssystem mit nichtuniformen speicherzugriffen (numa) mit spekulativer weiterleitung einer leseanforderung an einen entfernten verarbeitungsknoten
DE60219436T2 (de) System mit adressbasierter Intraknotenkohärenz und datenbasierter Interknotenkohärenz
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE102009023898B4 (de) Optimierung von gleichzeitigen Zugriffen in einem verzeichnisbasierten Kohärenzprotokoll
DE69724354T2 (de) Ein Mehrprozessorrechnersystem mit lokalen und globalen Adressräumen und mehreren Zugriffsmoden
DE69724353T2 (de) Mehrrechnersystem mit einem Drei-Sprung-Kommunikationsprotokoll
DE102013204414B4 (de) Daten-Cachespeicherblock-Freigabeanforderungen in einer Cachespeicherhierarchie mit mehreren Ebenen
DE112013000891T5 (de) Verbessern der Prozessorleistung für Befehlsfolgen, die Sperrbefehle enthalten
DE102007012058A1 (de) Synchronisieren von Neuheitsinformation in einer inklusiven Cache-Hierarchie
DE112019000629B4 (de) Koordination von cacheoperationen
DE102019105879A1 (de) Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher
DE102013204417B4 (de) Daten-Cachespeicherblock-Freigabeanforderungen
DE112008002018T5 (de) Bereitstellen eines gemeinsam genutzten Inklusiv-Cache bei Mehrkern-Cache-Clustern
DE102020108666B4 (de) Cache-kohärenz-management für multi-kategorie-erinnerungen
US20190220409A1 (en) Remote node broadcast of requests in a multinode data processing system
DE10045916A1 (de) Methode und System zum Implementieren eines Remstat-Protokolls und Einbeziehung und Nicht-Einbeziehung von L1-Daten im L2-Cache zur Verhinderung einer gegenseitigen Lesesperre
DE112020005147B4 (de) Cache-snooping-modus, der einen kohärenzschutz für bestimmte anforderungen erweitert
DE102021108478B4 (de) Vorrichtung und Steuerung zur Cache-Verzeichnis-CAM-Fehlererkennung und - Korrektur
DE102021127104A1 (de) Anwendung eines Cache-Kohärenzprotokolls mit default shared state

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0015167000

Ipc: G06F0012080000

R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final