DE112016000726T5 - Transparente hardwareunterstützte speicherdekompression - Google Patents

Transparente hardwareunterstützte speicherdekompression Download PDF

Info

Publication number
DE112016000726T5
DE112016000726T5 DE112016000726.4T DE112016000726T DE112016000726T5 DE 112016000726 T5 DE112016000726 T5 DE 112016000726T5 DE 112016000726 T DE112016000726 T DE 112016000726T DE 112016000726 T5 DE112016000726 T5 DE 112016000726T5
Authority
DE
Germany
Prior art keywords
memory
data
compressed
decompression
hardware
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
DE112016000726.4T
Other languages
English (en)
Other versions
DE112016000726B4 (de
Inventor
Vyacheslav Vladimirovich MALYUGIN
Luigi Semenzato
Santhosh Rao
Choon Ping Chng
Shinye Shiu
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of DE112016000726T5 publication Critical patent/DE112016000726T5/de
Application granted granted Critical
Publication of DE112016000726B4 publication Critical patent/DE112016000726B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02BCLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO BUILDINGS, e.g. HOUSING, HOUSE APPLIANCES OR RELATED END-USER APPLICATIONS
    • Y02B70/00Technologies for an efficient end-user side electric power management and consumption
    • Y02B70/30Systems integrating technologies related to power network operation and communication or information technologies for improving the carbon footprint of the management of residential or tertiary loads, i.e. smart grids as climate change mitigation technology in the buildings sector, including also the last stages of power distribution and the control, monitoring or operating management systems at local level
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

Es sind Verfahren und Systeme zur Speicherdekompression unter Verwendung eines Hardware-Dekompressors zur Verfügung gestellt, der die Beteiligung von Software minimiert oder eliminiert. Kundenspezifische Dekompressionshardware ist zum Speicher-Untersystem hinzugefügt, wobei die Dekompressionshardware Lesezugriffe, die durch beispielsweise Cache-Ausfälle oder Anfragen von Vorrichtungen zu komprimierten Speicherblöcken veranlasst sind, durch Lesen eines komprimierten Blocks, Dekomprimieren von ihm in einen internen Puffer und Zurückbringen des angefragten Teilbereichs des Blocks handhabt. Die kundenspezifische Hardware ist entwickelt, um zu bestimmen, ob der Block komprimiert ist, und die Parameter einer Kompression durch Prüfen ungenutzter Bits der physikalischen Adresse des Zugriffs zu bestimmen. Dies lässt zu, dass eine Kompression ohne zusätzliche Metadaten implementiert wird, weil die nötigen Metadaten in ungenutzten Bits in den existierenden Seitentabellenstrukturen gespeichert werden können.

Description

  • Die vorliegende Anmeldung beansprucht die Priorität der vorläufigen US-Patentanmeldung mit der Ser.-Nr. 62/116,053, eingereicht am 13. Februar 2015, von welcher die gesamte Offenbarung hierdurch durch Bezugnahme enthalten ist.
  • HINTERGRUND
  • Computer arbeiten häufig mit geringeren Ausmaßen an RAM (Direktzugriffsspeicher) als dem durch alle Programme verwendeten gesamten Speicher. Eine der verschiedenen Techniken, um dieses Ergebnis zu erreichen, enthält ein Komprimieren von Speicher, auf den in letzter Zeit nicht zugegriffen worden ist, und ein Dekomprimieren eines solchen Speichers, wenn auf ihn zugegriffen wird. Ein Dekomprimieren eines Speichers unter Verwendung von nur Software ist aufgrund einer Anzahl von Gründen teuer, die beispielsweise folgendes enthalten: (i) die Beteiligung eines Kernelseiten-Fehlerbehandlers, swap- bzw. umlagerungsbezogene Softwareschichten und Software-Kompressor/Dekompressor; (ii) eine Notwendigkeit, Speicherblöcke unkomprimiert zu speichern, um dadurch zu erzwingen, dass andere Speicherblöcke komprimiert oder hinausgeworfen werden, was einen zusätzlichen Energieverbrauch veranlasst und potentiell Überlastverhalten in einem System auslöst (z. B. wenn ein Speicher die ganze Zeit mit sehr geringem für einen Anwender sichtbaren Fortschritt komprimiert und dekomprimiert wird); und (iii) eine Notwenidigkeit, um gesamte unkomprimierte Speicherblöcke zurück zum RAM zu schreiben, um dadurch den Speicherbus-Zugangskonflikt des RAM zu erhöhen.
  • Bestehende Software-Speicherkompressionsschemen leiden an den oben beschriebenen Problemen (i)–(iii). Während einige hardwarebasierte Blöcke existieren, die eine Kompression und eine Dekompression durchführen, können solche Kompressor-Dekompressor-Blöcke Cache-Line- bzw. Cache-Zeilen-Ausfälle nicht transparent handhaben und leiden daher noch an den Problemen (ii) und (iii), während auch Hardwarezusatz für alle Speicherzugriffe hinzugefügt wird (ähnlich dem Problem (I)).
  • Im Laufe der Zeit sind verschiedene Ansätze für Software- und Hardware-Speicherdeduplikation vorgeschlagen worden, die denselben oder ähnlichen Zielen auf höchster Ebene dienen. Eine Deduplikation spart Platz durch Detektieren und gemeinsames Nutzen von Blöcken mit demselben Inhalt, was entgegengesetzt zu einer Kompression ist, die stattdessen den Platz reduziert, der nötig ist, um Blöcke zu speichern. Jedoch leiden solche Software-Deduplikationsansätze an den oben beschriebenen Problemen (i)–(iii), während existierende Hardware-Deduplikation allgemein bei geringer Granularität (z. B. Cache-Line) durchgeführt wird, was einen hohen Metadatenzusatz veranlasst. Existierende Hardware- sowie Software-Deduplikationsschemen erfordern einen rechenintensiven, platzintensiven und energieintensiven Prozess zum Finden von Blöcken mit Duplikatinhalt.
  • ZUSAMMENFASSUNG
  • Diese Zusammenfassung führt eine Auswahl von Konzepten in einer vereinfachten Form ein, um ein grundsätzliches Verstehen von einigen Aspekten der vorliegenden Offenbarung zur Verfügung zu stellen. Diese Zusammenfasssung ist nicht eine umfangreiche Übersicht über die Offenbarung und es ist nicht beabsichtigt, dass sie Schlüsselelemente oder kritische Elemente der Offenbarung identifiziert oder den Schutzumfang der Offenbarung beschreibt bzw. skizziert. Diese Zusammenfassung präsentiert lediglich einige der Konzepte der Offenbarung als Einleitung zu der nachfolgend zur Verfügung gestellten Detaillierten Beschreibung.
  • Die vorliegende Offenabrung betrifft allgemein Verfahren und Systeme für eine Speicherdekompression. Spezifischer betreffen Aspekte der vorliegenden Offenbarung ein Dekomprimieren eines Speichers unter Verwendung eines Hardware-Dekompressors, der entwickelt ist, um eine Beteiligung von Software zu minimieren oder zu eliminieren.
  • Eine Ausführungsform der vorliegenden Offenabrung betrifft einen Hardware-Dekompressor umfassend eine Hardwarevorrichtung, die zwischen einer Verarbeitungseinheit und einem physikalischen Computerspeicher angeordnet ist, wobei die Hardwarevorrichtung konfiguriert ist, um: eine Speicherzugriff-Leseanfrage zu empfangen, wobei die empfangene Anfrage einen Cache-Ausfall oder Seitenfehler veranlasst; zu bestimmen, ob durch die Speicherzugriff-Leseanfrage angefragte Daten in einem komprimierten Speicherblock sind; in Reaktion auf eine Bestimmung, dass die durch die Speicherzugriff-Leseanfrage angefragten Daten nicht in einem komprimierten Speicherblock sind, die Speicherzugriff-Leseanfrage zum physikalischen Computerspeicher weiterzuleiten; in Reaktion auf ein Bestimmen, dass die durch die Speicherzugriff-Leseanfrage angefragten Daten in einem komprimierten Speicherblock sind, zu bestimmen, ob die Daten vom komprimierten Speicherblock zuvor dekomprimiert und in einem bestimmten Speichermedium lokal zur Hardwarevorrichtung gespeichert worden sind; in Reaktion auf ein Bestsimmen, das die Daten vom komprimierten Speicherblock im Speichermedium gespeichert sind, in Reaktion auf die Speicherzugriff-Leseanfrage die Daten vom Speichermedium zurückzubringen; und in Reaktion auf ein Bestimmen, dass die Daten vom komprimierten Speicherblock nicht im Speichermedium gespeichert sind, Speicherplatz im Speichermedium zuzuteilen; die Daten vom komprimierten Speicherblock zu lesen; die gelesenen Daten vom komprimierten Speicherblock in das Speichermedium zu dekomprimieren; und die dekomprimierten Daten vom Speichermedium in Reaktion auf die Speicherzugriff-Leseanfrage zurückzubringen.
  • Bei einer weiteren Ausführungsform ist die Hardwarevorrichtung des Dekompressors konfiguriert, um: die Daten vom komprimierten Speicherblock zu lesen, bis die durch die Speicherzugriff-Leseanfrage angefragten Daten lokalisiert sind; und die gelesenen Daten vom komprimierten Speicherblock in das Speichermedium nur bis zu der Stelle zu dekomprimieren, an welcher die gelesenen Daten vollständig wiedergewonnen sind.
  • Bei einer weiteren Ausführungsform ist die Hardwarevorrichtung des Dekompressors konfiguriert, um: zu bestimmen, ob die durch die Speicherzugriff-Leseanfrage angefragten Daten im komprimierten Speicherblock sind, durch Prüfen ungenutzter Bits von Seitentabellenstrukturen, die Information über virtuelle Speicherseiten speichern.
  • Bei noch einer weiteren Ausführungsform ist die Hardwarvorrichtung des Dekompressors konfiguriert, um selektiv zwischen einem Mode einer vollständigen Speicherdekompression und einem Mode einer teilweisen Speicherdekompression zu wechseln.
  • Bei noch einer weiteren Ausführungsform ist die Hardwarevorrichtung des Dekompressors konfiguriert, um zwischen dem Mode einer vollständigen Speicherdekompression und dem Moden einer teilweisen Speicherdekompression basierend auf einem oder mehreren Leistungsparametern einer Vorrichtung oder eines Programms zu wechseln, die oder das mit der empfangenen Speicherzugriff-Leseanfrage assoziiert ist.
  • Bei einer weiteren Ausführungsform ist die Hardwarevorrichtung des Dekompressors konfiguriert, um zwischen dem Mode einer vollständigen Speicherdekompression und dem Mode einer teillweisen Speicherdekompression basierend auf einem Signal zu wechseln, das von einer Vorrichtung oder einem Programm empfangen ist, die oder das mit der empfangenen Speicherzugriff-Leseanfrage assoziiert ist.
  • Eine weitere Ausführungsform der vorliegenden Offenbarung betrifft ein Verfahren zur Speicherdekompression, wobei das Verfahren umfasst: Empfangen einer Speicherzugriff-Leseanfrage, wobei die empfangene Anfrage veranlasst, dass ein Cache-Ausfall oder ein Seitenfehler auftritt; Bestimmen, ob durch die Speicherzugriff-Leseanfrge angefragte Daten in einem komprimierten Speicherblock sind; in Reaktion auf ein Bestimmen, dass die durch die Speicherzugriff-Leseanfrge angefragten Daten nicht in einem komprimierten Speicherblock sind, Senden der Speicherzugriff-Leseanfrage zu einem physikalischen Computerspeicher; in Reaktion auf ein Bestimmen, dass die durch die Speicherzugriff-Leseanfrge angefragten Daten in einem komprimierten Speicherblock sind, Bestimmen, ob die Daten vom komprimierten Speicherblock zuvor durch eine Hardware-Dekompressionsvorrichtung dekomprimiert und in einem bestimmten Speichermedium lokal zur Hardware-Dekompressionsvorrichtung gespeichert worden sind; in Reaktion auf ein Bestimmen, dass die Daten aus dem komprimierten Speicherblock in dem bestimmten Speichermedium lokal zur Hardware-Dekompressionsvorrichtung gespeichert sind, Zurückbringen der Daten vom Speichermedium in Reaktion auf die empfangene Speicherzugriff-Leseanfrage; und in Reaktion auf ein Bestimmen, dass die Daten vom komprimierten Speicherblock nicht im bestimmten Speichermdium lokal zur Hardware-Dekompressionsvorrichtung gespeichert sind, Zuteilen von Speicherplatz im Speichermedium lokal zur Hardware-Dekompressionsvorrichtung; Lesen der Daten vom komprimierten Speicherblock; Dekomprimieren der gelesenen Daten vom komprimierten Speicherblock in das Speichermedium lokal zur Hardware-Dekompressionsvorrichtung; und Zurückbringen der dekomprimierten Daten vom Speichermedium in Reaktion auf die Speicherzugriff-Leseanfrage.
  • Bei einer weiteren Ausführungsform umfasst das Verfahren zur Speicherdekompression weiterhin: Lesen der Daten vom komprimierten Speicherblock, bis die durch die Speicherzugriff-Leseanfrage angefragten Daten lokalisiert sind; und Dekomprimieren der gelesenen Daten vom komprimierten Speicherblock in das Speichermedium lokal zur Hardware-Dekompressionsvorrichtung nur bis zu der Stelle, an welcher die angefragten Daten vollständig wiedergewonnen sind.
  • Bei einer weiteren Ausführungsform umfasst das Verfahren zur Speicherdekompression weiterhin: Bestimmen, ob die durch die Speicherzugriff-Leseanfrage angefragten Daten im komprimierten Speicherblock sind, durch Prüfen ungenutzter Bits von Seitentabellenstrukturen, die Information über virtuelle Speicherseiten speichern.
  • Bei noch einer weiteren Ausführungsform umfasst das Verfahren zur Speicherdekompression weiterhin: selektives Wechseln zwischen einem Mode einer vollständigen Speicherdekompression und einem Mode einer teilweisen Speicherdekompression.
  • Eine noch weitere Ausführungsform der vorliegenden Offenabrung betrifft ein System zur Speicherdekompression, wobei das System einen Systemspeicher; wenigstens einen mit dem Systemspeicher gekoppelten Prozessor; und ein mit dem wenigstens einen Prozessor assoziiertes nichtflüchtiges computerlesbares Medium umfasst, wobei das nichtflüchtige Medium Anweisungen darauf gespeichert hat, die dann, wenn sie durch den wenigstens einen Prozessor ausgeführt werden, den wenigstens einen Proozessor veranlassen, um: eine Speicherzugriff-Leseanfrage zu empfangen, wobei die empfangene Anfrage veranlasst, dass ein Cache-Ausfall oder Seitenfehler auftritt; zu bestimmen, ob durch die Speicherzugriff-Leseanfrage angefragte Daten in einem komprimierten Speicherblock sind; in Reaktion auf ein Bestimmen, dass die durch die Speicherzugriff-Leseanfrage angefragten Daten nicht in einem komprimierten Speicherblock sind, die Speicherzugriff-Leseanfrage zu einem physikalischen Computerspeicher zu senden; in Reaktion auf ein Bestimmen, dass die durch die Speicherzugriff-Leseanfrage angefragten Daten in einem komprimierten Speicherblock sind, zu bestimmen, ob die Daten vom komprimierten Speicherblock zuvor dekomprimiert und in einem bestimmten Speichermedium lokal zur Hardwarevorrichtung gespeichert worden sind; in Reaktion auf ein Bestsimmen, dass die Daten vom komprimierten Speicherblock im Speichermedium gespeichert sind, in Reaktion auf die Speicherzugriff-Leseanfrage die Daten vom Speichermedium zurückzubringen; und in Reaktion auf ein Bestimmen, dass die Daten vom komprimierten Speicherblock nicht im Speichermedium gespeichert sind, Speicherplatz im Speichermedium zuzuteilen; die Daten vom komprimierten Speicherblock zu lesen; die gelesenen Daten vom komprimierten Speicherblock in das Speichermedium zu dekomprimieren; und die dekomprimierten Daten vom Speichermedium in Reaktion auf die Speicherzugriff-Leseanfrage zurückzubringen.
  • Bei einer oder mehreren anderen Ausführungsformen können die hierin beschriebenen Verfahren und Systeme optional eines oder mehrere der folgenden zusätzlichen Merkmale enthalten: die Hardware-Dekompressionsvorrichtung ist zwischen einem Cache des letzten Levels einer Verarbeitugseinheit und dem physikalischen Computerspeicher angeordnet; der Wechsel zwischen dem Mode einer vollständigen Speicherdekompression und dem Mode einer teilweisen Speicherdekompression basiert auf einem oder mehreren Leistungsparametern einer Vorrichtung oder eines Programms, die oder das mit der empfangenen Speicherzugriff-Leseanfrage assoziiert ist; und/oder der Wechsel zwischen dem Mode einer vollständigen Speicherdekompression und dem Mode einer teilweisen Speicherdekompression basiert auf einem von einer Vorrichtung oder einem Programm empfangenen Signal, die oder das mit mit der empfangenen Speicherzugriff-Leseanfrage assoziiert ist.
  • Es sollte beachtet werden, dass Ausführungsformen einiger oder aller der hierin offenbarten Prozessor- und Speichersysteme auch konfiguriert sein können, um einige oder alle der oben offenbarten Verfahrensausführungsformen durchzuführen. Zusätzlich können Ausführungsformen einiger oder aller der oben offenbarten Verfahren auch als Anweisungen dargestellt werden, die auf flüchtigen oder nichtflüchtigen prozessorlesbaren Speichermedien verkörpert sind, wie beispielsweise einem optischen oder magnetischen Speicher, oder als ein fortgeleitetes Signal, das zu einem Prozessor oder einer Datenverarbeitungsvorrichtung über ein Kommunikationsnetzwerk, wie beispielsweise ein Internet oder eine Telefonverbindung, geliefert wird.
  • Weiterer Schutzumfang und weitere Anwendbarkeit der Verfahren und Systeme der vorliegenden Offenabrung werden aus der nachfolgend angegebenen Detaillierten Beschreibung klar werden. Jedoch sollte es verstanden werden, dass die Detaillierte Beschreibung und spezifische Beispiele, während sie Ausführungsformen der Verfahren und Systeme anzeigen, nur anhand einer Illustration angegeben sind, da verschiedene Änderungen und Modigfikationen innerhalb des Sinngehalts und Schutzumfangs der hierin offenbarten Konzepte Fachleiten auf dem Gebiet aus dieser Detaillierten Beschreibung klar sein werden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Diese und andere Aufgaben, Merkmale und Eigenschaften der vorliegenden Offenbarung werden Fachleuten auf dem Gebiet aus einem Studium der folgenden Detaillierten Beschreibung in Verbindung mit den beigefügten Ansprüchen und Zeichnungen klarer werden, von welchen alle einen Teil dieser Beschreibung bilden. In den Zeichnungen gilt:
  • 1 ist ein Blockdiagramm, das ein beispielhaftes System für eine hardwareunterstützte Speicherdekompression gemäß einer oder mehrerer Ausführungsformen darstellt, die hierin beschrieben ist oder sind.
  • 2 ist ein Ablaufdiagramm, das ein beispielhaftes Verfahren zur Speicherdekompression unter Verwendung kundenspezifischer Dekompressionshardware gemäß einer oder mehrerer Ausführungsformen darstellt, die hierin beschrieben ist oder sind.
  • 3 ist ein Ablaufdiagramm, das ein beispielhaftes Verfahren zur Speicherkompression gemäß einer oder mehrerer Ausführungsformen darstellt, die hierin beschrieben ist oder sind.
  • 4 ist ein Blockdiagramm, das ein Beispiel einer teilweisen Dekompression eines Speicherblocks durch einen Hardware-Dekompressor gemäß einer oder mehrerer Ausführungsformen darstellt, die hierin beschrieben ist oder sind.
  • 5 ist ein Blockdiagramm, das ein beispielhaftes Schema zum Codieren einer Adresse eines komprimierten Speichers unter Verwendung von durch eine CPU oder eine Vorrichtung zur Speicherumsetzung bzw. -übersetzung verwendeten existierenden Seitentabellendatenstrukturen gemäß einer oder mehrerer Ausführungsformen darstellt, die hierin beschrieben ist oder sind.
  • 6 ist ein Blockdiagramm, das eine beispielhafte Computervorrichtung, die für eine transparente Speicherdekompression angeordnet und eingerichtet ist, gemäß einer oder mehrerer Ausführungsformen darstellt, die hierin beschrieben ist oder sind.
  • Die hierin zur Verfügung gestellten Überschriften sind nur der Annehmlichkeit halber und beeinflussen nicht notwendigerweise den Schutzumfang oder die Bedeutung von dem, was in der vorliegenden Offenbarung beansprucht ist.
  • In den Zeichnungen identifizieren dieselben Bezugszeichen und irgendwelche Akronyme Elemente oder Handlungen mit derselben oder einer ähnlichen Struktur oder Funktionalität für ein einfacheres Verstehen und der Annehmlichkeit halber. Die Zeichnungen werden im Verlauf der folgenden Detaillierten Beschreibung detailliert beschrieben werden.
  • DETAILLIERTE BESCHREIBUNG
  • Nun werden verschiedene Beispiele und Ausführungsformen der Verfahren und Systeme der vorliegenden Offenbarung beschrieben werden. Die folgende Beschreibung stellt spezifische Details für ein vollständiges Verstehen und Freigeben einer Beschreibung dieser Beispiele zur Verfügung. Fachleute auf dem relevanten Gebiet werden jedoch verstehen, dass eine oder mehrere Ausführungsformen, die hierin beschrieben sind, ohne viele dieser Details ausgeführt werden können. Gleichermaßen werden Fachleute auf dem relevanten Gebiet auch verstehen, dass eine oder mehrere Ausführungsformen der vorliegenden Offenbarung andere Merkmale enthalten können, die hierin nicht detailliert beschrieben sind. Zusätzlich können einige wohlbekannte Strukturen oder Funktionen unten nicht detailliert gezeigt oder beschrieben sein, um ein unnötiges Verdunkeln der relevanten Beschreibung zu vermeiden.
  • Wie es oben beschrieben ist, basieren viele existierende Speicherdekompressionsansätze nur auf Software und leiden somit an einer Anzahl von Problemen (z. B. den oben beschriebenen Problemen (i)–(iii)), die in einem erhöhten Energieverbrauch und einer reduzierten Ausführungsgeschwindigkeit von Programmen und ihren zugehörigen Kosten resultieren.
  • Eine oder mehrere Ausführungsformen der vorliegenden Offenbarung betreffen ein Verfahren und ein System zur Speicherdekompression, das die zu den existierenden Techniken gehörenden Nachteile durch Hinzufügen von kundenspezifischer Hardware zum Speicher-Untersystem eliminiert. Wie es unten in größerem Detail beschrieben werden wird, handhabt die kundenspezifische bzw. spezielle Hardware Lesezugriffe, die durch beispielsweise Cache-Ausfälle oder Anfragen von Vorrichtungen (z. B. Grafkverarbeitungseinheit (GPU)) zu komprimierten Speicherblöcken verursacht sind, durch Lesen eines komprimierten Blocks, Dekomprimieren von ihm in einen internen Puffer und Zurückbringen des angefragten Teilbereichs des Blocks.
  • Gemäß wenigstens einer Ausführugsform ist die kundenspezifische Hardware entwickelt oder auf andere Weise konfiguriert, um zu bestimmen, ob der Block komprimiert ist (und die Parameter der Kompression zu bestimmen), und zwar durch Prüfen ungenutzter hoher Bits der physikalischen Adresse des Zugriffs. Eine solche Ausführungsform lässt zu, dass eine Kompression ohne zusätzliche Metadaten implementiert wird, weil die nötigen Metadaten in ungenutzten Bits in den existierenden Seitentabellenstrukturen gespeichert werden können.
  • Gemäß einer oder mehreren Ausführungsformen der vorliegenden Offenbarung kann die Hardware optional unkomprimierte Blockbilder unter Verwendung von beispielsweise von zuletzt verwendet oder irgendeiner anderen Ersatzrichtlinie in den internen Puffern als Cachespeicher aufnehmen. Dies reduziert die Bandbreite und Energie, die durch den Hardware-Dekompressor erforderlich sind, um die komprimierten Blockbilder zu lesen, und reduziert auch die durch die kundenspezifische Hardware verwendete Energie, um die Blöcke zu dekomprimieren.
  • Die Vorteile gegenüber oben beschriebenen existierenden Techniken können unter Verwendung eines Hardwareschemas realisiert werden, das zulässt, dass Speicherblöcke ohne Softwarebeteiligung dekomprimiert werden, wie gemäß einer oder mehreren Ausführungsformen der vorliegenden Offenbarung. Die hierin beschriebene kundenspezifische Hardware ist zu einer solchen Lösung fähig.
  • 1 ist ein beispielhaftes System zur hardwareunterstützten Speicherdekompression. Gemäß einer oder mehreren Ausführungsformen der vorliegenden Offenbarung kann das System 100 (das ein Speicher-Untersystem sein kann) einen kundenspezifischen Hardware-Dekompressor 120 enthalten, der spezifisch zum Dekomprimieren von Speicherblöcken entwickelt oder konfiguriert ist, während er jede Beteiligung von zugehöriger Dekompressionssoftware minimiert (oder eliminiert).
  • Der Dekompressor 120 kann Lese-Speicheranfragen (170, 180) von einem CPU-Last-Level-Cache 110 und/oder einer oder mehreren Vorrichtungen 115 (z. B. GPU) empfangen, wobei die Lese-Speicheranfragen (170, 180) Anfragen für einen Zugriff auf Teilbereiche eines physikalischen Speichers 130 sind. Der Dekompressor 120 kann die von dem CPU-Last-Level-Cache 110 und/oder der Vorrichtung 115 empfangenen Lese-Speicheranfragen (170, 180) analysieren, um zu bestimmen, ob die Anfragen für einen Zugriff auf komprimierte Blöcke 135 oder unkomprimierte Blöcke 140 des physikalischen Speichers 130 sind. Wenn beispielsweise der Dekompressor 120 bestimmt, dass ein Zugriff auf einen komprimierten Block 135 für eine gegebene Leseanfrage nicht nötig ist, kann der Dekompressor 120 die Speicher-Leseanfrage (160) zum physikalischen Speicher 130 umgehen (z. B. die Speicher-Leseanfrage kann beispielsweise zur Speichersteuerung durchgelassen werden), den angefragten unkomprimierten Speicherblock (155) vom physikalischen Speicher 130 wiedergewinnen oder auf andere Weise erhalten und den angefragten Speicherblock (165, 175) zum Anforderer liefern (z. B. zu dem CPU-Last-Level-Cache 110 oder der Vorrichtung 115).
  • Bei einem weiteren Beispiel kann, wenn der Dekompressor 120 basierend auf einem Analysieren einer gegebenen Leseanfrage (170, 175) bestimmt, dass ein Zugriff auf einen komprimierten Block 135 des physikalischen Speichers 130 für die Leseanfrage nötig ist, der Dekompressor 120 die Leseanfrage (150) verwenden, um den angefragten komprimierten Block (145) aus dem physikalischen Speicher 130 zu holen, den komprimierten Block zu dekomprimieren und den angefragten Speicherblock (165, 175) zum Anforderer zu liefern (z. B. zu dem CPU-Last-Level-Cache 110 oder der Vorrichtung 115).
  • Während bei wenigstens einer Ausführungsform der vorliegenden Offenbarung der Dekompressor 120 (der beispielsweise ein Hardware-Dekompressor sein kann) zwischen dem Last-Level-Cache bzw. Cache des letzten Levels der CPU 110 oder der Vorrichtung 115 und dem physikalischen Speicher 130 angeordnet sein kann, sollte es bachtet werden, dass einige CPUs oder Vorrichtungen keinerlei Caches haben oder Zugriffe unter einer Umgehung von Caches durchführen können. Als solches sollte gemäß einer oder mehreren Ausführungsformen dann, wenn hierin auf eine Anfrage von einem Last-Level-Cache Bezug genommen wird, es verstanden werden, dass es auch Vorrichtungen und CPUs beschreibt, die keine Caches haben oder die zum Umgehen von solchen Caches fähig sind, und somit 110 ein Prozessor oder eine Prozessorvorrichtung, wie beispielsweie eine Mikrosteuerung, sein kann, oder eine andere Vorrichtung, die Lese-Speicheranfragen durchführt.
  • 2 stellt einen beispielhaften Prozess 200 zur Speicherdekompression unter Verwendung von Dekompressionshardware dar, die spezifisch entwickelt ist, um die Notwendigkeit für eine Softwarebeteiligung zu verhindern. Gemäß einer oder mehreren Ausführungsformen, die hierin beschrieben sind, können Blöcke 205240 bei dem beispielhaften Verfahren 200 zur Speicherdekompression durch kundenspezifische Dekompressionshardware durchgeführt werden (z. B. den Dekompressor 120 bei dem in 1 gezeigten beispielhaften System 100).
  • Beim Block 205 kann die Hardware eine Speicher-Leseanfrage empfangen und beim Block 210 kann die Hardware Lesezugriffe analysieren, um zu bestimmen, ob der angefragte Zugriff zu einem komprimierten Block eines Speichers erfolgt. Wenn beim Block 210 bestimmt wird, dass ein Zugriff zu einem Block eines Speichers erfolgt, der nicht komprimiert wurde, kann die Hardware beim Block 235 die Speicher-Leseanfrage zum physikalischen Speicher umgehen (z. B. kann die Speicher-Leseanfrage zur Speichersteuerung durchgelassen werden). Wenn andererseits beim Block 210 bestimmt wird, dass der angefragte Zugriff zu einem komprimierten Block eines Speichers erfolgt, kann die Dekompressionshardware den Prozess zum Handhaben eines Zugriffs zu dem komprimierten Block starten (z. B. Blöcke 215230).
  • Beispielsweise kann die Dekompressionshardware gemäß wenigstens einer Ausführungsform die Lesezugriffe durch Prüfen von Bits hoher Wertigkeit analysieren (z. B. beim Block 210), die sonst ungenutzt bleiben würden, weil sie sich auf einen physikalischen Speicher beziehen, der nicht auf irgendeinen RAM oder physikalische Vorrichtungen abgebildet ist. Wenn die Bits hoher Wertigkeit anzeigen, dass ein Speicher unkomprimiert ist, kann die Speicher-Leseanfrage zur Speichersteuerung durchgelassen werden (z. B. beim Block 235). Wenn die Bits hoher Wertigkeit anzeigen, dass ein Zugriff zu einem komprimierten Block eines Speichers erfolgt, dann kann die kundenspezifische Hardware den Prozess zum Handhaben eines Zugriffs zum komprimierten Block starten (z. B. Blöcke 215230).
  • Beim Block 215 kann der Hardware-Dekompressor bestimmen, ob der dekomprimierte Datenblock (z. B. ein dekomprimiertes Bild des Blocks) in seinem internen Puffer ist. Beispielsweise kann der Hardware-Dekompressor gemäß wenigstens einer Ausführungsform optional unkomprimierte Blockbilder in seinem einen oder seinen mehreren internen Puffer(n) als Cache ablegen (z. B. unter Verwendung von zuletzt verwendet oder irgendeiner anderen Ersatzrichtlinie). Wenn der Hardware-Dekompressor beim Block 215 bestimmt, dass der dekomprimierte Block im internen Puffer ist, dann kann der Dekompressor beim Block 240 den angefragten Teilbereich des dekomprimierten Blocks zum Anforderer zurückbringen.
  • Wenn der Hardware-Dekompressor beim Block 215 bestimmt, dass der dekomprimierte Block nicht in einem seiner internen Puffer als Cache abgelegt ist, kann der Dekompressor Platz in einem oder mehreren seiner internen Puffer zuteilen (beim Block 220) und, da die Hardware das komprimierte Bild liest (beim Block 225), kann die Hardware das Bild in ihren einen oder ihre mehreren internen Puffer dekomprimieren (z. B. beim Block 230).
  • Wenn der Hardware-Dekompressor einmal bestimmt, dass der angefragte Teilbereich des Blocks dekomprimiert ist und in seinem internen Puffer ist (z. B. beim Block 230), kann der angefragte dekomprimierte Teilbereich zum Anforderer zurückgebracht werden (z. B. beim Block 240).
  • 3 stellt einen beispielhaften Prozess 300 zum Handhaben eines Schreibens zu einem Speicher durch eine CPU oder eine Vorrichtung gemäß einer oder mehreren Ausführugsformen dar, die hierin beschrieben sind.
  • Bei einem Block 305 kann eine Speicher-Schreibanfrage empfangen werden und bei einem Block 310 kann eine Bestimmung diesbezüglich gemacht werden, ob die empfangene Schreibanfrage zu komprimierten Daten oder unkomprimierten Daten erfolgt (z. B. ob das empfangene Schreiben zu einem komprimierten Speicherblock erfolgt oder nicht). Gemäß wenigstens einer Ausführungsform kann, wenn beim Block 310 bestimmt wird, dass das empfangene Schreiben zu einem Speicherblock erfolgt, der unkomprimiert ist, das Schreiben zu einem physikalischen Speicher umgangen werden (bei einem Block 335). Wenn andererseits das empfangene Schreiben zu einem komprimierten Speicherblock erfolgt, dann ist bei einer solchen Ausführungsform der Block zuvor als nur zu lesen in den Seitentabellen der CPU oder Vorrichtung markiert worden, und auf ein Schreiben hin wird ein Seitenfehler erzeugt (bei einem Block 315).
  • Der Handhaber des Seitenfehlers (erzeugt beim Block 315) kann eine Dekompression des Blocks zu einem physikalischen Speicher durchführen (bei einem Block 320), die Seitentabelle updaten, um eine beschreibbare Referenz zu dem unkomprimierten Block des Speichers zu haben (bei einem Block 325), und den Schreibzugriff erneut starten (bei einem Block 330).
  • 4 stellt ein Beispiel einer teilweisen Dekompression 400 eines Speicherblocks durch einen Hardware-Dekompressor dar. Unter anderen Vorteilen macht eine solche Dekompression angefragten Speicher verfügbar, bevor der noch nicht dekomprimierte Teilbereich verarbeitet wird, um dadurch eine Latenz eines Zugiffs zu erniedrigen.
  • Gemäß einer oder mehreren Ausführungsformen, die hierin beschrieben sind, kann ein Hardware-Dekompressor (z. B. der Dekompressor 120 bei dem in 1 gezeigten beispielhaften System 100) entwickelt oder konfiguriert sein, um zu einem Anforderer 410 (z. B. einem CPU-Cache oder einer Vorrichtung, wie beispielsweise dem CPU-Last-Level-Cache 110 oder der Vorrichtung 115 bei dem in 1 gezeigten beispielhaften System 100) eine angefragte Untergruppe oder einen Teilbereich eines Speicherblocks 440 zurückzubringen, bevor der gesamte Block in einem internen Puffer 415 des Dekompressors dekomprimiert wird. Gemäß wenigstens einer Ausführungsform kann, wenn der angefragte Teilbereich des Speichers 440 einmal in den internen Puffer 415 des Hardware-Dekompressors dekomprimiert ist, der Hardware-Dekompressor ein Dekomprimieren des Blocks des Speichers in den internen Puffer 415 fortsetzen oder der Dekompressor kann mit einem unvollständigen dekomprimierten Block im internen Puffer 415 aufhören bzw. stoppen. Beispielsweise kann der interne Puffer 415 einen dekomprimierten Teilbereich 420 des Blocks und einen noch nicht dekomprimierten Teilbereich 450 des Blocks enthalten.
  • Gemäß einer oder mehreren Ausführungsformen der vorliegenden Offenbarung kann der Hardware-Dekompressor eine auswählbare oder auf andere Weise einstellbare oder selbsteinstellende Konfiguration haben, die zwischen einem einer vollständigen und einer teilweisen Speicherdekompression wechselt (z. B. die Hardware kann konfiguriert sein, um selektiv zwischen einem Mode einer vollständigen Speicherdekompression und einem Mode einer teilweise Speicherdekompression wechselt). Bei einigen solchen Ausführungsformen kann ein automatisches Umschalten zwischen Moden einer vollständigen und einer teilweisen Dekompression geregelt werden durch (z. B. basierend auf) eine oder mehrere Leistungsanforderungen (z. B. Leistungsparameter) der CPU, GPU (grafischen Verarbeitungseinheit) und/oder einer anderen Hardware- oder Software-Datenverarbeitungsvorrichtung oder einem Programm, wofür der Hardware-Dekompressor Daten holt (z. B. Vorrichtung oder Programm, die oder das mit der durch den Hardware-Dekompressor empfangenen Speicherzugriff-Leseanfrage assoziiert ist).
  • Gemäß wenigstens einer Ausführungsform kann der Hardware-Dekompressor konfiguriert sein, um eine einmalige Auswahl zwischen Moden einer vollständigen und teilweisen Dekompression zu haben, die während einer Installation oder Aktivierung durchgeführt wird. Zusätzlich kann der Hardware-Dekompressor gemäß wenigstens einer Ausführungsform konfiguriert sein, um zwischen den Moden einer vollständigen und teilweisen Dekompression basierend auf einem von einer CPU, GPU und/oder einer anderen Vorrichtung oder Software empfangenen Signal umzuschalten, das mit der durch den Hardware-Dekompressor empfangenen Speicherzugriff-Leseanfrage assoziiert sein kann oder nicht.
  • Es sollte beachtet werden, dass der Hardware-Dekompressor gemäß wenigstens einer Ausführungsform mehr als einen internen Puffer haben kann und bei einer solchen Ausführungsform der Dekompressor das unkomprimierte (oder dekomprimierte) Blockbild in einem der internen Puffer sichern bzw. speichern kann. Auf einen nachfolgenden Zugriff auf denselben Block hin kann der Hardware-Dekompressor ein Ergebnis zurückbringen, ohne dass er eine Dekompression durchführen muss und ohne dass er das komprimierte Bild liest. Zusätzlich kann der Hardware-Dekompressor bei einer oder mehreren Ausführungsformen entwickelt sein, um ohne einen internen Puffer zu arbeiten.
  • 5 ist ein Schema zum Codieren einer Adresse eines komprimierten Speichers unter Verwendung existierender Seitentabellen-Datenstrukturen, die durch eine CPU oder eine Vorrichtung zur Speicherumsetzung bzw. -übersetzung verwendet werden, gemäß einer oder mehreren Ausführungsformen, die hierin beschrieben sind. Es ist ein Beispiel diesbezüglich dargestellt, wie Seitentabellen arbeiten und wie Seitentabellen erweitert werden können, um zusätzliche Information zu speichern, die nötig ist, um einen komprimierten Block eines Speichers zu lokalisieren. Die virtuelle Adresse 505 wird durch eine CPU oder eine Vorrichtung als Teil einer Speicheranfrage zugeführt. Die virtuelle Adresse 505 besteht aus einer virtuellen Seitenzahl 510 und einem Offset innerhalb der Seite 515. Die Speicherumsetzungseinheit bzw. -übersetzungseinheit 520 (Speichermanagementeinheit) konsultiert Seitenumsetzungseinheiten 525, um die virtuelle Seitenzahl 510 in eine physikalische Seitezahl 535 umzuwandeln und auf Schutzbits (nicht gezeigt) zuzugreifen.
  • Die Kombination aus physikalischer Seitenzahl 535 und Offset innerhalb der Seite 540 (gleich dem Offset in der Seite 515 der virtuellen Adresse 505) erzeugt eine physikalische Adresse 530. Die physikalische Adresse 530 kann in einem von zwei Formaten präsentiert werden: physikalische Adresse 545 eines unkomprimierten Blocks oder physikalische Adresse 560 des komprimierten Blocks. Wenn eine physikalische Adresse 530 die physikalische Adresse des unkomprimierten Blocks 545 ist, dann können einige der Bits der Adresse (550) ungenutzt sein, und der Rest der Bits (555) stellt die physikalische Adresse des unkomprimierten Blocks zur Verfügung, der zum Speicher-Untersystem durchgelassen werden wird. Wenn die physikalische Adresse 530 die physikalische Adresse des komprimierten Blocks 560 ist, dann stellen Bits 565 eine physikalische Adresse des komprimierten Speichers und zusätzliche Flags, die zur Dekompression nötig sind, zur Verfügung (z. b. Kompressionsprozess oder -verfahren). Gemäß wenigstens einer Ausführungsform der vorliegenden Offenbarung kann die Hardware entscheiden, welches der Formate für eine physikalische Adresse (545, 560) verwendet wird, basierend auf bespielsweise dem Deskriptor-Bit von jedem Format (z. B. Deskriptor-Bit 570 für die physikalische Adresse 545, welches „0” ist, und Deskriptor-Bit für die physikalische Adresse 560, welches „1” ist).
  • Zusätzlich zu einem Anzeigen, ob die Seite komprimiert ist, können die ungenutzten Bits von beispielsweise einem Seitentabelleneintrag verwendet werden, um die Parameter einer Kompression anzuzeigen (z. B. den Kompressionsprozess oder das -verfahren). Die Kompression der Blöcke wird durch die Software manipuliert. Gemäß wenigstens einer Ausführungsform der vorliegenden Offenbarung können virtuelle Speicherseiten als Kompressionsblöcke verwendet werden. Auf diese Weise kann, wenn der OS-(Betriebssystem-)Kernel erfasst, dass auf eine bestimmte Seite nicht häufig zugegriffen wird, er sie zu einem separaten Puffer komprimieren. Danach kann der OS-Kernel den Seitentabelleneintrag ändern, um sich auf die komprimierte Seite zu beziehen, und er kann auch ungenutzte hohe Bits der physikalischen Adresse im Seitentabelleneintrag einstellen bzw. setzen, um anzuzeigen, dass die Seite komprimiert ist (und die Parameter einer Kompression). Der OS-Kernel kann auch die komprimierte Seite als „nur lesen” markieren. Dies kann beispielsweise bei einer oder mehreren Ausführungsformen durchgeführt werden, wo der Hardware-Dekompressor konfiguriert ist, um nur Lesezugriffe zu handhaben. Gemäß einer oder mehreren Ausführungsformen würde die Seite bei dem Schreibzugriff dekomprimiert werden.
  • Gemäß einer oder mehreren Ausführungsformen kann der hierin beschriebene Hardware-Dekompressor konfiguriert oder entwickelt sein, um zu erlauben, dass die existierende Speicherhierarchie verwendet wird, um auf einen komprimierten Block zuzugreifen, der größer als die angefragte Größe ist. Die gemäß einer oder mehreren Ausführungsformen der vorliegenden Offenbarung beschriebenen Hardware-Dekompressoren eliminieren (oder eliminieren im Wesentlichen oder minimieren) eine Softwarebeteiligung bei dem Lesezugriff auf den komprimierten Block. Dies verbessert eine Leistungsfähigkeit und reduziert einen Energieverbrauch durch Entfernen einer Softwarebeteiligung beim Handhaben von Lesezugriffen auf komprimierte Blöcke. Solche Ausführungsformen benötigen auch keinen zusätzlichen RAM, um den komprimierten Block zu lesen. Dies reduziert die Wahrscheinlickeit eines Eintretens von dem, was als Überlastungszustand bekannt ist, welcher in einer schlechten Erfahrung für den Anwender resultiert. Weil der Aufwand bzw. die Kosten eines Zugriffs und eine Wahrscheinlichkeit einer Überlastung mit diesem Ansatz radikal niedriger sind, können die eine oder die mehreren Ausführungsformen des hierin beschriebenen Hardware-Dekompressors zulassen, dass ein größerer Teilbereich des Speicher komprimiert wird, was ein billigeres System mit einer geringeren Menge an RAM ermöglicht.
  • Es sollte beachtet werden, das gemäß einigen Ausführungsformen der vorligenden Offenbarung anstelle eines Speicherns eines dekomprimierten Blocks in einen internen Puffer der Hardware-Dekompressor den dekomprimierten Block in eine separate, potentiell energieeffizientere oder schnellere Speichervorrichtung speichern kann. Auf diese Weise würden Zugriffe auf denselben Block weniger Dekompression und ein Lesen eines komprimierten Bilds erfordern.
  • Alternative Implementierungen können die Dekompressions-Hardware in eine andere Ebene einer Cache-Hierarchie platzieren und/oder Dekompressions-Hardware in der Vorrichtung einbetten, die eine transparente Dekompression benötigen kann, oder zwischen einen Speicherpuffer, der kein Cache ist, (z. B. lokaler GPU-Speicher) und Cache/RAM. Bei anderen Beispielen kann der Hardware-Dekompressor Teil des Busses sein, der unterschiedliche Teile eines Systems auf einem Chip verbindet, kann in der Speichersteuerung eingebettet sein oder im Speicherchip eingebettet sein. Solche alternative Implementierungen stellen unterschiedliche Kompromisse in Bezug auf eine Entwicklungskomplexität, einen Energieverbrauch und eine Leistungsfähigkeit zur Verfügung. Beispielsweise reduziert ein Einbetten des Hardware-Dekompressors in der CPU-Cache-Steuerung und/oder in Vorrichtungen, die eine transparente Dekompression benötigen können, die Bandbreitenanforderungen und den Energieverbrauch des Busses, da in solchen Fällen komprimierte Daten anstelle von größeren unkomprimierten Daten über den Bus transferiert werden müssten.
  • Gemäß einer oder mehreren Ausführungsformen kann der hierin beschriebene Hardware-Dekompressor konfiguriert sein, um unterschiedliche Arten zum Speichern von Information über Kompression verwenden oder nutzen. Beispielsweise können, anstelle der hohen Bits von Seitentabellen, die Metadaten über komprimierte Daten in Speicherbeschreibungsregistern gespeichert werden, oder Bits eines softwaregemanagten Übersetzungspuffers (TLB), oder einige Metadaten, die spezifisch erzeugt sind, um eine Kompression zu handhaben. Weitere alternative Konfigurationen können eine Kompression und eine Deduplikation durch derartiges Anderen der Metadaten kombinieren, dass Blöcke mit demselben Inhalt dasselbe Bild gemeinsam nutzen.
  • Gemäß einer oder mehreren Ausführungsformen der vorliegenden Offenbarung können, anstelle eines Verwendens eines Hardware-Dekompressors, wie beispielsweise denjenigen, der hierin beschrieben ist, die zur Verfügung gestellten Verfahren und Systeme bespielsweise eine Spezial-CPU verwenden, die eine Hardware-Dekompression durchführen kann, oder können eine Teilstück eines Codes verwenden, der auf derselben CPU läuft, die den Seitenausfall verursacht. Gemäß einigen solchen Ausführungsformen würde der Cache-Line- bzw. Cache-Zeilen-Ausfall eine CPU-Ausnahme ähnlich einem Seitenfehler verursachen. Der Handhaber dieser Ausnahme würde dann erkennen, dass die Ausnahme durch einen Versuch oder eine Anfrage versacht wurde, auf komprimierte Daten zuzugreifen. Der Handhaber würde dann auf die hierin beschriebene Weise die Seite in den internen Puffer dekomprimieren und würde dann die Anweisung, die den Ausfall verursachte, in einem speziellen Mode erneut starten. In diesem speziellen Mode würden die Daten, die die Anweisung verwenden würde, von dem internen Puffer kommen, der unkomprimierte Daten enthält, anstelle von Daten bei der Adresse, die den Ausfall verursachten.
  • Unter zahlreichen anderen Vorteilen und Nutzen verbessert ein Durchführen einer Speicherdekompression mit einem Hardware-Dekompressor, wie es hierin beschrieben ist, eine Leistungsfähigkeit, reduziert einen Energieverbrauch und reduziert die Kosten eines Aufbauens der Hardware durch Bereitstellen einer ähnlichen Leistungsfähigkeit mit einer geringeren Menge an installiertem RAM.
  • 6 ist ein Blockdiagramm auf hoher Ebene einer beispielhaften Computervorrichtung (600), die für eine transparente Speicherdekompression angeordnet und eingerichtet ist, gemäß einer oder mehreren Ausführungsformen, die hierin beschrieben sind. Bei einer sehr grundsätzlichen Konfiguration (601) enthält die Computervorrichtung (600) typischerweise einen oder mehrere Prozessoren (610) und einen Systemspeicher (620). Ein Speicherbus (630) kann zum Kommunizieren zwischen dem Prozessor (610) und dem Systemspeicher (620) verwendet werden.
  • In Abhängigkeit von der erwünschten Konfiguration kann der Prozessor (610) von irgendeinem Typ sein, einschließlich, aber nicht darauf beschränkt, eines Mikroprozessors (μP), einer Mikrosteuerung (μC), eines digitalen Signalprozessors (DSP) oder von ähnlichem, oder irgendeiner Kombination davon. Der Prozessor (610) kann eine Ebene mehr für eine Zwischenspeicherung, wie beispielsweise einen Level-1-Cache (611) und einen Level-2-Cache (612), einen Prozessorkern (613) und Register (614) enthalten. Der Prozessorkern (613) kann eine Arithmetik-Logikeinheit (ALU), eine Gleitkommaeinheit (FPU), einen Digitalsignalverarbeitungskern (DSP-Kern) oder ähnliches oder irgendeine Kombination davon enthalten. Eine Speichersteuerung (615) kann auch mit dem Prozessor (610) verwendet werden, oder bei einigen Implementierungen kann die Speichersteuerung (615) ein interner Teil des Prozessors (610) sein.
  • In Abhänhgigkeit von der entwickelten Konfiguration kann der Systemspeicher (620) von irgendeinem Typ sein, einschließlich, aber nicht darauf beschränkt, eines flüchtigen Speichers (wie beispielsweise eines RAM), eines nichtflüchtigen Speichers (wie beispielsweise eines ROM, eines Flas-Speichers, etc.) oder irgendeiner Kombination davon. Der Systemspeicher (620) enthält typischerweise ein Betriebssystem (621), eine oder mehrere Anwendungen (622) und Programmdaten (624). Die Anwendung (622) kann ein System zur transparenten Speicherdekompression (623) enthalten. Gemäß wenigstens einer Ausführungsform der vorliegenden Offenbarung ist das System zur transparenten Speicherdekompression (623) entwickelt, um jede Beteiligung von Software an einem Handhaben von Lesezugriffen auf komprimierte Blöcke eines physikalischen Speichers zu eliminieren (oder im Wesentlichen zu eliminieren oder zu minimieren). Das System zur transparenten Speicherdekompression (623) kann eine verbesserte Leistungsfähigkeit und einen reduzierten Energieverbrauch erreichen sowie Kosten durch Ermöglichen von einfacheren und schnelleren Hardware-Entwicklungen senken.
  • Programmdaten (624) können gespeicherte Anweisungen enthalten, die dann, wenn sie durch die eine oder die mehreren Verarbeitungsvorrichtungen ausgeführt werden, ein System (623) und ein Verfahren zur transparenten Speicherdekompression implementieren. Zusätzlich können die Programmdaten (624) gemäß wenigstens einer Ausführungsform Lesezugriffsdaten (625) enthalten, die sich auf beispielsweise Bits hoher Wertigkeit beziehen können, die anzeigen, ob ein angefragter Teilbereich eines Speichers bereits unkomprimiert ist oder ob stattdessen ein Zugriff auf einen komprimierten Speicherblock nötig ist. Gemäß wenigstens einigen Ausführungsformen kann die Anwendung (622) angeordnet und eingerichtet sein, um mit Programmdaten (624) auf einem Betriebssystem (621) zu arbeiten.
  • Die Computervorrichtung (600) kann zusätzliche Merkmale oder Funktionalität haben, und zusätzliche Schnittstellen, um Kommunikationen zwischen der Basiskonfiguration (601) und erforderlichen Vorrichtungen und Schnittstellen zu ermöglichen.
  • Der Systemspeicher (620) ist ein Beispiel von Computerspeichermedien. Computerspeichermedien enthalten, sind aber nicht darauf beschränkt, RAM, ROM, EEPROM, Flash-Speicher oder andere Speichertechnologie, CD-ROM, digitale vielseitige Scheibe (DVD) oder anderen optischen Speicher, Magnetkassetten, Magnetband, Magnetscheibenspeicher oder andere magnetische Speichervorrichtungen, oder irgendein anderes Medium, das verwendet werden kann, um die erwünschte Information zu speichern, und auf das durch die Computervorrichtung (600) zugegriffen werden kann.
  • Die Computervorrichtung (600) kann als ein Teilbereich einer tragbaren (oder mobilen) elektronischen Small-Form-Factor-Vorrichtung implementiert sein, wie beispielsweise eines Mobiltelefons, eines Smartphones, eines persönlichen digitalen Assistenten (PDA), einer persönlichen Medienabspielgerätevorrichtung, eines Tabletcomputers (Tablet), einer drahtlosen Web-Uhrvorrichtung, einer persönlichen Kopfhörervorrichtung, einer anwendungsspezifischen Vorrichtung oder einer Hybridvorrichtung, die irgendwelche der obigen Funktionen enthalten. Zusätzlich kann die Computervorrichtung (600) auch als ein Personalcomputer implementiert sein, einschließlich sowohl Laptop-Computer- als auch nicht Laptop-Computer-Konfigurationen, eines oder mehrerer Server, Internet-der-Dinge-Systeme und ähnlichem.
  • Die vorangehende detaillierte Beschreibung hat verschiedene Ausführungsformen der Vorrichtungen und/oder Prozesse über den Einsatz von Blockdiagrammen, Ablaufdiagrammen und/oder Beispielen dargelegt. Insoweit solche Blockdiagramme, Ablaufdiagramme und/oder Beispiele eine oder mehrere Funktionen und/oder Operationen enthalten, wird es von Fachleuten auf dem Gebiet verstanden werden, dass jede Funktion und/oder Operation innerhalb von solchen Blockdiagrammen, Ablaufdiagrammen oder Beispielen, einzeln und/oder gemeinsam, durch einen weiten Bereich an Hardware, Software, Firmware oder virtuell irgendeine Kombination davon implementiert werden kann. Gemäß wenigstens einer Ausführungsform können einige Teilbereiche des hierin beschriebenen Gegenstands über anwendungsspezifische integrierte Schaltungen (ASICs), feldprogrammierbare Gate-Arrays (FPGAs), digitale Signalprozessoren (DSPs) oder andere integrierte Formate implementiert werden. Jedoch werden die Fachleute auf dem Gebiet erkennen, dass einige Aspekte der hierin offenbarten Ausführungsformen, im Gesamten oder zum Teil, äquivalent in integrierten Schaltungen, als ein oder mehrere Programme, die auf einem oder mehreren Computern laufen, als Firmware oder als virtuell irgendeine Kombination davon implementiert sein können und dass ein Entwickeln der Schaltung und/oder ein Schreiben des Codes für die Software und/oder Firmware angesichts dieser Offenbarung gut innerhalb der Fähigkeit von jemanden sein würde, der Fachwissen auf dem Gebiet hat.
  • Zusätzlich werden Fachleute auf dem Gebiet verstehen, dass die Mechanismen des hierin beschrienen Gegenstands als ein Programmprodukt in einer Vielfalt von Formen verbreitet werden können und dass eine illustrative Ausführungsform des hierin beschriebenen Gegenstands ungeachtet des bestimmten Typs von einem ein nichtflüchtiges Signal tragendes Medium Anwendung findet, das verwendet wird, um die Verbreitung aktuell auszuführen. Beispiele für ein ein nichtflüchtiges Signal tragendes Medium enthalten, sind aber nicht darauf beschränkt, die folgenden: eine Diskette, ein Festplattenlaufwerk, eine Compact-Disk (CD), eine digitale Videoscheibe (DVD), ein digitales Band, ein Computerspeicher, etc.; und ein Medium vom Übertragungstyp, wie beispielsweise ein digitales und/oder ein analoges Kommunikationsmedium (z. B. ein Glasfaserkabel, eine Wellenleiter, eine verdrahtete Kommunikationsverbindung, eine drahtlose Kommunikationsverbindung, etc.).
  • In Bezug auf die Verwendung von im Wesentlichen irgendwelchen Plural- und/oder Singular-Ausdrücken hierin können Fachleute auf dem Gebiet vom Plural zum Singular und/oder vom Singular zum Plural umsetzen, wie es für den Zusammenhang und/oder die Anwendung geeignet ist. Die verschiedenen Singular/Plural-Vertauschungen können hierin ausdrücklich der Klarheit halber dargelegt sein.
  • Somit sind bestimmte Ausführungsformen des Gegenstands beschrieben worden. Andere Ausführungsformen sind innerhalb des Schutzumfangs der folgenden Ansprüche. In einigen Fällen können die in den Ansprüchen vorgetragenen Aktionen in einer anderen Reihenfolge durchgeführt werden und noch erwünschte Ergebnisse erreichen. Zusätzlich erfordern die in den beigefügten Figuren bildlich dargestellten Prozesse nicht notwendigerweise die gezeigte bestimmte Reihenfolge oder sequentielle Reihenfolge, um erwünschte Ergebnisse zu erreichen. Bei gewissen Implementierungen kann Multitasking und Parallelverarbeitung vorteilhaft sein.

Claims (19)

  1. Hardware-Dekompressor, wobei der Dekompressor umfasst: eine Hardwarevorrichtung (120), die zwischen einer Verarbeitungseinheit (110) und einem physikalischen Computerspeicher (130) angeordnet ist, wobei die Hardwarevorrichtung konfiguriert ist, um: eine Speicherzugriff-Leseanfrage zu empfangen, wobei die empfangene Anfrage einen Cache-Ausfall oder Seitenfehler veranlasst; zu bestimmen, ob durch die Speicherzugriff-Leseanfrage angefragte Daten in einem komprimierten Speicherblock (135) sind; in Reaktion auf ein Bestimmen, dass die durch die Speicherzugriff-Leseanfrage angefragten Daten nicht in einem komprimierten Speicherblock sind, die Speicherzugriff-Leseanfrage zum physikalischen Computerspeicher weiterzuleiten; in Reaktion auf ein Bestimmen, dass die durch die Speicherzugriff-Leseanfrage angefragten Daten in einem komprimierten Speicherblock sind, zu bestimmen, ob die Daten vom komprimierten Speicherblock zuvor dekomprimiert und in einem bestimmten Speichermedium lokal zu der Hardwarevorrichtung gespeichert worden sind; in Reaktion auf ein Bestsimmen, das die Daten vom komprimierten Speicherblock im Speichermedium gespeichert sind, in Reaktion auf die Speicherzugriff-Leseanfrage die Daten vom Speichermedium zurückzubringen; und in Reaktion auf ein Bestimmen, dass die Daten vom komprimierten Speicherblock nicht im Speichermedium gespeichert sind, Speicherplatz im Speichermedium zuzuteilen; die Daten aus dem komprimierten Speicherblock zu lesen; die gelesenen Daten vom komprimierten Speicherblock in das Speichermedium zu dekomprimieren; und die dekomprimierten Daten vom Speichermedium in Reaktion auf die Speicherzugriff-Leseanfrage zurückzubringen.
  2. Hardware-Dekompressor nach Anspruch 1, wobei die Hardwarevorrichtung konfiguriert ist, um: die Daten vom komprimierten Speicherblock zu lesen, bis die durch die Speicherzugriff-Leseanfrage angefragten Daten lokalisiert sind; und die gelesenen Daten vom komprimierten Speicherblock in das Speichermedium nur bis zu der Stelle zu dekomprimieren, an welcher die gelesenen Daten vollständig wiedergewonnen sind.
  3. Hardware-Dekompressor nach Anspruch 1, wobei die Hardwarevorrichtung konfiguriert ist, um: zu bestimmen, ob die durch die Speicherzugriff-Leseanfrage angefragten Daten im komprimierten Speicherblock sind, durch Prüfen ungenutzter Bits von Seitentabellenstrukturen, die Information über virtuelle Speicherseiten speichern.
  4. Hardware-Dekompressor nach Anspruch 1, wobei die Hardwarevorrichtung konfiguriert ist, um: selektiv zwischen einem Mode einer vollständigen Speicherdekompression und einem Mode einer teilweisen Speicherdekompression zu wechseln.
  5. Hardware-Dekompressor nach Anspruch 4, wobei die Hardwarevorrichtung konfiguriert ist, um: zwischen dem Mode einer vollständigen Speicherdekompression und dem Mode einer teilweisen Speicherdekompression basierend auf einem oder mehreren Leistungsparametern einer Vorrichtung oder eines Programms zu wechseln, die oder das mit der empfangenen Speicherzugriff-Leseanfrage assoziiert ist.
  6. Hardware-Dekompressor nach Anspruch 4, wobei die Hardwarevorrichtung konfiguriert ist, um: zwischen dem Mode einer vollständigen Speicherdekompression und dem Mode einer teillweisen Speicherdekompression basierend auf einem Signal zu wechseln, das von einer Vorrichtung oder einem Programm empfangen ist, die oder das mit der empfangenen Speicherzugriff-Leseanfrage assoziiert ist.
  7. Verfahren (200) zur Speicherdekompression, wobei das Verfahren umfasst: Empfangen (205) einer Speicherzugriff-Leseanfrage, wobei die empfangene Anfrage veranlasst, dass ein Cache-Ausfall oder ein Seitenfehler auftritt; Bestimmen (210), ob durch die Speicherzugriff-Leseanfrge angefragte Daten in einem komprimierten Speicherblock sind; in Reaktion auf ein Bestimmen, dass die durch die Speicherzugriff-Leseanfrge angefragten Daten nicht in einem komprimierten Speicherblock sind, Senden (235) der Speicherzugriff-Leseanfrage zu einem physikalischen Computerspeicher; in Reaktion auf ein Bestimmen, dass die durch die Speicherzugriff-Leseanfrge angefragten Daten in einem komprimierten Speicherblock sind, Bestimmen (215), ob die Daten vom komprimierten Speicherblock zuvor durch eine Hardware-Dekompressionsvorrichtung dekomprimiert und in einem bestimmten Speichermedium lokal zur Hardware-Dekompressionsvorrichtung gespeichert worden sind; in Reaktion auf ein Bestimmen, dass die Daten vom komprimierten Speicherblock im bestimmten Speichermedium lokal zur Hardware-Dekompressionsvorrichtung gespeichert sind, Zurückbringen (240) der Daten vom Speichermedium in Reaktion auf die empfangene Speicherzugriff-Leseanfrage; und in Reaktion auf ein Bestimmen, dass die Daten vom komprimierten Speicherblock nicht im bestimmten Speichermdium lokal zur Hardware-Dekompressionsvorrichtung gespeichert sind, Zuteilen (220) von Speicherplatz im Speichermedium lokal zur Hardware-Dekompressionsvorrichtung; Lesen (225) der Daten vom komprimierten Speicherblock; Dekomprimieren (230) der gelesenen Daten vom komprimierten Speicherblock in das Speichermedium lokal zur Hardware-Dekompressionsvorrichtung; und Zurückbringen (240) der dekomprimierten Daten vom Speichermedium in Reaktion auf die Speicherzugriff-Leseanfrage.
  8. Verfahren nach Anspruch 7, wobei die Hardware-Dekompressionsvorrichtung zwischen einer Verarbeitungseinheit und dem physikalischen Computerspeicher angeordnet ist.
  9. Verfahren nach Anspruch 7, das weiterhin umfasst: Lesen der Daten vom komprimierten Speicherblock, bis die durch die Speicherzugriff-Leseanfrage angefragten Daten lokalisiert sind; und Dekomprimieren der gelesenen Daten vom komprimierten Speicherblock in das Speichermedium lokal zur Hardware-Dekompressionsvorrichtung nur bis zu der Stelle, an welcher die angefragten Daten vollständig wiedergewonnen sind.
  10. Verfahren nach Anspruch 7, das weiterhin umfasst: Bestimmen, ob die durch die Speicherzugriff-Leseanfrage angefragten Daten im komprimierten Speicherblock sind, durch Prüfen ungenutzter Bits von Seitentabellenstrukturen, die Information über virtuelle Speicherseiten speichern.
  11. Verfahren nach Anspruch 7, das weiterhin umfasst: selektives Wechseln zwischen einem Mode einer vollständigen Speicherdekompression und einem Mode einer teilweisen Speicherdekompression.
  12. Verfahren nach Anspruch 11, wobei der Wechsel zwischen dem Mode einer vollständigen Speicherdekompression und dem Mode einer teilweisen Speicherdekompression auf einem oder mehreren Leistungsparametern einer Vorrichtung oder eines Programms basiert, die oder das mit der empfangenen Speicherzugriff-Leseanfrage assoziiert ist.
  13. Verfahren nach Anspruch 11, wobei der Wechsel zwischen dem Mode einer vollständigen Speicherdekompression und dem Mode einer teilweisen Speicherdekompression auf einem von einer Vorrichtung oder einem Programm empfangenen Signal basiert, die oder das mit der empfangenen Speicherzugriff-Leseanfrage assoziiert ist.
  14. System zur Speicherdekompression, wobei das System umfasst: einen Systemspeicher; wenigstens einen mit dem Systemspeicher gekoppelten Prozessor; und ein mit dem wenigstens einen Prozessor assoziiertes nichtflüchtiges computerlesbares Medium, wobei das nichtflüchtige Medium Anweisungen darauf gespeichert hat, die dann, wenn sie durch den wenigstens einen Prozessor ausgeführt werden, den wenigstens einen Proozessor veranlassen, um: eine Speicherzugriff-Leseanfrage zu empfangen, wobei die empfangene Anfrage veranlasst, dass ein Cache-Ausfall oder Seitenfehler auftritt; zu bestimmen, ob durch die Speicherzugriff-Leseanfrage angefragte Daten in einem komprimierten Speicherblock sind; in Reaktion auf ein Bestimmen, dass die durch die Speicherzugriff-Leseanfrage angefragten Daten nicht in einem komprimierten Speicherblock sind, die Speicherzugriff-Leseanfrage zum Systemspeicher zu senden; in Reaktion auf ein Bestimmen, dass die durch die Speicherzugriff-Leseanfrage angefragten Daten in einem komprimierten Speicherblock sind, zu bestimmen, ob die Daten vom komprimierten Speicherblock zuvor dekomprimiert und in einem bestimmten Speichermedium lokal zu dem wenigstens einen Prozessor gespeichert worden sind; in Reaktion auf ein Bestimmen, dass die Daten vom komprimierten Speicherblock im Speichermedium gespeichert sind, die Daten vom Speichermedium in Reaktion auf die Speicherzugriff-Leseanfrage zurückzubringen; und in Reaktion auf ein Bestimmen, dass die Daten vom komprimierten Speicherblock nicht im Speichermedium gespeichert sind, Speicherplatz im Speichermedium zuzuteilen; die Daten vom komprimierten Speicherblock zu lesen; die gelesenen Daten vom komprimierten Speicherblock in das Speichermedium zu dekomprimieren; und die dekomprimierten Daten vom Speichermedium in Reaktion auf die Speicherzugriff-Leseanfrage zurückzubringen.
  15. System nach Anspruch 14, wobei der wenigstens eine Prozessor weiterhin veranlasst wird, um: die Daten vom komprimierten Speicherblock zu lesen, bis die durch die Speicherzugriff-Leseanfrage angefragten Daten lokalisiert sind; und die gelesenen Daten vom komprimierten Speicherblock in das peichermedium nur bis zu der Stelle zu dekomprimieren, an welcher die gelesenen Daten vollständig wiedergewonnen sind.
  16. System nach Anspruch 14, wobei der wenigstens eine Prozessor weiterhin veranlasst wird, um: zu bestimmen, ob die durch die Speicherzugriff-Leseanfrage angefragten Daten im komprimierten Speicherblock sind, durch Prüfen ungenutzter Bits von Seitentabellenstrukturen, die Information über virtuelle Speicherseiten speichern.
  17. System nach Anspruch 14, wobei der wenigstens eine Prozessor weiterhin veranlasst wird, um: selektiv zwischen einem Mode einer vollständigen Speicherdekompression und einem Mode einer teilweisen Speicherdekompression zu wechseln.
  18. System nach Anspruch 17, wobei der wenigstens eine Prozessor weiterhin veranlasst wird, um: zwischen dem Mode einer vollständigen Speicherdekompression und dem Mode einer teilweisen Speicherdekompression basierend auf einem oder mehreren Leistungsparametern einer Vorrichtung oder eines Programms zu wechseln, die oder das mit der empfangenen Speicherzugriff-Leseanfrage assoziiert ist.
  19. System nach Anspruch 17, wobei der wenigstens eine Prozessor weiterhin veranlasst wird, um: zwischen dem Mode einer vollständigen Speicherdekompression und dem Mode einer teillweisen Speicherdekompression basierend auf einem Signal zu wechseln, das von einer Vorrichtung oder einem Programm empfangen ist, die oder das mit der empfangenen Speicherzugriff-Leseanfrage assoziiert ist.
DE112016000726.4T 2015-02-13 2016-02-12 Transparente hardwareunterstützte speicherdekompression Active DE112016000726B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562116053P 2015-02-13 2015-02-13
US62/116,053 2015-02-13
PCT/US2016/017745 WO2016130915A1 (en) 2015-02-13 2016-02-12 Transparent hardware-assisted memory decompression

Publications (2)

Publication Number Publication Date
DE112016000726T5 true DE112016000726T5 (de) 2017-11-02
DE112016000726B4 DE112016000726B4 (de) 2024-08-01

Family

ID=55487115

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016000726.4T Active DE112016000726B4 (de) 2015-02-13 2016-02-12 Transparente hardwareunterstützte speicherdekompression

Country Status (4)

Country Link
US (2) US9864541B2 (de)
CN (1) CN107250991B (de)
DE (1) DE112016000726B4 (de)
WO (1) WO2016130915A1 (de)

Families Citing this family (20)

* 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
CN107250991B (zh) 2015-02-13 2020-08-28 谷歌有限责任公司 透明硬件辅助存储器解压缩
GB2543306B (en) * 2015-10-14 2019-05-01 Advanced Risc Mach Ltd Exception handling
US20180060235A1 (en) * 2016-08-30 2018-03-01 Intel Corporation Non-volatile memory compression devices and associated methods and systems
US10546393B2 (en) 2017-12-30 2020-01-28 Intel Corporation Compression in machine learning and deep learning processing
US10504248B2 (en) * 2018-03-30 2019-12-10 Microsoft Technology Licensing, Llc Machine learning applied to textures compression or upscaling
CN112083875B (zh) * 2019-06-12 2022-09-30 三星电子株式会社 用于在存储系统中减少读取端口并加速解压缩的方法
US11221770B2 (en) 2019-12-03 2022-01-11 International Business Machines Corporation Providing a dynamic random-access memory cache as second type memory
JP7197541B2 (ja) * 2020-04-01 2022-12-27 株式会社日立製作所 ストレージ装置
US11586554B2 (en) * 2020-07-23 2023-02-21 Arm Limited Cache arrangements for data processing systems
GB2601183B (en) * 2020-11-23 2022-11-16 Advanced Risc Mach Ltd Data processing systems
US20220197816A1 (en) * 2020-12-22 2022-06-23 Intel Corporation Compressed cache memory with parallel decompress on fault
DE112022001139T5 (de) * 2021-05-13 2024-01-11 Nvidia Corporation Datenkomprimierungs-api
CN113300715B (zh) * 2021-05-20 2022-08-19 山东云海国创云计算装备产业创新中心有限公司 一种数据处理方法、装置、硬件压缩设备以及介质
CN113626092A (zh) * 2021-10-14 2021-11-09 广州匠芯创科技有限公司 嵌入式系统启动方法与soc芯片
US12112199B2 (en) 2021-11-30 2024-10-08 Honeywell International Inc. Interruptible LZO decompression
US20230169020A1 (en) * 2021-11-30 2023-06-01 Honeywell International Inc. Lzo decompression in external storage
US12079622B2 (en) 2022-01-05 2024-09-03 Honeywell International Inc. Interruptable BSDIFF delta decompression
US20240119001A1 (en) * 2022-10-11 2024-04-11 Rambus Inc. Method for caching and migrating de-compressed page
CN117724650A (zh) * 2023-07-19 2024-03-19 荣耀终端有限公司 一种读取压缩文件的方法及电子设备

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0628108A (ja) * 1992-07-09 1994-02-04 Hitachi Ltd データ記憶システム
US6002411A (en) 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US6170047B1 (en) * 1994-11-16 2001-01-02 Interactive Silicon, Inc. System and method for managing system memory and/or non-volatile memory using a memory controller with integrated compression and decompression capabilities
US6067199A (en) * 1997-06-30 2000-05-23 Emc Corporation Method and apparatus for increasing disc drive performance
US6028725A (en) * 1997-06-30 2000-02-22 Emc Corporation Method and apparatus for increasing disc drive performance
US6879266B1 (en) * 1997-08-08 2005-04-12 Quickshift, Inc. Memory module including scalable embedded parallel data compression and decompression engines
US6092071A (en) * 1997-11-04 2000-07-18 International Business Machines Corporation Dedicated input/output processor method and apparatus for access and storage of compressed data
US6564305B1 (en) * 2000-09-20 2003-05-13 Hewlett-Packard Development Company Lp Compressing memory management in a device
US7047382B2 (en) 2000-11-29 2006-05-16 Quickshift, Inc. System and method for managing compression and decompression and decompression of system memory in a computer system
US6877081B2 (en) * 2001-02-13 2005-04-05 International Business Machines Corporation System and method for managing memory compression transparent to an operating system
US6829691B2 (en) * 2002-06-28 2004-12-07 Hewlett-Packard Development, L.P. System for compressing/decompressing data
US6968424B1 (en) * 2002-08-07 2005-11-22 Nvidia Corporation Method and system for transparent compressed memory paging in a computer system
CN1200354C (zh) * 2003-01-17 2005-05-04 清华大学 自动压缩/解压缩文件系统
US20060271761A1 (en) 2003-04-16 2006-11-30 Riemens Abraham K Data processing apparatus that uses compression or data stored in memory
US7437364B1 (en) * 2004-06-30 2008-10-14 Google Inc. System and method of accessing a document efficiently through multi-tier web caching
CN1728281A (zh) * 2004-07-28 2006-02-01 北京九州计算机网络有限公司 一种内含压缩和解压缩功能的移动存储装置
US7433994B2 (en) * 2004-12-07 2008-10-07 Ocz Technology Group, Inc. On-device data compression to increase speed and capacity of flash memory-based mass storage devices
US8473673B2 (en) 2005-06-24 2013-06-25 Hewlett-Packard Development Company, L.P. Memory controller based (DE)compression
US7610541B2 (en) 2006-03-08 2009-10-27 International Business Machines Corporation Computer compressed memory system and method for storing and retrieving data in a processing system
US8122216B2 (en) * 2006-09-06 2012-02-21 International Business Machines Corporation Systems and methods for masking latency of memory reorganization work in a compressed memory system
TW200820261A (en) * 2006-09-08 2008-05-01 Samsung Electronics Co Ltd Fusion memory device and method
JP5235692B2 (ja) * 2009-01-15 2013-07-10 三菱電機株式会社 データアクセス装置及びデータアクセスプログラム
US20110004728A1 (en) * 2009-07-02 2011-01-06 Ocz Technology Group, Inc. On-device data compression for non-volatile memory-based mass storage devices
US8526290B2 (en) * 2009-08-17 2013-09-03 Mediatek Inc. Data compression/decompression method, data decompression method, and optical disc drive utilizing the method
CN102012794A (zh) * 2010-11-19 2011-04-13 北京兆易创新科技有限公司 一种固态硬盘及其访问控制方法、一种固态硬盘控制器
CN102129873B (zh) * 2011-03-29 2012-07-04 西安交通大学 提高计算机末级高速缓存可靠性的数据压缩装置及其方法
EP2746953A4 (de) * 2011-08-15 2014-08-20 Spreadtrum Comm Shanghai Co Bedarfsabhängiges funkrufverfahren für ein mobiles endgerät, steuerung und mobiles endgerät
WO2014049636A1 (en) 2012-09-25 2014-04-03 Hitachi, Ltd. Storage apparatus and method of controlling the same
US20140258247A1 (en) 2013-03-05 2014-09-11 Htc Corporation Electronic apparatus for data access and data access method therefor
TWI522910B (zh) * 2013-10-18 2016-02-21 威盛電子股份有限公司 微處理器、選擇性解壓縮微程式碼方法、產生選擇性壓縮微程式碼方法、產生描述方法以及電腦程式產品
US9740631B2 (en) * 2014-10-07 2017-08-22 Google Inc. Hardware-assisted memory compression management using page filter and system MMU
CN107250991B (zh) 2015-02-13 2020-08-28 谷歌有限责任公司 透明硬件辅助存储器解压缩
US9965210B2 (en) * 2016-05-27 2018-05-08 Ngd Systems, Inc. System and methods for in-storage on-demand data decompression

Also Published As

Publication number Publication date
DE112016000726B4 (de) 2024-08-01
CN107250991B (zh) 2020-08-28
US20180095668A1 (en) 2018-04-05
US20160239209A1 (en) 2016-08-18
CN107250991A (zh) 2017-10-13
US10203901B2 (en) 2019-02-12
WO2016130915A1 (en) 2016-08-18
US9864541B2 (en) 2018-01-09

Similar Documents

Publication Publication Date Title
DE112016000726B4 (de) Transparente hardwareunterstützte speicherdekompression
DE112011102487B4 (de) Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen
DE69620918T2 (de) Speicherseiten-komprimierung
DE112013001284B4 (de) Adaptive Cachespeicher-Umstufungen in einem Caching-System mit zwei Stufen
DE102010013389B4 (de) Verfahren und System zum Durchführen von Caching, basierend auf der Heuristik auf Dateiebene
DE112013002355B4 (de) Steigern von Datenzwischenspeicherungsleistung
DE112018000193T5 (de) Daten sequenziell in Zonen in einem verstreuten Speichernetzwerk speichern
DE112017002941T5 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE102019105879A1 (de) Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher
DE102013205069A1 (de) Erhöhte effizienz bei inline-deduplizierungen
DE112014005521T5 (de) Speichermodul und Verfahren zum Verwalten des Abbildens logischer Adressen auf physikalische Adressen
DE102010053282A1 (de) Modifizierter B+ Baum zum Speichern von Nand-Speicher Umleitungszuordnungen
DE102008025476A1 (de) Übersetzung einer virtuellen Adresse in eine physikalische Adresse mit Unterstützung von Seitenattributen
DE112019002389T5 (de) Architektur zur dynamischen umwandlung einer speicherkonfiguration
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE112012005222T5 (de) Halbleiter-Datenspeicherverwaltung
DE102014111668A1 (de) Flash-Übergangsschicht mit variabler Größe
DE102015007709A1 (de) Invalidationsdatenbereich für einen Cache
DE112012002615T5 (de) Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren
DE102016001591A1 (de) System und Verfahren für Copy-On-Write auf einer SSD
DE102015005817B4 (de) System und Verfahren zum Cachen von SSD Speichergerät- Leseanforderungsergebnissen
DE202019005682U1 (de) Hardwaregestützte Paging-Mechanismen
DE112008001666T5 (de) Hierarchische Cache-Tag-Architektur
DE112013000900T5 (de) Bewahren von Redundanz in Datendeduplizierungssystemen unter Verwendung eines Anzeigers
DE202016107437U1 (de) Daten-Caching

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: PROCK, THOMAS, DR., GB

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R082 Change of representative

Representative=s name: PROCK, THOMAS, DR., GB

R016 Response to examination communication
R018 Grant decision by examination section/examining division