DE112016006025T5 - Vorrichtung und verfahren für einen cache in einer grösse, die keine zweierpotenz ist, in einer level-1-speichervorrichtung zum cachen von daten, die in einer level-2-speichervorrichtung vorhanden sind - Google Patents

Vorrichtung und verfahren für einen cache in einer grösse, die keine zweierpotenz ist, in einer level-1-speichervorrichtung zum cachen von daten, die in einer level-2-speichervorrichtung vorhanden sind Download PDF

Info

Publication number
DE112016006025T5
DE112016006025T5 DE112016006025.4T DE112016006025T DE112016006025T5 DE 112016006025 T5 DE112016006025 T5 DE 112016006025T5 DE 112016006025 T DE112016006025 T DE 112016006025T DE 112016006025 T5 DE112016006025 T5 DE 112016006025T5
Authority
DE
Germany
Prior art keywords
index
level
storage device
bit
destination
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.)
Pending
Application number
DE112016006025.4T
Other languages
English (en)
Inventor
Vedaraman Geetha
Henk G. Neefs
Brian G. Morris
Sreenivas Mandava
Massimo Sutera
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 DE112016006025T5 publication Critical patent/DE112016006025T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device
    • 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
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/253Centralized memory
    • G06F2212/2532Centralized memory comprising a plurality of modules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

Es werden eine Vorrichtung und ein Verfahren für einen Cache mit einer Größe, die keine Zweierpotenz ist, in einer Level-1-Speichervorrichtung bereitgestellt, um Daten zu cachen, die in einer Level-2-Speichervorrichtung vorhanden sind, die eine 2n-Cachegröße aufwiest. Eine Anfrage wird an eine Zieladresse gestellt, wobei n Bits an die Level-2-Speichervorrichtung gerichtet sind. Es wird eine Bestimmung vorgenommen, ob ein Zielindex, umfassend m Bits der n Bits der Zieladresse, innerhalb einer Indexgruppe der Level-1-Speichervorrichtung liegt. Es wird eine Bestimmung eines modifizierten Zielindexes in der Indexgruppe Level-1-Speichergruppe vorgenommen, der mindestens ein Index-Bit aufweist, das sich von einem entsprechenden mindestens einen Index-Bit in dem Zielindex unterscheidet. Die Anfrage wird mit Bezug auf Daten in einer Cachezeile bei dem modifizierten Zielindex in der Level-1-Speichervorrichtung verarbeitet.

Description

  • 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. (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. (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. (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. (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. (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. (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. (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. (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. (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.

Claims (25)

  1. Vorrichtung zum Cachen von Daten gemäß Anfragen an Zieladressen, umfassend: eine Level-1-Speichervorrichtung, die eine Cachegröße aufweist, die keine Zweierpotenz ist, zum Cachen 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; 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 einschließt, innerhalb einer Indexgruppe der Level-1-Speichervorrichtung liegt, wobei eine Indexgruppe von 2m eine größere Größe aufweist als die Indexgruppe der Level-1-Speichervorrichtung; einen modifizierten Zielindex in der Indexgruppe der Level-1-Speichervorrichtung zu bestimmen, 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.
  2. Vorrichtung nach Anspruch 1, wobei 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.
  3. Vorrichtung nach Anspruch 1, wobei 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 ist als die Cachegröße, die die keine Zweierpotenz ist.
  4. Vorrichtung nach einem der Ansprüche 1, 2, und 3, wobei der Cachemanager ferner: das entsprechende mindestens eine Index-Bit 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 speichern soll.
  5. Vorrichtung nach Anspruch 4, wobei der Cachemanager ferner: als Reaktion auf das Bestimmen, dass der Zielindex innerhalb 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 läge.
  6. Vorrichtung nach Anspruch 4, wobei das Tag mindestens eines eines wichtigsten Bits, das nicht dem Index angehört, der Zieladresse und des mindestens einen Index-Bits in dem Zielindex aufweist, das modifiziert wird, wenn der Zielindex nicht innerhalb der Indexgruppe der Level-1-Speichervorrichtung liegt.
  7. Vorrichtung nach Anspruch 6, wobei die Zieladresse ferner b Offset-Bits aufweist, um jeden von 2b Datenbytes in der Cachezeile zu 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, das modifiziert wird, wenn der Zielindex nicht innerhalb der Indexgruppe der Level-1-Speichervorrichtung liegt, aufweist, wobei das Tag das mindestens ein wichtigstes Index-Bit aufweist, wenn der Zielindex innerhalb und nicht innerhalb der Indexgruppe der Level-1-Speichervorrichtung liegt.
  8. Vorrichtung nach Anspruch 4, wobei 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 gespeichert werden sollen, dass das gebildete Tag nicht zu dem Tag in der Cachezeile passt; und die Anfrage als Reaktion auf das Einholen der Datenform verarbeiten soll.
  9. Vorrichtung nach Anspruch 8, wobei 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.
  10. Vorrichtung nach einem der Ansprüche 1, 2, und 3, wobei die Level-1-Speichervorrichtung eine flüchtige Speichervorrichtung umfasst, und die Level-2-Speichervorrichtung eine durch Byte adressierbare nichtflüchtige Direktspeichervorrichtung umfasst.
  11. System zum Cachen von Daten gemäß Anfragen an Zieladressen, umfassend: einen Prozessor, der einen Cachemanager aufweist; einen Arbeitsspeicher für den Prozessor, einschließlich einer Level-1-Speichervorrichtung und einer Level-2-Speichervorrichtung, 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 größer ist als die Indexgruppe in der Level-1-Speichervorrichtung; einen modifizierten Zielindex in der Indexgruppe der Level-1-Speichervorrichtung zu bestimmen, der mindestens ein Index-Bit aufweist, das sich von einem entsprechenden mindestens einen Index-Bit in dem Zielindex unterscheidet; und die Anfrage in Bezug auf Daten in einer Cachezeile an dem modifizierten Zielindex in der Level-1-Speichervorrichtung zu verarbeiten.
  12. System nach Anspruch 11, wobei das Bestimmen des modifizierten Zielindexes das Umschalten des mindestens einen Index-Bits in dem Zielindex umfasst, um das mindestens eine Index-Bit in dem modifizierten Zielindex zu erstellen, das sich von dem mindestens einen Index-Bit in dem Zielindex unterscheidet.
  13. System nach einem der Ansprüche 11 und 12, wobei der Cachemanager ferner: das entsprechende mindestens eine Index-Bit 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 speichern soll.
  14. System nach Anspruch 13, wobei der Cachemanager ferner: als Reaktion auf das Bestimmen, dass der Zielindex innerhalb der Indexgruppe der Level-1-Speichervorrichtung liegt, in dem Tag das mindestens eine Index-Bit in dem Zielindex speichern soll, das verändert würde, wenn der Zielindex nicht in der Indexgruppe der Level-1-Speichervorrichtung läge.
  15. System nach Anspruch 13, wobei das Tag mindestens eines eines wichtigsten Bits der Zieladresse, das nicht zum Index gehört, und des mindestens einen Index-Bits in dem Zielindex umfasst, das modifiziert wird, wenn der Zielindex nicht innerhalb der Indexgruppe der Level-1-Speichervorrichtung liegt.
  16. System nach Anspruch 15, wobei die Zieladresse ferner b Offset-Bits einschließt, um jeden von 2b Databytes in der Cachezeile anzusprechen, 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.
  17. System nach Anspruch 13, wobei 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 umfasst, das auf den Zielindex folgt; bestimmen soll, ob das gebildete Tag zu dem Tag in der Cachezeile bei dem modifizierten Zielindex passt; Daten bei 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 verarbeiten soll.
  18. System nach einem der Ansprüche 11 und 12, wobei die Level-1-Speichervorrichtung eine flüchtige Speichervorrichtung umfasst, und die Level-2-Speichervorrichtung eine durch Byte adressierbare nichtflüchtige Direktspeichervorrichtung umfasst.
  19. 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-l-Speichervorrichtung, der mindestens ein Index-Bit aufweist, das sich von einem entsprechenden 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.
  20. Verfahren nach Anspruch 19, wobei 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.
  21. Verfahren nach einem der Ansprüche 20 und 21, ferner umfassend: 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.
  22. Verfahren nach Anspruch 21, ferner umfassend: 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.
  23. Verfahren nach einem der Ansprüche 19 und 20, wobei die Level-1-Speichervorrichtung eine flüchtige Speichervorrichtung umfasst und die Level-2-Speichervorrichtung eine durch Byte adressierbare nichtflüchtige Direktspeichervorrichtung umfasst.
  24. 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.
  25. Vorrichtung nach Anspruch 24, ferner umfassend: Mittel zum Speichern des entsprechenden mindestens einen Index-Bits aus dem Zielindex, 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.
DE112016006025.4T 2015-12-23 2016-11-22 Vorrichtung und verfahren für einen cache in einer grösse, die keine zweierpotenz ist, in einer level-1-speichervorrichtung zum cachen von daten, die in einer level-2-speichervorrichtung vorhanden sind Pending DE112016006025T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/757,926 US9747041B2 (en) 2015-12-23 2015-12-23 Apparatus and method for a non-power-of-2 size cache in a first level memory device to cache data present in a second level memory device
US14/757,926 2015-12-23
PCT/US2016/063427 WO2017112270A1 (en) 2015-12-23 2016-11-22 Apparatus and method for a non-power-of-2 size cache in a first level memory device to cache data present in a second level memory device

Publications (1)

Publication Number Publication Date
DE112016006025T5 true DE112016006025T5 (de) 2018-09-06

Family

ID=59086509

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016006025.4T Pending DE112016006025T5 (de) 2015-12-23 2016-11-22 Vorrichtung und verfahren für einen cache in einer grösse, die keine zweierpotenz ist, in einer level-1-speichervorrichtung zum cachen von daten, die in einer level-2-speichervorrichtung vorhanden sind

Country Status (4)

Country Link
US (2) US9747041B2 (de)
CN (1) CN108351831B (de)
DE (1) DE112016006025T5 (de)
WO (1) WO2017112270A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210216452A1 (en) * 2021-03-27 2021-07-15 Intel Corporation Two-level main memory hierarchy management
WO2022233033A1 (zh) * 2021-05-07 2022-11-10 Oppo广东移动通信有限公司 无线通信的方法及设备

Family Cites Families (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1100540A (zh) 1994-08-18 1995-03-22 奥克利系统公司 压缩的基本输入/输出系统
US6035432A (en) 1997-07-31 2000-03-07 Micron Electronics, Inc. System for remapping defective memory bit sets
US5912839A (en) 1998-06-23 1999-06-15 Energy Conversion Devices, Inc. Universal memory element and method of programming same
US6292874B1 (en) 1999-10-19 2001-09-18 Advanced Technology Materials, Inc. Memory management method and apparatus for partitioning homogeneous memory and restricting access of installed applications to predetermined memory ranges
US6434670B1 (en) 1999-11-09 2002-08-13 International Business Machines Corporation Method and apparatus for efficiently managing caches with non-power-of-two congruence classes
US6751720B2 (en) * 2000-06-10 2004-06-15 Hewlett-Packard Development Company, L.P. Method and system for detecting and resolving virtual address synonyms in a two-level cache hierarchy
US6654760B2 (en) 2001-06-04 2003-11-25 Hewlett-Packard Development Company, L.P. System and method of providing a cache-efficient, hybrid, compressed digital tree with wide dynamic ranges and simple interface requiring no configuration or tuning
DE60127125D1 (de) 2001-09-28 2007-04-19 St Microelectronics Srl Verfahren zum Speichern und Lesen von Daten in einem nichtflüchtigen Mehrpegelspeicher mit einer nichtbinären Anzahl von Pegeln und dazugehörige Schaltungsarchitektur
US7039760B2 (en) 2003-04-28 2006-05-02 International Business Machines Corporation Programming means for dynamic specifications of cache management preferences
US20050010811A1 (en) 2003-06-16 2005-01-13 Zimmer Vincent J. Method and system to support network port authentication from out-of-band firmware
US7475174B2 (en) 2004-03-17 2009-01-06 Super Talent Electronics, Inc. Flash / phase-change memory in multi-ring topology using serial-link packet interface
US7590918B2 (en) 2004-09-10 2009-09-15 Ovonyx, Inc. Using a phase change memory as a high volume memory
US20070005922A1 (en) 2005-06-30 2007-01-04 Swaminathan Muthukumar P Fully buffered DIMM variable read latency
US7600078B1 (en) 2006-03-29 2009-10-06 Intel Corporation Speculatively performing read transactions
US7913147B2 (en) 2006-05-08 2011-03-22 Intel Corporation Method and apparatus for scrubbing memory
CN100451987C (zh) 2006-05-23 2009-01-14 北京金元龙脉信息科技有限公司 对计算机bios固件进行安全风险检测的系统和方法
US7756053B2 (en) 2006-06-30 2010-07-13 Intel Corporation Memory agent with error hardware
US7493439B2 (en) 2006-08-01 2009-02-17 International Business Machines Corporation Systems and methods for providing performance monitoring in a memory system
WO2008040028A2 (en) 2006-09-28 2008-04-03 Virident Systems, Inc. Systems, methods, and apparatus with programmable memory control for heterogeneous main memory
WO2008131058A2 (en) 2007-04-17 2008-10-30 Rambus Inc. Hybrid volatile and non-volatile memory device
US20080270811A1 (en) 2007-04-26 2008-10-30 Super Talent Electronics Inc. Fast Suspend-Resume of Computer Motherboard Using Phase-Change Memory
US8429493B2 (en) 2007-05-12 2013-04-23 Apple Inc. Memory device with internal signap processing unit
US8145893B2 (en) 2007-10-26 2012-03-27 Intel Corporation Hot-plugging a memory device
US7813212B2 (en) 2008-01-17 2010-10-12 Mosaid Technologies Incorporated Nonvolatile memory having non-power of two memory capacity
US20090313416A1 (en) 2008-06-16 2009-12-17 George Wayne Nation Computer main memory incorporating volatile and non-volatile memory
CN101620539B (zh) 2008-07-01 2013-12-25 联想(北京)有限公司 开关机方法和计算机
JP5198245B2 (ja) * 2008-12-27 2013-05-15 株式会社東芝 メモリシステム
JP5221332B2 (ja) * 2008-12-27 2013-06-26 株式会社東芝 メモリシステム
US8266409B2 (en) * 2009-03-03 2012-09-11 Qualcomm Incorporated Configurable cache and method to configure same
US8331857B2 (en) 2009-05-13 2012-12-11 Micron Technology, Inc. Wireless interface to program phase-change memories
US8250282B2 (en) 2009-05-14 2012-08-21 Micron Technology, Inc. PCM memories for storage bus interfaces
US8504759B2 (en) 2009-05-26 2013-08-06 Micron Technology, Inc. Method and devices for controlling power loss
US20100306453A1 (en) 2009-06-02 2010-12-02 Edward Doller Method for operating a portion of an executable program in an executable non-volatile memory
US9123409B2 (en) 2009-06-11 2015-09-01 Micron Technology, Inc. Memory device for a hierarchical memory architecture
US8626997B2 (en) 2009-07-16 2014-01-07 Micron Technology, Inc. Phase change memory in a dual inline memory module
US8341387B2 (en) 2009-08-18 2012-12-25 Dell Products, Lp System and method to manipulate a system setting when booting an information handling system
US8914568B2 (en) 2009-12-23 2014-12-16 Intel Corporation Hybrid memory architectures
US8612809B2 (en) 2009-12-31 2013-12-17 Intel Corporation Systems, methods, and apparatuses for stacked memory
US20110208900A1 (en) 2010-02-23 2011-08-25 Ocz Technology Group, Inc. Methods and systems utilizing nonvolatile memory in a computer system main memory
KR20110131781A (ko) 2010-05-31 2011-12-07 삼성전자주식회사 위치정보의 정확도 확인방법 및 장치
US8838935B2 (en) 2010-09-24 2014-09-16 Intel Corporation Apparatus, method, and system for implementing micro page tables
US8649212B2 (en) 2010-09-24 2014-02-11 Intel Corporation Method, apparatus and system to determine access information for a phase change memory
US8612676B2 (en) 2010-12-22 2013-12-17 Intel Corporation Two-level system main memory
US8462577B2 (en) 2011-03-18 2013-06-11 Intel Corporation Single transistor driver for address lines in a phase change memory and switch (PCMS) array
US8462537B2 (en) 2011-03-21 2013-06-11 Intel Corporation Method and apparatus to reset a phase change memory and switch (PCMS) memory cell
US8607089B2 (en) 2011-05-19 2013-12-10 Intel Corporation Interface for storage device access over memory bus
US8793436B2 (en) * 2011-05-23 2014-07-29 International Business Machines Corporation Cache management of tracks in a first cache and a second cache for a storage
US8605531B2 (en) 2011-06-20 2013-12-10 Intel Corporation Fast verify for phase change memory with switch
US8463948B1 (en) 2011-07-01 2013-06-11 Intel Corporation Method, apparatus and system for determining an identifier of a volume of memory
WO2013048497A1 (en) 2011-09-30 2013-04-04 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy
EP2761476B1 (de) 2011-09-30 2017-10-25 Intel Corporation Vorrichtung, verfahren und system zur bios-speicherung in einer nichtflüchtige ram-speicherzelle
US9529708B2 (en) 2011-09-30 2016-12-27 Intel Corporation Apparatus for configuring partitions within phase change memory of tablet computer with integrated memory controller emulating mass storage to storage driver based on request from software
EP3382556A1 (de) 2011-09-30 2018-10-03 INTEL Corporation Speicherkanal zur unterstützung von nah- und fernspeicherzugriffen
WO2013048470A1 (en) 2011-09-30 2013-04-04 Intel Corporation Statistical wear leveling for non-volatile system memory
US9378133B2 (en) 2011-09-30 2016-06-28 Intel Corporation Autonomous initialization of non-volatile random access memory in a computer system
WO2013048483A1 (en) 2011-09-30 2013-04-04 Intel Corporation Platform storage hierarchy with non-volatile random access memory having configurable partitions
US9600407B2 (en) 2011-09-30 2017-03-21 Intel Corporation Generation of far memory access signals based on usage statistic tracking
US8782324B1 (en) * 2012-06-28 2014-07-15 Emc Corporation Techniques for managing placement of extents based on a history of active extents
GB2516477A (en) * 2013-07-24 2015-01-28 Ibm Method and system for handling virtual memory address synonyms in a multi-level cache hierarchy structure
US9600413B2 (en) 2013-12-24 2017-03-21 Intel Corporation Common platform for one-level memory architecture and two-level memory architecture
US9418009B2 (en) 2013-12-27 2016-08-16 Intel Corporation Inclusive and non-inclusive tracking of local cache lines to avoid near memory reads on cache line memory writes into a two level system memory
CN104679669B (zh) * 2014-11-27 2018-04-27 华为技术有限公司 高速缓存cache存储器系统及访问缓存行cache line的方法

Also Published As

Publication number Publication date
US20180004433A1 (en) 2018-01-04
US10042562B2 (en) 2018-08-07
US9747041B2 (en) 2017-08-29
US20170185315A1 (en) 2017-06-29
CN108351831B (zh) 2023-06-02
CN108351831A (zh) 2018-07-31
WO2017112270A1 (en) 2017-06-29

Similar Documents

Publication Publication Date Title
DE112017002941B4 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE112011102487B4 (de) Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen
DE102020104701B4 (de) System zur Lokalisierung von Cachedaten
DE69225622T2 (de) Adressenübersetzungspufferspeicher mit per Eingabe veränderlicher Seitengrösse
DE102011076894B4 (de) Persistenter Speicher für einen Hauptspeicher eines Prozessors
DE102013016609A1 (de) Vorrichtung und Verfahren für ein Storage Class Memory mit niedrigem Energieverbrauch, niedriger Latenz und hoher Kapazität
DE102018123669A1 (de) Host-Computer-Anordnung, Remote-Server-Anordnung, Speicherungssystem und Verfahren davon
DE102019105879A1 (de) Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher
DE112014005521T5 (de) Speichermodul und Verfahren zum Verwalten des Abbildens logischer Adressen auf physikalische Adressen
DE112018006329T5 (de) Speichervorrichtungen, systeme und verfahren zum aktualisieren von firmware mit einer einzelnen speichervorrichtung
DE102015013125A1 (de) Vorrichtung, Systeme und Verfahren zur Bereitstellung eines speichereffizienten Caches
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE102016001591A1 (de) System und Verfahren für Copy-On-Write auf einer SSD
DE102010053282A1 (de) Modifizierter B+ Baum zum Speichern von Nand-Speicher Umleitungszuordnungen
DE112020000183T5 (de) Speicherungsklassenspeicherzugriff
DE112017001658T5 (de) Behandlung von fehleranfälligen Cache-Zeilen-Slots eines speicherseitigen Caches eines Multilevel-Systemspeichers
DE102020106199A1 (de) Technologien für effiziente stochastische assoziative suchoperationen
DE102019102317A1 (de) Verfahren zur verbesserten Datenverteilung unter Speichervorrichtungen
DE112017007323T5 (de) Cache-speicher und verfahren zur steuerung desselben
DE102020119400A1 (de) Techniken zum setzen eines 2-ebenen-auto-schliess-timers zum zugriff auf eine speichervorrichtung
DE112019000627T5 (de) Speicherstrukturbasiertes Coherency Directory Cache
DE112017001701T5 (de) Verfahren und Vorrichtung zur Verarbeitung von sequentiellen Schreibvorgängen auf Teile einer adressierbaren Einheit
DE102019112291A1 (de) Verbessertes speicherungsmodell für ein computersystem mit persistentem systemspeicher
DE102021006246A1 (de) Doppelt verschachtelte Programmierung einer Speichervorrichtung in einem Speicher-Untersystem
DE102021101239A1 (de) Schwellenwert des deduplizierungssystems basierend auf dem verschleiss eines speichergeräts

Legal Events

Date Code Title Description
R083 Amendment of/additions to inventor(s)
R012 Request for examination validly filed