DE112017004916T5 - Verwendung von Kompression zur Kapazitätserhöhung eines speicherseitigen Caches mit grosser Blockgrösse - Google Patents

Verwendung von Kompression zur Kapazitätserhöhung eines speicherseitigen Caches mit grosser Blockgrösse Download PDF

Info

Publication number
DE112017004916T5
DE112017004916T5 DE112017004916.4T DE112017004916T DE112017004916T5 DE 112017004916 T5 DE112017004916 T5 DE 112017004916T5 DE 112017004916 T DE112017004916 T DE 112017004916T DE 112017004916 T5 DE112017004916 T5 DE 112017004916T5
Authority
DE
Germany
Prior art keywords
block
cache
memory
sub
partner
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
DE112017004916.4T
Other languages
English (en)
Inventor
Glenn J. Hinton
Blaise Fanning
Alaa R. Alameldeen
James J. Greensky
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 DE112017004916T5 publication Critical patent/DE112017004916T5/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/0608Saving storage space on storage systems
    • 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
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F3/064Management of blocks
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency 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/28Using a specific disk cache architecture
    • G06F2212/281Single cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/304In main memory subsystem
    • G06F2212/3042In main memory subsystem being part of a memory device, e.g. cache DRAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/305Providing cache or TLB in specific location of a processing system being part of a memory device, e.g. cache DRAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory 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

Systeme, Vorrichtungen und Verfahren können zum Identifizieren eines ersten Blocks und eines zweiten Blocks bereitgestellt werden, wobei der erste Block eine erste Vielzahl von Cache-Zeilen aufweist, der zweite Block eine zweite Vielzahl von Cache-Zeilen aufweist und der zweite Block sich in einem speicherseitigen Cache befindet. Zusätzlich kann jede Cache-Zeile in der ersten Vielzahl von Cache-Zeilen mit einer entsprechenden Cache-Zeile in der zweiten Vielzahl von Cache-Zeilen komprimiert werden, um einen komprimierten Block zu erhalten, der eine dritte Vielzahl von Cache-Zeilen aufweist. In einem Beispiel wird der zweite Block im speicherseitigen Cache durch den komprimierten Block ersetzt, wenn der komprimierte Block eine Größenbedingung erfüllt.

Description

  • QUERVERWEIS AUF VERWANDTE ANWENDUNGEN
  • Die vorliegende Anmeldung beansprucht die Priorität der US-Patentanmeldung Nr. 15/279,647 , die am 29. September 2016 eingereicht wurde.
  • TECHNISCHER BEREICH
  • Die Ausführungsformen betreffen im Allgemeinen Speicherstrukturen.
  • HINTERGRUND
  • Computersystemspeicherstrukturen können als verschiedene Ebenen von Host-Prozessorseiten-Caches (z. B. Ebene-1 / LI-Cache, Ebene 2 / L2-Cache, Letzte-Ebene-Cache / LLC) und als ein Systemspeicher ausgebildet sein, der einen speicherseitigen Cache (z „Near Memory“) und zusätzlichen Speicher (z. B. „Far Memory“), auf den langsamer zugegriffen werden kann als auf den speicherseitigen Cache, aufweist.. Ein prozessorseitiger Cache kann in relativ kleinen (z. B. 64B) Cache-Zeilen organisiert sein, während ein speicherseitiger Cache in relativ großen (z. B. 1 KB oder 4 KB) Blöcken organisiert sein kann, um einen Tag- und Metadaten-Overhead zu reduzieren. Somit kann jeder 4-KB-Block in einem speicherseitigen Cache beispielsweise vierundsechzig der 64B-prozessor-seitigen Cache-Zeilen enthalten.
  • Wenn eine Datensuche im speicherseitigen Cache nicht erfolgreich ist (z. B. ein Cache-Fehler (Cache-Miss) auftritt, kann eine „Opfer“-Zeile im speicherseitigen Cache ausgewählt werden, um durch die angeforderten Daten ersetzt zu werden (z. B. Vertreibung), die aus einem fernen Speicher abgerufen werden. Häufige Fehler im speicherseitigen Cache können die Leistung reduzieren und den Stromverbrauch erhöhen, weil Daten aus einem relativ langsamen Fernspeicher abgerufen werden. Um die Wahrscheinlichkeit von Fehlern im speicherseitigen Cache zu verringern, kann jeder Block des speicherseitigen Caches komprimiert werden, um Platz für mehr Daten zu schaffen. Ein Dekomprimieren des speicherseitigen Caches auf einer blockweisen Basis kann jedoch die Latenz und den Overhead erhöhen, insbesondere wenn sich die abgerufenen Daten im kritischen Pfad der Hostprozessor-Leseoperationen befinden. Dementsprechend können herkömmliche Speicherstrukturen immer noch eine suboptimale Leistung und/oder suboptimalen einen Leistungsverbrauch aufweisen.
  • Figurenliste
  • Die verschiedenen Vorteile der Ausführungsformen werden für den Fachmann durch Lesen der folgenden Beschreibung und der beigefügten Ansprüche und durch Bezugnahme auf die folgenden Zeichnungen ersichtlich:
    • 1 zeigt eine Darstellung eines Beispiels eines Kompressionsschemas, gemäß einer Ausführungsform;
    • 2A - 2C sind Flussdiagramme von beispielhaften Verfahren zum Partnering von speicherseitigen Cache-Blöcken, gemäß den Ausführungsformen;
    • 3A - 3C sind Flussdiagramme von beispielhaften Verfahren zum Partnering von speicherseitigen Cache-Subblöcken, gemäß den Ausführungsformen;
    • 4 ist ein Blockdiagramm eines Beispiels eines Computersystems, gemäß einer Ausführungsform; und
    • 5 ist ein Blockdiagramm eines Beispiels einer komprimierungsfähigen Speichervorrichtung, gemäß einer Ausführungsform.
  • BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
  • Nun zu 1, die ein Kompressionsschema zeigt, in dem ein erster Block 10 eine erste Cache-Zeile beinhaltet, die einen ersten Teil 12 einer Gesamt-Cache-Zeilengröße (z.B. 64B) komprimiert, eine zweite Cache-Zeile, die einen zweiten Teil 14 der Gesamt-Cache-Zeilengröße komprimiert, eine n-te Cache-Zeile, die einen n-ten Teil der Gesamt-Cache-Zeilengröße komprimiert, und so weiter. In einem Beispiel kann ein erster Block 10 als „Füllblock“ bezeichnet werden. Ein erster Block 10 kann im Allgemeinen Daten beinhalten, die als Reaktion auf einen Cache-Fehler (Cache-Miss) in einem speicherseitigen Cache (z.B. Near Memory) aus einem entfernten Speicher abgerufen werden. Somit umfasst der gezeigte erste Block 10 eine Vielzahl von Cache-Zeilen, wobei die Größe jeder Cache-Zeile gleich der Cache-Zeilengröße eines oder mehrerer prozessorseitiger Caches (z.B. LLC-Cache-Zeilengröße) sein kann.
  • Ebenso kann ein zweiter Block 20 eine erste Cache-Zeile beinhalten, die einen ersten Teil 22 einer gesamten Cache-Zeilengröße komprimiert, eine zweite Cache-Zeile, die einen zweiten Teil 24 einer gesamten Cache-Zeilengröße komprimiert, eine n-te Cache-Zeile, die einen n-ten Abschnitt 26 einer gesamten Cache-Zeilengröße komprimiert, und so weiter. In einem Beispiel kann ein zweiter Block 20 als „Partnerblock“ bezeichnet werden. Im dargestellten Beispiel wird jede Cache-Zeile im ersten Block 10 mit der entsprechenden Cache-Zeile im zweiten Block 20 komprimiert, um einen komprimierten Block 30 zu erhalten. Ein komprimierter Block 30 kann daher eine erste Cache-Zeile beinhalten, die einen ersten Abschnitt 32 einer gesamten Cache-Zeilengröße einnimmt, eine zweite Cache-Zeile, die einen zweiten Abschnitt 34 einer gesamten Cache-Zeilengröße einnimmt, eine n-te Cache-Zeile, die einen n-ten Abschnitt 36 einer gesamten Cache-Zeilengröße einnimmt, und so weiter. Das/die Kompressionsverfahren, mit denen die Abschnitte 12, 14, 16, 22, 24, 26, 32, 34, 36 erzeugt werden, können je nach den Umständen variieren. Beispiele für Komprimierungstechniken sind häufiger die partem compression (FPC), die base-deltaimmediate (BDI)-Kompression, die Run Length Encoding (RLE), der Cache Packer (CPACK), die Huffman-Kodierung und die Limpel-Ziv (LZ)-Kompression.
  • Ein zweiter Block 20 kann sich im Allgemeinen im speicherseitigen Cache befinden. So kann beispielsweise ein zweiter Block 20 ein Opferblock im speicherseitigen Cache sein, der gemäß einer zuletzt verwendeten (LRU-)RichtZeile (oder einer anderen ErsatzrichtZeile) zur Räumung identifiziert wird. In diesem Fall kann ein zweiter Block 20 (z.B. Opferblock) durch einen komprimierten Block 30 ersetzt werden, wenn ein komprimierter Block 30 eine Größenbedingung erfüllt. Eine Größenbedingung könnte so festgelegt werden, dass jede Cache-Zeile im komprimierten Block 30 eine Größe hat, die kleiner oder gleich der Cache-Zeilengröße ist, die einem prozessorseitigen Cache zugeordnet ist (z.B. 64B). Somit kann ein zweiter Block 20 eine Größenbedingung erfüllen, wenn ein erster Abschnitt 32 kleiner oder gleich 64B ist, ein zweiter Abschnitt 34 kleiner oder gleich 64B ist, ein n-ter Abschnitt 36 kleiner oder gleich 64B ist, usw. im gezeigten Beispiel.
  • In einem anderen Beispiel kann ein zweiter Block 20 ein erster angetroffener Block (z.B. zeitlich) im speicherseitigen Cache sein, um eine Größenbedingung zu erfüllen. Wenn also die Größenbedingung erfüllt ist, kann ein zweiter Block 20 (z.B. ein erster Block zur Erfüllung der Bedingung) durch einen komprimierten Block 30 ersetzt werden. In noch einem weiteren Beispiel kann ein zweiter Block 20 ein „Best Fit“-Block im speicherseitigen Cache sein, der bewirkt, dass ein komprimierter Block 30 den geringsten ungenutzten Platz zurücklässt. Es können auch andere Ansätze zur Auswahl eines zweiten Blocks 20 verwendet werden.
  • 2A zeigt ein Verfahren 40 zum Partnering von speicherseitigen Cache-Blöcken. Das Verfahren 40 kann im Allgemeinen in eine- komprimierbare-Speichervorrichtung implementiert werden, wie hierin beschrieben. Insbesondere kann ein Verfahren 40 in einem oder mehreren Modulen als ein Satz von Logikbefehlen implementiert werden, die in einem maschinen- oder computerlesbaren Speichermedium gespeichert sind, wie z.B. Random Access Memory (RAM), Read Only Memory (ROM), programmierbares ROM (PROM), Firmware, Flash-Speicher usw...., in konfigurierbarer Logik, wie beispielsweise programmierbare Logik-Arrays (PLAs), feldprogrammierbare Gate-Arrays (FPGAs), komplexe programmierbare Logikvorrichtungen (CPLDs), in Logik-Hardware mit fester Funktionalität unter Verwendung von Schaltungstechnik, wie beispielsweise anwendungsspezifischer integrierter Schaltung (ASIC), komplementärer Metalloxid-Halbleiter- (CMOS) oder Transistor-Logik (TTL) Technologie oder einer beliebigen Kombination derselben.
  • Ein gezeigter Verarbeitungsblock 42 ermöglicht ein Identifizieren eines ersten Blocks und eines zweiten Blocks, wobei ein erster Block eine erste Vielzahl von Cache-Zeilen aufweist, ein zweiter Block eine zweite Vielzahl von Cache-Zeilen aufweist und der zweite Block ein Opferblock ist, der sich in einem speicherseitigen Cache befindet. Eine Identifizierung des ersten Blocks kann ein Abrufen und/oder Empfangen des ersten Blocks aus einem entfernten Speicher als Reaktion auf einen Cache--Fehler im speicherseitigen Cache beinhalten. Darüber hinaus kann eine Identifizierung des zweiten Blocks eine Auswahl des Opferblocks in Übereinstimmung mit einem FEVU oder einer anderen geeigneten RichtZeile beinhalten. Jede Cache-Zeile in der ersten Vielzahl von Cache-Zeilen kann am Verarbeitungsblock 44 mit einer entsprechenden Cache-Zeile in einer zweiten Vielzahl von Cache-Zeilen komprimiert werden, um einen komprimierten Block zu erhalten, der eine dritte Vielzahl von Cache-Zeilen aufweist. Ein Verarbeitungsblock 44 kann beispielsweise ein Anwenden eines oder mehrerer Komprimierungsverfahren auf einen ersten Block und einen zweiten Block beinhalten und dann die Ergebnisse auf einer Cache-Zeilenbasis kombinieren.
  • Im Verarbeitungsblock 46 kann bestimmt werden, ob ein komprimierter Block eine Größenbedingung erfüllt. Wie bereits erwähnt, kann eine Größenbedingung beispielsweise beinhalten, dass jede Cache-Zeile aus einer dritten Vielzahl von Cache-Zeilen eine Größe aufweist, die kleiner oder gleich einer Cache-Zeilengröße ist, die einem prozessorseitigen Cache zugeordnet ist. Wenn die Größenbedingung erfüllt ist, ersetzt der gezeigte Verarbeitungsblock 48 einen Opferblock durch einen komprimierten Block. Dementsprechend ermöglicht das gezeigte Verfahren 40, dass eine komprimierte Version eines Opferblocks zusammen mit einer komprimierten Version des ersten Blocks im speicherseitigen Cache verbleibt. Wird bei Verarbeitungsblock 46 festgestellt, dass die Größenbedingung nicht erfüllt ist, kann ein Verarbeitungsblock 50 einen Opferblock durch einen ersten Block ersetzen.
  • 2B zeigt ein weiteres Verfahren 52 zum Partnering von speicherseitigen Cache-Blöcken. Ein Verfahren 52 kann im Allgemeinen in einer komprimierbaren Speichervorrichtung implementiert werden, wie hierin beschrieben. Insbesondere kann ein Verfahren 52 in einem oder mehreren Modulen als ein Satz von Logikbefehlen implementiert werden, die in einem maschinen- oder computerlesbaren Speichermedium wie RAM, ROM, PROM, Firmware, Flash-Speicher usw. gespeichert sind, in konfigurierbarer Logik wie beispielsweise PLAs, FPGAs, CPLDs, in Logikhardware mit fester Funktionalität unter Verwendung von Schaltungstechnik wie beispielsweise ASIC, CMOS, TTL-Technologie oder einer beliebigen Kombination derselben.
  • Der gezeigte Verarbeitungsblock 54 ermöglicht ein Identifizieren eines ersten Blocks und eines zweiten Blocks, wobei der erste Block eine erste Vielzahl von Cache-Zeilen aufweist, der zweite Block eine zweite Vielzahl von Cache-Zeilen aufweist und der zweite Block in einem speicherseitigen Cache liegt. Wie bereits erwähnt, kann eine Identifizierung des ersten Blocks ein Abrufen und/oder Empfangen des ersten Blocks aus einem entfernten Speicher als Reaktion auf einen Cache-Fehler im speicherseitigen Cache beinhalten. Darüber hinaus kann eine Identifizierung des zweiten Blocks eine Auswahl eines „Kandidatenblock“ aus einem gegebenen Satz im speicherseitigen Cache beinhalten (z.B. wenn ein speicherseitiger Cache ein mehrfacher-gesetzter assoziativer Cache ist, wobei jeder Satz mehrere Wege enthält und jeder Weg einen Datenblock enthält). Jede Cache-Zeile in der ersten Vielzahl von Cache-Zeilen kann am Verarbeitungsblock 56 mit einer entsprechenden Cache-Zeile in der zweiten Vielzahl von Cache-Zeilen komprimiert werden, um einen komprimierten Block zu erhalten, der eine dritte Vielzahl von Cache-Zeilen aufweist. Ein Verarbeitungsblock 56 kann beispielsweise ein Anwenden eines oder mehrerer Komprimierungsverfahren auf einen ersten Block und einen zweiten Block beinhalten und dann die Ergebnisse auf einer Cache-Zeilenbasis kombinieren.
  • Im Verarbeitungsblock 58 kann bestimmt werden, ob ein komprimierter Block eine Größenbedingung erfüllt, wobei eine Größenbedingung beispielsweise ist, dass jede Cache-Zeile aus einer dritten Vielzahl von Cache-Zeilen eine Größe aufweist, die kleiner oder gleich einer Cache-Zeilengröße ist, die einem prozessorseitigen Cache zugeordnet ist. Wenn die Größenbedingung erfüllt ist, ersetzt der gezeigte Verarbeitungsblock 60 einen zweiten Block durch einen komprimierten Block. Wird dagegen bei Verarbeitungsblock 58 bestimmt, dass eine Größenbedingung nicht erfüllt ist, bestimmt ein gezeigter Verarbeitungsblock 62, ob ein letzter Block (z.B. Endblock im Satz) im speicherseitigen Cache erreicht wurde. Wenn ja, kann ein Opferblock (z.B. gemäß LRU-RichtZeile) durch einen ersten Block bei Verarbeitungsblock 64 ersetzt werden. Wenn bei Verarbeitungsblock 62 bestimmt wird, dass der letzte Block nicht angetroffen wurde, kann der nächste zweite Kandidatenblock bei Verarbeitungsblock 66 ausgewählt werden und das gezeigte Verfahren 52 kehrt zu Verarbeitungsblock 56 zurück. So ermöglicht das gezeigte Verfahren 52, dass ein komprimierter Block durch einen ersten angetroffenen Block im speicherseitigen Cache ersetzt werden kann, so dass ein komprimierter Block die Größenbedingung erfüllt.
  • 2C zeigt noch ein weiteres Verfahren 68 zum Partnering von speicherseitigen Cache-Blöcken. Ein Verfahren 68 kann im Allgemeinen in einer komprimierbaren Speichervorrichtung implementiert werden, wie hierin beschrieben. Insbesondere kann ein Verfahren 68 in einem oder mehreren Modulen als ein Satz von Logikbefehlen implementiert werden, die in einem maschinen- oder computerlesbaren Speichermedium wie RAM, ROM, PROM, Firmware, Flash-Speicher usw. in konfigurierbarer Logik wie beispielsweise PLAs, FPGAs, CPLDs, in Logikhardware mit fester Funktionalität unter Verwendung von Schaltungstechnik wie beispielsweise ASIC, CMOS, TTL-Technologie oder einer beliebigen Kombination derselben gespeichert sind.
  • Ein gezeigter Verarbeitungsblock 70 ermöglicht ein Identifizieren eines ersten Blocks und eines zweiten Blocks, wobei der erste Block eine erste Vielzahl von Cache-Zeilen aufweist, der zweite Block eine zweite Vielzahl von Cache-Zeilen aufweist und der zweite Block in einem speicherseitigen Cache liegt. Wie bereits erwähnt, kann eine Identifizierung des ersten Blocks ein Abrufen und/oder Empfangen eines ersten Blocks aus einem entfernten Speicher als Reaktion auf einen Cache-Fehler im speicherseitigen Cache beinhalten. Darüber hinaus kann eine Identifizierung eines zweiten Blocks eine Auswahl eines Kandidatenblock aus einem gegebenen Satz im speicherseitigen Cache beinhalten (z.B. wenn ein speicherseitiges Cache ein mehrfach-gesetzter assoziativer Cache ist, wobei jeder Satz mehrere Wege enthält und jeder Weg einen Datenblock enthält). Jede Cache-Zeile in der ersten Vielzahl von Cache-Zeilen kann am Verarbeitungsblock 72 mit einer entsprechenden Cache-Zeile in der zweiten Vielzahl von Cache-Zeilen komprimiert werden, um einen komprimierten Block zu erhalten, der eine dritte Vielzahl von Cache-Zeilen aufweist. Ein Verarbeitungsblock 72 kann beispielsweise ein Anwenden eines oder mehrerer Komprimierungsverfahren auf einen ersten Block und einen zweiten Block beinhalten und dann die Ergebnisse auf einer Cache-Zeilenbasis kombinieren.
  • Ein gezeigter Verarbeitungsblock 74 bestimmt, ob ein letzter Block (z.B. Endblock im Satz) im speicherseitigen Cache erreicht ist. Wenn nicht, kann ein nächster zweiter Kandidatenblockblock am Verarbeitungsblock 76 ausgewählt werden und das gezeigte Verfahren 68 kehrt zum Verarbeitungsblock 72 zurück. Sobald im Verarbeitungsblock 74 bestimmt wird, dass der letzte Block erreicht ist, kann im Verarbeitungsblock 75 bestimmt werden, ob irgendwelche Blöcke eine Größenbedingung erfüllt haben. Wenn ja, kann ein Verarbeitungsblock 78 den am besten geeigneten zweiten Block im speicherseitigen Cache durch einen entsprechenden komprimierten Block ersetzen. Ein am besten geeigneter zweiter Block kann als ein Block betrachtet werden, der bewirkt, dass ein Kompressionsblock den geringsten ungenutzten Platz im speicherseitigen Cache zurücklässt. Wird bei Verarbeitungsblock 75 festgestellt, dass keine Blöcke die Größenbedingung erfüllt haben, ersetzt der gezeigte Verarbeitungsblock 77 einen Opferblock (z.B. gemäß LRU-RichtZeile) durch einen ersten Block.
  • 3A zeigt ein Verfahren 80 zum Partnering von speicherseitigen Cache-Subblöcken. Ein Verfahren 80 kann im Allgemeinen in eine- komprimierbare Speichervorrichtung implementiert werden, wie hierin beschrieben. Insbesondere kann ein Verfahren 80 in einem oder mehreren Modulen als ein Satz von Logikbefehlen implementiert werden, die in einem maschinen- oder computerlesbaren Speichermedium wie RAM, ROM, PROM, Firmware, Flash-Speicher usw. in konfigurierbarer Logik wie beispielsweise PLAs, FPGAs, CPLDs, in Logikhardware mit fester Funktionalität unter Verwendung von Schaltungstechnik wie beispielsweise ASIC, CMOS, TTL-Technologie oder einer beliebigen Kombination derselben gespeichert sind.
  • Ein gezeigter Verarbeitungsblock 82 sieht ein Identifizieren eines ersten Blocks und ein Aufteilen des ersten Blocks in Subblöcke vor, die größer als eine Cache-Zeilengröße sind, die einem prozessorseitigen Cache zugeordnet ist, wobei ein Füll-Subblock eine erste Vielzahl von Cache-Zeilen aufweist. So kann ein Verarbeitungsblock 82 beispielsweise eine Aufteilung eines 4kB-Datenblocks in vier IkB-Subblöcke von Daten beinhalten. Eine Identifizierung eines ersten Blocks kann ein Abrufen und/oder Empfangen eines ersten Blocks aus einem entfernten Speicher als Reaktion auf einen Cache-Fehler im speicherseitigen Cache beinhalten. Ein Partner-Subblock kann am Verarbeitungsblock 84 identifiziert werden, wobei der Partner-Subblock eine zweite Vielzahl von Cache-Zeilen aufweist und der Partner-Subblock ein Opfer-Subblock ist, der sich in einem speicherseitigen Cache befindet. Die Identifizierung des Partner-Subblocks kann beispielsweise eine Auswahl des Opfer-Subblocks in Übereinstimmung mit einem FEVU oder einer anderen geeigneten RichtZeile beinhalten. Jede Cache-Zeile in der ersten Vielzahl von Cache-Zeilen kann am Verarbeitungsblock 86 mit einer entsprechenden Cache-Zeile in der zweiten Vielzahl von Cache-Zeilen komprimiert werden, um einen komprimierten Subblock zu erhalten, der eine dritte Vielzahl von Cache-Zeilen aufweist. Ein Verarbeitungsblock 86 kann beispielsweise ein Anwenden eines oder mehrerer Komprimierungsverfahren auf einen Füll-Subblock und einen Partner-Subblock beinhalten und dann die Ergebnisse auf Cache-Zeilenbasis kombinieren.
  • Der Verarbeitungsblock 88 kann bestimmt werden, ob ein komprimierter Subblock eine Größenbedingung erfüllt. Wie bereits erwähnt, kann eine Größenbedingung beispielsweise beinhalten, dass jede Cache-Zeile aus einer dritten Vielzahl von Cache-Zeilen eine Größe aufweist, die kleiner oder gleich einer Cache-Zeilengröße ist, die einem prozessorseitigen Cache zugeordnet ist. Wenn die Größenbedingung erfüllt ist, ersetzt der gezeigte Verarbeitungsblock 90 einen Opfer-Subblock durch den komprimierten Subblock. Dementsprechend ermöglicht ein gezeigtes Verfahren 80, dass eine komprimierte Version eines Opfer-Subblocks zusammen mit einer komprimierten Version des Füll-Subblocks im speicherseitigen Cache verbleibt. Darüber hinaus kann eine Aufteilung eines ersten Blocks in Subblöcke die Wahrscheinlichkeit erhöhen/maximieren, dass ein Partner-Subblock für den Füll-Subblock gefunden wird. Tatsächlich kann eine Erhöhung von Kompressionsmetadaten angesichts der mit der Wahrscheinlichkeitssteigerung verbundenen Vorteile für Leistung und/oder Stromverbrauch vernachlässigbar sein. Wird bei Verarbeitungsblock 88 festgestellt, dass die Größenbedingung nicht erfüllt ist, kann ein Verarbeitungsblock 92 einen OpferSubblock durch einen Füll-Subblock ersetzen.
  • 3B zeigt ein weiteres Verfahren 94 zum Partnering von speicherseitigen Cache-Unterblöcken. Ein Verfahren 94 kann im Allgemeinen in eine komprimierbare Speichervorrichtung implementiert werden, wie hierin beschrieben. Insbesondere kann ein Verfahren 94 in einem oder mehreren Modulen als ein Satz von Logikbefehlen implementiert werden, die in einem maschinen- oder computerlesbaren Speichermedium wie RAM, ROM, PROM, Firmware, Flash-Speicher usw. in konfigurierbarer Logik wie beispielsweise PLAs, FPGAs, CPLDs, in Logikhardware mit fester Funktionalität unter Verwendung von Schaltungstechnik wie beispielsweise ASIC, CMOS, TTL-Technologie oder einer beliebigen Kombination derselben gespeichert sind.
  • Ein gezeigter Verarbeitungsblock 96 ermöglicht ein Identifizieren eines ersten Blocks und ein Aufteilen eines ersten Blocks in Subblöcke, die größer als eine Cache-Zeilengröße sind, die einem prozessorseitigen Cache zugeordnet ist, wobei ein Füll-Subblock eine erste Vielzahl von Cache-Zeilen aufweist. So kann ein Verarbeitungsblock 96 beispielsweise eine Aufteilung eines 4kB-Datenblocks in vier IkB-Unterblöcke von Daten beinhalten, wie bereits erläutert. Ein Partner-Subblock kann am Verarbeitungsblock 98 identifiziert werden, wobei ein Partner-Subblock eine zweite Vielzahl von Cache-Zeilen aufweist und sich in einem speicherseitigen Cache befindet. Eine Identifizierung eines Partner-Subblocks kann eine Auswahl eines „Kandidaten“ aus einem bestimmten Satz im speicherseitigen Cache beinhalten (z.B. wenn ein speicherseitiger Cache ein mehrfacher-gesetzter assoziativer Cache ist, wobei jeder Satz mehrere Wege enthält und jeder Weg einen Datenblock enthält). Jede Cache-Zeile in einer ersten Vielzahl von Cache-Zeilen kann am Verarbeitungsblock 100 mit einer entsprechenden Cache-Zeile in einer zweiten Vielzahl von Cache-Zeilen komprimiert werden, um einen komprimierten Subblock zu erhalten, der eine dritte Vielzahl von Cache-Zeilen aufweist. Ein Verarbeitungsblock 100 kann beispielsweise das Anwenden eines oder mehrerer Komprimierungsverfahren auf einen Füll-Subblock und einen Partner-Subblock beinhalten und dann die Ergebnisse auf Cache-Zeilenbasis kombinieren.
  • Im Verarbeitungsblock 102 kann bestimmt werden, ob ein komprimierter Subblock eine Größenbedingung erfüllt, wobei eine Größenbedingung beispielsweise ist, dass jede Cache-Zeile aus einer dritten Vielzahl von Cache-Zeilen eine Größe aufweist, die kleiner oder gleich einer Cache-Zeilengröße ist, die einem prozessorseitigen Cache zugeordnet ist. Wenn die Größenbedingung erfüllt ist, ersetzt der gezeigte Verarbeitungsblock 104 einen Partner-Subblock durch einen komprimierten Subblock. Wird dagegen bei Verarbeitungsblock 102 bestimmt, dass die Größenbedingung nicht erfüllt ist, bestimmt der gezeigte Verarbeitungsblock 106, ob ein letzter Subblock (z.B. letzter Subblock im Satz) im speicherseitigen Cache erreicht wurde. Wenn ja, kann ein Partner-Subblock durch einen Füll-Subblock am Verarbeitungsblock 108 ersetzt werden. Wenn bei Verarbeitungsblock 106 festgestellt wird, dass der letzte Subblock nicht angetroffen wurde, kann ein nächster Kandidatenpartner-Subblock bei Verarbeitungsblock 110 ausgewählt werden und das gezeigte Verfahren 94 kehrt zu Verarbeitungsblock 100 zurück. So ermöglicht das gezeigte Verfahren 94, dass ein komprimierter Subblock durch einen ersten angetroffenen Subblock im speicherseitigen Cache ersetzt werden kann, so dass ein komprimierter Subblock die Größenbedingung erfüllt.
  • 3C zeigt noch ein weiteres Verfahren 112 zum Zusammenführen von speicherseitigen Cache-Subblöcken. Ein Verfahren 112 kann im Allgemeinen in eine komprimierbare Speichervorrichtung implementiert werden, wie hierin beschrieben. Insbesondere kann ein Verfahren 112 in einem oder mehreren Modulen als ein Satz von Logikbefehlen implementiert werden, die in einem maschinen- oder computerlesbaren Speichermedium wie RAM, ROM, PROM, Firmware, Flash-Speicher usw. in konfigurierbarer Logik wie beispielsweise PLAs, FPGAs, CPLDs, in Logikhardware mit fester Funktionalität unter Verwendung von Schaltungstechnik wie beispielsweise ASIC, CMOS, TTL-Technologie oder einer beliebigen Kombination derselben gespeichert sind.
  • Ein gezeigter Verarbeitungsblock 114 ermöglicht ein Identifizieren eines ersten Blocks und ein Aufteilen eines ersten Blocks in Subblöcke, die größer als eine Cache-Zeilengröße sind, die einem prozessorseitigen Cache zugeordnet ist, wobei ein Füll-Subblock eine erste Vielzahl von Cache-Zeilen aufweist. So kann ein Verarbeitungsblock 114 beispielsweise eine Aufteilung eines 4kB-Datenblocks in vier IkB-Sub-Blöcke von Daten beinhalten, wie bereits erläutert. Ein Partner-Subblock kann am Verarbeitungsblock 116 identifiziert werden, wobei ein Partner-Subblock eine zweite Vielzahl von Cache-Zeilen aufweist und sich in einem speicherseitigen Cache befindet. Eine Identifizierung eines Partner-Subblocks kann eine Auswahl eines „Kandidaten“ aus einem bestimmten Satz im speicherseitigen Cache beinhalten (z.B. wenn ein speicherseitiger Cache ein mehrfacher gesetzter assoziativer Cache ist, wobei jeder Satz mehrere Wege enthält und jeder Weg einen Datenblock enthält).
  • Jede Cache-Zeile in der ersten Vielzahl von Cache-Zeilen kann am Verarbeitungsblock 118 mit einer entsprechenden Cache-Zeile in der zweiten Vielzahl von Cache-Zeilen komprimiert werden, um einen komprimierten Subblock zu erhalten, der eine dritte Vielzahl von Cache-Zeilen aufweist. Der Verarbeitungsblock 118 kann beispielsweise das Anwenden eines oder mehrerer Komprimierungsverfahren auf den Füll-Subblock und den Partner-Subblock beinhalten und dann die Ergebnisse auf Cache-Zeilenbasis kombinieren.
  • Ein gezeigter Verarbeitungsblock 120 bestimmt, ob ein letzter Subblock (z.B. letzter Subblock im Set) im speicherseitigen Cache erreicht ist. Wenn nicht, kann ein nächster Kandidatenpartner-Subblock am Verarbeitungsblock 122 ausgewählt werden und das gezeigte Verfahren 112 kehrt zum Verarbeitungsblock 118 zurück. Sobald es bei Verarbeitungsblock 120 bestimmt ist, dass der letzte Subblock erreicht ist, kann ein Verarbeitungsblock 124 den am besten geeigneten Partner-Subblock im speicherseitigen Cache durch einen entsprechenden komprimierten Subblock ersetzen. Ein am besten geeigneter Partner-Subblock kann als ein Subblock betrachtet werden, der bewirkt, dass ein Kompressionssubblock den geringsten ungenutzten Platz im speicherseitigen Cache zurücklässt.
  • Nun zu 4, in der ein speicherbasiertes Computersystem 130 dargestellt wird. Ein System 130 kann im Allgemeinen Teil eines Servers, Desktop-Computers, Notebooks, Tablet-Computers, Convertible Tablets, Smart TVs (TV), Personal Digital Assistant (PDA), Mobile Internet Devices (MID), Smartphones, tragbaren Gerätes, Media Players, etc. oder einer beliebigen Kombination davon sein. Im veranschaulichten Beispiel ist ein Ein-/Ausgabemodul (10) 148 kommunikativ mit einer Anzeige 150 (z.B. Flüssigkristallanzeige /LCD, Leuchtdiode/LED-Anzeige, Touchscreen), Massenspeicher 152 (z.B. Festplatte/HDD, optische Platte, Solid State Drive/SSD, Flash-Speicher) und einer Netzwerksteuerung 154 (z.B. drahtgebunden, drahtlos) gekoppelt. Ein veranschaulichtes System 130 kann auch einen Host-Prozessor 132 (z.B. Zentraleinheit/CPU) beinhalten, der einen prozessorseitigen Cache 134 (z.B. LLC) und eine integrierte Speichersteuerung 136 aufweist, die mit einem Systemspeicher 138 über einen Bus 140 oder eine andere geeignete Kommunikationsschnittstelle kommuniziert. Ein Host-Prozessor 132 und ein IO-Modul 148 können auf einem gemeinsamen Halbleiterchip (nicht dargestellt) in einer System-on-Chip-(SoC)-Struktur integriert werden.
  • Mit weiterem Bezug auf die 4 und 5 kann ein Systemspeicher 138 einen Speicher 142 (z.B. einen weiten Speicher, der entweder ein flüchtiger Speicher oder nichtflüchtiger Speicher sein kann), eine Cachesteuerung 144 (144a-144d) und einen speicherseitigen Cache 146 beinhalten, auf den schneller zugegriffen werden kann als auf den Speicher 142. Ein speicherseitiger Cache 146 kann in eine Vielzahl von Blöcken (oder Unterblöcken) organisiert werden. Der dargestellte Cache-Controller 144 kann im Allgemeinen einen oder mehrere Aspekte eines Verfahrens 40 (2A), eines Verfahrens 52 (2B), eines Verfahrens 68 (2C), eines Verfahrens 80 (3A), eines Verfahrens 94 (3B) und/oder eines Verfahrens 112 (3C) implementieren, die bereits erläutert wurden. Somit kann ein Cache-Controller 144 als eine kompressionsfähige Speichervorrichtung fungieren, die einen Cache-Fehlerbehandler (Cache-Miss-Handler) 144a beinhaltet, um einen ersten Block zu identifizieren (z.B. als Reaktion auf einen Cache-Fehler), wobei ein erster Block eine erste Vielzahl von Cache-Zeilen aufweist. So kann beispielsweise ein erster Block aus einem weiteren Speicher 142 abgerufen und/oder empfangen werden. Zusätzlich kann ein Kompressionscontroller 144b kommunikativ mit dem Cache-Fehlerbehandler 144a gekoppelt werden. Eine Kompressionssteuerung 144b kann einen zweiten Block identifizieren, der eine zweite Vielzahl von Cache-Zeilen aufweist und sich im speicherseitigen Cache 146 befindet. In einem Beispiel komprimiert eine Kompressionssteuerung 144b jede Cache-Zeile in einer ersten Vielzahl von Cache-Zeilen weiter mit einer entsprechenden Cache-Zeile in einer zweiten Vielzahl von Cache-Zeilen, um einen komprimierten Block zu erhalten, der eine dritte Vielzahl von Cache-Zeilen aufweist.
  • Darüber hinaus kann eine Ersetzungssteuerung 144c kommunikativ mit einem Cache-Fehlerbehandler 144a und einer Kompressionssteuerung 144b gekoppelt werden, wobei eine Ersetzungssteuerung 144c so konfiguriert ist, um einen zweiten Block im speicherseitigen Cache 146 durch einen komprimierten Block zu ersetzen, wenn der komprimierte Block eine Größenbedingung erfüllt. eine Größenbedingung kann beispielsweise beinhalten, dass jede Cache-Zeile aus einer dritten Vielzahl von Cache-Zeilen eine Größe aufweist, die kleiner oder gleich einer Cache-Zeilengröße ist, die einem prozessorseitigen Cache 134 zugeordnet ist. Eine Cachesteuerung 144 kann auch einen Subblock-Manager 144d beinhalten, um einen ersten Block in Subblöcke zu teilen, die größer als die Cache-Zeilengröße sind. In einem solchen Fall kann eine Kompressionssteuerung 144b einen zweiten Block auf Subblockbasis identifizieren.
  • In einem Beispiel kann ein speicherseitiger Cache 146 in einer zweistufigen Speicher/2LM-Struktur als „near memory“ bezeichnet werden. Wie bereits erwähnt, kann ein Speicher 142 des Weiteren ein Speicher sein, der entweder einen flüchtigen Speicher oder einen nichtflüchtigen Speicher aufweist. Ein nichtflüchtiger Speicher ist ein Speichermedium, das keine Energie benötigt, um einen Zustand, der auf einem Medium gespeicherten Daten zu bewahren. Nicht einschränkende Beispiele für nichtflüchtige Speicher können eine oder eine Kombination aus: Festkörperspeichern (wie Planar- oder 3D-NAND-Flash-Speicher oder NOR-Flash-Speicher), 3D-Knotenpunktspeicher, Speichervorrichtungen, die Chalkogenidphasenwechselmaterial verwenden (z.B. Chalkogenidglas), byteadressierbare nichtflüchtige Speichervorrichtungen, ferroelektrischer Speicher, Siliziumoxid-Nitrid-Oxid-Silizium(SONOS)-Speicher, Polymerspeicher (z. B., ferroelektrischer Polymerspeicher), ferroelektrischer Transistor-Random-Access-Speicher (Fe-TRAM) Ovonic-Speicher, Nanodrahtspeicher, elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM), andere verschiedene Arten von nichtflüchtigen Random-Access-Speicher (RAMs) und Magnetspeicher sein. In einigen Ausführungsformen kann ein 3D-Knotenpunktspeicher eine transistorlose, stapelbare Kreuzungsstruktur umfassen, in der Speicherzellen am Schnittpunkt von Wortleitungen und Bitleitungen sitzen und einzeln adressierbar sind und in der eine Bitspeicherung auf einer Änderung des Massenwiderstands basiert. Insbesondere Ausführungsformen, ein Speichermodul mit nichtflüchtigem Speicher kann einer oder mehreren vom Joint Electron Device Engineering Council (JEDEC) veröffentlichten Normen entsprechen, wie z.B. JESD218, JESD219, JESD220-1, JESD223B, JESD223-1 oder einer anderen geeigneten Norm (die hierin genannten JEDEC-Normen sind unter jedec.org verfügbar).
  • Ein flüchtiger Speicher ist ein Speichermedium, das Strom benötigt, um einen Zustand von auf dem Medium gespeicherten Daten zu bewahren. Beispiele für flüchtige Speicher können verschiedene Arten von Direktzugriffsspeichern (RAM) beinhalten, wie beispielsweise dynamischen Direktzugriffsspeicher (DRAM) oder statischen Direktzugriffsspeicher (SRAM). Eine bestimmte Art von DRAM, die in einem Speichermodul verwendet werden kann, ist ein synchroner Dynamic Random Access Memory (SDRAM). Insbesondere Ausführungsformen, DRAM von Speichermodulen entsprechen einem von JEDEC veröffentlichten Standard, wie z.B. JESD79F für Double Data Rate (DDR) SDRAM, JESD79-2F für DDR2 SDRAM, JESD79-3F für DDR3 SDRAM oder JESD79-4A für DDR4 SDRAM (diese Standards sind unter www.jedec.org verfügbar). Diese Normen (und ähnliche Normen) können als DDR-basierte Normen und Kommunikationsschnittstellen von Speichergeräten 106, die diese Normen implementieren, als DDR-basierte Schnittstellen bezeichnet werden.
  • Zusätzliche Anmerkungen und Beispiele:
  • Beispiel 1 kann eine komprimierbare Speichervorrichtung beinhalten, die einen speicherseitigen Cache umfasst, der in eine Vielzahl von Blöcken organisiert werden soll, einen Cache-Fehlerbehandler zum Identifizieren eines ersten Blocks als Reaktion auf einen Cache-Fehler im speicherseitigen Cache, einen Subblock-Manager zum Teilen des ersten Blocks in Unterblöcke, die größer als eine Cache-Zeilengröße sind, die einem prozessorseitigen Cache zugeordnet ist, wobei ein Füll-Subblock eine erste Vielzahl von Cache-Zeilen beinhalten soll, eine Kompressionssteuerung, der kommunikativ mit dem Cache-Fehlerbehandler gekoppelt ist, wobei eine Kompressionssteuerung einen Partner-Subblock identifizieren soll, der eine zweite Vielzahl von Cache-Zeilen aufweist und sich im speicherseitigen Cache befindet, eine Kompressionssteuerung, um jede Cache-Zeile in der ersten Vielzahl von Cache-Zeilen mit einer entsprechenden Cache-Zeile in einer zweiten Vielzahl von Cache-Zeilen weiter zu komprimieren, um einen komprimierten Subblock zu erhalten, der eine dritte Vielzahl von Cache-Zeilen aufweist, und eine Ersetzungssteuerung, die kommunikativ mit einem Cache-Fehlerbehandler gekoppelt ist, eine Ersetzungssteuerung, um einen Partner-Subblock im speicherseitigen Cache durch eien komprimierten Subblock zu ersetzen, wenn ein komprimierter Subblock eine Größenbedingung erfüllt, wobei eine Größenbedingung ist, jede Cache-Zeile in einer dritten Vielzahl von Cache-Zeilen aufzunehmen, die eine Größe aufweist, die kleiner oder gleich der einem prozessorseitigen Cache zugeordneten Cache-Zeilengröße ist.
  • Beispiel 2 kann die Vorrichtung von Beispiel 1 beinhalten, wobei ein Opfer-Subblock als Partner-Subblock auszuwählen ist und eine Ersetzungssteuerung einen Opfer-Subblock durch einen Füll-Subblock ersetzen soll, wenn ein komprimierter Subblock eine Größenbedingung nicht erfüllt.
  • Beispiel 3 kann die Vorrichtung von Beispiel 1 beinhalten, wobei ein erster Subblock im speicherseitigen Cache, der bewirkt, dass ein Kompressionssubblock eine Größenbedingung erfüllt, als Partner-Subblock ausgewählt werden soll.
  • Beispiel 4 kann die Vorrichtung von Beispiel 1 beinhalten, wobei ein Subblock im speicherseitigen Cache, der bewirkt, dass ein Kompressions-Subblock möglichst wenig ungenutzten Platz zurücklässt, als Partner-Subblock ausgewählt werden soll.
  • Beispiel 5 umfasst ein speicherbasiertes Computersystem, das einen Prozessor mit einem prozessorseitigen Cache, einen mit dem Prozessor gekoppelten Bus und einen mit dem Bus gekoppelten Systemspeicher umfasst, wobei ein Systemspeicher einen Speicher, einen speicherseitigen Cache, der in eine Vielzahl von Blöcken organisiert werden soll, einen Cache-Fehlerbehandler zum Identifizieren eines ersten Blocks, wobei ein erster Block eine erste Vielzahl von Cacheleitungen beinhalten soll, einen Kompressionscontroller, der kommunikativ mit einem Cache-Fehlerbehandler gekoppelt ist, wobei ein Kompressionscontroller einen zweiten Block identifiziert, der eine zweite Vielzahl von Cacheleitungen aufweist und sich im speicherseitigen Cache befindet, eine Kompressionssteuerung, um jede Cache-Zeile in einer ersten Vielzahl von Cache-Zeilen mit einer entsprechenden Cache-Zeile in einer zweiten Vielzahl von Cache-Zeilen weiter zu komprimieren, um einen komprimierten Block zu erhalten, der eine dritte Vielzahl von Cache-Zeilen aufweist, und eine Ersetzungssteuerung, die kommunikativ mit einem Cache-Fehlerbehandler gekoppelt ist, wobei eine Ersetzungssteuerung einen zweiten Block in einem speicherseitigen Cache durch einen komprimierten Block ersetzt, wenn ein komprimierter Block eine Größenbedingung erfüllt.
  • Beispiel 6 kann das System von Beispiel 5 beinhalten, wobei eine Größenbedingung ist, jede Cache-Zeilen in einer dritten Vielzahl von Cache-Zeilen aufzunehmen, deren Größe kleiner oder gleich einer Cache-Zeilengröße ist, die dem prozessorseitigen Cache zugeordnet ist.
  • Beispiel 7 kann das System von Beispiel 5 beinhalten, wobei ein Opferblock als zweiter Block ausgewählt werden soll und eine Ersetzungssteuerung einen Opferblock durch einen ersten Block ersetzen soll, wenn ein komprimierter Block eine Größenbedingung nicht erfüllt.
  • Beispiel 8 kann das System von Beispiel 5 beinhalten, wobei ein erster Block im speicherseitigen Cache, der bewirkt, dass ein Kompressionsblock eine Größenbedingung erfüllt, als zweiter Block ausgewählt werden soll.
  • Beispiel 9 kann das System von Beispiel 5 beinhalten, wobei ein Block im speicherseitigen Cache, der bewirkt, dass ein Kompressionsblock, der am wenigsten ungenutzten Platz zurücklässt, als zweiter Block ausgewählt werden muss.
  • Beispiel 10 kann das System eines der Beispiele 5 bis 9 beinhalten, wobei ein Systemspeicher ferner einen Subblock-Manager aufweist, um einen ersten Block in Subblöcke zu teilen, die größer als eine Cache-Zeilengröße sind, die einem prozessorseitigen Cache zugeordnet ist, wobei ein zweiter Block auf Subblockbasis zu identifizieren ist.
  • Beispiel 11 kann das System eines der Beispiele 5 bis 9 beinhalten, wobei ein erster Block als Reaktion auf einen Cache-Fehler im speicherseitigen Cache zu identifizieren ist.
  • Beispiel 12 kann eine komprimierbare Speichervorrichtung beinhalten, die einen speicherseitigen Cache umfasst, der in eine Vielzahl von Blöcken organisiert werden soll, einen Cache-Fehlerbehandler zum Identifizieren eines ersten Blocks, wobei ein erster Block eine erste Vielzahl von Cacheleitungen beinhalten soll, einen Kompressionscontroller, der kommunikativ mit einem Cache-Fehlerbehandler gekoppelt ist, wobei ein Kompressionscontroller einen zweiten Block identifiziert, der eine zweite Vielzahl von Cache-Zeilen aufweist und sich im speicherseitigen Cache befindet, eine Kompressionssteuerung, um jede Cache-Zeile in einer ersten Vielzahl von Cache-Zeilen mit einer entsprechenden Cache-Zeile in einer zweiten Vielzahl von Cache-Zeilen weiter zu komprimieren, um einen komprimierten Block zu erhalten, der eine dritte Vielzahl von Cache-Zeilen aufweist, und eine Ersetzungssteuerung, die kommunikativ mit einem Cache-Fehlerbehandler gekoppelt ist, wobei eine Ersetzungssteuerung einen zweiten Block in einem speicherseitigen Cache durch einen komprimierten Block ersetzt, wenn ein komprimierte Block eine Größenbedingung erfüllt.
  • Beispiel 13 kann die Vorrichtung von Beispiel 12 beinhalten, wobei eine Größenbedingung ist, jede Cache-Zeile in einer dritten Vielzahl von Cache-Zeile aufzunehmen, die eine Größe aufweist, die kleiner oder gleich einer Cache-Zeilengröße ist, die einem prozessorseitigen Cache zugeordnet ist.
  • Beispiel 14 kann die Vorrichtung von Beispiel 12 beinhalten, wobei ein Opferblock als zweiter Block ausgewählt werden soll und eine Ersetzungssteuerung einen Opferblock durch einen ersten Block ersetzen soll, wenn ein komprimierter Block eine Größenbedingung nicht erfüllt.
  • Beispiel 15 kann die Vorrichtung von Beispiel 12 beinhalten, wobei ein erster Block im speicherseitigen Cache, der bewirkt, dass ein Kompressionsblock eine Größenbedingung erfüllt, als zweiter Block ausgewählt werden soll.
  • Beispiel 16 kann die Vorrichtung von Beispiel 12 beinhalten, wobei ein Block im speicherseitigen Cache, der bewirkt, dass ein Kompressionsblock, der am wenigsten ungenutzten Platz zurücklässt, als zweiter Block ausgewählt werden soll.
  • Beispiel 17 kann die Vorrichtung eines der Beispiele 12 bis 16 beinhalten, ferner einen Subblock-Manager, um einen ersten Block in Subblöcke zu teilen, die größer sind als eine Cache-Zeilengröße, die einem prozessorseitigen Cache zugeordnet ist, wobei ein zweiter Block auf Subblockbasis zu identifizieren ist.
  • Beispiel 18 kann die Vorrichtung eines der Beispiele 12 bis 16 beinhalten, wobei ein erster Block als Reaktion auf einen Cache-Fehler im speicherseitigen Cache zu identifizieren ist.
  • Beispiel 19 kann ein Verfahren zum Betreiben einer kompressionsfähigen Speichervorrichtung beinhalten, die ein Identifizieren eines ersten Blocks und eines zweiten Blocks umfasst, wobei ein erster Block eine erste Vielzahl von Cache-Zeilen aufweist, ein zweiter Block eine zweite Vielzahl von Cache-Zeilen aufweist und sich der zweite Block in einem speicherseitigen Cache befindet, wobei jede Cache-Zeile in der ersten Vielzahl von Cache-Zeilen mit einer entsprechenden Cache-Zeile in der zweiten Vielzahl von Cache-Zeilen komprimiert wird, um einen komprimierten Block zu erhalten, der eine dritte Vielzahl von Cache-Zeilen aufweist, und ein zweiter Block in dem speicherseitigen Cache durch einen komprimierten Block ersetzt wird, wenn der komprimierte Block eine Größenbedingung erfüllt.
  • Beispiel 20 kann das Verfahren des Beispiels 19 beinhalten, wobei eine Größenbedingung ist, dass jede Cache-Zeile aus einer dritten Vielzahl von Cache-Zeilen eine Größe aufweist, die kleiner oder gleich einer Cache-Zeilengröße ist, die einem prozessorseitigen Cache zugeordnet ist.
  • Beispiel 21 kann das Verfahren des Beispiels 19 beinhalten, wobei ein Opferblock als zweiter Block ausgewählt wird und ein Verfahren ferner ein Ersetzen des Opferblocks durch einen ersten Block aufweist, wenn ein komprimierter Block eine Größenbedingung nicht erfüllt.
  • Beispiel 22 kann das Verfahren von Beispiel 19 beinhalten, wobei ein erster Block im speicherseitigen Cache, der bewirkt, dass ein Kompressionsblock, der die Größenbedingung erfüllt, als zweiter Block ausgewählt wird.
  • Beispiel 23 kann das Verfahren des Beispiels 19 beinhalten, wobei ein Block im speicherseitigen Cache, der bewirkt, dass ein Kompressionsblock, der möglichst wenig ungenutzten Speicherplatz zurücklässt, als zweiter Block ausgewählt wird.
  • Beispiel 24 kann das Verfahren eines der Beispiele 19 bis 23 beinhalten, ferner ein Teilen eines ersten Blocks in Subblöcke, die größer als eine Cache-Zeilengröße sind, die einem prozessorseitigen Cache zugeordnet ist, wobei ein zweiter Block auf Subblockbasis identifiziert wird.
  • Beispiel 25 kann das Verfahren eines der Beispiele 19 bis 23 beinhalten, wobei ein erster Block als Reaktion auf einen Cache-Fehler im speicherseitigen Cache identifiziert wird.
  • Beispiel 26 kann eine kompressionsfähige Speichervorrichtung beinhalten, die Mittel zum Identifizieren eines ersten Blocks und eines zweiten Blocks, wobei ein erster Block eine erste Vielzahl von Cache-Zeilen beinhalten soll, ein zweiter Block eine zweite Vielzahl von Cache-Zeilen beinhalten soll und der zweite Block in einem speicherseitigen Cache liegen soll, Mittel zum Komprimieren jeder Cache-Zeile in einer ersten Vielzahl von Cache-Zeilen mit einer entsprechenden Cache-Zeile in einer zweiten Vielzahl von Cache-Zeilen, um einen komprimierten Block zu erhalten, der eine dritte Vielzahl von Cache-Zeilen aufweist, und Mittel zum Ersetzen eines zweiten Blocks in dem speicherseitigen Cache durch einen komprimierten Block, wenn ein komprimierter Block eine Größenbedingung erfüllt, umfasst
  • Beispiel 27 kann die Vorrichtung von Beispiel 26 beinhalten, wobei eine Größenbedingung ist, jede Cache-Zeile in einer dritten Vielzahl von Cache-Zeilen aufzunehmen, die eine Größe aufweist, die kleiner oder gleich einer Cache-Zeilengröße ist, die einem prozessorseitigen Cache zugeordnet ist.
  • Beispiel 28 kann die Vorrichtung von Beispiel 26 beinhalten, wobei der Opferblock als zweiter Block ausgewählt werden soll und eine Vorrichtung ferner Mittel zum Ersetzen des Opferblocks durch einen ersten Block aufweist,
  • Beispiel 29 kann die Vorrichtung von Beispiel 26 beinhalten, wobei ein erster Block im speicherseitigen Cache, der bewirkt, dass ein Kompressionsblock, der die Größenbedingung erfüllt, als zweiter Block ausgewählt werden soll.
  • Beispiel 30 kann die Vorrichtung von Beispiel 26 beinhalten, wobei ein Block im speicherseitigen Cache, der bewirkt, dass ein Kompressionsblock, der am wenigsten ungenutzten Platz lässt, als zweiter Block ausgewählt werden soll.
  • Beispiel 31 kann die Vorrichtung eines der Beispiele 26 bis 30 beinhalten, ferner Mittel zum Aufteilen eines ersten Blocks in Subblöcke, die größer sind als eine Cache-Zeilengröße, die einem prozessorseitigen Cache zugeordnet ist, wobei ein zweiter Block auf Subblockbasis zu identifizieren ist.
  • Beispiel 32 kann die Vorrichtung eines der Beispiele 26 bis 30 beinhalten, wobei ein erster Block als Reaktion auf einen Cache-Fehler im speicherseitigen Cache zu identifizieren ist.
  • Die hierin beschriebenen Techniken können daher die Cache-Kapazität erhöhen und den Zugriff auf den Weitbereichsspeicher reduzieren, was wiederum die Leistung verbessern und den Stromverbrauch senken kann. Darüber hinaus können Techniken die Dekompressionslatenz und den Overhead in kritischen Pfaden von CPU-Lesevorgängen reduzieren. Dementsprechend kann die Leistung weiter gesteigert werden. Darüber hinaus kann die speicherseitige Cache-Komprimierung die Systemkosten senken, indem sie den Aufbau kleinerer Caches ermöglicht und gleichzeitig die Lücke zu größeren Caches durch Kompression schließt. Die Techniken können auch auf verschiedene Block-/Cache-Zeilengranularitäten und Assoziativitäten erweitert werden.
  • Die Ausführungsformen sind für allen Arten von Halbleiterchips mit integrierter Schaltung („IC“) anwendbar. Beispiele für diese IC-Chips sind unter anderem Prozessoren, Controller, Chipsatzkomponenten, programmierbare Logik-Arrays (PLAs), Speicherchips, Netzwerkchips, Systems on Chip (SoCs), SSD/NAND-Controller-ASICs und dergleichen. Darüber hinaus werden in einigen der Zeichnungen Signalleitungen durch Zeilen dargestellt. Einige können unterschiedlich sein, um mehr konstituierende Signalpfade anzuzeigen, eine Nummernetikette zu haben, um eine Anzahl konstituierender Signalpfade anzuzeigen, und/oder Pfeile an einem oder mehreren Enden zu haben, um die Richtung des primären Informationsflusses anzuzeigen. Dies sollte jedoch nicht eingeschränkt ausgelegt werden. Vielmehr können solche zusätzlichen Details in Verbindung mit einer oder mehreren exemplarischen Ausführungsformen verwendet werden, um das Verständnis einer Schaltung zu erleichtern. Jede dargestellte Signalleitung, unabhängig davon, ob sie zusätzliche Informationen enthält oder nicht, kann tatsächlich ein oder mehrere Signale umfassen, die sich in mehrere Richtungen bewegen können, und kann mit jeder geeigneten Art von Signalschema implementiert werden, z.B. digitale oder analoge Leitungen, die mit differentiellen Paaren, Glasfaserleitungen und/oder single-ended Leitungen implementiert sind
  • Beispielgrößen/-Modelle/-Werte/-Bereiche können angegeben worden sein, obwohl die Ausführungsformen nicht auf dasselbe beschränkt sind. Da die Fertigungstechniken (z.B. die Photolithographie) im Laufe der Zeit reifen, wird erwartet, dass Vorrichtungen kleinerer Größe hergestellt werden können. Darüber hinaus können bekannte Strom-/Masseverbindungen zu IC-Chips und anderen Komponenten innerhalb der Abbildungen dargestellt werden, um die Darstellung und Diskussion zu vereinfachen und bestimmte Aspekte der Ausführungsformen nicht zu verdecken. Darüber hinaus können Anordnungen in Blockdiagrammform dargestellt werden, um unklare Ausführungsformen zu vermeiden, und auch angesichts der Tatsache, dass die Besonderheiten bei der Umsetzung solcher Blockdiagrammanordnungen stark von der Plattform abhängen, innerhalb derer die Ausführungsform implementiert werden soll, d. h., diese Besonderheiten sollten weitestgehend im Zuständigkeitsbereich eines Fachmanns liegen. Wenn spezifische Details (z.B. Schaltkreise) festgelegt sind, um exemplarische Ausführungsformen zu beschreiben, sollte einem Fachmann klar sein, dass Ausführungsformen ohne oder mit Variation dieser spezifischen Details geübt werden können. Die Beschreibung ist daher als veranschaulichend und nicht als einschränkend zu betrachten.
  • Der Begriff „gekoppelt“ kann hierin verwendet werden, um sich auf jede Art in direkter oder indirekter Beziehung auf die betreffenden Komponenten zu beziehen, und kann für elektrische, mechanische, flüssige, optische, elektromagnetische, elektromechanische oder andere Verbindungen stehen. Darüber hinaus dürfen die Begriffe „erste“, „zweite“ usw. hierin nur zur Erleichterung der Diskussion verwendet werden und haben, sofern nicht anders angegeben, keine besondere zeitliche oder chronologische Bedeutung.
  • Wie in dieser Anmeldung und in den Ansprüchen angewendet, kann eine Liste von Gegenständen, die durch den Begriff „einer oder mehrere von ihnen“ ergänzt werden, eine beliebige Kombination der aufgeführten Begriffe bedeuten. So können beispielsweise die Sätze „einer oder mehrere von A, B oder C“ A; B; C; C; A und B; A und C; A und C; B und C; oder A, B und C bedeuten.
  • Die Fachleute werden an der vorstehenden Beschreibung schätzen, dass die breiten Techniken der Ausführungsformen in einer Vielzahl von Formen umgesetzt werden können. Obwohl die Ausführungsformen im Zusammenhang mit bestimmten Beispielen davon beschrieben wurden, sollte der wahre Umfang der Ausführungsformen daher nicht so begrenzt sein, da dem Fachmann nach dem Studium der Zeichnungen, der Beschreibung und der folgenden Ansprüche andere Änderungen klar werden.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 15279647 [0001]
  • Zitierte Nicht-Patentliteratur
    • Joint Electron Device Engineering Council (JEDEC) veröffentlichten Normen entsprechen, wie z.B. JESD218, JESD219, JESD220-1, JESD223B, JESD223-1 [0032]

Claims (25)

  1. Eine kompressionsfähige Speichervorrichtung umfassend: einen speicherseitigen Cache, der in eine Vielzahl von Blöcken organisiert werden soll; einen Cache-Fehlerbehandler, um einen ersten Block als Reaktion auf einen Cache-Fehler im speicherseitigen Cache zu identifizieren; einen Subblock-Manager, um den ersten Block in Subblöcke zu teilen, die größer als eine Cache-Zeilengröße sind, die einem prozessorseitigen Cache zugeordnet ist, wobei ein Füll-Subblock eine erste Vielzahl von Cache-Zeilen aufweisen soll; eine Kompressionssteuerung, die kommunikativ mit dem Cache-Fehlerbehandler gekoppelt ist, wobei die Kompressionssteuerung einen Partner-Subblock identifiziert, der eine zweite Vielzahl von Cache-Zeilen aufweist und sich im speicherseitigen Cache befindet, wobei die Kompressionssteuerung ferner jede Cache-Zeile in der ersten Vielzahl von Cache-Zeilen mit einer entsprechenden Cache-Zeile in der zweiten Vielzahl von Cache-Zeilen komprimiert, um einen komprimierten Subblock zu erhalten, der eine dritte Vielzahl von Cache-Zeilen aufweist; und eine Ersetzungssteuerung, die kommunikativ mit dem Cache-Fehlerbehandler gekoppelt ist, wobei die Ersetzungssteuerung den Partner-Subblock im speicherseitigen Cache durch den komprimierten Subblock ersetzt, wenn der komprimierte Subblock eine Größenbedingung erfüllt, wobei die Größenbedingung ist, jede Cache-Zeile in die dritte Vielzahl von Cache-Zeilen aufzunehmen, die eine Größe aufweist, die kleiner oder gleich der dem prozessorseitigen Cache zugeordneten Cache-Zeilengröße ist.
  2. Die Vorrichtung nach Anspruch 1, wobei ein Opfer-Subblock als Partner-Subblock auszuwählen ist und die Ersetzungssteuerung den Opfer-Subblock durch den Füll-Subblock ersetzen soll, wenn der komprimierte Subblock die Größenbedingung nicht erfüllt.
  3. Die Vorrichtung nach Anspruch 1, wobei ein erster Subblock im speicherseitigen Cache, der bewirkt, dass ein Kompressionssubblock die Größenbedingung erfüllt, als Partner-Subblock ausgewählt werden soll.
  4. Die Vorrichtung nach Anspruch 1, wobei ein Subblock im speicherseitigen Cache ist, der bewirkt, dass der Kompressionssubblock, der die geringste Menge an ungenutztem Speicherplatz zurücklässt, als Partner-Subblock ausgewählt werden soll.
  5. Ein Speicherbasiertes Computersystem umfassend: einen Prozessor mit einem prozessorseitigen Cache; einen mit dem Prozessor gekoppelten Bus; und einen Systemspeicher, der mit dem Bus gekoppelt ist, wobei der Systemspeicher umfasst: einen Speicher; einen speicherseitigen Cache, der in eine Vielzahl von Blöcken organisiert werden soll, einen Cache-Fehlerbehandler, um einen ersten Block zu identifizieren, wobei der erste Block eine erste Vielzahl von Cache-Zeilen beinhalten soll, eine Kompressionssteuerung, die kommunikativ mit dem Cache-Fehlerbehandler gekoppelt ist, wobei die Kompressionssteuerung einen Partnerblock identifiziert, der eine zweite Vielzahl von Cache-Zeilen aufweist und sich im speicherseitigen Cache befindet, wobei die Kompressionssteuerung ferner jede Cache-Zeile in der ersten Vielzahl von Cache-Zeilen mit einer entsprechenden Cache-Zeile in der zweiten Vielzahl von Cache-Zeilen komprimiert, um einen komprimierten Block zu erhalten, der eine dritte Vielzahl von Cache-Zeilen aufweist, und eine Ersetzungssteuerung, die kommunikativ mit dem Cache-Fehlerbehandler gekoppelt ist, wobei die Ersetzungssteuerung den Partnerblock im Speicherseiten-Cache durch den komprimierten Block ersetzt, wenn der komprimierte Block eine Größenbedingung erfüllt.
  6. System nach Anspruch 5, wobei die Größenbedingung ist, jede Cache-Zeile in die dritte Vielzahl von Cache-Zeilen aufzunehmen, die eine Größe aufweist, die kleiner oder gleich einer Cache-Zeilengröße ist, die dem prozessorseitigen Cache zugeordnet ist.
  7. System nach Anspruch 5, wobei ein Opferblock als Partnerblock auszuwählen ist und die Ersetzungssteuerung den Opferblock durch den ersten Block ersetzen soll, wenn der komprimierte Block die Größenbedingung nicht erfüllt.
  8. Das System nach Anspruch 5, wobei ein erster Block im speicherseitigen Cache, der bewirkt, dass der Kompressionsblock die Größenbedingung erfüllt, als Partnerblock ausgewählt werden soll.
  9. Das System nach Anspruch 5, wobei ein Block im speicherseitigen Cache ist, der bewirkt, dass der Kompressionsblock am wenigsten ungenutzten Platz zurücklässt, als Partnerblock ausgewählt werden soll.
  10. Das System nach einem der Ansprüche 5 bis 9, wobei der Systemspeicher ferner einen Subblockmanager aufweist, um den ersten Block in Subblöcke zu teilen, die größer sind als eine Cache-Zeilengröße, die einem prozessorseitigen Cache zugeordnet ist, wobei der Partnerblock auf Subblockbasis zu identifizieren ist.
  11. Das System nach einem der Ansprüche 5 bis 9, worin der erste Block als Reaktion auf einen Cache-Fehler im speicherseitigen Cache zu identifizieren ist.
  12. Eine kompressionsfähige Speichervorrichtung umfassend: einen speicherseitigen Cache, der in eine Vielzahl von Blöcken organisiert werden soll; einen Cache-Fehlerbehandler, um einen ersten Block zu identifizieren, wobei der erste Block eine erste Vielzahl von Cache-Zeilen aufweisen soll; eine Kompressionssteuerung, die kommunikativ mit dem Cache-Fehlerbehandler gekoppelt ist, wobei die Kompressionssteuerung einen Partnerblock identifiziert, der eine zweite Vielzahl von Cache-Zeilen aufweist und sich im speicherseitigen Cache befindet, wobei die Kompressionssteuerung ferner jede Cache-Zeile in der ersten Vielzahl von Cache-Zeilen mit einer entsprechenden Cache-Zeile in der zweiten Vielzahl von Cache-Zeilen komprimiert, um einen komprimierten Block zu erhalten, der eine dritte Vielzahl von Cache-Zeilen aufweist; und eine Ersetzungssteuerung, die kommunikativ mit dem Cache-Fehlerbehandler gekoppelt ist, wobei die Ersetzungssteuerung den Partnerblock im speicherseitigen Cache durch den komprimierten Block ersetzt, wenn der komprimierte Block eine Größenbedingung erfüllt.
  13. Die Vorrichtung nach Anspruch 12, wobei die Größenbedingung ist, jede Cache-Zeile in die dritte Vielzahl von Cache-Zeilen aufzunehmen, die eine Größe aufweist, die kleiner oder gleich einer Cache-Zeilengröße ist, die einem prozessorseitigen Cache zugeordnet ist.
  14. Die Vorrichtung nach Anspruch 12, wobei ein Opferblock als Partnerblock auszuwählen ist und die Ersetzungssteuerung den Opferblock durch den ersten Block ersetzen soll, wenn der komprimierte Block die Größenbedingung nicht erfüllt.
  15. Vorrichtung nach Anspruch 12, wobei ein erster Block im speicherseitigen Cache, der bewirkt, dass der Kompressionsblock die Größenbedingung erfüllt, als Partnerblock ausgewählt werden soll.
  16. Die Vorrichtung nach Anspruch 12, wobei ein Block im speicherseitigen Cache, der bewirkt, dass der Kompressionsblock die geringste Menge an ungenutztem Speicherplatz zurücklässt, als Partnerblock ausgewählt werden soll.
  17. Die Vorrichtung nach einem der Ansprüche 12 bis 16, die ferner einen Subblock-Manager zum Aufteilen des ersten Blocks in Subblöcke aufweist, die größer sind als eine Cache-Zeilengröße, die einem prozessorseitigen Cache zugeordnet ist, wobei der Partnerblock auf Subblockbasis zu identifizieren ist.
  18. Die Vorrichtung nach einem der Ansprüche 12 bis 16, wobei der erste Block als Reaktion auf einen Cache-Fehler im speicherseitigen Cache zu identifizieren ist.
  19. Ein Verfahren zum Betreiben einer kompressionsfähigen Speichervorrichtung, umfassend: Identifizieren eines ersten Blocks und eines Partnerblocks, wobei der erste Block eine erste Vielzahl von Cache-Zeilen aufweist, der Partnerblock eine zweite Vielzahl von Cache-Zeilen aufweist und der Partnerblock sich in einem speicherseitigen Cache befindet; Komprimieren jeder Cache-Zeile in der ersten Vielzahl von Cache-Zeilen mit einer entsprechenden Cache-Zeile in der zweiten Vielzahl von Cache-Zeilen, um einen komprimierten Block zu erhalten, der eine dritte Vielzahl von Cache-Zeilen aufweist; und Ersetzen des Partnerblocks im speicherseitigen Cache durch den komprimierten Block, wenn der komprimierte Block eine Größenbedingung erfüllt.
  20. Das Verfahren nach Anspruch 19, worin die Größenbedingung ist, dass jede Cache-Zeile in der dritten Vielzahl von Cache-Zeilen eine Größe aufweist, die kleiner oder gleich einer Cache-Zeilengröße ist, die einem prozessorseitigen Cache zugeordnet ist.
  21. Das Verfahren nach Anspruch 19, wobei der Opferblock als Partnerblock ausgewählt ist und das Verfahren ferner ein Ersetzen des Opferblocks durch den ersten Block aufweist, wenn der komprimierte Block die Größenbedingung nicht erfüllt.
  22. Das Verfahren nach Anspruch 19, wobei ein erster Block im speicherseitigen Cache, der bewirkt, dass der Kompressionsblock die Größenbedingung erfüllt, als Partnerblock ausgewählt wird.
  23. Das Verfahren nach Anspruch 19, wobei ein Block im speicherseitigen Cache, der bewirkt, dass der Kompressionsblock die geringste Menge an ungenutztem Speicherplatz zurücklässt, als Partnerblock ausgewählt wird.
  24. Das Verfahren nach einem der Ansprüche 19 bis 23, ferner umfassend ein Aufteilen des ersten Blocks in Teilblöcke, die größer als eine Cache-Zeilengröße sind, die einem prozessorseitigen Cache zugeordnet ist, worin der Partnerblock auf einer Subblockbasis identifiziert wird.
  25. Eine kompressionsfähige Speichervorrichtung, welche die Mittel zum Ausführen des Verfahrens nach einem der Ansprüche 19 bis 23 umfasst.
DE112017004916.4T 2016-09-29 2017-08-24 Verwendung von Kompression zur Kapazitätserhöhung eines speicherseitigen Caches mit grosser Blockgrösse Pending DE112017004916T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/279,647 US10048868B2 (en) 2016-09-29 2016-09-29 Replacement of a block with a compressed block to increase capacity of a memory-side cache
US15/279,647 2016-09-29
PCT/US2017/048457 WO2018063614A1 (en) 2016-09-29 2017-08-24 Using compression to increase capacity of a memory-side cache with large block size

Publications (1)

Publication Number Publication Date
DE112017004916T5 true DE112017004916T5 (de) 2019-06-13

Family

ID=61686220

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017004916.4T Pending DE112017004916T5 (de) 2016-09-29 2017-08-24 Verwendung von Kompression zur Kapazitätserhöhung eines speicherseitigen Caches mit grosser Blockgrösse

Country Status (4)

Country Link
US (1) US10048868B2 (de)
CN (1) CN109643278B (de)
DE (1) DE112017004916T5 (de)
WO (1) WO2018063614A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9378560B2 (en) 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US11188467B2 (en) 2017-09-28 2021-11-30 Intel Corporation Multi-level system memory with near memory capable of storing compressed cache lines
SE543649C2 (en) * 2018-11-14 2021-05-18 Zeropoint Tech Ab Managing free space in a compressed memory system
SE544272C2 (en) * 2018-11-14 2022-03-22 Zeropoint Tech Ab Accessing compressed computer memory
US11573899B1 (en) 2021-10-21 2023-02-07 International Business Machines Corporation Transparent interleaving of compressed cache lines

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802572A (en) * 1996-03-15 1998-09-01 International Business Machines Corporation Write-back cache having sub-line size coherency granularity and method for maintaining coherency within a write-back cache
US6182201B1 (en) * 1997-04-14 2001-01-30 International Business Machines Corporation Demand-based issuance of cache operations to a system bus
EP1387277B1 (de) * 2002-07-31 2009-07-15 Texas Instruments Incorporated Nachschreibstrategie für Speicher
US7162584B2 (en) 2003-12-29 2007-01-09 Intel Corporation Mechanism to include hints within compressed data
US8156283B2 (en) * 2007-05-10 2012-04-10 Texas Instruments Incorporated Processing function connected to processor memory hierarchy
US8612676B2 (en) 2010-12-22 2013-12-17 Intel Corporation Two-level system main memory
EP2761469B1 (de) * 2011-09-30 2019-11-13 Intel Corporation Nichtflüchtiger direktzugriffsspeicher (nvram) als ersatz für herkömmlichen massenspeicher
WO2013101060A2 (en) 2011-12-29 2013-07-04 Intel Corporation Efficient support of sparse data structure access
US8788712B2 (en) 2012-01-06 2014-07-22 International Business Machines Corporation Compression block input/output reduction
JP5826114B2 (ja) * 2012-05-25 2015-12-02 クラリオン株式会社 データ解凍装置、データ圧縮装置、データの解凍プログラム、データの圧縮プログラム、及び、圧縮データ配信システム
WO2014049636A1 (en) * 2012-09-25 2014-04-03 Hitachi, Ltd. Storage apparatus and method of controlling the same
US9582426B2 (en) * 2013-08-20 2017-02-28 International Business Machines Corporation Hardware managed compressed cache
US9292449B2 (en) 2013-12-20 2016-03-22 Intel Corporation Cache memory data compression and decompression
WO2015160362A1 (en) 2014-04-18 2015-10-22 Hewlett-Packard Development Company, L.P. Providing combined data from a cache and a storage device
US10152421B2 (en) * 2015-11-23 2018-12-11 Intel Corporation Instruction and logic for cache control operations
US20170255561A1 (en) * 2016-03-07 2017-09-07 Intel Corporation Technologies for increasing associativity of a direct-mapped cache using compression
US20180004659A1 (en) * 2016-07-01 2018-01-04 Intel Corporation Cribbing cache implementing highly compressible data indication

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Joint Electron Device Engineering Council (JEDEC) veröffentlichten Normen entsprechen, wie z.B. JESD218, JESD219, JESD220-1, JESD223B, JESD223-1

Also Published As

Publication number Publication date
US20180088822A1 (en) 2018-03-29
WO2018063614A1 (en) 2018-04-05
CN109643278B (zh) 2023-07-18
CN109643278A (zh) 2019-04-16
US10048868B2 (en) 2018-08-14

Similar Documents

Publication Publication Date Title
DE112017004916T5 (de) Verwendung von Kompression zur Kapazitätserhöhung eines speicherseitigen Caches mit grosser Blockgrösse
DE112014004778B4 (de) Vorrichtung und Verfahren zum Verwalten von Chipgruppen
DE112019005362T5 (de) Schnelles storage class memory mit write-once-memory-codierung
DE112014005521B4 (de) Speichermodul und Verfahren zum Verwalten des Abbildens logischer Adressen auf physikalische Adressen
DE112011102487B4 (de) Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen
DE102019116520A1 (de) Datenspeichersysteme und -verfahren für eine verbesserte datenumlagerung basierend auf lesepegelspannungen, die mit einer fehlerwiederherstellung verbunden sind
DE112011102160B4 (de) Wear-levelling bei Zellen/Seiten/Teilseiten/Blöcken eines Speichers
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE112018004251T5 (de) Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich
DE112017002941T5 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE112015004863T5 (de) Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen
DE102012112354A1 (de) Speichervorrichtung und nichtflüchtige Speichervorrichtung sowie Betriebsverfahren davon
DE112015004873T5 (de) Verarbeitung von Entabbildungsbefehlen zur Verbesserung der Leistungsfähigkeit und Standzeit einer Speicherungsvorrichtung
DE112015000378T5 (de) Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher
DE102019125059A1 (de) Abbildung für multi-state-programmierung von speichervorrichtungen
DE102019134294A1 (de) Nichtflüchtiges speichersystem mit schneller wiederherstellung nach nicht ordnungsgemässem herunterfahren
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE112020000162T5 (de) Nichtflüchtiges speicherungssystem mit filterung von daten-abtastwerten für eine überwachte betriebsstatistik
DE112018004252T5 (de) Redundanzcodierstreifen auf der basis eines koordinierten internen adressschemas über mehrere vorrichtungen
DE112018000485T5 (de) Komprimierer/Dekomprimierer für nicht binäre Kontextmischung
DE112019007666T5 (de) Schreibpuffersteuerung in einem verwalteten Speichersystem
DE112017006698T5 (de) Erreichen einheitlicher lesezeiten in nicht flüchtigen mehrebenenspeichern
DE102018105277A1 (de) Auf Hamming-Abstand basierende Binärdarstellungen von Zahlen
DE102021114457A1 (de) Abwicklung von lesen in vorrichtungen mit in zonen unterteiltem namensraum

Legal Events

Date Code Title Description
R012 Request for examination validly filed