DE112015003540T5 - Zwischenspeichertechnologien unter Einsatz von Datenkomprimierung - Google Patents

Zwischenspeichertechnologien unter Einsatz von Datenkomprimierung Download PDF

Info

Publication number
DE112015003540T5
DE112015003540T5 DE112015003540.0T DE112015003540T DE112015003540T5 DE 112015003540 T5 DE112015003540 T5 DE 112015003540T5 DE 112015003540 T DE112015003540 T DE 112015003540T DE 112015003540 T5 DE112015003540 T5 DE 112015003540T5
Authority
DE
Germany
Prior art keywords
compressed output
cache
memory
compression
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.)
Pending
Application number
DE112015003540.0T
Other languages
English (en)
Inventor
Knut S. Grimsrud
Sanjeev N. Trika
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112015003540T5 publication Critical patent/DE112015003540T5/de
Pending 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/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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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/0877Cache access modes
    • G06F12/0886Variable-length word access
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Es werden Zwischenspeichertechnologien beschrieben, die Datenkomprimierung einsetzen. Die Technologien der vorliegenden Offenbarung enthalten Zwischenspeichersysteme, Verfahren und computerlesbare Medien, in denen Daten in einer Zwischenspeicherleitung komprimiert werden, bevor sie in einen Zwischenspeicher-Arbeitsspeicher geschrieben werden. In einigen Ausführungsformen ermöglichen die Technologien einem Zwischenspeicher-Controller, vor dem Schreiben der komprimierten Daten in den Zwischenspeicher-Arbeitsspeicher das Ausmaß zu verstehen, in dem Daten in einer Zwischenspeicherleitung komprimiert sind. Folglich kann der Zwischenspeicher-Controller zumindest teilweise auf Basis der Größe der komprimierten Daten, eines den komprimierten Daten (oder ihren entsprechenden Eingabedaten) zurechenbaren Komprimierungsverhältnisses oder einer Kombination davon ermitteln, wo die komprimierten Daten im Zwischenspeicher-Arbeitsspeicher zu speichern sind.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung betrifft Zwischenspeichertechnologien. Insbesondere betrifft die vorliegende Offenbarung Zwischenspeichertechnologien für Laufwerke, die Datenkomprimierung einsetzen.
  • STAND DER TECHNIK
  • Elektronische Vorrichtungen wie Desktopcomputer, Laptopcomputer, Smartphones, Tablets und Ähnliches enthalten oft eine oder mehrere periphere Speichervorrichtungen. Ein Desktopcomputer kann zum Beispiel ein Festplattenlaufwerk (HDD) enthalten, das ein magnetisches Aufzeichnungsmedium (eine Platte) enthält, das konfiguriert ist, Daten persistent zu speichern. Obwohl nützlich, kann die Eingabe/Ausgabe-Leistung (z. B. Schreib-/Leseleistung) eines HDD im Vergleich zu anderen Komponenten der Vorrichtung relativ langsam sein. HDDs und andere relativ langsame Speichervorrichtungen (z. B. Bandspeicher) können deshalb einen Engpass in der Leistung der elektronischen Vorrichtung bilden, in der es bzw. sie installiert ist bzw. sind. Obwohl viele Versuche unternommen wurden, ihre Leistung zu verbessern, kann die elektromechanische Natur von HDDs praktisch das Ausmaß einschränken, in dem ihre Leistung verbessert werden kann.
  • Ein Weg, einen Engpass zu mildern, der durch eine relativ langsame periphere Speichervorrichtung dargestellt wird, ist die Verwendung einer Zwischenspeichervorrichtung (hier auch als „Zwischenspeicher“ bezeichnet). Im Allgemeinen ist eine Zwischenspeichervorrichtung eine Arbeitsspeichervorrichtung, die sich logisch zwischen einer relativ langsamen Speichervorrichtung und anderen Komponenten einer elektronischen Vorrichtung wie einem Prozessor befindet. Typischerweise enthält ein Zwischenspeicher Arbeitsspeicher, der im Vergleich zur relativ langsamen Speichervorrichtung, mit der die Zwischenspeichervorrichtung assoziiert ist, relativ schnell ist. Der Arbeitsspeicher der Zwischenspeichervorrichtung kann als ein temporärer Speicherbereich für die periphere Speicherungsvorrichtung dienen. Daten, auf die häufig zugegriffen wird („heiße“ Daten), können beispielsweise im Zwischenspeicher platziert werden, nachdem auf sie anfänglich zugegriffen wurde, z. B. von der relativ langsamen Speichervorrichtung. Nachfolgende Zugriffe auf die heißen Daten können danach auf den Zwischenspeicher anstatt auf die relativ langsame Speichervorrichtung erfolgen. Ein Zwischenspeicher-Controller kann einen oder mehrere Algorithmen und/oder Richtlinien anwenden, um zu ermitteln, welche Daten im Arbeitsspeicher der Zwischenspeichervorrichtung gespeichert sind und welche entfernt sind. Da der Zwischenspeicher schneller als die relativ langsame Speichervorrichtung ist, kann die Eingabe/Ausgabe-Leistung des Systems verbessert werden.
  • Obwohl Zwischenspeichervorrichtungen den Leistungsengpass mildern können, der durch relativ langsame periphere Speichervorrichtungen eingeführt wird, ist Zwischenspeicher-Arbeitsspeicher oft einigermaßen kostspielig. Die Größe eines Zwischenspeichers kann deshalb durch Kosten und/oder andere Überlegungen beschränkt werden. Infolgedessen kann die Datenmenge, die in einem Zwischenspeicher gespeichert werden kann, praktisch durch die Größe seines Arbeitsspeichers beschränkt werden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Merkmale und Vorteile von Ausführungsformen des beanspruchten Gegenstands ergeben sich aus der nachfolgenden detaillierten Beschreibung und unter Bezugnahme auf die Zeichnungen, in denen gleiche Bezugszeichen gleiche Teile darstellen und in denen:
  • 1 ein Blockdiagramm eines Zwischenspeichersystems in Übereinstimmung mit der vorliegenden Offenbarung illustriert;
  • 2 beispielhafte Befehle zeigt, die von einem Zwischenspeichersystem in Übereinstimmung mit der vorliegenden Offenbarung eingesetzt werden können;
  • 3 ein Ablaufdiagramm von beispielhaften Vorgängen eines Zwischenspeicher-Controllermoduls in einem beispielhaften Verfahren zum Zwischenspeichern von Daten in Übereinstimmung mit der vorliegenden Offenbarung ist; und
  • 4 ein Ablaufdiagramm von beispielhaften Vorgängen eines Datenkomprimierungsmoduls in einem beispielhaften Verfahren zum Zwischenspeichern von Daten in Übereinstimmung mit der vorliegenden Offenbarung ist.
  • 5A und 5B sind Blockdiagramme einer beispielhaften elektronischen Vorrichtung, die ein Zwischenspeichersystem in Übereinstimmung mit der vorliegenden Offenbarung enthält.
  • DETAILLIERTE BESCHREIBUNG
  • Während die vorliegende Offenbarung hier mit Bezug auf veranschaulichende Ausführungsformen für bestimmte Anwendungen beschrieben wird, sollte verstanden werden, dass solche Ausführungsformen nur beispielhaft sind und dass die Erfindung, wie sie durch die beigefügten Ansprüche definiert ist, nicht darauf beschränkt ist. Tatsächlich können die hierin beschriebenen Technologien im Zusammenhang mit einem oder mehreren Verwendungsmodellen diskutiert werden, in dem ein Festkörperlaufwerk als Zwischenspeichervorrichtung für eine Speichervorrichtung wie ein Festplattenlaufwerk oder einen Bandspeicher verwendet wird. Solche Diskussionen sind nur beispielhaft und es sollte verstanden werden, dass alle oder ein Teil der hierin beschriebenen Technologien in anderen Zusammenhängen verwendet werden können. Tatsächlich können die hier beschriebenen Technologien mit einer beliebigen geeigneten Zwischenspeichervorrichtung und Speichervorrichtung verwendet werden. Fachleute auf dem relevanten Gebiet bzw. den relevanten Gebieten, die Zugang zu den hierin gebotenen Lehren haben, werden zusätzliche Modifikationen, Anwendungen und Ausführungsformen innerhalb des Umfangs dieser Offenbarung erkennen und zusätzliche Felder, in denen Ausführungsformen der vorliegenden Offenbarung von Nutzen sein würden.
  • Die hier beschriebenen Technologien können in einer oder mehreren elektronischen Vorrichtungen implementiert werden. Nicht einschränkende Beispiele von elektronischen Vorrichtungen, die die hier beschriebenen Technologien einsetzen können, enthalten eine beliebige Art von mobiler Vorrichtung und/oder stationärer Vorrichtung, wie Kameras, Mobiltelefone, Computerterminals, Desktopcomputer, elektronische Lesegeräte, Faxmaschinen, Kiosks, Netbook-Computer, Notebook-Computer, Internetvorrichtungen, Zahlungsterminals, Organizer, Medienwiedergabegeräte und/oder -Rekorder, Server (z. B. Bladeserver, rackmontierte Server, Kombinationen davon usw.), Set-Top-Boxen, Smartphones, Tablet-Personalcomputer, ultramobile Personalcomputer, verdrahtete Telefone, Kombinationen davon und Ähnliches. Diese Vorrichtungen können tragbar oder stationär sein. In einigen Ausführungsformen können die hier beschriebenen Technologien in einem Desktopcomputer, Laptopcomputer, Smartphone, Tablet-Computer, Netbook-Computer, Notebook-Computer, Organizer, Server, Kombinationen davon und Ähnlichem eingesetzt werden. Allgemeiner können die hier beschriebenen Technologien in einer beliebigen elektronischen Vorrichtung eingesetzt werden, an die eine Zwischenspeichervorrichtung und/oder eine Speichervorrichtung gekoppelt sein und/oder installiert sein kann bzw. können.
  • Der Begriff „Zwischenspeichervorrichtung“ wird hier verwendet, um eine Arbeitsspeichervorrichtung zu bezeichnen, die als ein Zwischenspeicher für eine andere Arbeitsspeichervorrichtung (hier nachfolgend als eine „Speichervorrichtung“ bezeichnet) verwendet wird. Obwohl sich die vorliegende Offenbarung auf Ausführungsformen konzentriert, in denen ein Festkörperlaufwerk als Zwischenspeichervorrichtung verwendet wird, sollte verstanden werden, dass solche Beschreibungen nur beispielhaft sind und dass der Begriff „Zwischenspeichervorrichtung“ einen beliebigen Typ von Arbeitsspeichervorrichtung umfasst, die als ein Zwischenspeicher für eine Speichervorrichtung verwendet werden kann. Ohne Einschränkung sind die hier beschriebenen Zwischenspeichervorrichtungen in einigen Ausführungsformen in der Form eines Festkörperlaufwerks, eines dynamischen Arbeitsspeichers mit wahlfreiem Zugriff (DRAM), einer Festplatte, von Kombinationen davon und Ähnlichem. In einigen Ausführungsformen zeigen die hier beschriebenen Zwischenspeichervorrichtungen eine Eingabe/Ausgabe-Leistung („E/A“-Leistung), die größer als die einer assoziierten Speichervorrichtung ist. Deshalb können die hier beschriebenen Zwischenspeichervorrichtungen in einigen Ausführungsformen einen Arbeitsspeicher enthalten (hier auch als „Zwischenspeicher-Arbeitsspeicher“ bezeichnet), der schneller als der Arbeitsspeicher einer Speichervorrichtung ist, mit der die Zwischenspeichervorrichtung assoziiert ist.
  • Der Begriff „Speichervorrichtung“ wird hier verwendet, um eine Arbeitsspeichervorrichtung zu bezeichnen, die verwendet werden kann, um Daten persistent zu speichern. Nicht einschränkende Beispiele von Zwischenspeichervorrichtungen enthalten Festplatten (z. B. Laufwerke, die magnetische Aufzeichnungsmedien einsetzen), Festkörperlaufwerke, Bandspeicher, Kombinationen davon und Ähnliches. In einigen Ausführungsformen sind die hier beschriebenen Speichervorrichtungen in der Form einer oder mehrerer Arbeitsspeichervorrichtungen, die eine E/A-Leistung zeigen, die niedriger als die E/A-Leistung einer assoziierten Zwischenspeichervorrichtung ist. Deshalb können die hier beschriebenen Speichervorrichtungen in einigen Ausführungsformen einen Arbeitsspeicher enthalten (hier auch als „Speicher-Arbeitsspeicher“ bezeichnet), der langsamer als der Arbeitsspeicher einer Zwischenspeichervorrichtung ist, mit der die Speichervorrichtung assoziiert ist.
  • Wie in einer beliebigen Ausführungsform hierin verwendet, kann der Begriff „Modul“ eine Software, Firmware, Verschaltung und/oder Kombinationen davon bezeichnen, die konfiguriert ist bzw. sind, einen oder mehrere Vorgänge in Übereinstimmung mit der vorliegenden Offenbarung durchzuführen. Software kann als ein Softwarepaket, Code, Anweisungen, Anweisungssätze und/oder Daten ausgeführt werden, die auf nicht-transitorischen computerlesbaren Speichermedien aufgezeichnet sind. Firmware kann als Code, Anweisungen oder Anweisungssätze und/oder Daten ausgeführt werden, die in Arbeitsspeichervorrichtungen fest programmiert (z. B. nichtflüchtig) sind. „Verschaltung“, wie in einer beliebigen Ausführungsform hier verwendet, kann zum Beispiel einzeln oder in einer beliebigen Kombination, festverdrahtete Verschaltung, programmierbare Verschaltung wie Computerprozessoren, die einen oder mehrere einzelne Anweisungsverarbeitungskerne umfassen, Zustandsautomaten-Verschaltung, Software und/oder Firmware umfassen, die Anweisungen speichert, die von programmierbarer Verschaltung ausgeführt werden. Die Module können gemeinsam oder einzeln als Verschaltung ausgeführt sein, die einen Teil einer oder mehrerer elektronischen Vorrichtungen bildet, wie vorher definiert. In einigen Ausführungsformen kann bzw. können ein oder mehrere hier beschriebene Module in der Form von Logik sein, die zumindest teilweise in Hardware implementiert ist, um eine oder mehrere Funktionen in Übereinstimmung mit der vorliegenden Offenbarung durchzuführen.
  • Die Begriffe „Festkörperlaufwerk“, „SSD“, „SSDs“ werden hierin austauschbar verwendet, um beliebige einer breiten Vielfalt von Datenspeichervorrichtungen zu bezeichnen, in denen integrierte Schaltkreisbaugruppen (z. B. nichtflüchtige Arbeitsspeicherbaugruppen mit wahlfreiem Zugriff (NVRAM-Baugruppen)) verwendet werden, um Daten persistent zu speichern. Auf jeden Fall kann verstanden werden, dass ein SSD nichtflüchtigen Arbeitsspeicher wie Negierten-und-nicht-und-Arbeitspspeicher (NAND-Arbeitsspeicher) und/oder Nicht-oder-Arbeitsspeicher (NOR-Arbeitsspeicher) enthält.
  • Die Begriffe „Festplatte“ und „HDD“ werden hierin austauschbar verwendet, um Datenspeichervorrichtungen zu bezeichnen, die magnetische Aufzeichnungsmedien enthalten, um Daten persistent zu speichern. Die Begriffe „Hybrid-Festplatte“ und „Hybrid-HDD“ bezeichnen Datenspeichervorrichtungen, die eine Kombination von integrierten Schaltkreisbaugruppen wie NVRAM und magnetische Aufzeichnungsmedien enthalten. Hybrid-HDDs enthalten sogenannte „Dual-Laufwerk-Hybridsysteme“ (in denen ein separates SSD und HDD in einen Hybriddatenträger kombiniert sind, z. B. durch ein Betriebssystem oder andere steuernde Hardware/Software) und „Festkörper-Hybridlaufwerke“, in denen nichtflüchtiger Arbeitsspeicher wie NAND-Arbeitsspeicher in eine Festplatte eingebunden ist.
  • Wie im Stand der Technik angemerkt, können Zwischenspeichervorrichtungen zumindest einige der Leistungsengpässe mindern, die durch relativ langsame periphere Speichervorrichtungen eingeführt werden können. Kosten und/oder andere Überlegungen können jedoch praktisch die Größe des Arbeitsspeichers einschränken, der in einer Zwischenspeichervorrichtung enthalten sein kann. Da die Datenmenge, die in einer Zwischenspeichervorrichtung gespeichert werden kann, durch die Größe des Zwischenspeicher-Arbeitsspeichers beschränkt ist, kann dies den Leistungsverbesserungen, die durch die Verwendung einer Zwischenspeichervorrichtung erreicht werden können, eine bedeutsame Beschränkung auferlegen.
  • Angesichts des Vorstehenden kann ein Komprimieren von Daten, die im Arbeitsspeicher einer Zwischenspeichervorrichtung gespeichert werden sollen, wesentliche Vorteile für Zwischenspeichersysteme bieten. Datenkomprimierung kann zum Beispiel ermöglichen, dass mehr Daten in einer Zwischenspeichervorrichtung gespeichert werden, ohne dass die Menge des Arbeitsspeichers darin erhöht werden muss. Verschiedene Überlegungen haben es jedoch praktisch schwierig gemacht, eine Datenkomprimierung in vielen Zwischenspeichervorrichtungen zu implementieren.
  • Viele Zwischenspeicher-Controller sind beispielsweise konfiguriert, empfangene Daten/einen empfangenen Zustand in Zwischenspeicherleitungen aufzuteilen, die eine feste Größe haben (z. B. 4 Kilobytes (kB), 6 kB, 8 kB usw.) aufzuteilen. Deshalb kann ein Zwischenspeicher-Controller zum Beispiel ermitteln, dass ein 64-kB-Zustand in einen Zwischenspeicher-Arbeitsspeicher geschrieben werden soll. Um dies zu erreichen, kann der Controller den 64-kB-Zustand in sechzehn 4-kB-Zwischenspeicherleitungen aufteilen. Der Controller kann dann einen Schreibbefehl an eine Zwischenspeichervorrichtung senden, was im Schreiben von jeder 4-kB-Zwischenspeicherleitung in Speicherblöcke im Zwischenspeicher-Arbeitsspeicher resultiert. Da der in den 4-kB-Zwischenspeicherleitungen beinhaltete Zustand nicht komprimiert ist, reserviert der Controller typischerweise einen 4-kB-Block von Zwischenspeicher-Arbeitsspeicher für die Speicherung.
  • Wie oben angemerkt kann die Kapazität von Zwischenspeicher-Arbeitsspeicher in einer Zwischenspeichervorrichtung praktisch durch Komprimieren der Daten in jeder Zwischenspeicherleitung erhöht werden. Die Daten in jeder Zwischenspeicherleitung können jedoch unterschiedlich komprimieren, z. B. aufgrund von Unterschieden in den darin enthaltenen Datenmustern. Ein Datenmuster in einer ersten Zwischenspeicherleitung kann zum Beispiel zweifach komprimieren (was bedeutet, dass die komprimierten Daten die halbe Größe der Eingabedaten haben), ein Datenmuster in einer zweiten Zwischenspeicherleitung kann achtfach komprimieren (was bedeutet, dass die komprimierten Daten ein Achtel der Größe der Eingabedaten haben), wohingegen ein Datenmuster in einer dritten Zwischenspeicherleitung gar nicht komprimieren kann (was bedeutet, dass die komprimierten Daten und die Eingabedaten die gleiche Größe haben). Vor diesem Hintergrund kennt der Zwischenspeicher-Controller in früheren Zwischenspeichersystemen, die Komprimierung einsetzen, die Größe der komprimierten Daten in einer Zwischenspeicherleitung nicht, bevor die komprimierten Daten in den Zwischenspeicher-Arbeitsspeicher geschrieben werden. Die Controller in solchen Systemen reservieren deshalb im Allgemeinen die volle Größe der Zwischenspeicherleitung im Zwischenspeicher-Arbeitsspeicher, auch wenn die Größe der komprimierten Daten in einer bestimmten Zwischenspeicherleitung kleiner als die volle Größe der Zwischenspeicherleitung ist. Daten in einer 4-kB-Zwischenspeicherleitung können zum Beispiel auf 2 kB komprimiert werden, aber der Zwischenspeicher-Controller kennt möglicherweise die Größe der komprimierten Daten nicht. Der Controller kann deshalb einen 4-kB-Block im Zwischenspeicher-Arbeitsspeicher zur Speicherung der Daten in dieser Zwischenspeicherleitung reservieren, auch wenn die Größe der komprimierten Daten nur 2 kB beträgt.
  • Frühere Zwischenspeichersysteme, die Komprimierung einsetzen, sind deshalb allgemein nicht fähig, den zusätzlichen Raum direkt zu nutzen, der durch die Komprimierung freigesetzt wird. Anstatt die Vorteile zu nutzen, die durch die Komprimierung verfügbar werden, müssen solche Systeme die Zwischenspeichervorrichtung abfragen, nachdem die komprimierten Daten geschrieben wurden, um zu ermitteln, ob sich die Größe des Zwischenspeicher-Arbeitsspeichers geändert hat, und/oder um die Menge des Zwischenspeicher-Arbeitsspeichers zu ermitteln, die verfügbar ist.
  • Angesichts des Vorangehenden betrifft die vorliegende Offenbarung Zwischenspeichertechnologien, die Datenkomprimierung einsetzen. Wie unten im Detail beschrieben wird, enthalten die Technologien der vorliegenden Offenbarung Zwischenspeichersysteme und -verfahren, in denen Daten in einer Zwischenspeicherleitung komprimiert werden, bevor sie in den Zwischenspeicher-Arbeitsspeicher geschrieben werden. Im Gegensatz zu früheren Zwischenspeichersystemen, die Komprimierung einsetzen, ermöglichen die Technologien der vorliegenden Offenbarung einem Zwischenspeicher-Controller, vor dem Schreiben der komprimierten Daten in den Zwischenspeicher-Arbeitsspeicher das Ausmaß zu kennen, in dem Daten in einer Zwischenspeicherleitung komprimiert sind. In einigen Ausführungsformen können die hier beschriebenen Zwischenspeicher-Controller zumindest teilweise auf Basis der Größe der komprimierten Daten, eines den komprimierten Daten (oder ihren entsprechenden Eingabedaten) zurechenbaren Komprimierungsverhältnisses oder einer Kombination davon ermitteln, wo die komprimierten Daten im Zwischenspeicher-Arbeitsspeicher zu speichern sind.
  • Ein Aspekt der vorliegenden Offenbarung betrifft deshalb Systeme zum Zwischenspeichern von Daten, die hier auch als Zwischenspeichersysteme bezeichnet werden. Es wird angemerkt, dass zum Zwecke der Klarheit und Einfachheit des Verständnisses die hier beschriebenen Zwischenspeichersysteme unabhängig von einer Hostvorrichtung und/oder einem System beschrieben werden, in dem das Zwischenspeichersystem verwendet und/oder installiert werden kann. Es sollte verstanden werden, dass die Zwischenspeichersysteme mit einer beliebigen geeigneten Hostvorrichtung oder einem beliebigen geeigneten System verwendet werden können und/oder in diesen installiert werden können, die in Form einer elektronischen Vorrichtung wie oben definiert und/oder einer Komponente davon sein können, wie einem Festkörperlaufwerk oder einer anderen Arbeitsspeichervorrichtung, die als ein Zwischenspeicher für eine oder mehrere periphere Speichervorrichtungen verwendet werden. Ohne Einschränkung sind die hier beschriebenen Zwischenspeichersysteme besonders zum Zwischenspeichern einer oder mehrerer Speichervorrichtungen geeignet, die in einem Desktopcomputer, Laptopcomputer, Mobiltelefon, Smartphone, Tablet-Personalcomputer, Server, Rechenzentrum, Kombinationen davon und Ähnlichem eingesetzt werden können. Allgemeiner können die hier beschriebenen Zwischenspeichersysteme in einer beliebigen Vorrichtung implementiert werden, die vom Zwischenspeichern einer relativ langsamen peripheren Speichervorrichtung profitieren kann.
  • In dieser Hinsicht wird auf 1 Bezug genommen, die ein Blockdiagramm eines beispielhaften Zwischenspeichersystems in Übereinstimmung mit der vorliegenden Offenbarung ist. Wie gezeigt enthält Zwischenspeichersystem 100 ein Zwischenspeicher-Controllermodul (CCM) 101 und eine Zwischenspeichervorrichtung 102.
  • Es wird angemerkt, dass das CCM 101 in 1 als separat von der Zwischenspeichervorrichtung 102 illustriert ist. Es sollte verstanden werden, dass eine solche Darstellung nur zu Beispielzwecken dient und dass das CCM 101 an einer beliebigen geeigneten Position vorhanden sein kann. In einigen Ausführungsformen ist das CCM 101 zum Beispiel und wie in 1 angedeutet in Form eines Moduls, das separat von der Zwischenspeichervorrichtung 102 ist. In solchen Ausführungsformen kann das CCM 101 in einer elektronischen Vorrichtung installiert oder anderweitig vorhanden sein (z. B. in einem nicht gezeigten Hostsystem), mit dem das Zwischenspeichersystem 100 verwendet wird. In solchen Fällen kann das CCM 101 in verdrahteter oder drahtloser Kommunikation mit der Zwischenspeichervorrichtung 102 sein. Alternativ kann das CCM 101 integral mit der Zwischenspeichervorrichtung 102 sein, wie z. B. in 5A und 5B gezeigt. Das CCM 101 kann zum Beispiel in Form eines platineninternen Zwischenspeicher-Controllers der Zwischenspeichervorrichtung 101 sein oder einen solchen enthalten. In einigen Ausführungsformen ist das Zwischenspeichersystem 100 in einer Festkörperplatte enthalten und das CCM 101 ist in Form eines SSD-Controllers oder enthält einen solchen.
  • Auf jeden Fall kann das CCM 101 in Form von Software, Firmware, Hardware, Logik, die zumindest teilweise in Hardware implementiert ist, oder einer Kombination davon sein, die konfiguriert ist, die Speicherung von Daten/eines Zustands in der Zwischenspeichervorrichtung 102 oder insbesondere in einem Arbeitsspeicher 106 der Zwischenspeichervorrichtung 102 zu steuern. Das CCM 101 kann deshalb eine oder mehrere bekannte oder zukünftige Zwischenspeicherrichtlinien und/oder -algorithmen implementieren, um zu ermitteln, welche Daten/welcher Zustand gespeichert und/oder aus der Zwischenspeichervorrichtung 102 entfernt werden sollte. Alternativ oder zusätzlich zu solchen Funktionen kann das CCM 101 auch konfiguriert sein, um zu ermitteln, wo die Daten/der Zustand im Arbeitsspeicher 106 der Zwischenspeichervorrichtung 102 gespeichert werden soll bzw. sollen. Wie im Detail später beschrieben wird, kann das CCM 101 Blöcke (z. B. logische Blockadressen oder LBAs) im Arbeitsspeicher 106 zumindest teilweise auf Basis der Größe der komprimierten Daten/des komprimierten Zustands, eines den komprimierten Daten/dem komprimierten Zustand zurechenbaren Komprimierungsverhältnisses oder einer Kombination davon reservieren.
  • Die Zwischenspeichervorrichtung 102 kann eine beliebige Datenspeichervorrichtung sein, die zum Zwischenspeichern eines relativ langsamen peripheren Speichermediums (nicht gezeigt) geeignet ist. Nicht einschränkende Beispiele von geeigneten Datenspeichervorrichtungen, die als die Zwischenspeichervorrichtung 102 verwendet werden können, enthalten Festkörperlaufwerke, Festplattenlaufwerke, dynamische Arbeitsspeichervorrichtungen mit wahlfreiem Zugriff (DRAM-Vorrichtungen), Kombinationen davon und Ähnliches. In Übereinstimmung mit der vorangehenden Beschreibung kann die Zwischenspeichervorrichtung 102 in einigen Ausführungsformen eine beliebige Datenspeichervorrichtung sein, die eine Eingabe/Ausgabe-Leistung (Schreib-/Leseleistung) zeigt, die größer als die des peripheren Speichermediums ist, für das die Datenspeichervorrichtung als Zwischenspeicher verwendet werden soll. Ohne Einschränkung ist die Zwischenspeichervorrichtung 102 in einigen Ausführungsformen in Form eines Festkörperlaufwerks.
  • Wie in 1 gezeigt, enthält die Zwischenspeichervorrichtung 102 ein Datenkomprimierungsmodul (DCM) 103, eine Komprimierungs-Dekomprimierungs-Engine (CODEC) 104, einen Transferpuffer (Puffer) 105 und den Arbeitsspeicher 106. Das DCM 103 funktioniert allgemein, um mit dem CCM 101 zu kommunizieren und um zu bewirken, dass die Zwischenspeichervorrichtung 102 Datenkomprimierungsvorgänge in Übereinstimmung mit der vorliegenden Offenbarung durchführt. Weitere Details in Bezug auf den Betrieb des DCM 103 werden später vorgelegt.
  • Die CODEC 104 funktioniert allgemein, um vom CCM 101 empfangene Daten zu komprimieren. Insbesondere und wie unten beschrieben werden wird, kann die CODEC 104 Daten in einer Zwischenspeicherleitung vom CCM 101 (oder genauer vom DCM 103) empfangen. Aus Gründen der Klarheit werden die von der CODEC 104 empfangenen Daten als Eingabedaten bezeichnet. Während die vorliegende Offenbarung Ausführungsformen beschreibt, in denen die CODEC auf Eingabedaten von einer einzelnen Zwischenspeicherleitung einwirkt, sollte verstanden werden, dass eine solche Beschreibung Beispielzwecken dient und dass die CODEC konfiguriert sein kann, um auf Eingabedaten von mehreren Zwischenspeicherleitungen einzuwirken. Deshalb kann das CCM 101 beispielsweise einen Datenvorrat auf eine Vielzahl von Zwischenspeicherleitungen aufteilen, von denen jede Eingabedaten beinhaltet (z. B. 4 kB, 8 kB usw.). Das CCM 101 (oder das DCM 103) kann die Eingabedaten von einer oder mehreren der Zwischenspeicherleitungen an die CODEC 104 zur Komprimierung senden. Abhängig von ihrer Konfiguration kann die CODEC 104 nur auf einen der Sätze der Eingabedaten (d. h. Eingabedaten von einer Zwischenspeicherleitung) auf einmal einwirken oder sie kann auf mehrere Sätze von Eingabedaten (d. h. Eingabedaten von mehreren Zwischenspeicherleitungen) gleichzeitig einwirken.
  • Die CODEC 104 kann dann Komprimiervorgänge an den Eingabedaten durchführen, z. B. unter Verwendung eines oder mehrerer Komprimierungsalgorithmen, um eine komprimierte Ausgabe zu erzeugen. Wie klar sein wird, kann die Größe der komprimierten Ausgabe von der Größe der Eingabedaten abweichen. Die relative Differenz zwischen der Größe der komprimierten Ausgabe und den Eingabedaten kann durch ein Komprimierungsverhältnis repräsentiert werden, das in einigen Ausführungsformen durch Dividieren der Größe der Eingabedaten durch die Größe der komprimierten Ausgabe oder umgekehrt ermittelt werden kann. Wenn beispielsweise die Größe der Eingabedaten 4 kB ist und die Größe der komprimierten Ausgabe 2 kB ist, kann deshalb das Komprimierungsverhältnis 0,5 oder 2 sein, abhängig davon, wie das Verhältnis berechnet wird.
  • Nicht einschränkende Beispiele von Komprimierungsalgorithmen, die von der CODEC 104 ausgeführt werden können, enthalten den Lempel-Ziv-Algorithmus (LZ-Algorithmus), den Deflate-Algorithmus, den LZR-Algorithmus und Kombinationen davon. Natürlich sind diese Algorithmen nur beispielhaft und es kann ein beliebiger geeigneter Komprimierungsalgorithmus (und insbesondere verlustfreie Komprimierungsalgorithmen) verwendet werden. Ohne Einschränkung führt die CODEC 104 in einigen Ausführungsformen den Lempel-Ziv-Algorithmus an Daten/einem Zustand aus, die bzw. der vom CCM 101 (oder insbesondere vom DCM 103) empfangen wurden bzw. wurde.
  • 1 illustriert eine Ausführungsform, in der die CODEC 104 integral zur Zwischenspeichervorrichtung 102 ist. Es sollte verstanden werden, dass diese Darstellung nur zu Beispielzwecken dient und dass die CODEC 104 nicht integral zur Zwischenspeichervorrichtung 102 sein muss. Tatsächlich sieht die vorliegende Offenbarung Ausführungsformen vor, in der die CODEC 104 an einer beliebigen geeigneten Position gespeichert und/oder implementiert ist. Die CODEC 104 kann eine Hardware-Codec sein, die durch andere Hardware eines Hostsystems implementiert wird, wie einer Videokarte oder einem anderen Video-Beschleuniger. Alternativ oder zusätzlich kann die CODEC eine Software-Codec sein, die von einem Prozessor, z. B. eines Hostsystems ausgeführt wird.
  • Unabhängig von der Natur der CODEC 104 kann die von der CODEC 104 erzeugte komprimierte Ausgabe im Puffer 105 gespeichert werden. Dementsprechend kann der Puffer 105 konfiguriert werden, um die komprimierte Ausgabe der Codec 105 zu speichern. Insbesondere kann der Puffer 105 die komprimierte Ausgabe der Codec 105 vor dem Schreiben der komprimierten Ausgabe in den Arbeitsspeicher 106 der Zwischenspeichervorrichtung 102 speichern. Wie später beschrieben wird, kann das Schreiben der komprimierten Ausgabe in den Arbeitsspeicher 106 vom Empfang eines Datenschreibbefehls (z. B. eines Schreibbefehls) z. B. vom CCM 101 abhängig sein. Darüber hinaus kann vor einer Festschreibung der komprimierten Ausgabe in den Arbeitsspeicher 105 (z. B. während die komprimierte Ausgabe im Puffer 105 gespeichert wird) die Position, an die die komprimierte Ausgabe geschrieben werden soll (z. B. logische Blockadressen im Speicher 106) durch das CCM 101 ermittelt werden, wie weiter unten beschrieben werden wird. Der Puffer 105 kann deshalb als ein Transferpuffer verstanden werden, der die komprimierte Ausgabe der Codec 104 vor der Festschreibung der komprimierten Ausgabe in den Zwischenspeicher-Arbeitsspeicher 106 speichern kann.
  • Der Puffer 105 kann eine beliebige Arbeitsspeicherstruktur sein, die zum Speichern der komprimierten Ausgabe geeignet ist. Nicht einschränkende Beispiele von geeigneten Arbeitsspeicherstrukturen, die als Puffer 105 verwendet werden können, enthalten statischen Arbeitsspeicher mit wahlfreiem Zugriff (SRAM), eingebetteten dynamischen Arbeitsspeicher mit wahlfreiem Zugriff, Kombinationen davon und Ähnliches. Ohne Einschränkung ist die Größe des Puffers 105 in einigen Ausführungsformen größer oder gleich der Größe der Zwischenspeicherleitungen, die vom CCM 101 empfangen werden. Wenn das CCM 101 beispielsweise 4-kB-Zwischenspeicherleitungen an die Zwischenspeichervorrichtung 102 überträgt, kann deshalb die Größe des Puffers 105 in einigen Ausführungsformen größer oder gleich ungefähr 4 kB sein. Natürlich dient dies nur zu Beispielzwecken und der Puffer 105 kann eine beliebige gewünschte Größe haben.
  • Der Speicher 106 kann eine beliebige Art von computerlesbarem Arbeitsspeicher sein. Beispielhafte Arbeitsspeichertypen, die als Arbeitsspeicher 106 verwendet werden können, enthalten folgende, sind jedoch nicht darauf beschränkt: Phasenwechselspeicher (PCM), dreidimensionalen Kreuzpunkt-Arbeitsspeicher, resistiven Arbeitsspeicher, Nanodraht-Arbeitsspeicher, ferroelektrischen Transistor-Arbeitsspeicher mit wahlfreiem Zugriff (FeTRAM), Flashspeicher wie NAND- oder NOR-Arbeitsspeicher, magnetoresistiven Arbeitsspeicher mit wahlfreiem Zugriff (MRAM), der Memristor-Technologie einbezieht, Spintransfer-Torque-MRAM (STT-MRAM), magnetischen Laufwerk-Arbeitsspeicher, optischen Laufwerk-Arbeitsspeicher, Kombinationen davon und Ähnliches. Zusätzlich oder alternativ kann der Arbeitsspeicher 106 andere und/oder später entwickelte Arten von computerlesbarem Arbeitsspeicher enthalten.
  • Ohne Einschränkung ist der Arbeitsspeicher 106 in einigen Ausführungsformen ein Typ von Arbeitsspeicher, der typischerweise mit dem Typ von Arbeitsspeichervorrichtung assoziiert ist, der als die Zwischenspeichervorrichtung 102 verwendet wird. Wenn die Zwischenspeichervorrichtung 102 zum Beispiel ein Festkörperlaufwerk ist, kann deshalb der Arbeitsspeicher 106 in Form von nichtflüchtigem Arbeitsspeicher sein. Gleichermaßen, wenn die Zwischenspeichervorrichtung 102 eine Festplatte ist, kann der Arbeitsspeicher 106 in Form eines magnetischen Aufzeichnungsmediums sein. Ohne Einschränkung ist die Zwischenspeichervorrichtung 102 in einigen Ausführungsformen in Form eines SSD und der Arbeitsspeicher 106 in Form von nichtflüchtigem Arbeitsspeicher (z. B. NAND-Arbeitsspeicher). Auf jeden Fall kann der Arbeitsspeicher 106 konfiguriert sein, Daten in einem oder mehreren logischen Blöcken zu speichern, die z. B. mit einem Arbeitsspeicher-Controller oder einer anderen Komponente der Zwischenspeichervorrichtung 102 adressiert werden können. Das heißt, der Arbeitsspeicher 106 kann eine Vielzahl von logischen Blockadressen (LBAs) enthalten, an denen Daten/ein Zustand gespeichert werden können bzw. kann, oder kann in einer solchen Vielzahl angeordnet sein. Daten können in den Arbeitsspeicher 106 als Reaktion auf einen Datenschreibbefehl geschrieben werden, wie dies allgemein in der Technik verstanden wird. Der Datenschreibbefehl kann in Form eines Schreibbefehls sein, der die logischen Blockadressen im Arbeitsspeicher 106 angibt, an die die mit dem Befehl assoziierten Daten bzw. der mit dem Befehl assoziierte Zustand geschrieben werden sollen bzw. soll.
  • Die vorliegende Offenbarung wird nun beispielhalber mit einer Beschreibung des Betriebs einer Ausführungsform des Zwischenspeichersystems 100 fortfahren, in dem die Zwischenspeichervorrichtung 102 in Form eines SSD ist und der Arbeitsspeicher 106 in Form von nichtflüchtigem Arbeitsspeicher ist. Es wird betont, dass die folgende Beschreibung beispielhalber ist und dass die in Verbindung mit diesem Beispiel beschriebenen Vorgänge mit einer beliebigen geeigneten Zwischenspeichervorrichtung eingesetzt werden können.
  • Unter weiterer Bezugnahme auf 1 kann das CCM 101 Daten von einer Datenquelle empfangen, wie einem Prozessor oder einer anderen Komponente eines Hostsystems, in dem das Zwischenspeichersystem 100 installiert sein kann. Wie oben angemerkt, kann das CCM 101 eine oder mehrere Zwischenspeicherrichtlinien anwenden, um zu ermitteln, ob die Gesamtheit oder ein Teil der Daten in den Arbeitsspeicher 106 geschrieben werden soll. Wenn das CCM 101 ermittelt, dass die Gesamtheit oder ein Teil der Daten in den Arbeitsspeicher 106 geschrieben werden soll, kann es die zu schreibenden Daten eine oder mehrere Zwischenspeicherleitungen zuordnen, die eine feste oder variable Größe haben können. Ohne Einschränkung weisen die Zwischenspeicherleitungen in einigen Ausführungsformen eine feste Größe auf, z. B. 4 kB, 6 kB, 8 kB, 16 kB, 32 kB, 64 kB usw.
  • Das CCM 101 kann den Daten in einer Zwischenspeicherleitung auch einen Tag zuweisen. Im Allgemeinen fungiert der Tag als Identifikator einer bestimmten Einheit von Daten, in diesem Fall den Daten, die einer der Zwischenspeicherleitungen zugeordnet sind. Der Tag kann deshalb in einem beliebigen Format sein, das geeignet ist, um die Daten in einer Zwischenspeicherleitung eindeutig zu identifizieren, mit denen der Tag assoziiert ist. Das CCM 101 kann deshalb beispielsweise Daten in einer ersten Zwischenspeicherleitung einen ersten Tag „A“ und Daten in einer zweiten Zwischenspeicherleitung einen zweiten Tag „B“ usw. zuweisen. Die Natur und das Format des mit einer Zwischenspeicherleitung assoziierten Tags sind nicht beschränkt, solange er die Daten in der Zwischenspeicherleitung eindeutig identifizieren kann. Deshalb kann der Tag beispielsweise in Form einer 32-Bit-, 64-Bit-, 128-Bit- oder 256-Bit-Folgenummer sein, eines Hashes der Daten in der Zwischenspeicherleitung, Kombinationen davon und Ähnlichem. Ohne Einschränkung ist der Tag in einigen Ausführungsformen in Form einer 64-Bit-Folgenummer.
  • Das CCM 101 kann dann die Daten in einer Zwischenspeicherleitung zur Komprimierung an die Zwischenspeichervorrichtung 102 senden, wie durch Punkt 1 von 1 illustriert. In dieser Hinsicht kann das CCM 101 Komprimierungsbefehle an die Zwischenspeichervorrichtung 102 senden, z. B. in einem oder mehreren verdrahteten oder drahtlosen Signalen. Der Komprimierungsbefehl kann in einem beliebigen Format sein, wie ein anbieterspezifischer Befehl unter einer beliebigen früheren, aktuellen oder zukünftigen Version des Serial-Advanced-Technology-Attachment-Standards (SATA-Standards) oder des Nichtflüchtiger-Speicher-Express-Standards (NVMe-Standards). Auf jeden Fall kann der Komprimierungsbefehl eine Kopie des Tags, die Eingabedaten zur Komprimierung (d. h. die Daten in einer Zwischenspeicherleitung) und optional eine Messung der unkomprimierten Größe der Eingabedaten im Befehl enthalten. Dieses Konzept ist in 2 illustriert, worin ein Komprimierungsbefehl 201 in Form eines einzelnen Befehls illustriert ist, der den Tag, die Eingabedaten und optional eine Messung der unkomprimierten Größe der Eingabedaten enthält. Natürlich kann der Komprimierungsbefehl andere Elemente nach Wunsch enthalten, wie zum Beispiel einen Befehlskopf, aber nicht darauf beschränkt. Der Komprimierungsbefehl kann auch eine oder mehrere Komprimierungsanweisungen enthalten oder damit assoziiert sein, die konfiguriert sein können, zu bewirken, dass die CODEC 104 Komprimierungsvorgänge an den Eingabedaten durchführt. Natürlich müssen der Tag, die Daten und die Komprimierungsanweisung nicht im gleichen Befehl enthalten sein und können in verschiedenen Befehlen nach Wunsch enthalten sein.
  • Das DCM 103 kann den Komprimierungsbefehl direkt vom CCM 101 empfangen oder der Komprimierungsbefehl kann von anderen Komponenten der Zwischenspeichervorrichtung 102 an das DCM 103 weitergeleitet werden. Auf jeden Fall kann das DCM 103 als Reaktion auf den Komprimierungsbefehl die vom Zwischenspeicher-Controllermodul empfangenen Eingabedaten zur Komprimierung an die CODEC 104 weiterleiten. Als Reaktion kann die CODEC 104 eine oder mehrere Komprimierungsvorgänge an den Eingabedaten ausführen, z. B. unter Verwendung eines oder mehrerer Komprimierungsalgorithmen, wie vorher beschrieben. Wie bei Punkt 2 von 1 illustriert, kann die CODEC 104 die resultierende komprimierte Ausgabe im Transferpuffer 105 speichern. Die CODEC 104 kann dann dem DCM 103 den Abschluss des Komprimiervorgangs und die Position der komprimierten Ausgabe (z. B. einen Identifikator des Puffers 105, Adressbereiche innerhalb des Puffers 105 usw.) melden.
  • Wie bei Punkt 3 von 1 illustriert, kann das DCM 103 eine Rückmeldung an das CCM 101 kommunizieren. Das Rückmeldesignal kann den Tag enthalten, der den Eingabedaten zugeordnet wurde, sowie eine Messung der Größe der im DCM 103 gespeicherten komprimierten Ausgabe. Dieses Konzept wird in 2 gezeigt, wobei die Rückmeldung 202 als den Tag und die Größe der komprimierten Ausgabe enthaltend illustriert ist. Deshalb kann das DCM 103 in einigen Ausführungsformen die Größe der komprimierten Ausgabe messen oder anderweitig ermitteln, die im Puffer 105 gespeichert ist, und die ermittelte Größe in einen Rückmeldebefehl aufnehmen. Alternativ oder zusätzlich kann die CODEC 104 konfiguriert sein, die Größe der komprimierten Daten automatisch an das DCM 103 zu kommunizieren, z. B. nachdem es die Eingabedaten komprimiert.
  • Während die vorliegende Offenbarung Ausführungsformen vorsieht, in denen das DCM 101 automatisch eine Rückmeldung, die die komprimierte Größe und den Tag angibt, an das CCM 101 erteilt, müssen die Systeme der vorliegenden Offenbarung nicht auf diese Weise konfiguriert sein. Tatsächlich kann das DCM 103 in einigen Ausführungsformen die Erteilung einer Rückmeldung vom Empfang einer Abfragenachricht vom CCM 101 abhängig machen. Während zum Beispiel Eingabedaten vom CCM 101 durch die CODEC 104 komprimiert und im Transferpuffer 105 gespeichert werden, kann das DCM 103 einen Datensatz pflegen (z. B. eine Tabelle oder eine andere Datenstruktur), der die mit Eingabedaten (z. B. verschiedene unterschiedliche Zwischenspeicherleitungen) assoziierten Tags, die vom CCM 101 empfangen wurden, mit der Größe der mit den Tags assoziierten komprimierten Ausgabe sowie mit der Position der komprimierten Ausgabe (z. B. im Puffer 105) korreliert. Das DCM 101 kann dann auf den Empfang eines Abfragebefehls vom CCM 101 warten. Das CCM 101 kann zum Beispiel in einigen Ausführungsformen einen Abfragebefehl an das DCM 103 übertragen, wobei der Abfragebefehl eine Abfrageanweisung und einen Tag enthält. Als Reaktion auf den Abfragebefehl kann das DCM 103 die Größe der mit dem Tag assoziierten komprimierten Ausgabe nachschlagen und wie oben besprochen eine Rückmeldung, die den Tag und die Größe der komprimierten Ausgabe enthält, an das CCM 101 senden.
  • Auf jeden Fall, wie bei Punkt 4 von 4 illustriert, kann das CCM 101 eine Rückmeldung von der Zwischenspeichervorrichtung 102 (oder genauer vom DCM 103) empfangen. Als Reaktion auf den Empfang der Rückmeldung kann das CCM 101 die Rückmeldung analysieren, um den Tag und die Größe der komprimierten Daten zu identifizieren. Durch diese Analyse kann das CCM 101 das Ausmaß ermitteln, in dem die mit dem Tag assoziierten Eingabedaten durch die CODEC 104 komprimiert wurden. Anders ausgedrückt kann das CCM 101 durch Analysieren der Rückmeldung die Größe der im Puffer 105 gespeicherten komprimierten Ausgabe ermitteln. Da die komprimierte Ausgabe mit dem Tag (in der Rückmeldung) assoziiert ist und der Tag mit den Eingabedaten (im Komprimierungsbefehl) assoziiert war, kann das CCM 101 deshalb die Größe der komprimierten Ausgabe und/oder das Ausmaß ermitteln, in dem die Eingabedaten durch die CODEC 104 komprimiert wurden (d. h. das Komprimierungsverhältnis der Eingabedaten).
  • Das CCM 101 kann dann ermitteln, wo die komprimierte Ausgabe im Arbeitsspeicher 106 gespeichert werden soll. In dieser Hinsicht kann das CCM 101 Kenntnis der logischen Blockadressen (LBAs) im Arbeitsspeicher 106 sowie des aktuellen Zustands dieser logischen Blockadressen (z. B. als beschrieben, nicht beschrieben usw.) aufweisen. Das CCM 101 kann zum Beispiel eine LBA-Tabelle pflegen, die alle der LBAs im Arbeitsspeicher 106 identifiziert. Zumindest teilweise auf Basis der Größe der komprimierten Ausgabe und/oder des den Eingabedaten zurechenbaren Komprimierungsverhältnisses kann das CCM 101 dann einen oder mehrere LBAs im Arbeitsspeicher 106 zur Speicherung der komprimierten Ausgabe reservieren.
  • Wie bei Punkt 5 von 1 gezeigt, kann das CCM 101 dann der Zwischenspeichervorrichtung 102 einen Schreibbefehl erteilen. Im Allgemeinen kann der Schreibbefehl konfiguriert sein, zu bewirken, dass die Zwischenspeichervorrichtung 102 eine im Puffer 105 gespeicherte komprimierte Ausgabe in eine oder mehrere LBAs des Arbeitsspeichers 106 schreibt. Dementsprechend kann der Schreibbefehl einen Tag, der mit einer komprimierten Ausgabe (und entsprechenden Eingabedaten) assoziiert ist, sowie eine oder mehrere LBAs enthalten, an die die komprimierte Ausgabe geschrieben werden soll. Dieses Konzept wird in 2 illustriert, wobei ein Schreibbefehl 203 als ein einzelner Befehl illustriert ist, der einen Tag und eine oder mehrere LBAs im Arbeitsspeicher 106 enthält, an die die mit dem Tag assoziierte komprimierte Ausgabe geschrieben werden soll. Eine Schreib-/Festschreibanweisung (nicht gezeigt) kann auch im Befehl enthalten sein oder separat vom CCM 101 übertragen werden, je nach Wunsch.
  • Nun zu Punkt 6 von 1 gewandt, kann das DCM 103 konfiguriert sein, den Schreibbefehl vom CCM 101 zu empfangen. Als Reaktion auf den Schreibbefehl kann das DCM 103 bewirken, dass die Zwischenspeichervorrichtung 102 die mit dem Tag assoziierten komprimierten Daten, die im Schreibbefehl identifiziert werden, vom Puffer 105 an die eine oder mehreren logischen Blockadressen des Arbeitsspeichers 106 zu schreiben, die im Schreibbefehl spezifiziert werden. Das Schreiben der komprimierten Daten vom Puffer 105 in den Arbeitsspeicher 106 kann auf eine bereits bekannte oder noch zu entwickelnde Weise stattfinden und wird deshalb hier nicht besprochen.
  • Zum Zweck der Klarheit konzentrierte sich die obige Diskussion auf eine Ausführungsform, in der das CCM 101 ermittelt, dass eine im Puffer 105 gespeicherte komprimierte Ausgabe in den Arbeitsspeicher 106 der Zwischenspeichervorrichtung 102 geschrieben werden soll. Es sollte verstanden werden, dass die obige Diskussion nur zu Beispielzwecken dient und dass eine im Puffer 105 gespeicherte komprimierte Ausgabe nicht immer in den Arbeitsspeicher 106 der Zwischenspeichervorrichtung 102 geschrieben werden muss. Tatsächlich sieht die vorliegende Offenbarung Ausführungsformen vor, in denen das CCM 101 als Reaktion auf eine Rückmeldung ermittelt, dass eine im Puffer 105 gespeicherte komprimierte Ausgabe nicht in den Arbeitsspeicher 106 geschrieben werden soll.
  • Beispielsweise kann das CCM 101 in einigen Ausführungsformen eine Rückmeldung analysieren, um die Größe einer komprimierten Ausgabe, die im Puffer 105 gespeichert ist, und/oder ein den Eingabedaten zurechenbares Komprimierungsverhältnis zu ermitteln, wie oben besprochen. In solchen Ausführungsformen kann das CCM 101 auch konfiguriert sein, zumindest teilweise auf Basis des Komprimierungsverhältnisses und/oder der Größe der komprimierten Ausgabe zu ermitteln, ob die komprimierte Ausgabe in den Arbeitsspeicher 106 geschrieben werden soll. Das CCM 101 kann beispielsweise das den Eingabedaten zurechenbare Komprimierungsverhältnis mit einem Schwellenwert-Komprimierungsverhältnis vergleichen und zumindest teilweise auf Basis davon, ob das den Eingabedaten zurechenbare Komprimierungsverhältnis das Schwellenwert-Komprimierungsverhältnis überschreitet oder nicht, ermitteln, ob die komprimierte Ausgabe nicht in den Arbeitsspeicher 106 geschrieben werden soll. Alternativ oder zusätzlich kann das CCM 101 die Größe der komprimierten Ausgabe im Puffer 105 mit einer Schwellenwertgröße vergleichen und zumindest teilweise auf Basis davon, ob die Größe der komprimierten Ausgabe die Schwellenwertgröße überschreitet oder nicht, ermitteln, ob die komprimierte Ausgabe in den Arbeitsspeicher 106 geschrieben werden soll oder nicht.
  • In Fällen, in denen das CCM 101 ermittelt, dass die komprimierte Ausgabe nicht in den Arbeitsspeicher 106 geschrieben werden soll, kann das CCM 101 der Zwischenspeichervorrichtung 102 (oder genauer dem DCM 103) einen Verwerfungsbefehl erteilen. Der Verwerfungsbefehl kann zum Beispiel eine Verwerfungsanweisung und einen Tag enthalten. Als Reaktion auf den Verwerfungsbefehl kann das DCM 103 bewirken, dass die Zwischenspeichervorrichtung 102 die mit dem Tag assoziierte komprimierte Ausgabe aus dem Puffer 105 löscht.
  • Wie oben besprochen sieht die vorliegende Offenbarung Ausführungsformen vor, in denen das CCM 101 einen Tag mit Zwischenspeicherleitungsdaten assoziiert, die komprimiert werden sollen, das DCM 103 den Tag mit den im Transferpuffer 105 gespeicherten komprimierten Daten assoziiert und das CCM einen Schreibbefehl erteilt, der den Tag beinhaltet, um die komprimierten Daten in den Arbeitsspeicher 106 zu schreiben. Obwohl nützlich, sollte verstanden werden, dass solche Ausführungsformen nur zu Beispielzwecken dienen und dass die vorliegende Offenbarung Ausführungsformen vorsieht, in denen kein Tag verwendet wird, um Daten in einer Zwischenspeicherleitung zu identifizieren. Das CCM 101 kann zum Beispiel konfiguriert sein, um einen Komprimierungsbefehl an die Zwischenspeichervorrichtung 102 zu übertragen, wie oben angemerkt. Im Gegensatz zu den vorangehenden Ausführungsformen kann der Komprimierungsbefehl jedoch Daten/einen Zustand von einer Zwischenspeicherleitung zur Komprimierung beinhalten, kann aber keinen Tag beinhalten. Als Reaktion auf den Komprimierungsbefehl kann das DCM 103 die Daten/den Zustand an die CODEC 104 zur Komprimierung weiterleiten, wonach die komprimierte Ausgabe im Transferpuffer 105 gespeichert werden kann. Das DCM 103 kann dann ein Rückmeldesignal an das CCM 101 senden, wobei der Abschluss des Komprimiervorgangs und die Position/Identifikation des Transferpuffers 105 signalisiert werden, in dem die komprimierte Ausgabe gespeichert ist.
  • Wenn das CCM ermittelt, dass die komprimierte Ausgabe in den Arbeitsspeicher 106 geschrieben werden soll, kann es der Zwischenspeichervorrichtung 102 einen Lesebefehl erteilen. Der Lesebefehl kann auf den Transferpuffer 105 abzielen und bewirken, dass die Zwischenspeichervorrichtung 102 dem Zwischenspeicher-Controller 101 den Inhalt des Transferpuffers 105 bereitstellt. Das CCM 101 kann dann die Größe und/oder das Komprimierungsverhältnis der vom Transferpuffer 105 gelesenen Daten ermitteln und logische Blockadressen im Arbeitsspeicher 106 zur Speicherung dieser reservieren. Das CCM 101 kann dann der Zwischenspeichervorrichtung 102 einen Schreibbefehl erteilen, der die komprimierte Ausgabe und die reservierten LBAs des Arbeitsspeichers 106 enthält. Als Reaktion auf den Schreibbefehl kann die Zwischenspeichervorrichtung 102 die komprimierte Ausgabe in die reservierten LBAs schreiben, die im Schreibbefehl angegeben sind.
  • Wie klar sein wird, können solche Ausführungsformen dem CCM 101 ermöglichen, die Größe und/oder das Komprimierungsverhältnis der komprimierten Ausgabe vor dem Schreiben der komprimierten Ausgabe in den Arbeitsspeicher 106 zu ermitteln, während gleichzeitig der mit einem Generieren und Nachverfolgen eines Tags für jede Zwischenspeicherleitung verbundene Mehraufwand vermieden wird, obwohl möglicherweise auf Kosten darauf, dass auf einen Abschluss der Komprimierung an einem Zustand für eine bestimmte Zwischenspeicherleitung gewartet werden muss, bevor zusätzliche Daten gesendet werden können.
  • Wie bereits angemerkt, können die Zwischenspeichersysteme der vorliegenden Offenbarung beispielsweise in einer oder mehreren Zwischenspeichervorrichtungen und/oder elektronischen Vorrichtungen enthalten sein und können eine oder mehrere Speichervorrichtungen zwischenspeichern. Dieses Konzept ist in 5A illustriert, die ein Blockdiagramm einer elektronischen Vorrichtung zeigt, die ein Zwischenspeichersystem in Übereinstimmung mit der vorliegenden Offenbarung enthält. Wie gezeigt enthält die elektronische Vorrichtung 500 eine Vorrichtungsplattform 501, einen Prozessor 502, eine Speichervorrichtung 503, eine Zwischenspeichervorrichtung (in diesem Fall SSD 504), eine Eingabe/Ausgabe-Schnittstelle/Vorrichtung (z. B. eine Tastatur, eine Maus usw.) und eine Anzeige 506. Das SSD 504 enthält ein Zwischenspeichersystem 100, dessen weitere Details in 5B gezeigt werden.
  • Die elektronische Vorrichtung 500 kann eine beliebige geeignete elektronische Vorrichtung sein, wie die oben beschriebenen elektronischen Vorrichtungen. Nicht einschränkende Beispiele von elektronischen Vorrichtungen, die als die elektronische Vorrichtung 500 eingesetzt werden können, enthalten deshalb eine beliebige Art von mobiler Vorrichtung und/oder stationärer Vorrichtung, wie Kameras, Mobiltelefone, Computerterminals, Desktopcomputer, elektronische Lesegeräte, Faxmaschinen, Kiosks, Netbook-Computer, Notebook-Computer, Internetvorrichtungen, Zahlungsterminals, Organizer, Medienwiedergabegeräte und/oder -Rekorder, Server (z. B. Bladeserver, rackmontierte Server, Kombinationen davon usw.), Set-Top-Boxen, Smartphones, Tablet-Personalcomputer, ultramobile Personalcomputer, verdrahtete Telefone, Kombinationen davon und Ähnliches. Diese Vorrichtungen können tragbar oder stationär sein. In einigen Ausführungsformen können die hier beschriebenen Technologien in einem Desktopcomputer, Laptopcomputer, Smartphone, Tablet-Computer, Netbook-Computer, Notebook-Computer, Organizer, Server, Kombinationen davon und Ähnlichem eingesetzt werden.
  • Die Vorrichtungsplattform kann eine beliebige geeignete Vorrichtungsplattform sein und in einigen Ausführungsformen korreliert sie mit dem Typ der elektronischen Vorrichtung, die als die elektronische Vorrichtung 500 verwendet wird. Wenn deshalb beispielsweise die elektronische Vorrichtung 500 ein Smartphone, ein Notebook-Computer, ein Desktop-Computer, ein Server usw. ist, kann die Vorrichtungsplattform 501 in Form einer Smartphone-Plattform, einer Notebook-Computer-Plattform, einer Desktop-Computer-Plattform bzw. einer Serverplattform sein. Natürlich dienen solche Vorrichtungsplattformen nur zu Beispielzwecken und eine beliebige geeignete Vorrichtungsplattform kann als Vorrichtungsplattform 501 verwendet werden.
  • Der Prozessor 502 kann ein beliebiger geeigneter Universalprozessor oder ein anwendungsspezifischer integrierter Schaltkreis sein und kann fähig sein, einen oder mehrere Threads auf einem oder mehreren Prozessorkernen auszuführen. Ohne Einschränkung ist der Prozessor 502 in einigen Ausführungsformen ein Universalprozessor, wie beispielsweise die Universalprozessoren, die kommerziell von INTEL® Corp., ADVANCED MICRO DEVICES®, ARM®, NVIDIA®, APPLE® und SAMSUNG® erhältlich sind, aber nicht darauf beschränkt. Während 5A die elektronische Vorrichtung 500 als einen einzelnen Prozessor 502 enthaltend illustriert, können mehrere Prozessoren verwendet werden.
  • Die Speichervorrichtung 503 kann eine beliebige geeignete Speichervorrichtung sein, wie die oben erwähnten, ist jedoch nicht darauf beschränkt. Ohne Einschränkung ist die Speichervorrichtung 503 in einigen Ausführungsformen in Form eines SSD, eines Festplattenlaufwerks, eines Bandspeichers, Kombinationen davon und Ähnlichem. In einigen Ausführungsformen kann die Speichervorrichtung 503 eine Eingabe/Ausgabe-Leistung zeigen, die langsamer als die Eingabe/Ausgabe-Leistung der Zwischenspeichervorrichtung, die in der elektronischen Vorrichtung 500 verwendet wird, in diesem Fall des SSD 504.
  • Nun wird auf 5B Bezug genommen, die weitere Details des SSD 504 in 5A und anderer Komponenten der elektronischen Vorrichtung 500 bereitstellt. Wie in 5B gezeigt, kann das SSD 504 mit dem Bus 506 (der Vorrichtungsplattform 501) z. B. über eine Schnittstelle 505 kommunizieren. In dieser Hinsicht kann ein beliebiger geeigneter Bus als der Bus 506 verwendet werden und eine beliebige geeignete Schnittstelle kann als die Schnittstelle 505 verwendet werden. Ohne Einschränkung ist der Bus 506 in einer Ausführungsform ein Serial-Advanced-Technology-Attachment-Bus (SATA-Bus) und die Schnittstelle 505 ist eine SATA-Schnittstelle. Wie weiter in 5B gezeigt, kann das SSD 504 das Zwischenspeicher-Controllermodul (CCM) 101, das Datenkomprimierungsmodul (DCM) 103, die CODEC 104, den Puffer 105 und den Arbeitsspeicher 106 enthalten. Zu Illustrationszwecken werden das CCM 101, das DCM 103 und die CODEC 104 als separate Elemente des SSD 504 gezeigt, aber es sollte verstanden werden, dass eine solche Konfiguration nicht notwendig ist. Tatsächlich kann in einigen Ausführungsformen ein solches Element oder eine Kombination solcher Elemente in einem SSD-Controller (nicht gezeigt) des SSD 504 integriert oder anderweitig enthalten sein.
  • Im Betrieb kann der Bus 506 Daten (z. B. vom Prozessor 502) zum SSD 504 tragen. Das SSD 504 kann die Daten empfangen, z. B. über die Schnittstelle 505. Die empfangenen Daten können dann an das CCM 101 übertragen werden. Zu diesem Zeitpunkt kann das CCM 101 eine oder mehrere Zwischenspeicherrichtlinien anwenden, um zu ermitteln, ob alle oder ein Teil der Daten in den Arbeitsspeicher 106 geschrieben werden soll. Wenn ja, kann das CCM 101 die Daten in eine oder eine Vielzahl von Zwischenspeicherleitungen aufteilen, wie vorher besprochen, und eine oder mehrere der Zwischenspeicherleitungen (optional mit einem Tag gekennzeichnet) zur Komprimierung an das DCM 103 senden. Wie oben besprochen kann das DCM 103 Daten (Eingabedaten) zur Komprimierung an die CODEC 104 senden. Die CODEC 104 kann die Eingabedaten komprimieren, um eine Ausgabe zu erzeugen, die im Puffer 105 gespeichert wird.
  • Das CCM 101 kann dann die Größe der komprimierten Ausgabe und/oder ein den Eingabedaten zurechenbares Komprimierungsverhältnis ermitteln und kann eine oder mehrere Zwischenspeicherrichtlinien anwenden, um zu ermitteln, ob die komprimierte Ausgabe in den Arbeitsspeicher 106 geschrieben werden soll. Wie vorher besprochen, kann diese Entscheidung zumindest teilweise auf der Größe der komprimierten Ausgabe und/oder dem den Eingabedaten zurechenbaren Komprimierungsverhältnis basieren. Wenn die komprimierte Ausgabe in den Arbeitsspeicher 106 geschrieben werden soll, kann das CCM 101 mindestens einen logischen Blockadressbereich im Arbeitsspeicher 106 für die Speicherung der komprimierten Ausgabe reservieren. Das CCM 101 kann dann einen Schreibbefehl an einen Laufwerkscontroller (nicht gezeigt) des SSD 504 senden, worin der Schreibbefehl bewirkt, dass der Controller die im Puffer 105 gespeicherte komprimierte Ausgabe in den bzw. die logischen Blockadressbereich(e) des Arbeitsspeichers 106 schreibt, der bzw. die vom CCM 101 reserviert wurden. Alternativ, wenn CCM 101 integral mit oder in Form eines Laufwerkscontrollers des SSD 504 ist, kann das CCM 101 selbst bewirken, dass die komprimierte Ausgabe im Puffer 105 in den bzw. die reservierten logischen Blockadressbereich(e) des Arbeitsspeichers 106 geschrieben wird. Gleichermaßen kann das CCM 101 in Fällen, in denen die komprimierte Ausgabe nicht in den Arbeitsspeicher 106 geschrieben werden soll, einen Verwerfungsbefehl erteilen, der bewirkt, dass die komprimierte Ausgabe aus dem Puffer 105 gelöscht wird, z. B. bevor sie in den Arbeitsspeicher 106 geschrieben wird.
  • Ein anderer Aspekt der vorliegenden Offenbarung betrifft Verfahren zum Zwischenspeichern von Daten. In dieser Hinsicht wird auf 3 Bezug genommen, die ein Ablaufdiagramm von beispielhaften Vorgängen eines Zwischenspeicher-Controllermoduls nach einem beispielhaften Verfahren zum Zwischenspeichern von Daten in Übereinstimmung mit der vorliegenden Offenbarung ist. Wie gezeigt beginnt das Verfahren 300 bei Block 301. Das Verfahren kann dann mit einem optionalen Block 302 fortfahren, woraufhin das Zwischenspeicher-Controllermodul Eingabedaten von einer Quelle empfangen kann, wie einer anderen Komponente eines Hostsystems. Der Block 302 wird als optional angezeigt, da eine Durchführung der hier beschriebenen Vorgänge möglicherweise nicht auf einen Empfang der Daten durch ein Zwischenspeicher-Controllermodul abhängig gemacht wird. Ein Zwischenspeicher-Controllermodul kann beispielsweise die hier beschriebenen Vorgänge an Daten durchführen, die von einer anderen Komponente eines Zwischenspeicher- oder Hostsystems empfangen wurden oder in einer solchen gespeichert sind, je nach Wunsch.
  • Auf jeden Fall kann das Verfahren mit Block 303 fortfahren, wobei das Zwischenspeicher-Controllermodul Eingabedaten zur Komprimierung und einen optionalen Tag z. B. an ein Datenkomprimierungsmodul wie oben beschrieben senden kann. In Übereinstimmung mit der vorangehenden Beschreibung kann das Zwischenspeicher-Controllermodul in einigen Ausführungsformen die Eingabedaten in Zwischenspeicherleitungen fester Größe aufteilen und die Daten in jeder Zwischenspeicherleitung mit einem Tag assoziieren. Das Zwischenspeicher-Komprimierungsmodul kann dann die Daten in einer Zwischenspeicherleitung und ihren assoziierten Tag an ein Datenkomprimierungsmodul einer Zwischenspeichervorrichtung übertragen, z. B. in einem Komprimierungsbefehl. In Übereinstimmung mit dem Vorangehenden kann der Komprimierungsbefehl konfiguriert sein, zu bewirken, dass das Datenkomprimierungsmodul die Eingabedaten zur Komprimierung an eine Codec weiterleitet. Alternativ kann in Ausführungsformen, in denen kein Tag verwendet wird, der Komprimierungsbefehl die Daten in einer Zwischenspeicherleitung enthalten und kann konfiguriert sein, zu bewirken, dass ein Datenkomprimierungsmodul die Eingabedaten an eine Codec zur Komprimierung weiterleitet und die Position (Transferpuffer) der komprimierten Ausgabe an das Zwischenspeicher-Controllermodul meldet.
  • Das Verfahren kann dann mit Block 304 fortfahren, wobei das Zwischenspeicher-Controllermodul eine Ermittlung durchführen kann, ob eine Rückmeldung empfangen wurde, z. B. von einem Datenkomprimierungsmodul. Wie oben angemerkt, kann die Rückmeldung eine Kopie des Tags enthalten, den das Zwischenspeicher-Controllermodul den Eingabedaten in Block 303 zugewiesen hat und den ein Datenkomprimierungsmodul auch mit einer komprimierten Ausgabe korreliert hat, die durch Komprimieren der Eingabedaten erzeugt wurde. Die Rückmeldung kann auch die Größe der komprimierten Ausgabe enthalten, wie vorher beschrieben. Alternativ kann der Rückmeldebefehl in Fällen, in denen kein Tag verwendet wird, die Identität des Transferpuffers enthalten, in dem die komprimierte Ausgabe gespeichert ist.
  • Wenn keine Rückmeldung empfangen wurde, kann das Zwischenspeicher-Controllermodul fortfahren, auf den Empfang einer Rückmeldung zu warten, und/oder das Verfahren kann mit Block 305 fortfahren. Gemäß Block 305 kann das Zwischenspeicher-Controllermodul eine Abfragenachricht an eine Zwischenspeichervorrichtung übertragen (oder genauer an ein Datenkomprimierungsmodul davon). Wie oben angemerkt kann die Abfragenachricht bewirken, dass die Zwischenspeichervorrichtung und/oder das Vorrichtungs-Komprimierungsmodul die Größe der mit einem Tag assoziierten komprimierten Ausgabe meldet. Alternativ, wenn kein Tag verwendet wird, kann die Abfragenachricht bewirken, dass das Datenkomprimierungsmodul die Position der komprimierten Ausgabe meldet, z. B. die Identität des Transferpuffers 105.
  • Falls eine Rückmeldung empfangen wurde oder falls das Zwischenspeicher-Controllermodul die Größe der komprimierten Ausgabe durch andere Mittel erhalten hat (z. B. über eine Abfragenachricht), kann das Verfahren mit Block 306 fortfahren. Gemäß Block 306 kann das Zwischenspeicher-Controllermodul die Größe der mit einem Tag assoziierten komprimierten Ausgabe und/oder ein den mit dem Tag assoziierten Eingabedaten zurechenbares Komprimierungsverhältnis analysieren, wie allgemein oben besprochen. Alternativ kann das Zwischenspeicher-Controllermodul, wenn kein Tag verwendet wird, einen Lesebefehl erteilen, der auf den Transferpuffer abzielt, in dem die komprimierte Ausgabe gespeichert ist, und kann die Größe der komprimierten Ausgabe und/oder das Komprimierungsverhältnis der entsprechenden Eingabedaten aus dem Inhalt des Transferpuffers ermitteln, der als Reaktion auf den Lesebefehl ausgelesen wird.
  • Das Verfahren kann dann mit Block 307 fortfahren, wobei eine Ermittlung durchgeführt werden kann, ob die komprimierte Ausgabe in einen Arbeitsspeicher einer Zwischenspeichervorrichtung geschrieben werden soll. Wie oben besprochen kann diese Ermittlung in einigen Ausführungsformen zumindest teilweise auf einem Vergleich der Größe der komprimierten Ausgabe und/oder eines den Eingabedaten zurechenbares Komprimierungsverhältnisses mit einem oder mehreren Schwellenwerten basieren.
  • Wenn eine Ermittlung erfolgt, die komprimierte Ausgabe nicht in den Arbeitsspeicher der Zwischenspeichervorrichtung zu schreiben, kann das Verfahren mit Block 308 fortfahren, wobei das Zwischenspeicher-Controllermodul einen Verwerfungsbefehl übertragen kann. Wie oben angemerkt, kann der Verwerfungsbefehl konfiguriert sein, zu bewirken, dass eine Zwischenspeichervorrichtung mit einem Tag assoziierte komprimierte Daten aus einem Transferpuffer in der Zwischenspeichervorrichtung löscht. Wenn jedoch eine Ermittlung erfolgt, dass die komprimierte Ausgabe in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben werden soll, kann das Verfahren mit Block 309 fortfahren.
  • Gemäß Block 309 kann das Zwischenspeicher-Controllermodul eine oder mehrere logische Blockadressen des Arbeitsspeichers der Zwischenspeichervorrichtung zur Speicherung der komprimierten Ausgabe reservieren. Wie oben besprochen kann der Zwischenspeicher-Controller in einigen Ausführungsformen die LBAs zumindest teilweise auf Basis der Größe der mit einem Tag assoziierten komprimierten Ausgabe und/oder eines den mit dem Tag assoziierten Eingabedaten zurechenbaren Komprimierungsverhältnisses reservieren. Auf jeden Fall kann das Zwischenspeicher-Controllermodul danach einen Schreibbefehl an die Zwischenspeichervorrichtung übertragen, der den Tag und die reservierte(n) LBA(s) beinhaltet. Alternativ kann das Zwischenspeicher-Controllermodul, wenn kein Tag verwendet wird, einen Schreibbefehl an die Zwischenspeichervorrichtung übertragen, der die (aus dem Transferpuffer ausgelesenen) komprimierten Daten und die reservierte(n) LBA(s) beinhaltet. Auf jeden Fall kann der Schreibbefehl konfiguriert sein, zu bewirken, dass die Zwischenspeichervorrichtung die komprimierte Ausgabe in die im Schreibbefehl identifizierte(n) LBA(s) schreibt.
  • Nach der Übertragung eines Löschbefehls gemäß Block 308 oder eines Schreibbefehls gemäß Block 309 kann das Verfahren mit einem optionalen Block 310 fortfahren. Gemäß diesem optionalen Block kann einer Ermittlung erfolgen, ob zusätzliche Vorgänge durchgeführt werden sollen. In einigen Ausführungsformen kann das Ergebnis dieser Ermittlung davon abhängen, ob es zusätzliche Eingabedaten gibt, die möglicherweise in den Zwischenspeicher-Arbeitsspeicher geschrieben werden sollen. Falls zusätzliche Vorgänge durchgeführt werden sollen, kann das Verfahren wieder zu Block 303 zurückkehren und sich wiederholen. Falls keine zusätzlichen Vorgänge durchgeführt werden sollen, kann das Verfahren jedoch mit Block 311 fortfahren und enden.
  • Nun wird auf 4 Bezug genommen, die ein Ablaufdiagramm von beispielhaften Vorgängen eines Datenkomprimierungsmoduls in Übereinstimmung mit einem beispielhaften Verfahren zum Komprimieren von Daten in Übereinstimmung mit der vorliegenden Offenbarung ist. Wie gezeigt beginnt Verfahren 400 bei Block 401. Das Verfahren kann dann mit einem optionalen Block 402 fortfahren, wobei ein Datenkomprimierungsmodul eine Ermittlung durchführen kann, ob ein Komprimierungsbefehl, der Eingabedaten und einen optionalen Tag beinhaltet, empfangen wurde. Der Block 402 ist als optional illustriert, da weitere Vorgänge des Verfahrens nicht von der Ermittlung, sondern dem Empfang der Eingabedaten und dem optionalen Tag abhängen können. Wie oben angemerkt kann der Komprimierungsbefehl von einem Zwischenspeicher-Controllermodul erteilt werden, das Daten in eine oder eine Vielzahl von Zwischenspeicherleitungen aufgeteilt hat, wobei die Daten in jeder Zwischenspeicherleitung optional mit einem eindeutigen Tag assoziiert sind.
  • Falls ermittelt wird, dass keine Eingabedaten und optional kein Tag empfangen wurden, kann das Verfahren mit Block 409 fortfahren und enden. Falls Eingabedaten und optional ein Tag empfangen wurden, kann das Verfahren jedoch mit Block 403 fortfahren. In Ausführungsformen, in denen kein Tag verwendet wird, aber Eingabedaten empfangen wurden, kann das Verfahren mit Block 403 fortfahren.
  • Gemäß Block 403 kann das Datenkomprimierungsmodul die Eingabedaten zur Komprimierung an eine CODEC übertragen, wie allgemein oben beschrieben. Das Datenkomprimierungsmodul kann zum Beispiel eine Komprimierungsanweisung und die Eingabedaten an die CODEC übertragen. Die Komprimierungsanweisung kann konfiguriert sein, zu bewirken, dass die CODEC einen oder mehrere Komprimierungsvorgänge an den Eingabedaten durchführt und die resultierende komprimierte Ausgabe in einem Transferpuffer einer Zwischenspeichervorrichtung speichert, wie oben besprochen.
  • Das Verfahren kann dann mit Block 404 fortfahren, wobei das Datenkomprimierungsmodul eine Rückmeldung an das Zwischenspeicher-Controllermodul senden kann. Wie oben angemerkt kann die Übertragung der Rückmeldung automatisch (z. B. als Reaktion auf einen Abschluss der Komprimierungsvorgänge durch die CODEC) oder als Reaktion auf eine Abfrage vom Zwischenspeicher-Controllermodul durchgeführt werden. Auf jeden Fall kann die Rückmeldung den mit den Eingabedaten assoziierten Tag (und die komprimierte Ausgabe) sowie die Größe der komprimierten Ausgabe enthalten. Alternativ kann der Rückmeldebefehl in Fällen, in denen kein Tag verwendet wird, die Position (z. B. die Identität des Transferpuffers) angeben, in dem die komprimierte Ausgabe gespeichert ist.
  • An diesem Punkt kann das Verfahren mit Block 405 fortfahren, wobei eine Ermittlung durchgeführt werden kann, ob ein Festschreib-/Verwerfungsbefehl empfangen wurde. Wie oben angemerkt, kann der Schreibbefehl vom Zwischenspeicher-Controllermodul gesendet werden und kann eine Schreibanweisung, den mit der komprimierten Ausgabe assoziierten Tag und eine oder mehrere logische Blockadressen eines Zwischenspeicher-Arbeitsspeichers enthalten, an die die komprimierte Ausgabe geschrieben werden soll. Im Gegensatz dazu kann ein Verwerfungsbefehl den mit der komprimierten Ausgabe assoziierten Tag zusammen mit einer Verwerfungsanweisung enthalten. Wenn alternativ kein Tag verwendet wird, kann der Schreibbefehl die gesamte oder einen Teil der komprimierten Ausgabe enthalten, die vorher aus einem Transferpuffer ausgelesen wurde, sowie eine oder mehrere logische Blockadressen eines Zwischenspeicher-Arbeitsspeichers, an die die komprimierte Ausgabe geschrieben werden soll. Gleichermaßen kann in Ausführungsformen, in denen kein Tag verwendet wird, der Verwerfungsbefehl auf den Transferpuffer abzielen, in dem die komprimierte Ausgabe gespeichert ist, anstatt den Tag zu verwenden.
  • Wenn kein Festschreib- oder Verwerfungsbefehl empfangen wurde, kann das Verfahren mit Block 406 fortfahren, wobei eine Ermittlung durchgeführt werden kann, ob das Datenkomprimierungsmodul fortfahren soll, auf den Empfang eines solchen Befehls zu warten. Das Ergebnis dieser Ermittlung kann zum Beispiel davon abhängig gemacht werden, ob eine Zeitschwelle abgelaufen ist. Wenn das Datenkomprimierungsmodul fortfahren soll, auf den Empfang eines Festschreib- oder Verwerfungsbefehls zu warten, kann das Verfahren wieder zu Block 405 zurückkehren. Andernfalls kann das Verfahren mit Block 409 fortfahren und enden.
  • Wenn ein Festschreib- oder Verwerfungsbefehl empfangen wurde, kann das Verfahren mit Block 407 fortfahren, wobei das Datenkomprimierungsmodul bewirken kann, dass eine Zwischenspeichervorrichtung die im Transferpuffer gespeicherte komprimierte Ausgabe festschreibt oder löscht, wie jeweils anwendbar. Wenn beispielsweise ein Verwerfungsbefehl, der einen Tag beinhaltet, empfangen wird, kann das Datenkomprimierungsmodul bewirken, dass die Zwischenspeichervorrichtung die komprimierte Ausgabe verwirft, die mit dem Tag im Befehl assoziiert ist und die im Transferpuffer der Zwischenspeichervorrichtung gespeichert ist. Wenn alternativ kein Tag verwendet wird und ein Verwerfungsbefehl empfangen wird und die Position eines Transferpuffers angibt, kann das Datenkomprimierungsmodul bewirken, dass die Zwischenspeichervorrichtung die im identifizierten Transferpuffer gespeicherte komprimierte Ausgabe verwirft.
  • Wenn alternativ ein Schreibbefehl, der einen Tag enthält, empfangen wird, kann das Datenkomprimierungsmodul bewirken, dass die Zwischenspeichervorrichtung die mit dem Tag assoziierte komprimierte Ausgabe an die im Schreibbefehl spezifizierten logischen Blockadressen des Zwischenspeicher-Arbeitsspeichers schreibt. Das Datenkomprimierungsmodul kann solche Vorgänge zum Beispiel durch Erteilen eines Schreibbefehls durchführen, der konfiguriert ist, zu bewirken, dass die Zwischenspeichervorrichtung die mit dem Tag im Schreibbefehl assoziierten komprimierten Daten an die im Schreibbefehl spezifizierten logischen Blockadressen des Zwischenspeicher-Arbeitsspeichers schreibt. In Fällen, in denen kein Tag verwendet wird, kann der Schreibbefehl die zu schreibende komprimierte Ausgabe enthalten (die z. B. vorher aus dem Transferpuffer gelesen wurde). In solchen Fällen kann das Datenkomprimierungsmodul bewirken, dass die Zwischenspeichervorrichtung die komprimierte Ausgabe im Schreibbefehl an die im Schreibbefehl spezifizierte(n) logische(n) Blockadresse(n) schreibt.
  • An diesem Punkt kann das Verfahren mit Vorgangsblock 408 fortfahren, wobei eine Ermittlung durchgeführt werden kann, ob zusätzliche Vorgänge durchgeführt werden sollen. In einigen Ausführungsformen kann das Ergebnis dieser Ermittlung davon abhängen, ob es zusätzliche Eingabedaten und/oder komprimierte Ausgaben gibt, die möglicherweise in den Zwischenspeicher-Arbeitsspeicher geschrieben werden sollen. Falls zusätzliche Vorgänge durchgeführt werden sollen, kann das Verfahren wieder zu Block 402 zurückkehren und sich wiederholen. Falls keine zusätzlichen Vorgänge durchgeführt werden sollen, kann das Verfahren jedoch mit Block 409 fortfahren und enden.
  • Wie aus dem Vorstehenden ersichtlich ist, ermöglichen die Technologien der vorliegenden Offenbarung dem Zwischenspeicher-Controllermodul, die Größe der komprimierten Ausgabe zu kennen, bevor logische Blockadressen eines Zwischenspeicher-Arbeitsspeichers reserviert werden. Als Ergebnis kann das Zwischenspeicher-Controllermodul die Reservierung der logischen Blockadressen des Zwischenspeicher-Arbeitsspeichers an die Größe der komprimierten Ausgabe anpassen. Da das Zwischenspeicher-Controllermodul die Größe jedes Stücks von komprimierten Daten, das in den Arbeitsspeicher geschrieben wird, und die Größe des Zwischenspeicher-Arbeitsspeichers kennt, kann es darüber hinaus die Reservierung und/oder Verfügbarkeit von logischen Blockadressen im Zwischenspeicher-Arbeitsspeicher erkennen, ohne dass es die Zwischenspeichervorrichtung nach diesen Informationen abfragen muss. Die hier beschriebenen Technologien können deshalb eine nahtlosere und/oder effizientere Komprimierung in Zwischenspeichersystemen ermöglichen. Solche Vorteile können auch erlangt werden, ohne Lesebefehle zu beeinflussen, die auf den Zwischenspeicher-Arbeitsspeicher abzielen.
  • Beispiele
  • Die folgenden Beispiele betreffen weitere Ausführungsformen. Die folgenden Beispiele der vorliegenden Offenbarung können gegenständliches Material wie ein System, eine Vorrichtung, ein Verfahren, ein computerlesbares Speichermedium, das Anweisungen speichert, die bewirken, wenn sie ausgeführt werden, dass eine Maschine Handlungen auf Basis des Verfahrens durchführt, und/oder Mittel zum Durchführen von Handlungen auf Basis des Verfahrens umfassen, wie unten bereitgestellt.
  • Beispiel 1: Ein Beispiel der vorliegenden Offenbarung ist ein System, das ein Zwischenspeicher-Controllermodul enthält, wobei das Zwischenspeicher-Controllermodul konfiguriert ist: einen Komprimierungsbefehl zu übertragen, der Eingabedaten an eine Komprimierungsengine enthält, wobei der Komprimierungsbefehl konfiguriert ist, zu bewirken, dass die Komprimierungsengine die Eingabedaten komprimiert, um eine komprimierte Ausgabe zu erzeugen und die komprimierte Ausgabe in einem Transferpuffer zu speichern; mindestens eines von Folgendem vor Schreiben der komprimierten Ausgabe in einen Arbeitsspeicher einer Zwischenspeichervorrichtung zu ermitteln: eine Größe der komprimierten Ausgabe und ein den Eingabedaten zurechenbares Komprimierungsverhältnis; wenn die komprimierte Ausgabe in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben werden soll, mindestens einen logischen Blockadressbereich (LBA-Bereich) in der Arbeitsspeichervorrichtung zur Speicherung der komprimierten Ausgabe zumindest teilweise auf Basis der Größe der komprimierten Ausgabe, des Komprimierungsverhältnisses oder einer Kombination davon zu reservieren.
  • Beispiel 2: Dieses Beispiel enthält beliebige oder alle der Merkmale von Beispiel 1, wobei die Komprimierungsengine Teil der Zwischenspeichervorrichtung ist.
  • Beispiel 3: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 1 und 2, wobei der Transferpuffer Teil der Zwischenspeichervorrichtung ist.
  • Beispiel 4: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 1 bis 3, wobei: das Zwischenspeicher-Controllermodul ferner konfiguriert ist, die Eingabedaten mit einem Tag zu assoziieren und den Tag im Komprimierungsbefehl zu übertragen; der Tag als Reaktion auf den Komprimierungsbefehl mit der komprimierten Ausgabe im temporären Puffer assoziiert wird; und wenn die komprimierte Ausgabe in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben werden soll, das Zwischenspeicher-Controllermodul einen Schreibbefehl an die Zwischenspeichervorrichtung erteilt, der den Tag und den mindestens einen LBA-Bereich beinhaltet, wobei der Schreibbefehl konfiguriert ist, zu bewirken, dass die Zwischenspeichervorrichtung die mit dem Tag assoziierte komprimierte Ausgabe in den mindestens einen, im Schreibbefehl angegebenen LBA-Bereich des Arbeitsspeichers schreibt.
  • Beispiel 5: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 1 bis 4, wobei das Zwischenspeicher-Controllermodul ferner konfiguriert ist, eine Rückmeldung von der Zwischenspeichervorrichtung zu empfangen, wobei die Rückmeldung den Tag und eine Messung der Größe der komprimierten Ausgabe enthält; und als Reaktion auf den Empfang der Rückmeldung mindestens eines von Folgendem zu ermitteln: die Größe der komprimierten Ausgabe und das den Eingabedaten zurechenbare Komprimierungsverhältnis.
  • Beispiel 6: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 1 bis 5, wobei, wenn die komprimierte Ausgabe in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben werden soll, das Zwischenspeicher-Controllermodul ferner konfiguriert ist: die komprimierte Ausgabe aus dem Transferpuffer zu lesen; und einen Schreibbefehl an die Zwischenspeichervorrichtung zu übertragen, der die komprimierte Ausgabe und den mindestens einen LBA-Bereich beinhaltet, wobei der Schreibbefehl konfiguriert ist, zu bewirken, dass die Zwischenspeichervorrichtung die komprimierte Ausgabe im Schreibbefehl in den mindestens einen, im Schreibbefehl angegebenen LBA-Bereich des Arbeitsspeichers schreibt.
  • Beispiel 7: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 1 bis 6, wobei: das Zwischenspeicher-Controllermodul ferner konfiguriert ist, eine Rückmeldung von der Zwischenspeichervorrichtung zu empfangen, wobei die Rückmeldung die Position des Transferpuffers enthält, in dem die komprimierte Ausgabe gespeichert ist; die komprimierte Ausgabe zumindest teilweise durch Erteilen eines Lesebefehls zu lesen, der auf die Position des Transferpuffers abzielt, in dem die komprimierte Ausgabe gespeichert ist; und mindestens eines von Folgendem aus der vom Transferpuffer gelesenen komprimierten Ausgabe zu ermitteln: die Größe der komprimierten Ausgabe und das den Eingabedaten zurechenbare Komprimierungsverhältnis.
  • Beispiel 8: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 1 bis 7, wobei das Zwischenspeicher-Controllermodul konfiguriert ist, den mindestens einen LBA-Bereich vor dem Schreiben der komprimierten Ausgabe in den Arbeitsspeicher zu reservieren.
  • Beispiel 9: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 1 bis 8, wobei eine Größe des mindestens einen LBA-Bereichs wesentlich der Größe der komprimierten Ausgabe entspricht.
  • Beispiel 10: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 1 bis 9, wobei eine Größe des Transferpuffers größer oder gleich einer Größe der Zwischenspeicherleitung ist.
  • Beispiel 11: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 1 bis 10, wobei die Zwischenspeicherleitung eine oder eine Vielzahl von Zwischenspeicherleitungen ist und jede Zwischenspeicherleitung der Vielzahl von Zwischenspeicherleitungen die gleiche Größe hat.
  • Beispiel 12: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 1 bis 11, wobei: das Zwischenspeicher-Controllermodul ferner konfiguriert ist, eine oder mehrere Zwischenspeicherrichtlinien zu implementieren, um zu ermitteln, ob die Eingabedaten im Arbeitsspeicher der Zwischenspeichervorrichtung gespeichert werden sollen.
  • Beispiel 13: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 1 bis 12, wobei der Zwischenspeicher-Controller ferner konfiguriert ist, eine oder mehrere Zwischenspeicherrichtlinien zu implementieren, um zu ermitteln, ob die komprimierte Ausgabe im Arbeitsspeicher der Zwischenspeichervorrichtung gespeichert werden soll.
  • Beispiel 14: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 1 bis 13, wobei der Zwischenspeicher-Controller ferner konfiguriert ist, zu ermitteln, ob die komprimierte Ausgabe im Arbeitsspeicher der Zwischenspeichervorrichtung gespeichert werden soll, bevor die komprimierten Daten in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben werden.
  • Beispiel 15: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 1 bis 14, wobei das Zwischenspeicher-Controllermodul ferner konfiguriert ist, zumindest teilweise auf Basis der Größe der komprimierten Ausgabe zu ermitteln, ob die komprimierte Ausgabe im Arbeitsspeicher der Zwischenspeichervorrichtung gespeichert werden soll.
  • Beispiel 16: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 1 bis 15, wobei das Zwischenspeicher-Controllermodul ferner konfiguriert ist, zumindest teilweise auf Basis eines Vergleichs der Größe der komprimierten Ausgabe mit einer Schwellenwertgröße zu ermitteln, ob die komprimierte Ausgabe in den Arbeitsspeicher der Zwischenspeichervorrichtung gespeichert werden soll.
  • Beispiel 17: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 1 bis 16, wobei das Zwischenspeicher-Controllermodul ferner konfiguriert ist, vor Empfang der Rückmeldung einen Abfragebefehl an die Zwischenspeichervorrichtung zu erteilen, wobei der Abfragebefehl konfiguriert ist, zu bewirken, dass die Zwischenspeichervorrichtung die Rückmeldung an das Zwischenspeicher-Controllermodul kommuniziert.
  • Beispiel 18: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 1 bis 17, wobei das Zwischenspeicher-Controllermodul ferner konfiguriert ist, einen Verwerfungsbefehl zu erteilen, wenn die komprimierte Ausgabe nicht in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben werden soll, wobei der Verwerfungsbefehl konfiguriert ist, zu bewirken, dass die Zwischenspeichervorrichtung die komprimierte Ausgabe aus dem Transferpuffer löscht.
  • Beispiel 19: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 1 bis 18, wobei die komprimierte Ausgabe nicht in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben wird, bevor sie aus dem Transferpuffer gelöscht wird.
  • Beispiel 20: Nach diesem Beispiel wird ein System bereitgestellt, das ein Datenkomprimierungsmodul enthält, wobei das Datenkomprimierungsmodul konfiguriert ist: als Reaktion auf einen Empfang eines Komprimierungsbefehls von einem Zwischenspeicher-Controllermodul, wobei der Komprimierungsbefehl Eingabedaten einer Zwischenspeicherleitung enthält, eine Komprimierungsanweisung an eine Komprimierungs-Dekomprimierungs-Engine zu erteilen, wobei die Komprimierungsanweisung konfiguriert ist, zu bewirken, dass die Komprimierungs-Dekomprimierungs-Engine die Eingabedaten komprimiert, um eine komprimierte Ausgabe zu erzeugen und die komprimierte Ausgabe in einem Transferpuffer einer Zwischenspeichervorrichtung zu speichern; eine Rückmeldung an das Zwischenspeicher-Controllermodul zu kommunizieren, wobei die Rückmeldung konfiguriert ist, zu bewirken, dass das Zwischenspeicher-Controllermodul: eine Größe der komprimierten Ausgabe und/oder ein den Eingabedaten zurechenbares Komprimierungsverhältnis ermittelt; und wenn die komprimierte Ausgabe in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben werden soll, mindestens einen logischen Blockadressbereich in einem Arbeitsspeicher der Zwischenspeichervorrichtung zur Speicherung der komprimierten Ausgabe zumindest teilweise auf Basis der Größe der komprimierten Ausgabe, des Komprimierungsverhältnisses oder einer Kombination davon zu reservieren.
  • Beispiel 21: Dieses Beispiel enthält beliebige oder alle der Merkmale von Beispiel 20, wobei das Datenkomprimierungsmodul ferner konfiguriert ist: als Reaktion auf einen Empfang eines Schreibbefehls, der die mindestens eine, vom Zwischenspeicher-Controllermodul reservierte logische Blockadresse enthält, einen Schreibbefehl zu erteilen, der konfiguriert ist, zu bewirken, dass die Zwischenspeichervorrichtung die komprimierten Daten in die im Schreibbefehl angegebenen logischen Blockadressen des Arbeitsspeichers schreibt.
  • Beispiel 22: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 20 und 21, wobei die komprimierten Daten vor dem Empfang des Schreibbefehls nicht in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben werden.
  • Beispiel 23: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 20 bis 22, wobei: der Komprimierungsbefehl einen Tag enthält, der mit den Eingabedaten assoziiert ist; das Datenkomprimierungsmodul den Tag als weitere Reaktion auf den Komprimierungsbefehl mit der komprimierten Ausgabe assoziiert; und die Rückmeldung den Tag und die Größe der komprimierten Ausgabe enthält.
  • Beispiel 24: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 20 bis 23, wobei das Datenkomprimierungsmodul ferner konfiguriert ist, eine Übertragung der Rückmeldung vom Empfang eines Abfragebefehls vom Zwischenspeicher-Controllermodul abhängig zu machen.
  • Beispiel 25: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 20 bis 24, wobei die Zwischenspeichervorrichtung die Komprimierungs-Dekomprimierungs-Engine enthält.
  • Beispiel 26: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 20 bis 25, wobei die Rückmeldung konfiguriert ist, zu bewirken, dass das Zwischenspeicher-Controllermodul die mindestens eine logische Blockadresse reserviert, bevor die komprimierten Daten in den Arbeitsspeicher geschrieben werden.
  • Beispiel 27: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 20 bis 26, wobei eine Größe der mindestens einen logischen Blockadresse, die vom Zwischenspeicher-Controllermodul reserviert wurde, mit der Größe der komprimierten Ausgabe korreliert.
  • Beispiel 28: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 20 bis 27, wobei eine Größe der mindestens einen logischen Blockadresse, die vom Zwischenspeicher-Controllermodul reserviert wurde, wesentlich gleich der Größe der komprimierten Ausgabe ist.
  • Beispiel 29: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 20 bis 28, wobei eine Größe des Transferpuffers größer oder gleich einer Größe der Zwischenspeicherleitung ist.
  • Beispiel 30: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 20 bis 29, wobei die Zwischenspeicherleitung eine aus einer Vielzahl von Zwischenspeicherleitungen ist und jede Zwischenspeicherleitung der Vielzahl von Zwischenspeicherleitungen die gleiche Größe hat.
  • Beispiel 31: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 20 bis 30, wobei die Rückmeldung konfiguriert ist, zu bewirken, dass das Zwischenspeicher-Controllermodul ermittelt, ob die komprimierte Ausgabe im Arbeitsspeicher der Zwischenspeichervorrichtung gespeichert werden soll, bevor die komprimierten Daten in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben werden.
  • Beispiel 32: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 20 bis 31, wobei das Zwischenspeicher-Controllermodul konfiguriert ist, zumindest teilweise auf Basis der Größe der komprimierten Ausgabe zu ermitteln, ob die komprimierte Ausgabe im Arbeitsspeicher der Zwischenspeichervorrichtung gespeichert werden soll.
  • Beispiel 33: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 20 bis 32, wobei das Zwischenspeicher-Controllermodul konfiguriert ist, zumindest teilweise auf Basis eines Vergleichs der Größe der komprimierten Ausgabe mit einer Schwellenwertgröße zu ermitteln, ob die komprimierte Ausgabe in den Arbeitsspeicher der Zwischenspeichervorrichtung gespeichert werden soll.
  • Beispiel 34: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 20 bis 33, wobei das Datenkomprimierungsmodul ferner konfiguriert ist: als Reaktion auf den Empfang eines Verwerfungsbefehls vom Zwischenspeicher-Controllermodul eine Verwerfungsanweisung an die Zwischenspeichervorrichtung zu erteilen, wobei die Verwerfungsanweisung konfiguriert ist, zu bewirken, dass die Zwischenspeichervorrichtung die komprimierte Ausgabe aus dem Transferpuffer löscht.
  • Beispiel 35: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 20 bis 34, wobei die komprimierte Ausgabe nicht in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben wird, bevor sie aus dem Transferpuffer gelöscht wird.
  • Beispiel 36: Nach diesem Beispiel wird ein Verfahren zum Zwischenspeichern von Daten bereitgestellt, das mit einem Zwischenspeicher-Controllermodul Folgendes enthält: Übermitteln von Eingabedaten einer Zwischenspeicherleitung an eine Komprimierungsengine zur Komprimierung; Komprimieren der Eingabedaten, um eine komprimierte Ausgabe zu erzeugen; Speichern der komprimierten Ausgabe in einem Transferpuffer; Ermitteln, ob die komprimierte Ausgabe in einen Arbeitsspeicher einer Zwischenspeichervorrichtung geschrieben werden soll, zumindest teilweise auf Basis einer Größe der komprimierten Ausgabe, eines den Eingabedaten zurechenbaren Komprimierungsverhältnisses oder einer Kombination davon; und wenn die komprimierte Ausgabe in den Arbeitsspeicher geschrieben werden soll, mindestens einen logischen Blockadressbereich (LBA-Bereich) des Arbeitsspeichers zur Speicherung der komprimierten Ausgabe zumindest teilweise auf Basis der Größe der komprimierten Ausgabe, des Komprimierungsverhältnisses oder einer Kombination davon zu reservieren.
  • Beispiel 37: Dieses Beispiel enthält beliebige oder alle der Merkmale des Beispiels 36 und enthält ferner: wenn die komprimierte Ausgabe in den Arbeitsspeicher geschrieben werden soll, ein Erteilen eines Schreibbefehls vom Zwischenspeicher-Controllermodul, wobei der Schreibbefehl konfiguriert ist, zu bewirken, dass die Zwischenspeichervorrichtung die komprimierte Ausgabe aus dem Transferpuffer in den Arbeitsspeicher schreibt.
  • Beispiel 38: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 36 und 27 und enthält ferner mit dem Zwischenspeicher-Controllermodul: Empfangen einer Rückmeldung von einem Datenkomprimierungsmodul; und Ermitteln der Größe der komprimierten Ausgabe und/oder des Komprimierungsverhältnisses aus der Rückmeldung.
  • Beispiel 39: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 36 bis 38 und enthält ferner ein Erteilen eines Abfragebefehls vom Zwischenspeicher-Controllermodul an das Datenkomprimierungsmodul, wobei der Abfragebefehl konfiguriert ist, zu bewirken, dass das Datenkomprimierungsmodul die Rückmeldung an das Zwischenspeicher-Controllermodul überträgt.
  • Beispiel 40: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 36 bis 39 und enthält ferner: Assoziieren der Eingabedaten mit einem Tag; Assoziieren der komprimierten Ausgabe mit dem Tag; und wenn die komprimierte Ausgabe in den Arbeitsspeicher geschrieben werden soll, enthält der Schreibbefehl den mindestens einen LBA-Bereich und den Tag, wobei der Schreibbefehl konfiguriert ist, zu bewirken, dass die Zwischenspeichervorrichtung die mit dem Tag assoziierten komprimierten Daten vom Transferpuffer in den Arbeitsspeicher schreibt.
  • Beispiel 41: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 36 bis 40 und enthält ferner mit dem Zwischenspeicher-Controllermodul: Empfangen einer Rückmeldung von einem Datenkomprimierungsmodul, wobei die Rückmeldung den Tag enthält; und Ermitteln der Größe der komprimierten Ausgabe und/oder des Komprimierungsverhältnisses zumindest teilweise auf Basis des in der Rückmeldung beinhalteten Tags.
  • Beispiel 42: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 36 bis 41, wobei das Reservieren des mindestens einen LBA-Bereichs vor dem Schreiben der komprimierten Ausgabe in den Arbeitsspeicher erfolgt.
  • Beispiel 43: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 36 bis 42, wobei eine Größe des mindestens einen LBA-Bereichs mit der Größe der komprimierten Ausgabe korreliert.
  • Beispiel 44: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 36 bis 43, wobei eine Größe des mindestens einen LBA-Bereichs wesentlich gleich der Größe der komprimierten Ausgabe ist.
  • Beispiel 45: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 36 bis 44, wobei eine Größe des Transferpuffers größer oder gleich einer Größe der Zwischenspeicherleitung ist.
  • Beispiel 46: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 36 bis 45, wobei die Zwischenspeicherleitung eine aus einer Vielzahl von Zwischenspeicherleitungen ist und jede Zwischenspeicherleitung der Vielzahl von Zwischenspeicherleitungen die gleiche Größe hat.
  • Beispiel 47: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 36 bis 46 und enthält ferner ein Ermitteln zumindest teilweise auf Basis einer oder mehrerer Zwischenspeicherrichtlinien, ob die Eingabedaten im Arbeitsspeicher der Zwischenspeichervorrichtung gespeichert werden sollen.
  • Beispiel 48: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 36 bis 47 und enthält ferner ein Ermitteln zumindest teilweise auf Basis einer oder mehrerer Zwischenspeicherrichtlinien, ob die komprimierte Ausgabe im Arbeitsspeicher der Zwischenspeichervorrichtung gespeichert werden soll.
  • Beispiel 49: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 36 bis 48, wobei das Ermitteln, ob die komprimierte Ausgabe im Arbeitsspeicher der Zwischenspeichervorrichtung gespeichert werden soll, zumindest teilweise auf der Größe der komprimierten Ausgabe basiert.
  • Beispiel 50: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 36 bis 49, wobei das Ermitteln, ob die komprimierte Ausgabe im Arbeitsspeicher der Zwischenspeichervorrichtung gespeichert werden soll, ein Vergleichen der Größe der komprimierten Ausgabe mit einer Schwellenwertgröße enthält.
  • Beispiel 51: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 36 bis 50 und enthält ferner, wenn die komprimierte Ausgabe nicht in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben werden soll, ein Erteilen eines Verwerfungsbefehls an die Zwischenspeichervorrichtung, wobei der Verwerfungsbefehl konfiguriert ist, zu bewirken, dass die Zwischenspeichervorrichtung die komprimierte Ausgabe aus dem Transferpuffer löscht.
  • Beispiel 52: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 36 bis 51, wobei die komprimierte Ausgabe nicht in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben wird, bevor sie aus dem Transferpuffer gelöscht wird.
  • Beispiel 53: Nach diesem Beispiel wird ein Verfahren zum Zwischenspeichern von Daten bereitgestellt, das mit einem Datenkomprimierungsmodul Folgendes enthält:
    Erteilen einer Komprimierungsanweisung an eine Komprimierungs-Dekomprimierungs-Engine, wobei die Komprimierungsanweisung konfiguriert ist, zu bewirken, dass die Komprimierungs-Dekomprimierungs-Engine von einem Zwischenspeicher-Controllermodul empfangene Eingabedaten einer Zwischenspeicherleitung komprimiert, um eine komprimierte Ausgabe zu erzeugen, und die komprimierte Ausgabe in einem Transferpuffer einer Zwischenspeichervorrichtung zu speichern; Übermitteln einer Rückmeldung an das Zwischenspeicher-Controllermodul, wobei die Rückmeldung konfiguriert ist, zu bewirken, dass das Zwischenspeicher-Controllermodul: eine Größe der komprimierten Ausgabe und/oder ein den Eingabedaten zurechenbares Komprimierungsverhältnis ermittelt; und wenn die komprimierte Ausgabe in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben werden soll, Reservieren mindestens eines logischen Blockadressbereichs (LBA-Bereich) in einem Arbeitsspeicher der Zwischenspeichervorrichtung zur Speicherung der komprimierten Ausgabe zumindest teilweise auf Basis der Größe der komprimierten Ausgabe, des Komprimierungsverhältnisses oder einer Kombination davon.
  • Beispiel 54: Dieses Beispiel enthält beliebige oder alle der Merkmale des Beispiels 53 und enthält ferner: als Reaktion auf den Empfang eines Schreibbefehls vom Zwischenspeicher-Controllermodul, ein Erteilen eines Schreibbefehls durch das Datenkomprimierungsmodul, wobei der Schreibbefehl konfiguriert ist, zu bewirken, dass die Zwischenspeichervorrichtung die komprimierte Ausgabe aus dem Transferpuffer in den Arbeitsspeicher schreibt.
  • Beispiel 55: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 53 und 54, wobei die komprimierten Daten vor dem Empfang des Schreibbefehls nicht in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben werden.
  • Beispiel 56: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 53 bis 55, wobei: die Eingabedaten mit einem Tag assoziiert sind; das Datenkomprimierungsmodul den Tag als weitere Reaktion auf den Komprimierungsbefehl mit der komprimierten Ausgabe assoziiert; und die Rückmeldung den Tag enthält.
  • Beispiel 57: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 53 bis 56, wobei die Rückmeldung ferner die Größe der komprimierten Ausgabe enthält.
  • Beispiel 58: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 53 bis 57, wobei eine Übertragung der Rückmeldung vom Empfang eines Abfragebefehls vom Zwischenspeicher-Controllermodul abhängt.
  • Beispiel 59: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 53 bis 58, wobei die Rückmeldung konfiguriert ist, zu bewirken, dass das Zwischenspeicher-Controllermodul die mindestens eine logische Blockadresse reserviert, bevor die komprimierten Daten in den Arbeitsspeicher geschrieben werden.
  • Beispiel 60: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 53 bis 59, wobei eine Größe der mindestens einen logischen Blockadresse, die vom Zwischenspeicher-Controllermodul reserviert wurde, mit der Größe der komprimierten Ausgabe korreliert.
  • Beispiel 61: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 53 bis 60, wobei eine Größe der mindestens einen logischen Blockadresse, die vom Zwischenspeicher-Controllermodul reserviert wurde, wesentlich gleich der Größe der komprimierten Ausgabe ist.
  • Beispiel 62: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 53 bis 62, wobei die Rückmeldung konfiguriert ist, zu bewirken, dass das Zwischenspeicher-Controllermodul ermittelt, ob die komprimierte Ausgabe im Arbeitsspeicher der Zwischenspeichervorrichtung gespeichert werden soll, bevor die komprimierten Daten in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben werden.
  • Beispiel 63: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 53 bis 62 und enthält ferner, als Reaktion auf den Empfang eines Verwerfungsbefehls vom Zwischenspeicher-Controllermodul, ein Erteilen eines Verwerfungsbefehls an die Zwischenspeichervorrichtung mit dem Datenkomprimierungsmodul, wobei der Verwerfungsbefehl konfiguriert ist, zu bewirken, dass die Zwischenspeichervorrichtung die komprimierte Ausgabe aus dem Transferpuffer löscht.
  • Beispiel 64: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 53 bis 63, wobei die komprimierte Ausgabe nicht in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben wird, bevor sie aus dem Transferpuffer gelöscht wird.
  • Beispiel 65: Nach diesem Beispiel wird mindestens ein computerlesbares Medium bereitgestellt, das Anweisungen enthält, die, wenn sie von einem Prozessor eines Zwischenspeichersystems ausgeführt werden, die Durchführung der folgenden Vorgänge mit einem Zwischenspeicher-Controllermodul bewirken, die Folgendes enthalten: Übermitteln von Eingabedaten einer Zwischenspeicherleitung an eine Komprimierungsengine zur Komprimierung; Komprimieren der Eingabedaten, um eine komprimierte Ausgabe zu erzeugen; Speichern der komprimierten Ausgabe in einem Transferpuffer; Ermitteln, ob die komprimierte Ausgabe in einen Arbeitsspeicher einer Zwischenspeichervorrichtung geschrieben werden soll, zumindest teilweise auf Basis einer Größe der komprimierten Ausgabe, eines den Eingabedaten zurechenbaren Komprimierungsverhältnisses oder einer Kombination davon; und wenn die komprimierte Ausgabe in den Arbeitsspeicher geschrieben werden soll, mindestens einen logischen Blockadressbereich (LBA-Bereich) des Arbeitsspeichers zur Speicherung der komprimierten Ausgabe zumindest teilweise auf Basis der Größe der komprimierten Ausgabe, des Komprimierungsverhältnisses oder einer Kombination davon zu reservieren.
  • Beispiel 66: Dieses Beispiel enthält beliebige oder alle der Merkmale des Beispiels 65, wobei die Anweisungen, wenn sie ausgeführt werden, ferner die Durchführung der folgenden Vorgänge bewirken, die Folgendes enthalten: wenn die komprimierte Ausgabe in den Arbeitsspeicher geschrieben werden soll, Erteilen eines Schreibbefehls vom Zwischenspeicher-Controllermodul, wobei der Schreibbefehl konfiguriert ist, zu bewirken, dass die Zwischenspeichervorrichtung die komprimierte Ausgabe aus dem Transferpuffer in den Arbeitsspeicher schreibt.
  • Beispiel 67: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 65 und 66, wobei die Anweisungen, wenn sie ausgeführt werden, ferner die Durchführung der folgenden Vorgänge mit dem Zwischenspeicher-Controllermodul bewirken, die Folgendes enthalten: Empfangen einer Rückmeldung von einem Datenkomprimierungsmodul; und Ermitteln der Größe der komprimierten Ausgabe und/oder des Komprimierungsverhältnisses aus der Rückmeldung.
  • Beispiel 68: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 65 bis 67, wobei die Anweisungen, wenn sie ausgeführt werden, ferner die Durchführung der folgenden Vorgänge bewirken, die Folgendes enthalten: Erteilen eines Abfragebefehls vom Zwischenspeicher-Controllermodul an das Datenkomprimierungsmodul, wobei der Abfragebefehl konfiguriert ist, zu bewirken, dass das Datenkomprimierungsmodul die Rückmeldung an das Zwischenspeicher-Controllermodul überträgt.
  • Beispiel 69: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 65 bis 68, wobei die Anweisungen, wenn sie ausgeführt werden, ferner die Durchführung der folgenden Vorgänge bewirken, die Folgendes enthalten: Assoziieren der Eingabedaten mit einem Tag; Assoziieren der komprimierten Ausgabe mit dem Tag; und wenn die komprimierte Ausgabe in den Arbeitsspeicher geschrieben werden soll, enthält der Schreibbefehl den mindestens einen LBA-Bereich und den Tag, wobei der Schreibbefehl konfiguriert ist, zu bewirken, dass die Zwischenspeichervorrichtung die mit dem Tag assoziierten komprimierten Daten vom Transferpuffer in den Arbeitsspeicher schreibt.
  • Beispiel 70: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 65 bis 69, wobei die Anweisungen, wenn sie ausgeführt werden, ferner die Durchführung der folgenden Vorgänge bewirken, die Folgendes enthalten: Empfangen einer Rückmeldung von einem Datenkomprimierungsmodul, wobei die Rückmeldung den Tag enthält; und Ermitteln der Größe der komprimierten Ausgabe und/oder des Komprimierungsverhältnisses zumindest teilweise auf Basis des in der Rückmeldung beinhalteten Tags.
  • Beispiel 71: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 65 bis 70, wobei das Reservieren des mindestens einen LBA-Bereichs vor dem Schreiben der komprimierten Ausgabe in den Arbeitsspeicher erfolgt.
  • Beispiel 72: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 65 bis 71, wobei eine Größe des mindestens einen LBA-Bereichs mit der Größe der komprimierten Ausgabe korreliert.
  • Beispiel 73: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 65 bis 72, wobei eine Größe des mindestens einen LBA-Bereichs wesentlich gleich der Größe der komprimierten Ausgabe ist.
  • Beispiel 74: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 65 bis 73, wobei eine Größe des Transferpuffers größer oder gleich einer Größe der Zwischenspeicherleitung ist.
  • Beispiel 75: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 65 bis 74, wobei die Zwischenspeicherleitung eine aus einer Vielzahl von Zwischenspeicherleitungen ist und jede Zwischenspeicherleitung der Vielzahl von Zwischenspeicherleitungen die gleiche Größe hat.
  • Beispiel 76: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 65 bis 75, wobei die Anweisungen, wenn sie ausgeführt werden, ferner die Durchführung der folgenden Vorgänge bewirken, die Folgendes enthalten: Ermitteln mit dem Zwischenspeicher-Controllermodul zumindest teilweise auf Basis einer oder mehrerer Zwischenspeicherrichtlinien, ob die Eingabedaten im Arbeitsspeicher gespeichert werden sollen.
  • Beispiel 77: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 65 bis 76, wobei die Anweisungen, wenn sie ausgeführt werden, ferner die Durchführung der folgenden Vorgänge bewirken, die Folgendes enthalten: Ermitteln mit dem Zwischenspeicher-Controllermodul zumindest teilweise auf Basis einer oder mehrerer Zwischenspeicherrichtlinien, ob die komprimierte Ausgabe im Arbeitsspeicher gespeichert werden soll.
  • Beispiel 78: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 65 bis 77, wobei das Ermitteln, ob die komprimierte Ausgabe im Arbeitsspeicher der Zwischenspeichervorrichtung gespeichert werden soll, zumindest teilweise auf der Größe der komprimierten Ausgabe basiert.
  • Beispiel 79: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 65 bis 78, wobei das Ermitteln, ob die komprimierte Ausgabe im Arbeitsspeicher der Zwischenspeichervorrichtung gespeichert werden soll, ein Vergleichen der Größe der komprimierten Ausgabe mit einer Schwellenwertgröße enthält.
  • Beispiel 80: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 65 bis 79, wobei die Anweisungen, wenn sie ausgeführt werden, ferner die Durchführung der folgenden Vorgänge bewirken, die Folgendes enthalten: wenn die komprimierte Ausgabe nicht in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben werden soll, Erteilen eines Verwerfungsbefehls vom Zwischenspeicher-Controllermodul an die Zwischenspeichervorrichtung, wobei der Verwerfungsbefehl konfiguriert ist, zu bewirken, dass die Zwischenspeichervorrichtung die komprimierte Ausgabe aus dem Transferpuffer löscht.
  • Beispiel 81: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 65 bis 80, wobei die komprimierte Ausgabe nicht in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben wird, bevor sie aus dem Transferpuffer gelöscht wird.
  • Beispiel 82: Nach diesem Beispiel wird mindestens ein computerlesbares Medium bereitgestellt, das Anweisungen enthält, die, wenn sie von einem Prozessor eines Zwischenspeichersystems ausgeführt werden, die Durchführung der folgenden Vorgänge mit einem Datenkomprimierungsmodul bewirken, die Folgendes enthalten: Erteilen einer Komprimierungsanweisung an eine Komprimierungs-Dekomprimierungs-Engine, wobei die Komprimierungsanweisung konfiguriert ist, zu bewirken, dass die Komprimierungs-Dekomprimierungs-Engine von einem Zwischenspeicher-Controllermodul empfangene Eingabedaten einer Zwischenspeicherleitung komprimiert, um eine komprimierte Ausgabe zu erzeugen, und die komprimierte Ausgabe in einem Transferpuffer einer Zwischenspeichervorrichtung zu speichern; Übermitteln einer Rückmeldung an das Zwischenspeicher-Controllermodul, wobei die Rückmeldung konfiguriert ist, zu bewirken, dass das Zwischenspeicher-Controllermodul: eine Größe der komprimierten Ausgabe und/oder ein den Eingabedaten zurechenbares Komprimierungsverhältnis ermittelt; und wenn die komprimierte Ausgabe in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben werden soll, Reservieren mindestens eines logischen Blockadressbereichs (LBA-Bereich) in einem Arbeitsspeicher der Zwischenspeichervorrichtung zur Speicherung der komprimierten Ausgabe zumindest teilweise auf Basis der Größe der komprimierten Ausgabe, des Komprimierungsverhältnisses oder einer Kombination davon.
  • Beispiel 83: Dieses Beispiel enthält beliebige oder alle der Merkmale des Beispiels 82, wobei die Anweisungen, wenn sie ausgeführt werden, ferner die Durchführung der folgenden Vorgänge bewirken, die Folgendes enthalten: Erteilen, als Reaktion auf den Empfang eines Schreibbefehls vom Zwischenspeicher-Controllermodul, eines Schreibbefehls durch das Datenkomprimierungsmodul, wobei der Schreibbefehl konfiguriert ist, zu bewirken, dass die Zwischenspeichervorrichtung die komprimierte Ausgabe aus dem Transferpuffer in den Arbeitsspeicher schreibt.
  • Beispiel 84: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 82 und 83, wobei die komprimierten Daten vor dem Empfang des Schreibbefehls nicht in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben werden.
  • Beispiel 85: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 82 bis 84, wobei: die Anweisungen, wenn sie ausgeführt werden, ferner bewirken, dass das Datenkomprimierungsmodul die komprimierte Ausgabe mit einem Tag assoziiert, wobei der Tag mit den Eingabedaten assoziiert ist; und die Rückmeldung den Tag enthält.
  • Beispiel 86: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 82 bis 85, wobei die Rückmeldung ferner die Größe der komprimierten Ausgabe enthält.
  • Beispiel 87: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 82 bis 86, wobei eine Übertragung der Rückmeldung vom Empfang eines Abfragebefehls vom Zwischenspeicher-Controllermodul abhängt.
  • Beispiel 88: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 82 bis 87, wobei die Rückmeldung konfiguriert ist, zu bewirken, dass das Zwischenspeicher-Controllermodul die mindestens eine logische Blockadresse reserviert, bevor die komprimierten Daten in den Arbeitsspeicher geschrieben werden.
  • Beispiel 89: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 82 bis 88, wobei eine Größe der mindestens einen logischen Blockadresse, die vom Zwischenspeicher-Controllermodul reserviert wurde, mit der Größe der komprimierten Ausgabe korreliert.
  • Beispiel 90: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 82 bis 89, wobei eine Größe der mindestens einen logischen Blockadresse, die vom Zwischenspeicher-Controllermodul reserviert wurde, wesentlich gleich der Größe der komprimierten Ausgabe ist.
  • Beispiel 91: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 82 bis 90, wobei die Rückmeldung konfiguriert ist, zu bewirken, dass das Zwischenspeicher-Controllermodul ermittelt, ob die komprimierte Ausgabe im Arbeitsspeicher der Zwischenspeichervorrichtung gespeichert werden soll, bevor die komprimierten Daten in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben werden.
  • Beispiel 92: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 82 bis 91, wobei die Anweisungen, wenn sie ausgeführt werden, ferner die Durchführung der folgenden Vorgänge mit dem Datenkomprimierungsmodul bewirken, die Folgendes enthalten: als Reaktion auf den Empfang eines Verwerfungsbefehls vom Zwischenspeicher-Controllermodul ein Erteilen eines Verwerfungsbfehls an die Zwischenspeichervorrichtung, wobei der Verwerfungsbefehl konfiguriert ist, zu bewirken, dass die Zwischenspeichervorrichtung die komprimierte Ausgabe aus dem Transferpuffer löscht.
  • Beispiel 93: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 82 bis 92, wobei die komprimierte Ausgabe nicht in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben wird, bevor sie aus dem Transferpuffer gelöscht wird.
  • Beispiel 94: Nach diesem Beispiel wird mindestens ein computerlesbares Medium bereitgestellt, das Logik enthält, die zumindest teilweise in Hardware implementiert ist, um das Verfahren eines beliebigen der Beispiele 36 bis 52 durchzuführen.
  • Beispiel 95: Nach diesem Beispiel wird mindestens ein computerlesbares Medium bereitgestellt, das Logik enthält, die zumindest teilweise in Hardware implementiert ist, um das Verfahren eines beliebigen der Beispiele 53 bis 64 durchzuführen.
  • Beispiel 96: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 1 bis 19, wobei das Zwischenspeicher-Controllermodul, die Komprimierungs-Dekomprimierungs-Engine und der Transferpuffer Teil der Zwischenspeichervorrichtung sind und die Zwischenspeichervorrichtung ein Festkörperlaufwerk ist.
  • Beispiel 97: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 1 bis 19 und 96, wobei: das System ferner einen Prozessor, einen Bus und eine Speichervorrichtung enthält; der Prozessor konfiguriert ist, die Eingabedaten über den Bus an das Festkörperlaufwerk zu übertragen; und das Festkörperlaufwerk als Zwischenspeicher für die Speichervorrichtung konfiguriert ist.
  • Beispiel 98: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 20 bis 35, wobei das Zwischenspeicher-Controllermodul, das Datenkomprimierungsmodul, die Komprimierungs-Dekomprimierungs-Engine und der Transferpuffer Teil der Zwischenspeichervorrichtung sind und die Zwischenspeichervorrichtung ein Festkörperlaufwerk ist.
  • Beispiel 99: Dieses Beispiel enthält beliebige oder alle der Merkmale irgendeines der Beispiele 20 bis 35 und 98, wobei: das System ferner einen Prozessor, einen Bus und eine Speichervorrichtung enthält; der Prozessor konfiguriert ist, die Eingabedaten über den Bus an das Festkörperlaufwerk zu übertragen; und das Festkörperlaufwerk als Zwischenspeicher für die Speichervorrichtung konfiguriert ist.
  • Die Begriffe und Ausdrücke, die hier verwendet wurden, werden als Begriffe der Beschreibung und nicht als Beschränkung verwendet und es ist nicht beabsichtigt, bei der Verwendung solcher Begriffe und Ausdrücke irgendwelche Äquivalente der gezeigten und beschriebenen Merkmale (oder Teile davon) auszuschließen, und es wird erkannt, dass verschiedene Modifikationen innerhalb des Umfangs der Ansprüche möglich sind. Dementsprechend sollen die Ansprüche alle solchen Äquivalente abdecken.

Claims (25)

  1. System, das ein Zwischenspeicher-Controllermodul umfasst, wobei das Zwischenspeicher-Controllermodul konfiguriert ist: einen Komprimierungsbefehl zu übertragen, der Eingabedaten an eine Komprimierungsengine umfasst, wobei der Komprimierungsbefehl konfiguriert ist, zu bewirken, dass die Komprimierungsengine die Eingabedaten komprimiert, um eine komprimierte Ausgabe zu erzeugen und die komprimierte Ausgabe in einem Transferpuffer zu speichern; mindestens eines von Folgendem vor Festschreiben der komprimierten Ausgabe in einen Arbeitsspeicher einer Zwischenspeichervorrichtung zu ermitteln: eine Größe der komprimierten Ausgabe und ein den Eingabedaten zurechenbares Komprimierungsverhältnis; wenn die komprimierte Ausgabe in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben werden soll, mindestens einen logischen Blockadressbereich (LBA-Bereich) in der Arbeitsspeichervorrichtung zur Speicherung der komprimierten Ausgabe auf Basis von zumindest teilweise der Größe der komprimierten Ausgabe, dem Komprimierungsverhältnis oder einer Kombination davon zu reservieren.
  2. System nach Anspruch 1, wobei die Komprimierungsengine und der Transferpuffer Teil der Zwischenspeichervorrichtung sind.
  3. System nach einem der Ansprüche 1 und 2, wobei: das Zwischenspeicher-Controllermodul ferner konfiguriert ist, die Eingabedaten mit einem Tag zu assoziieren und den Tag im Komprimierungsbefehl zu übertragen; der Tag als Reaktion auf den Komprimierungsbefehl mit der komprimierten Ausgabe im temporären Puffer assoziiert wird; und wenn die komprimierte Ausgabe in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben werden soll, das Zwischenspeicher-Controllermodul einen Festschreibbefehl an die Zwischenspeichervorrichtung erteilt, der den Tag und den mindestens einen LBA-Bereich beinhaltet, wobei der Festschreibbefehl konfiguriert ist, zu bewirken, dass die Zwischenspeichervorrichtung die mit dem Tag assoziierte komprimierte Ausgabe in den mindestens einen, im Festschreibbefehl angegebenen LBA-Bereich des Arbeitsspeichers schreibt.
  4. System nach Anspruch 3, wobei das Zwischenspeicher-Controllermodul ferner konfiguriert ist, eine Rückmeldung von der Zwischenspeichervorrichtung zu empfangen, wobei die Rückmeldung den Tag und eine Messung der Größe der komprimierten Ausgabe umfasst; und als Reaktion auf den Empfang der Rückmeldung mindestens eines von Folgendem zu ermitteln: die Größe der komprimierten Ausgabe und das den Eingabedaten zurechenbare Komprimierungsverhältnis.
  5. System nach einem der Ansprüche 1 und 2, wobei das Zwischenspeicher-Controllermodul ferner konfiguriert ist, wenn die komprimierte Ausgabe in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben werden soll: die komprimierte Ausgabe aus dem Transferpuffer zu lesen; und einen Festschreibbefehl an die Zwischenspeichervorrichtung zu übertragen, der die komprimierte Ausgabe und den mindestens einen LBA-Bereich beinhaltet, wobei der Festschreibbefehl konfiguriert ist, zu bewirken, dass die Zwischenspeichervorrichtung die komprimierte Ausgabe im Festschreibbefehl in den mindestens einen, im Festschreibbefehl angegebenen LBA-Bereich des Arbeitsspeichers schreibt.
  6. System nach Anspruch 5, wobei das Zwischenspeicher-Controllermodul ferner konfiguriert ist: eine Rückmeldung von der Zwischenspeichervorrichtung zu empfangen, wobei die Rückmeldung die Position des Transferpuffers umfasst, in dem die komprimierte Ausgabe gespeichert ist; die komprimierte Ausgabe zumindest teilweise durch Erteilen eines Lesebefehls zu lesen, der auf die Position des Transferpuffers abzielt, in dem die komprimierte Ausgabe gespeichert ist; und mindestens eines von Folgendem aus der vom Transferpuffer gelesenen komprimierten Ausgabe zu ermitteln: die Größe der komprimierten Ausgabe und das den Eingabedaten zurechenbare Komprimierungsverhältnis.
  7. System nach einem der Ansprüche 1 und 2, wobei das Zwischenspeicher-Controllermodul konfiguriert ist, den mindestens einen LBA-Bereich vor dem Schreiben der komprimierten Ausgabe in den Arbeitsspeicher zu reservieren.
  8. System nach einem der Ansprüche 1 bis 2, wobei das Zwischenspeicher-Controllermodul ferner konfiguriert ist, einen Verwerfungsbefehl zu erteilen, wenn die komprimierte Ausgabe nicht in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben werden soll, wobei der Verwerfungsbefehl konfiguriert ist, zu bewirken, dass die Zwischenspeichervorrichtung die komprimierte Ausgabe aus dem Transferpuffer löscht.
  9. System nach einem der Ansprüche 1 und 2, wobei das Zwischenspeicher-Controllermodul, die Komprimierungs-Dekomprimierungs-Engine und der Transferpuffer Teil der Zwischenspeichervorrichtung sind und die Zwischenspeichervorrichtung ein Festkörperlaufwerk ist.
  10. System nach Anspruch 10, das ferner einen Prozessor, einen Bus und eine Speichervorrichtung umfasst, wobei: der Prozessor konfiguriert ist, die Eingabedaten über den Bus an das Festkörperlaufwerk zu übertragen; und das Festkörperlaufwerk als Zwischenspeicher für die Speichervorrichtung konfiguriert ist.
  11. Verfahren zum Zwischenspeichern von Daten, das Folgendes mit einem Zwischenspeicher-Controllermodul umfasst: Übermitteln von Eingabedaten einer Zwischenspeicherleitung an eine Komprimierungsengine zur Komprimierung; Komprimieren der Eingabedaten, um eine komprimierte Ausgabe zu erzeugen; Speichern der komprimierten Ausgabe in einem Transferpuffer; Ermitteln, ob die komprimierte Ausgabe in einen Arbeitsspeicher einer Zwischenspeichervorrichtung geschrieben werden soll, zumindest teilweise auf Basis einer Größe der komprimierten Ausgabe, eines den Eingabedaten zurechenbaren Komprimierungsverhältnisses oder einer Kombination davon; und wenn die komprimierte Ausgabe in den Arbeitsspeicher geschrieben werden soll, mindestens einen logischen Blockadressbereich (LBA-Bereich) des Arbeitsspeichers zur Speicherung der komprimierten Ausgabe zumindest teilweise auf Basis der Größe der komprimierten Ausgabe, des Komprimierungsverhältnisses oder einer Kombination davon zu reservieren.
  12. Verfahren nach Anspruch 11, das ferner Folgendes umfasst: wenn die komprimierte Ausgabe in den Arbeitsspeicher geschrieben werden soll, Erteilen eines Festschreibbefehls vom Zwischenspeicher-Controllermodul, wobei der Festschreibbefehl konfiguriert ist, zu bewirken, dass die Zwischenspeichervorrichtung die komprimierte Ausgabe aus dem Transferpuffer in den Arbeitsspeicher schreibt.
  13. Verfahren nach Anspruch 11, das ferner Folgendes mit dem Zwischenspeicher-Controllermodul umfasst: Empfangen einer Rückmeldung von einem Datenkomprimierungsmodul; und Ermitteln der Größe der komprimierten Ausgabe und/oder des Komprimierungsverhältnisses aus der Rückmeldung.
  14. Verfahren nach einem der Ansprüche 10 bis 13, das ferner Folgendes umfasst: Assoziieren der Eingabedaten mit einem Tag; Assoziieren der komprimierten Ausgabe mit dem Tag; und wenn die komprimierte Ausgabe in den Arbeitsspeicher geschrieben werden soll, umfasst der Festschreibbefehl den mindestens einen LBA-Bereich und den Tag, wobei der Festschreibbefehl konfiguriert ist, zu bewirken, dass die Zwischenspeichervorrichtung die mit dem Tag assoziierten komprimierten Daten vom Transferpuffer in den Arbeitsspeicher schreibt.
  15. Verfahren nach Anspruch 14, das ferner Folgendes mit dem Zwischenspeicher-Controllermodul umfasst: Empfangen einer Rückmeldung von einem Datenkomprimierungsmodul, wobei die Rückmeldung den Tag umfasst; und Ermitteln der Größe der komprimierten Ausgabe und/oder des Komprimierungsverhältnisses zumindest teilweise auf Basis des in der Rückmeldung beinhalteten Tags.
  16. Verfahren nach einem der Ansprüche 10 bis 13, das ferner ein Ermitteln zumindest teilweise auf Basis einer oder mehrerer Zwischenspeicherrichtlinien umfasst, ob die komprimierte Ausgabe im Arbeitsspeicher der Zwischenspeichervorrichtung gespeichert werden soll.
  17. Verfahren nach einem der Ansprüche 10 bis 13, das ferner Folgendes umfasst: wenn die komprimierte Ausgabe nicht in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben werden soll, Erteilen eines Verwerfungsbefehls an die Zwischenspeichervorrichtung, wobei der Verwerfungsbefehl konfiguriert ist, zu bewirken, dass die Zwischenspeichervorrichtung die komprimierte Ausgabe aus dem Transferpuffer löscht.
  18. Mindestens ein computerlesbares Medium, das Anweisungen umfasst, die, wenn sie von einem Prozessor eines Zwischenspeichersystems ausgeführt werden, die Durchführung der folgenden Vorgänge mit einem Zwischenspeicher-Controllermodul bewirken, die Folgendes umfassen: Übermitteln von Eingabedaten einer Zwischenspeicherleitung an eine Komprimierungsengine zur Komprimierung; Komprimieren der Eingabedaten, um eine komprimierte Ausgabe zu erzeugen; Speichern der komprimierten Ausgabe in einem Transferpuffer; Ermitteln, ob die komprimierte Ausgabe in einen Arbeitsspeicher einer Zwischenspeichervorrichtung geschrieben werden soll, zumindest teilweise auf Basis einer Größe der komprimierten Ausgabe, eines den Eingabedaten zurechenbaren Komprimierungsverhältnisses oder einer Kombination davon; und wenn die komprimierte Ausgabe in den Arbeitsspeicher geschrieben werden soll, mindestens einen logischen Blockadressbereich (LBA-Bereich) des Arbeitsspeichers zur Speicherung der komprimierten Ausgabe zumindest teilweise auf Basis der Größe der komprimierten Ausgabe, des Komprimierungsverhältnisses oder einer Kombination davon zu reservieren.
  19. Mindestens ein computerlesbares Medium nach Anspruch 18, wobei die Anweisungen, wenn sie ausgeführt werden, ferner die Durchführung der folgenden Vorgänge bewirken, die Folgendes umfassen: wenn die komprimierte Ausgabe in den Arbeitsspeicher geschrieben werden soll, Erteilen eines Festschreibbefehls vom Zwischenspeicher-Controllermodul, wobei der Festschreibbefehl konfiguriert ist, zu bewirken, dass die Zwischenspeichervorrichtung die komprimierte Ausgabe aus dem Transferpuffer in den Arbeitsspeicher schreibt.
  20. Mindestens ein computerlesbares Medium nach einem der Ansprüche 18 und 19, wobei die Anweisungen, wenn sie ausgeführt werden, ferner die Durchführung der folgenden Vorgänge mit dem Zwischenspeicher-Controllermodul bewirken, die Folgendes umfassen: Empfangen einer Rückmeldung von einem Datenkomprimierungsmodul; und Ermitteln der Größe der komprimierten Ausgabe und/oder des Komprimierungsverhältnisses aus der Rückmeldung.
  21. Mindestens ein computerlesbares Medium nach Anspruch 19, wobei die Anweisungen, wenn sie ausgeführt werden, ferner die Durchführung der folgenden Vorgänge bewirken, die Folgendes umfassen: Assoziieren der Eingabedaten mit einem Tag; Assoziieren der komprimierten Ausgabe mit dem Tag; und wenn die komprimierte Ausgabe in den Arbeitsspeicher geschrieben werden soll, umfasst der Festschreibbefehl den mindestens einen LBA-Bereich und den Tag, wobei der Festschreibbefehl konfiguriert ist, zu bewirken, dass die Zwischenspeichervorrichtung die mit dem Tag assoziierten komprimierten Daten vom Transferpuffer in den Arbeitsspeicher schreibt.
  22. Mindestens ein computerlesbares Medium nach Anspruch 21, wobei die Anweisungen, wenn sie ausgeführt werden, ferner die Durchführung der folgenden Vorgänge bewirken, die Folgendes umfassen: Empfangen einer Rückmeldung von einem Datenkomprimierungsmodul, wobei die Rückmeldung den Tag umfasst; und Ermitteln der Größe der komprimierten Ausgabe und/oder des Komprimierungsverhältnisses zumindest teilweise auf Basis des in der Rückmeldung beinhalteten Tags.
  23. Mindestens ein computerlesbares Medium nach einem der Ansprüche 18, 19, 21 und 22, wobei das Reservieren des mindestens einen LBA-Bereichs vor dem Schreiben der komprimierten Daten in den Arbeitsspeicher eintritt.
  24. Mindestens ein computerlesbares Medium nach einem der Ansprüche 18, 19, 21 und 22, das ferner ein Ermitteln zumindest teilweise auf Basis einer oder mehrerer Zwischenspeicherrichtlinien umfasst, ob die komprimierte Ausgabe im Arbeitsspeicher der Zwischenspeichervorrichtung gespeichert werden soll.
  25. Mindestens ein computerlesbares Medium nach einem der Ansprüche 18, 19, 21 und 22, das ferner Folgendes umfasst: wenn die komprimierte Ausgabe nicht in den Arbeitsspeicher der Zwischenspeichervorrichtung geschrieben werden soll, Erteilen eines Verwerfungsbefehls an die Zwischenspeichervorrichtung, wobei der Verwerfungsbefehl konfiguriert ist, zu bewirken, dass die Zwischenspeichervorrichtung die komprimierte Ausgabe aus dem Transferpuffer löscht.
DE112015003540.0T 2014-09-26 2015-08-31 Zwischenspeichertechnologien unter Einsatz von Datenkomprimierung Pending DE112015003540T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/497,392 US20160092361A1 (en) 2014-09-26 2014-09-26 Caching technologies employing data compression
US14/497,392 2014-09-26
PCT/US2015/047758 WO2016048599A1 (en) 2014-09-26 2015-08-31 Caching technologies employing data compression

Publications (1)

Publication Number Publication Date
DE112015003540T5 true DE112015003540T5 (de) 2017-05-04

Family

ID=55581788

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112015003540.0T Pending DE112015003540T5 (de) 2014-09-26 2015-08-31 Zwischenspeichertechnologien unter Einsatz von Datenkomprimierung

Country Status (6)

Country Link
US (1) US20160092361A1 (de)
KR (1) KR20170036075A (de)
CN (1) CN106575260A (de)
DE (1) DE112015003540T5 (de)
TW (1) TWI594121B (de)
WO (1) WO2016048599A1 (de)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9652384B2 (en) * 2014-12-16 2017-05-16 Intel Corporation Apparatus, system and method for caching compressed data
US10168939B2 (en) * 2015-11-24 2019-01-01 International Business Machines Corporation Reading records from a tape medium
US10490238B2 (en) * 2017-06-29 2019-11-26 SK Hynix Inc. Serializer and memory device including the same
WO2019029793A1 (en) * 2017-08-08 2019-02-14 Continental Automotive Gmbh METHOD FOR OPERATING A CACHE MEMORY
US10558364B2 (en) 2017-10-16 2020-02-11 Alteryx, Inc. Memory allocation in a data analytics system
US10534555B2 (en) 2017-11-29 2020-01-14 International Business Machines Corporation Host synchronized autonomous data chip address sequencer for a distributed buffer memory system
US10395698B2 (en) 2017-11-29 2019-08-27 International Business Machines Corporation Address/command chip controlled data chip address sequencing for a distributed memory buffer system
US10489069B2 (en) 2017-11-29 2019-11-26 International Business Machines Corporation Address/command chip synchronized autonomous data chip address sequencer for a distributed buffer memory system
US10747442B2 (en) 2017-11-29 2020-08-18 International Business Machines Corporation Host controlled data chip address sequencing for a distributed memory buffer system
CN109558088B (zh) * 2018-12-03 2021-12-17 郑州云海信息技术有限公司 一种压缩方法、***、设备及计算机可读存储介质
US10884940B2 (en) * 2018-12-21 2021-01-05 Advanced Micro Devices, Inc. Method and apparatus for using compression to improve performance of low voltage caches
JP2020154525A (ja) * 2019-03-19 2020-09-24 キオクシア株式会社 メモリシステムおよび情報処理システム
US11054993B2 (en) 2019-05-28 2021-07-06 Intel Corporation Mass storage system having peer-to-peer data movements between a cache and a backend store
CN113656364B (zh) * 2021-08-05 2024-02-20 福瑞泰克智能***有限公司 传感器数据处理方法、装置和计算机可读存储介质
CN114579050B (zh) * 2022-02-14 2024-04-02 阿里巴巴(中国)有限公司 处理压缩数据的方法以及装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5537575A (en) * 1994-06-30 1996-07-16 Foley; Denis System for handling cache memory victim data which transfers data from cache to the interface while CPU performs a cache lookup using cache status information
US6879266B1 (en) * 1997-08-08 2005-04-12 Quickshift, Inc. Memory module including scalable embedded parallel data compression and decompression engines
US6735673B2 (en) * 2002-01-10 2004-05-11 Hewlett-Packard Development Company, L.P. Apparatus and methods for cache line compression
US7849241B2 (en) * 2006-03-23 2010-12-07 International Business Machines Corporation Memory compression method and apparatus for heterogeneous processor architectures in an information handling system
JP4653830B2 (ja) * 2008-09-19 2011-03-16 株式会社東芝 命令キャッシュシステム
US8479080B1 (en) * 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
US20110161560A1 (en) * 2009-12-31 2011-06-30 Hutchison Neil D Erase command caching to improve erase performance on flash memory
US8326811B2 (en) * 2010-10-26 2012-12-04 Hitachi, Ltd. File management method and computer system
CN102129873B (zh) * 2011-03-29 2012-07-04 西安交通大学 提高计算机末级高速缓存可靠性的数据压缩装置及其方法
WO2013048497A1 (en) * 2011-09-30 2013-04-04 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy
US20130265305A1 (en) * 2012-04-04 2013-10-10 Jon N. Hasselgren Compressed Depth Cache
WO2014028183A1 (en) * 2012-08-13 2014-02-20 Lsi Corporation Fractional redundant array of silicon independent elements
US20140098852A1 (en) * 2012-10-05 2014-04-10 Samsung Display Co., Ltd. Compression bandwidth overflow management using auxiliary control channel
US9053121B2 (en) * 2013-01-10 2015-06-09 International Business Machines Corporation Real-time identification of data candidates for classification based compression
CN103326730B (zh) * 2013-06-06 2016-05-18 清华大学 数据并行压缩方法

Also Published As

Publication number Publication date
US20160092361A1 (en) 2016-03-31
KR20170036075A (ko) 2017-03-31
TW201629774A (zh) 2016-08-16
CN106575260A8 (zh) 2017-07-11
WO2016048599A1 (en) 2016-03-31
TWI594121B (zh) 2017-08-01
CN106575260A (zh) 2017-04-19

Similar Documents

Publication Publication Date Title
DE112015003540T5 (de) Zwischenspeichertechnologien unter Einsatz von Datenkomprimierung
KR102584018B1 (ko) 압축된 데이터 백그라운드를 캐싱하는 장치, 시스템 및 방법
DE102017113439B4 (de) Abbildungstabellen für Speichervorrichtungen
DE102018105943A1 (de) Kontextbewusste dynamische Befehlsplanung für ein Datenspeichersystem
DE102013016993B4 (de) Embedded Multimedia Card (eMMC), einen Host steuernde eMMC und Verfahren zum Betreiben eines eMMC-Systems
DE112012005222T5 (de) Halbleiter-Datenspeicherverwaltung
DE102013016609A1 (de) Vorrichtung und Verfahren für ein Storage Class Memory mit niedrigem Energieverbrauch, niedriger Latenz und hoher Kapazität
DE112019000194T5 (de) Verwenden einer ausgefallenen Speichervorrichtung in einem Peer-to-Peer-Speichersystem zum durchführen einer speicherzentrischen Aufgabe
DE102018113447A1 (de) Speichervorrichtung zum Koppeln mit einem Host und Verfahren zum Betreiben des Hosts und der Speichervorrichtung
DE112014000251T5 (de) Echtzeitklassifizierung von Daten in Datenkomprimierungsdomänen
DE112020004591T5 (de) L2P-Übersetzungstechniken in begrenzten RAM-Systemen
DE102017104150A1 (de) Abnutzungsausgleich in Speichervorrichtungen
DE112019000215T5 (de) Wiederherstellungshilfe mit ausgefallener Speichervorrichtung
DE102008036822A1 (de) Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem
DE112016000726T5 (de) Transparente hardwareunterstützte speicherdekompression
DE112014005521T5 (de) Speichermodul und Verfahren zum Verwalten des Abbildens logischer Adressen auf physikalische Adressen
DE112013003255T5 (de) Managementmechanismus für fehlerhafte Blöcke
DE102017120787A1 (de) Verfahren und Vorrichtung zum Entladen von Datenverarbeitung in Hybrid-Speichervorrichtungen
DE112020001937T5 (de) Vorausschauender datenvorabruf in einer datenspeicher-vorrichtung
DE112009000418T5 (de) Vorrichtung und Verfahren zur Nutzung eines Cache
DE102021114457A1 (de) Abwicklung von lesen in vorrichtungen mit in zonen unterteiltem namensraum
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE102021115626A1 (de) Datenaggregation in zns-laufwerk
DE112017004916T5 (de) Verwendung von Kompression zur Kapazitätserhöhung eines speicherseitigen Caches mit grosser Blockgrösse
DE102020115970B3 (de) Befehlsoptimierung durch intelligente schwellwertdetektion

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0012000000

Ipc: G06F0012080000

R016 Response to examination communication