DE112013006298T5 - Verfahren und Einrichtung für einen komprimierten und verdichteten virtuellen Speicher - Google Patents

Verfahren und Einrichtung für einen komprimierten und verdichteten virtuellen Speicher Download PDF

Info

Publication number
DE112013006298T5
DE112013006298T5 DE112013006298.4T DE112013006298T DE112013006298T5 DE 112013006298 T5 DE112013006298 T5 DE 112013006298T5 DE 112013006298 T DE112013006298 T DE 112013006298T DE 112013006298 T5 DE112013006298 T5 DE 112013006298T5
Authority
DE
Germany
Prior art keywords
compressed
storage
memory
section
data
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.)
Granted
Application number
DE112013006298.4T
Other languages
English (en)
Inventor
Joseph Sokol Jr
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.)
Apple Inc
Original Assignee
Apple Inc
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 Apple Inc filed Critical Apple Inc
Publication of DE112013006298T5 publication Critical patent/DE112013006298T5/de
Granted legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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
    • 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
    • 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/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • 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/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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

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)
  • Memory System (AREA)

Abstract

Ein Verfahren und eine Einrichtung für eine Speichervorrichtung einschließlich eines dynamisch aktualisierten Abschnitts komprimierten Speichers für einen virtuellen Speicher werden beschrieben. Die Speichervorrichtung kann einen unkomprimierten Speicherabschnitt separat vom komprimierten Speicherabschnitt einschließen. Der virtuelle Speicher kann in der Lage sein, dem komprimierten Speicherabschnitt eine Speicheradresse zuzuordnen. Eine im unkomprimierten Speicherabschnitt allozierte Speicherregion kann in den komprimierten Speicherabschnitt komprimiert werden. Infolgedessen kann die Speicherregion (z. B. nachdem sie komprimiert wurde) für eine zukünftige in der Speichervorrichtung angefragte Allozierung verfügbar werden. Der komprimierte Speicherabschnitt kann aktualisiert werden, um die komprimierte Speicherregion zu speichern. Die komprimierte Speicherregion kann als Reaktion auf eine Anfrage, auf Daten in der komprimierten Speicherregion zuzugreifen, in den unkomprimierten Abschnitt in der Speichervorrichtung zurück dekomprimiert werden.

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft allgemein Speichersysteme. Genauer betrifft diese Erfindung einen komprimierten und/oder verdichteten Speicher für virtuelle Speichersysteme.
  • Hintergrund
  • Virtualisierungstechniken wurden entwickelt, um die Speicherverwaltung für Speicherplatz mit einer Größe, welche die tatsächliche physische Kapazität einer Speichervorrichtung überschreitet, zu verbessern. Typischerweise kann Speichervirtualisierung auf Speicherein- und -auslagern unter Verwendung einer mit der Speichervorrichtung gekoppelten Datenspeichervorrichtung beruhen. Da Speicherobjekt- und/oder E/A(Eingabe/Ausgabe)-Größen nicht deterministisch sind, können unterschiedliche Größen oder Seiten von Speicher, die unkomprimiert sind, zwischen den Datenspeicher- und Speichervorrichtungen ein/ausgelagert werden. Infolgedessen können der E/A-Durchsatz und/oder die Latenzzeiten zum Übertragen gespeicherter Speicherdaten für den Auslagerungsspeicher die Leistung des virtuellen Speichersystems negativ beeinflussen.
  • Ferner kann die Leistung bestimmter Datenspeichervorrichtungen, wie rotationsgestützter Festplatten, eine starke Abhängigkeit von der Datenlokalität für den Speicherzugriff besitzen, um langwierige Plattenrotationen zu verringern. Die Datenlokalität kann jedoch während der Laufzeit unter Umständen nicht gewährleistet werden, da Clustercharakteristika für den Speicherzugriff bei unterschiedlichen Datenverarbeitungsaufgaben variieren. Somit kann das Speicher-Ein/Auslagern durch Paging-in/out zwischen der Speichervorrichtung und der Datenspeichervorrichtung zum Unterstützen generischer Datenverarbeitungsaufgaben die wahrgenommene Leistung des Speichersystems weiter herabsetzen.
  • Obwohl der Trend zum Übernehmen von immer größeren Größen tatsächlichen physischen Speichers dazu neigt, Leistungskosten beim Speicher-Ein/Auslagern zwischen Vorrichtungen abzuschwächen, können bestimmte Funktionsverbesserungen bei Datenverarbeitungssystemen ohne Änderung von Speichergrößen bereitgestellt werden. Zum Beispiel kann auf vorhandenen Geräten eine Unterstützung für höhere Bildschirmauflösung auf der Grundlage von im Wesentlichen derselben Speichergröße eingeführt werden. Eine lediglich zweifach höhere Bildschirmauflösung kann jedoch einer vierfachen Erhöhung bei Fensterpuffergrößen entsprechen. Infolgedessen kann ohne eine ausgleichende Erhöhung bei der physischen Speichergröße die Systemleistung für eine höhere Bildschirmauflösung herabgesetzt und sichtbar langsamer werden.
  • Daher sind herkömmliche Implementierungen virtueller Speichersysteme nicht in der Lage, Leistungsanforderungen zu unterstützen, die durch eingeschränkte physische Speichergrößen beschränkt sind.
  • Kurzdarstellung der Beschreibung
  • Ein dynamisch in einer Speichervorrichtung gepflegter komprimierter Speicherpool kann eine zusätzliche Unterstützungsschicht für einen virtuellen Speicher auf der Grundlage der mit einer Massendatenspeichervorrichtung gekoppelten Speichervorrichtung bereitstellen. Virtuelle Speicheradressen können in einen unkomprimierten Abschnitt der Speichervorrichtung, den komprimierten Speicherpool und/oder die Datenspeichervorrichtung gepaged oder zugeordnet werden. Der komprimierte Speicherpool kann innerhalb der Speichervorrichtung ohne eine Größenbeschränkung für den virtuellen Speicher wachsen und schrumpfen.
  • In einer Ausführungsform kann eine Speicherseite (z. B. eine Einheit eines Bereichs unkomprimierten Speichers) in eine komprimierte Speichereinheit (oder eine komprimierte Seite) im komprimierten Speicher komprimiert werden. Mehrere komprimierte Speichereinheiten können als ein Segment mit fester Größe im komprimierten Speicher zusammen verdichtet werden. Das Segment kann für eine effiziente Datenübertragung zwischen der Speichervorrichtung und der Massendatenspeichervorrichtung zum Ein/Auslagern von Segmenten komprimierter Speichereinheiten dimensioniert sein, um einen virtuellen Speicher-Pager zu unterstützen.
  • In einer weiteren Ausführungsform kann eine Speichervorrichtung einen dynamisch aktualisierten Abschnitt komprimierten Speichers für einen virtuellen Speicher einschließen. Die Speichervorrichtung kann einen unkomprimierten Speicherabschnitt separat vom komprimierten Speicherabschnitt einschließen. Der virtuelle Speicher kann in der Lage sein, dem komprimierten Speicherabschnitt eine Speicheradresse zuzuordnen. Eine im unkomprimierten Speicherabschnitt allozierte Speicherregion kann in den komprimierten Speicherabschnitt komprimiert werden. Infolgedessen kann die Speicherregion (z. B. nachdem sie komprimiert wurde) für eine zukünftige in der Speichervorrichtung angeforderte Allozierung verfügbar werden. Der komprimierte Speicherabschnitt kann aktualisiert werden, um die komprimierte Speicherregion zu speichern. Die komprimierte Speicherregion kann als Reaktion auf eine Anfrage, auf Daten in der komprimierten Speicherregion zuzugreifen, in den unkomprimierten Abschnitt in der Speichervorrichtung zurück dekomprimiert werden.
  • In einer weiteren Ausführungsform wird ein virtueller Speicher auf der Grundlage einer Speichervorrichtung bereitgestellt. Die Speichervorrichtung kann dynamisch in einen unkomprimierten Speicherabschnitt und einen komprimierten Speicherabschnitt, wie DRAM (flüchtiger Speicher), partitioniert werden. Im unkomprimierten Speicherabschnitt können Arbeitsdaten gespeichert werden, die über einen mit der Speichervorrichtung gekoppelten Prozessor verarbeitet werden. Eine oder mehrere Seiten des unkomprimierten Speicherabschnitts können in einen oder mehrere komprimierte Speichereinheiten variierender Größe im komprimierten Speicherabschnitt komprimiert werden. Die Komprimierung kann einen verfügbaren Speicherplatz im unkomprimierten Speicherabschnitt erhöhen. Die komprimierten Speichereinheiten können vom komprimierten Speicherabschnitt in den unkomprimierten Speicherabschnitt zurück dekomprimiert werden, zum Beispiel als Reaktion auf einen Seitenfehler für eine Zugriffsanfrage auf Daten in einer der komprimierten Speichereinheiten. Mindestens eine der komprimierten Speichereinheiten variierender Größe kann aus dem komprimierten Speicherabschnitt zur Massendatenspeichervorrichtung ausgelagert werden, um den verfügbaren Speicherplatz im unkomprimierten Speicherabschnitt zu erhöhen.
  • In einer weiteren Ausführungsform können eine oder mehrere Speicherseiten eines unkomprimierten Abschnitts einer Speichervorrichtung in eine oder mehrere komprimierte Speichereinheiten variierender Größe in einem komprimierten Abschnitt der Speichervorrichtung komprimiert werden. Eine Massendatenspeichervorrichtung (wie eine magnetische Festplatte (HDD) oder eine Verbunddatenspeichervorrichtung, die aus Sicht eines Dateisystems als ein einziger logischer Datenträger behandelt wird, der einen HDD und Flash-Speicher einschließt) kann mit der Speichervorrichtung gekoppelt sein. Die komprimierten Speichereinheiten variierender Größe können in ein Segment im komprimierten Abschnitt der Speichervorrichtung verdichtet werden. Die eine komprimierte Speichereinheit kann als Reaktion auf eine Zugriffsanfrage auf eine der komprimierten Speichereinheiten vom komprimierten Abschnitt in den unkomprimierten Abschnitt der Speichervorrichtung dekomprimiert werden. Das Segment der komprimierten Speichereinheiten kann zur Massendatenspeichervorrichtung ausgelagert werden, um einen verfügbaren Speicherplatz in der Speichervorrichtung zu erhöhen.
  • Weitere Merkmale der vorliegenden Erfindung werden anhand der begleitenden Zeichnungen und anhand der detaillierten Beschreibung ersichtlich, die folgt.
  • Kurze Beschreibung der Zeichnungen
  • Die vorliegende Erfindung wird in beispielhafter und nicht einschränkender Weise in den Figuren der begleitenden Zeichnungen veranschaulicht, in denen gleiche Bezüge gleiche Elemente angeben, und in denen:
  • 1 ein Blockdiagramm zeigt, das eine Ausführungsform eines virtuellen Speichersystems auf der Grundlage eines komprimierten und/oder verdichteten Speichers veranschaulicht;
  • 2 ein Ablaufdiagramm zeigt, das eine Ausführungsform des Komprimierens und Dekomprimierens von Speicher für einen virtuellen Speicher veranschaulicht;
  • 3 ein Ablaufdiagramm zeigt, das eine Ausführungsform eines Prozesses zum Ein- und Auslagern komprimierter Speicherseiten für einen virtuellen Speicher veranschaulicht;
  • 4 ein Ablaufdiagramm zeigt, das eine Ausführungsform eines Prozesses zum Ein- und Auslagern eines verdichteten Segments komprimierten Speichers für einen virtuellen Speicher veranschaulicht;
  • 5 ein Beispiel eines Datenverarbeitungssystems, wie ein Computersystem, veranschaulicht, das in Verbindung mit den hierin beschriebenen Ausführungsformen verwendet werden kann.
  • Detaillierte Beschreibung
  • Verfahren und Einrichtungen für komprimierten und verdichteten virtuellen Speicher werden hierin beschrieben. In der folgenden Beschreibung werden zahlreiche spezifische Details dargelegt, um eine sorgfältige Erklärung von Ausführungsformen der vorliegenden Erfindung bereitzustellen. Es wird jedoch für den Fachmann ersichtlich sein, dass Ausführungsformen der vorliegenden Erfindung ohne diese spezifischen Details ausgeführt werden können. In anderen Fällen wurden allgemein bekannte Komponenten, Strukturen und Techniken nicht im Detail gezeigt, um das Verständnis dieser Beschreibung nicht zu erschweren.
  • Eine Bezugnahme auf „eine Ausführungsform” in dieser Beschreibung bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder ein bestimmtes Charakteristikum, das oder die in Verbindung mit der Ausführungsform beschrieben ist, in mindestens einer Ausführungsform der Erfindung eingeschlossen sein kann. Das Auftreten der Redewendung „in einer Ausführungsform” an verschiedenen Stellen in der Beschreibung bezieht sich nicht notwendigerweise immer auf dieselbe Ausführungsform.
  • Die in den Figuren, die folgen, abgebildeten Prozesse werden durch eine Verarbeitungslogik durchgeführt, die Hardware (z. B. Schaltlogik, dedizierte Logik usw.), Software (wie sie auf einem universellen Computersystem oder einer dedizierten Maschine ausgeführt wird) oder eine Kombination von beidem umfasst. Obwohl die Prozesse nachstehend hinsichtlich mancher sequenzieller Operationen beschrieben sind, sollte ersichtlich sein, dass manche der beschriebenen Operationen in anderer Reihenfolge durchgeführt werden können. Darüber hinaus können manche Operationen parallel anstatt sequenziell durchgeführt werden.
  • In einer Ausführungsform kann ein Komprimierungspool (oder Pool komprimierter Speichereinheiten) in einer Speichervorrichtung unter Verwendung protokollbasierter Datenstrukturen (oder Protokollstrukturen) dynamisch verwaltet werden. Daten können in einer gepackten und/oder komprimierten Weise in den Komprimierungspool gegeben werden, um den erforderlichen Speicherplatz zum Speichern der Daten zu schrumpfen. Wann gespeicherte Daten zwischen dem Komprimierungspool und einer Massendatenspeichervorrichtung (oder nichtflüchtigen Datenspeichervorrichtung) aus- und einzulagern sind, kann in einem selbständigen Verwaltungssystem für komprimierten Speicher automatisch ermittelt werden, um zum Beispiel ein virtuelles Speichersystem oder anderes anwendbares Speichernutzungsmodul vom zugrundeliegenden Komprimierungspool zu isolieren.
  • Speicherdaten können komprimiert werden, um die Auslagerungsdateigröße zum Beispiel für die Datenübertragungseffizienz zwischen einer Speichervorrichtung und einer Auslagerungsvorrichtung wie einer Massendatenspeichereinheit zu verringern. Zusätzlich können Speicherdaten auf der Grundlage effizienter Speicherkomprimierungsschemata mit Komprimierungs-/Dekomprimierungskosten (z. B. in mehreren Mikrosekunden), die erheblich (z. B. mehrere Größenordnungen) geringer sind als eine herkömmliche Plattenauslagerungsgeschwindigkeit bei einer Auslagerungsvorrichtung, in einen Komprimierungspool komprimiert werden. Der Komprimierungspool kann innerhalb der Speichervorrichtung an Größe zunehmen, wenn dies zum Verringern erforderlicher Auslagerungsoperationen bei der Auslagerungsvorrichtung erforderlich ist.
  • Zum Beispiel kann der Komprimierungspool bis hin zur Größe des verfügbaren physischen Speicherplatzes wachsen und arbeiten, solange genügend Speicherplatz übrig ist (z. B. eine kleine Anzahl von Speicherseiten), um Speicherkomprimierungs-/dekomprimierungsoperationen durchzuführen, um Daten in den Komprimierungspool oder aus diesem heraus zu verschieben. Ein Arbeitssatz kann so gepflegt werden, dass er in den unkomprimierten Speicherabschnitt mit variierenden Größen passt, wenn der Komprimierungspool wächst/schrumpft. Wenn der Arbeitssatz (z. B. für einen Satz von Live-Aufgaben für Datenoperationen eines Prozessors allozierter Speicher) in den Komprimierungspool (oder komprimierten Speicherabschnitt) läuft, können Speicherseiten (z. B. auf der Grundlage einer bestimmten zuvor festgelegten Rate) aus dem komprimierten Abschnitt gezogen werden, um als Ersatz zwischen dem komprmierten und unkomprimierten Speicherabschnitten (oder -schichten) zu dienen, um den Arbeitssatz zu unterstützen. Anfragen oder Anforderungen nach zusätzlichem zu allozierendem Speicherplatz, können erfasst werden, um anzugeben, dass der vorhandene Arbeitssatz übergelaufen ist. Der Arbeitssatz kann über eine LRU(least recently used – am längsten nicht verwendet)-Ordnungsstrategie erweitert werden, um auszuwählen, welche Speicherseiten in den Komprimierungspool zu komprimieren sind.
  • In einer Ausführungsform können während der Laufzeit mehrere Komprimierungs/Dekomprimierungsschemata oder -mechanismen dynamisch ausgewählt werden. Jedes Schema kann auf einem oder mehreren Komprimierungs/Dekomprimierungs-Algorithmen beruhen. Die Auswahl kann auf der Grundlage eines Hinweises oder einer Heuristik erfolgen, die durch den Ersteller (z. B. eine Anwendung oder ein Prozess, der eine Allozierung initiiert oder anfragt) des Speichers bereitgestellt wird, oder sie könnte ermittelt werden, indem in jeder Speicherseite, die dabei ist, komprimiert zu werden, nach einem bestimmten Datenmuster gesucht wird. In einer Ausführungsform kann eines der Komprimierungs/Dekomprimierungsschemata als Standard bezeichnet werden, der auf eine Mehrheit allozierter Speicher anwendbar ist (z. B. ohne einen durch entsprechende Speicherersteller bereitgestellten Hinweis). Dieses Schema würde auch als Standardschema verwendet, wenn ein Musterabgleichmechanismus im Spiel wäre und kein Treffer erfolgte. Ein Kandidat, der von einem spezialisierten Komprimierungs/Dekomprimierungsschema profitieren könnte (z. B. eine effizientere Komprimierung erfahren würde) ist der Speicher, der zur Nutzung durch Grafikoperationen (z. B. über eine GPU) erstellt wurde.
  • In manchen Ausführungsformen können Verdichtungsoperationen im Komprimierungspool durchgeführt werden, um Protokollstrukturen in den komprimierten Speichersegmenten zu pflegen. Zum Beispiel können komprimierte Dateneinheiten innerhalb eines Komprimierungsspeichersegments (z. B. für geringere Verdichtung) und/oder über mehrere Komprimierungsspeichersegmente hinweg (z. B. für eine größere Verdichtung) zusammengepackt werden. Verdichtungsoperationen können auf Anfragen hin und/oder automatisch initiiert werden, wenn komprimierte Daten aus dem komprimierten Speicher entfernt oder darin gespeichert werden. Protokollstrukturen können effiziente Eingabe/Ausgabe-Operationen (z. B. Lese/Schreib-Operationen) auf dem Komprimierungspool innerhalb einer Speichervorrichtung und/oder zwischen Kopplungsdatenspeichereinheiten ermöglichen.
  • Gemäß einer Ausführungsform können im Falle, dass komprimierte Daten aus dem Komprimierungspool gezogen werden, Löcher (d. h. leerer Speicherplatz, der zuvor durch die komprimierten Daten belegt war) erzeugt werden. Infolgedessen kann die Nutzung des Komprimierungspools immer weniger effizient werden, wenn diese Löcher nicht entfernt werden. Kleinere Verdichtungsoperationen können durchgeführt werden, um komprimierte Daten innerhalb eines Speichersegments (z. B. einer Protokollstruktur) im Komprimierungspool zu verschieben, um die Anzahl von Löchern im Speichersegment zu verringern. In einer Ausführungsform können kleinere Verdichtungsoperationen durchgeführt werden, um eine zusätzliche Allozierung von Speicherseiten in der Speichervorrichtung zu ermöglichen. Kleinere Verdichtungsoperationen können kostenunerhebliche Verarbeitungsressourcen darstellen, um eine merkliche Verbesserung bei den Datenverarbeitungs-Latenzzeiten zu verursachen.
  • In einer Ausführungsform können zusätzlich zu kleineren Verdichtungsoperationen größere Verdichtungsoperationen durchgeführt werden, um komprimierte Daten zwischen unterschiedlichen Speichersegmenten des Komprimierungspools zu verschieben, wenn zum Beispiel eine Notwendigkeit besteht, komprimierte Daten auf eine Auslagerungsvorrichtung auszulagern. Die Anzahl von im Komprimierungspool benötigten Speichersegmenten kann infolge der größeren Verdichtungsoperationen verringert werden. Nicht benutzter Speicherplatz in Speichersegmenten des Komprimierungspools können gestrafft (oder verringert) werden, um zum Beispiel ein Ausschreiben großer Blöcke komprimierter Speicherseiten auf eine Auslagerungsvorrichtung zu ermöglichen. Infolgedessen kann die verfügbare E/A-Bandbreite (z. B. zwischen der Speichervorrichtung und der Auslagerungsvorrichtung) maximiert werden. Ferner kann der Umfang der Abnutzung gegenüber der Auslagerungsvorrichtung (wie einer SSD-Vorrichtung) minimiert werden.
  • In einer Ausführungsform werden Verdichtungsoperationen auf der Grundlage eines Verdichtungsmodells durchgeführt, das ermittelt, wann kleinere Verdichtungsoperationen, größere Verdichtungsoperationen oder andere anwendbare Datenverschiebungsoperationen durchzuführen sind, um eine effiziente Datenspeichernutzung im Komprimierungspool aufrechtzuerhalten. Kleinere Verdichtungsoperationen können durchgeführt werden, um komprimierte Daten innerhalb eines einzelnen Speichersegments zu mischen, um den verfügbaren Speicherplatz zu erhöhen oder freizugeben. Größere Verdichtungsoperationen können durchgeführt werden, um komprimierte Daten zwischen mehreren Speichersegmenten zu verschieben, um zum Beispiel eine Bereitschaft zum Auslagern von Speichersegmenten in voller Größe vom Komprimierungspool zu einer Auslagerungsvorrichtung sicherzustellen. Ein Speichersegment kann in voller Größe sein, wenn es im Wesentlichen frei von Löchern ist oder eine Speichernutzungsrate größer als zum Beispiel ein zuvor festgelegter Schwellenwert (z. B. 99%) besitzt.
  • Somit können protokollstrukturierte Daten (oder ein protokollstrukturiertes Modell) gepflegt werden, wenn E/A-Operationen, die aus dem Komprimierungspool auf Auslagerungsdateien (z. B. in einer Auslagerungsvorrichtung) schreiben, zum Beispiel auf der Grundlage eines Datenblocks (z. B. ein Komprimierungssegment) derselben Größe wie 256 KB, 512 KB, 1024 KB oder einer anderen geeigneten Größe, durchgeführt werden. In einer Ausführungsform kann der Datenblock, der während der E/A-Operation zum Speicherauslagern übertragen wird, einer Sammlung von Komprimierungsspeicherseiten gemäß der E/A-Schnittstelle bei der Auslagerungsvorrichtung (z. B. zu einer E/A-Bus-Puffergröße passend) entsprechen, um die E/A-Leistung zu verbessern. Folglich können die Effizienz oder der Durchsatz in E/A-Operationen zwischen dem Komprimierungspool und der Auslagerungsvorrichtung auf der Grundlage der Komprimierung der übertragenen Daten und der passenden Übertragungsdaten-Blockgröße für die Auslagerungsvorrichtung verbessert werden.
  • In einer Ausführungsform können protokollstrukturierte Daten im Komprimierungspool eine geordnete Liste von Speichersegmenten einschließen. Neu komprimierte Daten können im Kopfsegment (oder Speicherkopf) der geordneten Segmentliste festgehalten werden. Eine Arbeitssatzanalyse für ein virtuelles Speichersystem kann durchgeführt werden, um zu ermitteln, welcher Abschnitt des Komprimierungspools auf der Grundlage der geordneten Segmentliste im Komprimierungspool auszulagern ist. Je weiter zum Beispiel ein Segment in der geordneten Liste vom Kopfsegment entfernt ist, desto wahrscheinlicher sind unter Umständen in dem Segment gespeicherte Daten nicht mehr von Interesse (oder unmittelbarem Bedarf) für den Arbeitssatz. Infolgedessen kann das Endsegment (oder vom Speicherkopf ferne Ende) zum Auslagern auf eine Auslagerungsvorrichtung ausgewählt werden. Komprimierte Daten können auf der Grundlage verdichteter Speichersegmente vom Komprimierungspool von der/zur Auslagerungsvorrichtung hinein/heraus gebracht werden.
  • Eine Notwendigkeit, Speicherauslagerungsoperationen durchzuführen, kann zum Beispiel identifiziert werden, um der Größe des Komprimierungspools eine Obergrenze zu setzen. Die Größe (oder Form) des Komprimierungspools kann sich auf der Grundlage von Laufzeit-Speicherzugriffsmustern dynamisch ändern. In einer Ausführungsform können die Verarbeitungskosten von Verdichtungs/Komprimierungs/Dekomprimierungsoperationen gegenüber Speicherauslagerungsoperationen auf der Grundlage eines Kostenmodells (z. B. von Energieverbrauchskosten) dynamisch überwacht (oder abgeschätzt) werden, um zu ermitteln, wann Auslagerungsoperationen durchzuführen sind.
  • Zum Beispiel kann die Rate von Komprimierungs/Dekompromierungs- und/oder Verdichtungsoperationen der Energie (oder dem Verarbeitungsressourcenverbrauch) entsprechen, um den Funktionszustand des Komprimierungspools (oder der Komprimierungsschicht, dem Komprimierungsabschnitt) in der Speichervorrichtung anzugeben. Wenn diese Rate einen bestimmten Schwellenwert überschreitet, können Auslagerungsoperationen durchgeführt oder ausgelöst werden, um komprimierte Daten aus dem Komprimierungspool zu einer Auslagerungsvorrichtung zu pagen. In einer Ausführungsform können Komprimierungs/Dekomprimierungs- und/oder Verdichtungsoperationen, verglichen mit Daten-E/A-Operationen bei Auslagerungs-Operationen, einen Bruchteil der Verarbeitungskosten mit sich bringen. Energiekostenfunktionen können bewertet werten, um es dem Komprimierungspool zu ermöglichen, zu wachsen bevor eine Notwendigkeit zum Paging-Out komprimierter Daten zur Auslagerungsvorrichtung entsteht. Die Kostenfunktion kann zum Beispiel von der Form des Komprimierungspools, einer konfigurierten Toleranz bei durch Verdichtungs/Komprimierungs/Dekompromierungsoperationen verursachten Verarbeitungslatenzzeiten oder anderen anwendbaren Faktoren abhängen, um den Arbeitssatz in der Speichervorrichtung zu pflegen.
  • Der Komprimierungspool in einer Speichervorrichtung kann Energieeinsparungen durch Verringern der erforderlichen Anzahl von Daten-Paging-Vorgängen (z. B. Auslagerungsoperationen) zu/von einer Auslagerungsvorrichtung ermöglichen. Zum Beispiel ist eine geringere Anzahl von Daten-Paging- oder Datei-Paging-Vorgängen erforderlich, wenn Daten komprimiert werden. Ferner kann die Effizienz oder Effektivität bei jeder Daten-Paging- oder Auslagerungsoperation verbessert werden, wenn verdichtete Segmente die komprimierten Daten über protokollbasierte Strukturen tragen.
  • In manchen Ausführungsformen können Listen von protokollstrukturgestützten Speichersegmenten im Komprimierungspool entsprechend einem Alter der in jedem Segment gespeicherten komprimierten Daten geordnet werden. Das Alter der komprimierten Daten kann angeben, wie früh die Daten vom Arbeitssatz komprimiert wurden oder für den Arbeitssatz auf sie zugegriffen wurde. Auslagerungsoperationen können Speichersegmente aus dem Arbeitssatz ausschreiben, die überaltert sind (z. B. die Endabschnitte der geordneten Segmentliste). Infolgedessen können komprimierte Daten, die zum Auslagern aus dem Komprimierungspool zu einer Auslagerungsvorrichtung (z. B. eine Platte) ausgewählt wurden, in einem verdichteten Speichersegment gespeichert werden, das schon eine Weile nicht mehr verwendet wurde. Auslagerungsoperationen können zum Beispiel durchgeführt werden, um Platz für ein Wachstum des Arbeitssatzes zu schaffen oder dieses aufnehmen. Zwischenzeitlich können periodische Datenschreibvorgänge zur Auslagerungsvorrichtung oder Plattenvorrichtung zu Wartungszwecken (z. B. Datei- oder Datensicherung/Synchronisierung) mit erheblichen Energieeinsparungen vermieden oder verringert werden.
  • Der Komprimierungspool kann Mechanismen für schnelle Operationen für ein Eintreten in einen Systemruhezustand oder ein Aufwachen bereitstellen. Zum Beispiel können der komprimierte Abschnitt und der unkomprimierte Abschnitt der Speichervorrichtung für ein System separat in einer nichtflüchtigen Datenspeichervorrichtung (z. B. einer Platte) gesichert (oder gespeichert) werden. Der komprimierte Abschnitt (oder Komprimierungspool) kann über verdichtete Speichersegmente auf die nichtflüchtige Datenspeichervorrichtung übertragen (oder gepusht) werden. Der unkomprimierte Speicherabschnitt (der z. B. einen aktuellen Arbeitssatz einschließt) kann zusammen mit speziellen Kennzeichnungen in den Komprimierungspool komprimiert werden, um als verdichtete Speichersegmente in die nichtflüchtige Datenspeichervorrichtung übertragen zu werden. Zum Beispiel können Anwendungen als komprimierte/verdichtete Speichersegmente in den Komprimierungspool ausgesetzt werden.
  • Während des Aufwachens des Systems können die speziell gekennzeichneten komprimierten Speichersegmente, die dem unkomprimierten Abschnitt der Speichervorrichtung entsprechen, von der nichtflüchtigen Datenspeichervorrichtung abgerufen (oder zurückgezogen) werden, um die Speichervorrichtung mit dem vorherigen Arbeitssatz (oder dem „heißen” Arbeitssatz) zu bestücken. Zum Beispiel können ausgesetzte Anwendungen wieder aktiviert oder im unkomprimierten Abschnitt der Speichervorrichtung aus den speziell gekennzeichneten komprimierten Speichersegmenten wiederhergestellt werden. Anstatt beliebige (z. B. zuvor in entweder dem komprimierten oder unkomprimierten Speicherabschnitt gespeicherte) Speicherseiten abzurufen, die der wiederherzustellenden Anwendung zugeordnet sind, kann das System mit wertvollen Informationen „vorgeheizt” (oder für ein beschleunigtes Aufwachen „vorgewärmt”) werden, die zuvor im unkomprimierten Speicherabschnitt für die Anwendung gespeichert waren, bevor diejenigen Speicherseiten abgerufen werden, die zuvor im komprimierten Pool gespeichert waren.
  • 1 zeigt ein Blockdiagramm, das eine Ausführungsform eines virtuellen Speichersystems auf der Grundlage eines komprimierten und/oder verdichteten Speichers veranschaulicht. Zum Beispiel kann das System 100 eine Betriebsumgebung 101 einschließen, die in einer Speichervorrichtung einer Datenverarbeitungsvorrichtung, wie einer Mobilvorrichtung, einem Desktop-Computer oder einem Server usw., beherbergt ist. Die Speichervorrichtung kann zum Beispiel einen Speicher mit wahlfreiem Zugriff (random access memory (RAM)) zum Unterstützen von Datenverarbeitung mindestens eines Prozessors in der Verarbeitungsvorrichtung umfassen. Ein komprimierter Speicher (oder Komprimierungspool) 117 kann innerhalb der Speichervorrichtung dynamisch partitioniert (oder gepflegt) werden. Infolgedessen kann der verfügbare Speicherplatz in der Speichervorrichtung zum Unterstützen von Operationen der Betriebsumgebung 101, die auf dem unkomprimierten Abschnitt der Speichervorrichtung beruhen kann, geringer sein als der durch die Speichervorrichtung bereitgestellte Gesamtspeicherplatz. In bestimmten Ausführungsformen können mehrere Prozessoren, wie CPUs, GPUs oder andere anwendbare Verarbeitungseinheiten, parallel auf den komprimierten Speicher 117 zugreifen.
  • In einer Ausführungsform kann ein Verwaltungsmodul für virtuellen Speicher 103 vielfältige Formen von Computerdatenspeicher wie RAM und Massendatenspeichervorrichtungen 121 virtualisieren, um es einem Programm oder Prozess, wie einer Anwendung 123, das oder der in der Betriebsumgebung 101 ausgeführt wird, zu ermöglichen, auf Speicheradressen (oder virtuelle Speicheradressen) so zuzugreifen, als ob es nur eine einzige Art von Speicher gibt, namentlich virtuellen Speicher, der sich wie Lese/Schreib-Speicher in RAM verhalten kann, auf den direkt zugegriffen werden kann. Zum Beispiel kann das Verwaltungsmodul für virtuellen Speicher 103 eine Zuordnung zwischen virtuellen Speicheradressen (oder einer virtuellen Speicheradresse) und tatsächlichen physischen Datenspeicherorten, wie physischen Speicherseiten innerhalb des RAM (oder der Speichervorrichtung), und Datenspeicherreferenzen in den Massenspeichervorrichtungen 121 pflegen.
  • Das Verwaltungsmodul für virtuellen Speicher 103 kann Daten in die Speichervorrichtung (z. B. RAM) über ein Pager-Schicht-Modul 105 hinein und aus ihr heraus verschieben. Zum Beispiel können Daten (z. B. anonyme Daten oder schmutzige Daten, die nicht durch eine Plattendatei in den Massenspeichervorrichtungen 121 gesichert sind) von physischen Speicherseiten in der Speichervorrichtung ausgelagert werden, um als Reaktion auf zum Beispiel Speicherallozierungsanfragen von Anwendungen und/oder andere Datenverarbeitungsanforderungen hin Speicherplatz in den physischen Speicherseiten freizugeben. Saubere Daten (oder Speicherdaten), die von einer Plattendatei in den Massenspeichervorrichtungen 121 verfügbar sein können, können aus der Speichervorrichtung ausgepaget (oder gelöscht) werden, um den verfügbaren Speicherplatz zu erhöhen. Wenn eine Anwendung, wie die Anwendung 123, beendet wird, kann für die Anwendung allozierter Speicherplatz (z. B. Stapel, Heap-Speicher usw.) für eine zukünftige Allozierung verfügbar werden.
  • In einer Ausführungsform kann das Verwaltungsmodul für virtuellen Speicher 103 Anfragen zum Ein/Auslagern von Speicher an das Pager-Schicht-Modul 105 senden, um virtuelle Speicheradressen innerhalb des unkomprimierten Abschnitts der Speichervorrichtung zu verwalten. Das Pager-Schicht-Modul 105 kann mit den Massendatenspeichervorrichtungen 121 und/oder einem Verwaltungsmodul für komprimierten Speicher 107 über eine Schnittstelle verbunden sein, um Speicherseiten aus oder zum unkomprimierten Abschnitt der Speichervorrichtung zu verschieben. Infolgedessen kann das Verwaltungsmodul für virtuellen Speicher 103 eine virtuelle Speicheradresse außerhalb des unkomprimierten Abschnitts der Speichervorrichtung zuordnen, ohne zu unterscheiden (oder Wissen darüber), ob die virtuelle Speicheradresse einem Speicherort innerhalb des komprimierten Speichers 117 oder den Massendatenspeichervorrichtungen 121 entspricht. Mit anderen Worten muss das Verwaltungsmodul für virtuellen Speicher 103 von der Anwesenheit des komprimierten Speichers 117 nichts wissen.
  • Das Pager-Schicht-Modul 105 kann auf mehreren parallelen Threads (oder Eingabe/Ausgabe-Threads) beruhen, um Speicher-Paging-Operationen durchzuführen. Zum Beispiel kann das Pager-Schicht-Modul 105 einen Datei-Pager einschließen, um unkomprimierte Speicherseiten zu verwalten, in denen saubere Daten von Plattendateien der Massendatenspeichervorrichtungen 121 gespeichert sind. Das Pager-Schicht-Modul 105 kann einen Speicher-Pager (z. B. als einen oder mehrere Threads) einschließen, der mit dem Verwaltungsmodul für komprimierten Speicher 107 über eine Schnittstelle verbunden ist, um unkomprimierte Speicherseiten über den komprimierten Speicher 117 zum/vom unkomprimierten Abschnitt der Speichervorrichtung zu verschieben.
  • In einer Ausführungsform kann der komprimierte Speicher 117 eine oder mehrere Protokollstrukturen (z. B. auf der Grundlage eines Arrays oder einer Warteschlange mit einem Kopf und einem Ende) einschließen, um komprimierte Speichereinheiten zu speichern. Jede Protokollstruktur kann ein oder mehrere Segmente mit für das Speichern komprimierter Speichereinheiten allozierten Puffer einschließen. Jedes Segment kann eine gemeinsame Größe (z. B. 256 KB, 512 KB, 1024 KB oder andere anwendbare Größen) mit Speicherslots besitzen, um eine geordnete Liste komprimierter Speichereinheiten (oder komprimierter Seiten) zu speichern. Jede komprimierte Einheit kann vielleicht von einer Speicherseite im unkomprimierten Abschnitt einer Speichervorrichtung, z. B. über ein Komprimierer/Dekomprimierer-Modul 111, zum Kopf einer Protokollstruktur komprimiert werden. In manchen Ausführungsformen kann jede Protokollstruktur über separate Threads gleichzeitig und/oder unabhängig über das Verwaltungsmodul für komprimierten Speicher 107 aktualisiert oder betrieben werden.
  • Eine komprimierte Speichereinheit kann in einer Speicherlücke (oder Position) in einem Segment einer Protokollstruktur gespeichert werden. Das Komprimierermodul 111 kann neu komprimierte Speicherseiten in einer Kopflücke einer Protokollstruktur festhalten oder speichern und die (zur aktuellen Kopflücke) nächste Lücke als die Kopflücke der Protokollstruktur für zukünftige Komprimierung aktualisieren. Das Verwaltungsmodul für komprimierten Speicher 107 kann ein oder mehrere neue Segmente erzeugen (oder aus dem unkomprimierten Abschnitt einer Speichervorrichtung allozieren), wenn das aktuelle Segment (oder Kopfsegment in der Protokollstruktur) voll (oder im Wesentlichen voll) wird. Eine Zuordnung zwischen einer Speicherseite und ihrer entsprechenden komprimierten Speichereinheit in einer Protokollstruktur kann für den komprimierten Speicher 117 zum Beispiel auf der Grundlage von Kennungen gepflegt werden, die eine Protokollstruktur, ein Segment innerhalb der angegebenen Protokollstruktur und eine Speicherlücke innerhalb des angegebenen Segments angeben, in dem die komprimierte Speichereinheit gespeichert ist.
  • In einer Ausführungsform kann das Komprimierer/Dekomprimierer-Modul 111 Protokollstrukturen im komprimierten Speicher 117 verwalten. Jede Protokollstruktur kann einem Speicherkopf zugeordnet sein, der auf eine Kopflücke in einem aktuellen Segment, z. B. ein Kopfsegment in einem Array von Segmenten in der Protokollstruktur, zeigen kann. Mehrere Threads können dem Komprimierer/Dekomprimierer-Modul 111 zugeordnet sein, um Speicherkomprimier/dekomprimier-Operationen unter Verwendung separater Protokollstrukturen parallel durchzuführen. Das Komprimierer/Dekomprimierer-Modul 111 kann Komprimieroperationen gemäß einer Anfragewarteschlange durchführen, in der zu komprimierende Speicherseiten zum Beispiel wie über das Pager-Schicht-Modul 105 geplant gespeichert sind. Wenn eine Speicherseite komprimiert ist, kann sie weniger als die Größe einer Seite physischen Speichers erfordern, um in einer Speicherlücke innerhalb eines Segments in einer Protokollstruktur gespeichert zu werden.
  • In einer Ausführungsform können Speicherslots dem Kopf einer entsprechenden Protokollstruktur folgend aufgefüllt werden, wenn mehr Speicherseiten in den komprimierten Speicher 117 komprimiert werden. Alternativ dazu können manche Segmente oder Lücken in den Segmenten in der entsprechenden Protokollstruktur leer oder für eine Allozierung verfügbar werden, wenn die gespeicherten komprimierten Speichereinheiten freigegeben werden. Wenn zum Beispiel eine Anwendung oder ein Prozess beendet werden, können für die Anwendung unterhaltene Objekte oder Strukturen entfernt werden, und physische Speicherseiten oder komprimierte Speichereinheiten im Besitz der Anwendung können für eine zukünftige Verwendung (d. h. zur Allozierung verfügbar) freigegeben werden. Alternativ dazu können Segmente infolge eines Auslagerns, Dekomprimierens oder Verdichtens leer werden.
  • Das Komprimierer/Dekomprimierer-Modul 111 kann komprimierte Speichereinheiten aus dem komprimierten Speicher 117 zum unkomprimierten Abschnitt einer Speichervorrichtung, zum Beispiel als Reaktion auf im Verwaltungsmodul für virtuellen Speicher 103 auftretende Seitenfehler, herausziehen oder dekomprimieren. Das Komprimierer/Dekomprimierer-Modul 111 kann Komprimier- und Dekomprimieroperationen auf unterschiedlichen Segmenten des komprimierten Speichers 117 zum Beispiel über separate Threads gleichzeitig durchführen.
  • Das Verwaltungsmodul für komprimierten Speicher 107 kann ein Ein/Auslagerungsmodul 113 einschließen, um Segmente komprimierter Speichereinheiten über ein Schnittstellenmodul 119 zwischen dem komprimierten Speicher 117 und der Massendatenspeichereinheit 121 zu verschieben. Zum Beispiel können Segmente von komprimierten Speichereinheiten aus dem komprimierten Speicher 117 ausgelagert werden, um Platz für ein Aufnehmen neu komprimierter Speicherseiten zu schaffen und/oder um einen Zustand der Speichervorrichtung für eine zukünftige Wiederherstellung während eines Systemruhezustandsprozesses usw. zu speichern. Alternativ dazu kann ein Segment komprimierter Speichereinheiten in den komprimierten Speicher 117 eingelagert werden, weil Seitenfehler im Verwaltungsmodul für virtuellen Speicher 103 aufgetreten sind, um auf Daten in einem oder mehreren des Segments komprimierter Speichereinheiten zuzugreifen.
  • In einer Ausführungsform können ein oder mehrere Threads für das Ein/Auslagerungsmodul 113 ausgeführt werden. Ein Ein/Auslagerungs-Thread kann gemäß einem zugewiesenen Plan oder auf Anfragen reagierend aufwachen. Zum Beispiel kann das Pager-Schicht-Modul 105 Anfragen zum Auflösen von Seitenfehlern ausgeben. Ein Verwaltungsmodul für die Speichernutzung 115 kann Anfragen zum Unterhalten von genügend verfügbarem Speicherplatz in der Speichervorrichtung senden. Gemäß einer Ausführungsform kann ein Ein/Auslagerungs-Thread aufwachen, um den aktuellen Zustand der Speichervorrichtung zu untersuchen, um zu ermitteln, wie viele Segmente unkomprimierter Speichereinheiten aus dem komprimierten Speicher 117 auszulagern sind. Der Ein/Auslagerungs-Thread kann ein am wenigsten benutztes (z. B. überaltertes oder altes) Segment auswählen, es bei Bedarf verdichten (z. B. über ein Verdichtungsmodul 109) und das ausgewählte Segment an die Massenspeichervorrichtungen 121 weiterleiten. Ein/Auslagerungsoperationen über das Ein/Auslagerungsmodul 113 können unabhängig und/oder gleichzeitig mit Komprimierungs/Dekomprimierungsoperationen über das Komprimimierer/Dekomprimierer-Modul 111 durchgeführt werden.
  • Das Verdichtungsmodul 109 kann Verdichtungsoperationen am komprimierten Speicher 117 durchführen, um die Speicherfragmentierung zu verringern und/oder Speicher-Ein/Auslagerungs-Effizienzen zu erhöhen. Zum Beispiel kann das Verdichtungsmodul 109 kleinere Verdichtungsoperationen durchführen, um komprimierte Speichereinheiten innerhalb eines Segments einer Protokollstruktur zu bewegen (oder zu verschieben), ohne die Ordnungsbeziehung zwischen den komprimierten Speichereinheiten zu verändern, um dazwischen übriggelassene leere Speicherslots zu schließen. Alternativ oder optional dazu kann das Verdichtungsmodul 109 größere Verdichtungsoperationen durchführen, um komprimierte Speichereinheiten über unterschiedliche Segmente hinweg zu verschieben, um bestimmte Segmente zu füllen und/oder zu leeren.
  • In einer Ausführungsform kann das Ein/Auslagerungsmodul 113 das Verdichtungsmodul 109 auffordern, Segmente für eine bessere Ein/Auslagerungsleistung zu verdichten (z. B. leere Lücken minimieren oder verringern). Zum Beispiel kann die Schnittstelle zwischen einer Speichervorrichtung und einer Auslagerungsvorrichtung auf einem Datenpuffer einer festen Größe für die Datenübertragung beruhen. Ein eng gepacktes Segment, das der Datenpuffergröße entspricht, kann die Übertragungseffizienz maximieren (z. B. die pro Zeiteinheit oder Taktzyklus übertragene Datenmenge)
  • Das Verwaltungsmodul für die Speichernutzung 115 kann ermitteln, wann komprimierte Speichereinheiten oder -seiten aus dem komprimierten Speicher 117 zu den Massenspeichervorrichtungen 121 zu schieben oder auszulagern sind. Das Verwaltungsmodul für die Speichernutzung kann den Nutzungsstatus der Speichervorrichtung überwachen, um Auslöser für das Ein/Auslagerungsmodul 113 bereitzustellen (oder eine Anfrage zu schicken), um Ein/Auslagerungsoperationen zu initiieren. Der Nutzungsstatus kann eine Energienutzung, Speicherleistung (z. B. Lese/Schreib-Geschwindigkeit), ein Speichernutzungsratenverhältnis, ein Verhältnis von komprimierten/unkomprimierten Partitionen in der Speichervorrichtung, eine Größe des komprimierten Speichers 117, eine Größe des Arbeitssatzes von Speicherseiten oder andere anwendbare Laufzeitmaßzahlen usw. einschließen.
  • 2 zeigt ein Ablaufdiagramm, das eine Ausführungsform des Komprimierens und Dekomprimierens von Speicher für einen virtuellen Speicher veranschaulicht. Zum Beispiel kann ein Prozess 200 durch manche Komponenten des Systems 100 von 1 durchgeführt werden. In Block 201 kann die Verarbeitungslogik des Prozesses 200 einen komprimierten Speicherabschnitt in einer Speichervorrichtung für einen virtuellen Speicher dynamisch aktualisieren, der einen oder mehrere Prozessoren unterstützt. Die Speichervorrichtung kann einen unkomprimierten Speicherabschnitt separat vom komprimierten Speicherabschnitt einschließen. Eine Speicheradresse im virtuellen Speicher kann in den komprimierten Abschnitt oder den unkomprimierten Abschnitt des Speichers zugeordnet werden.
  • In einer Ausführungsform kann der komprimierte Speicherabschnitt mit zusätzlichem Speicher aktualisiert werden, der vom unkomprimierten Speicherabschnitt alloziert wird. Eine im unkomprimierten Speicherabschnitt allozierte Speicherregion kann in den komprimierten Speicherabschnitt komprimiert werden, um es der Speicherregion zu ermöglichen, für eine zukünftige Allozierung im unkomprimierten Speicherabschnitt der Speichervorrichtung verfügbar zu sein. Der aktualisierte komprimierte Speicherabschnitt kann in der Lage sein, die komprimierte Speicherregion zu speichern. Die Größe des für die Allozierung im unkomprimierten Speicherabschnitt verfügbaren Speichers kann sich infolge der Komprimierung der Speicherregion erhöhen.
  • Gemäß einer Ausführungsform kann die komprimierte Speicherregion zum Beispiel als Reaktion auf ein Empfangen einer Anfrage, auf Daten in der komprimierten Speicherregion zuzugreifen, in den unkomprimierten Abschnitt in der Speichervorrichtung zurückkomprimiert werden. Die Verarbeitungslogik des Prozesses 200 kann ermitteln, ob die angefragten Daten derzeit im unkomprimierten Speicherbereich verfügbar sind. Wenn die angefragten Daten derzeit nicht im unkomprimierten Speicherabschnitt verfügbar sind, kann die Anfrage ein Seitenfehlerereignis verursachen, um die Aktualisierung auf dem komprimierten Speicherabschnitt auszulösen, z. B. die komprimierte Speicherregion zu dekomprimieren.
  • Der komprimierte Speicherabschnitt kann in mehreren (oder mindestens einer) komprimierten Speichereinheiten gespeichert werden. Jede komprimierte Speichereinheit kann einer separaten Speicherregion entsprechen, die aus dem unkomprimierten Speicherabschnitt komprimiert wurde. Separate komprimierte Speichereinheiten sind im komprimierten Speicherabschnitt (z. B. auf der Grundlage physischer Allozierung innerhalb der Speichervorrichtung) unter Umständen nicht aufeinanderfolgend gespeichert. In einer Ausführungsform kann der komprimierte Speicherabschnitt verdichtet werden, um zu veranlassen, dass diese separaten komprimierten Speichereinheiten aufeinanderfolgend im komprimierten Speicherabschnitt gespeichert werden.
  • Eine Speicherregion kann einer Speichereinheit einer festen Größe, wie einer Speicherseite, im unkomprimierten Abschnitt einer Speichervorrichtung entsprechen. Eine komprimierte Speichereinheit kann abhängig von zum Beispiel einer Menge oder Komprimierungseigenschaft von in die komprimierte Speichereinheit komprimiertem ursprünglichem Dateninhalt in der Größe variieren. In einer Ausführungsform kann eine komprimierte Speicherregion einer bestimmten komprimierten Speichereinheit im komprimierten Speicherabschnitt entsprechen.
  • In einer Ausführungsform kann eine bestimmte komprimierte Speichereinheit zwischen benachbarten komprimierten Speichereinheiten im komprimierten Speicherabschnitt gespeichert werden. Wenn die bestimmte komprimierte Speichereinheit aus dem komprimierten Speicherabschnitt entfernt wird, können die benachbarten Speichereinheiten z. B. über Verdichtungsoperationen verschoben werden, damit sie aufeinanderfolgend nebeneinander gespeichert sind. Die bestimmte komprimierte Speichereinheit kann aus dem komprimierten Speicherabschnitt zum Beispiel über eine Dekomprimierungsoperation, Ein/Auslagerungsoperationen oder andere anwendbare Speicherverwaltungsoperationen entfernt werden.
  • In manchen Ausführungsformen kann der komprimierte Speicherabschnitt mehrere Pools von Speicherslots einschließen. Jede komprimierte Speichereinheit kann in einer oder mehreren (gemäß der Allozierung physischen Speichers) aufeinanderfolgenden Speicherslots gespeichert werden. Jeder Pool kann einer separaten Partition der komprimierten Speichereinheiten entsprechen. In einer Ausführungsform kann jeder Pool einem separaten Thread zugeordnet sein, der z. B. zu einem in einem System unter Verwendung des Speichers ausgeführten Prozess gehört. Verdichtungsoperationen am komprimierten Speicherabschnitt können für jeden Pool über seinen zugeordneten Thread separat und asynchron durchgeführt werden.
  • Die Speichervorrichtung kann mit einer separaten Datenspeichervorrichtung gekoppelt sein, wie einer Festplatte, einem Flash-Speicher oder einer anderen anwendbaren nichtflüchtigen Datenspeichervorrichtung. Eine oder mehrere der komprimierten Speichereinheiten können vom komprimierten Speicherabschnitt auf die separate Massendatenspeichervorrichtung ausgelagert werden (um z. B. den komprimierten Speicherabschnitt zu aktualisieren). Infolgedessen kann die Größe des komprimierten Speicherabschnitts verringert werden, um die Größe des unkomprimierten Speicherabschnitts zu vergrößern. Alternativ dazu können die komprimierten Speichereinheiten für komprimierte Speicherregionen von der separaten Datenspeichervorrichtung auf den komprimierten Speicherabschnitt ausgelagert werden, wenn Daten in den komprimierten Speichereinheiten im komprimierten Speicherabschnitt bei einer Anfrage derzeit nicht verfügbar sind.
  • Die Verarbeitungslogik des Prozesses 200 kann komprimierte Speichereinheiten zwischen der Datenspeichervorrichtung (z. B. einer Auslagerungsvorrichtung) und der Speichervorrichtung über eine Schnittstelle mit einem Datenübertragungspuffer, wie einen Buspuffer mit einer bestimmten Bitgröße, ein- und auslagern. In einer Ausführungsform kann die Verarbeitungslogik des Prozesses 200 den komprimierten Speicherabschnitt verdichten, um es dem Datenübertragungspuffer zu ermöglichen, mehrere komprimierten Speichereinheiten z. B. mit im Wesentlichen voller Kapazität bei jeder Hardware-Datentransaktion effizient zusammen zu tragen.
  • In einer Ausführungsform kann die Speicherregion einer Speicherseite in der Speichervorrichtung entsprechen. Der unkomprimierte Speicherabschnitt kann einen Arbeitssatz von Speicherseiten einschließen, um derzeit aktive Datenverarbeitungsprozesse zu unterstützen. Der Arbeitssatz von Speicherseiten kann in eine Reihe von komprimierten Speichereinheiten im komprimierten Speicherabschnitt komprimiert werden, z. B. als Reaktion auf eine Ruhezustandsanfrage, um Operationen des Systems vorübergehend anzuhalten. Die Reihe komprimierter Speichereinheiten kann dann zur zukünftigen Verwendung zu einer mit der Speichervorrichtung gekoppelten Datenspeichervorrichtung ausgelagert werden.
  • Die Verarbeitungslogik des Prozesses 200 kann mindestens eine komprimierte Speichereinheit zum Auslagern vom komprimierten Speicherabschnitt auswählen. Die Auswahl kann auf Nutzungseigenschaften der komprimierten Speichereinheiten beruhen. Die Nutzungseigenschaften können angeben, wann auf Daten für die komprimierten Speichereinheiten zugegriffen wird. Zum Beispiel können die Nutzungseigenschaften Zeitstempel oder andere einer komprimierten Speichereinheit zugeordnete Metadaten einschließen, um anzugeben, wann auf die komprimierte Speichereinheit zugegriffen wurde, wann sie erstellt, komprimiert, eingelagert oder verwendet wurde usw.
  • In einer Ausführungsform kann die Verarbeitungslogik des Prozesses 200 diejenigen komprimierten Speichereinheiten auslagern, für welche die Wahrscheinlichkeit, für den Arbeitssatz verwendet oder angefordert zu werden, am geringsten ist, wie über eine LRU-Strategie. Die Verarbeitungslogik des Prozesses 200 kann auf der Grundlage zugeordneter Nutzungseigenschaften heuristisch die Wahrscheinlichkeit ermitteln, dass auf die komprimierten Speichereinheiten in der nahen Zukunft zugegriffen wird. In einer Ausführungsform können die komprimierten Speichereinheiten linear mit einer Ordnung im komprimierten Speicherabschnitt gespeichert werden. Die Ordnung kann den Nutzungseigenschaften (z. B. Zugriffszeitstempeln) entsprechen, die den komprimierten Speichereinheiten zugeordnet sind.
  • Der komprimierte Speicherabschnitt kann ein oder mehrere Speichersegmente einschließen. Jedes Speichersegment kann einem Array von einer oder mehreren der komprimierten Speichereinheiten entsprechen. Die Verarbeitungslogik des Prozesses 200 kann eine oder mehrere komprimierte Speichereinheiten innerhalb eines bestimmten Speichersegments zum Durchführen von Verdichtungsoperationen bewegen oder verschieben, um es zu ermöglichen, dass mehrere komprimierte Speichereinheiten in fortlaufendem Speicherplatz innerhalb des bestimmten Speichersegments gespeichert werden.
  • In einer Ausführungsform kann jedes Speichersegment eine Speicherkapazität und/oder eine Auslastungsrate aufweisen. Die Auslastungsrate kann angeben, wie viel der Speicherkapazität verwendet wurde, um ein entsprechendes Array komprimierter Speichereinheiten zu speichern. Die Verarbeitungslogik des Prozesses 200 kann die Verdichtungsoperationen durchführen, um eine oder mehrere der komprimierten Speichereinheiten zwischen den Speichersegmenten zu verschieben, um die Nutzungsrate mindestens eines der Speichersegmente zu erhöhen. Zum Beispiel kann ein Speichersegment, das zu 60% voll ist, nach den Verdichtungsoperationen zu 99% voll sein.
  • 3 zeigt ein Ablaufdiagramm, das eine Ausführungsform eines Prozesses zum Ein- und Auslagern komprimierter Speicherseiten für einen virtuellen Speicher veranschaulicht. Zum Beispiel kann ein Prozess 300 durch manche Komponenten des Systems 100 von 1 durchgeführt werden. In Block 301 kann die Verarbeitungslogik des Prozesses 300 auf der Grundlage einer Speichervorrichtung einen virtuellen Speicher bereitstellen. Die Verarbeitungslogik des Prozesses 300 kann die Speichervorrichtung dynamisch in einen unkomprimierten Abschnitt (oder Schicht) von Speicher und einen komprimierten Abschnitt (oder Schicht) von Speicher partitionieren. Ein Arbeitssatz von Speicherplatz, der verwendet wird, um Datenverarbeitungsaufgaben durch einen oder mehrere mit der Speichervorrichtung gekoppelte Prozessoren durchzuführen, kann im unkomprimierten Speicherabschnitt gespeichert werden.
  • In Block 303 kann die Verarbeitungslogik des Prozesses 300 eine oder mehrere Speicherseiten des unkomprimierten Speicherabschnitts in eine oder mehrere komprimierte Speicherseiten variierender Größe im komprimierten Speicherabschnitt komprimieren. Die Komprimierung kann einen verfügbaren Speicherplatz im unkomprimierten Speicherabschnitt erhöhen.
  • In Block 305 kann die Verarbeitungslogik des Prozesses 300 eine bestimmte der komprimierten Speichereinheiten vom komprimierten Speicherabschnitt in den unkomprimierten Speicherabschnitt dekomprimieren, zum Beispiel als Reaktion auf einen Seitenfehler infolge einer Zugriffsanfrage auf Daten in der bestimmten komprimierten Speichereinheit.
  • In Block 307 kann die Verarbeitungslogik des Prozesses 300 mindestens eine komprimierte Speichereinheit variierender Größe aus dem komprimierten Speicherabschnitt zur Massendatenspeichervorrichtung auslagern, um einen verfügbaren Speicherplatz im unkomprimierten Speicherabschnitt zu erhöhen, um zum Beispiel eine zusätzliche Allozierungsanforderung für den Arbeitssatz im unkomprimierten Speicherabschnitt aufzunehmen.
  • 4 zeigt ein Ablaufdiagramm, das eine Ausführungsform eines Prozesses zum Ein- und Auslagern eines verdichteten Segments komprimierten Speichers für einen virtuellen Speicher veranschaulicht. Zum Beispiel kann ein Prozess 400 durch manche Komponenten des Systems 100 von 1 durchgeführt werden. In Block 401 kann die Verarbeitungslogik des Prozesses 400 eine oder mehrere Speicherseiten eines unkomprimierten Abschnitts einer Speichervorrichtung in eine oder mehrere komprimierte Speicherseiten variierender Größe in einem komprimierten Abschnitt der Speichervorrichtung komprimieren. Die Speichervorrichtung kann mit einer Massendatenspeichervorrichtung gekoppelt sein.
  • In Block 403 kann die Verarbeitungslogik des Prozesses 400 die komprimierten Speichereinheiten variierender Größe in ein Segment oder andere anwendbare Protokollstrukturdaten im komprimierten Abschnitt der Speichervorrichtung verdichten.
  • Als Reaktion auf ein Empfangen einer Zugriffsanfrage auf komprimierte Daten in einer der komprimierten Speichereinheiten kann die Verarbeitungslogik des Prozesses 400 in Block 405 eine oder mehrere Speichereinheiten zum Beispiel aus dem Segment im komprimierten Abschnitt zum unkomprimierten Abschnitt der Speichervorrichtung dekomprimieren.
  • In Block 407 kann die Verarbeitungslogik 400 das Segment der komprimierten Speichereinheiten zur Massendatenspeichervorrichtung auslagern, um einen verfügbaren Speicherplatz in der Speichervorrichtung zu erhöhen.
  • 5 zeigt ein Beispiel eines Datenverarbeitungssystems, wie eines Computersystems, das in Verbindung mit einer Ausführungsform der vorliegenden Erfindung verwendet werden kann. Zum Beispiel kann das System 1 von 1 als ein Teil des in 5 gezeigten Systems implementiert werden. Obwohl 5 verschiedene Komponenten eines Computersystems veranschaulicht, ist zu beachten, dass es nicht beabsichtigt ist, dass sie irgendeine bestimmte Architektur oder Art und Weise des Verbindens der Komponenten wiedergibt, da solche Details für die hierin beschriebenen Techniken nicht relevant sind. Es wird ebenso ersichtlich sein, dass Netzwerkcomputer und andere Datenverarbeitungssysteme, die weniger Komponenten oder vielleicht mehr Komponenten besitzen, bei der vorliegenden Erfindung ebenfalls verwendet werden können.
  • Wie in 5 gezeigt, schließt das Computersystem 500, bei dem es sich um eine Form von Datenverarbeitungssystem handelt, einen Bus 503 ein, der mit einem oder mehreren Mikroprozessoren 505, einem ROM (Nur-Lese-Speicher) 507 und einem flüchtigen RAM 509 und einem nichtflüchtigen Speicher 511 gekoppelt ist. Der Mikroprozessor 505 kann die Anweisungen von den Speichern 507, 509, 511 abrufen und Anweisungen ausführen, um vorstehend beschriebene Operationen durchzuführen. Der Bus 503 verbindet diese verschiedenen Komponenten miteinander und verbindet diese Komponenten 505, 507, 509 und 511 auch mit einer Anzeigesteuereinheit und Anzeigevorrichtung 513 und mit Peripherievorrichtungen wie Eingabe/Ausgabe(E/A)-Vorrichtungen, bei denen es sich um Mäuse, Tastaturen, Modems, Netzwerkschnittstellen, Drucker und andere Vorrichtungen handeln kann, die im Stand der Technik allgemein bekannt sind. Typischerweise sind die Eingabe/Ausgabe-Vorrichtungen 515 über Eingabe/Ausgabe-Steuereinheiten 517 mit dem System gekoppelt. Der flüchtige RAM (Speicher mit wahlfreiem Zugriff) 509 ist typischerweise als dynamischer RAM (DRAM) implementiert, der kontinuierlich Energie benötigt, um die Daten im Speicher zu aktualisieren oder zu unterhalten.
  • Bei dem Massendatenspeicher 511 handelt es sich typischerweise um eine magnetische Festplatte oder ein magnetisches optisches Laufwerk oder ein optisches Laufwerk oder einen DVD-RAM oder einen Flash-Speicher oder andere Typen von Speichersystemen, die Daten (z. B. große Datenmengen) auch dann beibehalten, wenn das System von der Energieversorgung getrennt ist. Typischerweise wird es sich bei dem Massendatenspeicher 511 auch um einen Speicher mit wahlfreiem Zugriff handeln, obwohl dies nicht erforderlich ist. Obwohl 5 zeigt, dass es sich bei dem Massendatenspeicher 511 um eine lokale Vorrichtung handelt, die direkt mit dem Rest der Komponenten im Datenverarbeitungssystem gekoppelt ist, wird es ersichtlich sein, dass die vorliegende Erfindung einen nichtflüchtigen Speicher verwenden kann, der vom System entfernt angeordnet ist, wie eine Netzwerkdatenspeichervorrichtung, die durch eine Netzwerkschnittstelle wie ein Modem oder eine Ethernet-Schnittstelle oder eine kabellose Netzwerkschnittstelle mit dem Datenverarbeitungssystem gekoppelt ist. Der Bus 503 kann einen oder mehrere Busse einschließen, die miteinander über vielfältige Brücken, Steuereinheiten und/oder Adapter verbunden sind, wie in der Technik allgemein bekannt ist.
  • Abschnitte dessen, was vorstehend beschrieben wurde, können mit Schaltlogik, wie einer dedizierten Logikschaltung, oder mit einer Mikrosteuereinheit oder einer anderen Form von Verarbeitungskern, der Programmcodeanweisungen ausführt, implementiert werden. Somit können durch die vorstehende Erläuterung gelehrte Prozesse mit Programmcode wie maschinenausführbaren Anweisungen durchgeführt werden, die bewirken, dass eine Maschine, die diese Anweisungen ausführt, bestimmte Funktionen durchführt. In diesem Kontext kann es sich bei einer „Maschine” um eine Maschine, die Zwischenform(oder „abstrakte”)-Anweisungen in prozessorspezifische Anweisungen umwandelt (z. B. eine abstrakte Ausführungsumgebung wie eine „virtuelle Maschine” (z. B. eine virtuelle Java-Maschine), einen Übersetzer, eine Common Language Runtime, eine virtuelle Maschine einer übergeordneten Sprache usw.) und/oder eine elektronische Schaltlogik handeln, die auf einem Halbleiterchip (z. B. einer mit Transistoren implementierten „Schaltlogik”) angeordnet sind, der konzipiert ist, Anweisungen auszuführen, wie ein universeller Prozessor und/oder ein zweckbestimmter Prozessor. Durch die vorstehende Erläuterung gelehrte Prozesse können auch (als Alternative zu einer Maschine oder in Kombination mit einer Maschine) durch eine elektronische Schaltlogik durchgeführt werden, die gestaltet ist, die Prozesse (oder einen Abschnitt davon) ohne die Ausführung von Programmcode durchzuführen.
  • Ein Herstellungsartikel kann verwendet werden, um Programmcode zu speichern. Ein Herstellungsartikel, der Programmcode speichert, kann, ohne auf diese beschränkt zu sein, als ein oder mehrere Speicher (z. B. ein oder mehrere Flash-Speicher, Speicher mit wahlfreiem Zugriff (statisch, dynamisch oder andere)), optische Platten, CD-ROMs, DVD-ROMs, EPROMs, EEPROMs, magnetische oder optische Karten oder andere Typen maschinenlesbarer Medien ausgebildet werden, die zum Speichern elektronischer Anweisungen geeignet sind. Programmcode kann zudem von einem entfernt angeordneten Computer (z. B. einem Server) auf einen anfragenden Computer (z. B. einen Client) mittels Datensignalen heruntergeladen werden, die in einem Ausbreitungsmedium (z. B. über eine Datenübertragungsverbindung (z. B. eine Netzwerkverbindung)) ausgebildet sein können.
  • Die vorhergehenden detaillierten Beschreibungen werden bezüglich Algorithmen und symbolischen Darstellungen von Operationen an Datenbits innerhalb eines Computerspeichers vorgelegt. Diese algorithmischen Beschreibungen und Darstellungen stellen Werkzeuge dar, die durch den Fachmann der Datenverarbeitungstechnik verwendet werden, um anderen Fachleuten die Substanz seiner Arbeit am effektivsten zu übermitteln. Ein Algorithmus wird hier und allgemein als eine selbstständige Folge von Operation betrachtet, die zu einem gewünschten Ergebnis führen. Bei den Operationen handelt es sich um diejenigen, die physische Bearbeitungen physischer Quantitäten erfordern. Üblicherweise, aber nicht notwendigerweise, nehmen diese Quantitäten die Form elektronischer oder magnetischer Signale an, die in der Lage sind, gespeichert, übertragen, kombiniert, verglichen oder anderweitig bearbeitet zu werden. Es hat sich manchmal als bequem erwiesen, diese Signale prinzipiell aus Gründen allgemeiner Verwendung als Bits, Werte, Elemente, Symbole, Zeichen, Ausdrücke, Zahlen oder Ähnliches zu bezeichnen.
  • Es sollte jedoch im Kopf behalten werden, dass all diese und ähnliche Ausdrücke den entsprechenden physischen Quantitäten zuzuordnen sind und lediglich bequeme, auf diese Quantitäten angewandte Kennzeichnungen darstellen. Sofern nicht speziell anders angegeben als anhand der vorstehenden Erläuterung ersichtlich, ist zu ersehen, dass sich innerhalb der Beschreibung Erläuterungen, welche Ausdrücke verwenden wie „verarbeiten”, „bearbeiten”, „berechnen” oder „ermitteln” oder „anzeigen” oder Ähnliches, auf das Handeln und die Prozesse eines Computersystems oder einer ähnlichen elektronischen Rechenvorrichtung beziehen, das oder die als physische (elektronische) Quantitäten innerhalb der Register und Speicher des Computersystems dargestellte Daten in andere, gleichermaßen als physische Quantitäten innerhalb der Speicher oder Register des Computersystems oder einer anderen solche Informationsdatenspeicher-, Übertragungs- oder Anzeigevorrichtungen dargestellte Daten bearbeitet und umwandelt.
  • Die vorliegende Erfindung betrifft zudem eine Einrichtung zum Durchführen der hierin beschriebenen Operationen. Diese Einrichtung kann speziell für den erforderlichen Zweck konstruiert sein oder einen universellen Computer umfassen, der selektiv durch ein im Computer gespeichertes Computerprogramm aktiviert oder rekonfiguriert wird. Solch ein Computerprogramm kann in einem computerlesbaren Datenspeichermedium, wie etwa, ohne auf diese beschränkt zu sein, einem beliebigen Typ von Platte einschließlich Floppy-Disketten, optische Platten, CD-ROMs und magneto-optische Platten, Nur-Lese-Speicher (ROMs), RAMs, EPROMS, EEPROMS, magnetische oder optische Karten oder jedem Typ von Medium gespeichert sein, das zum Speichern elektronischer Anweisungen geeignet ist und von denen jedes mit einem Computersystembus gekoppelt ist.
  • Die hierin vorgelegten Prozesse und Anzeigen sind nicht inhärent auf irgendeinen bestimmten Computer oder irgendeine bestimmte Einrichtung bezogen. Vielfältige universelle System können mit Programmen gemäß den Lehren hierin verwendet werden, oder es kann sich als bequem erweisen, eine spezialisiertere Einrichtung zu konstruieren, um die beschrieben Operationen durchzuführen. Die erforderliche Struktur für eine Vielfalt dieser Systeme wird anhand der nachstehenden Beschreibung offensichtlich. Darüber hinaus wird die vorliegende Erfindung nicht unter Bezugnahme auf irgendeine bestimmte Programmiersprache beschrieben. Es wird ersichtlich sein, dass eine Vielfalt von Programmiersprachen verwendet werden können, um die Lehren der Erfindung zu implementieren, wie sie hierin beschrieben ist.
  • Die vorhergehende Erläuterung beschreibt lediglich einige beispielhafte Ausführungsformen der vorliegenden Erfindung. Der Fachmann wird anhand einer solchen Erläuterung, der begleitenden Zeichnungen und der Ansprüche leicht erkennen, dass vielfältige Modifikationen vorgenommen werden können, ohne den Geist und Umfang der Erfindung zu verlassen.

Claims (22)

  1. Maschinenlesbares nichtflüchtiges Datenspeichermedium mit darin gespeicherten Anweisungen, die bei Ausführen durch einen Computer den Computer veranlassen, ein Verfahren auszuführen umfassend: dynamisches Aktualisieren eines komprimierten Speicherabschnitts in einer Speichervorrichtung für einen virtuellen Speicher, wobei die Speichervorrichtung einen unkomprimierten Speicherabschnitt separat vom komprimierten Speicherabschnitt einschließt, wobei der virtuelle Speicher in der Lage ist, dem komprimierten Speicherabschnitt eine Speicheradresse zuzuordnen, Komprimieren einer im unkomprimierten Speicherabschnitt allozierten Speicherregion in den komprimierten Speicherabschnitt, wobei die Speicherregion für eine zukünftige Allozierung in der Speichervorrichtung verfügbar wird, wobei der aktualisierte komprimierte Abschnitt in der Lage ist, die komprimierte Speicherregion zu speichern, und als Reaktion auf eine Anfrage, auf Daten in der komprimierten Speicherregion zuzugreifen, Dekomprimieren der komprimierten Speicherregion zurück in den unkomprimierten Abschnitt in der Speichervorrichtung.
  2. Medium nach Anspruch 1, wobei die Anfrage einen Seitenfehler verursacht, der angibt, dass die Daten im unkomprimierten Speicherabschnitt nicht verfügbar sind.
  3. Medium nach Anspruch 1, wobei die Aktualisierung umfasst: Allozieren zusätzlichen Speichers aus dem unkomprimierten Speicherabschnitt für den komprimierten Speicherabschnitt, wobei sich die Größe verfügbaren Speichers zur Allozierung im unkomprimierten Speicherabschnitt infolge der Komprimierung der Speicherregion erhöht.
  4. Medium nach Anspruch 1, wobei im komprimierten Speicherabschnitt eine Vielzahl komprimierter Speichereinheiten gespeichert sind, wobei jede komprimierte Speichereinheit einer separaten aus dem unkomprimierten Speicherabschnitt komprimierten Speicherregion entspricht, wobei mindestens zwei der komprimierten Speichereinheiten nicht aufeinander folgend im komprimierten Speicherabschnitt gespeichert sind, ferner umfassend: Verdichten des komprimierten Speicherabschnittes, wobei das Verdichten bewirkt, dass die mindestens zwei der komprimierten Speichereinheiten aufeinander folgend im komprimierten Speicherabschnitt gespeichert werden.
  5. Medium nach Anspruch 4, wobei die komprimierte Speicherregion einer bestimmten komprimierten Speichereinheit im komprimierten Speicherabschnitt entspricht, wobei die bestimmte komprimierte Speichereinheit zwischen den mindestens zwei komprimierten Speichereinheiten gespeichert war, wobei die Dekomprimierung die bestimmte komprimierte Speichereinheit aus dem komprimierten Speicherabschnitt entfernt, um es den mindestens zwei der komprimierten Speichereinheiten zu ermöglichen, aufeinander folgend gespeichert zu sein.
  6. Medium nach Anspruch 4, wobei die Speichervorrichtung mit einer separaten Datenspeichervorrichtung gekoppelt ist, wobei die Aktualisierung umfasst: Auslagern einer oder mehrerer der komprimierten Speichereinheiten aus dem komprimierten Speicherabschnitt auf die separate Datenspeichervorrichtung, wobei das Auslagern ein Verringern der Größe des komprimierten Speicherabschnitts bewirkt, um die Größe des unkomprimierten Speicherabschnitts zu erhöhen.
  7. Medium nach Anspruch 6, ferner umfassend: Ermitteln, ob die Daten der komprimierten Speicherregion für die Anfrage derzeit im komprimierten Speicherabschnitt verfügbar sind, wobei die komprimierte Speicherregion dekomprimiert wird, wenn die Daten der komprimierten Speicherregion derzeit im komprimierten Speicherabschnitt verfügbar sind.
  8. Medium nach Anspruch 7, ferner umfassend: Einlagern der komprimierten Speicherregion von der separaten Datenspeichervorrichtung in den komprimierte Speicherabschnitt, wenn die Daten der komprimierten Speicherregion derzeit nicht im komprimierten Speicherabschnitt verfügbar sind.
  9. Medium nach Anspruch 6, wobei eine bestimmte der einen oder mehreren komprimierten Speichereinheiten zwischen den mindestens zwei komprimierten Speichereinheiten gespeichert war, wobei das Auslagern die bestimmte komprimierte Speichereinheit aus dem komprimierten Speicherabschnitt entfernt, um es den mindestens zwei der komprimierten Speichereinheiten zu ermöglichen, aufeinander folgend gespeichert zu sein.
  10. Medium nach Anspruch 6, wobei das Auslagern umfasst: Auswählen der einen oder mehreren der komprimierten Speichereinheiten für das Auslagern und wobei die Auswahl auf Nutzungseigenschaften beruht, die den komprimierten Speichereinheiten zugeordnet sind.
  11. Medium nach Anspruch 10, wobei die Speicherregion einer Speichereinheit einer festen Größe in der Speichervorrichtung entspricht, wobei die komprimierten Speichereinheiten von variierender Größe sind und wobei die komprimierten Speichereinheiten linear mit einer Ordnung im komprimierten Speicherabschnitt gespeichert sind.
  12. Medium nach Anspruch 11, wobei die Nutzungseigenschaften der den komprimierten Speichereinheiten zugeordneten linearen Ordnung entsprechen.
  13. Medium nach Anspruch 12, wobei die Nutzungseigenschaften angeben, wenn auf Daten für die komprimierten Speichereinheit zugegriffen wird, und wobei die eine oder die mehreren der ausgewählten komprimierten Speichereinheiten gemäß der linearen Ordnung für die Auswahl am längsten nicht verwendet wurden.
  14. Medium nach Anspruch 11, wobei die Speichervorrichtung mit der separaten Datenspeichervorrichtung über eine Schnittstelle mit einem Datenübertragungspuffer gekoppelt ist, wobei das Ein- und Auslagern auf einer Datenübertragung über die Schnittstelle über den Datenübertragungspuffer beruht, und wobei es die Verdichtung dem Datenübertragungspuffer ermöglicht, eine Vielzahl der komprimierten Speichereinheiten zusammen zu tragen.
  15. Medium nach Anspruch 11, wobei der komprimierte Speicherabschnitt ein oder mehrere Speichersegmente einschließt, jedes Speichersegment einer Anordnung einer oder mehrerer der komprimierten Speichereinheiten entspricht, eine bestimmte Anordnung eines der Speichersegmente zwei oder mehr komprimierte Speichereinheiten einschließt, das Verdichten umfasst: Verschieben mindestens einer der komprimierten Speichereinheiten innerhalb des bestimmten Speichersegments, sodass die zwei oder mehr komprimierten Speichereinheiten in zusammenhängendem Speicherplatz innerhalb des bestimmten Speichersegments gespeichert sind.
  16. Medium nach Anspruch 15, wobei jedes Speichersegment eine Speicherkapazität besitzt, jedes Speichersegment eine Auslastungsrate besitzt, die angibt, wie viel der Speicherkapazität verwendet wurde, um eine entsprechende Anordnung komprimierter Speichereinheiten zu speichern, das Verdichten ferner umfasst: Verschieben einer oder mehrerer der komprimierten Speichereinheiten über die Speichersegmente, wobei sich eine entsprechende Auslastungsrate mindestens eines der Speichersegmente infolge des Verschiebens der einen oder der mehreren der komprimierten Speichereinheiten erhöht.
  17. Medium nach Anspruch 4, wobei der komprimierte Speicherabschnitt mehrere Pools von Speicherslots einschließt, jede komprimierte Speichereinheit in einer oder mehreren aufeinander folgenden der Speicherslots gespeichert ist, jeder Pool einer separaten Partition der komprimierten Speichereinheiten entspricht, jeder Pool einem separaten Thread zugeordnet ist, und wobei die Verdichtung für jeden Pool über den zugeordneten Thread separat und asynchron durchgeführt wird.
  18. Medium nach Anspruch 6, wobei die Speicherregion einer Speicherseite in der Speichervorrichtung entspricht, wobei der unkomprimierte Speicherabschnitt einen Arbeitssatz von Speicherseiten einschließt, um derzeit aktive Datenverarbeitungsprozesse zu unterstützen, ferner umfassend: als Reaktion auf eine Ruhezustandsanfrage Komprimieren des Arbeitssatzes von Speicherseiten auf eine Serie komprimierter Speichereinheiten im komprimierten Speicherabschnitt, und Auslagern der Serie komprimierter Speichereinheiten auf die Speichervorrichtung.
  19. Maschinenlesbares nichtflüchtiges Datenspeichermedium mit darin gespeicherten Anweisungen, die bei Ausführen durch einen Computer den Computer veranlassen, ein Verfahren auszuführen umfassend: Bereitstellen eines virtuellen Speichers auf der Grundlage einer Speichervorrichtung, wobei die Speichervorrichtung dynamisch in einen unkomprimierten Speicherabschnitt und einen komprimierten Speicherabschnitt partitioniert wird, wobei der unkomprimierte Speicherabschnitt dazu dient, Arbeitsdaten zu speichern, die über einen mit der Speichervorrichtung gekoppelten Prozessor verarbeitet werden, Komprimieren einer oder mehrerer Speicherseiten des unkomprimierten Speicherabschnitts in eine oder mehrere komprimierte Speichereinheiten variierender Größe im komprimierten Speicherabschnitt, wobei die Komprimierung einen verfügbaren Speicherplatz im unkomprimierten Speicherabschnitt erhöht, als Reaktion auf einen Seitenfehler für eine Zugriffsanfrage auf Daten in einer der komprimierten Speichereinheiten, Dekomprimieren der einen komprimierten Speichereinheit aus dem komprimierten Speicherabschnitt in den unkomprimierten Speicherabschnitt und Auslagern mindestens einer der komprimierten Speichereinheiten variierender Größe aus dem komprimierten Speicherabschnitt zur Massendatenspeichervorrichtung, wobei das Auslagern einen verfügbaren Speicherplatz im unkomprimierten Speicherabschnitt erhöht.
  20. Maschinenlesbares nichtflüchtiges Datenspeichermedium mit darin gespeicherten Anweisungen, die bei Ausführen durch einen Computer den Computer veranlassen, ein Verfahren auszuführen umfassend: Komprimieren einer oder mehrerer Speicherseiten eines unkomprimierten Speicherabschnitts einer Speichervorrichtung in eine oder mehrere komprimierte Speichereinheiten variierender Größe in einem komprimierten Speicherabschnitt der Speichervorrichtung, wobei die Speichervorrichtung mit einer Massendatenspeichervorrichtung gekoppelt ist, Verdichten der komprimierten Speichereinheit variierender Größe in ein Segment im komprimierten Abschnitt der Speichervorrichtung, als Reaktion auf eine Zugriffsanfrage auf eine der komprimierten Speichereinheiten, Dekomprimieren der einen komprimierten Speichereinheit aus dem komprimierten Abschnitt in den unkomprimierten Abschnitt der Speichervorrichtung und Auslagern des Segments der komprimierten Speichereinheiten zur Massendatenspeichervorrichtung, um einen verfügbaren Speicherplatz in der Speichervorrichtung zu erhöhen.
  21. Computerimplementiertes Verfahren umfassend: dynamisches Aktualisieren eines komprimierten Speicherabschnitts in einer Speichervorrichtung, wobei die Speichervorrichtung einen unkomprimierten Speicherabschnitt einschließt, der in der Lage ist, eine Datenverarbeitung für mindestens einen Prozessor zu unterstützen, Komprimieren einer im unkomprimierten Speicherabschnitt allozierten Speicherregion in den komprimierten Speicherabschnitt, wobei die Speicherregion für eine zukünftige Allozierung in der Speichervorrichtung verfügbar wird, wobei der aktualisierte komprimierte Abschnitt in der Lage ist, die komprimierte Speicherregion zu speichern, und als Reaktion auf eine Anfrage, auf Daten in der komprimierten Speicherregion zuzugreifen, Dekomprimieren der komprimierten Speicherregion zurück in den unkomprimierten Abschnitt in der Speichervorrichtung.
  22. Computersystem umfassend: einen Speicher, der ausführbare Anweisungen einschließt, wobei der Speicher dynamisch in einen komprimierten Abschnitt und einen unkomprimierten Abschnitt partitioniert wird, eine Massendatenspeichervorrichtung, einen mit dem Speicher und der Massendatenspeichervorrichtung gekoppelten Prozessor, wobei der Prozessor dazu dient, die ausführbaren Anweisungen aus dem Speicher auszuführen, wobei der Prozessor eingerichtet ist, eine im unkomprimierten Speicherabschnitt allozierte Speicherregion in den komprimierten Speicherabschnitt zu komprimieren, wobei die Speicherregion für eine zukünftige Allozierung in der Speichervorrichtung verfügbar wird, wobei der aktualisierte komprimierte Abschnitt in der Lage ist, die komprimierte Speicherregion zu speichern, als Reaktion auf eine Anfrage, auf Daten in der komprimierten Speicherregion zuzugreifen, die komprimierte Speicherregion zurück in den unkomprimierten Abschnitt der Speichervorrichtung zu komprimieren, und als Reaktion auf ein Erfassen eine hohen Speichernutzung in der Speichervorrichtung die komprimierte Speicherregion zur Datenspeichervorrichtung auszulagern, um einen verfügbaren Speicherplatz in der Speichervorrichtung zu erhöhen.
DE112013006298.4T 2012-12-28 2013-11-25 Verfahren und Einrichtung für einen komprimierten und verdichteten virtuellen Speicher Granted DE112013006298T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/730,211 US10565099B2 (en) 2012-12-28 2012-12-28 Methods and apparatus for compressed and compacted virtual memory
US13/730,211 2012-12-28
PCT/US2013/071753 WO2014105323A1 (en) 2012-12-28 2013-11-25 Methods and apparatus for compressed and compacted virtual memory

Publications (1)

Publication Number Publication Date
DE112013006298T5 true DE112013006298T5 (de) 2015-09-17

Family

ID=49765689

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013006298.4T Granted DE112013006298T5 (de) 2012-12-28 2013-11-25 Verfahren und Einrichtung für einen komprimierten und verdichteten virtuellen Speicher

Country Status (6)

Country Link
US (2) US10565099B2 (de)
KR (1) KR101739213B1 (de)
CN (1) CN105027093B (de)
DE (1) DE112013006298T5 (de)
TW (1) TWI494764B (de)
WO (1) WO2014105323A1 (de)

Families Citing this family (41)

* 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
US10565099B2 (en) * 2012-12-28 2020-02-18 Apple Inc. Methods and apparatus for compressed and compacted virtual memory
US9575982B1 (en) 2013-04-29 2017-02-21 Amazon Technologies, Inc. Size targeted database I/O compression
US10102148B2 (en) * 2013-06-13 2018-10-16 Microsoft Technology Licensing, Llc Page-based compressed storage management
TWI493446B (zh) * 2013-09-23 2015-07-21 Mstar Semiconductor Inc 記憶體管理方法及記憶體管理裝置
US9652373B2 (en) * 2013-12-16 2017-05-16 International Business Machines Corporation Adaptive statistics for a linear address space
US20150242432A1 (en) * 2014-02-21 2015-08-27 Microsoft Corporation Modified Memory Compression
US9684625B2 (en) 2014-03-21 2017-06-20 Microsoft Technology Licensing, Llc Asynchronously prefetching sharable memory pages
US9940167B2 (en) * 2014-05-20 2018-04-10 Red Hat Israel, Ltd. Identifying memory devices for swapping virtual machine memory pages
US9917894B2 (en) 2014-08-06 2018-03-13 Quest Software Inc. Accelerating transfer protocols
US10459886B2 (en) 2014-08-06 2019-10-29 Quest Software Inc. Client-side deduplication with local chunk caching
US9984093B2 (en) 2014-08-06 2018-05-29 Quest Software Inc. Technique selection in a deduplication aware client environment
US9990352B2 (en) * 2014-08-06 2018-06-05 Quest Software Inc. Chunk compression in a deduplication aware client environment
KR20160070512A (ko) * 2014-12-10 2016-06-20 삼성전자주식회사 반도체 장치 및 그 동작 방법
US9354812B1 (en) * 2015-02-12 2016-05-31 Qualcomm Incorporated Dynamic memory utilization in a system on a chip
US9632924B2 (en) 2015-03-02 2017-04-25 Microsoft Technology Licensing, Llc Using memory compression to reduce memory commit charge
US9892053B2 (en) * 2015-03-24 2018-02-13 Intel Corporation Compaction for memory hierarchies
US10037270B2 (en) * 2015-04-14 2018-07-31 Microsoft Technology Licensing, Llc Reducing memory commit charge when compressing memory
US9720617B2 (en) 2015-06-02 2017-08-01 Apple Inc. System and method for compaction of compressed and uncompressed virtual memory
KR101727508B1 (ko) 2015-07-28 2017-04-18 서울과학기술대학교 산학협력단 하둡 기반 하드웨어 압축 고속화 장치 및 방법
US10606501B2 (en) 2015-12-04 2020-03-31 International Business Machines Corporation Management of paging in compressed storage
US10474385B2 (en) * 2016-02-23 2019-11-12 Google Llc Managing memory fragmentation in hardware-assisted data compression
US10942844B2 (en) 2016-06-10 2021-03-09 Apple Inc. Reserved memory in memory management system
US20170371797A1 (en) * 2016-06-24 2017-12-28 Qualcomm Incorporated Pre-fetch mechanism for compressed memory lines in a processor-based system
CN109313604B (zh) * 2016-06-27 2023-05-23 英特尔公司 用于压缩虚拟存储器的动态配置的计算系统、装置和方法
US10496292B2 (en) * 2017-01-19 2019-12-03 International Business Machines Corporation Saving/restoring guarded storage controls in a virtualized environment
US10649889B2 (en) 2017-06-04 2020-05-12 Apple Inc. Method and apparatus for managing kernel memory of data processing systems
US10331558B2 (en) 2017-07-28 2019-06-25 Apple Inc. Systems and methods for performing memory compression
CN107391708B (zh) * 2017-07-28 2020-09-22 苏州浪潮智能科技有限公司 一种存储系统中性能统计文件存储的方法及装置
US10558364B2 (en) 2017-10-16 2020-02-11 Alteryx, Inc. Memory allocation in a data analytics system
JP6608468B2 (ja) * 2018-01-26 2019-11-20 株式会社日立製作所 ストレージ装置及びその制御方法
CN112585589A (zh) 2018-08-09 2021-03-30 华为技术有限公司 将压缩数据块和未压缩数据块压紧的设备及方法
SE543649C2 (en) 2018-11-14 2021-05-18 Zeropoint Tech Ab Managing free space in a compressed memory system
US11048419B2 (en) * 2019-01-30 2021-06-29 EMC IP Holding Company LLC Adaptively over-allocating storage space for compressed data
AU2019452898A1 (en) * 2019-07-02 2022-01-06 Microsoft Technology Licensing, Llc Hardware-based memory compression
CN113138941A (zh) 2020-01-20 2021-07-20 华为技术有限公司 内存交换的方法、装置
US11372547B2 (en) 2020-02-13 2022-06-28 International Business Machines Corporation Compression of aging data during compaction
CN113590500B (zh) * 2020-04-30 2024-10-11 华为技术有限公司 一种内存管理方法及终端设备
CN112199303B (zh) * 2020-12-03 2021-03-16 北京紫光青藤微系统有限公司 存储空间碎片化的处理方法和装置
US11995104B2 (en) * 2022-05-27 2024-05-28 Sap Se Linear interval-based dynamic range partitioning
TWI829394B (zh) * 2022-10-17 2024-01-11 大陸商星宸科技股份有限公司 電子裝置及其操作方法

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4829422A (en) * 1987-04-02 1989-05-09 Stellar Computer, Inc. Control of multiple processors executing in parallel regions
AU1447295A (en) * 1993-12-30 1995-08-01 Connectix Corporation Virtual memory management system and method using data compression
JPH07334310A (ja) * 1994-06-06 1995-12-22 Toshiba Corp ディスク装置及び同装置における読み出しデータのバッファ記憶制御方法
US6002411A (en) 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US5721823A (en) * 1995-09-29 1998-02-24 Hewlett-Packard Co. Digital layout method suitable for near video on demand system
US6040953A (en) * 1997-03-25 2000-03-21 International Business Machines Corporation Adaptive data recovery method and means tuned to thermal asperities in a cyclic, multitracked magnetic storage subsystem
US6148368A (en) * 1997-07-31 2000-11-14 Lsi Logic Corporation Method for accelerating disk array write operations using segmented cache memory and data logging
JP3444346B2 (ja) * 1999-01-04 2003-09-08 日本電気株式会社 仮想メモリ管理方式
US6341325B2 (en) * 1999-01-12 2002-01-22 International Business Machines Corporation Method and apparatus for addressing main memory contents including a directory structure in a computer system
US6523102B1 (en) 2000-04-14 2003-02-18 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules
US6886085B1 (en) * 2000-04-19 2005-04-26 International Business Machines Corporation Method and apparatus for efficient virtual memory management
US6912679B1 (en) * 2000-04-29 2005-06-28 Hewlett-Packard Development Company, L.P. System and method for electrical data link testing
US6883037B2 (en) 2001-03-21 2005-04-19 Microsoft Corporation Fast data decoder that operates with reduced output buffer bounds checking
US6516397B2 (en) * 2001-04-09 2003-02-04 Hewlett-Packard Company Virtual memory system utilizing data compression implemented through a device
US6775751B2 (en) * 2002-08-06 2004-08-10 International Business Machines Corporation System and method for using a compressed main memory based on degree of compressibility
US6968424B1 (en) * 2002-08-07 2005-11-22 Nvidia Corporation Method and system for transparent compressed memory paging in a computer system
US7958289B2 (en) 2002-08-08 2011-06-07 International Business Machines Corporation Method and system for storing memory compressed data onto memory compressed disks
US20040109463A1 (en) * 2002-12-05 2004-06-10 Alcatel Canada Inc. Efficient data transmission method
JP2005157444A (ja) * 2003-11-20 2005-06-16 Toshiba Corp Fifo制御回路
US7302543B2 (en) * 2004-06-16 2007-11-27 Nec Laboratories America, Inc. Compressed memory architecture for embedded systems
US7587572B1 (en) 2004-08-31 2009-09-08 Sun Microsystems, Inc. Method and system for managing process memory configured in resizable uncompressed and compressed regions
KR100706242B1 (ko) * 2005-02-07 2007-04-11 삼성전자주식회사 메모리 시스템 및 그것의 런 단위 어드레스 매핑 테이블 구성 방법
JP5071798B2 (ja) * 2005-03-31 2012-11-14 日本電気株式会社 計算機システム,メモリ管理方法,およびそのプログラム
US7533228B1 (en) 2005-05-27 2009-05-12 Sun Microsystems, Inc. Two-pass sliding compaction
US7412466B1 (en) 2005-05-31 2008-08-12 Sun Microsystems, Inc. Offset-based forward address calculation in a sliding-compaction garbage collector
US20070005911A1 (en) * 2005-07-01 2007-01-04 Nec Laboratories America, Inc. Operating System-Based Memory Compression for Embedded Systems
US8560760B2 (en) * 2007-01-31 2013-10-15 Microsoft Corporation Extending flash drive lifespan
US20080189558A1 (en) * 2007-02-01 2008-08-07 Sun Microsystems, Inc. System and Method for Secure Data Storage
US7895242B2 (en) 2007-10-31 2011-02-22 Microsoft Corporation Compressed storage management
KR101420798B1 (ko) * 2007-11-23 2014-07-17 삼성전자주식회사 실시간 응답성이 요구되는 코드를 위한 요구 페이징 방법및 단말
JP5211751B2 (ja) * 2008-02-26 2013-06-12 富士通株式会社 計算機、ダンププログラムおよびダンプ方法
US9098625B2 (en) * 2008-02-29 2015-08-04 International Business Machines Corporation Viral trace
US7948502B2 (en) * 2008-05-13 2011-05-24 Mitac International Corp. Method of displaying picture having location data and apparatus thereof
US20090327621A1 (en) 2008-06-27 2009-12-31 Microsoft Corporation Virtual memory compaction and compression using collaboration between a virtual memory manager and a memory manager
US20100036858A1 (en) * 2008-08-06 2010-02-11 Microsoft Corporation Meta file system - transparently managing storage using multiple file systems
US9253496B2 (en) * 2008-12-12 2016-02-02 Qualcomm Incorporated Intelligent decoded picture buffering
US8145833B1 (en) 2009-10-30 2012-03-27 CSR Technology Holdings Inc. Compression solution for embedded devices and systems
US8458431B2 (en) 2009-11-03 2013-06-04 International Business Machines Corporation Expanding memory size
CN102147768B (zh) * 2010-05-21 2014-03-05 苏州捷泰科信息技术有限公司 存储器、固态缓存系统及缓存数据处理方法
US8484405B2 (en) * 2010-07-13 2013-07-09 Vmware, Inc. Memory compression policies
US9141526B2 (en) * 2010-09-16 2015-09-22 International Business Machines Corporation Reclaiming units by searching units for a predetermined criterion and storing data from a valid subunit
US9652568B1 (en) * 2011-11-14 2017-05-16 EMC IP Holding Company LLC Method, apparatus, and computer program product for design and selection of an I/O subsystem of a supercomputer
US8954556B2 (en) * 2011-12-01 2015-02-10 Verizon Patent And Licensing Inc. Utility-based model for caching programs in a content delivery network
CN104094239A (zh) * 2012-01-29 2014-10-08 汤姆逊许可公司 有限随机存取存储器/闪存设备架构的闪存压缩指令缓存方法
US10565099B2 (en) * 2012-12-28 2020-02-18 Apple Inc. Methods and apparatus for compressed and compacted virtual memory

Also Published As

Publication number Publication date
US10565099B2 (en) 2020-02-18
KR101739213B1 (ko) 2017-06-08
KR20150090211A (ko) 2015-08-05
CN105027093B (zh) 2020-02-21
TWI494764B (zh) 2015-08-01
US10970203B2 (en) 2021-04-06
WO2014105323A1 (en) 2014-07-03
US20200073791A1 (en) 2020-03-05
US20140189281A1 (en) 2014-07-03
TW201432456A (zh) 2014-08-16
CN105027093A (zh) 2015-11-04

Similar Documents

Publication Publication Date Title
DE112013006298T5 (de) Verfahren und Einrichtung für einen komprimierten und verdichteten virtuellen Speicher
DE112011106078B4 (de) Verfahren, Vorrichtung und System zur Implementierung eines mehrstufigen Arbeitsspeichers mit Direktzugriff
DE102012216568B4 (de) Scheduling und Managen von Rechentasks mit unterschiedlichen Ausführungsprioritätsstufen
DE102012219907B4 (de) Erhöhen der Speicherkapazität in Systemen mit eingeschränkter elektrischer Leistungsaufnahme
DE112014000254B4 (de) Mehrstufiges Zwischenspeichern und Migrieren in unterschiedlichen Granularitäten
DE102013022712B4 (de) Virtuelle Speicherstruktur für Coprozessoren, die Speicherallokationsbegrenzungen haben
DE3750337T2 (de) Behandlung von grossen Bereichen virtueller Speicher.
DE112010004969B4 (de) Hybrides Speicherteilsystem und Verfahren zum Verwalten eines solchen
DE112010003650B4 (de) Container-Markierungsschema zum Verringern einer Schreibverstärkung bei Halbleiter-Einheiten
DE112012000635T5 (de) Dynamische Speicherverwaltung in einer virtualisierten Datenverarbeitungsumgebung
DE102013201178B4 (de) Steuern von Arbeitsverteilung für Verarbeitung von Tasks
DE202010017613U1 (de) Datenspeichervorrichtung mit host-gesteuerter Speicherbereinigung
DE102009046847A1 (de) Mehrklassen-Daten-Cache-Verfahren
DE112012004893T5 (de) Implementieren eines Software-Abbildes auf mehreren Zielen unter Verwendung einer Datenstromtechnik
DE112010003750T5 (de) Hardware für parallele Befehlslistenerzeugung
DE112010005705T5 (de) Umplanen von Workload in einer hybriden Datenverarbeitungsumgebung
DE102009031125A1 (de) Nand-Fehlerbehandlung
DE112012002452T5 (de) Anpassungsfähiges Zwischenspeichern von Datensätzen für Halbleiterplatten
DE102013205886A1 (de) Dynamische Bankmodus-Adressierung für Speicherzugriff
DE112012001660T5 (de) Speicher-Checkpointing in einem System gespiegelter virtueller Maschinen
DE102013208421A1 (de) Sharing einer Grafikverarbeitungseinheit unter vielen Anwendungen
DE102013020485A1 (de) Technik zur Ausführung von Speicherzugriffsoperationen über eine Textur-Hardware
DE102017118341A1 (de) Neuaufteilen von Daten in einem verteilten Computersystem
DE112020000183T5 (de) Speicherungsklassenspeicherzugriff
DE102020133261A1 (de) Techniken zum Vorhersagen der Zeit bis zur Bereitschaft für eine Speichervorrichtung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division