-
TECHNISCHES GEBIET
-
Hierin beschriebene Ausführungsformen betreffen im Allgemeinen eine Vorrichtung und ein Verfahren für einen Cache in einer Größe, die keine Zweierpotenz ist, in einer Level-1-Speichervorrichtung zum Cachen von Daten, die in einer Level-2-Speichervorrichtung vorhanden sind.
-
STAND DER TECHNIK
-
Ein Arbeitsspeicher eines Prozessors kann Speicher auf zwei Leveln umfassen, einschließlich eines kleineren Level-1-Speichers mit schnellerem Zugriff, wie ein Dynamic Random Access Memory- (DRAM-) System, das Daten für einen größeren und langsameren Level-2-Speicher cacht. Der Level-2-Speicher stellt für das Host- und Betriebssystem den Arbeitsspeicher dar, während der Level-1-Speicher als Cache funktioniert und für das Betriebssystem transparent ist. Das Management des Zwei-Level-Speichers (2LM) kann durch eine 2LM-Engine in dem Prozessor des Hosts durchgeführt werden.
-
Figurenliste
-
Ausführungsformen werden als Beispiele beschrieben, in Bezugnahme auf die begleitenden Zeichnungen, die nicht maßstabsgetreu sind, worin gleiche Bezugszeichen ähnliche Elemente bezeichnen.
- 1 stellt eine Ausführungsform eines Systems bildlich dar, das einen Zwei-Level-Speicher aufweist, der von einem Prozessor verwendet wird.
- 2 stellt eine Ausführungsform von Komponenten einer Adresse bildlich dar, die an Daten in dem Level-2-Speicher gerichtet ist.
- 3 stellt eine Ausführungsform einer Cachezeile in dem Level-1-Speicher bildlich dar.
- 4 stellt eine Ausführungsform einer Cacheinformation in einem Level-1-Speicher bildlich dar.
- 5a und 5b stellen eine Ausführungsform von Arbeitsschritten zum Cachen von Daten für den Level-2-Speicher in dem Level-1-Speicher bildlich dar.
-
BESCHREIBUNG VON AUSFÜHRUNGSFORMEN
-
Ein Arbeitsspeicher mit zwei Leveln schließt zwei Level von Speichern ein, einschließlich eines kleineren flüchtigen Level-1-Speichers mit schnellerem Zugriff, wie ein Dynamic Random Access Memory- (DRAM-) System, der Daten für einen größeren und langsameren nichtflüchtigen Level-2-Speicher cacht, wie einen durch Bytes adressierbaren nichtflüchtigen Direktzugriffsspeicher (NVRAM). Der Level-1-Speicher kann als naher Speicher bezeichnet werden, und der Level-2-Speicher kann als ferner Speicher bezeichnet werden. Der Level-1-Speicher stellt typischerweise einen Cache bereit, wenn der Speicher eine Kapazität in einer Zweierpotenz aufweist, wobei die Cachezeilen in dem Cacheindex, der in dem Level-1-Speicher umgesetzt ist, die Kapazität in einer Zweierpotenz des Caches des Level-1-Speichers abdecken. Die Cachezeilen in dem Cacheindex werden durch eine Indexzahl referenziert und schließen ein Tag ein, das die wichtigsten Bits von Adressen des Level-2-Speichers aufweist, die in der Cachezeile gecacht werden. Die Zahl der Indexwerte der Cachezeilen ist eine Zweierpotenz, berechnet durch das Dividieren der Cachegröße, die eine Zweierpotenz ist, durch die Größe jeder Cachezeile, die ebenso eine Zweierpotenz ist. Auf diese Weise können alle 2m-Indexwerte in m Bits der Adresse spezifiziert werden.
-
In bestimmten Situationen kann es sein, dass die Level-1-Speichervorrichtung nicht über eine Kapazität in einer Zweierpotenz verfügt, die als Cacheindex von Cachezeilen zur Nutzung zur Verfügung steht, so dass die Cachegröße des Level-1-Speichers nicht eine Zweierpotenz ist. Eine Weise zum Umgang mit einer Cachegröße, die keine Zweierpotenz ist, ist es, einen kleineren Bereich des Level-1-Speichers als Cacheindex zu nutzen, der eine Zweierpotenz ist. Diese Technik ist problemtatiosch, da die Region zwischen der genutzten kleineren Region, die eine Zweierpotenz ist, und der vollen Cachegröße, die keine Zweierpotenz ist, für den Cacheindex nicht zur Verfügung steht, um die Cache-Trefferquote durch Maximieren der in dem Cacheindex verfügbaren Anzahl von Cachezeilen zu maximieren.
-
Die beschriebenen Ausführungsformen stellen Techniken bereit, um einen Cache, der keine Zweierpotenz ist, zu dekodieren, die für jede Cachegröße, die keine Zweierpotenz ist und jede Cachezeilengröße anwendbar ist. Bei den beschriebenen Ausführungsformen erfolgt beim Empfang einer Anfrage an eine Zieladresse, wobei n Bits an einen nichtflüchtigen Speicher wie einen Level-2-Speicher gerichtet sind, eine Bestimmung, ob der Zielindex, der m Bits der n Bits der Zieladresse umfasst, innerhalb einer Indexgruppe der flüchtigen Speichervorrichtung ohne Zweierpotenz liegt, die den Level-1-Speicher umfasst. Wenn der Zielindex in der Zieladresse außerhalb der verfügbaren Indexgruppe der Cachegröße, die keine Zweierpotenz ist, liegt, dann erfolgt eine Bestimmung einer modifizierten Abbildung des Zielindexes für die Indexgruppe der Level-1-Speichervorrichtung, die mindestens ein Index-Bit aufweist, das sich von einem entsprechenden mindestens einen Index-Bit in dem Zielindex der Zieladresse unterscheidet. Das entsprechende Index-Bit des Zielindexes, das sich von dem Index-Bit in dem modifizierten Zielindexes unterscheidet, wird in einem Tag in einer Cachezeile bei dem modifizierten Zielindex in der ersten Speichervorrichtung gespeichert. Auf diese Weise wird der Zielindex auf einen Ort in der Indexgruppe der Cachekapazität des Level-1-Speichers abgebildet, auch wenn der Cachemanager so arbeitet, als ob er mit einer Größe in einer Zweierpotenz arbeitet, die größer ist, als die tatsächliche Größe des Level-1-Speichers.
-
In der folgenden Beschreibung wurden zahlreiche spezifische Details wie Implementierung von Logik, Befehlscodes, Mittel zum Spezifizieren von Operanden, Implementierungen zum Partitionieren/Teilen/Duplizieren von Ressourcen, Arten und Beziehungen von Systemkomponenten, und logische Partitionierungs-/Integrationsauswahlmöglichkeiten aufgeführt, um ein tiefergehendes Verständnis der vorliegenden Erfindung bereitzustellen. Ein Fachmann wird jedoch versehen, dass diese Erfindung ohne diese spezifischen Details ausgeübt werden kann. In anderen Fällen wurden Steuerstrukturen, Schaltkreise auf Gate-Ebene und vollständige Software-Bedienungsanleitungssequenzen nicht detailliert gezeigt, um die Erfindung nicht unübersichtlich zu machen. Fachleute werden mit den vorhandenen Beschreibungen in der Lage sein, ohne übermäßige Experimente eine angemessene Funktionalität umzusetzen.
-
Verweise in der Spezifikation auf „eine Ausführungsform“, „die Ausführungsform“. „eine beispielhafte Ausführungsform“, etc. zeigen an, dass die beschriebene Ausführungsform ein bestimmtes Merkmal, eine bestimmte Struktur oder Eigenschaft einschließen kann, aber jede Ausführungsform muss nicht zwingendermaßen das bestimmte Merkmal oder die bestimmte Struktur oder Eigenschaft einschließen. Des Weiteren beziehen sich diese Aussagen nicht unbedingt auf dieselbe Ausführungsform. Bestimmte Ausführungsformen beziehen sich auf elektronische Speichervorrichtungsanordnungen.
-
Ausführungsformen umfassen sowohl Vorrichtungen als auch Verfahren zum Bilden elektronischer Anordnungen.
-
1 stellt eine Ausführungsform eines Systems 100 dar, das einen Prozessor 102 aufweist, einen Cachemanager 104, Cacheinformationen eines Level-1-Speichers 106, die durch den Cachemanager 104 verwendet werden, und einen Level-1-Speichercontroller 108 zum Bilden einer Schnittstelle mit einem Level-1-Speicher 110, ebenso als erste Speichervorrichtung oder Cache bezeichnet. Der Cachemanager 104 kann ebenso mit einem Level-2-Speichercontroller 112 kommunizieren, um Zugriff auf Adressen in einem Level-2-Speicher 114 zu erhalten, der ebenso als eine zweite Speichervorrichtung bezeichnet wird. Der Cachemanager 104 kann auf den Level-1-Speicher 110 und den Level-2-Speicher 114 über eine Schnittstelle 116 zugreifen, wie einen Peripheral Component Interconnect- (PCI-) Bus, wie den Peripheral Component Interconnect express- (PCie-) Bus, oder einen anderen kundenspezifischen Bus.
-
Der Level-1-Speicher 110 und der Level-2-Speicher 114 können einen Arbeitsspeicher des Prozessors 102 umfassen, wobei der Level-1-Speicher 110 als Cache für den Level-2-Speicher 114 fungiert, wobei er Cachezeilen 200 aufweist, um Datenblöcken aus dem 2-Speicher 114 zu cachen. In einer Ausführungsform werden die Cachezeilen 200 des Level-1-Speichers 110 direktes auf Adressen in dem Level-2-Speicher 114 abgebildet, wobei Tags in den Cachezeilen 200 gespeichert werden. Die Cachezeilen 200 können indexiert werden.
-
Der Level-1-Speicher 110 kann eine geringere Größe haben und ein Speicher mit schnellerem Zugriff sein als die zweite Speichervorrichtung oder der Level-2-Speicher 114. In einer Ausführungsform kann der Level-1-Speicher 208 ein Dynamic Random Access Memory (DRAM) umfassen, um Daten in dem Level-2-Speicher 114 zu cachen, der einen dreidimensionalen Kreuzpunktspeicher umfassen kann, der mehr Speicher aufweist als der Level-1-Speicher 110. Der Level-2-Speicher 114 kann mehr Platz aufweisen als der Level-1-Speicher 110 und einen Solid State Drive (SSD) oder eine andere Art Speicher oder Speichervorrichtung umfassen, wie eine dreidimensionale gestapelte Kreuzpunkt-Multilayer-Speicheranordnung. Der Level-2-Speicher 114 kann andere nichtflüchtige Speichertypen umsetzen, wie NAND-Speicherzellen, ferroelektrisches Random Access Memory (FeTRAM), Nanodraht-basierte Speicher, wie phasenwechselnde Speicherung (PCM), Speicher, in denen Memristortechnologie eingebunden ist, magnetoresistive Random Access Memorys (MRAM), Spin Transfer Torque (STT)- MRAM, Resistive Random Access Memory (ReRAM), durch Byte addressierbare nichtflüchtige Direktspeicher (NVRAM), etc.
-
Der Cachemanager 104 bestimmt, ob Daten, die durch den Prozessor 102 angefordert werden, der eine Level-2-Speicheradresse als Arbeitsspeicher verwendet, sich im Level-1-Speicher 110 befinden, wenn nein, holt der Cachemanager 104 die angeforderten Daten aus dem Level-2-Speicher 114 ein.
-
In einer Ausführungsform kann der Cachemanager 104 ein Teil einer Zwei-Level-Speicher- („2LM“) Engine sein, die einen Arbeitsspeicher für einen Prozessor managt, der eine nahe Speichervorrichtung und Level-2-Speichervorrichtungen aufweist. In einer weiteren Ausführungsform kann der Cachemanager 104 ein Teil einer kombinierten Caching Agent- und Home Agent-Konfiguration zum Cachen von Daten aus einem Level-2-Speicher 114 in einen Level-1-Speicher 110 sein, wie sie durch die QuickPath Interconnect-Logik der Intel Corporation bereitgestellt wird. Andere Technologiearten und Protokolle können verwendet werden, um den Cachemanager 104 umzusetzen, um einen Level-1-Speicher 110 als einen Cache für einen größeren Level-2-Speicher 114 aufrechtzuerhalten.
-
Das System 100 kann ebenso mit Eingabe/Ausgabe- (I/O-) Geräte kommunizieren, die Eingabegeräte umfassen können (z. B. Keyboard, Touchscreen, Maus, etc.), Anzeigegeräte, Grafikkarten, Ports, Netzwerkschnittstellen, etc.
-
2 stellt eine Ausführungsform einer der Cachezeilen 200i an einem Indexort in den Cachezeilen 200 in dem Level-1-Speicher 200 bildlich dar und schließt ein Valid-Flag 202 ein, das anzeigt, ob die Cachezeile 200i über gültige Daten verfügt; ein Tag 204, das Tag-Bits aufweist, die verwendet werden, um eine Adresse für den Level-2-Speicher 114 zu bilden, wenn sie mit dem Indexort der Cachezeile 200i in den Cachezeilen 200 kombiniert werden, und einen oder mehrere Datenbytes 2061, 2062... 206b, wobei jedes der b getrennt adressierbare Datenworte oder Bytes aus dem Level-2-Speicher 114 sind, die in einer Cachezeile 200i gespeichert werden können. In einer Ausführungsform kann das Tag 204 ein wichtigstes oder mehrere wichtigste Bits des Indexteils der Adresse umfassen und das mindestens eine wichtigste Bit, das dem Indexteil der Adresse folgt.
-
In den beschriebenen Ausführungsformen stellt der Level-1-Speicher-Cache 110 einen direkt abgebildeten Cache bereit. In alternativen Ausführungsformen können unterschiedliche Abbildungstechniken verwendet werden, um die Daten zu cachen. Des Weiteren kann die Cachezeile 200i zusätzliche Flags und Bits einschließen, um unterschiedliche Status der Datenbytes 2061, 2062... 206b, anzuzeigen, wie Dirty, etc.
-
3 stellt eine Ausführungsform einer Adresse 300 bildlich dar, die verwendet wird, um einen Ort in dem Level-2-Speicher 114 zu adressieren, und weist Offset-Bits 302 auf, die die am wenigsten wichtigen Bits der Adresse 300 umfassen, die verwendet werden, um ein bestimmtes Datenbyte 2061, 2062... 206b in der Cachezeile 200i zu identifizieren. Die Anzahl der Bits b in dem Offset 302 umfasst die Anzahl der Bits, die benötigt werden, um jeden der 2b (oder b) adressierbaren Datenbytes in jeder Cachezeile 200i zu identifizieren. Die Adresse umfasst ferner m Index-Bits 304, die verwendet werden, um jede Cachezeile zu identifizieren und zu lokalisieren, wobei es 2m Cachezeilen 200 in dem Level-1-Speicher 110 gibt. Die Adresse 300 weist ferner eines oder mehrere der wichtigsten Bits 306 auf, die den Index-Bits 304 nachfolgen, um die Adresse 300 des Level-2-Speichers zu vervollständigen. Wie besprochen kann das Tag 204 ein oder mehrere der wichtigsten Bits des Indexteils 304 der Adresse und mindestens einen der wichtigsten Bits 306 umfassen, das dem Indexteil der Adresse nachfolgt.
-
4 stellt eine Ausführungsform der Cacheinformation 400 des Level-1-Speichers dar, die von dem Cachemanager 104 verwendet wird, und schließt eine Cachegröße des Level-1-Speichers 402 ein, die eine Größe sein kann, die keine Zweierpotenz ist; eine Level-1-Speichergröße 404, die eine höhere Zweierpotenz ist, die eine Größe 2k umfasst, so dass k der geringste ganzzahlige Wert ist, der die Bedingung erfüllt, dass 2k größer oder gleich der Cachegröße des Level-1-Speichers 402 ist; eine Level-1-Speichergröße 406 , die eine niedrigere Zweierpotenz ist, die eine Größe 2p umfasst, so dass p der höchste ganzzahlige Wert ist, der die Bedingung erfüllt, dass 2p kleiner oder gleich der Cachegröße des Level-1-Speichers 402 ist; und einen maximalen Index des Level-1-Speichers 408, der einen maximalen Indexwert in der Indexgruppe des der ersten Speichervorrichtung umfasst, der alle Indexwerte der Cachezeilen 200 in dem Level-1-Speicher 110 umfasst.
-
Wenn die Speichergröße 404, die eine höhere Zweierpotenz ist, 2k ist, dann umfasst die Anzahl der Index-Bits 304 in der Zieladresse 300 2k geteilt durch eine Cachezeilengröße, was anzeigt, dass die Gesamtanzahl der indexierten Cachezeilen in einer theoretischen Level-1-Speichergröße 440, die eine größere Zweierpotenz ist, größer als der tatsächliche Level-1-Speicher 110 ist, der keine Zweierpotenz ist.
-
5a und 5b stellen eine Ausführungsform von Arbeitsschritten dar, die durch den Cachemanager 104 ausgeführt werden, um das Cachen von Daten aus dem Level-2-Speicher 114 in dem Level-1-Speicher 110 durchzuführen. Beim Empfang (bei Block 500) einer Anfrage an eine n-Bit-Zieladresse 300 für den Level-2-Speicher 114 bestimmt der Cachemanager 104 (bei Block 502), ob ein Zielindex 304, der die m Index-Bits 304 der Zieladresse 300 umfasst, für die theoretische Level-1-Speichergröße 404, die eine höhere Zweierpotenz ist, in der Indexgruppe des Level-1-Speichers liegt (d. h., weniger oder gleich dem maximalen Index des Level-1-Speichers 408). Wenn nicht, d. h. der Zielindex 304 nimmt Bezug auf einen Indexeintrag, der nicht innerhalb der Indexgruppe des Level-1-Speichers oder der Cachezeilen 200 liegt, modifiziert der Cachemanager 104 (bei Block 504) den Zielindex, so dass er mindestens ein Bit aufweist, das sich von einem entsprechenden mindestens einen Bit in dem Zielindex 304 in der Zieladresse unterscheidet. Beispielsweise kann in einer Ausführungsform mindestens eines der wichtigen Bits des Zielindexes 304 umgeschaltet werden, um einen modifizierten Zielindex zu bilden, der innerhalb der Indexgruppe des Level-1-Speichers 200 abgebildet wird, d. h., Cachezeilen 200, die in dem nahen Cachespeicher 110, der keine Zweierpotenz ist, verfügbar sind.
-
Wenn (bei Block 506), wie es durch das Valid-Flag 302 angezeigt wird, gültige Daten in der Cachezeile 200i im Zielindex vorliegen, der den modifizierten Zielindex umfassen kann, wenn dieser bei Block 502 modifiziert wurde, bildet der Cachemanager 104 (bei Block 508) ein Tag für die Zieladresse 300, die das (die) wichtigste(n) Bit(s) des Indexes 304 und einen oder mehrere der wichtigsten Bits 306 der Adresse 300 umfasst. Der Cachemanager 104 bestimmt dann (bei Block 510), ob das aus der Zieladresse 300 gebildete Tag zu dem Tag 204 in der Cachezeile 200i passt. Dieser Arbeitsschritt des Vergleichens bei Block 510 wird durchgeführt, um zu bestimmen, ob die Cachezeile 200i die Daten aufweist, die für die Zieladresse 300 bestimmt sind. Dieser Vergleich erfolgt, da diese Cachezeile 200i oder der Index, die oder der betrachtet wird, in einem Bereich von Cachezeilen-Indizes liegt, die Daten aus mehr unterschiedlichen Adressen in dem Level-2-Speicher 114 als angefordert enthalten könnten, da bei einigen Zieladressen, die einen Index 304 aufweisen, der größer als der maximale Index des Level-1-Speichers 408 ist, der Index 408 angepasst wird, um auf einen Bereich in dem Cache des Level-1-Speichers abgebildet zu werden, und ebenso, weil der Index des Level-1-Speichers 200 eine oder mehrere Zeilen in dem Level-2-Speicher 114 cachen kann, die dieselbe Gruppe der Index-Bits des Level-1-Speichers 304 aufweisen, sich jedoch in den wichtigsten Tag-Bits 306 unterscheiden. Wenn (bei Block 510) eine Übereinstimmung festgestellt wird, weist die Cachezeile 200i die Daten für die empfangene Zieladresse 300 auf, und der angeforderte Arbeitsschritt des Lesens oder Schreibens wird (bei Block 512) in Bezug auf die Daten in der Cachezeile 200i bei dem modifizierten Index oder Zielindex 304 ausgeführt, der von der angeforderten Zieladresse 300 abgeleitet wurde.
-
Wenn (bei Block 510) die Cachezeile 200i bei dem Index, der von der angeforderten Zieladresse abgeleitet wurde (modifizierter Index bei Block 504 oder Zielindex 304) nicht Daten für die angeforderte Zieladresse aufweist, überträgt der Cachemanager 104 (bei Block 514) modifizierte Daten 2061, 2062... 206b in der Cachezeile 200i in den Level-2-Speicher 114. Der Cachemanager 104 holt dann (bei Block 516) die Daten an der angeforderten Adresse 300 in dem Level-2-Speicher 114 und von ähnlichen Adressen in dem Level-2-Speicher 114 an, die in der Cachezeile 200i gespeichert werden sollen.
-
Nach dem Einholen der Daten, die in der Cachezeile 200i gespeichert werden sollen, geht die Steuerung bei (Block 518) zu Block 520 in 5b über, um das (die) wichtigste(n) Index-Bit(s) zu bestimmen, das (die) in dem Tag 204 in der Cachezeile 200i gespeichert werden soll(en).
-
Bei Block 520 bestimmt der Cachemanager 104, ob der Zielindex 304, der die m Index-Bits der Zieladresse 300 umfasst, innerhalb der Indexgruppe des Level-1-Speichers liegt, d. h., der Index 304 kleiner oder gleich dem maximalen Index des Level-1-Speichers 408 ist. Wenn dem so ist (bei Block 520), aktualisiert der Cachemanager 104 (bei Block 522) den Tag 204 in der Cachezeile, so dass er einen oder mehrere der wichtigsten Index-Bits (msb) des Zielindexes 304 einschließt, die (bei Block 502) modifiziert wurden, um den modifizierten Zielindex zu erstellen, und das mindestens eine wichtigste Bit 306, das nicht dem Index angehört, das auf den Index 304 in der Zieladresse 300 folgt. Wenn (bei Block 520) der Zielindex 304 nicht innerhalb der Indexgruppe des Level-1-Speichers liegt, d. h., größer als der maximale Index des Level-1-Speichers 408 ist, aktualisiert der Cachemanager 104 (bei Block 522) den Tag 204 in der Cachezeile 200i so dass er das (die) wichtigste(n) Index-Bit(s) aus dem Zielindex 304 in der angeforderten Zieladresse aufweist, die (bei Block 504) modifiziert würden (bevor der Index modifiziert wurde) und das mindestens eine wichtigste Bit 306, das nicht dem Index angehört, aus der angeforderten Zieladresse 300. Nach dem Aktualisieren des Tags 204 in der Cachezeile 200i bei Block 522 oder 524 kehrt die Steuerung (bei Block 526) zu Block 512 in 5a zurück, um den angeforderten Arbeitsschritt des Lesens oder Schreibens auszuführen
-
Wenn (bei Block 502) der Zielindex 304 innerhalb der Indexgruppe des Level-1-Speichers liegt, d. h., weniger oder gleich dem maximalen Index des Level-1-Speichers 408 liegt, kehrt die Steuerung zu Block 506 zurück, um zu bestimmen, ob die Cachezeile 200i, die von dem Zielindexwert 304 adressiert wird, Daten für unterschiedliche Zieladressen in dem Level-2-Speicher 114 aufweist. Wenn es (bei Block 506) keine gültigen Daten in der Cachezeile 200i beim Zielindex gibt, geht die Steuerung zu Block 516 über, um die Daten für die Cachezeile bei der angeforderten Adresse einzuholen.
-
Beispielsweise kann in einer Umsetzung als Beispiel der Level-2-Speicher 114 32 Gigabytes (GB) umfassen, die eine Adressgröße von 35 Bit aufweisen, der Level-1-Speicher kann eine Größe von 12 GB aufweisen, die keine Zweierpotenz ist, und jede Cachezeile kann 64 Bytes aufweisen, die 64 Worte mit einem Byte aufweisen. In einem solchen Fall wäre die größere Cachegröße 404, die keine Zweierpotenz ist, 16GB, oder 234 geteilt durch eine Cachezeilengröße von 64KB (26), was zu 228 Cachezeilen führen würde, die 228 oder 256MB Indexwerte aufweisen würden. Dies bedeutet, dass sechs der wenigsten wichtigen Bits für den Offset 302 zur Verfügung stünden, für 64 adressierbare Bytes in der Cachezeile, 28 Bits, die für den Index erforderlich sind, um alle 256 Millionen Einträge zu adressieren, und dann ein wichtigstes Bit 306. Wenn eine Zieladresse einen Index aufweist, der eine Cachezeile über 192 Million (12GB) adressiert, dann muss das wichtigste Bit des Indexes, das einen Teil des Tags 204 bildet, von 1 zu 0 umgeschaltet werden, damit es in einer Region von Cachezeilen abgebildet wird, die sich von 4GB bis 8GB des 16GB-Caches des Level-1-Speichers erstreckt. In einem solchen Beispiel würde das Tag 204, das in der Cachezeile gespeichert wird, das wichtigste Bit der empfangenen Level-2-Speicheradresse aufweisen, oder das 35. Bit, und das ursprüngliche wichtigste Index-Bit, oder das 34. Bit in der Adresse. Die Indexgruppe der Cachegröße von 12GB wäre der Indexwert bei 12GB geteilt durch 64 Bytes.
-
Bei den beschriebenen Ausführungsformen wird eine Indexgruppe für eine Cachegröße, die eine Zweierpotenz ist, verwendet, die größer als die tatsächliche Cachegröße, die keine Zweierpotenz ist, des Level-1-Speichers 110 ist; wenn jedoch eine empfangene Adresse 300 einen Index aufweist, der über die verfügbare Indexgruppe der Cachegröße, die keine Zweierpotenz ist, hinausgeht, wird dieser Index in der Indexgruppe des Level-1-Speichers 110 in einer Cachezeile abgebildet, die für Indexwerte in der Zieladresse innerhalb der Indexgruppe des Caches, der keine Zweierpotenz ist, verwendet werden kann.
-
Die modifizierten wichtigsten Index-Bits und die Tag-Bits, die nicht zu dem Index gehören, können sich bei unterschiedlichen Größen der Adressen des Level-2-Speichers und für unterschiedliche Anzahlen von Cachezeilen in dem Level-1-Speicher und für unterschiedliche Cachetechniken als das Caching mit direkter Abbildung unterscheiden.
-
Es sollte klar sein, dass ein Verweis in dieser Spezifikation auf „die Ausführungsform“ oder „eine Ausführungsform“ bezeichnet, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder Eigenschaft, das oder die in Verbindung mit der Ausführungsform beschrieben wird, in mindestens einer Ausführungsform der vorliegenden Erfindung eingeschlossen ist. Daher wird betont und es sollte klar sein, dass zwei oder mehr Verweise auf „eine Ausführungsform“ oder „die Ausführungsform“ oder „eine alternative Ausführungsform“ in unterschiedlichen Teilen dieser Spezifikation nicht unbedingt dieselbe Ausführungsform bezeichnen. Des Weiteren können die bestimmten Merkmale, Strukturen oder Eigenschaften in einer oder mehreren Ausführungsformen der Erfindung kombiniert werden, wie es geeignet erscheint.
-
Auf ähnliche Weise sollte es klar sein, dass in der Beschreibung der Ausführungsformen der Erfindung oben verschiedene Merkmale manchmal in einer einzigen Ausführungsform, Figur oder Beschreibung davon zusammengefasst werden, um die Offenbarung zu verschlanken, was zum Verständnis eines oder mehrerer der verschiedenen Aspekte der Erfindung beiträgt. Dieses Verfahren der Offenbarung ist jedoch nicht so auszulegen, dass es die Absicht widerspiegelt, dass der beanspruchte Gegenstand mehr Merkmale erfordert, als in jedem Anspruch ausdrücklich ausgeführt werden. Stattdessen liegen, wie es die folgenden Ansprüche widerspiegeln, Aspekte der Erfindung in weniger als allen Merkmalen einer einzigen oben offenbarten Ausführungsform. Somit werden die Ansprüche, die der detaillierten Beschreibung folgen, hiermit ausdrücklich in diese detaillierte Beschreibung eingebunden.
-
Die Bezugszeichen, die hierin verwendet werden, wie b, i, m, n, k, und p, werden hierin verwendet, um eine variable Anzahl von Beispielen eines Elements zu bezeichnen, die dasselbe oder unterschiedliche bezeichnen können und dieselbe oder unterschiedliche Werte bezeichnen können, wenn sie mit unterschiedlichen oder denselben Elementen in unterschiedlichen beschriebenen Beispielen verwendet werden.
-
BEISPIELE
-
Beispiel 1 ist eine Vorrichtung zum Cachen von Daten gemäß Anfragen an Zieladressen, umfassend: eine Level-1-Speichervorrichtung, die eine Cachegröße aufweist, die keine Zweierpotenz ist, um Daten zu cachen, die in einer Level-2-Speichervorrichtung vorhanden sind, die eine 2n-Größe aufweist, die größer ist als die Cachegröße, die keine Zweierpotenz ist, der Level-1-Speichervorrichtung; und einen Cachemanager, um: eine Anfrage an eine Zieladresse zu empfangen, wobei n Bits an die Level-2-Speichervorrichtung gerichtet sind; zu bestimmen, ob ein Zielindex, der m Bits der n Bits der Zieladresse umfasst, innerhalb einer Indexgruppe der Level-1-Speichervorrichtung liegt, wobei eine Indexgruppe 2m eine größere Größe aufweist als die Indexgruppe in der Level-1-Speichervorrichtung; zu bestimmen, ob ein modifizierter Zielindex in der Indexgruppe der Level-1-Speichervorrichtung mindestens ein Index-Bit aufweist, das sich von einem entsprechenden mindestens einem Index-Bit in dem Zielindex unterscheidet; und die Anfrage in Bezug auf Daten in einer Cachezeile bei dem modifizierten Zielindex in der Level-1-Speichervorrichtung zu bearbeiten.
-
In Beispiel 2 kann der Gegenstand der Beispiele 1 und 3-10 optional aufweisen, dass das Bestimmen des modifizierten Zielindexes das Umschalten des entsprechenden mindestens einen Index-Bits in dem Zielindex umfasst, um das mindestens eine Index-Bit in dem modifizierten Zielindex zu erstellen, das sich von dem entsprechenden mindestens einen Index-Bit in dem Zielindex unterscheidet.
-
In Beispiel 3 kann der Gegenstand der Beispiele 1, 2 und 4-10 optional aufweisen, dass 2m gleich 2k geteilt durch eine Cachezeilengröße von Cachezeilen in der Level-1-Speichervorrichtung ist, wobei k einen niedrigsten ganzzahligen Wert umfasst, so dass 2k größer als die Cachegröße ist, die keine Zweierpotenz ist.
-
In Beispiel 4 kann der Gegenstand der Beispiele 1-3 und 5-10 optional aufweisen, dass der Cachemanager ferner: das entsprechende mindestens eine Index-Bit des Zielindexes, dass sich von dem mindestens einen Index-Bit in dem modifizierten Zielindex unterscheidet, in einem Tag in der Cachezeile bei dem modifizierten Zielindex in der Level-1-Speichervorrichtung speichern soll.
-
In Beispiel 5 kann der Gegenstand der Beispiele 1-4 und 6-10 optional aufweisen, dass der Cachemanager ferner: als Antwort auf das Bestimmen, dass der Zielindex in der Indexgruppe der Level-1-Speichervorrichtung liegt, in dem Tag das mindestens eine Index-Bit in dem Zielindex speichern soll, das geändert worden wäre, wenn der Zielindex sich nicht in der Indexgruppe der Level-1-Speichervorrichtung befände.
-
In Beispiel 6 kann der Gegenstand der Beispiele 1-5 und 7-10 optional umfassen, dass das Tag mindestens eines eines wichtigsten Bits der Zieladresse, das nicht zu dem Index gehört, und des mindestens einen Index-Bits in dem Zielindex einschließt, das modifiziert wird, wenn der Zielindex nicht innerhalb der Indexgruppe der Level-1-Speichervorrichtung liegt.
-
In Beispiel 7 kann der Gegenstand der Beispiele 1-6 und 8-10 optional aufweisen, dass die Zieladresse ferner b Offset-Bits zu Adressen jedes von 2b Datenbytes in der Cachezeile einschließt, wobei das Tag (n - m - b) der wichtigsten Bits, die nicht zum Index gehören, der Zieladresse einschließt und das mindestens eine wichtigste Index-Bit in dem Zielindex, das modifiziert wird, wenn der Zielindex nicht innerhalb der Indexgruppe der Level-1-Speichervorrichtung liegt, wobei das Tag das mindestens eine wichtigste Index-Bit einschließt, wenn der Zielindex innerhalb und nicht innerhalb der Indexgruppe der Level-1-Speichervorrichtung liegt.
-
In Beispiel 8 kann der Gegenstand der Beispiele 1-7, 9, und 10 optional aufweisen, dass der Cachemanager ferner: ein gebildetes Tag für die Zieladresse bilden soll, das mindestens ein wichtigstes Bit von dem Zielindex umfasst, und mindestens ein wichtigstes Bit der Zieladresse, das auf den Zielindex folgt; bestimmen soll, ob das gebildete Tag zu dem Tag in der Cachezeile bei dem modifizierten Zielindex passt; Daten an der Zieladresse in der Level-2-Speichervorrichtung einholen soll, die in der Cachezeile als Reaktion auf das Bestimmen, dass das gebildete Tag nicht zu dem Tag in der Cachezeile passt, gespeichert werden sollen; und die Anfrage als Reaktion auf das Einholen der Daten verarbeiten soll.
-
In Beispiel 9 kann der Gegenstand der Beispiele 1-8 und 10 optional aufweisen, dass der Cachemanager ferner das Angefragte in Bezug auf die Daten in der Cachezeile verarbeiten soll, als Reaktion auf das Bestimmen, dass das gebildete Tag zu dem Tag in der Cachezeile passt.
-
In Beispiel 10 kann der Gegenstand der Beispiele 1-9 optional einschließen, dass die Level-1-Speichervorrichtung eine flüchtige Speichervorrichtung umfasst, und dass die Level-2-Speichervorrichtung eine durch Byte adressierbare nichtflüchtige Direktspeichervorrichtung umfasst.
-
Beispiel 11 ist ein System zum Cachen von Daten gemäß Anfragen an Zieladressen, umfassend: einen Prozessor, der einen Cachemanager; einen Arbeitsspeicher für den Prozessor einschließlich einer Level-1-Speichervorrichtung und einer Level-2-Speichervorrichtung aufweist, wobei die Level-1-Speichervorrichtung Daten für die Level-2-Speichervorrichtung cacht, und wobei die Level-1-Speichervorrichtung eine Cachegröße aufweist, die keine Zweierpotenz ist, um Daten zu cachen, die in der Level-2-Speichervorrichtung vorhanden sind, die eine 2n-Größe aufweist, die größer ist als die Cachegröße, die keine Zweierpotenz ist, der Level-1-Speichervorrichtung; und einen Cachemanager, um: eine Anfrage an eine Zieladresse zu empfangen, wobei n Bits an die Level-2-Speichervorrichtung gerichtet sind; zu bestimmen, ob ein Zielindex, der m Bits der n Bits der Zieladresse umfasst, innerhalb einer Indexgruppe der Level-1-Speichervorrichtung liegt, wobei eine Indexgruppe von 2m eine größere Größe aufweist als die Indexgruppe in der Level-1-Speichervorrichtung; einen modifizierten Zielindex in der Indexgruppe der Level-1-Speichervorrichtung zu bestimmen, bei dem mindestens ein Index-Bit sich von einem entsprechenden mindestens einen Index-Bit in dem Zielindex unterscheidet; und die Anfrage in Bezug auf Daten in einer Cachezeile bei dem modifizierten Zielindex in der Level-1-Speichervorrichtung zu verarbeiten.
-
In Beispiel 12 kann der Gegenstand der Beispiele 11 und 13-18 optional aufweisen, dass das Bestimmen des modifizierten Zielindexes das Umschalten des entsprechenden mindestens einen Index-Bits in dem Zielindex einschließt, um das mindestens eine Index-Bit in dem modifizierten Zielindex zu erstellen, das sich von dem entsprechenden mindestens einen Index-Bit in dem Zielindex unterscheidet.
-
In Beispiel 13 kann der Gegenstand der Beispiele 11, 12, und 14-18 optional aufweisen, dass der Cachemanager ferner: das entsprechende mindestens eine Index-Bit aus dem Zielindex, das sich von dem mindestens einen Index-Bit in dem modifizierten Zielindex unterscheidet, in einem Tag in der Cachezeile bei dem modifizierten speichern soll Zielindex in der Level-1-Speichervorrichtung speichern soll.
-
In Beispiel 14 kann der Gegenstand der Beispiele 11-13 und 15-18 optional aufweisen, dass der Cachemanager ferner: als Reaktion auf das Bestimmen, dass der Zielindex in der Indexgruppe der Level-1-Speichervorrichtung liegt, in dem Tag das mindestens eine Index-Bit in dem Zielindex speichern soll, das verändert worden wäre, wenn der Zielindex nicht in der Indexgruppe der Level-1-Speichervorrichtung liegen würde.
-
In Beispiel 15 kann der Gegenstand der Beispiele 11-14 und 16-18 optional aufweisen, dass das Tag mindestens eines eines am wichtigsten Bits der Zieladresse, das nicht zu dem Index gehört, und des mindestens einen Index-Bits in dem Zielindex, das modifiziert wird, wenn der Zielindex nicht in der Indexgruppe der Level-1-Speichervorrichtung liegt, aufweist.
-
In Beispiel 16 kann der Gegenstand der Beispiele 11-15, 17, und 18 optional einschließen, dass die Zieladresse ferner b Offset-Bits einschließt, um jeden von 2b Databytes in der Cachezeile zu adressieren, wobei das Tag (n - m - b) der wichtigsten Bits, die nicht zum Index der Zieladresse gehören, und das mindestens eine wichtigste Index-Bit in dem Zielindex aufweist, das modifiziert wird, wenn der Zielindex nicht innerhalb der Indexgruppe der Level-1-Speichervorrichtung liegt, wobei das Tag das mindestens eine wichtigste Index-Bit aufweist, wenn der Zielindex innerhalb und nicht innerhalb der Indexgruppe der Level-1-Speichervorrichtung liegt.
-
In Beispiel 17 kann der Gegenstand der Beispiele 11-16 und 18 optional aufweisen, dass der Cachemanager ferner: ein gebildetes Tag für die Zieladresse bilden soll, das mindestens ein wichtigstes Bit von dem Zielindex und das mindestens eine wichtigste Bit der Zieladresse, das auf den Zielindex folgt; bestimmen soll, ob das gebildete Tag zu dem Tag in der Cachezeile bei dem modifizierten Zielindex passt; Daten von der Zieladresse in der Level-2-Speichervorrichtung einholen soll, um sie als Reaktion auf das Bestimmen, dass das gebildete Tag nicht zu dem Tag in der Cachezeile passt, in der Cachezeile zu speichern; und die Anfrage als Reaktion auf das Einholen der Daten zu verarbeiten.
-
In Beispiel 18 kann der Gegenstand der Beispiele 11-17 optional aufweisen, dass die Level-1-Speichervorrichtung eine flüchtige Speichervorrichtung aufweist, und dass die Level-2-Speichervorrichtung eine durch Byte adressierbare nichtflüchtige Direktspeichervorrichtung umfasst.
-
Beispiel 19 ist ein Verfahren zum Cachen von Daten gemäß Anfragen an Zieladressen, umfassend: Cachen in einer Level-1-Speichervorrichtung, die eine Cachegröße umfasst, die keine Zweierpotenz ist, von Daten, die in einer Level-2-Speichervorrichtung vorhanden sind, die eine 2n-Größe aufweist, die größer ist als die Cachegröße, die keine Zweierpotenz ist, der Level-1-Speichervorrichtung; Empfangen einer Anfrage an eine Zieladresse, wobei n Bits an die Level-2-Speichervorrichtung gerichtet sind; Bestimmen, ob ein Zielindex, umfassend m Bits der n Bits der Zieladresse, innerhalb einer Indexgruppe der Level-1-Speichervorrichtung liegt, wobei eine Indexgruppe von 2m eine größere Größe aufweist als die Indexgruppe in der Level-1-Speichervorrichtung; Bestimmen eines modifizierten Zielindexes in der Indexgruppe der Level-1-Speichervorrichtung, der mindestens ein Index-Bit aufweist, das sich von einem entsprechenden mindestens einen Index-Bit in dem Zielindex unterscheidet; und Verarbeiten der Anfrage in Bezug auf Daten in einer Cachezeile bei dem modifizierten Zielindex in der Level-1-Speichervorrichtung.
-
In Beispiel 20 kann der Gegenstand der Beispiele 11 und 13-18 optional mindestens eines der folgenden aufweisen:
- (1) wobei das Bestimmen des modifizierten Zielindexes das Umschalten des entsprechenden mindestens einen Index-Bits in dem Zielindex aufweist, um das mindestens eine Index-Bit in dem modifizierten Zielindex zu erstellen, das sich von dem mindestens einen Index-Bit in dem Zielindex unterscheidet; und/oder
- (2) wobei 2m gleich 2k geteilt durch eine Cachezeilengröße von Cachezeilen in der Level-1-Speichervorrichtung ist, wobei k einen geringsten ganzzahligen Wert umfasst, der größer als die Cachegröße, die keine Zweierpotenz ist, ist; und/oder
- (3) das Speichern des entsprechenden mindestens einen Index-Bits von dem Zielindex, das sich von dem mindestens einen Index-Bit in dem modifizierten Zielindex unterscheidet, in einem Tag in der Cachezeile bei dem modifizierten Zielindex in der Level-1-Speichervorrichtung; und/oder
- (4) als Reaktion auf das Bestimmen, dass der Zielindex in der Indexgruppe der Level-1-Speichervorrichtung liegt, das Speichern in dem Tag das mindestens eine Index-Bit in dem Zielindex, das verändert worden wäre, wenn der Zielindex nicht in der Indexgruppe der Level-1-Speichervorrichtung läge; und/oder
- (5) wobei das Tag mindestens eines eines wichtigsten Bits der Zieladresse, das nicht dem Index angehört, und dem mindestens einen Index-Bit dem Zielindex aufweist, das modifiziert wird, wenn der Zielindex nicht innerhalb der Indexgruppe der Level-1-Speichervorrichtung liegt; und/oder
- (6) wobei die Zieladresse ferner b Offset-Bits aufweist, die jeden von 2b Datenbytes in der Cachezeile adressieren, wobei das Tag (n - m - b) der wichtigsten Bits, die nicht zum Index gehören, der Zieladresse und das mindestens eine wichtigste Index-Bit in dem Zielindex aufweist, das modifiziert wird, wenn der Zielindex nicht innerhalb der Indexgruppe der Level-1-Speichervorrichtung liegt, wobei das Tag das mindestens eine wichtigste Index-Bit aufweist, wenn der Zielindex innerhalb und nicht innerhalb der der Indexgruppe der Level-1-Speichervorrichtung liegt; und/oder
- (7) Bilden eines gebildeten Tags für die Zieladresse, umfassend mindestens ein wichtigstes Bit aus dem Zielindex und mindestens ein wichtigstes Bit der Zieladresse, das auf den Zielindex folgt; Bestimmen, ob das gebildete Tag zu dem Tag in der Cachezeile bei dem modifizierten Zielindex passt; Einholen von Daten an der Zieladresse in der Level-2-Speichervorrichtung, die in der Cachezeile als Antwort auf das Bestimmen, dass das gebildete Tag nicht zu dem Tag in der Cachezeile passt, gespeichert werden sollen; und Verarbeiten der Anfrage als Reaktion auf das Einholen der Daten; und/oder
- (8) Verarbeiten der Anfrage in Bezug auf die Daten in der Cachezeile als Reaktion auf das Bestimmen, dass das gebildete Tag zu dem Tag in der Cachezeile passt; und/oder
- (9) wobei die Level-1-Speichervorrichtung eine flüchtige Speichervorrichtung umfasst und die Level-2-Speichervorrichtung eine durch Byte adressierbare nichtflüchtige Direktspeichervorrichtung umfasst.
-
Beispiel 21 ist eine Vorrichtung, umfassend: Mittel zum Cachen in einer Level-1-Speichervorrichtung, die eine Cachegröße umfasst, die keine Zweierpotenz ist, von Daten, die in einer Level-2-Speichervorrichtung vorhanden sind, die eine 2n-Größe aufweist, die größer ist als die Cachegröße, die keine Zweierpotenz ist, der Level-1-Speichervorrichtung; Mittel zum Empfangen einer Anfrage an eine Zieladresse, wobei n Bits an die Level-2-Speichervorrichtung gerichtet sind; Mittel zum Bestimmen, ob ein Zielindex, der m Bits der n Bits der Zieladresse umfasst, in einer Indexgruppe der Level-1-Speichervorrichtung liegt, wobei eine Indexgruppe von 2m eine größere Größe aufweist als die Indexgruppe in der Level-1-Speichervorrichtung; Mittel zum Bestimmen eines modifizierten Zielindexes in der Indexgruppe für eine Level-1-Speichervorrichtung, die mindestens ein Index-Bit aufweist, das sich von einem entsprechenden mindestens einen Index-Bit in dem Zielindex unterscheidet; und Mittel zum Verarbeiten der Anfrage in Bezug auf Daten in einer Cachezeile bei dem modifizierten Zielindex in der Level-1-Speichervorrichtung.
-
In Beispiel 22 kann der Gegenstand der Beispiele 21 optional Mittel zum Speichern des entsprechenden mindestens einen Index-Bits aus dem Zielindex aufweisen, das sich von dem mindestens einen Index-Bit in dem modifizierten Zielindex in einem Tag in der Cachezeile bei dem modifizierten Zielindex in der Level-1-Speichervorrichtung unterscheidet.
-
Beispiel 23 ist ein maschinenlesbarer Speicher, einschließlich maschinenlesbaren Befehlen, die, wenn sie ausgeführt werden, ein Verfahren umsetzen oder ein Gerät oder System realisieren, wie es in einem der vorigen Ansprüche beansprucht wird.
-
Beispiel 24 ist eine Vorrichtung, umfassend Mittel zum Ausführen eines Verfahrens, wie es nach einem der vorigen Ansprüche beansprucht wird.