-
QUERVERWEIS AUF VERWANDTE ANMELDUNGEN
-
Diese Anmeldung beansprucht den Vorzug der vorläufigen Patentanmeldung mit der Serien-Nr. 61/902092, welche am 8. November 2013 eingereicht wurde, welche an den Anmelder der vorliegenden Anmeldung abgetreten wurde und hierin durch Bezugnahme mit eingebunden ist.
-
HINTERGRUND
-
Dokumentenverwaltungssysteme aktualisieren eine Datenstruktur, um die aktuellste Version von Dokumenten zu verfolgen bzw. über diesen den Überblick zu behalten. In diesem Vorgang erzeugen einige Systeme eine andere Version von Dokument anstelle des Überschreibens der älteren Version und behalten die ältere Version eines Dokuments für eine Weile. Dies ermöglicht es den Systemen, gleichzeitig auf die ältere Version eines Dokuments für Lesevorgänge bzw. zum Lesen zuzugreifen, während die neue Version aktualisiert wird. Beispielsweise können, wenn ein Verwender/eine Verwenderin seine/ihre Blog-Seite aktualisiert, andere Verwender nach wie vor die alte Version der Blog-Seite lesen, während er/sie die Blog-Seite aktualisiert. An manchen Punkten muss das System die Systeminformationen aktualisieren, um auf das neue Dokument zuzugreifen, und das alte Dokument ersetzen. Dies löst typischerweise eine Serie von kaskadierten Aktualisierungen in der Datenstruktur des Systems aus und erfordert viele Schreibvorgänge zum Speicher.
-
Demzufolge wäre es wünschenswert, ein verbessertes Verfahren und System zum Vorsehen eines Zugriffs auf eine aktualisierte Datei bzw. ein aktualisiertes File vorzusehen, ohne kaskadierte Aktualisierungen in den Datenstrukturen des Systems durchführen zu müssen.
-
KURZFASSUNG
-
Beispielhafte Ausführungsformen sehen einen Zugriff auf eine aktualisierte Datei bzw. ein aktualisiertes File vor, durchgeführt durch einen Computer, welcher wenigstens einen Prozessor hat, wobei in Antwort darauf, dass eine Anwendung eine Aktualisierung empfängt, welche einen modifizierten Inhalt einer alten Datei aufweist, eine neue Datei erzeugt wird, in welche der modifizierte Inhalt kopiert wird, während der Zugriff auf die alte Datei aufrechterhalten wird, wobei alte logische Datei-Block-Adressen (LBAs = Logical Block Addresses) auf alte physikalische Datei-Block-Adressen (PBAs = Physical Block Addresses) gemappt bzw. abgebildet werden, und neue Datei-LBAs auf neue Datei-PBAs abgebildet werden, wobei das Verfahren Folgendes aufweist: ein automatisches Swappen bzw. Auslagern der Abbildung der alten Datei-LBAs von den alten Datei-PBAs zu den neuen Datei-PBAs; ein Trimmen der Abbildung der alten Datei-LBAs auf die alten Datei-PBAs; und ein Freigeben bzw. Freischalten (clearing) der Abbildung der neuen Datei-LBAs zu den neuen Datei-PBAs.
-
Gemäß dem Verfahren und dem System der beispielhaften Ausführungsformen kann eine Datei aktualisiert werden, ohne dass kaskadierte Aktualisierungen in den Datenstrukturen des Systems durchgeführt werden müssen, und ohne unnötige Schreibvorgänge zum Speicher.
-
KURZE BESCHREIBUNG VERSCHIEDENER ANSICHTEN DER ZEICHNUNGEN
-
Diese und/oder andere Merkmale und Zweckmäßigkeiten des vorliegenden allgemeinen erfinderischen Konzepts werden offensichtlich und leichter anerkannt werden aus der folgenden Beschreibung der Ausführungsformen, zusammengenommen mit den beigefügten Zeichnungen, von welchen:
-
1 ein Blockschaltbild ist, welches ein Dokumentenverwaltungssystem in Übereinstimmung mit den beispielhaften Ausführungsformen veranschaulicht;
-
2 eine graphische Veranschaulichung eines herkömmlichen Dokumentenverwaltungssystems ist, welches eine Datei aktualisiert;
-
3 ein Flussdiagramm ist, welches einen Vorgang veranschaulicht, welcher durch das Dokumentenverwaltungssystem zum Vorsehen eines Zugriffs auf eine Datei während einer Aktualisierung gemäß einer beispielhaften Ausführungsform durchgeführt wird; und
-
4 ein Diagramm ist, welches graphisch den Vorgang, welcher in 3 gezeigt ist, veranschaulicht.
-
DETAILLIERTE BESCHREIBUNG
-
Es wird nun im Detail auf die Ausführungsformen des vorliegenden allgemeinen erfinderischen Konzepts Bezug genommen werden, von welchem Beispiele in den beigefügten Zeichnungen veranschaulicht sind, wobei gleiche Bezugszeichen sich durchgehend auf gleiche Elemente beziehen. Die Ausführungsformen sind untenstehend beschrieben, um das vorliegende allgemeine erfinderische Konzept zu beschreiben, während auf die Figuren Bezug genommen wird.
-
Vorteile und Merkmale der vorliegenden Erfindung und Verfahren zum Erreichen derselben können leichter durch Bezugnahme auf die folgende detaillierte Beschreibung von Ausführungsformen und die beigefügten Zeichnungen verstanden werden. Das vorliegende allgemeine erfinderische Konzept kann jedoch in vielen unterschiedlichen Formen ausgeführt werden und sollte nicht als auf die Ausführungsformen, welche hierin erläutert sind, beschränkt betrachtet werden. Vielmehr sind diese Ausführungsformen vorgesehen, so dass diese Offenbarung gewissenhaft und vollständig sein wird und das Konzept des allgemeinen erfinderischen Konzepts Fachleuten vollständig übermitteln wird, und das vorliegende allgemeine erfinderische Konzept wird nur durch die beigefügten Ansprüche definiert bzw. begrenzt werden. In den Zeichnungen sind die Dicken von Schichten und Bereichen zur Klarheit überhöht.
-
Die Verwendung der Begriffe „einer/eine/eines” und „der/die/das” und ähnlicher Bezugnahmen in dem Zusammenhang des Beschreibens der Erfindung (insbesondere im Zusammenhang der folgenden Ansprüche) müssen sowohl den Singular als auch den Plural umfassend betrachtet werden, solange nicht anderweitig hierin angezeigt, oder durch den Zusammenhang deutlich widersprochen ist. Die Begriffe „weist auf”, „hat”, „schließt ein” und „enthält” sind als offen-endige Begriffe zu betrachten (d. h. sie bedeuten „einschließend bzw. aufweisend, jedoch nicht beschränkt auf”), solange nicht anderweitig angemerkt.
-
Der Begriff „Komponente bzw. Bestandteil” oder „Modul” bedeutet, wenn hierin verwendet, ist jedoch nicht beschränkt auf eine Software- oder Hardware-Komponente wie beispielsweise eine feldprogrammierbare Gatteranordnung (FPGA = Field Programmable Gate Array) oder eine anwendungsspezifische integrierte Schaltung (ASIC = Application Specific Integrated Circuit), welche bestimmte Aufgaben durchführt. Eine Komponente bzw. ein Bestandteil oder ein Modul kann vorteilhaft konfiguriert sein, um sich in dem adressierbaren Speichermedium zu befinden, und konfiguriert sein, um auf einem oder mehreren Prozessoren Ausführungen zu tätigen. Demnach kann eine Komponente oder ein Modul beispielsweise Komponenten wie beispielsweise Software-Komponenten, objektorientierte Software-Komponenten, Klassenkomponenten und Task-Komponenten bzw. Aufgabenkomponenten, Vorgänge, Funktionen, Attribute, Prozeduren, Unterroutinen, Segmente von Programmcode, Treiber, Firmware, Mikrocode, Schaltkreise, Daten, Datenbanken, Datenstrukturen, Tabellen, Arrays bzw. Anordnungen und Variablen aufweisen. Die Funktionalität, welche für die Komponenten und Komponenten oder Module vorgesehen ist, kann in wenigeren Komponenten und Komponenten oder Modulen kombiniert sein, oder weiterhin in zusätzliche Komponenten oder Komponenten oder Module aufgeteilt bzw. unterteilt sein.
-
Solange nicht anderweitig definiert, haben alle technischen und wissenschaftlichen Begriffe, welche hierin verwendet werden, dieselbe Bedeutung wie allgemein durch einen Fachmann zu dessen Fachgebiet diese Erfindung gehört, verstanden wird. Es wird festgehalten, dass die Verwendung von einem beliebigen und allen Beispielen oder beispielhaften Begriffen, welche hierin vorgesehen sind, lediglich vorgesehen ist, um die Erfindung besser zu beleuchten und nicht eine Beschränkung des Umfangs der Erfindung ist, solange nicht anderweitig spezifiziert. Weiterhin dürfen, solange nicht anderweitig definiert, alle Begriffe, welche in allgemein verwendeten Wörterbüchern definiert sind, nicht übermäßig interpretiert werden.
-
1 ist ein Blockschaltbild, welches ein Dokumentenverwaltungssystem 10 in Übereinstimmung mit den beispielhaften Ausführungsformen veranschaulicht. Das Dokumentenverwaltungssystem 10 kann einen Computer 12 aufweisen, welcher elektronische Dokumente oder Dateien bzw. Files verfolgt und speichert. In einer Ausführungsform kann der Computer 12 einen Desktop, einen Laptop oder eine Workstation aufweisen, während in einer anderen Ausführungsform der Computer 12 einen Server aufweisen kann, welcher mit einem Client-Computer über ein Netzwerk (nicht gezeigt) kommuniziert. Der Computer 12 kann typische Computer-Komponenten bzw. Computer-Bestandteile aufweisen, einschließlich eines Prozessors 14, eines Speichers 16 und einer Speichervorrichtung wie beispielsweise einem Hochgeschwindigkeitsspeicher 18 (beispielsweise Festkörperlaufwerk (SSD = Solid State Drive)).
-
Der Prozessor 14 kann mehrere Prozessoren aufweisen oder einen einzelnen Prozessor mit einem oder mehreren Kernen. Der Prozessor 14 führt Programmbefehle vom Speicher 16 aus. Beispielhafte Typen von Software können Anwendungen 20, ein Betriebssystem 22, ein Dateisystem 24 und eine Vorrichtungstreiber-Anwendungs-Programmierschnittstelle (API = Application Programming Interface) 26 für den Hochgeschwindigkeitsspeicher 18 aufweisen.
-
Wie im Fachgebiet wohlbekannt ist, können die Anwendungen 20 Computersoftware repräsentieren, welche, wenn sie durch den Prozessor 14 ausgeführt wird, einen Computer 12 veranlasst, Tasks bzw. Aufgaben über den Betrieb des Computers 12 hinaus durchzuführen. Beispiele können einen Webbrowser, eine Textverarbeitung und ein Datenbankprogramm aufweisen. Typischerweise erzeugen und modifizieren bzw. wandeln ab oder aktualisieren die Anwendungen 20 Dateien 28. Das Betriebssystem 22 ist Systemsoftware, welches den Betrieb des Computers 12 verwaltet und steuert. Beispiele können Microsoft Windows, Mac OS X und Linux aufweisen.
-
Das Datei-System 24 ist Software, welche steuert, wie Informationen, wie beispielsweise die Dateien 28 auf Datenspeichervorrichtungen, wie beispielsweise dem Hochgeschwindigkeitsspeicher 18 gespeichert, abgerufen bzw. abgefragt und aktualisiert werden. Typischerweise verwendet das Dateisystem 24 logische Block-Adressierung zum Spezifizieren, wo Daten, wie beispielsweise die Dateien 28, in dem Hochgeschwindigkeitsspeicher 18 oder anderen Computerspeichervorrichtungen gespeichert sind. Genauer ist eine logische Block-Adressierung eine Abstraktion, welche den Dateien 28 logische Block-Adressen (LBAs = Logical Block Addresses) 30 zuweist, welche auf bestimmte Speicherorte in dem Hochgeschwindigkeitsspeicher 18 mappen bzw. abbilden bzw. verweisen.
-
Die Vorrichtungstreiber-Anwendungs-Programmierschnittstelle (API = Application Programming Interface) 26 ermöglicht es den Anwendungen 20, dem Betriebssystem 22 und dem Dateisystem 24, transparent mit dem Hochgeschwindigkeitsspeicher 18 zu interagieren. Die Vorrichtungstreiber-API 26 sieht Befehle vor zu und/oder empfängt Daten von dem Hochgeschwindigkeitsspeicher 18.
-
In einer Ausführungsform verwendet der Hochgeschwindigkeitsspeicher 18 physikalische Block-Adressierung, um Adressen für jeden physikalischen Block von Daten, welche in dem Hochgeschwindigkeitsspeicher 18 gespeichert sind, vorzusehen. Auf diese Typen von Adresse kann Bezug genommen werden als physikalische Blockadressen (PBAs = Physical Block Addresses) 32. In einer Ausführungsform kann der Hochgeschwindigkeitsspeicher 18 ein Festkörperlaufwerk (SSD = Solid State Drive) (auch als Festkörperplatte (Solid State Disk) bekannt) aufweisen. Ein SSD ist eine Datenspeichervorrichtung, welche integrierte Schaltungsanordnungen als Speicher verwendet, um Daten, wie beispielsweise Dateien 28, dauernd bzw. persistent zu speichern. In einer Ausführungsform kann das SSD einen NAND-basierten Flashspeicher oder einen Direktzugriffsspeicher (RAM = Random Access Memory) verwenden.
-
In der Ausführungsform kann der Hochgeschwindigkeitsspeicher 18 weiterhin eine Dateiübersetzungsschicht (FTL = File Translation Layer) 34 oder ein Äquivalent aufweisen, welches den Hochgeschwindigkeitsspeicher 18 verwaltet, während sie eine logische Sektorschnittstelle für den Computer 12 vorsieht. Als solches steuert die FTL 34 das Mapping bzw. die Abbildung zwischen den LBAs 30, welche durch das Dateisystem 24 aufrechterhalten werden, und den PBAs 32, welche durch den Hochgeschwindigkeitsspeicher 18 aufrechterhalten werden. In einer alternativen Ausführungsform können die beispielhaften Ausführungsformen mit anderen Typen von Speichervorrichtungen anders als einem SSD verwendet werden.
-
2 ist eine graphische Veranschaulichung eines herkömmlichen Dokumentenverwaltungssystems, welches eine Datei aktualisiert. Das Beispiel, welches gezeigt ist, nimmt an, dass eine Anwendung eine Datei 200, welche eine Blog-Seite für Verwender repräsentiert, hält bzw. aufrechterhält. Wann immer der Verwender den Blog aktualisiert, liest die Anwendung die Datei 200 in den Speicher und modifiziert den Inhalt dementsprechend. Während der Aktualisierung erzeugt das System eine neue Datei 204, in welche der modifizierte Inhalt kopiert wird. Indes können andere Verwender nach wie vor auf die alte Datei 200 zugreifen und diese ansehen, während der Verwender fortfährt, den Blog zu aktualisieren. Wenn der Verwender das Editieren des Blogs beendet und die Seite übermittelt, schaltet die Anwendung zu der neuen Datei 204 um und löscht die alte Datei 202.
-
Das Datei-System erhält die logischen Block-Adressen (LBA) 206 für die alte Datei 202 und für die neue Datei 204 aufrecht, während das Speichersystem (in dem die Dateien tatsächlich gespeichert werden) physikalische Blockadressen (PBA) 208 aufrechterhält. In diesem Beispiel bildet das Dateisystem die alte Datei 202 auf LBA4 und LBA5 ab, während die Speichervorrichtung LBA4–LBA5 jeweils auf PBA0–PBA1 abbildet. Ähnlich wird die neue Datei 204 auf LBA24–LBA25 abgebildet, und LBA24–LBA25 wiederum wird jeweils auf PBA11–PBA12 abgebildet.
-
Ein Problem mit solch herkömmlichen Systemen ist es, dass an einem bestimmten Punkt das System Systeminformationen aktualisieren muss, um auf die neue Datei 204 zuzugreifen, welche die alte Datei 202 ersetzt. Typischerweise löst diese eine Serie von kaskadierten Aktualisierungen in einer Datenstruktur bzw. Datenstrukturen des Systems aus und verursacht viele Schreibvorgänge zum Speicher.
-
Die Systeminformationen können Metadaten für jede Datei/Dokument aufweisen. Die Metadaten können beispielsweise das Datum, an welchem das Dokument gespeichert wurde, und die Identität des Verwenders, welcher die Datei speichert, aufweisen. Die Metadaten werden typischerweise in einer Datenstruktur gespeichert. Ein Beispiel einer solchen Datenstruktur ist ein B-Tree bzw. B-Baum, welcher eine Baum-Datenstruktur ist, welche Daten sortiert hält und Suchen, sequentiellen Zugriff, Einfügungen und Löschungen in einer logarithmischen Zeit ermöglicht. Die Liste von LBAs 206 und/oder Metadaten für jede Datei 200 können durch einen Inode in dem B-Baum aufrechterhalten werden. Es gibt typischerweise einen Inode pro Datei 200. Wenn der Inode für die Datei 200 in der Nähe des Laubniveaus (leaf level) des B-Baums gespeichert wird, kann es sein, dass all die Knoten auf einem Weg von dem Knoten bis zu dem Root-Knoten bzw. Wurzelknoten aktualisiert werden müssen, und somit die kaskadierenden Aktualisierungen und die Schreibvorgänge zum Speichern.
-
Beispielsweise muss, wann immer der Verwender den oben beschriebenen Blog aktualisiert, die Anwendung auch die Dateiinformationen, welche den Blog enthalten, aktualisieren, was wenigstens einen Plattenschreibvorgang verursacht. Mit mehreren Verwendungen finden mehrere Plattenschreibvorgänge statt.
-
Die beispielhaften Ausführungsformen sind auf ein verbessertes Verfahren und System zum Vorsehen eines Zugriffs auf eine neue aktualisierte Datei gerichtet, ohne die Systemdatenstrukturen aktualisieren zu müssen, wodurch kaskadierte Aktualisierungen und übermäßige Plattenschreibvorgänge in dem System minimiert oder beseitigt werden.
-
Die beispielhaften Ausführungsformen sehen einen neuen Speicher(beispielsweise SSD)-Befehl und API vor, um dieses Problem zu handhaben. Das heißt, dass, wenn auf eine neue Version eines Dokuments ohne ein Aktualisieren der Systemdatenstruktur zugegriffen werden kann, dann Speicherschreibvorgänge vermieden werden können oder signifikant verringert werden können aufgrund der Beseitigung der kaskadierten Aktualisierungen, um die aktuellen Systeminformationen zu reflektieren. Tatsächlich haben über dieses vereinfachte Beispiel hinaus viele Anwendungen wie beispielsweise B+Trees, Dokumenten-Protokollierung und andere solche Charakteristiken, auf die die beispielhafte Ausführungsform angewandt werden kann.
-
Die beispielhaften Ausführungsformen sehen einen Befehl und eine zugeordnete API vor, auf welche hierin Bezug genommen wird als ein SWAT(SWap And Trim)-Befehl. Ein Paar von LBA-Listen vorgegeben, swapt bzw. lagert der SWAT-Befehl automatisch das Abbilden von LBAs in die Listen in der Reihenfolge aus und trimmt bzw. besetzt dann die unverwendeten LBAs.
-
3 ist ein Flussdiagramm, welches einen Vorgang veranschaulicht, welcher durch das Dokumentenverwaltungssystem 10 zum Vorsehen eines Zugriffs auf eine Datei während einer Aktualisierung gemäß einer beispielhaften Ausführungsform durchgeführt wird; und 4 ist ein Diagramm, welches den Vorgang graphisch veranschaulicht.
-
Unter Bezugnahme auf die 1, 3 und 4 kann der Vorgang in Antwort darauf beginnen, dass eine Anwendung eine Aktualisierung empfängt, welche einen modifizierten Inhalt einer alten Datei aufweist, um eine neue Datei zu erzeugen, in welche der modifizierte Inhalt kopiert wird, während ein Zugriff auf die alte Datei aufrechterhalten wird (Block 300).
-
Dies ist in 4 veranschaulicht, welche zeigt, dass in Antwort darauf, dass eine Datei 400 aktualisiert wird, Zugriff auf eine alte Version der Datei (d. h. alte Datei) 402 vorübergehend aufrechterhalten wird, und eine neue Version der Datei (d. h. neue Datei) 404 erzeugt wird, welche den modifizierten Inhalt enthält. Die Datei 400 kann durch eine der Anwendungen 20 oder alternativ durch das Betriebssystem 22 aktualisiert werden.
-
Das Dateisystem 24 repräsentiert den logischen Speicherort der alten Datei 402 unter Verwendung einer Liste von alten Datei-LBAs 406 (beispielsweise LBA4–LBA5), während der Hochgeschwindigkeitsspeicher 18 den physikalischen Speicherort unter Verwendung einer Liste von alten Datei-PBAs 408 (beispielsweise PBA0–PBA1) repräsentiert. Ähnlich wird auch der logische Speicherort der neuen Datei 404 unter Verwendung einer Liste von neuen Datei-LBAs 410 (beispielsweise LBA24–LBA25) repräsentiert, während der physikalische Speicherort im Hochgeschwindigkeitsspeicher 18 unter Verwendung einer Liste von neuen Datei-PBAs 412 (beispielsweise PBA11–PBA12) repräsentiert wird.
-
Bezug nehmend wiederum auf 3 wird in Antwort darauf, dass die Aktualisierung auf die neue Datei 404 durchgeführt wird, eine Abbildung der alten Datei-LBAs automatisch von den alten Datei-PBAs 408 auf die neuen Datei-PBAs 412 geswappt bzw. ausgelagert (Block 302). Wie in 4 gezeigt ist, wird die physikalische Abbildung der Liste von alten Datei-LBAs 406 auf die Liste von neuen Datei-PBAs 412 der neuen Datei 404 neu abgebildet. Genauer wird, sobald der SWAT-Befehl ausgegeben ist, LBA4 auf PBA11 abgebildet und LBA5 wird auf PBA12 abgebildet. Demzufolge beseitigt die SWAT API die Notwendigkeit, Dateiinformationen zu aktualisieren.
-
Zusätzlich wird die Abbildung der alten Datei-LBAs 406 auf die alten Datei-PBAs 408 getrimmt, die alten Datei-PBAs 408 freigebend (Block 304). Wie in 4 gezeigt ist, werden nach dem Trimming die alten Datei-PBAs 408 (PBA0 und PBA1) wie durch die „X'e” 416 gezeigt ist, freigegeben.
-
Die Abbildung der neuen Datei-LBAs 410 auf die neuen Datei-PBAs 412 wird ebenso gelöscht (Block 306). Wie in 4 gezeigt ist, werden nach der SWAT-Operation die Abbildung für LBA24 und LBA25 gelöscht und können optional wiederverwendet werden, und die neue Datei 404 kann optional gelöscht werden, wie durch das „X” 418 gezeigt ist.
-
Gemäß den beispielhaften Ausführungsformen sehen der SWAT-Befehl und API mehrere Vorteile über existierende Techniken vor. Der Swap-Befehl bzw. Auslagerungs-Befehl benötigt keine Modifikationen an dem OS und kann auf alle Typen von SSD-Vorrichtungen mit einer geringfügigen Firmware-Modifikation angewandt werden. Der SWAT-Befehl kann auch die Lebensdauer bzw. Standzeit von SSD-Vorrichtungen signifikant durch ein Verringern der Anzahl von Plattenschreibvorgängen von den Anwendungen verbessern. Der Auslagerungs-Befehl kann auch die Leistungsfähigkeit des Systems durch ein proaktives Wiederbeanspruchen von unverwendetem Platz verbessern. Zusätzlich kann der SWAT-Befehl signifikante Vorzüge für die Leistungsfähigkeit von Anwendungen liefern, insbesondere mit einer Multi-Version-Gleichzeitigkeits-Steuerung (multi version concurrency control).
-
Das Folgende beschreibt den SWAT-Befehl in einem weiteren Detail. Sobald die Datei durch die Anwendung 20 übergeben ist tätigt entweder das Betriebssystem 22 oder das Dateisystem 24 einen Ruf an die Vorrichtungstreiber API 26. Die Vorrichtungstreiber API 26 kann dann den SWAT-Befehl an den Hochgeschwindigkeitsspeicher 18 ausgeben.
-
In einer Ausführungsform kann der Befehl ein Paar von LBA-Listen spezifizieren – eine Liste von neuen Datei-LBAs 410 und eine Liste von alten Datei-LBAs 406. Die Datei-Übersetzungsschicht (FTL = File Translation Layer) 34 in dem Hochgeschwindigkeitsspeicher 18 kann die Liste von alten Datei-LBAs 406 und die Liste von neuen Datei-LBAs 410 empfangen und automatisch die Abbildung von LBAs in dem Paar von LBA-Listen in der spezifizierten Reihenfolge auslagern und dann die alten Datei-PBAs 408 in einer Bestanforderungs-Art und Weise (beispielsweise ein aufeinanderfolgendes Trimmen, um einen Trimm-Overhead während der Ausführung des SWAT-Befehls zu minimieren) trimmen. In einer Ausführungsform ist der SWAT-Befehl atomar.
-
SWAT-Befehl
-
In einer Ausführungsform können LBAs zusammenhängend sein oder nichtzusammenhängend. Demzufolge kann es zwei unterschiedliche SWAT-Befehle für zusammenhängende oder nichtzusammenhängende LBAs geben. Aspekte und Ausführungsformen der SWAT-Befehle werden unter Bezugnahme auf den folgenden Pseudocode besser verstanden werden, in welchem die Erfindung im Sinne von spezifischen Ausführungsformen beschrieben ist. Diese sind zum Zwecke der Klarheit vorgesehen und sollten nicht herangezogen werden, um die Erfindung zu beschränken. Die Erfindung und Aspekte davon können Anwendungen auf eine Mehrzahl von Typen von Verfahren, Vorrichtungen und Code, welcher hierin nicht spezifisch offenbart ist, haben.
-
API für nichtzusammenhängende LBAs
-
- swat (unsigned int *dst_list, unsigned int *src_list, unsigned int lba_count, unsigned int timeout)
-
Diese Routine lagert die Abbildung von LBAs in dst_list mit denjenigen von LBAs in src_list aus und trimmt die PBAs für die LBAs in dst_list atomar. Sobald dieser Befehl erfolgreich ausgeführt wird, zeigen LBAs in der dst_list auf die PBAs, auf welche durch LBAs in src_list gezeigt wird, PBAs, auf welche durch dst_list gezeigt wird, werden getrimmt, und LBAs in src_list werden freigegeben. Diese API ist hilfreich, wenn eine große Transaktion atomar gehandhabt werden muss. Parameter
dst_list | dst_list enthält eine Auflistung von LBAs und zeigt anfänglich auf den alten Inhalt, dst_list zeigt jedoch auf den neuen Inhalt, nachdem der SWAT-Ruf erfolgreich ausgeführt ist. Die Inhalte (d. h. PBAs) von LBAs in dst_list werden getrimmt und die Abbildung von LBAs wird mit dem SWAT-Aufruf aktualisiert. |
src_list | src_list-Punkte enthält eine Auflistung von LBAs des neuen Inhalts, und LBAs in src_list werden freigegeben, nachdem der SWAT-Aufruf erfolgreich ausgeführt ist. Die Inhalte (d. h. PBAs) von LBAs in src_list werden gehalten, die LBAs selbst jedoch können optional wiederverwendet werden. |
lba_count | die Anzahl von LBAs in beiden LBA-Listen – die Länge von zwei Listen muss dieselbe sein und die maximale Anzahl von LBAs ist implementierungsabhängig, was definiert sein kann durch NVM_MAX_SWAT_LBA_COUNT. |
timeout | die maximale Zeit in Mikrosekunden für die SWAT-Operation. Wenn Null durchschritten ist, bedeutet dies eine unbegrenzte Zeit. |
RETURN | NVM_SUCCESS:SWAT ist erfolgreich;
NVM_ERR_ROLLBACK: dieser Fehler wird zurückgegeben, wenn es der Vorrichtung misslingt, die SWAT-Operation aus einigen Gründen durchzuführen, beispielsweise aufgrund eines Medienausfalls, eines Timeout und anderen;
NVM_ERR_INVALID_LBA: dieser Fehler wird zurückgegeben, wenn LBAs in einer Liste nicht gültig sind, beispielsweise weil eine LBA außerhalb eines Bereichs einer Vorrichtung ist oder eine LBA keine Abbildung auf eine PBA hat;
NVM_ERR_INVALID_PARAM: dieser Fehler wird zurückgegeben, wenn einige Parameter der Routine nicht gültig sind – beispielsweise dst_list oder src_list könnte NULL sein oder lba_count könnte 0 sein oder lächerlich groß durch ein Durchtreten eines negativen Wertes (beispielsweise –1) oder eines Typenfehlers;
NVM_ERR_TIMEOUT: dieser Fehler wird zurückgegeben, wenn die Vorrichtung die Operation innerhalb des Time-Budgets, welches der Verwender spezifiziert, nicht beenden kann. |
-
Schnittstelle für zusammenhängende LBAs
-
- cont_swat (unsigned int dst_lba, unsigned int src_lba, unsigned int lba_count, unsigned int timeout)
-
Die cont_swat-Routine lagert die Abbildung von LBAs in dem Bereich von (dst_lba, dst_lba+lba_count-1) mit derjenigen von LBAs in dem Bereich von (src_lba, src_lba+lba_count-1) aus und trimmt die PBAs für (dst_lba, dst_lba+lba_count-1) atomar. Sobald dieser Befehl erfolgreich ausgeführt ist, zeigen LBAs für (dst_lba, dst_lba+lba_count-1) auf die PBAs, auf die durch die LBAs für (src_lba, src_lba+lba_count-1) gezeigt wird; PBAs für (dst_lba, dst_lba+lba_count-1) werden getrimmt; und LBAs in (src_lba, src_lba+lba_count-1) werden freigegeben. Parameter
dst_lba | LBAs in dem Bereich von (dst_lba, dst_lba+lba_count-1) zeigen anfänglich auf den alten Inhalt, zeigen jedoch auf den neuen Inhalt, nachdem cont_swat erfolgreich ausgeführt ist. Die Inhalte (d. h. PBAs) von LBAs in dem Bereich von (dst_lba, dst_lba+lba_count-1) werden getrimmt, und die Abbildung von LBAs in dem Bereich von (dst_lba, dst_lba+lba_count-1) wird mit dem SWAT-Aufruf aktualisiert. |
src_lba | src_lba zeigt auf den neuen Inhalt und LBAs in dem Bereich von (src_lba, src_lba+lba_count-1) werden freigegeben, nachdem nvm_cont_swat erfolgreich ausgeführt ist. Die Inhalte (d. h. PBAs) von LBAs in dem Bereich von (src_lba, src_lba+lba_count-1) verbleiben, die LBAs selbst jedoch werden wiederverwendet. |
lba_count | die Anzahl von LBAs in den beiden Listen – die Länge von zwei Listen muss dieselbe sein und die maximale Anzahl von LBAs ist implementationsabhängig, was definiert sein kann durch NVM_MAX_SWAT_LBA_COUNT. |
timeout | die maximale Zeit in Mikrosekunden für eine SWAT-Operation. Wenn Null vorübergegangen ist, bedeutet dies unendliche Zeit. |
RETURN | NVM_SUCCESS:SWAT ist erfolgreich;
NVM_ERR_ROLLBACK: dieser Fehler wird zurückgegeben, wenn es der Vorrichtung misslingt, die SWAT-Operation aus einigen Gründen durchzuführen, beispielsweise aufgrund eines Medienausfalls, eines Timeout und anderen;
NVM_ERR_INVALID_LBA: dieser Fehler wird zurückgegeben, wenn LBAs in einer Liste nicht gültig sind, beispielsweise weil eine LBA außerhalb eines Bereichs einer Vorrichtung ist oder eine LBA keine Abbildung auf eine PBA hat;
NVM_ERR_INVALID_PARAM: dieser Fehler wird zurückgegeben, wenn einige Parameter der Routine nicht gültig sind – beispielsweise dst_lba oder src_lba könnten außerhalb des Bereichs bzw. im Überlauf (out of range) sein oder lba_count könnte 0 sein oder lächerlich groß durch ein Durchtreten eines negativen Wertes (beispielsweise –1) oder eines Typenfehlers;
NVM_ERR_TIMEOUT: dieser Fehler wird zurückgegeben, wenn die Vorrichtung die Operation innerhalb des Time-Budgets, welches der Verwender spezifiziert, nicht beenden kann. |
-
Der SWAT-Befehl kann in einem beliebigen Typ von Speicherprotokoll implementiert werden wie beispielsweise SATA, SAS, PCIe, eMMC, UFS und dergleichen durch einen herstellerspezifischen Befehl bzw. verkäuferspezifischen Befehl.
-
Die vorliegende Erfindung wurde in Übereinstimmung mit den Ausführungsformen, welche gezeigt sind beschrieben, und es könnte Variationen an den Ausführungsformen geben und eine beliebige Variation wäre innerhalb des Gedankens und Umfangs der vorliegenden Erfindung. Beispielsweise kann die beispielhafte Ausführungsform implementiert werden unter Verwendung von Hardware, Software, einem computerlesbaren Medium, welches Programmbefehle enthält, oder eine Kombination davon. Software, welche gemäß der vorliegenden Erfindung geschrieben ist, muss entweder in einer Form von computerlesbarem Medium wie beispielsweise einem Speicher, einer Festplatte oder einer CD/DVD-ROM gespeichert werden und muss durch einen Prozessor ausgeführt werden. Demzufolge können viele Abwandlungen durch einen Fachmann getätigt werden, ohne von dem Gedanken und Umfang der beigefügten Ansprüche abzuweichen.