DE102013204417A1 - Daten-Cachespeicherblock-Freigabeanforderungen - Google Patents

Daten-Cachespeicherblock-Freigabeanforderungen Download PDF

Info

Publication number
DE102013204417A1
DE102013204417A1 DE102013204417A DE102013204417A DE102013204417A1 DE 102013204417 A1 DE102013204417 A1 DE 102013204417A1 DE 102013204417 A DE102013204417 A DE 102013204417A DE 102013204417 A DE102013204417 A DE 102013204417A DE 102013204417 A1 DE102013204417 A1 DE 102013204417A1
Authority
DE
Germany
Prior art keywords
cache
data
response
subordinate
cache line
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.)
Granted
Application number
DE102013204417A
Other languages
English (en)
Other versions
DE102013204417B4 (de
Inventor
Sanjeev Ghai
Guy L. Guthrie
William J. Starke
Jeff A. Stuecheli
Derek E. Williams
Phillip G. 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 DE102013204417A1 publication Critical patent/DE102013204417A1/de
Application granted granted Critical
Publication of DE102013204417B4 publication Critical patent/DE102013204417B4/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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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
    • G06F12/0817Cache consistency protocols using directory methods
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning

Abstract

Ein Datenverarbeitungssystem beinhaltet einen Prozessorkern, der durch Cachespeicher übergeordneter und untergeordneter Ebenen unterstützt wird. In Reaktion auf ein Ausführen eines Freigabebefehls in dem Prozessorkern wird eine Freigabeanforderung von dem Prozessorkern an den Cachespeicher der untergeordneten Ebene gesendet, wobei die Freigabeanforderung eine Zieladresse angibt, die einer Ziel-Cachespeicherzeile zugehörig ist. In Reaktion auf ein Empfangen der Freigabeanforderung in dem Cachespeicher der untergeordneten Ebene wird ermittelt, ob die Zieladresse einen Treffer in dem Cachespeicher der untergeordneten Ebene erzielt. In Reaktion auf ein Ermitteln, dass die Zieladresse einen Treffer in dem Cachespeicher der untergeordneten Ebene erzielt, wird die Ziel-Cachespeicherzeile in einem Daten-Array des Cachespeichers der untergeordneten Ebene beibehalten, und ein Ersetzungsreihenfolgefeld in einem Verzeichnis des Cachespeichers der untergeordneten Ebene wird so aktualisiert, dass die Ziel-Cachespeicherzeile mit größerer Wahrscheinlichkeit in Reaktion auf einen nachfolgenden Cachespeicher-Fehltreffer aus dem Cachespeicher der untergeordneten Ebene bereinigt wird.

Description

  • HINTERGRUND DER ERFINDUNG
  • 1. Technisches Gebiet:
  • Die vorliegende Erfindung bezieht sich allgemein auf die Datenverarbeitung und insbesondere auf ein Verarbeiten von Anforderungen zum Freigeben eines Daten-Cachespeicherblocks in einem Cachespeicher eines Datenverarbeitungssystems.
  • 2. Beschreibung der verwandten Technik:
  • Ein herkömmliches Mehrprozessor(MP)-Computersystem wie zum Beispiel ein Server-Computersystem beinhaltet mehrere Verarbeitungseinheiten, die sämtlich mit einer Systemverbindung verbunden sind, die üblicherweise einen oder mehrere Adress-, Daten- und Steuerbusse aufweist. Mit der Systemverbindung ist ein Systemspeicher verbunden, der die unterste Ebene eines flüchtigen Speichers in dem Mehrprozessor-Computersystem darstellt und auf den im Allgemeinen durch alle Verarbeitungseinheiten für einen Lese- und Schreibzugriff zugegriffen werden kann. Um die Latenzzeit beim Zugriff auf Befehle und Daten zu verringern, die sich in dem Systemspeicher befinden, wird üblicherweise jede Verarbeitungseinheit des Weiteren durch eine entsprechende Cachespeicherhierarchie mit mehreren Ebenen unterstützt, wobei jede untergeordnete Ebene im Allgemeinen eine stufenweise längere Zugriffslatenzzeit aufweist. Dementsprechend weist ein Cachespeicher der Ebene eins (L1) im Allgemeinen eine kürzere Zugriffslatenzzeit als ein Cachespeicher der Ebene zwei (L2) auf, der wiederum eine kürzere Latenzzeit als ein Cachespeicher der Ebene drei (L3) aufweist.
  • Um ein Gleichgewicht zwischen konkurrierenden Überlegungen bei der Entwicklung wie zum Beispiel Verlustleistung, Größe, Zugriffslatenzzeit und Trefferraten herzustellen, implementieren viele MP-Systeme satzassoziative Cachespeicher, die Cachespeichereinträge in Kongruenzklassen zusammenfassen, die jeweils mehrere Einträge zum Speichern von Cachespeicherzeilen enthalten, die einen gemeinsamen Adressindex nutzen. Das Entfernen (Bereinigen) von Cachespeicherzeilen aus den Einträgen in jeder Kongruenzklasse wird durch eine Ersetzungsstrategie gesteuert, die bevorzugt so gewählt wird, dass die Cachespeicherzeile aus der Kongruenzklasse entfernt wird, auf die mit der geringsten Wahrscheinlichkeit erneut zugegriffen wird. Herkömmliche Ersetzungsstrategien beinhalten LRU (least-recently used, am längsten ungenutzt) und das Umlaufverfahren (round-robin).
  • Bei einigen Arbeitslasten wird die Ersetzungsstrategie, die durch die Cachespeicher-Hardware implementiert wird, durch eine zusätzliche Software-Verwaltung des/der Cachespeicher(s) ergänzt. Beispielsweise kann in einigen Fällen ein Programmierer oder Compiler explizite Befehle in ein Anwendungsprogramm einfügen, um die Cachespeicherhierarchie zu veranlassen, bestimmte Cachespeicherzeilen ungültig zu machen oder bestimmte Cachespeicherzeilen in den Systemspeicher zurückzuschreiben. Beispiele für Befehle zur Cachespeicherverwaltung aus der PowerPC-Befehlssatzarchitektur werden im Folgenden in Tabelle I aufgeführt. Tabelle I
    Mnemonischer PowerPC-Begriff Befehlsname
    DCBF Daten-Cachespeicherzeile zurückschreiben
    DCBI Daten-Cachespeicherzeile ungültig machen
    DCBZ Daten-Cachespeicherzeile mit Nullen überschreiben
    ICBI Befehls-Cachespeicherzeile ungültig machen
  • In einigen Fällen können explizite Befehle zur Cachespeicherverwaltung zu einer Ineffizienz bei einer Ausführung eines Anwendungsprogramms führen, beispielsweise durch Ungültigmachen einer Cachespeicherzeile oder Zurückschreiben der Cachespeicherzeile in den Systemspeicher, bevor erneut auf die Cachespeicherzeile zugegriffen wird. In solchen Fällen führt der Zugriff auf die Cachespeicherzeile im Anschluss an das durch Software gesteuerte Ungültigmachen oder Zurückschreiben zu einer erheblich verlängerten Zugriffslatenzzeit, da die Cachespeicherzeile erneut aus dem Systemspeicher abgerufen werden muss, der eine Zugriffslatenzzeit aufweisen kann, die zwei Größenordnungen länger als die der übergeordneten Ebenen der Cachespeicherhierarchie ist.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Bei zumindest einer Ausführungsform beinhaltet ein Datenverarbeitungssystem einen Prozessorkern, der durch Cachespeicher übergeordneter und untergeordneter Ebenen unterstützt wird. In Reaktion auf ein Ausführen eines Freigabebefehls in dem Prozessorkern wird eine Freigabeanforderung von dem Prozessorkern an den Cachespeicher der untergeordneten Ebene gesendet, wobei die Freigabeanforderung eine Zieladresse angibt, die einer Ziel-Cachespeicherzeile zugehörig ist. In Reaktion auf ein Empfangen der Freigabeanforderung in dem Cachespeicher der untergeordneten Ebene wird ermittelt, ob die Zieladresse einen Treffer in dem Cachespeicher der untergeordneten Ebene erzielt. In Reaktion auf ein Ermitteln, dass die Zieladresse einen Treffer in dem Cachespeicher der untergeordneten Ebene erzielt, wird die Ziel-Cachespeicherzeile in einem Daten-Array des Cachespeichers der untergeordneten Ebene beibehalten, und ein Ersetzungsreihenfolgefeld in einem Verzeichnis des Cachespeichers der untergeordneten Ebene wird so aktualisiert, dass die Ziel-Cachespeicherzeile mit größerer Wahrscheinlichkeit in Reaktion auf einen nachfolgenden Cachespeicher-Fehltreffer in einer Kongruenzklasse, die die Ziel-Cachespeicherzeile beinhaltet, aus dem Cachespeicher der untergeordneten Ebene bereinigt wird.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Übersichts-Blockschaubild eines beispielhaften Datenverarbeitungssystems gemäß einer Ausführungsform;
  • 2A ist ein Übersichts-Blockschaubild einer Verarbeitungseinheit von 1;
  • 2B ist ein ausführlicheres Blockschaubild einer beispielhaften Ausführungsform eines Prozessorkerns und einer zugehörigen Cachespeicherhierarchie von 2A;
  • 3 veranschaulicht eine beispielhafte Ausführungsform eines Cachespeichers einer untergeordneten Ebene von 2B;
  • 4 stellt eine beispielhafte Ausführungsform eines Cachespeicherverzeichnisses eines Cachespeichers einer untergeordneten Ebene dar;
  • 5 veranschaulicht den Betrieb eines Compilers gemäß einer Ausführungsform;
  • 6 ist ein Übersichtsplan eines logischen Ablaufs eines beispielhaften Verfahrens zum Kompilieren eines Quellcodes zum Erzeugen eines Objektcodes gemäß einer Ausführungsform;
  • 7 ist ein Übersichtsplan eines logischen Ablaufs eines beispielhaften Verfahrens, durch das ein Prozessorkern einen Freigabebefehl ausführt, gemäß einer Ausführungsform;
  • 8 ist ein Übersichtsplan eines logischen Ablaufs eines beispielhaften Verfahrens, durch das ein Cachespeicher einer untergeordneten Ebene eine Freigabeanforderung verarbeitet, gemäß einer Ausführungsform;
  • 9 ist ein Übersichtsplan eines logischen Ablaufs eines beispielhaften Verfahrens, durch das ein Cachespeicher einer untergeordneten Ebene eine Speicherzugriffsanforderung bedient, gemäß einer Ausführungsform; und
  • 10 ist ein Übersichtsplan eines logischen Ablaufs eines beispielhaften Verfahrens, durch das ein Cachespeicher einer untergeordneten Ebene eine Cast-in-Anforderung bedient, gemäß einer Ausführungsform.
  • AUSFÜHRLICHE BESCHREIBUNG VERANSCHAULICHENDER AUSFÜHRUNGSFORMEN
  • Unter Bezugnahme auf die Figuren und insbesondere unter Bezugnahme auf 1 wird nun ein Übersichts-Blockschaubild einer beispielhaften Ausführungsform eines Mehrprozessor-Datenverarbeitungssystems gemäß der vorliegenden Erfindung veranschaulicht. Wie dargestellt, beinhaltet ein Datenverarbeitungssystem 100 mehrere Verarbeitungsknoten 102a, 102b zum Verarbeiten von Daten und Befehlen. Die Verarbeitungsknoten 102a, 102b sind mit einer Systemverbindung 110 verbunden, um Adress-, Daten- und Steuerinformationen zu übermitteln. Die Systemverbindung 110 kann zum Beispiel als Bus-Verbindung, als Switch-Verbindung oder als Hybridverbindung implementiert werden.
  • Bei der dargestellten Ausführungsform wird jeder Verarbeitungsknoten 102 als Multi-Chip-Modul (MCM) umgesetzt, das vier Verarbeitungseinheiten 104a bis 104d enthält, die jeweils bevorzugt als entsprechende integrierte Schaltung umgesetzt sind. Die Verarbeitungseinheiten 104a bis 104d innerhalb jedes Verarbeitungsknotens 102 sind zum Datenaustausch durch eine lokale Verbindung 114 verbunden, die wie die Systemverbindung 110 mit einem oder mehreren Bussen und/oder Switches implementiert sein kann. Die lokalen Verbindungen 114 und die Systemverbindung 110 bilden zusammen eine Verbindungsstruktur, die bevorzugt einen gleichzeitigen Datenaustausch von Operationen unterschiedlicher Übertragungsbereiche unterstützt. Beispielsweise unterstützt die Verbindungsstruktur bevorzugt einen gleichzeitigen Datenaustausch von Operationen, deren Wirkungsbereich auf einen einzigen Verarbeitungsknoten 102 beschränkt ist, und von Operationen, die an mehrere Verarbeitungsknoten 102 übertragen werden.
  • Die Einheiten, die mit jeder lokalen Verbindung 114 verbunden sind, beinhalten nicht nur die Verarbeitungseinheiten 104, sondern auch einen oder mehrere Systemspeicher 108a bis 108d. Auf Daten und Befehle, die sich in den Systemspeichern 108 befinden, kann im Allgemeinen durch einen Prozessorkern (2A) in einer beliebigen Verarbeitungseinheit 104 in einem beliebigen Verarbeitungsknoten 102 des Datenverarbeitungssystems 100 zugegriffen werden, und sie können durch diesen modifiziert werden. Bei alternativen Ausführungsformen der Erfindung können ein oder mehrere Systemspeicher 108 mit der Systemverbindung 110 statt mit einer lokalen Verbindung 114 verbunden sein.
  • Fachleuten ist ersichtlich, dass das Datenverarbeitungssystem 100 viele zusätzliche Komponenten beinhalten kann, die nicht veranschaulicht werden, wie zum Beispiel Peripherieeinheiten, Verbindungsbrücken, nichtflüchtige Speicher, Anschlüsse für eine Verbindung mit Netzwerken oder angeschlossenen Einheiten usw. Da solche zusätzlichen Komponenten für ein Verständnis der vorliegenden Erfindung nicht erforderlich sind, werden sie weder in 1 veranschaulicht noch hierin weiter erörtert. Es versteht sich jedoch außerdem, dass die Verbesserungen, die durch die vorliegende Erfindung bereitgestellt werden, auf Datenverarbeitungssysteme mit verschiedenen Architekturen anwendbar sind und in keiner Weise auf die verallgemeinerte Datenverarbeitungssystemarchitektur beschränkt sind, die in 1 veranschaulicht wird.
  • Es wird nun auf 2A Bezug genommen, in der ein ausführlicheres Blockschaubild einer beispielhaften Verarbeitungseinheit 104 gemäß der vorliegenden Erfindung dargestellt wird. Bei der dargestellten Ausführungsform beinhaltet jede Verarbeitungseinheit 104 mehrere Instanzen eines Prozessorkerns und einer zugehörigen Cachespeicherhierarchie, die gemeinsam durch das Bezugszeichen 200 gekennzeichnet sind. Bei der dargestellten Ausführungsform beinhaltet jede Verarbeitungseinheit 104 außerdem eine integrierte Speichersteuereinheit (integrated memory controller, IMC) 206, die den Lese- und Schreibzugriff auf einen oder mehrere der Systemspeicher 108a bis 108d innerhalb ihres Verarbeitungsknotens 102 in Reaktion auf Anforderungen steuert, die von Prozessorkernen und Operationen empfangen werden, die in der lokalen Verbindung 114 durch Snooping erkannt wurden.
  • Weiterhin unter Bezugnahme auf 2A beinhaltet jede Verarbeitungseinheit 104 außerdem eine Instanz einer Kohärenzverwaltungslogik 210, die einen Abschnitt des Mechanismus der Signalisierung verteilter Kohärenz auf der Grundlage von Snooping implementiert, der eine Cachespeicherkohärenz innerhalb des Datenverarbeitungssystems 100 aufrechterhält. Darüber hinaus beinhaltet jede Verarbeitungseinheit 104 eine Instanz einer Verbindungslogik 212 zum selektiven Weiterleiten von Datenübertragungen zwischen ihrer lokalen Verbindung 114 und der Systemverbindung 110. Schließlich beinhaltet jede Verarbeitungseinheit 104 eine integrierte E/A(Eingabe-/Ausgabe)-Steuereinheit 214, die das Anschließen einer oder mehrerer E/A-Einheiten wie zum Beispiel einer E/A-Einheit 216 unterstützt. Die E/A-Steuereinheit 214 kann Operationen in der lokalen Verbindung 114 und/oder der Systemverbindung 110 in Reaktion auf Anforderungen durch die E/A-Steuereinheit 216 ausgeben.
  • Es wird nun auf 2B Bezug genommen, die ein ausführlicheres Blockschaubild einer beispielhaften Ausführungsform eines Prozessorkerns und einer zugehörigen Cachespeicherhierarchie 200 von 2A ist. Der Prozessorkern 202 beinhaltet Schaltungen zum Verarbeiten von Befehlen und Daten. Bei der dargestellten Ausführungsform beinhalten diese Schaltungen eine Befehlsablaufsteuereinheit (instruction sequencing unit) 201, die Befehle aus der Speicherhierarchie abruft und die Befehle zur Ausführung ordnet, und eine oder mehrere Ausführungseinheiten 203, die von der ISU 203 empfangene Befehle ausführt. Bei der dargestellten Ausführungsform beinhalten die Ausführungseinheiten 203 eine Lade-/Speicher-Einheit (load-store unit, LSU) 205, die Speicherzugriffsbefehle und Cachespeicherverwaltungs-Befehle ausführt, um Zieladressen zu berechnen und entsprechende Speicherzugriffs- und Cachespeicherverwaltungs-Anforderungen zu erzeugen, die die Zieladressen angeben.
  • Der Betrieb des Prozessorkerns 202 wird durch eine Cachespeicherhierarchie unterstützt, die eine schwach geordnete Speicherarchitektur implementiert, was bedeutet, dass die Cachespeicherhierarchie im Allgemeinen von dem angeschlossenen Prozessorkern 202 empfangene Speicheranforderungen außerhalb der Reihenfolge in Bezug auf die Programmreihenfolge der zugehörigen Speicherbefehle durchführen kann, die durch den Prozessorkern 202 ausgeführt werden, und nur ein Ordnen zwischen Gruppen von Speicheranforderungen durchsetzt, die durch eine Sperroperation getrennt sind. Die Cachespeicherhierarchie beinhaltet einen Durchschreib(store-through)-Cachespeicher 204 der Ebene eins (L1) innerhalb jedes Prozessorkerns 202, einen Zwischenspeicherungs(store-in)-Cachespeicher 230 der Ebene zwei (L2) (der den L1-Cachespeicher 204 bevorzugt einschließt) und einen L3-Umsetz(lookaside)-Cachespeicher 232, der als Auswahl-Cachespeicher für den L2-Cachespeicher 230 eingesetzt wird und dementsprechend mit Cachespeicherzeilen gefüllt wird, die aus dem L2-Cachespeicher 230 bereinigt werden. Im Gegensatz zu vielen herkömmlichen Auswahl-Cachespeicheranordnungen schließt der Inhalt des L3-Cachespeichers 232 den Inhalt des L2-Cachespeichers 230 nicht aus, was bedeutet, dass ein bestimmter Speicherblock gleichzeitig in dem L2-Cachespeicher 230 und dem L3-Cachespeicher 232 gehalten werden kann.
  • Der L3-Cachespeicher 232 beinhaltet des Weiteren zumindest eine und bevorzugt eine Vielzahl von Snoop(SN)-Maschine(n) 236 und zumindest eine und bevorzugt eine Vielzahl von Schreib-Injektions-(write inject, WI-)Maschine(n) 238 innerhalb eines Snoopers 286 (siehe 2C). Wie im Folgenden weiter erörtert wird, verarbeiten die SN(s) 236 und WI(s) 238 das Cast-in von Cachespeicherzeilen in den L3-Cachespeicher 232 in Reaktion auf Befehle zum lateralen Castout (LCO), die von anderen L3-Cachespeichern 232 empfangen werden. In der beschriebenen Ausführungsform wird/werden die SN(s) 236 dazu verwendet, Cast-in-Operationen zu verarbeiten, die keine Datenverschiebung erfordern und dementsprechend die eingehenden Datenverwaltungsanweisungen bevorzugt nicht beinhalten, wohingegen die WI(s) 238 dazu verwendet wird/werden, LCO-Befehle zu verarbeiten, die eine Datenverschiebung erfordern und dementsprechend eingehende Datenverwaltungsanweisungen beinhalten (wodurch sie aufwändiger wird/werden als die SN(s) 236). Die WIs 238 verarbeiten des Weiteren die Injektion von Cachespeicherzeilen in den L3-Cachespeicher 232 durch die E/A-Einheiten 216.
  • 2B veranschaulicht auch einen beispielhaften Fluss von Anforderungen, Daten und eines Kohärenzdatenaustausches innerhalb der Cachespeicherhierarchie des Prozessorkerns 202. Bei der dargestellten Anordnung stellen gestrichelte Linien den Fluss von Anforderungen und Kohärenzbefehlen dar, und durchgezogene Linien stellen einen Datenfluss dar.
  • Wie dargestellt, überträgt der Prozessorkern 202 Ladeanforderungen 240 an den und empfängt Ladedaten 242 von dem L2-Cachespeicher 230. Der Prozessorkern 202 überträgt außerdem Speicheranforderungen 244 und zugehörige Speicherdaten 246 zu einer Erfassungslogik 248, die die Speicherdaten, die mehreren Anforderungen zugehörig sind, in einer Cachespeicherzeile von Daten erfasst und die erfassten Speicherdaten 249 an den L2-Cachespeicher 230 zusammen mit einer erfassten Speicheranforderung 247 überträgt. Wenngleich sie der Deutlichkeit halber getrennt dargestellt wird, kann die Erfassungslogik 248 in den Prozessorkern 202 und/oder den L2-Cachespeicher 230 einbezogen sein.
  • In Reaktion auf eine Speicherzugriffsanforderung von dem Prozessorkern 202 weist der L2-Cachespeicher 230 eine von einer Vielzahl von Leseanforderungs-(read-claim, RC-)Maschinen 231 zum Bedienen der Speicherzugriffsanforderung zu. Das Bedienen der Speicherzugriffsanforderung kann damit verbunden sein, dass die RC 231 des L2-Cachespeichers 230 Systemkohärenzbefehle 250 zur Kompilierung und/oder Übertragung über die Verbindungsstruktur an die Kohärenzverwaltungslogik 210 von 2A überträgt. Die RC 231 des L2-Cachespeichers 230 kann außerdem Schreibdaten 254 an die IMC 206 und/oder die Verbindungslogik 212 übertragen, und sie empfängt Ladedaten 252 von diesen. Die RC 231 des L2-Cachespeichers 230 kann außerdem Ladedaten von dem L3-Cachespeicher 232 über eine Ladeanforderung 260 anfordern und Ladedaten 262 von dem L3-Cachespeicher 232 empfangen. Der L2-Cachespeicher 230 beinhaltet des Weiteren eine Vielzahl von Snoop(SN)-Maschinen 233, um Speicherzugriffsanforderungen (z. B. Leseanforderungen, Leseanforderungen mit Änderungsabsicht, und Löschanforderungen) zu bedienen, die in der Verbindungsstruktur durch Snooping erkannt worden sind.
  • Um eine Cachespeicherzeile aus dem L2-Cachespeicher 230 zu entfernen, kann der L2-Cachespeicher 230 eine Cast-in-Anforderung an den L3-Cachespeicher 232 ausgeben, der wiederum die Cachespeicherzeile als Cast-in-Daten 266 empfängt. Ähnlich wie der L2-Cachespeicher 230 kann der L3-Cachespeicher 232 mit den IMCs 206 und/oder Cachespeichern in anderen Cachespeicherhierarchien durch Ausgeben von Systemkohärenzbefehlen 270, Empfangen von Vorabzugriffsdaten 272 und/oder Cast-in-Daten 273 und/oder Übertragen von Schreibdaten 274 in Wechselwirkung stehen.
  • Wenngleich die veranschaulichte Cachespeicherhierarchie lediglich drei Cachespeicherebenen beinhaltet, ist Fachleuten ersichtlich, dass alternative Ausführungsformen zusätzliche Ebenen (L4, L5 usw.) eines integrierten oder Umsetz-Cachespeichers auf dem Chip oder außerhalb des Chips beinhalten können, die den Inhalt der übergeordneten Cachespeicherebenen vollständig einschließen, teilweise einschließen oder nicht einschließen können. Des Weiteren kann jede der verschiedenen Ebenen der Cachespeicherhierarchie nur für einen bestimmten Prozessorkern 202 zur Verfügung stehen oder von mehreren Prozessorkernen 202 gemeinsam genutzt werden. Beispielsweise beinhaltet bei einigen Implementierungen die Cachespeicherhierarchie einen L2-Cachespeicher 230 für jeden Prozessorkern 202, wobei mehrere der L2-Cachespeicher 230 einen gemeinsamen L3-Auswahl-Cachespeicher 232 gemeinsam nutzen.
  • Es wird nun auf 3 Bezug genommen, in der ein Übersichts-Blockschaubild einer beispielhaften Ausführungsform eines der L2-Cachespeicher 230 veranschaulicht wird. (Die L3-Cachespeicher 232 können in ähnlicher Weise implementiert werden.) Wie dargestellt, beinhaltet der L2-Cachespeicher 230 ein Daten-Array 302 und ein Verzeichnis 308 des Inhalts des Daten-Arrays 302, von denen Ausführungsformen im Folgenden ausführlicher unter Bezugnahme auf 4 beschrieben werden. Der L2-Cachespeicher 230 beinhaltet außerdem eine zusätzliche Steuerlogik (die nach dem Stand der Technik insgesamt als „Cachespeicher-Steuereinheit” bezeichnet wird), die bei der dargestellten Ausführungsform mehrere (z. B. 16) Leseanforderungs(RC)-Maschinen 231a bis 231n zum unabhängigen und gleichzeitigen Bedienen von Lade(LD)- und Speicher(ST)-Anforderungen beinhaltet, die von dem angeschlossenen Prozessorkern 202 empfangen werden. Um Speicherfernzugriffsanforderungen zu bedienen, die von anderen Prozessorkernen 202 als dem angeschlossenen Prozessorkern 202 stammen, beinhaltet die Steuerlogik des L2-Cachespeichers 230 mehrere Snoop(SN)-Maschinen 233a bis 233m. Jede Snoop-Maschine 233 kann unabhängig und gleichzeitig eine Speicherfernzugriffsanforderung verarbeiten, die durch „Snooping” in der lokalen Verbindung 114 erkannt wurde. Wie ersichtlich ist, kann das Bedienen von Speicherzugriffsanforderungen durch RC-Maschinen 312 ein Ersetzen oder Ungültigmachen von Speicherblöcken innerhalb des Daten-Arrays 302 erfordern. Dementsprechend beinhaltet der L2-Cachespeicher 230 CO(Castout)-Maschinen 310, die das Entfernen und Zurückschreiben von Speicherblöcken aus dem Daten-Array 302 verwalten.
  • Die Steuerlogik des L2-Cachespeichers 230 beinhaltet des Weiteren einen Arbiter 305, der Multiplexer M1 bis M2 so steuert, dass sie das Verarbeiten von Anforderungen zum lokalen Speicherzugriff und zur Cachespeicherverwaltung, die von dem angeschlossenen Prozessorkern 200 empfangen werden, und von Fernanforderungen steuert, die durch Snooping in der lokalen Verbindung 114 erkannt werden. Anforderungen werden gemäß der Arbitrierungsstrategie, die durch den Arbiter 305 implementiert wird, an eine Zuteilungs-Pipeline 306 weitergeleitet, in der jede Anforderung im Hinblick auf das Verzeichnis 308 über eine bestimmte Anzahl von Zyklen verarbeitet wird.
  • Die Steuerlogik des L2-Cachespeichers 230 beinhaltet außerdem eine RC-Warteschlange (RCQ) 320 und eine Castout-Push-Intervention(CPI)-Warteschlange 318, die jeweils Daten zwischenspeichern, die in das Daten-Array 302 eingefügt bzw. daraus entfernt werden. Die RC-Warteschlange 320 beinhaltet eine Anzahl von Puffereinträgen, die jeder jeweils einer bestimmten der RC-Maschinen 231 entsprechen, sodass jede RC-Maschine 231, die zugeteilt wird, nur Daten aus dem benannten Puffereintrag abruft. In ähnlicher Weise beinhaltet die CPI-Warteschlange 318 eine Anzahl von Puffereinträgen, die jeder jeweils einer bestimmten der Castout-Maschinen 310 und der Snoop-Maschinen 233 entsprechen, sodass jede CO-Maschine 310 und jede Snoop-Maschine 233, die zugeteilt wird, nur Daten aus dem jeweiligen benannten CPI-Puffereintrag abruft.
  • Jeder RC-Maschine 231 ist außerdem ein jeweiliger von mehreren RC-Daten(RCDAT)-Puffern 322 zum Zwischenspeichern eines Speicherblocks zugewiesen, der aus dem Daten-Array 302 gelesen wird und/oder von der lokalen Verbindung 114 über einen Reload-Bus 323 empfangen wird. Der RCDAT-Puffer 322, der jeder RC-Maschine 312 zugewiesen ist, ist bevorzugt mit Verbindungen und einer Funktionalität gestaltet, die den Speicherzugriffsanforderungen entsprechen, die durch die zugehörige RC-Maschine 312 bedient werden können. Zumindest einige der RCDAT-Puffer 322 weisen einen zugehörigen Speicherdatenmultiplexer M4 auf, der Daten-Bytes aus seinen Eingaben zum Zwischenspeichern in dem RCDAT-Puffer 322 in Reaktion auf nicht veranschaulichte Auswahlsignale auswählt, die durch den Arbiter 305 erzeugt werden.
  • Im Betrieb werden von dem angeschlossenen Prozessorkern 202 innerhalb einer Speicherwarteschlange (store queue, STQ) 304 Prozessorspeicheranforderungen empfangen, die einen Transaktionstyp (ttype), eine reale Zieladresse und Speicherdaten aufweisen. Von der STQ 304 werden die Speicherdaten über einen Datenpfad 324 zu dem Speicherdatenmultiplexer M4 übertragen, und der Speichertyp und die Zieladresse werden an den Multiplexer M1 übergeben. Der Multiplexer M1 empfängt außerdem Prozessorlade- und -freigabeanforderungen als Eingaben, die durch den Prozessorkern 202 über eine Lade-Pipeline 325 gesendet werden, und Verzeichnisschreibanforderungen, die durch die RC-Maschinen 312 gesendet werden. In Reaktion auf nicht veranschaulichte Auswahlsignale, die durch den Arbiter 305 erzeugt werden, wählt der Multiplexer M1 eine seiner Eingabeanforderungen aus und leitet sie an den Multiplexer M2 weiter, der zusätzlich eine Fernanforderung als Eingabe empfängt, die von der lokalen Verbindung 114 über einen Fernanforderungspfad 326 empfangen wird. Der Arbiter 305 plant lokale und Fernanforderungen zum Verarbeiten und erzeugt auf der Grundlage der Planung eine Sequenz von Auswahlsignalen 328. In Reaktion auf die Auswahlsignale 328, die durch den Arbiter 305 erzeugt worden sind, wählt der Multiplexer M2 entweder die lokale Anforderung, die von dem Multiplexer M1 empfangen wird, oder die Fernanforderung, die in der lokalen Verbindung 114 durch Snooping erkannt wird, als nächste zu verarbeitende Anforderung aus.
  • Weiterhin unter Bezugnahme auf 3 wird die zur Verarbeitung durch den Arbiter 305 ausgewählte Anforderung durch den Multiplexer M2 in der Zuteilungs-Pipeline 306 platziert. Die Zuteilungs-Pipeline 306 wird bevorzugt als Pipeline mit festgelegter Dauer implementiert, in der jede der mehreren möglichen sich überschneidenden Anforderungen über eine vorgegebene Anzahl von Taktzyklen verarbeitet wird.
  • Während des ersten Zyklus der Verarbeitung innerhalb der Zuteilungs-Pipeline 306 wird eine 1-zyklische Verzeichnisleseoperation durchgeführt, die die Zieladresse der Anforderung dazu verwendet, zu ermitteln, ob die Zieladresse in dem Verzeichnis 308 einen Treffer oder einen Fehltreffer erzielt, und wenn die Zieladresse einen Treffer erzielt, den Kohärenzstatus des Speicherblocks innerhalb des Verzeichnisses 308 zu ermitteln. Die Verzeichnisdaten, die eine Treffer/Fehltrefferkennzeichnung und den Kohärenzstatus des Speicherblocks beinhalten, werden durch das Verzeichnis 308 an die Zuteilungs-Pipeline 306 zurückgegeben. Wie ersichtlich ist, werden im Allgemeinen keine Schritte innerhalb eines L2-Cachespeichers 230 in Reaktion auf einen Fehltreffer bei einer Speicherfernzugriffsanforderung eingeleitet; solche Speicherfernanforderungen werden dementsprechend aus der Zuteilungs-Pipeline 306 gelöscht. Im Fall eines Treffers oder Fehltreffers bei einer lokalen Anforderung oder eines Treffers bei einer Speicherfernzugriffsanforderung bedient der L2-Cachespeicher 230 die Anforderung jedoch, was für Anforderungen, die nicht vollständig innerhalb der Verarbeitungseinheit 104 bedient werden können, mit einem Datenaustausch über die lokale Verbindung 114 verbunden sein kann.
  • Zu einem vorgegebenen Zeitpunkt während des Verarbeitens einer Speicherzugriffsanforderung innerhalb der Zuteilungs-Pipeline 306 überträgt der Arbiter 305 die Anforderungsadresse an das Daten-Array 302 über einen Adress- und Steuerpfad 330, um eine Cachespeicher-Leseoperation der Ziel-Cachespeicherzeile zu veranlassen, die durch die Zieladresse angegeben wird, wodurch zusätzlich Verlustleistung entsteht. Der Speicherblock, der aus dem Daten-Array 302 gelesen wird, wird über einen Datenpfad 342 an eine Fehlerkorrekturcode-(Error Correcting Code, ECC-)Logik 344 übertragen, die den Speicherblock auf Fehler überprüft und, falls möglich, jegliche erkannten Fehler korrigiert. Bei Prozessorladeanforderungen wird der Speicherblock auch an den Ladedatenmultiplexer M3 über den Datenpfad 340 übertragen, damit er an den angeschlossenen Prozessorkern 202 weitergeleitet wird.
  • Bei dem letzten Zyklus zum Verarbeiten einer Speicherzugriffsanforderung innerhalb der Zuteilungs-Pipeline 306 trifft die Zuteilungs-Pipeline 306 eine Zuteilungsentscheidung beispielsweise auf der Grundlage (1) des Vorhandenseins einer Adressenkollision zwischen der Zieladresse und einer zuvor empfangenen Zieladresse, die zurzeit durch eine Castout-Maschine 310, eine Snoop-Maschine 233 oder eine RC-Maschine 231 verarbeitet wird, (2) der Verzeichnisdaten und (3) der Verfügbarkeit einer RC-Maschine 231 oder einer Snoop-Maschine 233, um die Speicherzugriffsanforderung zu verarbeiten. Wenn die Zuteilungs-Pipeline 306 eine Zuteilungsentscheidung dahingehend trifft, dass die Speicherzugriffsanforderung zugeteilt werden soll, wird die Speicherzugriffsanforderung von der Zuteilungs-Pipeline 306 an eine RC-Maschine 231 oder eine Snoop-Maschine 233 zugeteilt. Wenn die Zuteilung der Speicherzugriffsanforderung fehlschlägt, wird der Fehler dem Anforderer (z. B. dem lokalen oder entfernt angeordneten Prozessorkern 202) durch eine Wiederholungsantwort gemeldet. Der Anforderer kann anschließend gegebenenfalls die fehlgeschlagene Speicherzugriffsanforderung wiederholen.
  • Während eine RC-Maschine 231 eine Anforderung zum lokalen Speicherzugriff verarbeitet, weist die RC-Maschine 231 einen Status „Ausgelastet” auf und ist zum Bedienen einer weiteren Anforderung nicht verfügbar. Während eine RC-Maschine 231 einen Status „Ausgelastet” aufweist, kann die RC-Maschine 231 eine Verzeichnisschreiboperation durchführen, um den entsprechenden Eintrag des Verzeichnisses 308 gegebenenfalls zu aktualisieren. Zusätzlich kann die RC-Maschine 231 eine Cachespeicher-Schreiboperation durchführen, um die entsprechende Ziel-Cachespeicherzeile zu aktualisieren, die in dem Daten-Array 302 gespeichert ist. Die Verzeichnisschreiboperation und die Daten-Array-Schreiboperation können durch den Arbiter 305 während eines beliebigen Intervalls geplant werden, in dem die Zuteilungs-Pipeline 306 nicht bereits sonstige Anforderungen gemäß der festen Planung von Verzeichnisleseoperationen und Daten-Array-Leseoperationen verarbeitet. Wenn alle Operationen für die jeweilige Anforderung zum lokalen Speicherzugriff abgeschlossen worden sind, kehrt die RC-Maschine 312 zu einem Status „Nicht ausgelastet” zurück und ist somit verfügbar, zum Bedienen einer weiteren Anforderung zugeteilt zu werden.
  • Es wird nun auf 4 Bezug genommen, in der ein ausführlicheres Blockschaubild einer beispielhaften Ausführungsform des Daten-Arrays 302 und des Verzeichnisses 308 und eines L2-Cachespeichers 230 dargestellt wird. (Das Daten-Array des L3-Cachespeichers 232 kann in ähnlicher Weise implementiert werden.) Bei der dargestellten Ausführungsform weist das Daten-Array eine satzassoziative Organisation auf und beinhaltet dementsprechend mehrere Wege 400a bis 440n. Jeder Weg 400 beinhaltet mehrere Einträge 402, die bei der dargestellten Ausführungsform jeweils eine vorübergehende Speicherung für bis zu einen vollständigen Speicherblock an Daten bereitstellt, z. B. 128 Byte. Jede Cachespeicherzeile oder jeder Speicherblock an Daten wird logisch aus mehreren Untereinheiten 404 (in diesem Beispiel vier Untereinheiten von jeweils 32 Byte) ausgebildet, die in der Größe zum Beispiel dem kleinsten zulässigen Zugriff auf die Systemspeicher 108a bis 108d entsprechen können. Bei einigen Ausführungsformen sind die Untereinheiten 404 einzeln zugreifbar und können in dem Daten-Array 302 zwischengespeichert werden.
  • Wie bei herkömmlichen satzassoziativen Cachespeichern werden Speicherpositionen in den Systemspeichern 108 bestimmten Kongruenzklassen innerhalb der Daten-Arrays 302 mithilfe vorgegebener Index-Bits innerhalb der (realen) Systemspeicheradressen zugeordnet. Die jeweiligen Cachespeicherzeilen, die innerhalb des Daten-Arrays 302 gespeichert sind, werden in dem Cachespeicherverzeichnis 302 verzeichnet, das einen Verzeichniseintrag 410 für jede Cachespeicherzeile in dem Daten-Array 302 enthält. Wie Fachleuten ersichtlich ist, weist jeder Verzeichniseintrag 410 in dem Verzeichnis 308 zumindest ein Kennungsfeld 412, das die jeweilige Cachespeicherzeile, die in dem entsprechenden Eintrag 402 des Daten-Arrays 302 gespeichert ist, unter Verwendung eines Kennungsabschnitts der entsprechenden realen Adresse kennzeichnet, ein Statusfeld 414, das den Kohärenzstatus der Cachespeicherzeile angibt (z. B. gemäß dem bestens bekannten MESI-Kohärenzprotokoll oder einer Variante davon) und ein Ersetzungsreihenfolgefeld 416 auf.
  • Das Ersetzungsreihenfolgefeld 416 beinhaltet ein Chronologiefeld 418, das eine relative Ersetzungsreihenfolge für die Cachespeicherzeile im Hinblick auf andere Cachespeicherzeilen in derselben Kongruenzklasse angibt. Darüber hinaus beinhaltet das Ersetzungsreihenfolgefeld 420 bei einigen (jedoch nicht bei allen) Ausführungsformen des Weiteren ein Übergangs-(transient, T-)Feld 420, das, falls es festgelegt ist, angibt, dass die zugehörige Cachespeicherzeile das Ziel einer Freigabeanforderung des angeschlossenen Prozessorkerns 202 war und dementsprechend bei der Freigabe aus der Cachespeicherhierarchie bevorzugt werden sollte (z. B. als am längsten ungenutztes Element oder eine sonstige bevorzugte Ersetzungsreihenfolgeposition).
  • Es wird nun auf 5 Bezug genommen, in der ein Schaubild eines beispielhaften Datenflusses eines Prozesses veranschaulicht wird, durch den ein Compiler einen Quellcode mit einem expliziten Freigabebefehl kompiliert, der eine Ziel-Cachespeicherzeile identifiziert, die bevorzugt aus einer Cachespeicherhierarchie freigegeben werden soll. In dem dargestellten Prozess wird ein Programmcode wie zum Beispiel ein Compiler 500, der auf einem physischen, computerlesbaren Speichermedium 502 wie zum Beispiel einem Festplatten- oder Hauptspeicherbereich gespeichert ist, in einem Datenverarbeitungssystem (z. B. dem Datenverarbeitungssystem 100 von 1) so ausgeführt, dass er einen vorab verarbeiteten Code wie zum Beispiel den Quellcode 502 oder einen Zwischencode empfängt, den vorverarbeiteten Code kompiliert und einen nachverarbeiteten Code wie zum Beispiel einen Objektcode 506 ausgibt.
  • Wie angegeben, beinhaltet der Quellcode 504 einen Initialisierungsbefehl 510, der eine Schleifenvariable x einer Verarbeitungsschleife 512 auf einen Anfangswert (z. B. 0) initialisiert. In der Verarbeitungsschleife 512 beinhaltet der Quellcode 504 einen LOAD-Befehl 514, der einen Datensatz (z. B. ein erstes Array oder eine erste Datenbank) angibt, der aus einer Speicherhierarchie geladen werden soll, und einen oder mehrere Befehle, die durch einen PROCESS-Befehl 516 dargestellt werden, die eine Verarbeitung angeben, die an dem Datensatz durchgeführt werden soll. Die Verarbeitungsschleife 512 beinhaltet des Weiteren einen Befehl 518, der die Schleifenvariable inkrementiert, und einen BRANCH-Befehl 520, der eine Verarbeitungsschleife 512 veranlasst zu iterieren, wenn die Schleifenvariable einen Endwert (dargestellt durch eine Variable y) nicht erreicht hat.
  • Es wird nun auf 6 Bezug genommen, in der ein Übersichtsplan eines logischen Ablaufs eines beispielhaften Prozesses dargestellt wird, durch den ein Programmcode wie zum Beispiel der Compiler 500 einen vorverarbeiteten Code wie zum Beispiel den Quellcode 504 verarbeitet, um einen nachverarbeiteten Code wie zum Beispiel den Objektcode 506 zu erzielen. Wie bei den anderen hierin dargestellten logischen Ablaufplänen werden die veranschaulichten Operationen in einer logischen statt in einer chronologischen Reihenfolge dargestellt. Dementsprechend können in vielen Fällen bestimmte der dargestellten Operationen gleichzeitig und/oder in einer anderen Reihenfolge als der veranschaulichten durchgeführt werden. Der veranschaulichte Prozess kann zum Beispiel als Teil der Codeoptimierungsoperationen des Compilers 500 durchgeführt werden.
  • Wie dargestellt, beginnt der Prozess bei Block 600 und geht dann zu den Blöcken 602 bis 604 über, die den Compiler 500 darstellen, der einen Abschnitt des Quellcodes 504 durchsucht, um eine Beendigung einer Verarbeitung eines Datensatzes zu erkennen. In dem beispielhaften Quellcode 504 kann das Ende einer Verarbeitung eines Datensatzes beispielsweise erkannt werden, wenn das Ende einer Iteration der Verarbeitungsschleife 512 erreicht ist. Wenn es dem Compiler 500 nicht gelingt, das Ende einer Verarbeitung eines Datensatzes in dem aktuellen Abschnitt zu erkennen, geht der Prozess zu Block 612 über, der den Compiler 500 veranschaulicht, der ermittelt, ob sein Suchlauf durch den Quellcode 504 abgeschlossen ist. In diesem Fall endet der in 6 veranschaulichte Prozess bei Block 614. Wenn der Compiler 500 dagegen bei Block 612 ermittelt, dass sein Suchlauf durch den Quellcode 504 nicht abgeschlossen ist, kehrt der Prozess zu Block 602 zurück, der bereits beschrieben worden ist.
  • Nun erneut auf Block 604 Bezug nehmend, fügt der Compiler 500 in Reaktion darauf, dass der Compiler 500 das Ende einer Verarbeitung eines Datensatzes erkennt, einen Freigabebefehl (der hierein als Daten-Cachespeicherblock-Freigabe (Data Cache Block Deallocate (DCDB)) bezeichnet wird) für jede Cachespeicherzeile in dem Datensatz, deren Verarbeitung abgeschlossen ist, in den Objektcode 506 ein. Im Anschluss an Block 610 geht der Prozess zu Block 612 über, der bereits beschrieben worden ist.
  • Nun erneut auf 5 Bezug nehmend, beinhaltet der beispielhafte Abschnitt des Objektcodes 506, der in 5 dargestellt wird, eine erste Ladesequenz 530 aus mehreren Lade(LD)-Befehlen, die durch den Compiler 500 erzeugt werden, um die erste Iteration des LOAD-Befehls 514 zu implementieren. Wie angegeben, lädt die Ladesequenz 530 die n + 1 Elemente des Datensatzes Dataset_0 aus den Systemspeichern 108 in die Register und die Cachespeicherhierarchie eines Prozessorkerns 202. Im Anschluss an die Ladesequenz 530 hat der Compiler 532 in den Objektcode 506 einen oder mehrere Befehle 532 aufgenommen, die die Verarbeitung implementieren, die durch den PROCESS-Befehl 516 dargestellt wird. Wie unter Bezugnahme auf Block 610 beschrieben wird, fügt der Compiler 500 danach in den Objektcode 506 eine Freigabesequenz 534 ein, die bevorzugt einen Freigabe-(z. B. DCBD-)Befehl für jedes der n + 1 Elemente des Dataset_0 beinhaltet. Danach fügt der Compiler 500 eine zweite Ladesequenz 536 ein, die mehrere LD-Befehle enthält, um die nächste Iteration des LOAD-Befehls 514 zu implementieren, indem die n + 1 Elemente des Dataset_1 aus den Systemspeichern 108 in die Register und die Cachespeicherhierarchie eines Prozessorkerns 202 geladen werden.
  • Es ist zu beachten, dass Freigabebefehle abgesehen davon, dass sie automatisch durch einen Compiler erzeugt werden, wie in 5 dargestellt, alternativ oder zusätzlich gezielt durch einen menschlichen Codierer oder durch einen automatischen Codegenerator codiert werden können. Des Weiteren ist zu beachten, dass, falls ein Freigabebefehl fälschlicherweise vor dem letzten Verweis auf die Ziel-Cachespeicherzeile des Freigabebefehls in den Objektcode 506 eingefügt wird, (wenn z. B. der Compiler 500 beim Verarbeiten des Datenelements [1, 0] vor einem Befehl, der das Datenelement [0, n] referenziert, einen DCBD-Befehl einfügt, der auf das Datenelement [0, n] abzielt), die vorzeitige Aufnahme eines Freigabebefehls einen Verarbeitungsfehler verursacht und nicht unbedingt die Leistungsfähigkeit des Befehls, der anschließend das Datenelement referenziert, durch eine zunehmende Zugriffslatenzzeit verringert. Die Zugriffslatenzzeit wird nicht unbedingt verlängert, da der Freigabebefehl keine Freigabe der Ziel-Cachespeicherzeile erzwingt, sondern eine Freigabe lediglich wahrscheinlicher werden lässt. Infolgedessen kann abhängig von Adresszugriffmustern und Trefferraten eine Ziel-Cachespeicherzeile eines Freigabebefehls für viele Cachespeicherzugriffe im Anschluss an eine Ausführung des Freigabebefehls in dem Cachespeicher beibehalten werden, wodurch einem nachfolgenden Befehl ermöglicht wird, potenziell auf die Ziel-Cachespeicherzeile zuzugreifen, ohne die Latenzzeitabwertung hervorzurufen, die mit einem erneuten Abrufen der Ziel-Cachespeicherzeile aus dem Systemspeicher verbunden ist.
  • Es wird nun Bezug auf 7 genommen, in der ein Übersichtsplan eines logischen Ablaufs eines beispielhaften Verfahrens, durch das ein Prozessorkern 202 einen Freigabebefehl ausführt, gemäß einer Ausführungsform veranschaulicht wird. Der Prozess beginnt bei Block 700 und geht dann zu Block 702 über, der die ISU 201 eines Prozessorkerns 202 veranschaulicht, die eine nächste Befehlsgruppe zur Ausführung aus der Speicherhierarchie abruft. Die ISU 201 decodiert die Befehle in der Befehlsgruppe und ermittelt, wie in Block 704 dargestellt, ob es sich bei einem der Befehle in der Befehlsgruppe um einen Freigabebefehl (z. B. DCBD) handelt. Bei anderen Befehlen als Freigabebefehlen führt die ISU 201 möglicherweise eine herkömmliche Verarbeitung durch, wie in Block 706 dargestellt. Die ISU 201 teilt den/die Freigabebefehl(e) in der Befehlsgruppe der LSU 205 zu (Block 710), die jeden Freigabebefehl ausführt, um die Zieladresse der Ziel-Cachespeicherzeile des Freigabebefehls zu berechnen (Block 712). Nach einer möglichen Umsetzung der Zieladresse (z. B. einer Umsetzung von einer effektiven in ein reale Adresse), die durch die LSU 205 berechnet wird, sendet der Prozessorkern 202 eine Freigabeanforderung, die dem Freigabebefehl entspricht, an seinen angeschlossenen L2-Cachespeicher 230 (Block 714), unabhängig davon, ob die Zieladresse einen Treffer in dem L1-Cachespeicher 204 erzielt. Wie oben angemerkt, wird die Freigabeanforderung, die bevorzugt einen Ladetransaktionstyp und die berechnete Zieladresse angibt, bevorzugt über die Lade-Pipeline 325 an den L2-Cachespeicher 230 übertragen. Eine Folge des Implementierens der Freigabeanforderung als Ladeanforderung statt als Speicheranforderung besteht darin, dass sich die Freigabeanforderung auf das Zwischenspeichern der Ziel-Cachespeicherzeile lediglich in der Cachespeicherhierarchie des jeweiligen Prozessorkerns 202 auswirkt, der den entsprechenden Freigabebefehl ausführt. Infolgedessen wird das Verarbeiten der Freigabeanforderung nicht durch Sichtbarmachen der Freigabeanforderung für alle Cachespeicherhierarchien im gesamten Datenverarbeitungssystem 100 oder durch das Vorhandensein von Sperroperationen (z. B. SYNCs) verzögert, die bei einem schwach geordneten Speichersystem eingesetzt werden, um speichermodifizierende Operationen über alle Cachespeicherhierarchien und Systemspeicher 108 hinweg zu synchronisieren. Im Anschluss an Block 714 endet der in 7 dargestellte Prozess bei Block 716.
  • Es wird nun auf 8 Bezug genommen, in der ein Übersichtsplan eines logischen Ablaufs eines beispielhaften Verfahrens, durch das ein Cachespeicher einer untergeordneten Ebene eine Freigabeanforderung verarbeitet, gemäß einer Ausführungsform dargestellt wird. Der veranschaulichte Prozess beginnt bei Block 800 und geht dann zu Block 802 über, der einen Cachespeicher einer untergeordneten Ebene wie zum Beispiel einen L2-Cachespeicher 230 veranschaulicht, der eine Freigabeanforderung von dem angeschlossenen Prozessorkern 202 empfängt, bevorzugt über eine Lade-Pipeline 325. Wie oben unter Bezugnahme auf 3 angemerkt, wird die Freigabeanforderung in die Zuteilungs-Pipeline 306 geladen, die unter Verwendung der in der Freigabeanforderung angegebenen Zieladresse auf das Verzeichnis 308 zugreift.
  • Wenn die Zieladresse keinen Treffer in dem Verzeichnis 308 erzielt (d. h. einen Fehltreffer erzielt), wird keine weitere Verarbeitung der Freigabeanforderung in dem Cachespeicher der untergeordneten Ebene durchgeführt. Dementsprechend wird bei einer Ausführungsform die Freigabeanforderung einfach aus der Zuteilungs-Pipeline 306 gelöscht, und der Prozess endet bei Block 820. Bei einer alternativen Ausführungsform leitet die Zuteilungs-Pipeline 306 die Freigabeanforderung an den Cachespeicher der nächstuntergeordneten Ebene (z. B. den L3-Cachespeicher 232) in der Cachespeicherhierarchie weiter, wie in dem optionalen Block 816 dargestellt. Bei Ausführungsformen, die den Block 816 beinhalten, kann die Freigabeanforderung in dem Cachespeicher der nächstuntergeordneten Ebene auf dieselbe Weise verarbeitet werden, wie in 8 dargestellt. Bei zumindest einigen Ausführungsformen wird eine differenziertere Cachespeicherverwaltung implementiert, indem in die Freigabeanforderung ein Hierarchieebenenanzeiger aufgenommen wird, der angibt, wie weit nach unten in der Cachespeicherhierarchie die Freigabeanforderung übertragen werden muss. Auf diese Weise kann zum Beispiel eine Freigabeanforderung angeben, dass die Freigabeanforderung in den L2- und L3-Cachespeichern verarbeitet werden soll, nicht jedoch in dem L4-Cachespeicher, der sich auf einer noch weiter untergeordneten Ebene befindet. Im Anschluss an Block 816 endet der in 8 dargestellte Prozess bei Block 820.
  • Zu Block 810 zurückkehrend, aktualisiert die Zuteilungs-Pipeline 306 in Reaktion auf die Zieladresse der Freigabeanforderung, die einen Treffer in dem Verzeichnis 308 erzielt, die für die Ziel-Cachespeicherzeile verzeichnete Ersetzungsreihenfolge, um die Ziel-Cachespeicherzeile herabzustufen, wodurch die Wahrscheinlichkeit steigt, dass die Ziel-Cachespeicherzeile als Auswahl-Cachespeicherzeile ausgewählt wird, die bei einem nachfolgenden Fehltreffer einer Speicherzug riffsanforderung, die eine Zuordnung zu dieser Kongruenzklasse erstellt, aus ihrer Kongruenzklasse bereinigt werden soll (Block 812). Wenn zum Beispiel der L2-Cachespeicher 230 eine LRU- oder Pseudo-LRU-Ersetzungsstrategie implementiert, kann die Zuteilungs-Pipeline 306 das Chronologiefeld 418 des Ersetzungsreihenfolgefeldes 416 des Verzeichniseintrags 410, der der Ziel-Cachespeicherzeile zugehörig ist, auf LRU (oder eine andere vorgegebene Chronologieposition, die mit größerer Wahrscheinlichkeit bereinigt wird, wie beispielsweise LRU+1) aktualisieren. Wenn der L2-Cachespeicher 230 eine andere Ersetzungsstrategie implementiert, aktualisiert die Zuteilungs-Pipeline 306 das Ersetzungsreihenfolgefeld 416 dementsprechend, um die Wahrscheinlichkeit zu erhöhen, dass die Ziel-Cachespeicherzeile als Auswahl-Cachespeicherzeile ausgewählt wird, die aus ihrer Kongruenzklasse bereinigt werden soll. Während sie die Ersetzungsreihenfolge für die Ziel-Cachespeicherzeile aktualisiert, führt die Zuteilungs-Pipeline 306 bevorzugt keine Modifizierung des Kennungsfeldes 412 oder des Statusfeldes 414 des Verzeichniseintrags 410 durch, der der Ziel-Cachespeicherzeile zugehörig ist, greift nicht auf die Ziel-Cachespeicherzeile in dem Daten-Array 302 zu und teilt keine RC-Maschine 231 zum Verarbeiten der Freigabeanforderung zu. Dadurch, dass die Freigabeanforderung im Hinblick auf das Verzeichnis 308 vollständig in der Zuteilungs-Pipeline 306 bedient wird, kann eine Sequenz von Freigabeanforderungen wie zum Beispiel eine Freigabesequenz 534 von 5 mit einer maximalen Zuteilungsrate der Zuteilungs-Pipeline 306 bedient werden.
  • Wie in dem optionalen Block 814 dargestellt, legt die Zuteilungs-Pipeline 306 dadurch, dass sie die Aktualisierung auf den Verzeichniseintrag 410 durchführt, der der Ziel-Cachespeicherzeile der Freigabeanforderung zugehörig ist, auch das T(Übergangs)-Feld 420 in dem Verzeichniseintrag 410 fest, der der Ziel-Cachespeicherzeile zugehörig ist. Durch Festlegen des T-Feldes 420 kann der Umstand, dass die zugehörige Cachespeicherzeile das Ziel einer expliziten Freigabeanforderung des Prozessorkerns 202 war, beibehalten werden, während die Ziel-Cachespeicherzeile die Cachespeicherhierarchie durchläuft. Wenn die Ziel-Cachespeicherzeile schließlich bereinigt und zu einem Cachespeicher einer untergeordneten Ebene (z. B. L3) gesendet wird, kann der Cachespeicher der untergeordneten Ebene folglich die Ziel-Cachespeicherzeilen unverzüglich an einer ausgewählten Position in der Ersetzungsreihenfolge platzieren, die die Wahrscheinlichkeit einer Bereinigung der Ziel-Cachespeicherzeile erhöht (z. B. LRU oder LRU + 1 statt MRU).
  • Zusätzlich zu Block 812 und, falls er implementiert ist, dem optionalen Block 814, kann der Prozess, der im Fall eines Cachespeichertreffers durchgeführt wird, optional auch ein Senden der Freigabeanforderung an eine oder mehrere Cachespeicherebenen beinhalten, wie in Block 816 dargestellt und wie oben beschrieben. Der in 8 dargestellte Prozess endet danach bei Block 820.
  • Es wird nun auf 9 Bezug genommen, in der ein Übersichtsplan eines logischen Ablaufs eines beispielhaften Verfahrens, durch das ein Cachespeicher einer untergeordneten Ebene eine Speicherzugriffsanforderung eines angeschlossenen Prozessorkerns 202 verarbeitet, gemäß einer Ausführungsform veranschaulicht wird. Der in 9 dargestellte Prozess beginnt bei Block 900 und geht zu Block 902 über, der einen Cachespeicher einer untergeordneten Ebene wie zum Beispiel einen L2-Cachespeicher 230 veranschaulicht, der eine Speicherzugriffsanforderung (z. B. eine Ladeanforderung oder eine Speicheranforderung) von einem angeschlossenen Prozessorkern 202 empfängt. Wie oben beschrieben, wird die Anforderung in der Zuteilungs-Pipeline 306 verarbeitet, die eine Suche in dem Verzeichnis 308 durchführt, um auf Verzeichnisdaten der Ziel-Cachespeicherzeile zuzugreifen, eine RC-Maschine 231 zuteilt, um die Speicherzugriffsanforderung zu bedienen, und die Speicherzugriffsanforderung und die Verzeichnisdaten für die Ziel-Cachespeicherzeile an die zugeteilte RC-Maschine 231 zur Verarbeitung weitergibt.
  • Bei Block 904 ermittelt die RC-Maschine 231 anhand der Verzeichnisdaten der Ziel-Cachespeicherzeile, ob die Zieladresse der Speicherzugriffsanforderung in dem Verzeichnis 308 einen Treffer in einem Kohärenzstatus erzielt hat, der es ermöglicht, dass die Speicherzugriffsanforderung bedient wird, ohne dass eine Operation in der Verbindungsstruktur ausgegeben wird. Wie zu erkennen ist, kann der Cachespeicher der untergeordneten Ebene im Allgemeinen eine den Speicher nicht modifizierende Anforderung erfüllen, ohne eine Verbindungsoperation auszugeben, wenn das Statusfeld 414 einen beliebigen Kohärenzstatus „Daten gültig” für die Ziel-Cachespeicherzeile angibt. Der Cachespeicher der untergeordneten Ebene kann im Allgemeinen eine den Speicher modifizierende Anforderung nicht erfüllen, ohne eine Verbindungsoperation auszugeben, sofern nicht ein Statusfeld 414 einen Kohärenzstatus „Modifiziert” oder „Exklusiv” (oder Ähnliches) für die Ziel-Cachespeicherzeile angibt.
  • In Reaktion auf eine bestätigende Feststellung in Block 904 geht der Prozess bei einigen Ausführungsformen zu Block 910 über, der die RC-Maschine 231 darstellt, die die Schritte durchführt, die erforderlich sind, um die Speicherzugriffsanforderung zu bedienen, ohne eine Operation in der Verbindungsstruktur auszugeben (z. B. eine Verzeichnisschreibanforderung auszugeben und/oder dem Prozessorkern 202 Ladedaten bereitzustellen oder Speicherdaten in das Daten-Array 302 zu schreiben). Bei Ausführungsformen, die das T-Feld 420 implementieren, ermittelt die RC-Maschine 231 bei Block 906 zusätzlich, ob die von der Zuteilungs-Pipeline 306 empfangenen Verzeichnisdaten angeben, dass das T-Feld 420 der Ziel-Cachespeicherzeile so festgelegt ist, dass die Ziel-Cachespeicherzeile als Ziel einer vorherigen Freigabeanforderung des angeschlossenen Prozessorkerns 202 identifiziert wird. Anderenfalls geht der Prozess zu Block 910 über, der bereits beschrieben worden ist. Wenn die RC-Maschine 231 dagegen bei Block 906 feststellt, dass das T-Feld 420 festgelegt ist, schließt die RC-Maschine 231 in eine Verzeichnisschreibanforderung eine Anforderung ein, das Ersetzungsreihenfolgefeld 416 der Ziel-Cachespeicherzeile der Speicherzugriffsanforderung gemäß einer erwünschten Strategie festzulegen (Block 908). Beispielsweise kann die RC-Maschine 231 bei verschiedenen Ausführungsformen den Zielspeicherblock auf eine vorgegebene Ersetzungsreihenfolgeposition (z. B. LRU) festlegen, kann die Ersetzungsreihenfolgeposition um eins inkrementieren (z. B. den Zielspeicherblock von LRU auf LRU + 1 aktualisieren), oder kann das T-Feld 420 zurücksetzen und die Ersetzungsreihenfolgeposition auf „Zuletzt verwendet” (Most Recently Used, MRU) festlegen. Die Strategie zum Verarbeiten eines Treffers in einer Cachespeicherzeile, wenn ein T-Feld 420 festgelegt ist, wird bevorzugt so aus diesen Ausführungsformen ausgewählt, dass sie den erwarteten Datenzugriffsmustern der aktuellen Arbeitslast entspricht. Der Prozess geht von Block 908 zu Block 910 über, der bereits beschrieben worden ist. Im Anschluss an Block 910 endet der in 9 veranschaulichte Prozess bei Block 924.
  • Zu Block 904 zurückkehrend, geht der Prozess in Reaktion darauf, dass die RC-Maschine 231 feststellt, dass die Speicherzugriffsanforderung nicht bedient werden kann, ohne dass eine Verbindungsoperation ausgegeben wird, zu Block 916 über. Block 916 veranschaulicht die RC-Maschine 231, die eine geeignete Verbindungsoperation in der Verbindungsstruktur ausgibt, um zu ermöglichen, dass die Speicherzugriffsanforderung bedient wird. Im Allgemeinen beinhaltet die Verbindungsoperation zumindest einen Transaktionstyp und eine Zieladresse. Im Anschluss an Block 916 geht der Prozess zu Block 918 über, der die RC-Maschine 231 darstellt, die eine kombinierte Antwort von der Kohärenzverwaltungslogik 210 (2) empfängt. Wie zuvor erörtert, wird die kombinierte Antwort durch die Antwortlogik 210 aus Teilantworten von Snoopern innerhalb des Datenverarbeitungssystems 100 erzeugt und stellt eine systemweite Antwort auf die Speicherzugriffsanforderung dar.
  • Der Prozess geht zu Block 920 über, der die RC-Maschine 231 darstellt, die ermittelt, ob die kombinierte Antwort der Verbindungsoperation „Erfolg” oder „Wiederholung” angibt. Wenn die kombinierte Antwort „Wiederholung” (dass die Anforderung gegenwärtig nicht erfüllt werden kann und wiederholt werden muss) angibt, kehrt der Prozess zu Block 916 zurück, der bereits beschrieben worden ist. Wenn die kombinierte Antwort „Erfolg” (dass die Anforderung gegenwärtig erfüllt werden kann) angibt, kehrt der Prozess zu Block 922 zurück, der die RC-Maschine 231 veranschaulicht, die Operationen durchführt, um die Speicherzugriffsanforderung zu bedienen, wie durch die kombinierte Antwort angegeben. Wenn es sich beispielsweise bei der Anforderung der Verbindungsoperation um eine Leseoperation handelte, veranlasst die RC-Maschine 231, dass die angeforderten Daten, die von der Verbindungsstruktur empfangen wurden, dem Prozessorkern 202 bereitgestellt werden, dass die Lesedaten in dem Daten-Array 302 installiert werden und dass eine Aktualisierung auf das Verzeichnis 308 durchgeführt wird. Wenn es sich demgegenüber bei der Verbindungsoperation um eine Speicheroperation handelte, veranlasst die RC-Maschine 231, dass das Cachespeicher-Array 302 mit den Speicherdaten aktualisiert wird, die durch die anfordernde Verarbeitungseinheit 202 bereitgestellt werden, und dass das Verzeichnis 308 aktualisiert wird.
  • Wenn sich die Ziel-Cachespeicherzeile vor der Verbindungsoperation nicht in dem Daten-Array 302 befand, veranlasst die RC-Maschine 231 in jedem Fall, dass eine CO-Maschine 310 zugeteilt wird, um eine Auswahl-Cachespeicherzeile und zugehörige Verzeichnisdaten aus der Kongruenzklasse zu bereinigen, der die Zieladresse der Speicherzugriffsanforderung zugeordnet wird. Wenn es sich bei dem Cachespeicher der untergeordneten Ebene um einen L2-Cachespeicher 230 handelt, schreibt die CO-Maschine 310 die Auswahl-Cachespeicherzeile bevorzugt über eine Castout-Operation in einen der L3-Cachespeicher 232. Bei Ausführungsformen, bei denen die T-Felder 420 innerhalb der Verzeichniseinträge 410 implementiert sind, beinhalten die Verzeichnisdaten, die bei der Castout-Operation zu dem L3-Cachespeicher 232 übertragen werden, das Festlegen des T-Feldes 420 (d. h. eine Kennzeichnung darüber, ob die Cachespeicherzeile das Ziel einer vorherigen Freigabeanforderung des angeschlossenen Prozessorkerns 202 war). Im Anschluss an Block 922 endet der in 9 dargestellte beispielhafte Prozess bei Block 924.
  • Es wird nun auf 10 Bezug genommen, in der ein Übersichtsplan eines logischen Ablaufs eines beispielhaften Prozesses, durch den ein Cachespeicher einer untergeordneten Ebene, von dem im Folgenden angenommen wird, dass es sich um einen L3-Cachespeicher 232 handelt, eine Castout-Operation eines Cachespeichers einer übergeordneten Ebene verarbeitet, von dem im Folgenden angenommen wird, dass es sich um einen L2-Cachespeicher 230 handelt, gemäß einer Ausführungsform dargestellt wird. Der Prozess beginnt bei Block 1000 von 10 und geht dann zu Block 1002 über, bei dem der Prozess iteriert, bis der L3-Cachespeicher 232 eine Cast-in-Anforderung 264 von dem zugehörigen L2-Cachespeicher 230 empfängt. In Reaktion auf ein Empfangen einer Cast-in-Anforderung 264 schreibt der L3-Cachespeicher 232 die Verzeichnisdaten und die Daten, falls vorhanden, die in der Cast-in-Anforderung 264 empfangen wurden, in das Verzeichnis bzw. in das Daten-Array des L3-Cachespeichers 232 (Block 1004). Abhängig von dem Kohärenzprotokoll, das in dem Datenverarbeitungssystem 100 implementiert ist, kann die dem Castout unterzogene Cachespeicherzeile einem anderen Kohärenzstatus in dem L3-Cachespeicher 232 zugehörig sein als die dem Castout unterzogene Cachespeicherzeile aufwies, als sie aus dem L2-Cachespeicher 230 bereinigt wurde.
  • Bei Ausführungsformen, bei denen das T-Feld 420 nicht implementiert wird, legt der L3-Cachespeicher 232 das Ersetzungsreihenfolgefeld 416 in dem L3-Cachespeicherverzeichnis für die Cachespeicherzeile auf MRU fest, wie in Block 1008 dargestellt. Bei alternativen Ausführungsformen, bei denen das T-Feld 420 implementiert wird, prüft der L3-Cachespeicher 232 außerdem, ob das T-Feld 420, das der dem Castout unterzogenen Cachespeicherzeile zugehörig ist, in den Verzeichnisdaten festgelegt ist, die in der Cast-in-Anforderung 264 bereitgestellt werden (Block 1006). Anderenfalls geht der Prozess zu Block 1008 über, wie bereits beschrieben worden ist. Wenn der L3-Cachespeicher 232 dagegen in Block 1006 feststellt, dass das T-Feld 420, das der dem Castout unterzogenen Cachespeicherzeile zugehörig ist, festgelegt ist, legt der L3-Cachespeicher 232 das Ersetzungsreihenfolgefeld 416 für die Cachespeicherzeile auf eine bestimmte Ersetzungsreihenfolgeposition fest, durch die die Wahrscheinlichkeit steigt, dass die Cachespeicherzeile in Reaktion auf eine nachfolgende Cast-in-Anforderung 264 aus dem L3-Cachespeicher 232 bereinigt wird (z. B. LRU oder LRU + 1), wie in Block 1010 dargestellt. Entweder im Anschluss an Block 1008 oder an Block 1010 endet der in 10 dargestellte Prozess bei Block 1012.
  • Bei zumindest einer Ausführungsform beinhaltet ein Datenverarbeitungssystem einen Prozessorkern, der durch Cachespeicher übergeordneter und untergeordneter Ebenen unterstützt wird. In Reaktion auf ein Ausführen eines Freigabebefehls in dem Prozessorkern wird eine Freigabeanforderung von dem Prozessorkern an den Cachespeicher der untergeordneten Ebene gesendet, wobei die Freigabeanforderung eine Zieladresse angibt, die einer Ziel-Cachespeicherzeile zugehörig ist. In Reaktion auf ein Empfangen der Freigabeanforderung in dem Cachespeicher der untergeordneten Ebene wird ermittelt, ob die Zieladresse einen Treffer in dem Cachespeicher der untergeordneten Ebene erzielt. In Reaktion auf ein Ermitteln, dass die Zieladresse einen Treffer in dem Cachespeicher der untergeordneten Ebene erzielt, wird die Ziel-Cachespeicherzeile in einem Daten-Array des Cachespeichers der untergeordneten Ebene beibehalten, und ein Ersetzungsreihenfolgefeld in einem Verzeichnis des Cachespeichers der untergeordneten Ebene wird so aktualisiert, dass die Ziel-Cachespeicherzeile mit größerer Wahrscheinlichkeit in Reaktion auf einen nachfolgenden Cachespeicher-Fehltreffer aus dem Cachespeicher der untergeordneten Ebene bereinigt wird.
  • Bei zumindest einer Ausführungsform schreibt der Cachespeicher der untergeordneten Ebene in Reaktion auf einen nachfolgenden Cachespeicher-Fehltreffer bei der Kongruenzklasse, die die Ziel-Cachespeicherzeile beinhaltet, die Ziel-Cachespeicherzeile durch eine Castout-Operation mit einer Kennzeichnung, dass die Ziel-Cachespeicherzeile ein Ziel einer vorherigen Freigabeanforderung des Prozessorkerns war, in einen Cachespeicher einer noch weiter untergeordneten Ebene. In Reaktion auf die Kennzeichnung wird das Ersetzungsreihenfolgefeld in einem Verzeichnis des Cachespeichers der noch weiter untergeordneten Ebene aktualisiert, sodass die Ziel-Cachespeicherzeile mit größerer Wahrscheinlichkeit aus dem Cachespeicher der noch weiter untergeordneten Ebene bereinigt wird.
  • Es sind zwar eine oder mehrere Ausführungsformen besonders dargestellt und beschrieben worden, es versteht sich jedoch für Fachleute, dass verschiedene Änderungen, in der Form und den Einzelheiten darin vorgenommen werden können, ohne vom Gedanken und Umfang der Erfindung abzuweichen. Wenngleich beispielsweise Aspekte der vorliegenden Erfindung im Hinblick auf Hardware eines Datenverarbeitungssystems beschrieben worden sind, versteht es sich, dass eine oder mehrere Ausführungsformen der vorliegenden Erfindung alternativ als Programmprodukt zur Verwendung mit einem Datenverarbeitungssystem implementiert werden können. Solch(e) (ein) Programmprodukt(e) beinhaltet/beinhalten ein(e) physische(s), computerlesbare(s) Speichereinheit/-medium, die/das einen Programmcode speichert, der die Funktionen der vorliegenden Erfindung steuert. Die/das computerlesbare Speichereinheit/-medium kann zum Beispiel als CD-ROM, DVD, Diskette oder Festplatte, Systemspeicher, Flash-Speicher usw. implementiert werden.
  • Beispielsweise kann das Programmprodukt Daten und/oder Befehle beinhalten, die, wenn sie in einem Datenverarbeitungssystem ausgeführt oder auf andere Weise verarbeitet werden, eine logisch, strukturell oder auf andere Weise funktional gleichwertige Darstellung (darunter ein Simulationsmodell) von Hardware-Komponenten, Schaltungen, Einheiten oder Systemen erzeugen, die hierin offenbart werden. Derartige Daten und/oder Befehle können Konstruktionsentitäten in einer Hardware-Beschreibungssprache (HDL) oder sonstige Datenstrukturen, die niedrigeren HDL-Konstruktionssprachen wie zum Beispiel Verilog und VHDL und/oder höheren Konstruktionssprachen wie C bzw. C++ entsprechen und/oder mit diesen kompatibel sind, beinhalten. Des Weiteren können die Daten und/oder Befehle auch ein Datenformat, das für den Austausch von Layout-Daten von integrierten Schaltungen verwendet wird, und/oder ein symbolisches Datenformat (z. B. Daten, die in GDSII (GDS2), GL1, OASIS, Map-Dateien oder einem beliebigen anderen geeigneten Format zum Speichern derartiger Konstruktionsdatenstrukturen gespeichert sind) einsetzen.

Claims (15)

  1. Verfahren zum Verarbeiten von Daten in einem Datenverarbeitungssystem, das einen Prozessorkern beinhaltet, der durch Cachespeicher übergeordneter und untergeordneter Ebenen unterstützt wird, wobei das Verfahren aufweist: in Reaktion auf ein Ausführen eines Freigabebefehls in dem Prozessorkern Senden einer Freigabeanforderung von dem Prozessorkern an den Cachespeicher der untergeordneten Ebene, wobei die Freigabeanforderung eine Zieladresse angibt, die einer Ziel-Cachespeicherzeile zugehörig ist; in Reaktion auf ein Empfangen der Freigabeanforderung in dem Cachespeicher der untergeordneten Ebene Ermitteln, ob die Zieladresse einen Treffer in dem Cachespeicher der untergeordneten Ebene erzielt; und in Reaktion auf ein Ermitteln, dass die Zieladresse einen Treffer in dem Cachespeicher der untergeordneten Ebene erzielt, Beibehalten der Ziel-Cachespeicherzeile in einem Daten-Array des Cachespeichers der untergeordneten Ebene und Aktualisieren eines Ersetzungsreihenfolgefeldes in einem Verzeichnis des Cachespeichers der untergeordneten Ebene, sodass die Ziel-Cachespeicherzeile mit größerer Wahrscheinlichkeit in Reaktion auf einen nachfolgenden Cachespeicher-Fehltreffer in einer Kongruenzklasse, die die Ziel-Cachespeicherzeile beinhaltet, aus dem Cachespeicher der untergeordneten Ebene bereinigt wird.
  2. Verfahren nach Anspruch 1, wobei das Aktualisieren des Ersetzungsreihenfolgefeldes beinhaltet, dass die Ziel-Cachespeicherzeile zu der „am längsten ungenutzten” (LRU) gemacht wird.
  3. Verfahren nach Anspruch 1, und das des Weiteren aufweist: anschließend Freigeben der Ziel-Cachespeicherzeile aus dem Cachespeicher der untergeordneten Ebene in Reaktion darauf, dass eine Datenzugriffsanforderung in dem Cachespeicher der untergeordneten Ebene einen Fehltreffer erzielt.
  4. Verfahren nach Anspruch 1, und das des Weiteren aufweist: danach, in Reaktion auf einen Zugriff auf die Ziel-Cachespeicherzeile in dem Cachespeicher der untergeordneten Ebene vor dem Bereinigen der Ziel-Cachespeicherzeile aus dem Cachespeicher der untergeordneten Ebene, Unterlassen eines Aktualisierens des Ersetzungsreihenfolgefeldes.
  5. Verfahren nach Anspruch 1, wobei: der Cachespeicher der untergeordneten Ebene eine Lade- und eine Speicher-Pipeline für Datenzugriffsanforderungen des Prozessorkerns beinhaltet; und ein Senden der Freigabeanforderung ein Senden der Freigabeanforderung an die Lade-Pipeline des Cachespeichers der untergeordneten Ebene beinhaltet.
  6. Verfahren nach Anspruch 1, und das des Weiteren aufweist: Ausführen des Freigabebefehls durch den Prozessorkern bei Abschluss des Verarbeitens eines Datensatzes, der die Ziel-Cachespeicherzeile und eine Vielzahl sonstiger Cachespeicherzeilen beinhaltet, um das Bereinigen des Datensatzes aus dem Cachespeicher der untergeordneten Ebene zu unterstützen.
  7. Verfahren nach Anspruch 1, wobei: der Cachespeicher der untergeordneten Ebene den Inhalt des Cachespeichers der übergeordneten Ebene einschließt; und das Senden ein Senden der Freigabeanforderung an den Cachespeicher der untergeordneten Ebene unabhängig davon aufweist, ob die Zieladresse in dem Cachespeicher der übergeordneten Ebene einen Treffer erzielt.
  8. Verfahren nach Anspruch 1, wobei: der Cachespeicher der untergeordneten Ebene eine Vielzahl von Statusmaschinen beinhaltet, die Datenzugriffsanforderungen des Prozessors bedienen; und das Beibehalten und das Aktualisieren ohne Zuordnen einer der Vielzahl von Statusmaschinen zu der Freigabeanforderung durchgeführt wird.
  9. Verfahren nach Anspruch 1, und das des Weiteren aufweist: in Reaktion auf ein Ermitteln, dass die Zieladresse in dem Cachespeicher der untergeordneten Ebene einen Treffer erzielt, Beibehalten eines vorherigen Kohärenzstatus, der der Ziel-Cachespeicherzeile in dem Cachespeicherverzeichnis zugehörig ist.
  10. Verfahren nach Anspruch 1, und das des Weiteren aufweist: automatisches Einfügen des Freigabebefehls durch einen Compiler in einen Programmcode, der durch den Prozessorkern ausgeführt wird.
  11. Verfahren nach Anspruch 1, wobei das automatische Einfügen beinhaltet, dass der Compiler den Freigabebefehl in Reaktion auf ein Erkennen eines Endes einer Verarbeitung eines Datensatzes automatisch in den Programmcode einfügt.
  12. Verarbeitungseinheit, die aufweist: einen Prozessorkern, der einen Cachespeicher einer übergeordneten Ebene beinhaltet, wobei der Cachespeicher der übergeordneten Ebene in Reaktion auf ein Ausführen eines Freigabebefehls eine Freigabeanforderung sendet, die eine Zieladresse angibt, die einer Ziel-Cachespeicherzeile zugehörig ist; und einen Cachespeicher einer untergeordneten Ebene, der mit dem Prozessorkern verbunden ist, wobei der Cachespeicher der untergeordneten Ebene ein Daten-Array, ein Verzeichnis des Inhalts des Daten-Arrays und eine Steuerlogik beinhaltet, wobei die Steuerlogik in Reaktion auf ein Empfangen der Freigabeanforderung in dem Cachespeicher der untergeordneten Ebene ermittelt, ob die Zieladresse in dem Verzeichnis einen Treffer erzielt, und in Reaktion auf ein Ermitteln, dass die Zieladresse in dem Verzeichnis einen Treffer erzielt, die Ziel-Cachespeicherzeile in dem Daten-Array beibehält und ein Ersetzungsreihenfolgefeld in dem Verzeichnis so aktualisiert, dass die Ziel-Cachespeicherzeile mit größerer Wahrscheinlichkeit in Reaktion auf einen nachfolgenden Cachespeicher-Fehltreffer in einer Kongruenzklasse, die die Ziel-Cachespeicherzeile beinhaltet, aus dem Cachespeicher der untergeordneten Ebene bereinigt wird.
  13. Verarbeitungseinheit nach Anspruch 12, wobei: der Cachespeicher der untergeordneten Ebene eine Lade- und eine Speicher-Pipeline für Datenzugriffsanforderungen des Prozessorkerns beinhaltet; und der Cachespeicher der untergeordneten Ebene die Freigabeanforderung in der Lade-Pipeline verarbeitet.
  14. Verarbeitungseinheit nach Anspruch 12, wobei: die Steuerlogik eine Vielzahl von Statusmaschinen beinhaltet, die Datenzugriffsanforderungen des Prozessors bedienen; und die Steuerlogik die Freigabeanforderung bedient, ohne eine der Vielzahl von Statusmaschinen der Freigabeanforderung zuzuordnen.
  15. Datenverarbeitungssystem, das aufweist: eine Vielzahl von Verarbeitungseinheiten, die die Verarbeitungseinheit nach Anspruch 10 beinhaltet; eine Verbindungsstruktur, die die Vielzahl von Verarbeitungseinheiten verbindet; und einen Systemspeicher, der zum Datenaustausch mit einer Verbindungsstruktur verbunden ist.
DE102013204417.8A 2012-03-28 2013-03-14 Daten-Cachespeicherblock-Freigabeanforderungen Active DE102013204417B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/433,022 US8856455B2 (en) 2012-03-28 2012-03-28 Data cache block deallocate requests
US13/433,022 2012-03-28

Publications (2)

Publication Number Publication Date
DE102013204417A1 true DE102013204417A1 (de) 2013-10-02
DE102013204417B4 DE102013204417B4 (de) 2020-03-19

Family

ID=48092036

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013204417.8A Active DE102013204417B4 (de) 2012-03-28 2013-03-14 Daten-Cachespeicherblock-Freigabeanforderungen

Country Status (4)

Country Link
US (2) US8856455B2 (de)
CN (1) CN103365794B (de)
DE (1) DE102013204417B4 (de)
GB (1) GB2502662B (de)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10599433B2 (en) * 2013-07-15 2020-03-24 Texas Instruments Incorported Cache management operations using streaming engine
US9477599B2 (en) * 2013-08-07 2016-10-25 Advanced Micro Devices, Inc. Write combining cache microarchitecture for synchronization events
CN104750423B (zh) * 2013-12-25 2018-01-30 中国科学院声学研究所 一种优化pcm内存写的方法和装置
US10817425B2 (en) * 2014-12-26 2020-10-27 Intel Corporation Hardware/software co-optimization to improve performance and energy for inter-VM communication for NFVs and other producer-consumer workloads
US9798672B1 (en) 2016-04-14 2017-10-24 Macom Connectivity Solutions, Llc Data managment for cache memory
US20170351430A1 (en) * 2016-06-01 2017-12-07 Intel Corporation Method, apparatus, and system for cache coherency using a coarse directory
US10956339B2 (en) * 2016-07-14 2021-03-23 Advanced Micro Devices, Inc. System and method for storing cache location information for cache entry transfer
CN111164580B (zh) * 2017-08-03 2023-10-31 涅克斯硅利康有限公司 用于缓存一致性的可重构的缓存架构及方法
US11907091B2 (en) * 2018-02-16 2024-02-20 Microsoft Technology Licensing, Llc Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches
US10970215B1 (en) 2019-12-03 2021-04-06 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
US11157408B2 (en) 2019-12-17 2021-10-26 International Business Machines Corporation Cache snooping mode extending coherence protection for certain requests
CN117573573B (zh) * 2024-01-15 2024-04-23 北京开源芯片研究院 缓存请求的处理方法、装置、设备及存储介质

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6202129B1 (en) 1998-03-31 2001-03-13 Intel Corporation Shared cache structure for temporal and non-temporal information using indicative bits
US6353875B1 (en) 1999-08-04 2002-03-05 International Business Machines Corporation Upgrading of snooper cache state mechanism for system bus with read/castout (RCO) address transactions
US6766419B1 (en) * 2000-03-31 2004-07-20 Intel Corporation Optimization of cache evictions through software hints
US7055003B2 (en) 2003-04-25 2006-05-30 International Business Machines Corporation Data cache scrub mechanism for large L2/L3 data cache structures
US7343455B2 (en) 2005-02-09 2008-03-11 International Business Machines Corporation Cache mechanism and method for avoiding cast out on bad victim select and recycling victim select operation
US7363433B2 (en) 2005-02-09 2008-04-22 International Business Machines Corporation Cache member protection with partial make MRU allocation
US7401189B2 (en) 2005-02-09 2008-07-15 International Business Machines Corporation Pipelining D states for MRU steerage during MRU/LRU member allocation
US7284094B2 (en) 2005-02-09 2007-10-16 International Business Machines Corporation Mechanism and apparatus allowing an N-way set associative cache, implementing a hybrid pseudo-LRU replacement algorithm, to have N L1 miss fetch requests simultaneously inflight regardless of their congruence class
US8225045B2 (en) 2008-12-16 2012-07-17 International Business Machines Corporation Lateral cache-to-cache cast-in
US8117397B2 (en) 2008-12-16 2012-02-14 International Business Machines Corporation Victim cache line selection
US20110072218A1 (en) 2009-09-24 2011-03-24 Srilatha Manne Prefetch promotion mechanism to reduce cache pollution
US9110808B2 (en) * 2009-12-30 2015-08-18 International Business Machines Corporation Formation of an exclusive ownership coherence state in a lower level cache upon replacement from an upper level cache of a cache line in a private shared owner state
US9189403B2 (en) 2009-12-30 2015-11-17 International Business Machines Corporation Selective cache-to-cache lateral castouts

Also Published As

Publication number Publication date
US20130262769A1 (en) 2013-10-03
US8856455B2 (en) 2014-10-07
CN103365794A (zh) 2013-10-23
CN103365794B (zh) 2016-05-04
GB201303300D0 (en) 2013-04-10
GB2502662A (en) 2013-12-04
DE102013204417B4 (de) 2020-03-19
GB2502662B (en) 2014-07-30
US20130262777A1 (en) 2013-10-03
US8959289B2 (en) 2015-02-17

Similar Documents

Publication Publication Date Title
DE102013204414B4 (de) Daten-Cachespeicherblock-Freigabeanforderungen in einer Cachespeicherhierarchie mit mehreren Ebenen
DE102013204417B4 (de) Daten-Cachespeicherblock-Freigabeanforderungen
JP6802287B2 (ja) キャッシュ・メモリ・アクセス
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE102007030116B4 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE10085373B4 (de) Verfahren zum Flushen von Cache-Zeilen
DE102005032949A1 (de) Verfahren und Vorrichtung zum Implementieren von Speicherordnungsmodellen mit Ordnungsvektoren
DE112007001171T5 (de) Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf
US10824567B2 (en) Selectively preventing pre-coherence point reads in a cache hierarchy to reduce barrier overhead
US20170177493A1 (en) Translation entry invalidation in a multithreaded data processing system
US10102130B2 (en) Decreasing the data handoff interval in a multiprocessor data processing system based on an early indication of a systemwide coherence response
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
US9830198B2 (en) Translation entry invalidation in a multithreaded data processing system
EP4066119B1 (de) Cache-snooping-modus zur erweiterung des kohärenzschutzes für bestimmte anfragen
DE102016222041A1 (de) Ungültigmachen eines umsetzungseintrags in einem multithread-datenverarbeitungssystem
DE112016007298T5 (de) Informationsverarbeitungsgerät
DE60205223T2 (de) Fernverzeichnis, welches eine Untermenge eines gemeinsamen cc-numa (cache-coherent nonuniform memory access) Speicherraums überdeckt
US20210182197A1 (en) Cache snooping mode extending coherence protection for certain requests
US10949346B2 (en) Data flush of a persistent memory cache or buffer
US9665297B1 (en) Injection of at least a partial cache line in a private multilevel cache hierarchy
US11561901B1 (en) Distribution of injected data among caches of a data processing system
US11561900B1 (en) Targeting of lateral castouts in a data processing system
DE19532418A1 (de) Cache-System zum Speichern von Daten

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R130 Divisional application to

Ref document number: 102013022610

Country of ref document: DE

R084 Declaration of willingness to licence
R020 Patent grant now final