[go: up one dir, main page]

DE102008048627A1 - Zuteilen von Platz in dedizierten Cache-Wegen - Google Patents

Zuteilen von Platz in dedizierten Cache-Wegen Download PDF

Info

Publication number
DE102008048627A1
DE102008048627A1 DE102008048627A DE102008048627A DE102008048627A1 DE 102008048627 A1 DE102008048627 A1 DE 102008048627A1 DE 102008048627 A DE102008048627 A DE 102008048627A DE 102008048627 A DE102008048627 A DE 102008048627A DE 102008048627 A1 DE102008048627 A1 DE 102008048627A1
Authority
DE
Germany
Prior art keywords
cache
data
line
cache memory
core
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
DE102008048627A
Other languages
English (en)
Inventor
Patrick Fort Collins Knebel
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of DE102008048627A1 publication Critical patent/DE102008048627A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement

Landscapes

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

Abstract

Ein System weist einen Prozessorkern und einen Cache-Speicher auf, der mit dem Kern gekoppelt ist und zumindest einen Cache-Weg aufweist, der dem Kern dediziert ist, wobei der Cache-Weg mehrere Cache-Zeilen aufweist. Das System weist ferner eine Cache-Steuerung auf, die mit dem Cache-Speicher gekoppelt ist. Auf ein Empfangen einer Datenanforderung der Cache-Speicher eine vorbestimmte Anzahl ungültiger Cache-Zeilen aufweist. Falls der Cache-Speicher die vorbestimmte Anzahl ungültiger Cache-Zeilen nicht aufweist, ist die Cache-Steuerung angepasst, um einen Platz in dem Cache-Speicher für neue Daten zuzuteilen, wobei der Platz in dem zumindest einen Cache-Weg zuteilbar ist, der dem Kern dediziert ist.

Description

  • Computersysteme verwenden häufig Cache-Speicher bzw. Caches und einen anderen Speicher, der örtlich auf die Caches begrenzt ist, um während eines Betriebs Daten zu speichern. Weil Caches finite Größen aufweisen, sind jedem Cache einer oder mehrere Ersetzungsalgorithmen zugeordnet. In dem Fall, dass ein Cache voll ist und einige Cache-Daten gelöscht werden müssen, um Platz für neue Daten zu machen, bestimmen diese Ersetzungsalgorithmen, welche Cache-Daten gelöscht werden sollten und welche Cache-Daten in dem Cache-Speicher bleiben sollten. Ersetzungsalgorithmen weisen somit eine erhebliche Auswirkung auf die Effizienz eines Cache-Systems auf. Folglich sind Verbesserungen bei Cache-Ersetzungsalgorithmen erwünscht.
  • Es ist die Aufgabe der vorliegenden Erfindung, ein System und ein Verfahren mit verbesserten Charakteristika zu schaffen.
  • Diese Aufgabe wird durch ein System gemäß Anspruch 1 und ein Verfahren gemäß Anspruch 6 gelöst.
  • Für eine detaillierte Beschreibung exemplarischer Ausführungsbeispiele der Erfindung wird nun Bezug auf die zugehörigen Zeichnungen genommen.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
  • 1 ein Blockdiagramm eines veranschaulichenden Cache-Systems gemäß verschiedenen Ausführungsbeispielen;
  • 2 einen veranschaulichenden Zeilenrahmen, der in dem Cache-System von 1 gespeichert ist, gemäß verschiedenen Ausführungsbeispielen;
  • 3 eine veranschaulichende Cache-Architektur, die dem Cache-System von 1 zugeordnet ist, gemäß verschiedenen Ausführungsbeispielen; und
  • 46 Flussdiagramme veranschaulichender Verfahren, die gemäß verschiedenen Ausführungsbeispielen implementiert sind.
  • Bestimmte Begriffe werden die folgende Beschreibung und die Ansprüche hindurch verwendet, um sich auf spezielle Systemkomponenten zu beziehen. Wie es einem Fachmann auf dem Gebiet ersichtlich sein wird, bezeichnen Firmen eine Komponente mit unterschiedlichen Namen. Dieses Dokument beabsichtigt nicht, zwischen Komponenten zu unterscheiden, die sich namentlich, aber nicht von der Funktion her unterscheiden. In der folgenden Erörterung und in den Ansprüchen werden die Begriffe „umfassend" und „aufweisend" in einer offenen Weise verwendet und sollten somit als „umfassend, aber nicht begrenzt auf..." bedeutend interpretiert werden. In der folgenden Erörterung und in den Ansprüchen soll ferner der Begriff „koppeln" oder „koppelt" entweder eine indirekte, direkte, optische oder drahtlose elektrische Verbindung bedeuten. Falls somit eine erste Vorrichtung mit einer zweiten Vorrichtung koppelt, kann diese Verbindung durch eine direkte elektrische Verbindung oder durch eine indirekte elektrische Verbindung über andere Vorrichtungen und Verbindungen erfolgen. In den Ansprüchen und in der Beschreibung ist ferner, wenn ein Cache als eine Handlung durchführend beschrieben ist, gemeint, dass entweder der Cache die Handlung allein, in Kombination mit einer Cache-Steuerung durchführt oder dass die Cache-Steuerung die Handlung allein durchführt. Der Begriff „Verarbeitungslogik" bezieht sich auf irgendeine Vorrichtung oder Schal tungslogik etc., die auf einen Speicher und/oder einen Cache zugreifen kann.
  • Die folgende Erörterung ist auf verschiedene Ausführungsbeispiele der Erfindung gerichtet. Obwohl eines oder mehrere dieser Ausführungsbeispiele bevorzugt sein können, sollten die offenbarten Ausführungsbeispiele nicht als den Schutzbereich der Offenbarung, einschließlich der Ansprüche, begrenzend interpretiert oder anderweitig verwendet werden. Zusätzlich wird einem Fachmann auf dem Gebiet klar sein, dass die folgende Beschreibung eine breite Anwendung aufweist, und die Erörterung irgendeines Ausführungsbeispiels ist lediglich exemplarisch für dieses Ausführungsbeispiel gemeint und soll nicht nahe legen, dass der Schutzbereich der Offenbarung, einschließlich der Ansprüche, auf dieses Ausführungsbeispiel begrenzt ist.
  • Hierin ist eine Technik offenbart, durch die ein Cache-Speicher bzw. Cache, der unter mehreren Prozessorkernen gemeinschaftlich verwendet wird, dynamisch Abschnitte des Caches jedem der Kerne dediziert. Auf diese Weise beeinflussen Kerne, die ein ineffizientes Verhalten (z. B. einen Überlastungszustand (Thrashing)) zeigen, die Leistungsfähigkeit der verbleibenden Kerne nicht negativ. Die Technik ermöglicht auch, dass der Cache „Hinweistransaktions"-Signale von Caches höherer Ebene empfangen kann. Diese „Hinweistransaktions"-Signale ermöglichen, dass der Cache identifizieren kann, welche Cache-Einträge in den Caches höherer Ebene dupliziert sind und welche Einträge in den Caches höherer Ebene nicht dupliziert sind. Auf diese Weise wird der Cache auf dem neuesten Stand gehalten und es ist weniger wahrscheinlich als sonst, dass derselbe unter den Folgen veralteter Informationen leidet.
  • 1 zeigt ein Blockdiagramm eines veranschaulichenden Cache-basierten Systems 100. Das Cache-System 100 kann in irgendeiner geeigneten elektronischen Vorrichtung implementiert sein, wie beispielsweise einem Computer (z. B. Perso nalcomputer, Server, Spielkonsole, Digitalkamera, digitale Musikvorrichtung etc.). Das System 100 weist mehrere Prozessorkerne 102, 104, 106 und 108 auf (auch als „Verarbeitungslogik" bezeichnet). Obwohl vier Prozessorkerne explizit gezeigt sind, ist klar, dass irgendeine geeignete Anzahl von Kernen verwendet werden kann. Der Kern 102 koppelt mit einem Cache erster Ebene („L1-Cache"; L1 = level 1 = Ebene 1) 110. Der L1-Cache 110 ist dem Kern 102 dediziert, was bedeutet, dass der Kern 102 der einzige Kern ist, dem gestattet ist, den L1-Cache 110 zu verwenden. Der L1-Cache 112 koppelt mit dem Kern 104 und ist demselben dediziert. Der L1-Cache 114 koppelt mit dem Kern 106 und ist demselben dediziert. Der L1-Cache 116 koppelt mit dem Kern 108 und ist demselben dediziert. Jeder der L1-Caches 110, 112, 114 und 116 koppelt mit einem gemeinschaftlich verwendeten Cache zweiter Ebene („L2-Cache") 118. Mit „gemeinschaftlich verwendet" ist gemeint, dass der L2-Cache 118 keinem speziellen Prozessorkern dediziert ist, sondern anstelle dessen durch einen oder mehrere der Prozessorkerne verwendbar ist. Der L2-Cache 106 koppelt mit einer Speicherung 120 (z. B. einem Direktzugriffsspeicher (RAM; RAM = Random Access Memory)). Die Caches 110, 112, 114, 116 und 118 sowie die Speicherung 120 können durch eine Cache-Steuerung 101 gesteuert sein.
  • Die Caches 110, 112, 114, 116 und 118 speichern Informationen, auf die die Kerne häufig aus der Speicherung 120 zugreifen. Auf diese Weise werden die Geschwindigkeiten der Kerne verbessert. Bei einigen Ausführungsbeispielen wird auf Informationen, die in den Caches 110, 112, 114 und 116 gespeichert sind, schneller zugegriffen als auf Informationen, die in dem Cache 118 gespeichert sind. Bei einigen Ausführungsbeispielen wird auf Informationen, die in dem Cache 118 gespeichert sind, schneller zugegriffen als auf Informationen, die in der Speicherung 120 gespeichert sind. Die Kerne können beispielsweise Prozessorgeschwindigkeiten von 800 MHz aufweisen, die L1-Caches 110, 112, 114 und 116 können Zugriffsgeschwindigkeiten von 800 MHz aufweisen, der L2-Cache 118 kann eine Zugriffsgeschwindigkeit von 400 MHz aufweisen und die Speicherung 120 kann eine Zugriffsgeschwindigkeit von etwa 200 MHz aufweisen.
  • Wenn einer der Kerne Daten anfordert, die bei einer speziellen Adresse in der Speicherung gespeichert sind (z. B. in Folge einer Ausführung einer Softwareanwendung), bestimmt der Kern zuerst, ob der dedizierte L1-Cache desselben Daten umfasst, die dieser Adresse zugeordnet sind. Falls die Adresse in diesem L1-Cache gefunden wird (ein Cache-„Treffer"), erlangt der Kern die Daten aus diesem L1-Cache bei dieser speziellen Adresse wieder. Falls dieser L1-Cache die Adresse nicht umfasst (ein Cache-„Fehltreffer"), bestimmt der Kern dann, ob der nächst schnellste Cache, auf den derselbe zugreifen kann, der L2-Cache 118, die Adresse umfasst. Falls ein Cache-Treffer in dem L2-Cache 118 auftritt, erlangt der Kern die Daten aus dem L2-Cache 118 bei dieser Adresse wieder. Falls jedoch ein Cache-Fehltreffer in dem L2-Cache 118 auftritt, erhält der Kern die Daten aus der Speicherung 120.
  • Die Caches weisen mehrere „Zeilenrahmen" bzw. Zeilen-Frames (line frames) auf, die verwendbar sind, um Daten und/oder Anweisungen (kollektiv als „Daten” bezeichnet) zu speichern. Wie es in 2 gezeigt ist, ist ein Zeilenrahmen 200 eine Datenstruktur, die eine vorbestimmte Menge an Daten 206 zusätzlich zu Statusbits 202 und einer Kennungsadresse 204 speichert, die den Daten 206 zugeordnet sind. Bei einigen Ausführungsbeispielen kann ein Zeilenrahmen 32 Datenbytes 206 speichern, die als eine „Zeile" bekannt sind. Bei einigen Ausführungsbeispielen unterscheidet sich eine Datenmenge 206, die pro Zeilenrahmen 200 in einem Cache gespeichert sein kann, von einer Datenmenge, die pro Zeilenrahmen in einem anderen Cache gespeichert sein kann.
  • Die Statusbits 202 geben Statusinformationen an, die zu der Zeile 206 gehören. Beispielsweise können die Statusbits 202 angeben, ob die Zeile 206 in einem Zeilenrahmen 200 gültig ist (z. B. unter Verwendung eines Gültig-Bits 208), und falls dieselbe gültig ist, ob die Zeile 206 „verunreinigt" ist (verunreinigtes Bit nicht explizit gezeigt). Eine Zeile ist „verunreinigt", wenn die Zeile mit einem Datenwert aktualisiert wurde, der nicht verwendet wurde, um eine entsprechende Zeile in einem Speicher niedrigerer Ebene zu aktualisieren. Falls beispielsweise eine Zeile in einem L1-Cache aktualisiert ist, aber eine entsprechende Zeile in dem L2-Cache nicht mit dem gleichen Wert aktualisiert ist, wird die L1-Cache-Zeile als verunreinigt betrachtet.
  • Die Statusbits 202 können auch Bits umfassen, die durch den Cache-Ersetzungsalgorithmus des entsprechenden Cache-Speichers verwendet werden. Beispielsweise können die Statusbits 202 eines oder mehrere am weistesten zurückliegend verwendete Bits 210 (LRU-Bits; LRU = Least Recently Used) und/oder nicht jüngst verwendete Bits 212 (NRU-Bits; NRU = Not Recently Used) umfassen. Ein LRU-Bit mit einem Status „0" gibt an, dass die entsprechende Zeile „am weitesten zurückliegend verwendet" ist oder dass die Zeile nicht innerhalb eines vorbestimmten Zeitintervalls verwendet wurde. Ein LRU-Bit mit einem Status „1" gibt an, dass die entsprechende Zeile „nicht am weitesten zurückliegend verwendet" ist oder dass die Zeile innerhalb eines vorbestimmten Zeitintervalls verwendet wurde. Bei einigen Ausführungsbeispielen gibt ein LRU-Bit von „0" eine jüngere Verwendung an und gibt ein LRU-Bit von "1" keine jüngere Verwendung an. Gleichermaßen gibt ein NRU-Bit mit einem Status „0" an, dass auf die entsprechende Zeile nicht kürzlich (d. h. innerhalb eines vorbestimmten Zeitintervalls) zugegriffen wurde. Ein NRU-Bit mit einem Status "1" gibt an, dass auf die entsprechende Zeile kürzlich zugegriffen wurde. Bei einigen Ausführungsbeispielen gibt ein NRU-Bit von „0" einen kürzlichen Zugriff an und gibt ein NRU-Bit von „1" keinen kürzlichen Zugriff an. Die Informationen, die in einem Zeilenrahmen enthalten sind, können die gleichen wie, ähnlich wie, weniger oder mehr als diese sein, die hierin spezifisch offenbart sind. Andere Cache- Ersetzungsalgorithmen sind in dem Schutzbereich dieser Offenbarung eingeschlossen.
  • Jeder Zeilenrahmen 200 in einem Cache-Speicher ist einer unterschiedlichen Adresse oder einem unterschiedlichen Bereich von Adressen zugeordnet. Eine veranschaulichende 32-Bit-Adresse weist eine Kennungsadresse (z. B. Bits 31:14), wie beispielsweise eine Kennungsadresse 204, eine Satz-Adresse (z. B. Bits 13:5) und einen Versatz- oder NULL-Wert (z. B. Bits 4:0) auf. Zeilen (und zugeordnete Zeilenrahmen) mit einer gemeinsamen Satz-Adresse werden in eine Gruppe abgebildet, die als ein „Satz" bekannt ist. Weil Zeilen innerhalb eines Satzes eine gemeinsame Satz-Adresse gemeinschaftlich verwenden, werden die Zeilen innerhalb des Satzes voneinander unter Verwendung der Kennungsadresse jeder Zeile unterschieden. Falls somit ein Kern auf Cache-Daten zugreift, die bei einer speziellen 32-Bit-Adresse gespeichert sind, verwendet der Kern die Satz-Adresse in den Bits 13:5, um einen übereinstimmenden Satz in dem Cache zu lokalisieren, und verwendet dann die Kennungsadressen in den Bits 31:14, um eine übereinstimmende Zeile innerhalb des Satzes zu lokalisieren.
  • Gemäß verschiedenen Ausführungsbeispielen weist jeder Cache-Speicher auch eine spezifische Anzahl von „Wegen" auf. Eine Sammlung von entsprechenden Zeilenrahmen über alle Sätze in einem Cache-Speicher hinweg wird ein „Weg" in dem Cache genannt. Die Anzahl von Wegen in einem Cache entspricht auch der Anzahl von Zeilenrahmen, die in jedem Satz des Cache vorliegen. Beispielsweise weist ein Zweiwegecache zwei Wege auf und weist jeder Satz in dem Cache zwei Zeilenrahmen auf, die diesem Satz zugeordnet sind, wobei jeder der zwei Zeilenrahmen einem der zwei Wege zugeordnet ist. Folglich weisen Daten, die einem speziellen Satz zugeteilt werden sollen, zwei mögliche Zeilenrahmenbestimmungsorte auf.
  • Bei einigen Ausführungsbeispielen speichert jeder Cache verschiedene Informationen, die zu den Zeilenrahmen in diesem Cache gehören. Die Zeilenrahmen in einem Satz können beispielsweise basierend darauf, wie kürzlich auf jeden Zeilenrahmen zugegriffen wurde, in eine Rangliste oder Reihenfolge gestellt sein. Bei einem veranschaulichenden Satz, der fünf Zeilenrahmen aufweist, kann der jüngst zugegriffene Zeilenrahmen (z. B. für einen Datenlesevorgang oder -schreibvorgang zugegriffen) an erster Stelle stehen und kann der am weitesten zurückliegend zugegriffene Zeilenrahmen an letzter Stelle stehen. Alternativ kann der am weitesten zurückliegend zugegriffene Zeilenrahmen an erster Stelle stehen und kann der jüngst zugegriffene Zeilenrahmen an letzter Stelle stehen. Derartige Rangfolgen können „am weitesten zurückliegend verwendet"-Rangfolgen (LRU-Rangfolgen) genannt werden, wie es oben erwähnt ist. In Betrieb, wenn neue Daten in einem Satz gespeichert werden sollen, können die LRU-Rangfolgen verwendet werden, um zu bestimmen, auf welchen Zeilenrahmen am weitesten zurückliegend zugegriffen wurde. Die Daten in dem Zeilenrahmen, auf den am weitesten zurückliegend zugegriffen wurde, können entfernt oder „geräumt" werden, um Platz für die neuen Daten zu machen, die in diesem Zeilenrahmen gespeichert werden sollen.
  • Eine Verwendung der LRU-Rangfolgen, um Daten zu räumen, wird im Allgemeinen in dem Kontext von satzassoziativen Caches durchgeführt. Genauer gesagt umfasst ein satzassoziativer Cache mehrere Zeilenrahmen pro Satz, innerhalb derer Daten aus jeder Speicherposition niedrigerer Ebene enthalten sein können. Bei einem satzassoziativen Zweiwegecache beispielsweise sind Daten aus einer einzigen Speicherposition in dem L2-Cache 118 in zwei Positionen in dem L1-Cache 110 gespeichert. Bei einem Bestimmen, welche der zwei Positionen in dem L1-Cache 110 einen Datenwert aus dem L2-Cache 118 speichern soll, werden die LRU-Bits (oder Rangfolgen) der zwei Positionen verglichen. Daten bei der Position, auf die am weitesten zurückliegend zugegriffen wurde, werden geräumt, um Platz für den Datenwert aus dem L2-Cache 118 zu machen. Andere Arten von Caches können ebenfalls verwendet werden, wie beispielsweise vollständig assoziative Caches und direkt abgebildete Caches. Ein direkt abgebildeter Cache weist einen einzigen Zeilenrahmen pro Satz auf, innerhalb dessen Daten aus einer Speicherposition niedrigerer Ebene enthalten sein können. Ein vollständig assoziativer Cache ermöglicht die Speicherung einer Speicherposition niedrigerer Ebene in irgendeinen Zeilenrahmen des vollständig assoziativen Caches.
  • 3 zeigt eine detaillierte Ansicht eines satzassoziativen Caches 298. Der Cache 298 ist veranschaulichend für einen Cache erster Ebene (z. B. L1-Caches 110, 112, 114, 116) und/oder den L2-Cache 118. Der Cache 298 weist Wege 300 und 316 auf. Der Weg 300 weist Zeilenrahmen 302 auf und der Weg 316 weist Zeilenrahmen 318 auf. Obwohl die Wege 300 und 316 als Zeilenrahmen aufweisend gezeigt sind, können andere Darstellungen Sätze zeigen, die Zeilenrahmen aufweisen. Jeder Zeilenrahmen 302 des Wegs 300 weist ein Hinweisbitfeld 314, ein NRU-Bitfeld 312 und/oder ein LRU-Bitfeld 310, ein Gültig-Bitfeld 308, ein Kennungsadressfeld 304 und ein Datenfeld (d. h. eine „Zeile") 306 auf. Gleichermaßen weist jeder der Zeilenrahmen 318 des Wegs 316 ein Hinweisbitfeld 330, ein NRU-Feld 328, LRU-Feld 326, ein Gültig-Bitfeld 324, ein Kennungsadressfeld 320 und ein Datenfeld (d. h. eine „Zeile") 322 auf. In Betrieb durchsucht eine Cache-Steuerung (z. B. Cache-Steuerung 101), die dem Cache 298 entspricht, den Cache 298, um eine Zeile mit einer Zieladresse zu lokalisieren. Die Steuerung lokalisiert zuerst einen Satz in dem Cache, der mit Bits 13:5 (d. h. der Satzadresse) der Zieladresse übereinstimmt. Wenn ein übereinstimmender Satz in dem Cache 298 gefunden ist, lokalisiert die Steuerung ferner einen Zeilenrahmen in dem übereinstimmenden Satz mit einem Kennungsadressfeld, das mit Bits 31:14 (d. h. der Kennungsadresse) der Zieladresse übereinstimmt. Falls ein übereinstimmender Zeilenrahmen gefunden wird, bestimmt die Steuerung dann, ob die Zeile (d. h. die Daten) in dem Zeilenrahmen gültig ist, durch Prüfen des Gültig-Bitfelds des übereinstimmenden Zeilenrahmens. Falls das Gültig-Bitfeld angibt, dass die Zeile in diesem Zeilenrahmen gültig ist, greift der Kern auf die Daten zu und verwendet dieselben, wie nötig.
  • Falls kein übereinstimmender Zeilenrahmen in dem Cache 298 gefunden wird, teilt der Cache 298 einen Platz in dem Cache 298 zu, um die angeforderte Zeile aus einem Cache niedrigerer Ebene oder dem Speicher in den Cache zu bringen. Um einen Platz in dem Cache 298 zuzuteilen, bestimmt die Cache-Steuerung 101 zuerst, ob es irgendwelche ungültigen Zeilen in dem Cache 298 gibt (d. h. unter Verwendung der Gültig-Bits 308). Falls eine ungültige Zeile gefunden wird, wird diese Zeile geräumt und werden die neuen Daten, die von dem Cache niedrigerer Ebene oder von dem Speicher hereingebracht werden, in diesem Zeilenrahmen gespeichert. Falls jedoch keine ungültige Zeile gefunden wird, erhält die Cache-Steuerung 101 Identifikationsinformationen (z. B. einen vorbestimmten, vorab zugewiesenen numerischen oder alphanumerischen Code) von dem Kern, der die Daten anfordert, und verwendet die Kernidentifikationsinformationen, um eine Zeile innerhalb eines oder mehrerer Wege zu räumen, die diesem speziellen Kern dediziert sind. Insbesondere verwendet die Cache-Steuerung LRU- und/oder NRU-Rangfolgen (oder irgendeinen anderen geeigneten Ersetzungsalgorithmus), um zu bestimmen, welche Cache-Zeile aus dem (den) dedizierten Weg(en) geräumt werden sollte. Die Cache-Steuerung räumt nachfolgend eine geeignete Zeile und ersetzt die geräumte Zeile mit neuen Daten, die von einem Cache niedrigerer Ebene oder von einem Speicher hereingebracht werden.
  • Cache-Wege können unterschiedlichen Kernen auf irgendeine geeignete Weise dediziert sein. Falls beispielsweise ein satzassoziativer 32-Wege-Cache unter vier Kernen gemeinschaftlich verwendet wird, kann jeder der Kerne exklusive Rechte auf 8 der 32 Wege aufweisen. Somit können beispiels weise Wege 0–7 dem Kern 102 dediziert sein; Wege 8–15 können dem Kern 104 dediziert sein; Wege 16–23 können dem Kern 106 dediziert sein und Wege 24–31 können dem Kern 108 dediziert sein. Falls somit ein Cache-Fehltreffer in dem gemeinschaftlich verwendeten Cache auftritt und es keine ungültigen Zeilen in dem gemeinschaftlich verwendeten Cache gibt, die geräumt werden können, um Platz für neue Daten zu machen, wird eine Zeile (unter Verwendung irgendeines geeigneten Ersetzungsalgorithmus) aus der Gruppe von Wegen geräumt, die dem Kern dediziert ist, der die Daten anfordert. Falls auf diese Weise ein Kern wiederholt Daten anfordert, die nicht in den Cache-Speichern zu finden sind (d. h. eine Überlastung beginnt), werden die negativen Folgen der Überlastung die verbleibenden drei Kerne nicht wesentlich beeinflussen.
  • 4 zeigt ein Flussdiagramm eines veranschaulichenden Verfahrens 400, das gemäß verschiedenen Ausführungsbeispielen implementiert ist. Das Verfahren 400 beginnt damit, dass ein Kern eine Anforderung nach Daten erzeugt (Block 402). Falls ein Cache-Treffer in dem Cache des Kerns auftritt (Block 404), weist das Verfahren 400 ein Erhalten der Daten aus dem Cache und Zurückgeben derselben an den Kern auf (Block 406). Falls jedoch ein Cache-Fehltreffer in dem Cache auftritt, weist das Verfahren 400 ein Erhalten von Identifizierungsinformationen von dem anfordernden Kern („Kern-ID") (Block 408) und ein Bestimmen auf, ob eine vorbestimmte Anzahl von Zeilen (z. B. 1 Zeile) in dem gemeinschaftlich verwendeten Cache ungültig sind (Block 410). Falls eine ungültige Zeile gefunden wird, weist das Verfahren 400 ein Zuteilen einer neuen Zeile in dem Cache-Weg der ungültigen Zeile auf (Block 412). Falls jedoch keine ungültigen Zeilen in dem gemeinschaftlich verwendeten Cache gefunden werden (Block 410), weist das Verfahren 400 ein Verwenden der Kern-ID, um (einen) Weg(e) zu identifizieren, der (die) dem Kern zugeordnet ist (sind), und ein Verwenden eines geeigneten Ersetzungsalgorithmus (z. B. LRU, NRU) auf, um eine Zeile in einem der Wege zuzuteilen, die diesem Kern zugeordnet sind (Block 414). Einige der Handlungen des Verfahrens 400 können durch eine Cache-Steuerung (z. B. die Cache-Steuerung 101) durchgeführt werden.
  • Unter erneuter Bezugnahme auf 3 umfasst jeder der Zeilenrahmen ein Hinweisbit 314, wie es vorhergehend erwähnt ist. Das Hinweisbit 314 gibt an, ob eine Kopie der Daten, die in diesem Zeilenrahmen gespeichert sind (d. h. Daten 306), auch in einem Cache höherer Ebene gespeichert ist. Unter Bezugnahme auf 1 beispielsweise gibt ein Hinweisbit in dem L2-Cache 118 an, ob Daten, die dem Hinweisbit entsprechen, auch in einem oder mehreren der L1-Caches 110, 112, 114 und 116 gespeichert sind. Bei zumindest einigen Ausführungsbeispielen werden Hinweisbits eines Caches unter Verwendung von „Hinweistransaktions"-Signalen aktualisiert, die von Caches einer oberen Ebene gesendet werden. Wenn beispielsweise eine Zeile aus einem der L1-Caches oberer Ebene geräumt wird, sendet dieser L1-Cache ein Hinweistransaktionssignal an den L2-Cache 118, wobei die Adresse oder andere Informationen angegeben werden, die zu der geräumten Zeile gehören. Der L2-Cache 118 wiederum verwendet die Adresse oder anderen Informationen in dem Signal, um die entsprechende Zeile in dem L2-Cache 118 zu lokalisieren, und aktualisiert das Hinweisbit 314, das dieser Zeile zugeordnet ist, um widerzuspiegeln, dass die Daten nicht mehr in dem L1-Cache gespeichert sind. Ähnliche Techniken können verwendet werden, um Hinweisbits zu aktualisieren, um widerzuspiegeln, dass ein Cache oberer Ebene die Daten speichert, die in dem L2-Cache gefunden werden.
  • In einigen Fällen räumt ein Cache oberer Ebene Daten und sendet ein Hinweistransaktionssignal an den Cache niedrigerer Ebene. Eine Kopie der Daten jedoch, die aus dem Cache oberer Ebene geräumt werden, kann immer noch in einem unterschiedlichen Cache oberer Ebene gespeichert sein. Für derartige Fälle kann der Cache niedrigerer Ebene konfiguriert sein, um entweder die Hinweisbits desselben auf einen Empfang eines Hinweistransaktionssignals von irgendeinem der Caches oberer Ebene hin einzustellen oder um die Hinweisbits desselben auf einen Empfang von Hinweistransaktionssignalen von einer vorbestimmten Anzahl (z. B. allen) Caches oberer Ebene hin einzustellen. Andere geeignete Hinweistransaktionsalgorithmen können ebenfalls wie gewünscht implementiert werden.
  • 5 zeigt ein Flussdiagramm eines veranschaulichenden Verfahrens 500, das gemäß verschiedenen Ausführungsbeispielen implementiert ist. Das Verfahren 500 beginnt damit, dass ein Kern eine Datenanforderung erzeugt (Block 502). Das Verfahren 500 weist dann ein Bestimmen auf, ob ein Cache-Fehltreffer aufgetreten ist (Block 504). Falls nicht, weist das Verfahren 500 ein Erhalten der Daten und Zurückgeben derselben an den Kern auf (Block 506). Falls ein Cache-Fehltreffer aufgetreten ist, weist das Verfahren 500 ein Bestimmen auf, ob der Cache eine vorbestimmte Menge von ungültigen Zeilen (z. B. 1 ungültige Zeile) aufweist (Block 508). Falls dem so ist, weist das Verfahren 500 ein Zuteilen einer neuen Zeile in dem Weg der ungültigen Zeile auf (Block 510). Andernfalls weist das Verfahren 500 ein Durchsuchen aller Wege nach einer Zeile auf, deren gespeichertes Hinweisbit angibt, dass eine Kopie der Zeile nicht in einem Cache höherer Ebene gespeichert ist (Block 512). Das Verfahren 500 weist dann ein Bestimmen auf, ob eine derartige Zeile gefunden wird (Block 514). Falls dem so ist, weist das Verfahren 500 ein Zuteilen einer Zeile in dem Weg auf, der die Zeile aufweist, die gefunden wird (z. B. unter Verwendung einer Cache-Steuerung) (Block 516). Andernfalls weist das Verfahren 500 ein Erhalten einer Identifikation von dem Kern, der die Daten anfordert („Kern-ID"), ein Verwenden der Kern-ID, um einen Weg (Wege) zu identifizieren, der (die) dem Kern zugeordnet ist (sind), und ein Verwenden eines geeigneten Ersetzungsalgorithmus (z. B. LRU/NRU), um eine Zeile in einem der identifizierten Wege zuzuteilen, auf (Block 518).
  • 6 zeigt ein Flussdiagramm eines veranschaulichenden Verfahrens 600, das gemäß verschiedenen Ausführungsbeispielen implementiert ist. Insbesondere ist das Verfahren 600 nutzbar, um die oben beschriebenen Hinweisbits zu aktualisieren. Das Verfahren 600 weist ein Bestimmen auf, ob eine gültige Zeile aus einem Cache oberer Ebene geräumt wurde (Block 602). Falls dem so ist, weist das Verfahren 600 ein Erzeugen und Senden eines Hinweistransaktionssignals (z. B. eines Ausstoßhinweistransaktionssignals) von dem Cache höherer Ebene an den Cache niedrigerer Ebene auf (Block 604). Bei einigen Ausführungsbeispielen können, falls die geräumte Cachezeile verunreinigt war, die Daten, die dieser Zeile zugeordnet sind, auch zu dem Cache niedrigerer Ebene kopiert werden. Das Verfahren 600 weist ferner ein Aktualisieren des Hinweisbits des Caches niedrigerer Ebene auf, um anzugeben, dass eine Kopie der Zeile nicht in dem Cache oberer Ebene gespeichert ist (Block 606). Zumindest einige der Handlungen des Verfahrens 600 können durch eine Cache-Steuerung (z. B. die Cache-Steuerung 101) durchgeführt werden.
  • Die obige Erörterung soll veranschaulichend sein für die Grundlagen und verschiedenen Ausführungsbeispiele der vorliegenden Erfindung. Zahlreiche Variationen und Modifikationen werden Fachleuten auf dem Gebiet ersichtlich, sobald die obige Offenbarung vollständig klar ist. Es ist beabsichtigt, dass die folgenden Patentansprüche so interpretiert werden, um alle derartigen Variationen und Modifikationen zu umschließen.

Claims (10)

  1. System (100), das folgende Merkmale aufweist: einen Prozessorkern (102, 104, 106, 108); einen Cache-Speicher (118), der mit dem Kern gekoppelt ist und zumindest einen Cache-Weg aufweist, der dem Kern dediziert ist, wobei der Cache-Weg mehrere Cache-Zeilen aufweist; und eine Cache-Steuerung (101), die mit dem Cache-Speicher gekoppelt ist; wobei auf ein Empfangen einer Datenanforderung von dem Kern hin die Cache-Steuerung bestimmt, ob der Cache-Speicher eine vorbestimmte Menge an ungültigen Cache-Zeilen aufweist; wobei, falls der Cache die vorbestimmte Menge ungültiger Cache-Zeilen nicht aufweist, die Cache-Steuerung angepasst ist, um einen Platz in dem Cache-Speicher für neue Daten zuzuteilen, wobei der Platz in dem zumindest einen Cache-Weg zuteilbar ist, der dem Kern dediziert ist.
  2. System gemäß Anspruch 1, bei dem der Prozessorkerne ein Identifikationssignal an die Cache-Steuerung liefert und bei dem die Cache-Steuerung das Identifikationssignal verwendet, um zu bestimmen, in welchem einer Mehrzahl von Cache-Wegen der Platz zugeteilt werden sollte.
  3. System gemäß Anspruch 1 oder 2, wobei das System ferner einen weiteren Prozessorkern (102, 104, 106, 108) aufweist und wobei der Cache-Speicher einen unterschiedlichen Cache-Weg aufweist, der dem weiteren Prozessorkern dediziert ist, und wobei die Cache- Steuerung ansprechend auf eine weitere Datenanforderung von dem weiteren Prozessorkern einen zusätzlichen Platz in dem unterschiedlichen Cache-Weg zuteilt.
  4. System gemäß einem der Ansprüche 1 bis 3, bei dem, falls der Cache-Speicher die vorbestimmte Menge ungültiger Cache-Zeilen aufweist, die Cache-Steuerung eine ungültige Cache-Zeile räumt und die geräumte, ungültige Cache-Zeile mit den neuen Daten ersetzt.
  5. System gemäß einem der Ansprüche 1 bis 4, bei dem, falls der Cache-Speicher nicht die vorbestimmte Menge ungültiger Cache-Zeilen aufweist, die Cache-Steuerung konfiguriert ist, um mehrere Wege in dem Cache-Speicher nach einer Zeile zu durchsuchen, die einem Hinweisbit zugeordnet ist, das angibt, dass die Zeile nicht einer anderen Zeile zugeordnet ist, die in einem unterschiedlichen Cache-Speicher (110, 112, 114, 116) gespeichert ist, wobei der unterschiedliche Cache-Speicher einer höheren Ebene als der Cache-Speicher angehört.
  6. Verfahren, das folgende Schritte aufweist: Erzeugen einer Anforderung nach Daten; Bestimmen, ob ein Cache-Speicher (118) die Daten aufweist, wobei der Cache-Speicher mehrere Wege aufweist; falls der Cache-Speicher die Daten nicht aufweist und es keine vorbestimmte Anzahl ungültiger Zeilen in dem Cache-Speicher gibt, Durchsuchen von Wegen des Cache-Speichers nach einer Zeile, die nicht auch in einem anderen Cache-Speicher (110, 112, 114, 116) gespeichert ist, und Ersetzen der Zeile mit den Daten; und falls die Zeile nicht gefunden wird, Zuteilen eines Platzes für die Daten in einem der mehreren Wege, wobei der eine der mehreren Wege einer Verarbeitungslogik (102, 104, 106, 108) dediziert ist, die die Anforderung nach Daten erzeugte.
  7. Verfahren gemäß Anspruch 6, bei dem die vorbestimmte Anzahl eins beträgt.
  8. Verfahren gemäß Anspruch 6 oder 7, bei dem das Zuteilen von Platz für die Daten ein Verwenden von zumindest einem von einem Nicht-Kürzlich-Verwendet-(NRU-) oder eines Weitest-Zurückliegend-Verwendet-(LRU-)Ersetzungsalgorithmus aufweist.
  9. Verfahren gemäß einem der Ansprüche 6 bis 8, das ferner, falls eine gültige Zeile aus dem weiteren Cache-Speicher geräumt wird, ein Versehen des Cache-Speichers mit einem Hinweistransaktionssignal aufweist, das bewirkt, dass eine andere Zeile angibt, dass die gültige Zeile nicht in dem weiteren Cache-Speicher gespeichert ist, wobei die weitere Zeile in dem Cache-Speicher gespeichert ist und der gültigen, geräumten Zeile entspricht.
  10. Verfahren gemäß einem der Ansprüche 6 bis 9, bei dem das Bestimmen, ob der Cache-Speicher die Daten aufweist, ein Verwenden eines Cache-Speichers aufweist, der unter mehreren Prozessorkernen (102, 104, 106, 108) gemeinschaftlich verwendet wird.
DE102008048627A 2007-10-19 2008-09-24 Zuteilen von Platz in dedizierten Cache-Wegen Ceased DE102008048627A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/875,168 US8176255B2 (en) 2007-10-19 2007-10-19 Allocating space in dedicated cache ways
US11/875,168 2007-10-19

Publications (1)

Publication Number Publication Date
DE102008048627A1 true DE102008048627A1 (de) 2009-04-23

Family

ID=40459144

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102008048627A Ceased DE102008048627A1 (de) 2007-10-19 2008-09-24 Zuteilen von Platz in dedizierten Cache-Wegen

Country Status (2)

Country Link
US (1) US8176255B2 (de)
DE (1) DE102008048627A1 (de)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8560938B2 (en) * 2008-02-12 2013-10-15 Oracle International Corporation Multi-layer XML customization
US8875306B2 (en) 2008-02-12 2014-10-28 Oracle International Corporation Customization restrictions for multi-layer XML customization
US8538998B2 (en) * 2008-02-12 2013-09-17 Oracle International Corporation Caching and memory optimizations for multi-layer XML customization
US8966465B2 (en) * 2008-02-12 2015-02-24 Oracle International Corporation Customization creation and update for multi-layer XML customization
US8788542B2 (en) * 2008-02-12 2014-07-22 Oracle International Corporation Customization syntax for multi-layer XML customization
US8782604B2 (en) * 2008-04-11 2014-07-15 Oracle International Corporation Sandbox support for metadata in running applications
US8667031B2 (en) * 2008-06-13 2014-03-04 Oracle International Corporation Reuse of shared metadata across applications via URL protocol
US8799319B2 (en) 2008-09-19 2014-08-05 Oracle International Corporation System and method for meta-data driven, semi-automated generation of web services based on existing applications
US8996658B2 (en) 2008-09-03 2015-03-31 Oracle International Corporation System and method for integration of browser-based thin client applications within desktop rich client architecture
US9122520B2 (en) 2008-09-17 2015-09-01 Oracle International Corporation Generic wait service: pausing a BPEL process
US8332654B2 (en) * 2008-12-08 2012-12-11 Oracle International Corporation Secure framework for invoking server-side APIs using AJAX
US8799587B2 (en) * 2009-01-26 2014-08-05 International Business Machines Corporation Region coherence array for a mult-processor system having subregions and subregion prefetching
US8285942B2 (en) * 2009-01-27 2012-10-09 International Business Machines Corporation Region coherence array having hint bits for a clustered shared-memory multiprocessor system
US20110055482A1 (en) * 2009-08-28 2011-03-03 Broadcom Corporation Shared cache reservation
US8856737B2 (en) 2009-11-18 2014-10-07 Oracle International Corporation Techniques for displaying customizations for composite applications
US9189424B2 (en) * 2011-05-31 2015-11-17 Hewlett-Packard Development Company, L.P. External cache operation based on clean castout messages
US8954942B2 (en) 2011-09-30 2015-02-10 Oracle International Corporation Optimizations using a BPEL compiler
US9189422B2 (en) 2013-02-07 2015-11-17 Avago Technologies General Ip (Singapore) Pte. Ltd. Method to throttle rate of data caching for improved I/O performance
WO2015122925A1 (en) * 2014-02-14 2015-08-20 Hewlett-Packard Development Company, L.P. Free flow assurance of atomicity of multiple updates in persistent memory
JP2015191604A (ja) * 2014-03-28 2015-11-02 富士通株式会社 制御装置、制御プログラム、および制御方法
US9977730B2 (en) 2015-05-08 2018-05-22 Dell Products, Lp System and method for optimizing system memory and input/output operations memory
JP6428521B2 (ja) * 2015-07-23 2018-11-28 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10909186B2 (en) 2015-09-30 2021-02-02 Oracle International Corporation Multi-tenant customizable composites
US20180285274A1 (en) * 2017-03-31 2018-10-04 Intel Corporation Apparatus, method and system for just-in-time cache associativity
US20250291733A1 (en) * 2024-03-12 2025-09-18 Ampere Computing Llc Multi-core processors evicting cache lines from lower-level caches to higher-level caches by core-to-core transfers

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5530832A (en) * 1993-10-14 1996-06-25 International Business Machines Corporation System and method for practicing essential inclusion in a multiprocessor and cache hierarchy
US6574710B1 (en) * 2000-07-31 2003-06-03 Hewlett-Packard Development Company, L.P. Computer cache system with deferred invalidation
US20020069341A1 (en) * 2000-08-21 2002-06-06 Gerard Chauvel Multilevel cache architecture and data transfer
US6665775B1 (en) * 2000-09-22 2003-12-16 Intel Corporation Cache dynamically configured for simultaneous accesses by multiple computing engines
US6901450B1 (en) * 2000-09-22 2005-05-31 Hitachi, Ltd. Multiprocessor machine and cache control method for providing higher priority to shared cache that is accessed by multiprocessors
US6877089B2 (en) * 2000-12-27 2005-04-05 International Business Machines Corporation Branch prediction apparatus and process for restoring replaced branch history for use in future branch predictions for an executing program
US6725336B2 (en) * 2001-04-20 2004-04-20 Sun Microsystems, Inc. Dynamically allocated cache memory for a multi-processor unit
US7076609B2 (en) * 2002-09-20 2006-07-11 Intel Corporation Cache sharing for a chip multiprocessor or multiprocessing system

Also Published As

Publication number Publication date
US20090106494A1 (en) 2009-04-23
US8176255B2 (en) 2012-05-08

Similar Documents

Publication Publication Date Title
DE102008048627A1 (de) Zuteilen von Platz in dedizierten Cache-Wegen
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE69514165T2 (de) Mehrstufige Cache-Speicheranordnung
DE69130086T2 (de) Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE60219436T2 (de) System mit adressbasierter Intraknotenkohärenz und datenbasierter Interknotenkohärenz
DE102007052853B4 (de) Zeilentauschschema zur Verringerung von Rückinvalidierungen in einem Snoopfilter
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE68924206T2 (de) Verfahren und Einrichtung zum Filtern von Ungültigkeitserklärungsanforderungen.
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE69518676T2 (de) Cache-Speicheranordnung für einen Speicher
DE112011102487B4 (de) Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen
DE3586635T2 (de) Vorausholungsanordnung fuer einen schnellpufferspeicher.
DE112012004209B4 (de) Dynamisch eingestellter Schwellenwert zum Belegen eines sekundären Cache-Speichers
DE69327387T2 (de) An einen paketvermittelten Bus gekoppelte Nachschreibsteuerungsschaltung für eine Cachespeichersteuerungsschaltung
DE102015118711B4 (de) Technologien zur Netzwerkpaketcacheverwaltung
DE112008002019T5 (de) Auslagern von Eingabe/Ausgabe (I/O)-Virtualisierungsarbeitsgängen an einem Prozessor
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE69900611T2 (de) Cache-Speicherkohärenzprotokoll mit einem Schwebezustand (H) mit einem genauen und einem ungenauen Modus
DE102007012058A1 (de) Synchronisieren von Neuheitsinformation in einer inklusiven Cache-Hierarchie
DE69930983T2 (de) Pseudo-genaue I-Cache-Speichereinschliessbarkeit für vertikale Cache-Speicher
DE102013201079A1 (de) Mechanismus des Weiterleitungsfortschritts für Speichervorgänge beim Vorhandensein einer Überlastung in einem System, das Belastungen durch Zustandsänderungen begünstigt
DE60001170T2 (de) Betriebsystemsseitenplazierung zum maximieren der cachedatenwiederverwendung
DE112006002565T5 (de) Befehlsunterstützte Cache-Verwaltung für den effizienten Einsatz von Cache und Speicher
DE112013000889T5 (de) Weiterleitungsfortschritts-Mechanismus für Speichervorgänge bei Vorhandensein von Ladekonflikten in einem Ladevorgänge begünstigenden System

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final

Effective date: 20130517