-
GEBIET DER ERFINDUNG
-
Die vorliegende Erfindung betrifft allgemein die Datenspeicherung und insbesondere Verfahren und Systeme zum Vorab-Holen (prefetching) von in nichtflüchtigem Speicher gespeicherten Daten.
-
HINTERGRUND DER ERFINDUNG
-
Manche Rechensysteme verwenden Techniken für virtuellen Speicher (Virtual Memory (VM)), die einen schnellen, aber kleinen, flüchtigen Speicher und einen großen, aber langsameren, nichtflüchtigen Speicher verwenden. Zum Beispiel umfasst in manchen mobilen Rechen- und Kommunikationsvorrichtungen das Vorrichtungsbetriebssystem (Operating System (OS)) ein VM-Modul, das den Speicher mit wahlfreiem Zugriff (Random Access Memory (RAM)) der Vorrichtung mit einem Halbleiterlaufwerk (Solid State Drive (SSD)) gemeinsam betreibt.
-
Verschiedene Verfahren zum Verwenden von VM sind im Stand der Technik bekannt. Zum Beispiel beschreibt das
US-Patent 8 429 377 , dessen Offenbarung durch Bezugnahme hierin aufgenommen wird, ein System und ein Verfahren zum Zugreifen auf einen Speicher. Das System umfasst eine Prozessorvorrichtung, die eine Anforderung nach einer Speicherseite an einer virtuellen Adresse ausgibt, und einen Nachschlagepuffer zum Speichern einer oder mehrerer Seitentabelleneinträge, wobei jeder der Seitentabelleneinträge mindestens eine virtuelle Seitennummer und eine physische Seitennummer umfasst. Das System umfasst ferner eine Logikschaltung, die von dem Prozessor eine virtuelle Adresse empfängt und die virtuelle Adresse mit der virtuellen Seitennummer in einem bestimmten der Seitentabelleneinträge vergleicht, um die physische Seitennummer im selben Seitentabelleneintrag auszuwählen. Der Seitentabelleneintrag umfasst ein oder mehrere Bits, die so gesetzt sind, dass sie einen Speicherbereich aus einer Seite ausschließen.
-
In „Key-Study to Execute Code Using Demand Paging and NAND Flash at Smart Card Scale”, Smart Card Research and Advanced Application, Proceedings of the 9th IFIP WG 8.8/11.2 International Conference, CARDIS 2010, Passau, Deutschland, April 2010, Seiten 102 bis 117, das durch Bezugnahme hierin aufgenommen wird, erläutern Geoffroy et al. Einschränkungen, die ein Einbetten von mehreren Anwendungen in so kleine Systeme wie Smart Cards oder Sensoren mit sich bringt. Physische Einschränkungen dieser Systeme, wie beispielsweise ein sehr kleiner Hauptspeicher, und deren Produktionskosten machen dies schwierig zu erreichen. Eine bestimmte, in der Studie vorgeschlagene Lösung liegt darin, Code aus einem billigeren, dichteren, aber langsameren Sekundärspeicher, wie beispielsweise einem NAND-Flash, auszuführen.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Eine Ausführungsform der vorliegenden Erfindung stellt ein Verfahren bereit, das ein Festhalten einer Definition eines Modus spekulativen Auslesens zum Auslesen in einer Datenspeichervorrichtung einschließt, in dem von der Datenspeichervorrichtung angefordert wird, eine Dateneinheit mit einer Dateneinheitgröße zu lesen, und als Reaktion die Datenspeichervorrichtung eine Datenspeicherseite abruft, welche die Dateneinheit enthält und eine größere Datenspeicherseitengröße als die Dateneinheitgröße besitzt, und die Datenspeicherseite in Vorbereitung für nachfolgende Anforderungen aufbewahrt. Eine Aktivierung des Modus spekulativen Auslesens wird koordiniert. Ein Auslesebefehl wird unter Verwendung des Modus spekulativen Auslesens ausgeführt.
-
In manchen Ausführungsformen schließt das Koordinieren der Aktivierung ein Empfangen eines Befehls, eine einzelne Dateneinheit auszulesen, in der Datenspeichervorrichtung ein, und das Ausführen des Auslesebefehls schließt ein Lesen der einzelnen Dateneinheit aus der aufbewahrten Datenspeicherseite ein. In weiteren Ausführungsformen schließt das Ausführen des Auslesebefehls bei Erfassen, dass sich die einzelne Dateneinheit nicht in der aufbewahrten Datenspeicherseite befindet, ein Berichten eines Fehlerereignisses ein. In noch weiteren Ausführungsformen schließt das Ausführen des Auslesebefehls ferner ein Verwerfen der aufbewahrten Datenspeicherseite ein, nachdem alle Dateneinheiten in der aufbewahrten Datenspeicherseite angefordert wurden.
-
In einer Ausführungsform schließt das Ausführen des Auslesebefehls ein Empfangen einer Anforderung, eine gegebene Dateneinheit in der aufbewahrten Datenspeicherseite zu lesen, und ein Ausgeben der gegebenen Dateneinheit und aller darauf folgenden Dateneinheiten aus der aufbewahrten Datenspeicherseite in der Datenspeichervorrichtung ein. In noch einer weiteren Ausführungsform schließt das Koordinieren der Aktivierung ein Berichten der Datenspeicherseitengröße aus der Datenspeichervorrichtung ein. In noch einer weiteren Ausführungsform schließt das Verfahren ferner ein Empfangen eines Schreibbefehls zum Speichern von Daten, deren Größe gleich der Datenspeicherseitengröße ist, und ein Speichern der Daten auf eine Seitengrenze der Datenspeichervorrichtung ausgerichtet in der Datenspeichervorrichtung ein.
-
Zusätzlich wird gemäß einer Datenspeichervorrichtung, die einen nichtflüchtigen Speicher und einen Prozessor einschließt, bereitgestellt. Der Prozessor ist konfiguriert, eine Definition eines Modus spekulativen Auslesens festzuhalten, in dem von der Datenspeichervorrichtung angefordert wird, eine Dateneinheit mit einer Dateneinheitgröße zu lesen, und als Reaktion die Datenspeichereinheit aus dem nichtflüchtigen Speicher eine Datenspeicherseite abruft, welche die Dateneinheit enthält und eine größere Datenspeicherseitengröße als die Dateneinheitgröße besitzt, und die Datenspeicherseite in Vorbereitung für nachfolgende Anforderungen aufbewahrt, um eine Aktivierung des Modus spekulativen Auslesens zu koordinieren, und um unter Verwendung des Modus spekulativen Auslesens einen Auslesebefehl auszuführen.
-
Die vorliegende Erfindung wird aus der folgenden detaillierten Beschreibung der Ausführungsformen davon in Zusammenhang mit den Zeichnungen besser verständlich, in denen:
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 ein Blockdiagramm zeigt, das schematisch ein Datenspeichersystem gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht;
-
2 bis 4 Diagramme zeigen, die schematisch ein Datenzwischenspeichern und -lesen als Teil eines spekulativen Vorab-Holens veranschaulichen;
-
5 einen Ablaufplan zeigt, der gemäß einer Ausführungsform der vorliegenden Erfindung schematisch ein Verfahren zum spekulativen Vorab-Holen von Daten veranschaulicht, indem die Daten auf Seitengrenzen ausgerichtet gespeichert werden; und
-
6 einen Ablaufplan zeigt, der gemäß einer Ausführungsform der vorliegenden Erfindung schematisch ein Verfahren zum Verringern der Startdauer von Anwendungen veranschaulicht.
-
DETAILLIERTE BESCHREIBUNG VON AUSFÜHRUNGSFORMEN
-
Überblick
-
Ausführungsformen der vorliegenden Erfindung, die hierin beschrieben sind, stellen verbesserte Verfahren und Systeme zum Betrieb von virtuellem Speicher (VM) bereit. In vielen Datenspeichersystemen ist der Platz, den ein Betriebssystem (OS) für einen gegebenen Prozess im flüchtigen Speicher des Hosts (hierein als „lokaler Speicher” bezeichnet) alloziert, nicht ausreichend, um den gesamten Code und die gesamten Daten des Prozesses zu beinhalten. Dieses Szenario kann zum Beispiel auftreten, wenn der Gesamtdatenspeicherplatz des lokalen Speichers kleiner ist als der Platz, den der Prozess erfordert, oder wenn das OS mehrere Prozesse gleichzeitig ausführt.
-
In manchen Ausführungsformen umfasst das OS ein Subsystem eines virtuellen Speichers (VM), das den Speicher für Prozesse verwaltet, die im lokalen Speicher ausgeführt werden. In den hierin beschriebenen Ausführungsformen verwaltet der VM den lokalen Speicher und einen großen nichtflüchtigen Speicher, wie beispielsweise ein Flashgestütztes Halbleiterlaufwerk (SSD). Der VM ermöglicht es einem Prozess, einen Speicherplatz zu verwenden, der größer ist als der für diesen Prozess durch das OS allozierte Platz. Gelegentlich kann der Prozess versuchen, auf Daten zuzugreifen, die derzeit lokal nicht verfügbar sind. Solch ein Ereignis wird als Seitenfehlerereignis bezeichnet. Der VM reagiert typischerweise auf Seitenfehler, indem die fraglichen Daten aus dem SSD geholt werden.
-
Der VM greift auf Daten im SSD in Einheiten zu, die hierin als Datenblöcke (data chunks) oder Dateneinheiten bezeichnet werden. Bei Erfassen (oder Empfangen einer Angabe) eines Seitenfehlers holt der VM die entsprechenden fehlenden Daten aus dem SSD, indem der Datenblock angefordert wird, zu dem die fehlenden Daten gehören (auch als der fehlende Block bezeichnet). Um die Zugriffsrate auf fehlende Daten zu verbessern, kann in manchen Ausführungsformen der VM konfiguriert sein, zusätzlich zum fehlenden Block einen oder mehrere darauf folgende Datenblöcke zu holen. Dieser Betriebsmodus wird als spekulatives Vorab-Holen bezeichnet. Spekulatives Vorab-Holen in SSD-gestützten Datenspeichersystemen kann jedoch problematisch sein, wie nachstehend weiter beschrieben.
-
Typischerweise umfasst das OS ferner ein Dateisystem(File System (FS))-Subsystem, das die Speicherung von Daten (z. B. Benutzer- oder andere Daten) in logischen Strukturen, wie beispielsweise Dateien und Verzeichnissen, verwaltet. Das FS speichert Dateien im SSD. Ein Computerprogramm kann eine oder mehrere Dateien ausführen oder anderweitig verwenden. Zum Beispiel kann ein Anwendungsprogramm auf eine große Anzahl kleiner Dateien zugreifen, wie beispielsweise ausführbare und Multimediadateien. Bei Ausführen einer Anwendung lädt das FS zuerst die entsprechenden Anwendungsdateien aus dem SSD in den lokalen Speicher hoch, und der Host führt dann die Anwendung aus dem lokalen Speicher aus. Der Prozess des Hochladens der Dateien einer Anwendung wird als Anwendungsstart bezeichnet. Da die Anwendungsdateien vor dem Ausführen hochgeladen werden sollten, führt eine kürzere Anwendungsstartdauer zu einer besseren Benutzererfahrung.
-
Im Host verwalten das VM- und das FS-Subsystem des OS typischerweise den Speicher in einem kontinuierlichen Raum logischer Adressen. Das SSD umfasst typischerweise eine SSD-Steuereinheit (SSD controller), die den Speicher in physischen Adressen der Flash-Speicher verwaltet. Logische Adressen entsprechen physischen Adressen von Datenblöcken in den Flash-Speichern. Die SSD-Steuereinheit unterhält typischerweise eine Übersetzungstabelle zwischen logischen und physischen Adressen.
-
Die SSD-Steuereinheit speichert Daten im SSD in Einheiten, die als Datenspeicherseiten oder der Kürze wegen einfach als Seiten bezeichnet werden. In manchen Fällen ist der VM (oder das FS) konfiguriert, Datenblöcke zu holen, die kleiner als die Seitengröße des SSD sind. In anderen Worten umfasst eine Seite im SSD typischerweise mehrere Datenblöcke, von denen der VM jeweils eine anfordern kann. Wie nachstehend beschrieben, kann diese Größenabweichung zwischen Datenspeicherseiten und Datenblöcken potenzielle Vorteile des spekulativen Vorab-Holens zunichtemachen.
-
In manchen Ausführungsformen liest das OS Daten in Einheiten, die hierin als Blöcke oder Segmente bezeichnet werden. Die Blockgröße kann zum Beispiel 512 Byte oder 4 Kilobyte (KB) betragen. Daten im SSD werden andererseits in Datenspeicherseiten, deren Größe typischerweise größer als die Blockgröße ist, in die Flash-Speicher geschrieben und aus ihnen abgerufen. Zu Beispielseitengrößen zählen 8 KB, 16 KB und 32 KB.
-
In einer Ausführungsform fordert der VM als Reaktion auf ein Seitenfehlerereignis den entsprechenden fehlenden Block (d. h. den Block, zu dem die fehlenden Daten gehören, die den Seitenfehler erzeugt haben) aus dem SSD an. Im Prinzip kann der VM ein spekulatives Vorab-Holen durchführen, indem zusätzlich zum fehlenden Block ein oder mehrere darauf folgende Blöcke angefordert werden. Diese Vorab-Hol-Operation würde jedoch die Rate eines Zugreifens auf fehlende Daten nicht verbessern, da das SSD für jede Blockanforderung eine gesamte Seite abruft, selbst wenn der VM mehrere Blöcke innerhalb derselben Seite anfordert. Darüber hinaus verursachen solche redundanten Operationen von Seitenabrufen einen erhöhten Energieverbrauch, der die Batterie- oder Akkulebensdauer des Systems verkürzt.
-
Wenn bei den offenbarten Techniken der VM einen fehlenden Block anfordert, wird die Seite, die diesen Block enthält, abgerufen und im SSD zwischengespeichert (cached). Wenn der VM dann einen oder mehrere Blöcke anfordert, die bereits zwischengespeichert sind (z. B. bei Durchführen von spekulativem Vorab-Holen), werden diese Blöcke aus der zwischengespeicherten Seite ausgelesen, ohne ein unnötiges erneutes Lesen der entsprechenden Seite aus dem SSD zu erzeugen.
-
In der Beschreibung, die folgt, nehmen wir einen zugrunde liegenden SSD-Datenspeicher, der eine SSD-Steuereinheit umfasst, und einen flüchtigen Zwischenspeicher an. Der Klarheit willen wird der nichtflüchtige Speicher des SSD als „Flash-Speicher” bezeichnet, sofern nicht anderweitig angegeben. Der Flash-Speicher kann jede geeignete Anzahl individueller Flash-Vorrichtungen umfassen.
-
In einer Ausführungsform gibt der Host-VM dem SSD eine Anforderung zum Abrufen eines fehlenden Blocks aus und gibt der SSD-Steuereinheit zusätzlich eine spekulative Vorab-Hol-Operation an. Die SSD-Steuereinheit ruft die Seite, zu welcher der angeforderte Block gehört, aus dem Flash-Speicher ab und speichert die Seite im Zwischenspeicher zwischen. Die SSD-Steuereinheit liefert den angeforderten Block an den Host und bewahrt die zwischengespeicherte Seite auf, bis der VM alle anderen Blöcke der zwischengespeicherten Seite anfordert.
-
In einer Ausführungsform liest der VM Blöcke, die Teil einer Seite sind, die bereits im SSD zwischengespeichert ist, ab, indem die SSD-Steuereinheit angewiesen wird, jeden solchen Block aus der zwischengespeicherten Seite zu lesen, ohne die gesamte Seite erneut aus dem Flash-Speicher zu lesen. Wenn der VM einen zwischengespeicherten Block anfordert, sich der angeforderte Block jedoch nicht in der zwischengespeicherten Seite befindet, gibt die SSD-Steuereinheit dem VM eine entsprechende Fehlerangabe aus. Der VM kann dann diesen Block mit oder ohne Zwischenspeichern der entsprechenden Seite lesen. Ein Lesen eines zwischengespeicherten Blocks ist schneller als ein Lesen des Blocks aus dem Flash-Speicher.
-
In manchen Ausführungsformen führt der VM spekulatives Vorab-Holen durch, indem ein fehlender Block angefordert wird und zusätzlich das SSD über die spekulative Vorab-Hol-Operation benachrichtigt wird. Das SSD ruft die Seite, zu welcher der angeforderte Block gehört, aus dem Flash-Speicher ab, speichert die Seite zwischen und gibt den angeforderten Block sowie alle darauf folgenden Blöcke in der zwischengespeicherten Seite an den Host aus.
-
Spekulatives Vorab-Holen kann im Prinzip effizienter sein, wenn eine einzige VM-Anforderung die SSD-Steuereinheit veranlasst, Blöcke mit Ausrichtung zu Seitengrenzen abzurufen. Der VM besitzt jedoch keine explizite Kenntnis der Position einzelner Blöcke in der Seite, und daher kann der VM nicht explizit Blöcke anfordern, die zu Seitengrenzen ausgerichtet sind.
-
In einer Ausführungsform berichtet die SSD-Steuereinheit dem VM die im Flash-Speicher verwendete Seitengröße. Der VM speichert dann Daten in Einheiten mit der empfangenen Seitengröße, während zusätzlich die SSD-Steuereinheit angewiesen wird, jede solche Einheit mit Ausrichtung zu Seitengrenzen im Flash-Speicher zu speichern. Wenn der VM später die entsprechenden gespeicherten Daten liest, führt der VM ein spekulatives Vorab-Holen wie vorstehend beschrieben durch, indem der erste Block in einer Seite abgerufen wird, und als Reaktion auf die Anforderung nach spekulativem Vorab-Holen liest das SSD die Seite, zu welcher der erste Block gehört, und speichert sie zwischen und liefert die gesamte Seite an den Host.
-
Bei Starten einer Anwendung kann es vorteilhaft sein, ein spekulatives Vorab-Holen durchzuführen, um die Startdauer zu verringern, wenn zum Beispiel die Anwendungsdateien aufeinander folgend im Flash-Speicher gespeichert sind. Bei Hochladen jeder der Anwendungsdateien ist sich das FS jedoch nicht bewusst, dass die Dateien einem Anwendungsprogramm gemeinsam sind, und besitzt keine explizite Angabe, bei Hochladen dieser Dateien in einen Modus spekulativen Vorab-Holens zu wechseln. In einer Ausführungsform gibt das OS dem FS an, wenn ein Anwendungsstart initiiert wird. Als Reaktion wechselt das FS dann zu einem Lesen der entsprechenden Anwendungsdateien im Modus spekulativen Vorab-Holens.
-
In manchen Ausführungsformen gibt das OS der SSD-Steuereinheit an, wenn ein Anwendungsstart begonnen und beendet wird. Als Reaktion überwacht das SSD die logischen und entsprechenden physischen Adressen der hochgeladenen Dateien der gestarteten Anwendung. Die SSD-Steuereinheit ordnet dann die Anwendungsdateien aufeinander folgend in einem zusammenhängenden Bereich physischer Adressen im Flash-Speicher neu, um ein nachfolgendes effizientes Starten derselben Anwendung unter Verwendung von spekulativem Vorab-Holen zu ermöglichen.
-
In alternativen Ausführungsformen gibt das OS dem FS (anstelle des SSD) an, wann immer das OS einen Anwendungsstart initiiert und beendet. Das FS speichert die logischen Adressen der hochgeladenen Anwendungsdateien und sendet die festgehaltenen Adressen unter Verwendung eines dedizierten Defragmentierungsbefehls an die SSD-Steuereinheit. Die SSD-Steuereinheit ordnet dann die Anwendungsdateien aufeinander folgend im Flash-Speicher neu und aktualisiert die Adressenübersetzungstabelle dementsprechend.
-
Die offenbarten Techniken ermöglichen es, ein spekulatives Vorab-Holen durchzuführen, um die Rate eines Zugreifens auf fehlende Daten bei Erfassen von Seitenfehlerereignissen zu verbessern und um die Dauer eines Startens von Anwendungen zu verringern, während von unnötigen Leseoperationen aus dem Flash-Speicher abgesehen wird. Die offenbarten Techniken verbessern somit Leselatenzzeiten, Energieverbrauch und Batterie- oder Akkulebensdauer des Systems.
-
Systembeschreibung
-
1 zeigt ein Blockdiagramm, das schematisch ein Speichersystem gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht. Im vorliegenden Beispiel umfasst das Speichersystem einen Computer 20, der Daten in einem Halbleiterlaufwerk (SSD) 24 speichert. Der Computer 20 kann zum Beispiel einen mobilen Computer, Tablet-Computer oder PC umfassen. Der Computer umfasst eine Zentraleinheit (Central Processing Unit (CPU)) 26, die als Host dient. In der Beschreibung, die folgt, werden die Begriffe CPU und Host austauschbar verwendet.
-
In alternativen Ausführungsformen kann der Host einen beliebigen anderen, geeigneten Prozessor oder eine beliebige andere, geeignete Steuereinheit umfassen, und die Datenspeichervorrichtung kann eine beliebige andere, geeignete Vorrichtung umfassen. Zum Beispiel kann der Host eine Datenspeichersteuereinheit eines Unternehmens-Datenspeichersystems umfassen, und die Datenspeichervorrichtung kann ein SSD oder eine Anordnung (array) von SSDs umfassen. Weitere Beispiele von Hosts, die Daten in nichtflüchtigen Datenspeichervorrichtungen speichern, umfassen Mobiltelefone, Digitalkameras, Medienwiedergabevorrichtungen und Wechselkarten oder -vorrichtungen.
-
In einer Ausführungsform führt die CPU 26 ein Betriebssystem (OS) 27 aus, das die verschiedenen Aufgaben des Computers 20 abwickelt. Das OS umfasst ferner ein Dateisystem (FS) 28 und ein Subsystem eines virtuellen Speichers (VM) 29. Das FS 28 wickelt die Organisation von Benutzerdaten (und anderen Daten) in logischen Strukturen, wie beispielsweise Verzeichnissen und Dateien, ab. Der VM 29 verwaltet den Speicher für Prozesse, die das FS in einen flüchtigen Host-Speicher 32 hochlädt und die das OS daraus ausführt. Der Speicher 32 wird auch als ein lokaler Speicher bezeichnet. Der Speicher 32 kann jeden geeigneten Typ von flüchtigem Speicher umfassen, wie zum Beispiel DDR, DDR2, DDR3, DDR3L, SDRAM oder RDRAM. In einer typischen Anwendung besitzt der Speicher 32 eine Größe zwischen 1 GB und 32 GB, obwohl auch jede andere geeignete Größe verwendet werden kann.
-
Das SSD 24 speichert Daten für die CPU 26 in einem nichtflüchtigen Speicher, im vorliegenden Beispiel in einem oder mehreren Flash-Speichervorrichtungen 34. In alternativen Ausführungsformen kann der nichtflüchtige Speicher im SSD 24 einen beliebigen anderen geeigneten Typ von nichtflüchtigem Speicher umfassen, wie beispielsweise NOR-Flash, „Charge Trap Flash” (CTF), Phasenwechsel-RAM (Phase Change RAM (PRAM)), magnetoresistiven RAM (Magnetoresistive RAM (MRAM)) oder ferroelektrischen RAM (Ferroelectric RAM (FeRAM)).
-
Eine SSD-Steuereinheit 30 führt die verschiedenen Datenspeicher- und Verwaltungsaufgaben des SSD durch. Die SSD-Steuereinheit wird allgemein auch als eine Speichersteuereinheit bezeichnet. Die SSD-Steuereinheit 30 umfasst eine Host-Schnittstelle 38 zum Kommunizieren mit der CPU 26, eine Speicherschnittstelle 46 zum Kommunizieren mit den Flash-Vorrichtungen 34 und einen Prozessor 42, der die verschiedenen Verarbeitungsaufgaben des SSD ausführt.
-
Das SSD 24 umfasst einen flüchtigen Speicher, im vorliegenden Beispiel einen Speicher mit wahlfreiem Zugriff (RAM) 50. In der Ausführungsform von 1 ist der RAM 50 als Teil der SSD-Steuereinheit 30 gezeigt, obwohl der RAM alternativ dazu von der SSD-Steuereinheit getrennt sein kann. Der RAM 50 kann zum Beispiel einen statischen RAM (Static RAM (SRAM)), einen dynamischen RAM (Dynamic RAM (DRAN)), eine Kombination der zwei RAM-Typen oder jeden anderen geeigneten Typ von flüchtigem Speicher umfassen. Der RAM 50 kann zum Zwischenspeichern von aus den Flash-Vorrichtungen 34 gelesenen Daten verwendet werden, bevor die Daten oder Teile davon an die CPU 26 oder an den Host-Speicher 32 geliefert werden. Wie nachstehend beschrieben, speichert der RAM 50 in manchen Ausführungsformen eine Datenseite zwischen, von der auf Anforderung ein oder mehrere Datenblöcke an die CPU 26 geliefert werden.
-
Der untere Teil von 1 stellt ein beispielhaftes detailliertes Blockdiagramm der NAND-Flash-Vorrichtung 34 dar. Im vorliegenden Beispiel umfasst die Vorrichtung 34 eine Lese/Schreib(reading/writing(R/W))-Einheit 70, die Daten zur Speicherung in der Speichervorrichtung in Datenspeicherwerte umwandelt und sie in Speicherzellen (z. B. analoge Speicherzellen) einer Flash-Speicheranordnung 76 schreibt. In alternativen Ausführungsformen führt die R/W-Einheit die Umwandlung nicht durch, sondern wird mit Spannungs-Samples bereitgestellt, d. h. mit den Datenspeicherwerten zur Speicherung in den Zellen. Die R/W-Einheit programmiert typischerweise (obwohl nicht notwendigerweise) die Speicherzellen unter Verwendung eines iterativen Programmier- und Überprüfungsprozesses (Program and Verify (P&V) process), wie er im Stand der Technik bekannt ist. Beim Auslesen von Daten aus der Anordnung 76 wandelt die R/W-Einheit 70 die Datenspeicherwerte der Speicherzellen in digitale Samples mit einer Auflösung von einem oder einem oder mehreren Bits um. Daten werden typischerweise in Gruppen, die als Datenseiten oder einfach als Seiten bezeichnet werden, in die Speicherzellen geschrieben und daraus gelesen. Flash-Vorrichtungen, wie beispielsweise die Vorrichtungen 34, umfassen typischerweise Seiten von 8 KB, 16 KB oder 32 KB. In manchen Ausführungsformen kann die R/W-Einheit eine Gruppe von Zellen in der Speicheranordnung 76, z. B. einen Block, der mehrere Seiten umfasst, löschen, indem die Zellen mit einem oder mehreren negativen Löschimpulsen beaufschlagt werden.
-
Die Speicheranordnung 76 kann eine „Single-Level Cell”(SLC)-Speicheranordnung, die 1 Bit/Zelle unter Verwendung von zwei Programmierniveaus speichert, oder eine „Multi-Level Cell”(MLC)-Speicheranordnung umfassen, die N Bit/Zelle in 2N Programmierniveaus speichert. Zum Beispiel verwendet eine Vorrichtung mit 2 Bit/Zelle vier Programmierniveaus, und eine Vorrichtung mit 3 Bit/Zelle verwendet acht Programmierniveaus.
-
Manche Speichervorrichtungen umfassen zwei oder mehr separate Speicherzellenanordnungen, die oft als Ebenen bezeichnet werden. Zum Beispiel kann in einer Vorrichtung mit zwei Ebenen, bei der jede Ebene Seiten von 16 KB umfasst, die SSD-Steuereinheit unter Verwendung von Mehrfachebenenzugriff 32 KB in einer einzigen Leseoperation abrufen.
-
Der Prozessor 42 der SSD-Steuereinheit 30 unterhält typischerweise eine Logisch-in-physisch-Adressenübersetzung, welche die durch den Host angegebenen Adressen entsprechenden physischen Datenspeicherorten (auch als physische Adressen bezeichnet) in den Flash-Vorrichtungen 34 zuordnet und die Daten an den entsprechenden physischen Datenspeicherorten speichert. Die Logisch-in-physisch-Adressenübersetzung (auch als Virtuell-zu-physisch-Zuordnung (Virtual-to-Physical mapping – V2P) bezeichnet, kann im RAM 50, in den Flash-Vorrichtungen 34 oder in beiden gespeichert werden.
-
Die logischen und entsprechenden physischen Adressen greifen auf Dateneinheiten zu, die hierin als Datenblöcke bezeichnet werden. In manchen Ausführungsformen ist die Größe einer Datenseite größer als die Größe eines Datenblocks. Zum Beispiel kann der VM mit Datenblöcken von 4 KB konfiguriert sein und die Flash-Speicher mit Seiten einer Größe von 16 KB. Typischerweise, obwohl nicht notwendig, umfasst eine Datenseite eine ganze Zahl an Datenblöcken.
-
Die SSD-Steuereinheit 30 und insbesondere der Prozessor 42 können in Hardware implementiert sein. Alternativ dazu kann die SSD-Steuereinheit einen Mikroprozessor, der geeignete Software ausführt, oder eine Kombination aus Hardware- und Software-Elementen umfassen.
-
Bei der Konfiguration von 1 handelt es sich um eine beispielhafte Konfiguration, die lediglich der konzeptionellen Klarheit willen gezeigt wird. Jede andere geeignete SSD- oder Speichersystemkonfiguration kann ebenso verwendet werden. Elemente, die für das Verständnis der Grundgedanken der vorliegenden Erfindung nicht notwendig sind, wie beispielsweise verschiedene Schnittstellen, Adressierschaltungen, Zeittaktungs- und Sequenzierschaltungen und Debugging-Schaltungen, wurden zur Klarheit in der Figur weggelassen. In manchen Anwendungen, z. B. Nicht-SSD-Anwendungen, werden die Funktionen der SSD-Steuereinheit 30 durch eine geeignete Speichersteuereinheit ausgeführt.
-
In der in 1 gezeigten beispielhaften Systemkonfiguration sind die Speichervorrichtungen 34 und die SSD-Steuereinheit 30 als separate integrierte Schaltungen (Integrated Circuits (ICs)) implementiert. In alternativen Ausführungsformen können die Speichervorrichtungen und die SSD-Steuereinheit jedoch auf separaten Halbleiterchips in einer einzigen Mehrfachchippackung (Multi-Chip Package (MCP)) oder einem einzigen System auf einem Chip (System an Chip (SoC)) integriert und durch einen internen Bus miteinander verbunden sein. Weiter alternativ dazu kann sich manches der oder die gesamte SSD-Steuereinheit-Schaltlogik auf demselben Bauteil befinden, auf dem eine oder mehrere der Speichervorrichtungen 34 angeordnet sind. Weiter alternativ dazu kann ein Teil der oder die gesamte Funktionalität der SSD-Steuereinheit 30 in Software implementiert sein und durch die CPU 26 oder einen anderen Prozessor in Computer ausgeführt werden. In manchen Ausführungsformen können die CPU 26 und die SSD-Steuereinheit 30 auf demselben Bauteil oder auf separaten Bauteilen im selben Vorrichtungspaket hergestellt werden.
-
In manchen Ausführungsformen umfasst der Prozessor 42 und/oder die CPU 26 einen universellen Prozessor, der in Software programmiert ist, um die hierin beschriebenen Funktionen auszuführen. Die Software kann in elektronischer Form, zum Beispiel über ein Netzwerk, auf den Prozessor heruntergeladen werden, oder sie kann alternativ oder zusätzlich dazu auf nichtflüchtigen, gegenständlichen Medien bereitgestellt und/oder gespeichert werden, wie beispielsweise einem magnetischen, optischen oder elektronischen Speicher.
-
VM-Vorab-Holen in SSD-gestützten Datenspeichersystemen
-
In der Beschreibung, die folgt, nehmen wir an, dass der VM 29 Daten aus den Flash-Speichern 34 in Blöcken oder Segmenten einer festen Größe holt. In manchen Ausführungsformen informiert die SSD-Steuereinheit 30 das OS 27 über die minimale Einheitengröße für eine Datenübertragung über die Host-Schnittstelle 38, d. h. die Blockgröße, wie zum Beispiel 512 Byte oder 4 KB. In der Beschreibung, die folgt, nehmen wir eine Blockgröße von 4 KB an. Alternativ dazu kann jedoch auch jede andere geeignete Blockgröße verwendet werden.
-
Wenn ein Softwareprozess oder eine Anwendung, der oder die durch das OS 27 aus dem Host-Speicher 32 ausgeführt wird, auf Daten zugreifen muss, die lokal im Speicher 32 nicht verfügbar sind, tritt ein Seitenfehlerereignis auf. Wenn ein Seitenfehler auftritt, gibt der VM eine oder mehrere E/A-Anforderungen an die SSD-Steuereinheit aus, um die fehlenden Daten aus den entsprechenden Flash-Speichern 34 zu holen. Der Datenblock, zu dem die fehlenden Daten gehören, wird auch als der fehlende Block bezeichnet. Obwohl der VM jeweils nur einen einzigen Block (d. h. den fehlenden Block) holen kann, wird der VM in vielen Fällen bei fortschreitendem Ausführen mit hoher Wahrscheinlichkeit zusätzliche, darauf folgende Datenblöcke holen müssen. Es ist daher typischerweise effizienter, einen kontinuierlichen Bereich mehrerer Blöcke statt nur den fehlenden Block zu holen. Im Kontext der vorliegenden Erfindung und in den Patentansprüchen bezieht sich der Begriff „spekulatives Vorab-Holen” auf ein Holen eines oder mehrerer zusätzlicher Blöcke auf den fehlenden Block folgend. Beim spekulativen Vorab-Holen können die geholten Blöcke einen oder mehrere Blöcke einschließen, die dem fehlenden Block vorangehen.
-
Wie nachstehend demonstriert, kann ein Konfigurieren des VM 29, um im Modus spekulativen Vorab-Holens zu arbeiten, redundante Leseoperationen aus den Flash-Speichern 34 erzeugen, was zu erhöhter Latenzzeit und erhöhtem Energieverbrauch führt. Es wird zum Beispiel angenommen, dass jeder der Flash-Speicher 34 Seiten von 16 KB speichert. Wenn der VM 29 einen einzelnen Datenblock von 4 KB anfordert, sollte die SSD-Steuereinheit die gesamte Seite von 16 KB lesen, zu der dieser Block gehört, und dem Host 26 nur den angeforderten Block liefern. Falls nachfolgende VM-Anforderungen auf andere Seiten zugreifen, werden die anderen drei gelesenen Blöcke (12 KB in diesem Beispiel) nicht verwendet. Wenn darüber hinaus der VM 29 mehrere Blöcke von 4 KB spekulativ vorab anfordert, die sich alle in derselben Seite befinden, erzeugt jede einzelne VM-Anforderung eine separate Leseoperation der gesamten Seite von 16 KB, und für jede solche Leseoperation werden nur 4 KB der Seite von 16 KB an den Host 26 geliefert. Wie zu sehen ist, demonstrieren die vorstehenden Beispiele eine Bandbreitennutzung von nur 25% (4 KB von 16 KB).
-
Die offenbarten Techniken, die nachstehend beschrieben sind, ermöglichen es dem VM, ein spekulatives Vorab-Holen durchzuführen, ohne Bandbreite und Energieverbrauch zu verschwenden. Durch Definieren neuer VM-Operationen kann die SSD-Steuereinheit in den offenbarten Techniken eine Datenseite einmal lesen und zwischenspeichern und die zwischengespeicherten Datenblöcke dieser Seite auf Anforderung an den Host liefern.
-
Verfahren zum effizienten spekulativen Vorab-Holen
-
2 bis 4 zeigen Diagramme, die schematisch ein Datenzwischenspeichern und -lesen als Teil eines spekulativen Vorab-Holens veranschaulichen. Das in jeder von 2 bis 4 dargestellte Diagramm umfasst drei Spalten. Die äußerste linke und äußerste rechte Spalte betreffen Operationen, die durch den VM 29 bzw. durch die SSD-Steuereinheit 30 durchgeführt werden. In jedem Diagramm stellt die mittlere Spalte eine zwischengespeicherte Seite von 16 KB dar, die vier Datenblöcke von 4 KB umfasst. Jedes Diagramm umfasst ferner mehrere Zeilen, die eine einzelne VM-Operation und eine entsprechende SSD-Steuereinheit-Operation pro Zeile darstellen. Jedes Diagramm stellt somit eine Sequenz von VM-Operationen dar, die mit der Zeit durchgeführt werden. In den Diagrammen von 2 bis 4 wird jeder Block von 4 KB durch seine jeweilige physische Adresse angegeben, wie beispielsweise ADR1, ADR2 und so weiter. Somit bezieht sich der Block ADR3 zum Beispiel auf den Datenblock, dessen physische Adresse in den Flash-Speichern ADR3 lautet. In den offenbarten Verfahren speichert die SSD-Steuereinheit Seiten zwischen, die aus den Flash-Speichern 34 im RAM 50 abgerufen werden.
-
Wir nehmen nun Bezug auf 2. Im vorliegenden Beispiel nehmen wir eine Seite von 16 KB an, die vier sequenzielle Blöcke von 4 KB umfasst, deren physische Adressen mit ADR1 bis ADR4 bezeichnet sind. In der ersten Operation, namentlich READ_VM1(ADR3), fordert der VM den Block ADR3 an, gibt jedoch zusätzlich der SSD-Steuereinheit 30 eine spekulative Vorab-Hol-Operation an. Die SSD-Steuereinheit 30 reagiert, indem die Seite von 16 KB gelesen wird, in welcher der angeforderte Block in den Flash-Speichern gespeichert ist, und speichert die Seite im RAM 50 zwischen. Die zwischengespeicherte Seite umfasst die Blöcke ADR1 bis ADR4. Dann liefert die SSD-Steuereinheit 30 nur den Block ADR3 aus der zwischengespeicherten Seite an den Host 26.
-
Als Nächstes führt der VM eine Operation READ_NO_SENSE(ADR1) aus, in welcher der VM den Block ADR1 anfordert, die angibt, den Block aus der zwischengespeichertem Seite zu lesen. Die SSD-Steuereinheit 30 reagiert, indem der zwischengespeicherte Block ADR1 gelesen und an den Host 26 geliefert wird, ohne erneut die gesamte Seite von 16 KB zu lesen. Als Nächstes führt der VM 29 gleichermaßen eine Operation READ_NO_SENSE(ADR2) aus, um die SSD-Steuereinheit 30 zu veranlassen, den zwischengespeicherten Block ADR2 zu lesen und an den Host zu liefern.
-
Bei Durchführen der Operation READ_NO_SENSE(ADR5) fordert der VM den Block ADR5 an, der nicht Teil der zwischengespeicherten Blöcke ADR1 bis ADR4 ist. Als ein Ergebnis reagiert die SSD-Steuereinheit 30, indem sie dem VM ein Ereignis READ_NO_SENSE_MISS angibt. Das Fehlerereignis gibt dem VM an, dass der angeforderte Block noch nicht zwischengespeichert ist und nicht unter Verwendung der Operation READ_NO_SENSE gelesen werden kann.
-
Wenn der VM den Block ADR4 unter Verwendung der Operation READ_NO_SENSE(ADR4) anfordert, liest die SSD-Steuereinheit 30 den zwischengespeicherten Block ADR4 und liefert ihn an den Host. Da der VM durch diese Operation ein Anfordern aller zwischengespeicherten Blöcke ADR1 bis ADR4 (nicht notwendigerweise in fortlaufender Reihenfolge) abschließt, gibt die SSD-Steuereinheit zusätzlich die zwischengespeicherte Seite frei, um ein Verwenden desselben Speicherplatzes im RAM 50 zum Zwischenspeichern anderer Seiten zu ermöglichen.
-
3 beschreibt ein weiteres Verfahren zum spekulativen Vorab-Holen. Obwohl der VM einen einzelnen Block von 4 KB anfordert, bereitet in einer Ausführungsform der VM vor, von der SSD-Steuereinheit 30 bis zur gesamten Seite von 16 KB, zu welcher der angeforderte Block gehört, entgegen zu nehmen. Im Beispiel von 3 gibt der VM 29 eine VM-Operation aus, d. h. READ_VM_TO_END(ADR7), um den Block ADR7 zu holen. Die SSD-Steuereinheit 30 reagiert, indem die Seite gelesen und zwischengespeichert wird, welche die vier aufeinander folgenden Blöcke ADR6 bis ADR9 umfasst, und liefert an den Host nur die angeforderte sowie alle darauf folgenden Blöcke (eine Operation zum Lesen bis zum Ende der Seite), d. h. ADR7 bis ADR9. Zusätzlich liefert die SSD-Steuereinheit 30 zusammen mit den Datenblöcken die Anzahl der gelieferten Blöcke und deren jeweilige logische Adressen an den VM. Auf die Lieferung der Datenblöcke folgend gibt die SSD-Steuereinheit 30 die zwischengespeicherte Seite zum Zwischenspeichern von anderen Seiten frei. Die Funktion des Lesens bis zum Ende der Seite spart redundante Anforderungen durch den VM ein, die sonst separat für einzelne Datenblöcke ausgegeben würden (typischerweise pro Block Speichererfassungs- und Leseoperationen einbeziehend), und macht daher Operationen von direktem Speicherzugriff (Direct Memory Access (DMA)) des OS effizienter.
-
4 beschreibt noch ein weiteres Verfahren zum effizienten spekulativen Vorab-Holen. Das Verfahren ermöglicht ein Holen von Datenblöcken, die zuvor mit Ausrichtung auf die physischen Adressen von Seitengrenzen gespeichert wurden. Im Beispiel von 4 gibt die SSD-Steuereinheit 30 dem VM 29 zuerst die Seitengröße an, im vorliegenden Beispiel 16 KB. Der VM nimmt die angegebene Seitengröße zum Verwenden in nachfolgenden VM-Operationen entgegen. Dann gibt der VM 29 der SSD-Steuereinheit 30 einen Befehl WRITE_VM_ALINGED aus, um 16 KB an Daten auf Seitengrenzen ausgerichtet zu schreiben. Die SSD-Steuereinheit 30 nimmt den Befehl WRITE_VM_ALINGED entgegen und speichert die 16 KB an Daten in vier aufeinander folgende Blöcke, sodass die physische Adresse des ersten Blocks mit der physischen Adresse einer vollständigen Seite übereinstimmt. Im Beispiel von 4 werden die vier zu schreibenden Blöcke (der 16 KB an Daten) in einer Seite gespeichert, deren Adresse ADR6 lautet. Da der VM die logischen Adressen jeglicher Daten kennt, die auf Seitengrenzen ausgerichtet geschrieben wurden, kann der VM später diese Daten als vollständige Seiten spekulativ lesen.
-
Zu einer späteren Gelegenheit führt der VM eine Operation READ_VM_TO_END(ADR6) durch, um die Seite anzufordern, welche die Blöcke ADR6 = ADR9 speichert. Die SSD-Steuereinheit 30 reagiert auf diesen Befehl, indem die gesamte entsprechende Seite zwischengespeichert wird, die vier Blöcke ADR6 bis ADR9 an den Host geliefert werden und die zwischengespeicherte Seite freigegeben wird.
-
In manchen Ausführungsformen wendet die SSD-Steuereinheit einen Blockverdichtungsprozess an, der auch als „Garbage Collection” (GC) bezeichnet wird. In diesem Prozess kopiert die SSD-Steuereinheit gültige Daten aus teilweise gültigen Quellblöcken in einen oder mehrere Zielblöcke. Da bei GC typischerweise gesamte Blöcke oder Seiten kopiert werden, behalten Daten, die auf Seitengrenzen ausgerichtet geschrieben wurden, wie vorstehend beschrieben, ihre Ausrichtung bei, selbst nachdem sie durch den GC-Prozess kopiert wurden.
-
5 zeigt einen Ablaufplan, der gemäß einer Ausführungsform der vorliegenden Erfindung schematisch ein Verfahren zum spekulativen Vorab-Holen veranschaulicht, indem die Daten anfänglich auf Seitengrenzen ausgerichtet gespeichert werden. Das Verfahren wird durch die SSD-Steuereinheit 30 ausgeführt und beginnt in einen Angabeschritt 100, indem die SSD-Steuereinheit 30 dem VM 29 die Seitengröße der Flash-Speicher 34 angibt. Im Beispiel von 5 beträgt die Seitengröße 16 KB. Wie hierin beschrieben, verwendet der VM 29 die angegebene Seitengröße, um Datenblöcke auf Seitengrenzen ausgerichtet zu schreiben, was ein effizientes spekulatives Vorab-Holen dieser Daten ermöglicht.
-
In einem Befehlsempfangsschritt 104 nimmt die SSD-Steuereinheit 30 vom VM 16 KB an Daten, die unter Verwendung des (vorstehend beschriebenen) Befehls WRITE_VM_ALIGNMENT zu speichern sind. In einem Ausgerichtetspeichern-Schritt 108 wählt die SSD-Steuereinheit 30 eine entsprechende Seite in den Flash-Speichern 34 aus und speichert die vier Blöcke von 4 KB, welche die 16 KB an Daten umfassen, auf die Grenzen der ausgewählten Seite ausgerichtet. Der VM 29 verfolgt die logischen Adressen der Datenseiten von 16 KB, die auf physische Seitengrenzen ausgerichtet gespeichert werden. In einem Spekulativlesebefehlsempfangs-Schritt 112 nimmt die SSD-Steuereinheit 30 vom VM 29 eine Anforderung entgegen, die gesamte Seite, die in Schritt 108 gespeichert wurde, spekulativ zu lesen.
-
In Schritt 116 übersetzt die SSD-Steuereinheit 30 die logische Adresse der angeforderten Seite in eine entsprechende physische Adresse, liest die Seitendaten und speichert die Seite im RAM 50 zwischen. In Schritt 116 kann der VM zum Beispiel die (vorstehend beschriebene) Operation READ_VM_TO_END oder eine dedizierte andere VM-Operation verwenden, welche die gesamte zwischengespeicherte Seite an den Host liefert. Die SSD-Steuereinheit liefert dann in einem Seitenlieferungsschritt 120 die 16 KB der zwischengespeicherten Seite über die Host-Schnittstelle 38 an den VM 29. Ferner gibt in Schritt 120 die SSD-Steuereinheit die zwischengespeicherte Seite im RAM 50 frei, um eine Wiederverwendung desselben Speicherplatzes zum Zwischenspeichern weiterer Seiten zu ermöglichen.
-
Schneller Anwendungsstart
-
Ein Anwendungsprogramm greift oft auf eine große Anzahl relativ kleiner Dateien zu, die das FS 28 in den Flash-Speichern 34 speichert, wenn die Anwendung installiert wird. Die Anwendungsdateien können ausführbare Dateien, Bitmap-Dateien, Multimediadateien und Ähnliches umfassen. Wenn das OS 26 eine Anwendung startet, lädt das FS 28 in manchen Ausführungsformen die Dateien der Anwendung von entsprechenden Orten in den Flash-Speichern 34 in den Host-Speicher 32 zum Ausführen hoch. Das FS 28 lädt die Anwendungsdateien hoch, indem an die SSD-Steuereinheit 30 eine Mehrzahl entsprechender Lesebefehle gesendet werden. Die Dauer, die benötigt wird, um die Anwendungsdateien zu starten, sollte kurz sein, sodass der Benutzer unter einer minimalen Verzögerung leidet, bevor er die Anwendung verwenden kann.
-
Verschiedene Verfahren zum Beschleunigen der Startdauer von Anwendungen sind im Stand der Technik bekannt. Beispielverfahren sind durch Yongsoo et al. in „FAST: quick application launch on solid-state drives”, Proceedings of the 9th USENIX conference on File and Storage Technologies, Seiten 259 bis 272, 15. bis 17. Februar 2011, San Jose, USA, beschrieben, was durch Bezugnahme hierein aufgenommen wird.
-
In manchen Ausführungsformen, die hierin beschrieben sind, verwendet das FS 28 spekulatives Vorab-Holen, um die Dauer des Startens von Anwendungen zu verringern. Zum Beispiel kann das FS 28 spekulative Vorab-Hol-Verfahren verwenden, wie vorstehend in den 2 bis 4 beschrieben.
-
In einer Beispielausführungsform werden die Anwendungsdateien aufeinander folgend in einem zusammenhängenden Bereich physischer Adressen in einem der Flash-Speicher gespeichert. Bei Empfangen von Identifikationen der Anwendungsdateien vom OS 27 wäre es für das FS 28 möglich gewesen, jede der Anwendungsdateien separat mit deaktiviertem spekulativem Vorab-Holen aus dem Flash-Speicher zu lesen. Dies würde jedoch zu redundanten Leseoperationen im Flash-Speicher und daher mit einer langen Startdauer führen, insbesondere wenn die Größe der Dateien in der Größenordnung der Blockgröße (z. B. 4 KB) oder weniger liegt.
-
In einer offenbarten Ausführungsform weist das OS 27 zusätzlich zum Bereitstellen der Identifikation der Anwendungsdateien das FS 28 darauf hin, dass die Dateien gemeinsam zu einem Anwendungsprogramm gehören. Bei Empfangen dieses Hinweises wechselt das FS 28 automatisch in dem Modus spekulativen Vorab-Holens, in dem das FS 28 spekulatives Vorab-Holen, wie beispielsweise vorstehend in Bezug auf 2 bis 4 beschrieben, verwendet, um mehrere Blöcke von 4 KB effizient zu lesen.
-
6 zeigt einen Ablaufplan, der gemäß einer Ausführungsform der vorliegenden Erfindung schematisch ein Verfahren zum Verringern der Startdauer von Anwendungen veranschaulicht. Das Verfahren wird durch die SSD-Steuereinheit 30 ausgeführt und beginnt in einem Startbeginnhinweis-Schritt 200, indem die SSD-Steuereinheit eine Angabe oder einen Hinweis vom OS 27 entgegennimmt, dass ein Anwendungsstartprozess begonnen wurde. Während in einem Überwachungsschritt 204 das FS 28 die Anwendungsdateien liest, überwacht die SSD-Steuereinheit 30 die logischen und entsprechenden physischen Adressen der Lesedaten der hochgeladenen Dateien und hält sie fest.
-
In einem Startbeendigungsangabe-Schritt 208 nimmt die SSD-Steuereinheit 30 vom OS 27 einen Hinweis entgegen, dass das FS 28 das Hochladen der Anwendungsdateien abgeschlossen hat, und die SSD-Steuereinheit 30 stoppt dementsprechend das Festhalten, das in Schritt 204 ausgeführt wurde. Die SSD-Steuereinheit ordnet dann in einem Defragmentierungsschritt 212 die Anwendungsdateien so neu, dass sie einen zusammenhängenden Bereich physischer Adressen belegen. Auf Schritt 212 folgend endet das Verfahren. Die Defragmentierung der Anwendungsdateien zu einem zusammenhängenden physischen Raum macht nachfolgende Starts dieser Anwendung effizienter (z. B. unter Verwendung von spekulativem Vorab-Holen) und verbessert daher aufgrund einer kürzeren Startdauer die Benutzererfahrung.
-
In alternativen Ausführungsformen weist das OS 27 das FS 28 (anstelle der SSD-Steuereinheit 30 wie in Verfahren von 6) daraufhin, ein Festhalten der logischen Adressen der Anwendungsdateien bei Initiierung eines Anwendungsstarts zu beginnen und das Festhalten zu stoppen, wenn der Anwendungsstart endet. In solchen Ausführungsformen gibt das FS 28 auf die Startbeendigung folgend einen dedizierten Defragmentierungsbefehl an die SSD-Steuereinheit 30 aus. Im Defragmentierungsbefehl nimmt die SSD-Steuereinheit 30 vom FS 28 die logischen Adressen der Anwendungsdateien entgegen. Die SSD-Steuereinheit führt dann eine Defragmentierung aus, indem die Anwendungsdateien in einem zusammenhängenden Bereich physischer Adressen neu geordnet werden.
-
Bei den vorstehend beschriebenen Verfahren handelt es sich um beispielhafte Verfahren, und andere Verfahren können in alternativen Ausführungsformen verwendet werden. Obwohl zum Beispiel in allen vorstehend beschriebenen Verfahren die Datenblock- und Seitengrößen 4 KB bzw. 16 KB betragen, können auch beliebige andere Größen verwendet werden.
-
Obwohl typischerweise der VM und das FS dieselbe Datenblockgröße teilen, können als ein weiteres Beispiel in alternativen Ausführungsformen die vorstehend beschriebenen Verfahren so angewendet werden, dass der VM und das FS Datenblöcke unterschiedlicher Größen holen (beide Größen sind kleiner als die Seitengröße). Alternativ oder zusätzlich dazu kann der VM (oder das FS) unterschiedliche Blockgrößen für unterschiedliche Prozesse oder Anwendungen verwenden.
-
Die offenbarten Verfahren sind nicht nur auf SSD-gestützte Datenspeichersysteme anwendbar, sondern auf jegliche Datenspeichersysteme, in denen für jedes Holen eines fehlenden Datenblocks durch den VM (oder das FS) eine Seite, deren Größe größer als die Blockgröße ist, aus dem zugrunde liegenden Speicher abgerufen wird.
-
Obwohl die hierin beschriebenen Ausführungsformen hauptsächlich einen mit Speichervorrichtungen kommunizierenden Host-Prozessor in einem SSD-gestützten Datenspeichersystem ansprechen, können die hierin beschriebenen Verfahren und Systeme auch in anderen Anwendungen verwendet werden, wie beispielsweise in jedem System, in dem ein Host konfiguriert ist, Daten in Blöcken zu speichern, die kleiner als die durch die zugrunde liegende Datenspeichervorrichtung verwendete Datenspeichereinheit sind.
-
Es wird daher ersichtlich sein, dass die vorstehend beschriebenen Ausführungsformen in beispielhafter Weise angeführt werden, und dass die vorliegende Erfindung nicht auf das beschränkt ist, was hierin vorstehend im Einzelnen gezeigt und beschrieben worden ist. Vielmehr schließt der Umfang der vorliegenden Erfindung sowohl Kombinationen und Teilkombinationen der verschiedenen hierin vorstehend beschriebenen Merkmale als auch Variationen und Modifikationen davon ein, die dem Fachmann beim Lesen der vorhergehenden Beschreibung einfallen, und die im Stand der Technik nicht offenbart sind. Dokumente, die durch Bezugnahme in die vorliegende Patentanmeldung aufgenommen werden, sind als ein integraler Teil der Anmeldung anzusehen, außer dass in dem Ausmaß, in dem jegliche Begriffe in diesen aufgenommenen Dokumenten in einer Weise definiert sind, die mit den explizit oder implizit in der vorliegenden Patentschrift erfolgten Definitionen in Konflikt steht, nur die Definitionen in der vorliegenden Patentschrift berücksichtigt werden sollen.