DE102014116031A1 - SWAT-Befehl und API für atomare Auslagerung und Trimmen von LBAs - Google Patents

SWAT-Befehl und API für atomare Auslagerung und Trimmen von LBAs Download PDF

Info

Publication number
DE102014116031A1
DE102014116031A1 DE201410116031 DE102014116031A DE102014116031A1 DE 102014116031 A1 DE102014116031 A1 DE 102014116031A1 DE 201410116031 DE201410116031 DE 201410116031 DE 102014116031 A DE102014116031 A DE 102014116031A DE 102014116031 A1 DE102014116031 A1 DE 102014116031A1
Authority
DE
Germany
Prior art keywords
file
lbas
old
pbas
swat
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE201410116031
Other languages
English (en)
Inventor
Yang Seok KI
Sang Won Lee
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of DE102014116031A1 publication Critical patent/DE102014116031A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system

Abstract

Beispielhafte Ausführungsformen sehen einen Zugriff auf eine aktualisierte Datei vor, durchgeführt durch einen Computer, welcher wenigstens einen Prozessor (14) aufweist, wobei in Antwort darauf, dass eine Anwendung (20) eine Aktualisierung empfängt, welche einen modifizierten Inhalt einer alten Datei (402) aufweist, eine neue Datei (404) erzeugt wird, in welche der modifizierte Inhalt kopiert wird, während der Zugriff auf die alte Datei (402) aufrechterhalten wird, wobei alte logische Datei-Block-Adressen (LBAs) (406) auf alte physikalische Datei-Block-Adressen (PBAs) (408) abgebildet werden, und neue Datei-LBAs (410) auf neue Datei-PBAs (412) abgebildet werden, wobei das Verfahren Folgendes aufweist: ein automatisches Auslagern der Abbildung der alten Datei-LBAs (406) von den alten Datei-PBAs (408) zu den neuen Datei-PBAs (412); ein Trimmen der Abbildung der alten Datei-LBAs (406) auf die alten Datei-PBAs (408); und ein Freigeben der Abbildung der neuen Datei-LBAs (410) auf die neuen Datei-PBAs (412).

Description

  • 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.

Claims (16)

  1. Verfahren zum Vorsehen eines Zugriffs auf eine aktualisierte Datei, durchgeführt durch einen Computer, welcher wenigstens einen Prozessor (14) aufweist, wobei in Antwort darauf, dass eine Anwendung (20) eine Aktualisierung empfängt, welche einen modifizierten Inhalt einer alten Datei (402) aufweist, eine neue Datei (404) erzeugt wird, in welche der modifizierte Inhalt kopiert wird, während der Zugriff auf die alte Datei (402) aufrechterhalten wird, wobei alte logische Datei-Block-Adressen (LBAs) (406) auf alte physikalische Datei-Block-Adressen (PBAs) (408) abgebildet werden, und neue Datei-LBAs (410) auf neue Datei-PBAs (412) abgebildet werden, wobei das Verfahren Folgendes aufweist: ein automatisches Auslagern der Abbildung der alten Datei-LBAs (406) von den alten Datei-PBAs (408) zu den neuen Datei-PBAs (412); ein Trimmen der Abbildung der alten Datei-LBAs (406) auf die alten Datei-PBAs (408); und ein Freigeben der Abbildung der neuen Datei-LBAs (410) auf die neuen Datei-PBAs (412).
  2. Verfahren nach Anspruch 1, wobei das Verfahren durch einen Auslager- und Trimm(SWAT)-Befehl und eine Anwendungs-Programmierschnittstelle (API) (26) aktiviert wird.
  3. Verfahren nach Anspruch 2, wobei die Parameter des SWAT-Befehls ein Paar von LBA-Listen aufweisen, welche der alten Datei (402) und der neuen Datei (404) entsprechen, und wobei der SWAT-Befehl die Abbildung der LBAs in dem Paar von Listen in der Reihenfolge atomar auslagert und unverwendete LBAs trimmt.
  4. Verfahren nach Anspruch 2, wobei der SWAT-Befehl von einer Speichervorrichtungstreiber-API (26) zu einer Speichervorrichtung (16) ausgegeben wird, in Antwort auf einen Aufruf, welcher durch eine Anwendung (20) oder ein Betriebssystem (22) getätigt wird.
  5. Verfahren nach Anspruch 2, wobei der SWAT-Befehl als Parameter eine erste LBA-Liste, welche LBAs der neuen Datei-LBAs (410) aufweist, und eine zweite Liste von LBAs der alten Datei (402) aufweist.
  6. Verfahren nach Anspruch 5, wobei die Abbildung der LBAs in der ersten und zweiten LBA-Liste atomar ausgelagert wird in einer Reihenfolge, welche durch die Listen spezifiziert ist, und die alten Datei-PBAs n(408) in einer best-effort-Art und Weise getrimmt werden.
  7. Verfahren nach Anspruch 6, wobei der SWAT-Befehl einen ersten SWAT-Befehl für zusammenhängende LBAs und einen zweiten SWAT-Befehl für nichtzusammenhängende LBAs aufweist.
  8. Computer, der Folgendes aufweist: einen Speicher (16), eine Speichervorrichtung (18), einen Prozessor (14), welcher mit dem Speicher und der Speichervorrichtung gekoppelt ist, wobei der Prozessor (14) wenigstens eine Anwendung (20) ausführt, wobei in Antwort darauf, dass die Anwendung (20) eine Aktualisierung empfängt, welche einen modifizierten Inhalt einer alten Datei (402) aufweist, eine neue Datei (404) erzeugt wird in welche der modifizierte Inhalt kopiert wird, während der Zugriff auf die alte Datei (402) aufrechterhalten wird, wobei alte logische Datei-Block-Adressen (LBAs) (406) auf alte physikalische Datei-Block-Adressen (PBAs) (408) abgebildet werden, und neue Datei-LBAs (410) auf neue Datei-PBAs (412) abgebildet werden, wobei der Prozessor (14) konfiguriert ist, um: automatisch die Abbildung der alten Datei-LBAs (406) von den alten Datei-PBAs (408) zu den neuen Datei-PBAs (412) auszulagern; die Abbildung der alten Datei-LBAs (406) auf die alten Datei-PBAs (408) zu trimmen; und die Abbildung der neuen Datei-LBAs (410) auf die neuen Datei-PBAs (412) freizugeben.
  9. System nach Anspruch 8, wobei das Auslagern durch einen Auslager- und Trimm(SWAT)-Befehl und eine Anwendungs-Programmierschnittstelle (API) (26) aktiviert wird.
  10. System nach Anspruch 9, wobei die Parameter des SWAT-Befehls ein Paar von LBA-Listen aufweisen, welche der alten Datei (402) und der neuen Datei (404) entsprechen, und wobei der SWAT-Befehl die Abbildung der LBAs in dem Paar von Listen in der Reihenfolge atomar auslagert und unverwendete LBAs trimmt.
  11. System nach Anspruch 9, wobei der SWAT-Befehl von einer Speichervorrichtungstreiber-API (26) zu einer Speichervorrichtung ausgegeben wird, in Antwort auf einen Aufruf, welcher durch eine Anwendung (20) oder ein Betriebssystem (22) getätigt wird.
  12. System nach Anspruch 9, wobei der SWAT-Befehl als Parameter eine erste LBA-Liste, welche LBAs der neuen Datei-LBAs (410) aufweist, und eine zweite Liste von LBAs der alten Datei (402) aufweist.
  13. System nach Anspruch 12, wobei die Abbildung der LBAs in der ersten und zweiten LBA-Liste atomar ausgelagert wird in einer Reihenfolge, welche durch die Listen spezifiziert ist, und die alten Datei-PBAs (408) in einer best-effort-Art und Weise getrimmt werden.
  14. System nach Anspruch 13, wobei der SWAT-Befehl einen ersten SWAT-Befehl für zusammenhängende LBAs und einen zweiten SWAT-Befehl für nichtzusammenhängende LBAs aufweist.
  15. Ausführbares Softwareprodukt, welches auf einem computerlesbaren Medium gespeichert ist, welches Programmbefehle enthält zum Vorsehen eines Zugriffs auf eine aktualisierte Datei, wobei in Antwort darauf, dass eine Anwendung (20) eine Aktualisierung empfängt, welche einen modifizierten Inhalt einer alten Datei (402) aufweist, eine neue Datei (404) erzeugt wird, in welche der modifizierte Inhalt kopiert wird, während ein Zugriff auf die alte Datei (402) aufrechterhalten wird, wobei alte logische Datei-Block-Adressen (LBAs) (406) auf alte physikalische Datei-Block-Adressen (PBAs) (408) abgebildet werden, und neue Datei-LBAs (410) auf neue Datei-PBAs (412) abgebildet werden, wobei die Programm-Befehle für Folgendes sind: ein automatisches Auslagern der Abbildung der alten Datei-LBAs (406) von den alten Datei-PBAs (408) zu den neuen Datei-PBAs (412); ein Trimmen der Abbildung der alten Datei-LBAs (406) auf die alten Datei-PBAs (408); und ein Freigeben der Abbildung der neuen Datei-LBAs (410) auf die neuen Datei-PBAs (412).
  16. Verfahren zum Vorsehen eines Zugriffs auf eine aktualisierte Datei, durchgeführt durch einen Computer, welcher wenigstens einen Prozessor (14) hat, das Folgendes aufweist: ein Empfangen einer ersten Liste von LBAs für eine alte Datei (402) und einer zweiten Liste von LBAs für eine aktualisierte Datei, wobei die erste Liste von LBAs auf eine erste Liste von PBAs abgebildet wird, und die zweite Liste von LBA auf eine zweite Liste von PBAs abgebildet wird; ein automatisches Auslagern der Abbildung der ersten Liste von LBAs für die alte Datei (402), so dass die erste Liste von LBAs auf die zweite Liste von PBAs für die neue Datei (404) abgebildet wird; ein Trimmen einer Abbildung der ersten Liste von PBAs für die alte Datei (402); und ein Freigeben einer Abbildung der zweiten Liste von LBAs für die aktualisierte Datei.
DE201410116031 2013-11-08 2014-11-04 SWAT-Befehl und API für atomare Auslagerung und Trimmen von LBAs Pending DE102014116031A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201361902092P 2013-11-08 2013-11-08
US61/902,092 2013-11-08
US14/282,358 US9678966B2 (en) 2013-11-08 2014-05-20 Swat command and API for atomic swap and trim of LBAs
US14/282,358 2014-05-20

Publications (1)

Publication Number Publication Date
DE102014116031A1 true DE102014116031A1 (de) 2015-05-13

Family

ID=52991043

Family Applications (1)

Application Number Title Priority Date Filing Date
DE201410116031 Pending DE102014116031A1 (de) 2013-11-08 2014-11-04 SWAT-Befehl und API für atomare Auslagerung und Trimmen von LBAs

Country Status (5)

Country Link
US (2) US9678966B2 (de)
JP (2) JP6416591B2 (de)
KR (1) KR102303814B1 (de)
CN (2) CN104636414B (de)
DE (1) DE102014116031A1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9678966B2 (en) * 2013-11-08 2017-06-13 Samsung Electronics Co., Ltd. Swat command and API for atomic swap and trim of LBAs
US10359937B2 (en) * 2013-12-20 2019-07-23 Sandisk Technologies Llc System and method of implementing a table storage support scheme
KR102316198B1 (ko) * 2015-06-12 2021-10-25 삼성전자주식회사 파일 액세스 방법, 컴퓨터, 및 컴퓨터-읽기 가능한 매체에 실행 가능한 소프트웨어 제품
KR20180019419A (ko) * 2016-08-16 2018-02-26 삼성전자주식회사 메모리 컨트롤러, 메모리 시스템 및 그 동작방법
CN106844619A (zh) * 2017-01-17 2017-06-13 深圳市金立通信设备有限公司 一种文件清理方法及终端
US10324628B2 (en) * 2017-04-19 2019-06-18 Veritas Technologies Llc Systems and methods for reducing data fragmentation
KR102567140B1 (ko) 2017-11-24 2023-08-16 삼성전자주식회사 데이터 관리 방법 및 이를 수행하는 저장 장치
JP7316204B2 (ja) 2019-12-16 2023-07-27 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置およびファイルアクセス方法
KR20220020143A (ko) * 2020-08-11 2022-02-18 삼성전자주식회사 오버라이트 처리를 수행하는 스토리지 시스템, 스토리지 시스템을 제어하는 호스트 시스템 및 스토리지 시스템의 동작 방법
US20230024420A1 (en) * 2021-07-16 2023-01-26 Samsung Electronics Co., Ltd. Methods and devices for file read latency reduction
US11768631B2 (en) * 2021-08-31 2023-09-26 Micron Technology, Inc. Rapid reliable file system access

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6366933B1 (en) 1995-10-27 2002-04-02 At&T Corp. Method and apparatus for tracking and viewing changes on the web
JPH1031604A (ja) * 1996-07-15 1998-02-03 Meidensha Corp 共有メモリシステム並びにデータベースシステム
JP4441968B2 (ja) * 1999-02-26 2010-03-31 ソニー株式会社 記録方法、管理方法、及び記録装置
US6895490B1 (en) * 2001-04-09 2005-05-17 Matrix Semiconductor, Inc. Method for making a write-once memory device read compatible with a write-many file system
JP2004280752A (ja) * 2003-03-19 2004-10-07 Sony Corp データ記憶装置、およびデータ記憶装置における管理情報更新方法、並びにコンピュータ・プログラム
WO2005109427A1 (en) * 2004-05-10 2005-11-17 Matsushita Electric Industrial Co., Ltd. Data recording/reproduction for write-once discs
US7509474B2 (en) * 2005-06-08 2009-03-24 Micron Technology, Inc. Robust index storage for non-volatile memory
US8832047B2 (en) 2005-07-27 2014-09-09 Adobe Systems Incorporated Distributed document version control
US8515912B2 (en) 2010-07-15 2013-08-20 Palantir Technologies, Inc. Sharing and deconflicting data changes in a multimaster database system
KR101437397B1 (ko) * 2007-10-31 2014-09-05 삼성전자주식회사 비휘발성 메모리 장치의 데이터 관리 방법 및 맵핑 테이블업데이트 방법
US20100017558A1 (en) * 2008-04-11 2010-01-21 Richard Matthew Fruin Memory device operable in read-only and re-writable modes of operation
US8438325B2 (en) * 2008-10-09 2013-05-07 Cadence Design Systems, Inc. Method and apparatus for improving small write performance in a non-volatile memory
KR20100055565A (ko) * 2008-11-18 2010-05-27 삼성전자주식회사 메모리 장치 및 메모리 장치의 관리 방법
US9164700B2 (en) * 2009-03-05 2015-10-20 Sandisk Il Ltd System for optimizing the transfer of stored content in response to a triggering event
US8291194B2 (en) * 2009-11-16 2012-10-16 Mediatek Inc. Methods of utilizing address mapping table to manage data access of storage medium without physically accessing storage medium and related storage controllers thereof
US8677203B1 (en) * 2010-01-11 2014-03-18 Apple Inc. Redundant data storage schemes for multi-die memory systems
US8495085B2 (en) 2010-09-27 2013-07-23 International Business Machines Corporation Supporting efficient partial update of hierarchically structured documents based on record storage
KR101774496B1 (ko) * 2010-12-08 2017-09-05 삼성전자주식회사 비휘발성 메모리 장치, 이를 포함하는 장치들, 및 이의 동작 방법
US9727570B2 (en) * 2011-06-03 2017-08-08 Apple Inc. Mount-time unmapping of unused logical addresses in non-volatile memory systems
KR20130044657A (ko) * 2011-10-24 2013-05-03 삼성전자주식회사 파일 시스템 및 그 제어 방법
US9323667B2 (en) * 2012-04-12 2016-04-26 Violin Memory Inc. System and method for managing trim operations in a flash memory system using mapping tables and block status tables
CN103020550B (zh) * 2012-12-03 2016-08-17 记忆科技(深圳)有限公司 一种固态硬盘及其安全访问方法、固态硬盘系统
US10102144B2 (en) 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
US9678966B2 (en) * 2013-11-08 2017-06-13 Samsung Electronics Co., Ltd. Swat command and API for atomic swap and trim of LBAs

Also Published As

Publication number Publication date
KR20150053720A (ko) 2015-05-18
CN104636414A (zh) 2015-05-20
JP2019016395A (ja) 2019-01-31
JP6416591B2 (ja) 2018-10-31
JP2015095262A (ja) 2015-05-18
US9678966B2 (en) 2017-06-13
US20150134621A1 (en) 2015-05-14
US20150234849A1 (en) 2015-08-20
JP6629407B2 (ja) 2020-01-15
US9684663B2 (en) 2017-06-20
CN110807008A (zh) 2020-02-18
KR102303814B1 (ko) 2021-09-23
CN104636414B (zh) 2019-11-05

Similar Documents

Publication Publication Date Title
DE102014116031A1 (de) SWAT-Befehl und API für atomare Auslagerung und Trimmen von LBAs
DE102013215535B4 (de) Sicherung oder wiederherstellung von daten mit hilfe eines hauptspeichers und nichtflüchtiger speichermedien
DE112014000254B4 (de) Mehrstufiges Zwischenspeichern und Migrieren in unterschiedlichen Granularitäten
DE102012216022B4 (de) Verwaltung einer Zeitpunktkopie-Beziehung für platzsparende Datenträger
DE3743890C2 (de)
DE112013001284B4 (de) Adaptive Cachespeicher-Umstufungen in einem Caching-System mit zwei Stufen
DE112011100618B4 (de) Verwalten von Schreiboperationen auf einen Speicherbereich von Spuren, der zwischen Speichereinheiten verlagert wird
DE112010004969B4 (de) Hybrides Speicherteilsystem und Verfahren zum Verwalten eines solchen
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
DE112014005266B4 (de) Verfahren und System zur Vorwärtsreferenz-Protokollierung in einem peristenten Datenspeicher
DE112017002941T5 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE202010017613U1 (de) Datenspeichervorrichtung mit host-gesteuerter Speicherbereinigung
DE202010017667U1 (de) Datenspeichervorrichtung mit Flash-Speicherchips
DE112011103290B4 (de) Intelligente Schreibcacheoperationen für sequenzielle Datenspuren
DE112016004527T5 (de) Implementieren eines Hardware-Beschleunigers für das Management eines Speicher-Schreibcachespeichers
DE102012201154B4 (de) Transaktionsspeicher
DE112012002615T5 (de) Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren
DE102009031125A1 (de) Nand-Fehlerbehandlung
DE102016001591A1 (de) System und Verfahren für Copy-On-Write auf einer SSD
DE112011102487T5 (de) Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen
DE102013209318B4 (de) Durchführen von asynchronen Löschscans mit Zwischenspeicherungs- und Auslagerungsvorgängen
DE602004007925T2 (de) Verwalten einer beziehung zwischen einem zielvolumen und einem quellenvolumen
DE112009004503T5 (de) Optimierung der zugriffszeit von auf speichern gespeicherten dateien
DE102016010277A1 (de) Verfahren und systeme zum verbessern von speicher-journaling
DE102012219098A1 (de) Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher

Legal Events

Date Code Title Description
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017300000

Ipc: G06F0016000000

R012 Request for examination validly filed