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