DE112016007029T5 - Vorrichtung und verfahren zum verwalten einer speicherseitigen cache-räumung - Google Patents

Vorrichtung und verfahren zum verwalten einer speicherseitigen cache-räumung Download PDF

Info

Publication number
DE112016007029T5
DE112016007029T5 DE112016007029.2T DE112016007029T DE112016007029T5 DE 112016007029 T5 DE112016007029 T5 DE 112016007029T5 DE 112016007029 T DE112016007029 T DE 112016007029T DE 112016007029 T5 DE112016007029 T5 DE 112016007029T5
Authority
DE
Germany
Prior art keywords
msc
memory
entry
processor
cache
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.)
Withdrawn
Application number
DE112016007029.2T
Other languages
English (en)
Inventor
Alejandro Duran Gonzalez
Robert G. Blankenship
Francesc Guim Bernat
Karthik Kumar
Martin P. Dimitrov
Thomas Willhalm
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of DE112016007029T5 publication Critical patent/DE112016007029T5/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/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; 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • 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
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

Abstract

Ein Prozessor enthält einen Verarbeitungskern und eine Caching-Schaltung, die kommunikativ an den Verarbeitungskern gekoppelt ist, umfassend eine Totblockvorhersageeinrichtung (DBP) zur Vorhersage, dass auf eine Cache-Linie in einem Last-Level Cache (LLC) bis zu einer Räumung aus dem LLC nicht zugegriffen wird, wobei in Antwort auf eine Vorhersage, dass auf die Cache-Linie bis zur Räumung nicht zugegriffen wird, die Caching-Schaltung eine Räumungsnachricht an eine Speichersteuerung ausgeben soll, wobei die Räumungsnachricht ein Flag umfasst, das einen DBP-Status der Cache-Linie angibt.

Description

  • TECHNISCHES GEBIET
  • Ausführungsformen der Offenbarung betreffen im Allgemeinen ein Verarbeitungssystem und insbesondere eine Vorrichtung und ein Verfahren zum Verwalten einer speicherseitigen Cache-Räumung.
  • HINTERGRUND
  • Caches eines Prozessors können zum Halten von Kopien von Daten verwendet werden, die im Speicher gespeichert sind, um die Latenz anschließender Zugriffe auf die Daten durch Verarbeitungskerne im Prozessor zu verkürzen. In einigen Szenarien können Caches von mehreren Hardware-Verarbeitungskomponenten, die mit dem Prozessor verknüpft sind, gemeinsam benutzt werden. Die Caches können zum Zwischenspeichern von Daten sowohl aus speicherabgebildeten Eingabe-/Ausgabeeinrichtungen (MMIO), wie Daten, die auf einer Festplatte oder in einem Basis-Eingabe-/Ausgabesystem (BIOS) Nur-Lese-Speicher (ROM) gespeichert sind, wie auch aus einem Direktzugriffsspeicher (RAM) verwendet werden.
  • Figurenliste
  • Die Offenbarung wird anhand der folgenden ausführlichen Beschreibung und aus den beiliegenden Zeichnungen verschiedener Ausführungsformen der Offenbarung besser verständlich. Die Zeichnungen sollten jedoch nicht als Einschränkung der Offenbarung auf die speziellen Ausführungsformen verstanden werden, sondern dienen vielmehr einer Erklärung und dem Verständnis.
    • 1 zeigt ein Verarbeitungssystem gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 2 zeigt ein detailliertes Verarbeitungssystem gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 3 zeigt Kreuzfunktionsablaufdiagramme unter Verwendung einer speicherseitigen Cache-Track-Logik, um eine Cache-Linie zu räumen und Daten aus einem fernen Speicher zu lesen, gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 4 ist ein Ablaufdiagramm eines Verfahrens zum Betreiben eines Verarbeitungssystems gemäß einer Ausführungsform der Offenbarung.
    • 5A ist ein Blockdiagramm, das eine Mikroarchitektur für einen Prozessor zeigt, in dem eine Ausführungsform der Offenbarung verwendet werden kann.
    • 5B ist ein Blockdiagramm, das eine In-Order-Pipeline und eine Registerumbenennungsstufe-, Out-of-Order-, Ausgabe/Ausführungs-Pipeline zeigt, die gemäß zumindest einer Ausführungsform der Offenbarung implementiert ist.
    • 6 zeigt ein Blockdiagramm der Mikroarchitektur für einen Prozessor gemäß einer Ausführungsform der Offenbarung.
    • 7 ist ein Blockdiagramm, das ein System zeigt, in dem eine Ausführungsform der Offenbarung verwendet werden kann.
    • 8 ist ein Blockdiagramm eines Systems, in dem eine Ausführungsform der Offenbarung arbeiten kann.
    • 9 ist ein Blockdiagramm eines Systems, in dem eine Ausführungsform der Offenbarung arbeiten kann.
    • 10 ist ein Blockdiagramm eines System-on-Chip (SoC) gemäß einer Ausführungsform der vorliegenden Offenbarung
    • 11 ist ein Blockdiagramm einer Ausführungsform eines SoC-Designs gemäß der vorliegenden Offenbarung.
    • 12 zeigt ein Blockdiagramm einer Ausführungsform eines Computersystems.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Der Speicher, der mit einem Prozessor verknüpft ist, kann eine mehrstufige Speicherstruktur enthalten, die einen speicherseitigen Cache (MSC) und einen fernen Speicher enthält. Der Prozessor kann mit einer Cache-Struktur verknüpft sein, enthaltend Level 1 bis Level 3 (L1 - L3) Caches und einen Last-Level Cache (LLC). Der Inhalt, der in einer Cache-Linie des LLC gespeichert ist, kann zum MSC geräumt werden. Der MSC kann ein naher Speicher sein (d.h., ein Speicher, der einem Prozessor nahe ist), der Inhalt aus dem LLC für einen fernen Speicher (d.h. einen Speicher, der weiter weg vom Prozessor ist als der nahe Speicher) zwischenspeichert, wo der Inhalt der geräumten Cache-Linie zu speichern ist. Derzeitige Implementierungen verknüpfen die geräumte Cache-Linie nicht mit einem Grund für die Cache-Räumung, was zu ineffizienten Räumungen führen kann, wenn Einträge in den MSC weiter zum fernen Speicher geräumt werden. Ausführungsformen der vorliegenden Offenbarung stellen eine technische Lösung bereit, um im Wesentlichen die ineffiziente Räumung von MSC-Einträgen zu fernen Speicher zu eliminieren, indem die MSC-Einträge nach dem Grund ihrer Cache-Räumungen klassifiziert werden.
  • 1 zeigt ein Verarbeitungssystem (z.B. ein System-on-Chip (SoC)) 100 gemäß einer Ausführungsform der vorliegenden Offenbarung. Das Verarbeitungssystem 100 kann einen Prozessor 102 und einen Speicher 104, der mehrstufig ist, enthalten, enthaltend einen speicherseitigen Cache (nahen Speicher) 122 und einen fernen Speicher 124. Der Prozessor 102 kann ein Hardware-Prozessor sein, wie zum Beispiel eine zentrale Verarbeitungseinheit (CPU). Der Prozessor 102 kann ferner einen oder mehrere Verarbeitungskerne 106, einen Caching-Agent 108, und eine Speichersteuerung 110 enthalten, die kommunikativ durch eine On-Die-Zwischenverbindung 112 gekoppelt sind. Der Verarbeitungskern 106 kann Logikschaltungen enthalten, wie zum Beispiel eine Anweisungsausführungs-Pipeline, um Operationen (z.B. uops) auszuführen und gewisse Aufgaben durchzuführen. Die Aufgaben können die Ausführung von Software-Anwendungen 114 enthalten, enthaltend Operationen (z.B. Speicherungen und Ladungen), um auf Daten im Speicher 104 über eine hierarchische Cache-Struktur zuzugreifen, die Level 1 bis Level 3 (L1 - L3) Caches enthalten kann, die mit Kernen 106 verknüpft sind. Der Caching-Agent 108 und die Speichersteuerung 110 können Logikschaltungen enthalten, die die Transaktionen zwischen verschiedenen Ebenen von Caches und Speicher 104 verwalten. In einer Ausführungsform ist der Caching-Agent 108 eine Logikschaltungseinheit, die Transaktionen mit Speicher 104 verarbeiten und Kopien der im Speicher 104 gespeicherten Daten behalten kann.
  • Wie in 1 dargestellt, kann der Caching-Agent 108 ferner einen Last-Level Cache (LLC) 116 enthalten. Der LLC 116 ist die höchste Ebene von Cache, die von den Verarbeitungskernen 106 gemeinsam zum Speichern von Kopien von Daten, die aus dem Speicher 104 abgerufen werden, oder von Kopien von Daten, die zum Speicher 104 geräumt werden, verwendet werden. Verglichen mit L1 bis L3 Caches ist LLC 116 allgemein am weitesten von den Verarbeitungskernen 106 entfernt und dem Speicher 104 am nächsten. Wenn Verarbeitungskerne 106 Daten aus einer Speicherstelle im Speicher 104 laden oder Daten an einer Speicherstelle in Speicher 104 speichern müssen, kann der Verarbeitungskern 106 zuerst Caches (in einer Reihenfolge von L1 bis L3, und dann LLC 116) auf einen entsprechenden Eintrag (bezeichnet als eine Cache-Linie) prüfen, der die Speicherstelle (z.B. die Speicheradresse) und die Kopie der von der Speicherstelle gespeicherten Daten enthält. Falls Verarbeitungskerne 106 die entsprechende Cache-Linie finden, ist es zu einem Cache-Treffer gekommen und die Verarbeitungskerne 106 können auf die Daten, die im Cache gespeichert sind, zugreifen (diese lesen oder schreiben). Falls Verarbeitungskerne 106 die entsprechende Cache-Linie in keinem der Caches (L1 - L3 und LLC) finden, ist es zu einem Cache-Fehlschlag gekommen. Im Fall eines Auftretens eines Cache-Fehlschlags im LLC 116 (d.h., keine entsprechende Cache-Linie in einem der Caches), können Verarbeitungskerne 106 eine neue Cache-Linie in LLC 116 für die entsprechende Speicheradresse erstellen, um eine Kopie der Daten zu speichern. Die neue Cache-Linie in LLC 116 kann ein Tag-Feld zum Speichern der Speicherstelle (Speicheradresse), ein Datenblock zum Speichern der Kopie der Daten (Nutzlast) und ein Flag-Bit zur Angabe, ob der Cache gültig oder ungültig ist, enthalten, das gemäß einem Cache-kohärenten Protokoll gesetzt wird.
  • LLC 116 kann eine begrenzte Anzahl von Cache-Linien enthalten. Wenn die Cache-Linien in LLC 116 alle verwendet sind (d.h. mit Kopien von Speicherdaten bestückt sind), kann der Caching-Agent 108, um Raum für eine neue Cache-Linie zu schaffen, den Inhalt eines der bestehenden Einträge in den Speicher 104 gemäß einer Cache-Austauschrichtlinie (z.B. die Richtlinie des zuletzt verwendeten (Least-Recently Used, LRU)) räumen müssen. Zusätzlich zum Räumen einer bestehenden Cache-Linie, wenn der LLC 116 vollständig gefüllt ist, kann der Caching-Agent 108 auch eine TotblockVorhersageeinrichtung (DBP) 118 enthalten, die eine Logikschaltung zum Berechnen der Wahrscheinlichkeit enthält, dass eine Cache-Linie oder ein Block von Cache-Linien (bezeichnet als ein Cache-Block) nicht verwendet wird.
  • Eine Cache-Linie (oder ein Cache-Block) in LLC 116 ist ab dem Zeitpunkt ihrer Erstellung bis zum Zeitpunkt ihrer letzten Bezugnahme durch Verarbeitungskerne 106 lebendig. Vom Zeitpunkt der letzten Bezugnahme bis zu ihrer Räumung wird die Cache-Linie (oder der Cache-Block) als tot angesehen. Daher kann der Prozessor 102 effizienter laufen, wenn Totblöcke im LLC 116 durch die DBP 118 früher vorhergesagt werden können. Die DBP 116 kann Totblöcke im LLC 116 auf Basis gewisser Kriterien, wie zum Beispiel der Verfolgung des Inhalts einer Cache-Linie vom LLC 116 zu den L1 - L3 Caches oder der Anzahl von Taktzyklen, über die eine Cache-Linie lebendig ist, vorhersagen. Eine Cache-Linie (oder ein Cache-Block), die laut Vorhersage bis zur Räumung nicht zu verwenden ist, wird als ein Totblock bezeichnet. Die DBP 118 kann die Wahrscheinlichkeit berechnen, dass eine Cache-Linie ein Totblock ist, und wenn die Wahrscheinlichkeit einen Schwellenwert übersteigt, einen Cache-Block als einen Totblock bestimmen und den Caching-Agent 118 auffordern, proaktiv die Totblöcke im LLC 116 zu räumen, sogar noch bevor der LLC vollständig gefüllt ist, um den Raum, der durch Totblöcke belegt ist, für neue Cache-Linien verfügbar zu machen, wodurch die Effizienz des LLC 116 verbessert wird.
  • Wenn eine Cache-Linie im LLC 116 geräumt ist, entweder weil die LLC-Kapazität erreicht ist oder aufgrund von Räumungsanfragen, die durch die DBP 118 generiert werden, kann der Caching-Agent 108 eine Räumungsnachricht an die Speichersteuerung 110 (auch als eine Speichermanagementeinheit (MMU) bezeichnet) senden. In einigen Implementierungen kann die Räumungsnachricht die virtuelle Speicheradresse und Datennutzlast enthalten. In Antwort auf einen Empfang der Räumungsnachricht kann die Speichersteuerung 110 eine virtuelle auf physische Speicheradressenabbildung mit einer Seitentabelle durchführen, auf die die Speichersteuerung 110 zugreifen kann, und dann die Datennutzlast an der physischen Speicheradresse im Speicher 104 speichern. Derzeitige Implementierungen stellen nicht fest, ob die Cache-Räumung verursacht wird, weil die LLC-Kapazitätsgrenze erreicht ist oder weil eine Totblockvorhersage aus der DBP 118 generiert wird. Die mangelnde Feststellung des Grunds für Cache-Räumungen kann eine ineffiziente Räumung von MSC-Einträgen zum fernen Speicher bewirken. Zum Beispiel kann ein MSC-Eintrag, der generiert wird, weil die LLC-Cache-Grenze erreicht ist, zum fernen Speicher geräumt werden, bevor ein MSC-Eintrag aufgrund eines Totblocks generiert wird.
  • Zum Aufnehmen großer Daten kann die mehrstufige Struktur von Speicher 104 verschiedene Arten von Speichereinrichtungen enthalten, die verschiedene Größen und Zugriffsgeschwindigkeiten haben. Zum Beispiel kann der Speicher 104 in mehreren Ebenen einen 3D-Schnittpunkt-, nicht flüchtigen Speicher (3D XP Speicher) haben, der dazu neigt, größere Kapazitäten zu bieten als ein dynamischer Direktzugriffsspeicher (DRAM), aber mit höheren Latenzen verknüpft ist. Der 3D XP Speicher kann als ferner Speicher 124 verwendet werden, der vom Prozessor 102 weiter weg ist (oder länger für einen Zugriff braucht). Der Speicher 104 mit mehreren Ebenen kann auch einen Speicher hoher Bandbreite (HBM) wie zum Beispiel einen Mehrfachkanal-DRAM (MCDRAM) enthalten, der eine höhere Zugriffsgeschwindigkeit aber geringe Kapazität hat. Wie in 1 dargestellt, kann der HBM als naher Speicher 122 verwendet werden, auf den der Prozessor 102 zuerst zugreift, bevor er auf den fernen Speicher 124 zugreift.
  • In einigen Implementierungen kann der nahe Speicher 122 als ein speicherseitiger Cache (MSC) für ferne Speicher 124 dienen. Der MSC 122 kann MSC-Einträge, die die Datennutzlast speichern, die im fernen Speicher 124 gespeichert sind, und entsprechende Speicheradressen des fernen Speichers 124 enthalten. Wenn daher eine Cache-Räumung erfolgt, kann die Speichersteuerung 110 zuerst einen MSC-Eintrag im MSC 122 zum Speichern der Datennutzlast und der Speicheradresse erstellen, die in der Räumungsnachricht angegeben ist. Der MSC 122 kann schließlich den Inhalt im MSC-Eintrag zum fernen Speicher 124 räumen.
  • Wenn ein Cache-Fehlschlag im Prozessor 102 eintritt, können die Verarbeitungskerne 106 zuerst zum MSC 122 sehen um festzustellen, ob der MSC 122 eine Kopie der Daten hat, die im Speicher 104 mit mehreren Ebenen gespeichert ist. Falls der MSC 122 die Daten enthält, kann ein MSC-Treffer eintreten. Die Verarbeitungskerne 106 können auf die Daten vom MSC 122 zugreifen. Falls der MSC 122 die Daten nicht enthält, tritt ein MSC-Fehlschlag ein. Die Verarbeitungskerne 106 müssen auf die Daten vom fernen Speicher 124 zugreifen. Da der Zugriff auf einen fernen Speicher typischerweise langsam ist, können MSC-Fehlschläge die Zeit signifikant verlängern, die der Prozessor 102 zur Beendigung einer Aufgabe benötigt.
  • Sobald eine LLC-Cache-Linie zum Speicher 124 geräumt ist, wird die LLC-Cache-Linie zuerst als ein MSC-Cache-Eintrag im MSC 122 zwischengespeichert, bevor sie weiter in den fernen Speicher geräumt wird. Somit können Verarbeitungskerne 106 auf die MSC-Einträge vom MSC 122 zugreifen, wenn sie nicht weiter zum fernen Speicher geräumt werden. Falls sie zum fernen Speicher geräumt werden, müssen die Verarbeitungskerne 106 vom fernen Speicher abrufen. Das Abrufen vom fernen Speicher kann ziemlich teuer sein. Derzeitige Implementierungen von pressenden Systemen geben den Grund einer Cache-Räumung in der Räumungsnachricht nicht an, die vom Caching-Agent 108 an die Speichersteuerung 110 gesendet wird. Somit erstellt die Speichersteuerung 122 MSC-Einträge im MSC 122 ohne Unterscheidungen unter diesen Einträgen. In Betrieb kann jedoch die Wahrscheinlichkeit, dass die Verarbeitungskerne 106 auf einen MSC-Eintrag zugreifen, abhängig von dem Grund für die Räumung durch den Caching-Agent 108 variieren. Zum Beispiel wird mit höherer Wahrscheinlichkeit von Verarbeitungskernen 106 auf einen MSC-Eintrag zugegriffen, der erstellt wurde, weil die Kapazität des LLC 116 erreicht wurde, als auf jene, die aufgrund der Vorhersagen erstellt wurden, die durch die DBP 118 generiert werden.
  • Ausführungsformen der vorliegenden Offenbarung stellen eine technische Lösung bereit, die Informationen (z.B. ein Flag) in einer Räumungsnachricht bereitstellt, um die Ursache der Cache-Räumung anzugeben. Ferner kann die Speichersteuerung 110 einen MSC-Spurfolgekreis 120 enthalten, um MSC-Einträge zu verfolgen, die mit gewissen Flags verknüpft sind, und diese MSC-Einträge gemäß einer MSC-Austauschrichtlinie räumen, um die Effizienz des MSC 122 zu verbessern. In einer Ausführungsform kann der Caching-Agent 122 einen Ein-Bit-Indikator (ein DBP-Flag) in der Räumungsnachricht 126 bereitstellen um anzugeben, dass die Cache-Räumung durch die DBP 118 verursacht wurde (z.B. DBP-Flag = 1, um eine Totblockräumung anzugeben, und DBP-Flag = 0, um eine Nicht-Totblockräumung anzugeben). In einer anderen Ausführungsform kann der Caching-Agent 122 einen Indikator bereitstellen, der mehr als ein Bit ist, um verschiedene Arten von Räumung anzugeben. Der Indikator kann ein Flag-Bit sein, das von der Nutzlast getrennt ist. Alternativ kann der Indikator in die Nutzlast an einer spezifischen Bitstelle (z.B. dem ersten Bit) eingesetzt werden.
  • Der MSC-Spurfolgekreis 120 der Speichersteuerung 110 kann die Räumungsnachricht 126 mit freigegebenen DBP-Flag empfangen, um eine DBP Cache-Räumung anzugeben, und einen Eintrag in einem MSC-Puffer 128 erstellen, der eine Region innerhalb des MSC 122 zum Speichern temporärer MSC-Einträge ist. Diese temporären MSC-Einträge, die im MSC-Puffer 128 gespeichert sind (bezeichnet als MSC-Puffereinträge), sind mit einem maximalen Lebensdauerwert verknüpft, der in einem entsprechenden Zähler gespeichert ist. Ein MSC-Puffer-Eintrag ist zur Räumung an einen fernen Speicher bereit, wenn seine maximale Lebensdauer erreicht ist. Der MSC-Puffer-Eintrag im MSC-Puffer 128 kann die Datennutzlast, die Speicheradresse des fernen Speichers 124 zum Speichern der Datennutzlast und eine Zeitgrenze enthalten, sodass, wenn diese erreicht ist, der Eintrag zum fernen Speicher 124 geräumt werden soll, falls nicht auf den Eintrag durch die Verarbeitungskerne 106 (oder andere Agenten) innerhalb der Zeitgrenze zugegriffen wird. In einer Ausführungsform kann die Zeitgrenze eine vorbestimmte Anzahl (N) von Prozessortaktzyklen sein, die seit dem Speichern des Eintrags im MSC-Puffer 128 verstrichen sind. Auf diese Weise kann die Zeit von MSC-Einträgen im MSC 122, verknüpft mit DBP Cache-Räumungen, unter Verwendung von Zählern verfolgt werden, und diese können zum fernen Speicher 124 geräumt werden, wenn sie durch die Verarbeitungskerne 106 nicht innerhalb der Zeitgrenze angerührt werden, die in der MSC-Austauschrichtlinie festgesetzt ist. Falls dieser MSC-Spurfolgekreis 120 eine Räumungsnachricht empfängt, in der das DBP-Flag nicht gesetzt ist (was eine Nicht-Totblockräumung angibt), kann die Speichersteuerung 110 einen MSC-Eintrag im MSC 122 (außerhalb des MSC-Puffers 128) erstellen. Dieser MSC-Eintrag ist nicht mit einem Totblock verknüpft und wird nicht durch den MSC-Spurfolgekreis 120 verfolgt.
  • 2 zeigt eine detailliertes Verarbeitungssystem 200 gemäß einer Ausführungsform der vorliegenden Offenbarung. Wie in 2 (ähnlich 1) dargestellt, kann das Verarbeitungssystem 200 eine Speichersteuerung 110 zum Empfangen von Räumungsnachrichten 126 von einem Caching-Agent und zum Zugreifen (Lesen oder Schreiben) auf einen Speicher 104 mit mehreren Ebenen enthalten. Die Speichersteuerung 110 kann einen MSC-Spurfolgekreis 120 enthalten, der bestimmen kann, ob ein Flag (z.B. ein DBP-Flag) in der Räumungsnachricht freigegeben ist, um anzugeben, dass die geräumte Cache-Linie zu einer speziellen Klasse (z.B. Totblöcken) gehört, die mit einer begrenzten Lebensdauer verknüpft ist. Abhängig von der Bestimmung, dass das Flag in der Räumungsnachricht freigegeben ist (z.B. DBP-Flag = 1), kann der MSC-Spurfolgekreis 120 einen MSC-Puffer-Eintrag im MSC-Puffer 128 erstellen, der Teil des MSC 122 ist.
  • In einer Ausführungsform kann der MSC-Puffer 128 eine Anzahl von MSC-Puffereinträgen 202 - 206 enthalten. Jeder MSC-Puffer-Eintrag 202 - 206 kann ein erstes Feld zum Speichern einer Speicheradresse (z.B. Speicheradresse 1, 2, 3) und ein zweites Feld zum Speichern einer Datennutzlast (z.B. Nutzlast 1, 2, 3) enthalten. Die Datennutzlast stellt den Inhalt dar, der aus dem LLC zum Speicher 104 geräumt wird, und die Speicheradresse stellt die physische Speicheradresse dar, die mit dem fernen Speicher 124 verknüpft ist, an der die Datennutzlast gespeichert ist. Der MSC 122 ist typischerweise kleiner aber schneller als der ferne Speicher 124, sodass ein zweistufiger Speicher 104 eine große Menge an Daten effizienter handhaben kann. In einer Ausführungsform kann der MSC-Spurfolgekreis 120 Zugriff auf einen Stapel von Zählern 208 - 210 haben. Jeder der Zähler 208 - 212 ist einem entsprechenden von MSC-Puffereinträgen 202 - 206 in einer Pufferregion (MSC-Puffer 128) des MSC 122 zugewiesen. Zum Beispiel können Zähler 208 - 212 jeweils mit MSC-Puffereinträgen 202 -206 verknüpft sein. Abhängig von einer Bestimmung, dass das Flag in der Räumungsnachricht freigegeben ist, und dem Erstellen eines entsprechenden MSC-Puffer-Eintrags 202 -206 initiiert der MSC-Spurfolgekreis 120 den entsprechenden Zähler 208 - 212 auf einen Anfangswert. In einer Ausführungsform ist der Anfangswert ein Zeitschwellenwert, der eine maximale Lebensdauer des MSC-Puffer-Eintrags angibt, sodass, wenn sie erreicht ist, der MSC-Puffer-Eintrag zum fernen Speicher 124 geräumt wird. In einer Ausführungsform kann eine Anwendungsprogrammierungsschnittstelle (API) für Software-Anwendungen 114 bereitgestellt sein, die auf Verarbeitungskernen 106 laufen, um der Anwendung zu erlauben, die Anfangswerte in Zählern 208 - 212 einzustellen. Zum Beispiel können Software-Anwendungen ein modellspezifisches Register (MSR), das die maximale Lebensdauer enthält, auf eine voreingestellte Anzahl von Taktzyklen (MSR_DBP_MSC_N_CYCLES) einstellen.
  • Der Zählerwert kann jeden Taktzyklus gesenkt werden. Der MSC-Spurfolgekreis 120 kann den Zählerwert verfolgen, bis er Null erreicht, was angibt, dass der MSC-Puffer-Eintrag 202 - 206 zum fernen Speicher 124 geräumt werden kann. In einer Ausführungsform, wenn der Zählerwert den Wert Null erreicht, kann die Speichersteuerung 110 eine Räumung der Datennutzlast zum fernen Speicher 124 auf Basis der Speicheradresse einleiten, die im MSC-Puffer-Eintrag gespeichert ist, ohne auf ein Eintreten eines weiteren Auslöserereignisses zu warten. Alternativ kann der MSC-Spurfolgekreis 120 den Zählerwert auf die maximale Lebensdauer zurückstellen, falls auf den MSC-Puffer-Eintrag durch den Verarbeitungskern 106 zugegriffen (aus diesem gelesen oder in diesen geschrieben) wird, bevor der Zählerwert Null erreicht.
  • In einer anderen Ausführungsform, nachdem der Zählerwert den Nullwert erreicht hat, räumt die Speichersteuerung 110 den MSC-Puffer-Eintrag nicht sofort. Vielmehr wartet die Speichersteuerung 110 auf ein weiteres Auslöserereignis zum Einleiten der Räumung des MSC-Puffer Eintrags. In einer Ausführungsform kann der MSC-Spurfolgekreis 120 die Anzahl anstehender Anfragen (die jede Art von Speicherzugriffsanfragen durch die Speichersteuerung 110 sein können) an Zwischenverbindungsaustrittsanschlüssen, die mit der On-Die-Zwischenverbindung 112 verknüpft sind, wie in 1 dargestellt. Das Auslöserereignis zum Einleiten der Räumung des MSC-Puffer-Eintrags kann eintreten, wenn die Anzahl von Anfragen an die Zwischenverbindungsaustrittsanschlüsse geringer ist als ein Schwellenwert (z.B. 10). Somit kann die Räumung des MSC-Puffer-Eintrags basierend auf einer Messung der Nutzung des MSC 122 erfolgen und das Räumungsereignis kann eintreten, während die Speichersteuerung 110 bestimmt, dass eine geringe Nutzung der Speichersteuerung 110 vorliegt.
  • In einer anderen Ausführungsform kann die Speichersteuerung 110 die Speicherräumung basierend auf anderen Auslösungsereignissen einleiten, wie zum Beispiel dem Verlauf früherer Speicherräumungen (z.B. ferne Speicherregionen, in die geräumt wird). Die Speichersteuerung 110 kann eine Vorhersageschaltung enthalten, um das Eintreten dieser Auslösungsereignisse zu detektieren.
  • Falls die Verarbeitungskerne 106 eine Operation ausführen, die Daten aus dem Speicher 104 liest, kann die Speichersteuerung 110 zuerst den MSC 122, der den MSC-Puffer 128 enthält, prüfen um zu bestimmen, ob die angefragten Daten im MSC 122 gespeichert sind. In Antwort auf ein Bestimmen, dass die Daten in einem Eintrag des MSC 122 gespeichert sind (z.B. im MSC-Puffer 128 bevor eine Räumung eintritt, oder einem MSC-Eintrag außerhalb des MSC-Puffers 128), kann die Speichersteuerung 110 die Daten vom MSC 122 mit weniger Latenz abrufen.
  • In einer Ausführungsform sind der MSC 122 und ferne Speicher 124 wechselseitig in dem Sinn ausschließend, dass ein Eintrag, der in einem (z.B. MSC 122) gespeichert ist, im anderen (z.B. fernen Speicher 124) nicht gespeichert ist. In der ausschließlichen Speichersituation kann die Räumung durch Ausführen eines Schreibvorgangs des MSC-Puffer-Eintrags im fernen Speicher 124 erfolgen. In einer anderen Ausführungsform sind der MSC 122 und ferne Speicher 124 in dem Sinn einschließlich, dass ein Eintrag, der in einem (z.B. MSC 122) gespeichert ist, auch im anderen (z.B. fernen Speicher 124) gespeichert ist. In der einschließlichen Speichersituation kann nach dem Schreiben des MSC-Puffer-Eintrags in den fernen Speicher 124 die Speichersteuerung 110 ferner den MSC-Puffer-Eintrag im MSC-Puffer 128 entfernen. Zum Beispiel kann die Speichersteuerung 110 den MSC-Puffer-Eintrag 202 - 204 entfernen, indem ein Status-Flag auf ungültig gesetzt wird. In einer Ausführungsform kann ein MSC-Puffer-Eintrag ein zweites Flag (z.B. ein Bit) zur Angabe enthalten, ob der MSC-Puffer-Eintrag ein gültig Eintrag oder ein ungültiger Eintrag ist.
  • 3 zeigt Kreuzfunktionsablaufdiagramme 300 unter Verwendung eines MSC-Spurfolgekreises zum Räumen einer Cache-Linie und Lesen von Daten aus dem fernen Speicher gemäß einer Ausführungsform der vorliegenden Offenbarung. 3 zeigt den Ablauf einer Räumung einer schmutzigen Cache-Linie (@a) aus dem LLC 116 und anschließend eines Lesens von Daten aus dem fernen Speicher 124 (@b) durch Anwenden des MSC-Spurfolgekreises 120.
  • Wie in 3 dargestellt, können Ausführungsformen der vorliegenden Offenbarung dazu beitragen, die Verzögerung beim Abrufen von Daten (@b) aus dem fernen Speicher 124 zu verringern und die Wahrscheinlichkeit einer Unterbreitung eines teuren Fehlers beim Abrufen eines Eintrags aus dem fernen Speicher verringern. In 330 können Verarbeitungskerne 106 eine Speicher Operation (z.B. einen Speicherschreiben) ausführen, die eine Cache-Linie (@a) in LLC 116 generiert. Die Cache-Linie (@a) kann aufgrund von Operationen, die durch die Verarbeitungskerne 106 ausgeführt werden, modifiziert werden, um eine schmutzige Cache-Linie zu werden. In 332 kann die DBP 118 des Caching-Agenten 108 auf Basis einer berechneten Wahrscheinlichkeit, dass auf die Cache-Linie (@a) erst bei ihrer Räumung durch Verarbeitungskerne 106 zugegriffen wird, bestimmen, dass diese Cache-Linie (@a) ein Totblock ist, auf den die Verarbeitungskerne 106 wahrscheinlich nicht wieder zugreifen. In Antwort auf die Bestimmung, dass die Cache-Linie (@a) ein Totblock ist, kann der Caching-Agent 108 in 334 die Cache-Linie (@a) aus dem LLC 116 zu einem MSC-Puffer-Eintrag im MSC-Puffer 128 des MSC 122 räumen und eine Räumungsnachricht senden, die die Speicheradresse, die Datennutzlast und ein Flag enthält, das angibt, dass die Cache-Linie als ein Totblock geräumt ist. Die Speichersteuerung 110 kann den MSC-Puffer-Eintrag erstellen, der die Speicheradresse und die Datennutzlast (@a) enthält. In Antwort auf ein Erstellen des MSC-Puffer Eintrags kann die Speichersteuerung einen Zähler, der dem MSC-Puffer-Eintrag zugewiesen ist, auf einen Zeitgrenzwert initiieren (z.B. Anzahl von Prozessortaktzyklen). Der Zählerwert kann gesenkt werden, während sich der Prozessortakt vorwärtsbewegt. In 336 kann die MSC-Tracker-Logik 120 den Zählerwert überwachen, der dem MSC-Puffer-Eintrag zugewiesen ist, um zu bestimmen, ob der Zählerwert Null erreicht hat. Falls der Zählerwert Null erreicht, kann die Speichersteuerung 110 den Inhalt des MSC-Puffer-Eintrags zum fernen Speicher 124 räumen. Alternativ kann der MSC-Spurfolgekreis 120 auf ein Eintreten eines Auslöserereignisses warten (z.B. wenn die Nutzung von Ressourcen gemäß einer Anzahl von Anfragen auf der On-Line-Zwischenverbindung 112 gering ist) und in Antwort auf das Eintreten des Auslöserereignisses, nachdem der Zähler Null erreicht hat, den Inhalt des MSC-Puffer-Eintrags zum fernen Speicher 124 räumen.
  • Anschließend können die Verarbeitungskerne 106 in 338 eine zweite Operation ausführen, die Daten (@b) aus dem fernen Speicher 106 liest. In 340 kann der Caching-Agent 108 bestimmen, dass der LLC 116 (oder einer der L1 - L3 Caches) keine Kopie der Daten (@b) enthält, und die Leseanfrage an die Speichersteuerung 110 weiterleiten, um nach Daten (@b) im MSC 122 zu suchen. In Antwort auf die Bestimmung, dass der MSC 122 die Daten (@b) nicht enthält, in 342, kann die Speichersteuerung 110 diese Daten (@b) lesen, die im fernen Speicher 124 gespeichert sind, ohne den MSC-Puffer-Eintrag räumen zu müssen, der mit der Cache-Linie (@a) verknüpft ist. In 344 kann die Speichersteuerung 110 einen neuen MSC-Eintrag im MSC 122 erstellen, der mit den Daten (@b)verknüpft ist, wobei der MSC-Eintrag die Speicheradresse und die Datennutzlast enthalten kann. In 346 kann die Speichersteuerung 110 den Caching-Agenten 108 informieren, eine neue Cache-Linie für die Daten (@b) zu erstellen, die aus dem fernen Speicher 124 abgerufen wurden. In 348 können die Verarbeitungskerne 106 die Daten (@b)empfangen, die aus dem fernen Speicher 124 abgerufen wurden. Die Ausführungsform der vorliegenden Offenbarung, wie in 3 dargestellt, kann die Abrufzeit der Daten (@b)verringern, indem der MSC-Puffer-Eintrag (@a) zu einer passenden Zeit vorab geräumt wird, wenn der MSC 122 nicht beschäftigt ist, wodurch die Leistung von Prozessor 102 und Verarbeitungssystem 100 verbessert wird.
  • 4 ist ein Ablaufdiagramm eines Verfahrens zum Betreiben eines Verarbeitungssystems gemäß einer Ausführungsform der Offenbarung. Das Verfahren 400 kann durch Verarbeitungslogik durchgeführt werden, die Hardware (z.B. Schaltkreis, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (wie Anweisungen, die auf einem Verarbeitungssystem laufen, ein Allzweck-Computersystem oder eine dedizierte Maschine), Firmware oder eine Kombination davon enthält. In einer Ausführungsform kann das Verfahren 400 teilweise durch Verarbeitungslogik des Caching-Agenten 108 durchgeführt werden, der in Bezug auf 1 beschrieben ist.
  • Der einfachen Erklärung wegen ist das Verfahren 400 als eine Reihe von Vorgängen dargestellt und beschrieben. Vorgänge gemäß dieser Offenbarung können jedoch in anderer Reihenfolge und/oder gleichzeitig und mit anderen Vorgängen auftreten, die hier nicht dargestellt und beschrieben sind. Außerdem können nicht alle Vorgänge zum Implementieren des Verfahrens 400 gemäß dem offenbarten Gegenstand durchgeführt werden. Zusätzlich werden Fachleute verstehen und zu schätzen wissen, dass das Verfahren 400 auch als eine Reihe von miteinander zusammenhängenden Zuständen über ein Zustandsdiagramm oder Ereignisse dargestellt werden könnte.
  • Unter Bezugnahme auf 4 kann in 402 eine Totblockvorhersageeinrichtung (DBP) eines Caching-Agenten bestimmen, dass eine Cache-Linie eines Last-Level Cache (LLC) ein Totblock ist, der zu einem speicherseitigen Cache in einem Speicher mit mehreren Ebenen geräumt werden muss.
  • In 404 kann der Caching-Agent, in Antwort auf eine Bestimmung, dass die Cache-Linie der Totblock ist, der geräumt werden muss, eine Räumungsnachricht an eine Speichersteuerung generieren. Die Räumungsnachricht enthält eine Nutzlast und eine Speicheradresse, die in der Cache-Linie gespeichert sind, und ein Flag, das einen DBP-Status der Cache-Linie angibt.
  • In 406, kann der Caching-Agent die Räumungsnachricht an einen speicherseitigen Cache- (MSC-) Spurfolgekreis in der Speichersteuerung senden. Der MSC-Spurfolgekreis kann einen MSC-Eintrag im MSC erstellen, wobei der MSC-Eintrag eine begrenzte Lebensdauer hat.
  • 5A ist ein Blockdiagramm, das eine Mikroarchitektur für einen Prozessor 500 gemäß einer Ausführungsform der Offenbarung zeigt, der die Verarbeitungseinrichtung implementiert, die heterogene Kerne enthält. Im Speziellen zeigt der Prozessor 500 einen In-Order-Architekturkern und eine Registerumbenennungslogik, Out-of-Order-, Ausgabe-/Ausführungslogik, die in einem Prozessor gemäß zumindest einer Ausführungsform der Offenbarung enthalten sind.
  • Der Prozessor 500 enthält eine Frontend-Einheit 530, die an eine Ausführungsengineeinheit 550 gekoppelt ist, und beide sind an eine Speichereinheit 570 gekoppelt. Der Prozessor 500 kann einen reduzierten Anweisungssatz berechnenden (RISC) Kern, einen komplexen Anweisungssatz berechnenden (CISC) Kern, einen Kern mit sehr langem Befehlswort (VLIW) oder einen hybriden oder alternativen Kerntyp enthalten. Als eine andere Option kann der Prozessor 500 eine Spezialzweckkern, wie zum Beispiel einen Netzwerk- oder Kommunikationskern, eine Kompressionsengine, einen Grafikkern oder dergleichen enthalten. In einer Ausführungsform kann der Prozessor 500 ein Mehrfachkernprozessor sein oder Teil eines Mehrfachprozessorsystems sein.
  • Die Frontend-Einheit 530 enthält eine Abzweigungsvorhersageeinheit 532, die an eine Anweisungs-Cache-Einheit 534 gekoppelt ist, die an einen Anweisungs-Translation-Lookaside-Puffer (TLB) 536 gekoppelt ist, der an eine Anweisungsabrufeinheit 538 gekoppelt ist, die an eine Decodiereinheit 540 gekoppelt ist. Die Decodiereinheit 540 (auch bekannt als Decodierer) kann Anweisungen decodieren und als Ausgang eine oder mehrere Mikrooperationen, Mikro-Codeeingabepunkte, Mikroanweisungen, andere Anweisungen oder andere Steuersignale generieren, die aus den ursprünglichen Anweisungen decodiert werden oder diese auf andere Weise wiederspiegeln oder von diesen abgeleitet sind. Der Decodierer 540 kann unter Verwendung verschiedener Mechanismen implementiert sein. Beispiele für geeignete Mechanismen enthalten, ohne aber darauf beschränkt zu sein, Verweistabellen, Hardware-Implementierungen, programmierbare logische Arrays (PLAs), Mikrocode-Nur-Lese-Speicher (ROMs) usw. Die Anweisungs-Cache-Einheit 534 ist ferner an die Speichereinheit 570 gekoppelt. Die Decodiereinheit 540 ist an eine Umbenennungs-/Zuordnungseinheit 552 in der Ausführungsengineeinheit 550 gekoppelt.
  • Die Ausführungsengineeinheit 550 enthält die Umbenennungs-/Zuordnungseinheit 552, die an eine Retirement-Einheit 554 und einen Satz aus einer oder mehreren Planungseinheit(en) 556 gekoppelt ist. Die Planungseinheit(en) 556 stellt (stellen) eine Anzahl verschiedener Planer dar, enthaltend Reservierungsstationen (RS), zentrales Anweisungsfenster usw. Die Planungseinheit(en) 556 ist (sind) an die physische(n) Registerdateieinheit(en) 558 gekoppelt. Jede der physischen Registerdateieinheiten 558 stellt eine oder mehr physische Registerdateien dar, von welchen verschiedene einen oder mehrere verschiedene Datentypen speichern, wie skalare ganze Zahl, skalares Gleitkomma, gepackte ganze Zahl, gepacktes Gleitkomma, Vektorganzzahl, Vektorgleitkomma usw., Status (z.B. einen Anweisungspointer, der die Adresse ist, wo die nächste Anweisung ausgeführt werden soll) usw.. Die physische(n) Registerdateieneinheit(en) 558 ist (sind) von der Retirement-Einheit 554 überlappt, um verschiedenen Möglichkeiten zu zeigen, in welchen eine Registerumbenennungs- und Out-of-Order-Ausführung implementiert sein kann (z.B. unter Verwendung von Neuordnungspuffer(n) und Retirement-Registerdatei(en); unter Verwendung zukünftiger Datei(en), Verlaufspuffer und Retirement-Registerdatei(en); unter Verwendung von Registerkarten und eines Pools von Registern; usw.).
  • Im Allgemeinen sind die Architekturregister von der Außenseite des Prozessors oder aus einer Perspektive eines Programmierers sichtbar. Die Register sind nicht auf eine bestimmte Art von Schaltung beschränkt. Es sind zahlreiche verschiedene Arten von Registern geeignet, solange sie imstande sind, Daten wie hier beschrieben bereitzustellen und zu speichern. Beispiele für geeignete Register enthalten, ohne aber darauf beschränkt zu sein, dedizierte physische Register, dynamisch zugeordnete physische Register unter Verwendung einer Registerumbenennung, Kombinationen aus dedizierten und dynamisch zugeordneten physischen Registern usw. Die Retirement-Einheit 554 und die physischen Registerdateieinheit(en) 558 sind an den (die) Ausführungscluster 560 gekoppelt. Der (die) Ausführungscluster 560 enthält einen Satz aus einer oder mehreren Ausführungseinheiten 562 und einen Satz aus einer oder mehreren Speicherzugriffseinheiten 564. Die Ausführungseinheiten 562 können verschiedene Operationen (z.B. Verschiebungen, Addition, Subtraktion, Multiplikation) ausführen und verschiedene Arten von Daten bearbeiten (z.B. skalares Gleitkomma, gepackte Ganzzahl, gepacktes Gleitkomma, Vektorganzzahl, Vektorgleitkomma).
  • Während einige Ausführungsformen eine Anzahl von Ausführungseinheiten enthalten können, die für spezifische Funktionen oder Sätze von Funktionen bestimmt sind, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten enthalten, die alle sämtliche Funktionen durchführen. Die Planungseinheit(en) 556, physischen Registerdateieneinheit(en) 558 und Ausführungscluster 560 sind in einer möglichen Mehrzahl dargestellt, da gewisse Ausführungsformen separate Pipelines für gewisse Typen von Daten/Operationen schaffen (z.B. eine skalare Ganzzahl-Pipeline, eine skalare Gleitkomma-/gepackte Ganzzahl-/gepackte Gleitkomma-/Vektorganzzahl- /Vektorgleitkomma-Pipeline und/oder eine Speicherzugriffs-Pipeline, die jeweils ihre eigene Planungseinheit, physische Registerdateieneinheit und/oder eigenen Ausführungscluster haben - und im Fall einer separaten Speicherzugriffs-Pipeline sind gewisse Ausführungsformen implementiert, in welchen nur der Ausführungscluster dieser Pipeline die Speicherzugriffseinheit(en) 564 aufweist). Es sollte auch klar sein, dass, wenn separate Pipelines verwendet werden, eine oder mehrere dieser Pipelines Out-of-Order-Ausgabe-/Ausführung sein können und der Rest In-Order.
  • Der Satz von Speicherzugriffseinheiten 564 ist an die Speichereinheit 570 gekoppelt, die eine Datenvorabrufeinheit 580, eine Daten-TLB-Einheit 572, eine Daten-Cache-Einheit (DCU) 574 und eine Level 2 (L2) Cache-Einheit 576 enthalten kann, um einige Beispiele zu nennen. In einigen Ausführungsformen ist die DCU 574 auch als ein erster Level Daten-Cache (L1 Cache) bekannt. Die DCU 574 kann mehrere herausragende Cache-Fehlschläge handhaben und weiterhin eingehende Speicherungen und Ladungen bedienen. Sie unterstützt auch ein Aufrechterhalten einer Cache-Kohärenz. Die Daten-TLB-Einheit 572 ist ein Cache, der zum Verbessern einer virtuellen Adressenübersetzungsgeschwindigkeit durch Abbilden virtueller und physischer Adressenräume verwendet wird. In einer beispielhaften Ausführungsform können die Speicherzugriffseinheiten 564 eine Ladeeinheit, eine Speicheradresseneinheit und eine Speicherdateneinheit enthalten, von welchen jede an die Daten-TLB-Einheit 572 in der Speichereinheit 570 gekoppelt ist. Die L2 Cache-Einheit 576 kann an eine oder mehrere andere Cache-Level und schließlich an einen Hauptspeicher gekoppelt sein.
  • In einer Ausführungsform lädt die Datenvorabrufeinheit 580 spekulativ Daten in die DCU 574 bzw. ruft diese vorab ab, indem sie automatisch vorhersagt, welche Daten ein Programm brauchen wird. Das Vorabrufen kann sich auf ein Überführen von Daten, die in einer Speicherstelle einer Speicherhierarchie gespeichert sind (z.B. Caches oder Speicher tieferer Ebene), zu einer Speicherstelle höherer Ebene beziehen, die dem Prozessor näher ist (z.B. geringere Zugriffslatenz ergibt), bevor die Daten tatsächlich vom Prozessor verlangt werden. Genauer kann sich ein Vorabrufen auf das frühe Abrufen von Daten aus einem der Caches/Speicher tieferer Ebene zu einem Daten-Cache und/oder Vorabrufpuffer beziehen, bevor der Prozessor eine Anfrage stellt, spezielle Daten zurückzusenden.
  • Der Prozessor 500 kann einen oder mehrere Anweisungssätze (z.B. den x86 Anweisungssatz (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt wurden); den MIPS-Anweisungssatz von MIPS Technologies, Sunnyvale, CA; den ARM-Anweisungssatz (mit optionalen zusätzlichen Erweiterungen wie NEON) von ARM Holdings, Sunnyvale, CA), unterstützen.
  • Es sollte klar sein, dass der Kern Multithreading (Ausführung von zwei oder mehr parallelen Sätzen von Operationen oder Threads) unterstützen kann und dies auf zahlreiche Weisen machen kann, einschließlich zeitlich zerhackten Multithreadings, simultanen Multithreadings (wo ein einzelner physischer Kern einen logischen Kern für jeden der Threads bereitstellt, den der physische Kern einem simultanen Multithreading unterzieht), oder einer Kombination davon (z.B. zeitlich zerhacktes Abrufen und Decodieren und anschließend simultanes Multithreading, wie in der Intel® Hyperthreading Technologie).
  • Während eine Registerumbenennung im Zusammenhang mit einer Out-of-Order-Ausführung beschrieben ist, sollte klar sein, dass Registerumbenennung in einer In-Order-Architektur verwendet werden kann. Während die dargestellte Ausführungsform des Prozessors auch separate Anweisungs- und Daten-Cache-Einheiten und eine gemeinsam benutzte L2-Cache-Einheit enthält, können alternative Ausführungsformen einen einzigen internen Cache sowohl für Anweisungen wie auch Daten haben, wie zum Beispiel einen Level 1 (L1) internen Cache oder mehrere Level von internem Cache. In einigen Ausführungsformen kann das System eine Kombination von internem Cache und externem Cache, der extern zum Kern und/oder Prozessor ist, enthalten. Alternativ kann der gesamte Cache extern zum Kern und/oder Prozessor.
  • 5B ist ein Blockdiagramm, das eine In-Order-Pipeline und eine Registerumbenennungsstufe, Out-of-Order-, Ausgabe-/Ausführungs-Pipeline gemäß einigen Ausführungsformen der Offenbarung zeigt, die durch Verarbeitungseinrichtung 500 von 5A implementiert sind. Die Kästchen in Volllinie in 5B zeigen eine In-Order-Pipeline, während die Kästchen in gestrichelter Linie eine Registerumbenennungs-, Out-of-Order- Ausgabe-/Ausführungs-Pipeline zeigen. In 5B enthält eine Prozessor-Pipeline 500 eine Abrufstufe 502, eine Längendecodierstufe 504, eine Decodierstufe 506, eine Zuordnungsstufe 508, eine Umbenennungsstufe 510, eine Planungs- (auch bekannt als eine Absendungs- oder Ausgabe-) Stufe 512, eine Registerlese-/Speicherlesestufe 514, eine Ausführungsstufe 516, eine Rückschreib-/Rückspeicherungsstufe 518, eine Ausnahmenhandhabungsstufe 522 und eine Unterbreitungsstufe 524. In einigen Ausführungsformen kann die Reihenfolge von Stufen 502-524 anderes als dargestellt sein und diese sind nicht auf die spezielle, in 5B dargestellte Reihenfolge beschränkt.
  • 6 zeigt ein Blockdiagramm der Mikroarchitektur für einen Prozessor 600 gemäß einer Ausführungsform der Offenbarung. In einigen Ausführungsformen kann eine Anweisung gemäß einer Ausführungsform implementiert werden, um Datenelemente mit Größen eines Bytes, Worts, Doppelworts, Quad-Worts usw. zu bearbeiten, wie auch Datentypen, wie Einzel- und Doppelpräzisionsganzzahl- und Gleitkomma-Datentypen. In einer Ausführungsform ist das In-Order-Frontend 601 der Teil des Prozessors 600, der auszuführende Anweisungen abruft und sie zur späteren Verwendung in der Prozessor-Pipeline vorbereitet.
  • Das Frontend 601 kann mehrere Einheiten enthalten. In einer Ausführungsform ruft die Anweisungsvorabrufeinheit 626 Anweisungen aus dem Speicher ab und leitet sie zu einem Anweisungsdecodierer 628, der seinerseits diese decodiert oder interpretiert. Zum Beispiel decodiert der Decodierer in einer Ausführungsform eine empfangene Anweisung in eine oder mehrere Operationen, sogenannte „Mikroanweisungen“ oder „Mikrooperationen“ (auch als Mikro-Op oder uops bezeichnet), die die Maschine ausführen kann. In anderen Ausführungsformen zerlegt der Decodierer die Anweisung in einen Opcode und entsprechende Daten und Steuerfelder, die von der Mikroarchitektur zur Durchführung von Operationen gemäß einer Ausführungsform verwendet werden. In einer Ausführungsform nimmt der Trace-Cache 630 decodierte uops und fügt sie zu programgereihten Abfolgen oder Spuren in der uop-Warteschlange 634 zur Ausführung zusammen. Wenn der Trace-Cache 630 auf eine komplexe Anweisung trifft, stellt der Mikrocode-ROM 632 die uops bereit, die zum Beendigen der Operation erforderlich sind.
  • Einige Anweisungen werden in eine einzige Mikro-op umgewandelt, während andere mehrere Mikro-Ops zum Beenden der vollständigen Operation benötigen. In einer Ausführungsform, falls mehr als vier Mikro-Ops zum Beenden einer Anweisung erforderlich sind, greift der Decodierer 628 auf den Mikrocode-ROM 632 zu, um die Anweisung auszuführen. Für eine Ausführungsform kann eine Anweisung in eine kleine Anzahl von Mikro-Ops zur Verarbeitung beim Anweisungsdecodierer 628 decodiert werden. In einer anderen Ausführungsform kann eine Anweisung im Mikrocode-ROM 632 gespeichert werden, sollte eine Anzahl von Mikro-Ops notwendig sein, um die Operation zu vollenden. Der Trace-Cache 630 bezieht sich auf eine programmierbare Eingangspunkt-Logik-Array (PLA) zum Bestimmen eines korrekten Mikroanweisungspointers zum Lesen der Mikrocodeabfolgen, um eine oder mehrere Anweisungen gemäß einer Ausführungsform zu vollenden, aus dem Mikrocode-ROM 632. Sobald der Mikrocode-ROM 632 ein Sequenzieren von Mikro-Ops für eine Anweisung beendet hat, nimmt das Frontend 601 der Maschine ein Abrufen von Mikro-Ops aus dem Trace-Cache 630 wieder auf.
  • Die Out-of-Order-Ausführungsengine 603 ist, wo die Anweisungen zur Ausführung vorbereitet werden. Die Out-of-Order-Ausführungslogik hat eine Anzahl von Puffern zum Glätten und Neuordnen der Stroms von Anweisungen, um eine Leistung zu optimieren, während sie die Pipeline hinablaufen und zur Ausführung geplant werden. Die Zuordnungslogik ordnet die Maschinenpuffer und Ressourcen zu, die jede uop zur Ausführung benötigt. Die Registerumbenennungslogik benennt die Logikregister auf Einträge in einer Registerdatei um. Die Zuordnungseinrichtung ordnet auch einen Eintrag für jede uop in einer der zwei uop-Warteschlangen, eine für Speicheroperationen und eine für Nicht-Speicheroperationen, vor den Anweisungsplanern zu: Speicherplaner, schneller Planer 602, langsamer/allgemeiner Gleitkommaplaner 604 und einfacher Gleitkommaplaner 606. Die uop-Planer 602, 604, 606 bestimmen, wann eine uop zur Ausführung bereit ist, basierend auf dem Bereitsein ihrer abhängigen Eingaberegisteroperandenquellen und der Verfügbarkeit der Ausführungsressourcen, die die uops zum Beenden ihrer Operation benötigen. Der schnelle Planer 602 einer Ausführungsform kann bei jedem halben Haupttaktzyklus planen, während die anderen Planer nur einmal pro Hauptprozessortaktzyklus planen können. Die Planer entscheiden über die Absendeports zur Planen von uops zur Ausführung.
  • Registerdateien 608, 610 liegen im Ausführungsblock 611 zwischen den Planern 602, 604, 606 und den Ausführungseinheiten 612, 614, 616, 618, 620, 622, 624. Es gibt eine separate Registerdatei 608, 610 für Ganzzahl- bzw. Gleitkommaoperationen. Jede Registerdatei 608, 610 einer Ausführungsform enthält auch ein Bypass-Netzwerk, das neue unabhängige upos umgehen oder nur fertige Ergebnisse, die noch nicht in die Registerdatei geschrieben wurden, zu diesen weiterleiten kann. Die Ganzzahlregisterdatei 608 und die Gleitkommaregisterdatei 610 sind auch imstande, Daten mit der anderen zu kommunizieren. Für eine Ausführungsform ist die Ganzzahlregisterdatei 608 in zwei separate Registerdateien geteilt, eine Registerdatei für die 32 Bits niedriger Priorität von Daten und eine zweite Registerdatei für die 32 Bits hoher Priorität von Daten. Die Gleitkommaregisterdatei 610 einer Ausführungsform hat 128 Bit breite Einträge, da Gleitkommaanweisungen typischerweise Operanden mit einer Breite von 64 bis 128 Bits haben.
  • Der Ausführungsblock 611 beinhaltet die Ausführungseinheiten 612, 614, 616, 618, 620, 622, 624, wo die Anweisungen tatsächlich ausgeführt werden. Dieser Abschnitt enthält die Registerdateien 608, 610, die die Ganzzahl- und Gleitkommadatenoperandenwerte speichern, die die Mikroanweisungen ausführen müssen. Der Prozessor 600 einer Ausführungsform besteht aus einer Anzahl von Ausführungseinheiten: Adressengenerierungseinheit (AGU) 612, AGU 614, schnelle ALU 616, schnelle ALU 618, langsame ALU 620, Gleitkomma ALU 622, Gleitkommabewegungseinheit 624. Für eine Ausführungsform führen die Gleitkommaausführungsblöcke 622, 624 Gleitkomma-, MMX-, SIMD- und SSE- oder andere Operationen durch. Die Gleitkomma-ALU 622 einer Ausführungsform enthält einen 64 Bit durch 64 Bit Gleitkommateiler zur Ausführung von Divisions-, Quadratwurzel- und Rest-Mikro-Ops. Für Ausführungsformen der vorliegenden Offenbarung können Anweisungen, die einen Gleitkommawert beinhalten, mit der Gleitkomma-Hardware behandelt werden.
  • In einer Ausführungsform gehen die ALU Operationen zu den Hochgeschwindigkeits-ALU Ausführungseinheiten 616, 618. Die schnellen ALUs 616, 618 einer Ausführungsform können schnelle Operationen mit einer effektiven Latenz eines halben Taktzyklus ausführen. Für eine Ausführungsform gehen die meisten komplexen Ganzzahloperationen zur langsamen ALU 620, da die langsame ALU 620 Ganzzahlausführungs-Hardware für Operationen vom langen Latenztyp enthält, wie eine Multiplikator-, Verschiebungs-, Flag-Logik- und Abzweigungsverarbeitung. Speicherlade-/Speicheroperationen werden durch die AGUs 612, 614 ausgeführt. Für eine Ausführungsform sind die Ganzzahl-ALUs 616, 618, 620 im Zusammenhang mit einer Ausführung von Ganzzahloperationen an 64 Bit Datenoperanden beschrieben. In alternativen Ausführungsformen können die ALUs 616, 618, 620 implementiert sein, um eine Reihe von Datenbits zu unterstützen, enthaltend 16, 32, 128, 256 usw. Ebenso können die Gleitkommaeinheiten 622, 624 implementiert sein, einen Bereich von Operanden mit Bits verschiedener Breiten zu unterstützen. Für eine Ausführungsform können die Gleitkommaeinheiten 622, 624 128 Bits breite Gepackte-Datenoperanden in Verbindung mit SIMD- und Multimediaanweisungen bearbeiten.
  • In einer Ausführungsform geben die uops-Planer 602, 604, 606 abhängige Operationen aus, bevor die Eltern-Last eine Ausführung beendet hat. Da uops spekulativ geplant und im Prozessor 600 ausgeführt werden, enthält der Prozessor 600 auch Logik zum Behandeln von Speicher-Fehlschlägen. Falls eine Datenladung im Daten-Cache fehlschlägt, können unabhängige Operationen gerade in der Pipeline sein, die den Planer mit temporär unrichtigen Daten verlassen haben. Ein Wiedergabemechanismus verfolgt Anweisungen, die unrichtige Daten verwenden, und führt diese erneut aus. Nur die abhängigen Operationen müssen wiedergegeben werden und die unabhängigen können fertiggestellt werden. Die Planer und der Wiedergabemechanismus einer Ausführungsform eines Prozessors sind auch gestaltet, um Anweisungsabfolgen für Textstring-Vergleichsoperationen zu erlangen.
  • Der Prozessor 600 enthält auch Logik zum Implementieren einer Speicheradressenvorhersage zur Speicherdisambiguierung gemäß Ausführungsformen der Offenbarung. In einer Ausführungsform kann der Ausführungsblock 611 von Prozessor 600 eine Speicheradressenvorhersageeinheit (nicht dargestellt) zum Implementieren der Speicheradressenvorhersage zur Speicherdisambiguierung enthalten.
  • Der Begriff „Register“ kann sich auf On-Board-Prozessordatenspeicherstellen beziehen, die als Teil von Anweisungen zur Identifizierung von Operanden verwendet werden. Mit anderen Worten, Register können jene sein, die von außerhalb des Prozessors (aus einer Perspektive des eines Programmierers) verwendbar sind. Die Register einer Ausführungsform sollten jedoch in der Bedeutung nicht auf eine besondere Art von Schaltung begrenzt sein. Vielmehr ist ein Register einer Ausführungsform imstande, Daten zu speichern und bereitzustellen und die hier beschriebenen Funktionen auszuführen. Die hier beschriebenen Register können durch einen Schaltkreis innerhalb eines Prozessors unter Verwendung einer Reihe verschiedener Techniken implementiert werden, dedizierte physische Register, dynamisch zugeordnete physische Register, die Registerumbenennung verwenden, Kombinationen aus dedizierten und dynamisch zugeordnete physischen Registern usw. In einer Ausführungsform speichern Ganzzahlregister zweiunddreißig Bit Ganzzahldaten. Eine Registerdatei einer Ausführungsform enthält auch acht Multimedia-SIMD-Register für gepackte Daten.
  • Für die folgenden Besprechungen sind die Register als Datenregister zu verstehen, die gestaltet sind, gepackte Daten zu halten, wie 64 Bits breite MMXTM-Register (in einigen Fällen auch als ‚mm‘-Register bezeichnet) in Mikroprozessoren, die mit MMX-Technologie von Intel Corporation, Santa Clara, Kalifornien, freigegeben sind. Diese MMX-Register, erhältlich sowohl in Ganzzahl- wie auch Gleitkommaform, können mit gepackten Datenelementen arbeiten, die SIMD- und SSE-Anweisungen begleiten. Ebenso können 128 Bits breite XMM-Register, die sich auf SSE2-, SSE3-, SSE4-Technologie oder darüber hinaus (allgemein als „SSEx“ bezeichnet) beziehen, zum Halten solcher Gepackte-Daten-Operanden verwendet werden. In einer Ausführungsform müssen die Register beim Speichern gepackter Daten und Ganzzahldaten nicht zwischen den zwei Datentypen unterscheiden. In einer Ausführungsform sind Ganzzahl und Gleitkomma entweder in derselben Registerdatei oder unterschiedlichen Registerdateien enthalten. Außerdem können in einer Ausführungsform Gleitkomma und Ganzzahldaten in verschiedenen Registern oder demselben Register gespeichert sein.
  • Unter Bezugnahme nun auf 7 ist ein Blockdiagramm dargestellt, das ein System 700 zeigt, in dem eine Ausführungsform der Offenbarung verwendet werden kann. Wie in 7 dargestellt, ist ein Multiprozessorsystem 700 ein Punkt-zu-Punkt-Zwischenverbindungssystem und enthält einen ersten Prozessor 770 und einen zweiten Prozessor 780, der über eine Punkt-zu-Punkt-Zwischenverbindung 750 gekoppelt ist. Während mit nur zwei Prozessoren 770, 780 dargestellt, ist klar, dass Ausführungsformen der Offenbarung nicht darauf begrenzt sind. In anderen Ausführungsformen können ein oder mehrere zusätzliche Prozessoren in einem bestimmten Prozessor vorhanden sein.
  • Die Prozessoren 770 und 780 sind mit integrierten Speichersteuerungseinheiten 772 bzw. 782 dargestellt. Prozessor 770 enthält auch als Teil seiner Bussteuereinheiten Punkt-zu-Punkt-, (P-P)-, Schnittstellen 776 und 778; ebenso enthält der zweite Prozessor 780 P-P-Schnittstellen 786 und 788. Prozessoren 770, 780 können Informationen über eine Punkt-zu-Punkt-, (P-P)-, Schnittstelle 750 unter Verwendung von P-P-Schnittstellenschaltungen 778, 788 austauschen. Wie in 7 dargestellt, koppeln IMCs 772 und 782 die Prozessoren an entsprechende Speicher, nämlich einen Speicher 732 und einen Speicher 734, die Teile eines Hauptspeichers sein können, der lokal an die entsprechenden Prozessoren angehängt ist.
  • Die Prozessoren 770, 780 können Informationen mit einem Chipset 790 über einzelne P-P-Schnittstellen 752, 754 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 776, 794, 786, 798 austauschen. Der Chipset 790 kann auch Informationen mit einer Hochleistungsgrafikschaltung 738 über eine Hochleistungsgrafikschnittstelle 739 austauschen.
  • Ein gemeinsam benutzter Cache (nicht dargestellt) kann in jedem Prozessor oder außerhalb beider Prozessoren enthalten, aber dennoch mit den Prozessors über eine P-P-Zwischenverbindung verbunden sein, sodass lokale Cache-Informationen entweder eines oder beider Prozessoren im gemeinsam benutzten Cache gespeichert werden können, falls ein Prozessor in einen leistungsarmen Modus gestellt wird.
  • Der Chipset 790 kann über eine Schnittstelle 796 an einen ersten Bus 716 gekoppelt sein. In einer Ausführungsform kann der erste Bus 716 ein Peripheral Component Interconnect (PCI) Bus oder ein Bus wie ein PCI Express Bus oder ein andere I/O-Zwischenverbindungsbus der dritten Generation sein, obwohl der Umfang der vorliegenden Offenbarung nicht darauf begrenzt ist.
  • Wie in 7 dargestellt, können verschiedene I/O-Einrichtungen 714 an den ersten Bus 716, gemeinsam mit einer Busbrücke 718 gekoppelt sein, die den ersten Bus 716 an einen zweiten Bus 720 koppelt. In einer Ausführungsform kann der zweite Bus 720 ein Bus mit niedriger Pinzahl (LPC) sein. Verschiedene Einrichtungen können an den zweiten Bus 720 gekoppelt sein, enthaltend zum Beispiel, eine Tastatur und/oder Maus 722, Kommunikationseinrichtungen 727 und eine Datenspeichereinheit 728, wie eine Festplatte oder andere Massendatenspeichereinrichtung, die in einer Ausführungsform Anweisungen/Code und Daten 730 enthalten kann. Ferner kann eine Audio-I/O 724 an den zweiten Bus 720 gekoppelt sein. Es ist zu beachten, dass andere Architekturen möglich sind. Zum Beispiel kann ein System anstelle der Punkt-zu-Punkt-Architektur von 7 einen Multi-Drop-Bus oder eine andere solche Architektur implementieren.
  • Unter Bezugnahme nun auf 8 ist ein Blockdiagramm eines Systems 800 dargestellt, in dem eine Ausführungsform der Offenbarung arbeiten kann. Das System 800 kann einen oder mehrere Prozessoren 810, 815 enthalten, die an einen Grafikspeichersteuerungs-Hub (GMCH) 820 gekoppelt sind. Die optionale Eigenschaft zusätzlicher Prozessoren 815 ist in 8 mit gestrichelten Linien dargestellt.
  • Jeder Prozessor 810, 815 kann eine Version der Schaltung, integrierten Schaltung, des Prozessors und/oder der integrierten Siliziumschaltung wie oben beschrieben sein. Es sollte jedoch festgehalten werden, dass es unwahrscheinlich ist, dass integrierte Grafiklogik und integrierte Speichersteuereinheiten in den Prozessoren 810, 815 vorhanden sind. 8 zeigt, dass der GMCH 820 an einen Speicher 840 gekoppelt sein kann, der zum Beispiel ein dynamischer Direktzugriffsspeicher (DRAM) sein kann. Der DRAM kann, zumindest für eine Ausführungsform, mit einem nicht flüchtigen Cache verknüpft sein.
  • Der GMCH 820 kann ein Chipset oder ein Abschnitt eines Chipset sein. Der GMCH 820 kann mit dem (den) Prozessor(en) 810, 815 kommunizieren und eine Interaktion zwischen dem (den) Prozessor(en) 810, 815 und Speicher 840 steuern. Der GMCH 820 kann auch als eine beschleunigte Busschnittstelle zwischen dem (den) Prozessor(en) 810, 815 und anderen Elementen des Systems 800 dienen. Für zumindest eine Ausführungsform kommuniziert der GMCH 820 mit dem (den) Prozessor(en) 810, 815 über einen Multi-Drop-Bus, wie einen Frontside-Bus (FSB) 895.
  • Außerdem ist der GMCH 820 an eine Anzeige 845 (wie eine Flachbildschirm- oder Berührungsschirmanzeige) gekoppelt. Der GMCH 820 kann einen integrierten Grafikbeschleuniger enthalten. Der GMCH 820 ist ferner an einen Eingabe-/Ausgabe-, (I/O-), Steuerungshub (ICH) 850 gekoppelt, der zum Koppeln Periphergeräte an das System 800 verwendet werden kann. In der Ausführungsform von 8 ist zum Beispiel eine externe Grafikeinrichtung 860 dargestellt, die eine alleinstehende Grafikeinrichtung sein kann, die an den ICH 850 gemeinsam mit einem anderen Periphergerät 870 gekoppelt ist.
  • Alternativ können auch zusätzliche oder andere Prozessoren im System 800 vorhanden sein. Zum Beispiel können ein oder mehrere zusätzliche Prozessoren 815 einen oder mehrere zusätzliche Prozessoren, die dieselben wie Prozessor 810 sind, zusätzliche Prozessoren, die heterogen oder asymmetrisch zu Prozessor 810 sind, Beschleuniger (wie, z.B. Grafikbeschleuniger oder Digitalsignalverarbeitungs-, (DSP-), Einheiten), feldprogrammierbare Gate-Arrays oder jeden anderen Prozessor enthalten. Es kann eine Reihe von Unterschieden zwischen dem (den) Prozessor(en) 810, 815 im Sinne eines Spektrums von Gütezahlen geben, enthaltend architektonische, mikroarchitektonische, thermische, Leistungsverbrauchseigenschaften und dergleichen. Diese Unterschiede können sich effektiv als Asymmetrie und Heterogenität unter den Prozessoren 810, 815 manifestieren. Für zumindest eine Ausführungsform können sich die verschiedenen Prozessoren 810, 815 im selben Die-Package befinden.
  • Unter Bezugnahme nun auf 9 ist ein Blockdiagramm eines Systems 900 dargestellt, in dem eine Ausführungsform der Offenbarung arbeiten kann. 9 zeigt Prozessoren 970, 980. Die Prozessoren 970, 980 können einen integrierten Speicher und eine I/O-Steuerlogik („CL“) 972 bzw. 982 enthalten und miteinander über eine Punkt-zu-Punkt-Zwischenverbindung 950 zwischen Punkt-zu-Punkt-, (P-P-), Schnittstellen 978 bzw. 988 kommunizieren. Die Prozessoren 970, 980 kommunizieren, wie dargestellt, jeweils mit einem Chipset 990 über Punkt-zu-Punkt-Zwischenverbindungen 952 und 954 durch die entsprechenden P-P Schnittstellen 976 bis 994 und 986 bis 998. Für zumindest eine Ausführungsform kann die CL 972, 982 integrierte Speichersteuerungseinheiten enthalten. CLs 972, 982 können eine I/O-Steuerlogik enthalten. Wie dargestellt, sind Speicher 932, 934, die an CLs 972, 982 und I/O-Einrichtungen 914 gekoppelt sind, auch an die Steuerlogik 972, 982 gekoppelt. Legacy I/O-Einrichtungen 915 sind über Schnittstelle 996 an den Chipset 990 gekoppelt.
  • Ausführungsformen können in vielen verschiedenen Arten von System implementiert sein. 10 ist ein Blockdiagramm eines SoC 1000 gemäß einer Ausführungsform der vorliegenden Offenbarung. Kästchen in gestrichelter Linie sind optionale Merkmale höher entwickelter SoCs. In 10 ist (sind) eine Zwischenverbindungseinheit(en) 1012 gekoppelt an: einen Anwendungsprozessor 1020, der einen Satz aus einem oder mehreren Kernen 1002A-N und gemeinsam benutzen Cache-Einheit(en) 1006 enthält; eine Systemagenteinheit 1010; eine oder mehrere Bussteuerungseinheiten 1016; eine oder mehrere integrierte Speichersteuerungseinheiten 1014; einen Satz aus einem oder mehreren Medienprozessoren 1018, der integrierte Grafiklogik 1008, einen Bildprozessor 1024 zum Bereitstellen von Stand- und/oder Videokamerafunktionalität, einen Audioprozessor 1026 zum Bereitstellen einer Hardware-Audiobeschleunigung, und einen Videoprozessor 1028 zum Bereitstellen einer Videocodierungs-/-decodierungsbeschleunigung enthalten kann; eine statische Direktzugriffsspeicher-, (SRAM-), Einheit 1030; eine Direktzugriffsspeicher-, (DMA-), Einheit 1032; und eine Anzeigeeinheit 1040 zur Kopplung an eine oder mehrere externe Anzeigen. In einer Ausführungsform kann ein Speichermodul in der (den) integrierten Speichersteuerungseinheit(en) 1014 enthalten sein. In einer anderen Ausführungsform kann das Speichermodul in einer oder mehreren anderen Komponenten des SoC 1000 enthalten sein, das für einen Zugriff auf und/oder eine Speicherung eines Speichers verwendet werden kann.
  • Die Speicherhierarchie enthält einen oder mehrere Cache-Level innerhalb der Kerne, einen Satz oder eine oder mehrere gemeinsam benutzte Cache-Einheiten 1006 und einen externen Speicher (nicht dargestellt), der an den Satz integrierter Speichersteuerungseinheiten 1014 gekoppelt ist. Der Satz gemeinsam benutzter Cache-Einheiten 1006 kann einen oder mehrere Caches mittlerer Ebene, wie Level 2 (L2), Level 3 (L3), Level 4 (L4) oder andere Cache-Level, einen Last-Level Cache (LLC) und/oder Kombinationen davon enthalten.
  • In einigen Ausführungsformen sind einer oder mehrere der Kerne 1002A-N zu einem Multithreading imstande. Der Systemagent 1010 enthält jene Komponenten, die Kerne 1002A-N koordinieren und betreiben. Die Systemagenteinheit 1010 kann zum Beispiel eine Leistungssteuereinheit (PCU) und eine Anzeigeeinheit enthalten. Die PCU kann eine Logik und Komponenten sein oder enthalten, die zum Regulieren des Leistungsstands der Kerne 1002A-N und der integrierten Grafiklogik 1008 erforderlich sind. Die Anzeigeeinheit dient zum Antreiben einer oder mehrerer extern angeschlossener Anzeigen.
  • Die Kerne 1002A-N können im Sinn der Architektur und/oder des Anweisungssatzes homogen oder heterogen sein. Zum Beispiel können einige der Kerne 1002A-N In-Order sein, während andere Out-of-Order sind. Als ein weiteres Beispiel können zwei oder mehr der Kerne 1002A-N zur Ausführung desselben Anweisungssatzes imstande sein, während andere zur Ausführung nur eines Teilsatzes dieses Anweisungssatzes oder eines anderen Anweisungssatzes imstande sind.
  • Der Anwendungsprozessor 1020 kann ein Allzweck-Prozessor, wie ein Core™ i3, i5, i7, 2 Duo und Quad, Xeon™, Itanium™, Atom™ oder Quark™ Prozessor sein, die von Intel™ Corporation, Santa Clara, Kalif., erhältlich sind. Alternativ kann der Anwendungsprozessor 1020 von einer anderen Firma sein, wie ARM Holdings™, Ltd, MIPS™ usw. Der Anwendungsprozessor 1020 kann ein Spezialzweck-Prozessor sein, wie zum Beispiel ein Netzwerk- oder Kommunikationsprozessor, eine Kompressionsengine, ein Grafikprozessor, Co-Prozessor, eingebetteter Prozessor oder dergleichen. Der Anwendungsprozessor 1020 kann auf einem oder mehreren Chips implementiert sein. Der Anwendungsprozessor 1020 kann ein Teil eines oder mehrerer Substrate sein und/oder kann unter Verwendung einer Reihe von Prozesstechnologien, wie zum Beispiel BiCMOS, CMOS oder NMOS auf diesen implementiert sein.
  • 11 ist ein Blockdiagramm einer Ausführungsform eines System-on-Chip- (SoC) Designs gemäß der vorliegenden Offenbarung. Als ein spezielles veranschaulichendes Beispiel ist das SoC 1100 in einem Benutzergerät (UE) enthalten. In einer Ausführungsform bezieht sich UE auf jede Einrichtung, die durch einen Endbenutzer zur Kommunikation verwendet wird, wie ein handgehaltenes Telefon, ein Smartphone, ein Tablet, Ultra-Thin Notebook, Notebook mit Breitbandadapter oder jede andere ähnliche Kommunikationseinrichtung. Häufig ist ein UE mit einer Basisstation oder einem Knoten verbunden, der möglicherweise in der Art einer Mobilstation (MS) in einem GSM-Netzwerk entspricht.
  • Hier enthält das SOC 1100 2 Kerne—1106 und 1107. Die Kerne 1106 und 1107 können einer Anweisungssatzarchitektur, wie einem Intel® Architecture Core™-basierten Prozessor, einem Advanced Micro Devices, Inc. (AMD) Prozessor, einem MIPS-basierten Prozessor, einem ARM-basierten Prozessordesign oder einem Kunden davon, wie auch ihren Lizenznehmern oder Anwenden entsprechen. Die Kerne 1106 und 1107 sind an eine Cache-Steuerung 1108 gekoppelt, die mit der Bus-Schnittstelleneinheit 1109 und dem L2 Cache 1110 verknüpft ist, um mit anderen Teilen des Systems 1100 zu kommunizieren. Die Zwischenverbindung 1110 enthält eine On-Chip Zwischenverbindung, wie eine IOSF, AMBA oder andere, oben besprochene Zwischenverbindung, die möglicherweise einen oder mehrere Aspekte der beschriebenen Offenbarung implementiert.
  • Die Zwischenverbindung 1110 stellt Kommunikationskanäle zu anderen Komponenten bereit, wie ein Subscriber Identity Module (SIM) 1130 als Schnittstelle mit einer SIM-Karte, einem Boot-ROM 1135 zum Halten des Boot-Codes zur Ausführung durch Kerne 1106 und 1107 zum Initialisieren und Booten des SoC 1100, eine SDRAM-Steuerung 1140 als Schnittstelle zu einem externen Speicher (z.B. DRAM 1160), eine Flash Steuerung 1145 als Schnittstelle zu einem nicht flüchtigen Speicher (z.B. Flash 1165), eine periphere Steuerung 1150 (z.B. serielle periphere Schnittstelle) als Schnittstelle mit Peripheriegeräten, einen Videocodec 1120 und eine Videoschnittstelle 1125 zum Anzeigen und Empfangen eines Eingangs (z.B. durch Berührung freigegebenen Eingang), GPU 1115 zum Durchführen von grafikbezogenen Berechnungen usw. Jede dieser Schnittstellen kann Aspekte der hier beschriebenen Offenbarung beinhalten. Zusätzlich zeigt das System 1100 Peripheriegeräte zur Kommunikation, wie ein Bluetooth-Modul 1170, 3G Modem 1175, GPS 1180 und Wi-Fi 1185.
  • 12 zeigt eine schematische Darstellung einer Maschine in der beispielhaften Form eines Computersystems 1200, in dem ein Satz von Anweisungen, um die Maschine zu veranlassen, eine oder mehrere der hier besprochenen Methodologien durchzuführen, ausgeführt werden kann. In alternativen Ausführungsformen kann die Maschine mit anderen Maschinen in einem LAN, einem Intranet, einem Extranet oder dem Internet verbunden (z.B. vernetzt) sein. Die Maschine kann in der Kapazität eines Servers oder einer Client-Einrichtung in einer Client-Server-Netzwerkumgebung oder als eine Peer Maschine in einer Peer-zu-Peer (oder verteilten) Netzwerkumgebung arbeiten. Die Maschine kann ein Personal Computer (PC), ein Tablet PC, eine Set-Top Box (STB), ein Personal Digital Assistant (PDA), ein Mobiltelefon, eine Web-Anwendung, ein Server, ein Netzwerkrouter, ein Schalter oder eine Brücke oder jede Maschine sein, die zum Ausführen eines Satzes von Anweisungen (der Reihe nach oder auf andere Weise) geeignet ist, die Aktionen spezifizieren, die durch die Maschine durchzuführen sind. Während ferner nur eine einzige Maschine dargestellt ist, soll der Begriff „Maschine“ auch so verstanden werden, dass er jede Sammlung von Maschinen enthält, die einzeln oder gemeinsam einen Satz (oder mehrere Sätze) von Anweisungen ausführen, um eine oder mehrere der hier besprochenen Methodologien ausführen.
  • Das Computersystem 1200 enthält eine Verarbeitungseinrichtung 1202, einen Hauptspeicher 1204 (z.B. Nur-Lese-Speicher (ROM), Flash-Speicher, dynamischen Direktzugriffsspeicher (DRAM) (wie synchronen DRAM (SDRAM) oder DRAM (RDRAM) usw.), einen statischen Speicher 1206 (z.B. Flash-Speicher, statischen Direktzugriffsspeicher (SRAM) usw.) und eine Datenspeichereinrichtung 1218, die miteinander über einen Bus 1230 kommunizieren.
  • Die Verarbeitungseinrichtung 1202 stellt eine oder mehrere Allzweck-Verarbeitungseinrichtungen wie einen Mikroprozessor, eine zentrale Verarbeitungseinheit oder dergleichen bereit. Insbesondere kann die Verarbeitungseinrichtung ein Mikroprozessor zur komplexen Anweisungssatzberechnung (CISC), ein Mikroprozessor zur reduzierten Anweisungssatzberechnung (RISC), ein Mikroprozessor mit sehr langem Befehlswort (VLIW) oder ein Prozessor, der andere Anweisungssätze implementiert, oder Prozessoren, die eine Kombination von Anweisungssätzen implementieren, sein. Die Verarbeitungseinrichtung 1202 kann auch eine oder mehrere Spezialzweck-Verarbeitungseinrichtungen, wie eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA), ein Digitalsignalprozessor (DSP), Netzwerkprozessor oder dergleichen sein. In einer Ausführungsform kann die Verarbeitungseinrichtung 1202 einen oder mehrere Verarbeitungskerne enthalten. Die Verarbeitungseinrichtung 1202 ist konfiguriert, die Verarbeitungslogik 1226 zur Durchführung der hier besprochenen Operationen und Schritte auszuführen.
  • Das Computersystem 1200 kann ferner eine Netzwerkschnittstelleneinrichtung 1208 enthalten, die kommunizierbar an ein Netzwerk 1220 gekoppelt ist. Das Computersystem 1200 kann auch eine Videoanzeigeeinheit 1210 (z.B. eine Flüssigkristallanzeige (LCD) oder eine Kathodenstrahlröhre (CRT)), eine alphanumerische Eingabeeinheit 1212 (z.B. eine Tastatur), eine Cursor-Steuervorrichtung 1214 (z.B. eine Maus) und eine Signalgenerierungseinrichtung 1216 (z.B. einen Lautsprecher) enthalten. Ferner kann das Computersystem 1200 eine Grafikverarbeitungseinheit 1222, eine Videoverarbeitungseinheit 1228 und eine Audioverarbeitungseinheit 1232 enthalten.
  • Die Datenspeichereinrichtung 1218 kann eine maschinenzugreifbares Datenspeichermedium 1224, auf dem Software 1226 gespeichert ist, die eine oder mehrere der Methodologien von hier beschriebenen Funktionen implementiert, enthalten, wie ein Implementieren einer Speicheradressenvorhersage zur Speicherdisambiguierung, wie oben beschrieben ist. Die Software 1226 kann auch vollständig oder zumindest teilweise im Hauptspeicher 1204 als Anweisungen 1226 und/oder in der Verarbeitungseinrichtung 1202 als Verarbeitungslogik 1226 während deren Ausführung durch das Computersystem 1200 liegen; der Hauptspeicher 1204 und die Verarbeitungseinrichtung 1202 stellen auch maschinenzugreifbare Speichermedien dar.
  • Das maschinenlesbare Datenspeichermedium 1224 kann auch zum Speichern von Anweisungen 1226, die eine Speicheradressenvorhersage implementieren, und/oder als eine Software-Bibliothek, die Verfahren enthält, die die obenstehenden Anwendungen aufrufen., verwendet werden. Während das maschinenzugreifbare Datenspeichermedium 1128 in einer beispielhaften Ausführungsform als ein einzelnes Medium dargestellt ist, sollte der Begriff „maschinenzugreifbares Datenspeichermedium“ so verstanden werden, dass er ein einzelnes Medium oder mehrere Medien enthält (z.B. eine zentralisierte oder verteilte Datenbank und/oder verknüpfte Caches und Server), die den einen Satz oder die mehreren Sätze von Anweisungen speichern. Der Begriff „maschinenzugreifbares Datenspeichermedium“ soll auch so verstanden werden, dass er jedes Medium enthält, das imstande ist, einen Satz von Anweisungen zur Ausführung durch die Maschine zu speichern, zu codieren oder auszuführen, und das die Maschine veranlasst, eine oder mehrere Methodologien der vorliegenden Offenbarung durchzuführen. Der Begriff „maschinenzugreifbares Datenspeichermedium“ soll daher so verstanden werden, dass er Festkörperspeicher und optische und magnetische Medien enthält, ohne aber darauf beschränkt zu sein.
  • Die folgenden Beispiele betreffen weitere Ausführungsformen. Beispiel 1 ist ein Prozessor, der einen Verarbeitungskern und eine Caching-Schaltung enthält, die kommunikativ an den Verarbeitungskern gekoppelt ist, umfassend eine Totblockvorhersageeinrichtung (DBP) zur Vorhersage, dass auf eine Cache-Linie in einem Last-Level Cache (LLC) bis zu einer Räumung aus dem LLC nicht zugegriffen wird, wobei in Antwort auf eine Vorhersage, dass auf die Cache-Linie bis zur Räumung nicht zugegriffen wird, die Caching-Schaltung eine Räumungsnachricht an eine Speichersteuerung ausgeben soll, wobei die Räumungsnachricht ein Flag umfasst, das einen DBP-Status der Cache-Linie angibt.
  • In Beispiel 2 stellt der Gegenstand von Beispiel 1 ferner bereit, dass die Speichersteuerung einen speicherseitigen Cache- (MSC-) Spurfolgekreis umfasst, um in Antwort auf ein Detektieren des DBP-Status in der Räumungsnachricht die Räumungsnachricht zu empfangen, in einem MSC einen MSC-Eintrag in einem MSC zum Speichern einer Nutzlast und einer Speicherstelle zu erstellen, die durch eine Speicheradresse zum Speichern der Nutzlast identifiziert wird, einen Zähler, der mit dem MSC-Eintrag verknüpft ist, auf einen Grenzwert zu initiieren, und in Antwort auf ein Detektieren eines Eintretens eines Auslöserereignisses, das mit dem Grenzwert verknüpft ist, den MSC-Eintrag zu der Speicherstelle eines fernen Speichers zu räumen.
  • In Beispiel 3 stellt der Gegenstand eines der Beispiele 1 und 2 ferner bereit, dass die Speichersteuerung eine zweite Räumungsnachricht empfangen soll, die das Flag umfasst, das einen Nicht-DBP-Status angibt, und einen zweiten MSC-Eintrag erstellt, der nicht mit einer Zeitgrenze verknüpft ist.
  • In Beispiel 4 stellt der Gegenstand eines der Beispiele 1 und 2 ferner bereit, dass der Grenzwert eine Zeitgrenze ist, die eine maximale Lebensdauer für den MSC-Eintrag angibt, bevor der MSC-Eintrag zum fernen Speicher geräumt wird.
  • In Beispiel 5 stellt der Gegenstand von Beispiel 4 ferner bereit, dass der MSC-Spurfolgekreis, in Antwort auf eine Bestimmung, dass eine Lebensdauer des MSC-Eintrags die maximale Lebensdauer erreicht, den MSC-Eintrag zum fernen Speicher räumen soll.
  • In Beispiel 6 stellt der Gegenstand von Beispiel 4 ferner bereit, dass der MSC-Spurfolgekreis, in Antwort auf eine Bestimmung, dass die Lebensdauer des MSC-Eintrags die maximale Lebensdauer erreicht, bestimmen soll, ob ein weiteres Auslöserereignis eintritt, und in Antwort auf ein Detektieren eines Eintretens des weiteren Ereignisses den MSC-Eintrag zum fernen Speicher räumen soll.
  • In Beispiel 6 stellt der Gegenstand von Beispiel 5 ferner bereit, dass der MSC-Spurfolgekreis, in Antwort auf eine Bestimmung, dass die Lebensdauer des MSC-Eintrags die maximale Lebensdauer erreicht, bestimmen soll, ob ein weiteres Auslöserereignis eintritt, und in Antwort auf ein Detektieren eines Eintretens des weiteren Ereignisses den MSC-Eintrag zum fernen Speicher räumen soll.
  • In Beispiel 7 stellt der Gegenstand von Beispiel 4 ferner bereit, dass die maximale Lebensdauer eine maximale Anzahl von Prozessortaktzyklen ist, die durch eine Anwendung eingestellt wird, die durch einen Anwendungsprozessor ausgeführt wird.
  • Beispiel 9 ist ein System-on-Chip (SoC), umfassend ein Speichersystem mit mehreren Ebenen, umfassend einen speicherseitigen Cache (MSC) und einen fernen Speicher; und einen Prozessor, der kommunikativ an das Speichersystem mit mehreren Ebenen gekoppelt ist, umfassend einen Verarbeitungskern und eine Caching-Schaltung, die kommunikativ an den Verarbeitungskern gekoppelt ist, umfassend eine Totblockvorhersageeinrichtung (DBP) zur Vorhersage, dass auf eine Cache-Linie in einem Last-Level Cache (LLC) bis zu einer Räumung aus dem LLC nicht zugegriffen wird, wobei in Antwort auf eine Vorhersage, dass auf die Cache-Linie bis zur Räumung nicht zugegriffen wird, die Caching-Schaltung eine Räumungsnachricht an eine Speichersteuerung ausgeben soll, wobei die Räumungsnachricht ein Flag umfasst, das einen DBP-Status der Cache-Linie angibt.
  • In Beispiel 10 stellt der Gegenstand von Beispiel 9 ferner bereit, dass die Speichersteuerung ferner einen speicherseitigen Cache- (MSC-) Spurfolgekreis umfasst, um in Antwort auf ein Detektieren des DBP-Status in der Räumungsnachricht die Räumungsnachricht zu empfangen, in dem MSC einen MSC-Eintrag zum Speichern einer Nutzlast und einer Speicherstelle, die durch eine Speicheradresse zum Speichern der Nutzlast identifiziert wird, zu erstellen, einen Zähler, der mit dem MSC-Eintrag verknüpft ist, auf einen Grenzwert zu initiieren, und in Antwort auf ein Detektieren eines Eintretens eines Auslöserereignisses, das mit dem Grenzwert verknüpft ist, den MSC-Eintrag zur Speicherstelle des fernen Speichers zu räumen.
  • In Beispiel 11 stellt der Gegenstand eines der Beispiele 9 und 10 ferner bereit, dass der Grenzwert eine Zeitgrenze ist, die eine maximale Lebensdauer für den MSC-Eintrag angibt, bevor der MSC-Eintrag zum fernen Speicher geräumt wird.
  • In Beispiel 12 stellt der Gegenstand von Beispiel 11 ferner bereit, dass der MSC-Spurfolgekreis, in Antwort auf eine Bestimmung, dass eine Lebensdauer des MSC-Eintrags die maximale Lebensdauer erreicht, den MSC-Eintrag zum fernen Speicher räumen soll.
  • In Beispiel 13 stellt der Gegenstand von Beispiel 11 ferner bereit, dass der MSC-Spurfolgekreis, in Antwort auf eine Bestimmung, dass die Lebensdauer des MSC-Eintrags die maximale Lebensdauer erreicht, bestimmen soll, ob ein weiteres Auslöserereignis eintritt, und in Antwort auf ein Detektieren eines Eintretens des weiteren Ereignisses den MSC-Eintrag zum fernen Speicher räumen soll.
  • In Beispiel 14 stellt der Gegenstand von Beispiel 13 ferner bereit, dass das weitere Ereignis ist, dass eine Anzahl von Austrittsanfragen auf einer Zwischenverbindung, die kommunikativ an den Verarbeitungskern, die Caching-Schaltung und die Speichersteuerung gekoppelt ist, kleiner ist als ein Schwellenwert.
  • In Beispiel 15 stellt der Gegenstand von Beispiel 11 ferner bereit, dass die maximale Lebensdauer eine maximale Anzahl von Prozessortaktzyklen ist, die durch eine Anwendung eingestellt wird, die durch einen Anwendungsprozessor ausgeführt wird.
  • Beispiel 16 ist ein Verfahren umfassend ein Bestimmen, durch eine Totblockvorhersageeinrichtung (DBP) einer Caching-Schaltung, dass eine Cache-Linie eines Last-Level Cache (LLC) ein Totblock ist, Generieren, durch die Caching-Schaltung, einer Räumungsnachricht zu einer Speichersteuerung, wobei die Räumungsnachricht ein Flag umfasst, das einen DBP-Status der Cache-Linie angibt, und Senden, durch die Caching-Schaltung, der Räumungsnachricht an einen speicherseitigen Cache- (MSC-) Spurfolgekreis in der Speichersteuerung.
  • In Beispiel 17 stellt der Gegenstand von Beispiel 16 ferner bereit, dass der MSC-Spurfolgekreis ferner, um in Antwort auf ein Detektieren des DBP-Status in der Räumungsnachricht die Räumungsnachricht zu empfangen, in einem MSC, einen MSC-Eintrag zum Speichern einer Nutzlast und einer Speicherstelle, die durch eine Speicheradresse zum Speichern der Nutzlast identifiziert wird, erstellen soll, einen Zähler, der mit dem MSC-Eintrag verknüpft ist, auf einen Grenzwert initiieren soll und in Antwort auf ein Detektieren eines Eintretens eines Auslöserereignisses, das mit dem Grenzwert verknüpft ist, den MSC-Eintrag zu der Speicherstelle eines fernen Speichers räumen soll.
  • In Beispiel 18 stellt der Gegenstand von Beispiel 17 ferner bereit, dass der Grenzwert eine Zeitgrenze ist, die eine maximale Lebensdauer für den MSC-Eintrag angibt, bevor der MSC-Eintrag zum fernen Speicher geräumt wird.
  • Beispiel 19 ist eine Vorrichtung, umfassend: Mittel zum Durchführen des Verfahrens eines der Beispiele 16 bis 18.
  • Beispiel 20 ist ein maschinenlesbares, nicht transitorisches Medium, auf dem ein Programmcode gespeichert ist, der, wenn ausgeführt, Operationen durchführt, umfassend ein Bestimmen, durch eine Totblockvorhersageeinrichtung (DBP) einer Caching-Schaltung, dass eine Cache-Linie eines Last-Level Cache (LLC) ein Totblock ist, Generieren, durch die Caching-Schaltung, einer Räumungsnachricht zu einer Speichersteuerung, wobei die Räumungsnachricht ein Flag umfasst, das einen DBP-Status der Cache-Linie angibt, und Senden, durch die Caching-Schaltung, der Räumungsnachricht an einen speicherseitigen Cache- (MSC-) Spurfolgekreis der Speichersteuerung.
  • In Beispiel 21 stellt der Gegenstand von Beispiel 20 ferner bereit, dass die MSC-Track-Schaltung ferner in Antwort auf ein Detektieren des DBP-Status in der Räumungsnachricht die Räumungsnachricht empfangen, in einem MSC einen MSC-Eintrag zum Speichern einer Nutzlast und einer Speicherstelle, die durch eine Speicheradresse zum Speichern der Nutzlast identifiziert wird, erstellen, einen Zähler, der mit dem MSC-Eintrag verknüpft ist, auf einen Grenzwert initiieren, und in Antwort auf ein Detektieren eines Eintretens eines Auslöserereignisses, das mit dem Grenzwert verknüpft ist, den MSC-Eintrag zu der Speicherstelle eines fernen Speichers räumen soll.
  • In Beispiel 22 stellt der Gegenstand eines der Beispiele 20 und 21 ferner bereit, dass der Grenzwert eine Zeitgrenze ist, die eine maximale Lebensdauer für den MSC-Eintrag angibt, bevor der MSC-Eintrag zum fernen Speicher geräumt wird.
  • Während die Offenbarung in Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, werden Fachleute auf dem Gebiet zahlreiche Modifizierungen und Variationen erkennen. Es ist beabsichtigt, dass die beiliegenden Ansprüche alle derartigen Modifizierungen und Variationen umfassen sollen, die in das wahre Wesen und den Umfang dieser Offenbarung fallen.
  • Ein Design kann durch verschiedene Stufen gehen, von einer Erstellung, über eine Simulierung, bis zur Fertigung. Daten, die ein Design darstellen, können das Design auf unterschiedliche Weise darstellen. Zunächst, wie es in Simulierungen nützlich ist, kann die Hardware unter Verwendung einer Hardware-Beschreibungssprache oder einer anderen Funktionsbeschreibungssprache dargestellt werden. Zusätzlich kann in einigen Stufen des Designprozesses ein Modell auf Schaltungsebene mit logischen und/oder Transistor-Gates erzeugt werden. Außerdem erreichen die meisten Designs in einigen Stufen eine Ebene von Daten, die die physische Anordnung verschiedener Einrichtungen im Hardware-Modell darstellen. Falls herkömmliche Halbleiterfertigungstechniken verwendet werden, können die Daten, die das Hardware-Modell darstellen, die Daten sein, die das Vorhandensein oder Fehlen verschiedener Merkmale auf verschiedenen Maskenschichten für Masken spezifizieren, die zum Erzeugen der integrierten Schaltung verwendet werden. In jeder Darstellung des Designs können die Daten in einer Form eines maschinenlesbaren Mediums gespeichert werden. Ein Speicher oder ein magnetischer oder optischer Datenspeicher wie eine Disc kann das maschinenlesbare Medium zum Speichern von Informationen sein, die über optische oder elektrische Welle, moduliert oder anders erzeugt, übertragen werden, um solche Informationen zu übertragen. Wenn eine elektrische Trägerwelle, die den Code oder das Design angibt oder trägt, übertragen wird, wird in dem Ausmaß, in dem ein Kopieren, Zwischenspeichern oder erneutes Übertragen des elektrischen Signals durchgeführt wird, eine neue Kopie erstellt. Somit kann ein Kommunikationsanbieter oder ein Netzwerkanbieter auf einem greifbaren, maschinenlesbaren Medium, zumindest temporär, einen Artikel, wie Informationen, die in eine Trägerwelle eingebettet sind, speichern, der Techniken von Ausführungsformen der vorliegenden Offenbarung verkörpert.
  • Ein Modul, wie hier verwendet, bezieht sich auf jede Kombination von Hardware, Software und/oder Firmware. Als ein Beispiel enthält ein Modul Hardware, wie eine Mikrosteuerung, verknüpft mit einem nicht transitorischen Medium zum Speichern eines Codes, der zur Ausführung durch die Mikrosteuerung ausgebildet ist. Daher bezieht sich ein Verweis auf ein Modul in einer Ausführungsform auf die Hardware, die im Speziellen konfiguriert ist, den Code, der auf einem nicht transitorischen Medium gehalten werden soll, zu erkennen und/oder auszuführen. Außerdem bezieht sich in einer anderen Ausführungsform die Verwendung eines Moduls auf das nicht transitorische Medium, das den Code enthält, der im Speziellen ausgebildet ist, durch die Mikrosteuerung ausgeführt zu werden, um vorbestimmte Operationen durchzuführen. Wie daraus hervorgeht, kann sich in einer weiteren Ausführungsform der Begriff Modul (in diesem Beispiel) auf die Kombination der Mikrosteuerung und des nicht transitorischen Mediums beziehen. Häufig variieren und überlappen möglicherweise im Allgemeinen Modulgrenzen, die als getrennt dargestellt sind. Zum Beispiel können sich ein erstes und ein zweites Modul Hardware, Software, Firmware oder eine Kombination davon teilen, während sie möglicherweise etwas an unabhängiger Hardware, Software oder Firmware beibehalten. In einer Ausführungsform enthält die Verwendung des Begriffs „Logik“ Hardware, wie Transistoren, Register oder andere Hardware, wie programmierbare logische Einrichtungen.
  • Die Verwendung der Phrase ‚konfiguriert zum‘ bezieht sich in einer Ausführungsform auf ein Anordnen, Zusammenstellen, Herstellen, Anbieten zum Verkauf, Importieren und/oder Designen einer Vorrichtung, Hardware, Logik oder eines Elements zum Durchführen einer angegebenen oder bestimmten Aufgabe. In diesem Beispiel ist eine Vorrichtung oder ein Element davon, die bzw. das nicht in Betrieb ist, noch immer ‚konfiguriert‘, eine angegebene Aufgabe durchzuführen, falls sie bzw. es gestaltet, gekoppelt und/oder verbunden ist, die angegebene Aufgabe durchzuführen. Als ein rein veranschaulichendes Beispiel kann ein Logik-Gate eine 0 oder eine 1 während der Operation bereitstellen. Aber ein Logik-Gate, das ‚konfiguriert‘ ist, ein Freigabesignal an einen Takt bereitzustellen, enthält nicht jedes mögliche Logik-Gate, das eine 1 oder 0 bereitstellen kann. Stattdessen ist das Logik-Gate in einer gewissen Weise gekoppelt, dass während der Operation die 1 oder 0 ausgegeben wird, um den Takt freizugeben. Es ist erneut festzuhalten, dass die Verwendung des Begriffs ‚konfiguriert zu‘ keine Operation erfordert, sondern vielmehr den latenten Zustand einer Vorrichtung, Hardware und/oder eines Elements im Fokus hat, wobei im latenten Zustand die Vorrichtung, Hardware und/oder das Element gestaltet ist, eine bestimmte Aufgabe durchzuführen, wenn die Vorrichtung, Hardware und/oder das Element in Betrieb ist.
  • Außerdem bezieht sich die Verwendung der Phrasen ‚um zu‘, ‚imstande zu‘ und/oder ‚betriebsbereit zu‘ in einer Ausführungsform auf eine Vorrichtung, Logik, Hardware und/oder ein Element, die bzw. das derart gestaltet ist, dass eine Verwendung der Vorrichtung, Logik, Hardware, und/oder des Elements in einer speziellen Weise möglich ist. Es ist zu beachten, dass, wie oben, eine Verwendung von ‚um zu‘, ‚imstande zu‘ oder ‚betriebsbereit zu‘ sich in einer Ausführungsform auf den latenten Zustand einer Vorrichtung, Logik, Hardware, und/oder eines Elements bezieht, wobei die Vorrichtung, Logik, Hardware und/oder das Element nicht in Betrieb ist, aber in derartiger Weise gestaltet ist, dass eine Verwendung einer Vorrichtung in einer bestimmten Weise möglich ist.
  • Ein Wert, wie hier verwendet, enthält eine bekannte Darstellung einer Zahl, eines Zustands, eines logischen Zustands oder eines binären logischen Zustands. Häufig wird die Verwendung logischer Ebenen, von Logikwerten oder logischen Werten auch als 1 er und 0er bezeichnet, die einfach binäre logische Zustände darstellen. Zum Beispiel bezieht sich eine 1 auf einen hohen logischen Level und 0 bezieht sich auf eine niederen logischen Level. In einer Ausführungsform kann eine Datenspeicherzelle, wie ein Transistor oder eine Flash-Zelle, imstande sein, einen einzelnen logischen Wert oder mehrere logische Werte zu halten. Andere Darstellungen von Werten in Computersystemen wurden jedoch verwendet. Zum Beispiel kann die Dezimalzahl Zehn auch als ein Binärwert von 910 und ein hexadezimaler Buchstabe A dargestellt werden. Daher enthält ein Wert jede Darstellung von Informationen, die in einem Computersystem gehalten werden können.
  • Außerdem können Zustände durch Werte oder Teile von Werten dargestellt werden. Als ein Beispiel kann ein erster Wert wie eine logische Eins, einen Standard- oder Anfangszustand darstellen, während ein zweiter Wert, wie eine logische Null, einen Nicht-Standardzustand darstellen kann. Zusätzlich beziehen sich die Begriffe „zurücksetzen“ und „setzen“ in einer Ausführungsform auf einen Standard- bzw. einen aktualisierten Wert oder Zustand. Zum Beispiel enthält ein Standardwert möglicherweise einen hohen logischen Wert, d.h. Rücksetzen, während ein aktualisierter Wert möglicherweise einen niederen logischen Wert enthält, d.h. Setzen. Es ist zu beachten, dass jede Kombination von Werten verwendet werden kann, um eine beliebige Anzahl von Zuständen darzustellen.
  • Die Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code, die oben angeführt sind, können durch Anweisungen oder Code implementiert werden, die auf einem maschinenzugreifbaren, maschinenlesbaren, computerzugreifbaren oder computerlesbaren Medium gespeichert sind, die durch ein Verarbeitungselement ausführbar sind. Ein nicht transitorisches, maschinenzugreifbares/lesbares Medium enthält jeden Mechanismus, der Informationen in einer Form bereitstellt, (d.h. speichert und/oder sendet), die durch eine Maschine, wie einen Computer oder ein elektronisches System lesbar sind. Zum Beispiel enthält ein nicht transitorisches maschinenzugreifbares Medium einen Direktzugriffsspeicher (RAM), wie statischen RAM (SRAM) oder dynamischen RAM (DRAM); ROM; ein magnetisches oder optisches Datenspeichermedium; Flash-Speichereinrichtungen; elektrische Datenspeichereinrichtungen; optische Datenspeichereinrichtungen; akustische Datenspeichereinrichtungen; eine andere Form von Datenspeichereinrichtungen, um Informationen zu halten, die von transitorischen (ausgestrahlten) Signalen (z.B. Trägerwellen, Infrarotsignalen, Digitalsignalen) empfangen werden; usw., die sich von den nicht transitorischen Medien unterscheiden, die Informationen von diesen empfangen können.
  • Anweisungen, die zum Programmieren von Logik verwendet werden, um Ausführungsformen der Offenbarung durchzuführen, können in einem Speicher im System gespeichert werden, wie in einem DRAM-, Cache-, Flash-Speicher oder einem anderen Datenspeicher. Außerdem können die Anweisungen über ein Netzwerk oder durch andere computerlesbare Medien verteilt werden. Somit kann ein maschinenlesbares Medium jeden Mechanismus zum Speichern oder Senden von Informationen in der Form enthalten, die durch eine Maschine (z.B. einen Computer) lesbar ist, ohne aber darauf beschränkt zu sein, wie Disketten, optische Platten, Compact Disc, Nur-Lese-Speicher (CD-ROMs) und magneto-optische Platten, Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher (RAM), löschbaren programmierbaren Nur-Lese-Speicher (EPROM), elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), magnetische oder optische Karten, Flash Speicher oder einen greifbaren, maschinenlesbaren Datenspeicher, der zum Senden von Informationen über das Internet mittels elektrischer, optischer, akustischer oder anderer Formen ausgestrahlter Signale (z.B. Trägerwellen, Infrarotsignale, Digitalsignale usw.) verwendet wird. Daher enthält das computerlesbare Medium eine Art von greifbarem, maschinenlesbarem Medium, das zum Speichern oder Senden elektronischer Anweisungen oder Informationen in einer Form geeignet ist, die durch eine Maschine (z.B. einen Computer) lesbar ist.
  • Eine Bezugnahme in dieser Beschreibung auf „eine (1) Ausführungsform“ oder „eine Ausführungsform“ bedeutet, dass ein bestimmtes Merkmal, eine Struktur oder eine Eigenschaft, das bzw. die in Verbindung mit der Ausführungsform beschrieben ist, in zumindest einer Ausführungsform der vorliegenden Offenbarung enthalten ist. Somit beziehen sich die Erscheinungen der Phrasen „in einer (1) Ausführungsform“ oder „in einer Ausführungsform“ an verschiedenen Stellen in dieser Beschreibung nicht unbedingt alle auf dieselbe Ausführungsform. Außerdem können die besonderen Merkmale, Strukturen oder Eigenschaften in jeder geeigneten Weise in einer oder mehrere Ausführungsformen kombiniert werden.
  • In der vorangehenden Beschreibung wurde eine ausführliche Beschreibung unter Bezugnahme auf spezielle beispielhafte Ausführungsformen angegeben. Es ist jedoch klar, dass verschiedene Modifizierungen und Änderungen daran vorgenommen werden können, ohne vom weiteren Wesen und Umfang der Offenbarung abzuweichen, wie in den beiliegenden Ansprüchen angeführt. Die Beschreibung und Zeichnungen sind daher in einem veranschaulichenden Sinn und nicht in einem einschränkenden Sinn anzusehen. Außerdem bezieht sich die vorangehende Verwendung von Ausführungsform und anderer beispielhafter Begriffe nicht unbedingt auf dieselbe Ausführungsform oder dasselbe Beispiel, sondern kann sich auf verschiedene und eigenständige Ausführungsformen wie auch möglicherweise dieselbe Ausführungsform beziehen.

Claims (22)

  1. Prozessor, umfassend: einen Verarbeitungskern; und eine Caching-Schaltung, die kommunikativ an den Verarbeitungskern gekoppelt ist, umfassend eine Totblockvorhersageeinrichtung (DBP) zur Vorhersage, dass auf eine Cache-Linie in einem Last-Level Cache (LLC) bis zu einer Räumung aus dem LLC nicht zugegriffen wird, wobei in Antwort auf eine Vorhersage, dass auf die Cache-Linie bis zur Räumung nicht zugegriffen wird, die Caching-Schaltung eine Räumungsnachricht an eine Speichersteuerung ausgeben soll, wobei die Räumungsnachricht ein Flag umfasst, das einen DBP-Status der Cache-Linie angibt.
  2. Prozessor nach Anspruch 1, wobei die Speichersteuerung einen speicherseitigen Cache- (MSC-) Spurfolgekreis umfasst zum: Empfangen der Räumungsnachricht; Erstellen, in Antwort auf ein Detektieren des DBP-Status in der Räumungsnachricht in einem MSC, eines MSC-Eintrags in einem MSC zum Speichern einer Nutzlast und einer Speicherstelle, die durch eine Speicheradresse zum Speichern der Nutzlast identifiziert wird; Initiieren eines Zählers, der mit dem MSC-Eintrag verknüpft ist, auf einen Grenzwert; und in Antwort auf ein Detektieren eines Eintretens eines Auslöserereignisses, das mit dem Grenzwert verknüpft ist, Räumen des MSC-Eintrags zu der Speicherstelle eines fernen Speichers.
  3. Prozessor nach einem der Ansprüche 1 und 2, wobei die Speichersteuerung dient zum: Empfangen einer zweiten Räumungsnachricht, die das Flag umfasst, das einen Nicht-DBP-Status angibt; und Erstellen eines zweiten MSC-Eintrags, der nicht mit einer Zeitgrenze verknüpft ist.
  4. Prozessor nach einem der Ansprüche 1 und 2, wobei der Grenzwert eine Zeitgrenze ist, die eine maximale Lebensdauer für den MSC-Eintrag angibt, bevor der MSC-Eintrag zum fernen Speicher geräumt wird.
  5. Prozessor nach Anspruch 4, wobei der MSC-Spurfolgekreis, in Antwort auf eine Bestimmung, dass eine Lebensdauer des MSC-Eintrags die maximale Lebensdauer erreicht, den MSC-Eintrag zum fernen Speicher räumen soll.
  6. Prozessor nach Anspruch 4, wobei der MSC-Spurfolgekreis, in Antwort auf eine Bestimmung, dass die Lebensdauer des MSC-Eintrags die maximale Lebensdauer erreicht, bestimmen soll, ob ein weiteres Auslöserereignis eintritt, und in Antwort auf ein Detektieren eines Eintretens des weiteren Ereignisses, den MSC-Eintrag zum fernen Speicher räumen soll.
  7. Prozessor nach Anspruch 6, wobei das ferne Ereignis ist, dass eine Anzahl von Austrittsanfragen auf einer Zwischenverbindung, die kommunikativ an den Verarbeitungskern, die Caching-Schaltung und die Speichersteuerung gekoppelt ist, kleiner ist als ein Schwellenwert.
  8. Prozessor nach Anspruch 4, wobei die maximale Lebensdauer eine maximale Anzahl von Prozessortaktzyklen ist, die durch eine Anwendung eingestellt wird, die durch einen Anwendungsprozessor ausgeführt wird.
  9. System-on-Chip (SoC), umfassend: ein Speichersystem mit mehreren Ebenen, umfassend einen speicherseitigen Cache (MSC) und einen fernen Speicher; einen Prozessor, der kommunikativ an das Speichersystem mit mehreren Ebenen gekoppelt ist, umfassend: einen Verarbeitungskern; und eine Caching-Schaltung, die kommunikativ an den Verarbeitungskern gekoppelt ist, umfassend eine Totblockvorhersageeinrichtung (DBP) zur Vorhersage, dass auf eine Cache-Linie in einem Last-Level Cache (LLC) bis zu einer Räumung aus dem LLC nicht zugegriffen wird, wobei in Antwort auf eine Vorhersage, dass auf die Cache-Linie bis zur Räumung nicht zugegriffen wird, die Caching-Schaltung eine Räumungsnachricht an eine Speichersteuerung ausgeben soll, wobei die Räumungsnachricht ein Flag umfasst, das einen DBP-Status der Cache-Linie angibt.
  10. SoC nach Anspruch 9, wobei die Speichersteuerung ferner einen speicherseitigen Cache- (MSC-) Spurfolgekreis umfasst zum: Empfangen der Räumungsnachricht; in Antwort auf ein Detektieren des DBP-Status in der Räumungsnachricht, Erstellen im MSC eines MSC-Eintrags zum Speichern einer Nutzlast und einer Speicherstelle, die durch eine Speicheradresse zum Speichern der Nutzlast identifiziert wird; Initiieren eines Zählers, der mit dem MSC-Eintrag verknüpft ist, auf einen Grenzwert; und In Antwort auf ein Detektieren eines Eintretens eines Auslöserereignisses, das mit dem Grenzwert verknüpft ist, Räumen des MSC-Eintrags zur Speicherstelle des fernen Speichers.
  11. SoC nach einem der Ansprüche 9 und 10, wobei der Grenzwert eine Zeitgrenze ist, die eine maximale Lebensdauer für den MSC-Eintrag angibt, bevor der MSC-Eintrag zum fernen Speicher geräumt wird.
  12. SoC nach Anspruch 11, wobei der MSC-Spurfolgekreis, in Antwort auf eine Bestimmung, dass eine Lebensdauer des MSC-Eintrags die maximale Lebensdauer erreicht, den MSC-Eintrag zum fernen Speicher räumen soll.
  13. SoC nach Anspruch 11, wobei der MSC-Spurfolgekreis, in Antwort auf eine Bestimmung, dass die Lebensdauer des MSC-Eintrags die maximale Lebensdauer erreicht, bestimmen soll, ob ein weiteres Auslöserereignis eintritt, und in Antwort auf ein Detektieren eines Eintretens des weiteren Ereignisses, den MSC-Eintrag zum fernen Speicher räumen soll.
  14. SoC nach Anspruch 13, wobei das weitere Ereignis ist, dass eine Anzahl von Austrittsanfragen auf einer Zwischenverbindung, die kommunikativ an den Verarbeitungskern, die Caching-Schaltung und die Speichersteuerung gekoppelt ist, kleiner ist als ein Schwellenwert.
  15. SoC nach Anspruch 11, wobei die maximale Lebensdauer eine maximale Anzahl von Prozessortaktzyklen ist, die durch eine Anwendung eingestellt wird, die durch einen Anwendungsprozessor ausgeführt wird.
  16. Verfahren umfassend: Bestimmen, durch eine Totblockvorhersageeinrichtung (DBP) einer Caching-Schaltung, dass eine Cache-Linie eines Last-Level Cache (LLC) ein Totblock ist; Generieren, durch die Caching-Schaltung, einer Räumungsnachricht zu einer Speichersteuerung, wobei die Räumungsnachricht ein Flag umfasst, das einen DBP-Status der Cache-Linie angibt; und Senden, durch die Caching-Schaltung, der Räumungsnachricht an einen speicherseitigen Cache- (MSC-) Spurfolgekreis in der Speichersteuerung.
  17. Verfahren nach Anspruch 16, wobei der MSC-Spurfolgekreis ferner dient zum: Empfangen der Räumungsnachricht; in Antwort auf ein Detektieren des DBP-Status in der Räumungsnachricht, Erstellen in einem MSC eines MSC-Eintrags zum Speichern einer Nutzlast und einer Speicherstelle, die durch eine Speicheradresse zum Speichern der Nutzlast identifiziert wird; Initiieren eines Zählers, der mit dem MSC-Eintrag verknüpft ist, auf einen Grenzwert und in Antwort auf ein Detektieren eines Eintretens eines Auslöserereignisses, das mit dem Grenzwert verknüpft ist, Räumen des MSC-Eintrags zu der Speicherstelle eines fernen Speichers.
  18. Verfahren nach Anspruch 17, wobei der Grenzwert eine Zeitgrenze ist, die eine maximale Lebensdauer für den MSC-Eintrag angibt, bevor der MSC-Eintrag zum fernen Speicher geräumt wird.
  19. Vorrichtung, umfassend: Mittel zum Durchführen des Verfahrens nach einem der Ansprüche 16 bis 18.
  20. Maschinenlesbares, nicht transitorisches Medium, auf dem ein Programmcode gespeichert ist, der, wenn ausgeführt, Operationen durchführt, umfassend: Bestimmen, durch eine Totblockvorhersageeinrichtung (DBP) einer Caching-Schaltung, dass eine Cache-Linie eines Last-Level Cache (LLC) ein Totblock ist; Generieren, durch die Caching-Schaltung, einer Räumungsnachricht zu einer Speichersteuerung, wobei die Räumungsnachricht ein Flag umfasst, das einen DBP-Status der Cache-Linie angibt; und Senden, durch die Caching-Schaltung, der Räumungsnachricht an einen speicherseitigen Cache- (MSC-) Spurfolgekreis der Speichersteuerung.
  21. Maschinenlesbares, nicht transitorisches Medium nach Anspruch 20, wobei die MSC-Track-Schaltung ferner dient zum: Empfangen der Räumungsnachricht; in Antwort auf ein Detektieren des DBP-Status in der Räumungsnachricht, Erstellen in einem MSC eines MSC-Eintrags zum Speichern einer Nutzlast und einer Speicherstelle, die durch eine Speicheradresse zum Speichern der Nutzlast identifiziert wird; Initiieren eines Zählers, der mit dem MSC-Eintrag verknüpft ist, auf einen Grenzwert; und in Antwort auf ein Detektieren eines Eintretens eines Auslöserereignisses, das mit dem Grenzwert verknüpft ist, Räumen des MSC-Eintrags zu der Speicherstelle eines fernen Speichers.
  22. Maschinenlesbares, nicht transitorisches Medium nach einem der Ansprüche 20 und 21, wobei der Grenzwert eine Zeitgrenze ist, die eine maximale Lebensdauer für den MSC-Eintrag angibt, bevor der MSC-Eintrag zum fernen Speicher geräumt wird.
DE112016007029.2T 2016-07-01 2016-07-01 Vorrichtung und verfahren zum verwalten einer speicherseitigen cache-räumung Withdrawn DE112016007029T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2016/065598 WO2018001528A1 (en) 2016-07-01 2016-07-01 Apparatus and methods to manage memory side cache eviction

Publications (1)

Publication Number Publication Date
DE112016007029T5 true DE112016007029T5 (de) 2019-03-28

Family

ID=56296831

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016007029.2T Withdrawn DE112016007029T5 (de) 2016-07-01 2016-07-01 Vorrichtung und verfahren zum verwalten einer speicherseitigen cache-räumung

Country Status (2)

Country Link
DE (1) DE112016007029T5 (de)
WO (1) WO2018001528A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10509727B1 (en) * 2018-09-10 2019-12-17 Mediatek Inc. Method and apparatus for performing task-level cache management in electronic device

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8131931B1 (en) * 2008-10-22 2012-03-06 Nvidia Corporation Configurable cache occupancy policy
CN103946811B (zh) * 2011-09-30 2017-08-11 英特尔公司 用于实现具有不同操作模式的多级存储器分级结构的设备和方法

Also Published As

Publication number Publication date
WO2018001528A1 (en) 2018-01-04

Similar Documents

Publication Publication Date Title
US10108556B2 (en) Updating persistent data in persistent memory-based storage
US10489309B2 (en) Memory protection key architecture with independent user and supervisor domains
US9690716B2 (en) High performance persistent memory for region-centric consistent and atomic updates
DE102018000886A1 (de) Virtuelle Maschinenkommunikation auf Hardware-Basis
US11030108B2 (en) System, apparatus and method for selective enabling of locality-based instruction handling
DE112017006568T5 (de) Auslegung einer Basistaktfrequenz eines Prozessors auf der Basis von Nutzungsparametern
DE112017003483T5 (de) Eingeschränkte adressumsetzung zum schutz vor vorrichtungs-tlb-anfälligkeiten
DE112016004960T5 (de) Befehl und logik, um informationen im voraus aus einem beständigen speicher zu holen
DE102015006863A1 (de) Befehle und Logik zum Unterbrechen und Wiederaufnehmen von Paging in Secure Enclaves
DE102018125257A1 (de) Defragmentierter und effizienter mikrooperationscache
US20190266087A1 (en) Reducing conflicts in direct mapped caches
DE102018001229A1 (de) Beschleunigerschaltung mit variabler Wortlänge für ein neuronales Netzwerk
US9836399B2 (en) Mechanism to avoid hot-L1/cold-L2 events in an inclusive L2 cache using L1 presence bits for victim selection bias
DE112016005863T5 (de) Minimierung von Snoop-Verkehr lokal und über Kerne auf einem Chip-Mehrkern-Fabric
DE102018002525A1 (de) Hybridatomaritätsunterstützung für einen binärübersetzungsbasierten mikroprozessor
DE112019006898T5 (de) Dynamisches umschalten zwischen ept- und schattenseitentabellen zur laufzeitprozessorverifikation
DE112013007702T5 (de) Befehl und Logik für den Speicherzugriff in einer geclusterten Maschine mit breiter Ausführung
DE202019005686U1 (de) Skalierbare Gesamtspeicherverschlüsselungs-Engine mit mehrfachen Schlüsseln
EP3333699A1 (de) System und verfahren zur verbesserung der leistung des monitors einer verschachtelten virtuellen maschine
DE102018002480A1 (de) System, einrichtung und verfahren zum ausserkraftsetzen der nichtlokalitätsbasierten befehlsbehandlung
US10664199B2 (en) Application driven hardware cache management
DE112017003345T5 (de) Bit-prüfprozessoren, verfahren, systeme und anweisungen zum prüfen eines bits mit einem angegebenen prüfbitwert
DE112016004395T5 (de) Verfahren und Einrichtung für leichtgewichtige Virtualisierungskontexte
DE102020132893A1 (de) Vorrichtungen, verfahren und systeme für einen duplikationsbeständigen on-die-prefetcher für unregelmässige daten
DE112015006952T5 (de) Hardware-mechanismus zum ausführen atomarer handlungen in entfernten prozessoren

Legal Events

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

Representative=s name: SAMSON & PARTNER PATENTANWAELTE MBB, DE

R083 Amendment of/additions to inventor(s)
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee