DE102019132371A1 - Zuordnungsverwaltung logisch zu physisch unter Verwendung von nichtflüchtigem Speicher - Google Patents

Zuordnungsverwaltung logisch zu physisch unter Verwendung von nichtflüchtigem Speicher Download PDF

Info

Publication number
DE102019132371A1
DE102019132371A1 DE102019132371.1A DE102019132371A DE102019132371A1 DE 102019132371 A1 DE102019132371 A1 DE 102019132371A1 DE 102019132371 A DE102019132371 A DE 102019132371A DE 102019132371 A1 DE102019132371 A1 DE 102019132371A1
Authority
DE
Germany
Prior art keywords
data
data store
data storage
mapping
snapshot
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
DE102019132371.1A
Other languages
English (en)
Inventor
Amir Hossein Gholamipour
Mark David Myran
Chandan Mishra
Namhoon Yoo
Jun Tao
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.)
SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US
Original Assignee
Western Digital Technologies Inc
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 Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102019132371A1 publication Critical patent/DE102019132371A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1456Hardware arrangements for backup
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/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/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Offenbart sind Systeme und Verfahren zum Bereitstellen einer Tabellenverwaltung logisch zu physisch (L2P) unter Verwendung von NVM mit niedriger Latenz, um einen Platzbedarf von Speicher mit wahlfreiem Zugriff (RAM) als Solid-State-Laufwerk (SSD) zu reduzieren. Ein Verfahren schließt ein Bestimmen einer logischen zu physikalischen (L2P) Zuordnung einer logischen Adresse zu einer physischen Adresse in einem Flash Speicher, für einen Vorgang ein, der auf die logische Adresse gerichtet ist. Das Verfahren schließt auch ein Hinzufügen eines Dateneintrags, der die L2P-Zuordnung umfasst, zu einer offenen Protokollstruktur in dem RAM ein. Das Verfahren schließt auch ein Hinzufügen eines Protokolleintrags, der die L2P-Zuordnung umfasst, zu einem Puffer in dem RAM ein. Das Verfahren schließt auch ein Leeren des Puffers in einen NVM-Datenspeicher mit niedriger Latenz als Reaktion auf ein Bestimmen ein, dass der Puffer einen Größenschwellenwert erfüllt hat. Lesevorgänge, Snapshots und L2P-Tabellenwiederherstellung werden ebenfalls beschrieben.

Description

  • HINTERGRUND
  • Der wachsende Bedarf an Datenspeicherung hat zur Herstellung und zum Einsatz von Flash-Datenspeichervorrichtungen mit großer Kapazität geführt. Vorrichtungskapazitäten mit mehreren Terabyte, wie beispielsweise 64 TB und größere, sind unter Verwendung von dreidimensionalen NICHT-UND (3D-NAND)-Flash und Mehrebenenzellen, wie beispielsweise Dreifachebenenzellen (TLC), 3 Bits pro Zelle, Vierfachebenenzellen (QLC, 4 Bits pro Zelle) und darüber erreichbar. Um den Betrieb dieser großen Datenspeichervorrichtungen zu unterstützen, expandieren die Metadaten und Buchhaltungsstrukturen auch gemeinsam. Für manche Anwendungsfälle, wie beispielsweise Unternehmensdatenzentren und professionelle Arbeitsstationen, werden diese Metadaten vorzugsweise in Speicher mit wahlfreiem Zugriff (RAM) mit hoher Leistung gespeichert, um Anwendungslatenz- und Bandbreitenanforderungen zu erfüllen. Jedoch erhöht ein Erhöhen der RAM-Größe, um die Metadaten aufzunehmen, auch die Fertigungskosten und den Stromverbrauch der Vorrichtung. Somit besteht ein Bedarf, den Betrieb von Flash-Datenspeichervorrichtungen mit großer Kapazität in einer effizienten Weise zu unterstützen.
  • Die im Hintergrundabschnitt vorgesehene Beschreibung sollte nicht als Stand der Technik angenommen werden, lediglich weil sie in dem Hintergrundabschnitt erwähnt wird oder diesem zugeordnet ist. Der Hintergrundabschnitt kann Informationen einschließen, die einen oder mehrere Aspekte der vorliegenden Technologie beschreiben, und die Beschreibung in diesem Abschnitt schränkt die Erfindung nicht ein.
  • Figurenliste
  • Eine detaillierte Beschreibung erfolgt unter Bezugnahme auf die beigefügten Zeichnungen:
    • 1A veranschaulicht ein Beispielsystem zum Bereitstellen einer Verwaltung von logisch zu physisch (L2P) in einer Datenspeichervorrichtung.
    • 1B veranschaulicht eine Beispielmetadatenstruktur für eine L2P-Tabelle.
    • 2A veranschaulicht ein Beispielsystem zum Bereitstellen einer L2P-Verwaltung unter Verwendung eines nichtflüchtigen Speichers mit niedriger Latenz (NVM) in einer Datenspeichervorrichtung.
    • 2B veranschaulicht Beispielmetadatenstrukturen in einem Speicher mit wahlfreiem Zugriff (RAM), um eine Datenspeicherung einer L2P-Tabelle in NVM mit niedriger Latenz zu unterstützen.
    • 2C veranschaulicht Beispielmetadatenstrukturen zum Speichern einer L2P-Tabelle in NVM mit niedriger Latenz.
    • 2D veranschaulicht ein Datenflussdiagramm für einen L2P-Tabellenwiederaufbauprozess mit L2P-Verwaltung unter Verwendung von NVM mit niedriger Latenz in einer Datenspeichervorrichtung.
    • 3 ist ein Flussdiagramm, das einen Beispielprozess zum Verarbeiten eines Schreibvorgangs mit L2P-Verwaltung unter Verwendung von NVM mit niedriger Latenz in einer Datenspeichervorrichtung veranschaulicht.
    • 4 ist ein Flussdiagramm, das einen Beispielprozess zum Verarbeiten eines Lesevorgangs mit L2P-Verwaltung unter Verwendung von NVM mit niedriger Latenz in einer Datenspeichervorrichtung veranschaulicht.
    • 5 ist ein Blockschema der Komponenten eines beispielhaften Objektspeichersystems.
  • DETAILLIERTE BESCHREIBUNG
  • Die nachstehend dargelegte detaillierte Beschreibung ist als eine Beschreibung verschiedener Konfigurationen der vorliegenden Technologie gedacht und soll nicht die einzigen Konfigurationen darstellen, in denen die vorliegende Technologie in der Praxis umgesetzt werden kann. Die beigefügten Zeichnungen sind in dieses Dokument integriert und Bestandteil der detaillierten Beschreibung. Die detaillierte Beschreibung beinhaltet spezifische Details, um ein gründliches Verständnis der vorliegenden Technologie zu ermöglichen. Die betreffende Technologie kann auch ohne diese spezifischen Details genutzt werden. In einigen Fällen sind Strukturen und Komponenten in Blockdiagrammform gezeigt, um zu vermeiden, dass die Konzepte der vorliegenden Technologie unklar werden. Gleiche Komponenten sind zum leichteren Verständnis mit identischen Elementnummern gekennzeichnet.
  • Die vorliegende Beschreibung bezieht sich im Allgemeinen auf Datenspeichersysteme und -verfahren, und insbesondere zum Beispiel auf, ohne Einschränkung, ein Bereitstellen einer Verwaltung einer Tabelle von logisch zu physisch (L2P) unter Verwendung von nichtflüchtigem Speicher (NVM) mit niedriger Latenz, um den Platzbedarf von Halbleiterlaufwerk (SSD) Speicher mit wahlfreiem Zugriff (RAM) zu verringern. Wie oben erörtert, erhöhen sich Metadaten zum Unterstützen von SSD-Vorgängen gemeinsam mit der SSD-Kapazität. Zum Beispiel kann ein Speichern einer L2P-Tabelle etwa 0,1 % der SSD-Datenspeicherkapazität erfordern. Um eine ausreichende Leistung für Unternehmensanwendungen und anderen anspruchsvollen Anwendungsfälle bereitzustellen, muss die L2P-Tabelle in Datenspeicher mit hoher Leistung gespeichert werden, wie beispielsweise RAM. Wenn jedoch die SSD-Datenspeicherkapazität auf eine sehr große Zahl ansteigt, dann ist es möglicherweise nicht machbar, die Menge an RAM bereitzustellen, die notwendig ist, um die L2P-Tabelle zu speichern, z. B. etwa 64 GB an RAM für eine SSD mit 64 TB Speicherkapazität. Auf der anderen Seite ermöglicht es das Bereitstellen einer Tabellenverwaltung von logisch zu physisch (L2P) unter Verwendung von NVM mit niedriger Latenz, die L2P-Tabellen-RAM-Anforderung auf etwa 3-6 % einer SSD zu verringern, welche die L2P-Tabelle in RAM speichert.
  • Eine oder mehrere Implementierungen der vorliegenden Technologie stellen verschiedene Leistungsvorteile bereit, welche die Funktionalität eines Computers verbessern. Durch Verringern der RAM-Anforderungen der SSD können Fertigungskosten erheblich verringert werden. Ferner kann, da RAM allgemein eine kontinuierliche Leistung erfordert, um Datenwerte im RAM aufrechtzuerhalten, der Energieverbrauch der Datenspeichervorrichtung ebenfalls erheblich verringert werden. Ferner können durch Bereitstellen eines separaten NVM-Bereichs niedriger Latenz für die Datenspeicherung von L2P-Protokolldatensätzen Schreibkollisionen zwischen L2P-Protokollschreibvorgängen und Benutzerdatenschreibvorgängen vermieden werden, wodurch möglicherweise die Schreibleistung verbessert wird. Durch Verwenden von nichtflüchtigem NVM mit niedriger Latenz für L2P-Snapshots und Protokolldatensätze können L2P-Tabellenneuaufbauungen vereinfacht und beschleunigt werden, was die Ausfallzeit des Systems verringert. Die verringerten Kosten aus der verringerten RAM-Anforderung kann sich auch zu einer verbesserten Datenspeichervorrichtungsleistung übertragen, indem es ermöglicht wird, dass sich die Stückliste (BOM) auf andere Komponenten konzentriert, um verschiedene Leistungskennzahlen der Datenspeichervorrichtung zu verbessern, wie beispielsweise Schreiblebensdauer, Lese-/Schreibbandbreite, Lese-/Schreiblatenz, und/oder Datenspeicherkapazität. Ein Host-Computer, der mit der Datenspeichervorrichtung gekoppelt ist, empfängt wiederum auch die Vorteile der verbesserten Leistung der Datenspeichervorrichtung.
  • 1A veranschaulicht ein Beispielsystem 100 zum Bereitstellen einer Verwaltung von logisch zu physisch (L2P) in einer Datenspeichervorrichtung. Das System 100 schließt eine Steuerung 101, Speicher mit wahlfreiem Zugriff (RAM) 102 und Flash-Speicher 103 ein. Die Steuerung 101 schließt eine Flash-Übertragungsschicht (FTL) 120 und einen L2P-Director (L2PD) 130 ein. Mit Bezug auf 1A und 5 können gleich bezifferte Elemente gleichen Komponenten entsprechen. Zum Beispiel kann die Steuerung 101 einer Steuerung 501 entsprechen, der RAM 102 kann einem Datenspeichermedium 502 entsprechen, und der Flash-Speicher 103 kann einem Flash-Speicher 503 entsprechen. Der Einfachheit halber können Elemente von 5, die in dem System 100 von 1A weggelassen sind, tatsächlich vorhanden sein, wie zum Beispiel ein Host 504, eine Schnittstelle 505, ein Register 506, eine Steuerung 507 und ein NAND-Array 508.
  • Die Steuerung 101 kann eine L2P-Tabelle verwenden, um Flexibilität beim Datenadressieren bereitzustellen und um die spezifischen physischen Adressen, die zum Speichern von Daten verwendet werden, wegzuabstrahieren. Wenn eine L2P-Tabelle nicht vorhanden wäre, dann würde ein Host-Computer stattdessen die physischne Adresszuordnungen direkt verwalten, was die des Betriebssystemkomplexität erhöht und die Vorrichtungsinteroperabilität veringert. Die FTL 120 kann SSD-spezifische Hintergrundprozesse einschließen, wie beispielsweise Abnutzungsausgleich und Speicherbereinigung, die ein Neuzuordnen der zugrundeliegenden physischen Adressen verursachen, die zum Speichern von Daten verwendet werden. Ferner kann die FTL 120 mit Hilfe des L2PD 130 Adressübersetzungen bereitstellen und Metadaten-Buchhaltung durchführen, um Lesevorgänge, Schreibvorgänge, Löschungen und andere Datenvorgänge zu unterstützen. Somit kann die FTL 120 Anforderungen an den L2PD 130 senden, um L2P-Zuordnungen zu erzeugen, zu modifizieren oder zu löschen.
  • Die L2P-Tabelle für die L2P-Zuordnungen kann gespeichert werden in dem RAM 102 gespeichert werden, der einem dynamischen RAM (DRAM) oder einem statischen RAM (SRAM) entsprechen kann. Da der RAM 102 flüchtig sein kann und einem Datenverlust unterliegen kann, wenn ein Leistungsverlust oder ein Stromausfall auftritt, kann der L2PD 130 die FTL 120 anweisen, Protokolldatensätze für die L2P-Tabelle im Flash-Speicher 103 zu speichern. Die Protokolldatensätze können verwendet werden, um die L2P-Tabelle wieder aufzubauen, nachdem die Stromversorgung wiederhergestellt ist, wodurch die Unversehrtheit der Daten sichergestellt wird. Jedoch belegen die Protokolldatensätze Platz in dem Flash-Speicher 130, der ansonsten verwendet werden könnte, um größere Benutzerdatenkapazität, mehr Überbereitstellung oder andere produktive Verwendungen zu unterstützen, um verschiedene Leistungskennzahlen der Datenspeichervorrichtung zu verbessern. Ferner kann eine Schreibkonkurrenz zwischen Host-Schreibvorgängen und Protokolldatensatzaktualisierungen die E/A-Leistung verringern.
  • 1B veranschaulicht eine Beispielmetadatenstruktur 160 für eine L2P-Tabelle. Wie in der Metadatenstruktur 160 gezeigt ist, schließt ein in dem RAM 102 gespeichertes Array „P“ Datensätze von 0 bis „n“ ein, wobei „n“ der maximale logische Seitenindex (LPI) ist. Jeder Datensatz im Array „P“ wird einer spezifischen physischen Seite im Flash-Speicher 103 zugeordnet, zum Beispiel durch Index- oder Zeigerwert. Die FTL 120 kann eine Anforderung an den L2PD 130 senden, um eine L2P-Zuordnung abzurufen, eine L2P-Zuordnung zuzuweisen oder eine L2P-Zuordnung zu löschen.
  • Zum Beispiel kann die FTL 120 eine Anforderung an den L2PD 130 senden, um eine physische Seite abzurufen, die einem spezifischen LP1 zugeordnet ist, wie beispielsweise einem LPI-2. Der L2PD 130 kann auf den RAM 102 zugreifen und P[2] zurückgeben, um auf die Anforderung zu antworten, wobei P[2] einen Index- oder Zeigerwert umfasst, welcher der letzten physischen Seite des Flash-Speichers 103 zugeordnet ist.
  • In einem anderen Beispiel kann die FTL 120 eine Anforderung an den L2PD 130 senden, um eine oder mehrere LPIs entsprechenden physischen Seiten zuzuweisen. Der L2PD 130 kann die Zuweisung gemäß Metadaten für den Flash-Speicher 103 bestimmen, die in einem oder mehreren von der FTL 120, dem RAM 102, dem Flash-Speicher 103 oder anderen geeigneten Orten gespeichert sein können. Zum Beispiel kann die FTL 120 die Zuweisung auf der Grundlage von Speicherblock-Metadaten für Programmier- und Löschzyklen (P/E), Bitfehlerraten (BER) oder anderen Kriterien bestimmen. Das „P“-Array kann entsprechend aktualisiert werden, und der Zeiger oder Indizes auf die entsprechenden physischen Seiten können an die FTL 120 zurückgegeben werden.
  • In noch einem anderen Beispiel kann die FTL 120 eine Anforderung an den L2PD 130 senden, um eine L2P-Zuordnung zu löschen. Die Zuordnung kann somit in dem Array „P“ gelöscht werden, zum Beispiel durch Einstellen der zugehörigen Datensätze auf null oder einen anderen vorbestimmten Wert. Zusätzlich, oder alternativ kann eine separate Freiraum-Bitmap aktualisiert werden, um anzugeben, welche Datensätze in dem Array „P“ gültige Zuordnungen enthalten. Die Freiraum-Bitmap kann freien Raum für Gruppen von Datensätzen angeben, wie beispielsweise für Partitionsgruppen, wie unten erörtert.
  • Wenn der L2PD 130 das Array „P“ modifiziert, weist der L2PD 130 auch die FTL 120 an, entsprechende Aktualisierungen in einem Protokoll aufzuzeichnen, dass in dem Flash-Speicher 103 gespeichert wird. Bei einem bestimmten Ansatz, kann der L2PD 130 den Adressraum des „P“-Arrays in Partitionsgruppen von einer festen Größe teilen, zum Beispiel Partitionsgruppen von 32 benachbarten Einträgen. Wenn eine Modifikation in einer bestimmten Partitionsgruppe auftritt, kann die Partitionsgruppe in Protokollpuffer gecachet werden, die im RAM 102 gespeichert sind. Sobald die Protokollpuffer eine vorbestimmten Schwellenwertgröße erreichen, zum Beispiel eine physische Seitengröße des Flash-Speichers 103, kann der L2PD 130 die FTL 120 anweisen, die Protokollpuffer in ein Protokoll im Flash-Speicher 103 zu leeren, und etwaige entsprechende Metadatenstrukturen können auch aktualisiert werden.
  • Zum Beispiel kann eine Partitionstabelle in dem Flash-Speicher 103 mit den Adressen der protokollierten Partitionsgruppen im Flash-Speicher 103 aktualisiert werden. Zum Wiederaufbauen der L2P-Tabelle, wenn die Vorrichtung mit Strom versorgt wird, kann die Partitionstabelle abgetastet und analysiert werden, um das „P“-Array in dem RAM 102 zu bestücken. Es ist zu beachten, dass die Steuerung 101 einen gewissen Schutz gegen Stromausfall für nicht festgeschriebene Protokollpuffer im RAM 102 einsetzen kann, zum Beispiel durch Leeren der Protokollpuffer in nichtflüchtigen Datenspeicher unter Verwendung einer Reserveenergiequelle wenn ein Stromausfall erkannt wird.
  • Wie in der Metadatenstruktur 160 gezeigt ist, werden „n“ Datensätze in dem RAM 102 gespeichert, wobei „n“ direkt mit der SSD-Datenspeicherkapazität oder der Anzahl adressierbarer physischer Seiten skaliert wird. Ferner wächst auch die Datengröße jedes Datensatzes in dem Array „P“ mit der SSD-Datenspeicherkapazität, da eine größere Anzahl von Bits benötigt wird, um einen größeren physischen Adressbereich abzudecken.
  • Man betrachte zum Beispiel eine SSD mit einer 64 TB (246 Byte) Datenspeicherkapazität. Wie oben erörtert ist, kann eine L2P-Tabelle etwa 0,1 % der SSD-Datenspeicherkapazität erfordern, was einer L2P-Tabelle mit 64 GB für eine SSD mit 64 TB entspricht. Unter der Annahme von 4 KB (212 Byte) an physischen Seiten und unter der Annahme, dass eine logische Seite einer physischen Seite zugeordnet wird, ist der maximale LPI für eine 64 TB-SSD n = 234, und jeder Tabellendatensatz erfordert einen Integer-Datentyp von 34 Bit, um die n physischen Seiten zu adressieren. Daher muss der RAM 102 genug Kapazität zum Speichern von 34 * n Bits oder etwa 64 GB (236 Byte) einschließen, um die Metadatenstruktur 160 für eine 64 TB-SSD zu speichern. Obwohl diese erforderliche Kapazität durch Verwenden größerer Größen logischer Seiten reduziert werden kann, kann dies auch zu einer reduzierten Datenspeicherkapazität aufgrund der entsprechend größeren minimalen Zuweisungseinheit führen.
  • Somit wird die 0,1 %-Näherung oder das Verhältnis von 1:1000 von L2P-Tabellen-Metadaten zu Speicherkapazität bestätigt. Ein Einrichten des RAM 102 zum Bereitstellen von 64 GB an L2P-Tabellendatenspeicher für eine 64 TB-SSD kann aus Kosten- oder Stromverbrauchsperspektive nicht durchführbar sein. Somit kann das in 1A gezeigte System 100 möglicherweise nicht ohne weiteres für größere Kapazitäten der Flash-Datenspeichervorrichtung skalieren, wie beispielsweise 64 TB und darüber hinaus.
  • 2A veranschaulicht ein Beispielsystem 200 zum Bereitstellen einer L2P-Verwaltung unter Verwendung von NVM 240 mit niedriger Latenz in einer Datenspeichervorrichtung. Das System 200 schließt eine Steuerung 201, Speicher mit wahlfreiem Zugriff (RAM) 202, Flash-Speicher 103 und NVM 240 mit niedriger Latenz ein. Die Steuerung 201 schließt eine Flash-Übertragungsschicht (FTL) 220 und einen L2P-Director (L2PD) 230 ein. Mit Bezug auf 1A, 2A und 5 können gleich bezifferte Elemente gleichen Komponenten entsprechen. Zum Beispiel kann die Steuerung 201 der Steuerung 101 oder 501 entsprechen, der RAM 202 kann dem RAM 102 oder dem Datenspeichermedium 502 entsprechen, und der Flash-Speicher 203 kann dem Flash-Speicher 103 oder 503 entsprechen.
  • Wie in 2A gezeigt, unterscheidet sich das System 200 von dem System 100 durch Hinzufügen eines NVM 240 mit niedriger Latenz, die einem Typ eines nichtflüchtigen Speichers mit niedrigerer Latenz als der Flash-Speicher 203 entsprechen kann. Zum Beispiel kann der NVM 240 mit niedriger Latenz einem Einzelebenenzellen (SLC) 3D-NAND-Flash mit Lese- und Programmier(schreib)zeiten von etwa 3 µs bzw. 35-50 µs entsprechen. Dies kann etwa 5 mal schneller sein als herkömmlicher SLC-NAND. Wenngleich der NVM 240 mit niedriger Latenz in 2A NAND-Flash-Speicher verwendet, können auch andere Typen von nichtflüchtigem Speicher mit geeigneten Leistungseigenschaften verwendet werden. Der Flash-Speicher 203 kann 2D- oder 3D-NAND-Flash-Speicher-Typen in TLC, QLC, oder höheren Mehrebenenzellmodi mit relativ höheren Lese- und Schreiblatenzen, wie beispielsweise hunderte von µs, entsprechen. Der RAM 202 kann Lese- und Schreiblatenzen aufweisen, die um Größenordnungen niedriger sind als entweder der Flash-Speicher 203 oder der NVM 240 mit niedriger Latenz zum Beispiel dadurch, dass Lese- und Schreibzeiten in einigen zehn Nanosekunden gemessen werden. Somit kann das System 200 drei Datenspeichertypen bereitstellen, wobei ein dritter Datenspeicher (z. B. der RAM 202) eine niedrigere Latenz aufweist als ein zweiter Datenspeicher (z. B. NVM 240 mit niedriger Latenz), der eine niedrigere Latenz aufweist als ein erster Datenspeicher (z. B. der Flash-Speicher 203).
  • In dem System 200, ist der L2PD 230 eingerichtet, um Snapshots und Protokolle für die L2P-Tabelle in dem NVM 240 mit niedriger Latenz zu speichern, während das Speichern von Metadatenstrukturen in dem RAM 202 gespeichert werden, um eine Hochgeschwindigkeits-L2P-Auflösung bereitzustellen. Die Metadatenstrukturen unterstützen die L2P-Auflösung bis zu einer vorbestimmten Anzahl von Zuordnungen, die kleiner als die maximale Anzahl von L2P-Zuordnungen ist. Da eher ein Abschnitt als die Gesamtheit der L2P-Tabelle gespeichert ist, können die Metadatenstrukturen logische Seitengrößen verwenden, die mit den physischen Seitengrößen des Flash-Speichers 203 übereinstimmen, z. B. 4K-Seiten, auch für Laufwerke mit hoher Kapazität mit großen Bitadressbereichen. Der RAM 202 kann somit mit einem Bruchteil der Kapazität des RAM 102 eingerichtet sein, wie beispielsweise 3-6 % des RAM 102, abhängig von den gewählten Größen für die Metadatenstrukturen. Als ein Ergebnis kann eine RAM-Anforderung von 64 GB für den RAM 102 in einer SSD mit einer Kapazität von 64 TB auf eine RAM-Anforderung von 2-4 GB für den RAM 202 in einer gleichen SSD mit einer Kapazität von 64 TB reduziert werden, was die Kosten und den Stromverbrauch dramatisch reduziert.
  • Die Verwendung des L2PD 230 und des NVM 240 mit niedriger Latenz kann die Leistung und die Dienstgüte (QoS) für die Datenspeichervorrichtung minimal beeinflussen. Zum Beispiel kann sich eine Latenz niedriger Warteschlangentiefe (QD) der Datenspeichervorrichtung um weniger als 5 % erhöhen. Auf der anderen Seite kann neben dem reduzierten RAM-Speicherplatzbedarf, wie oben beschrieben, die Verwendung des L2PD 230 andere Vorteile bereitstellen, welche die minimalen Leistungsbeeinflussungen überwiegen. Zum Beispiel können Schreibkollisionen zwischen Protokollaktualisierungen und Benutzerdatenaktualisierungen in dem Flash-Speicher 103 im L2PD 230 vollständig vermieden werden, da Protokollaktualisierungen getrennt auf den NVM 240 mit niedriger Latenz geschrieben werden. Protokollieren und L2P-Tabellenneuaufbauungen können auch schneller und einfacher durchgeführt werden, wie unten detaillierter beschrieben wird. Darüber hinaus können, da die Software- oder Firmwareänderungen zum Ersetzen des L2PD 130 modular an dem L2PD 230 vorgenommen werden können, sind möglicherweise minimale oder keine Änderungen für andere Abschnitte der Steuerung 201 notwendig, wie beispielsweise die FTL 220, was die Implementierung und den Einsatz vereinfacht.
  • 2B veranschaulicht Beispielmetadatenstrukturen in dem Speicher mit wahlfreiem Zugriff (RAM) 202, um eine Datenspeicherung einer L2P-Tabelle in NVM mit niedriger Latenz zu unterstützen. Der RAM 202 schließt einen Cache-Eintragsbaum (CET) 250, einen Protokollbaum (JT) 252A, einen Protokollbaum (JT) 252B und Protokollpuffer 254 ein. Die Protokollpuffer 254 schließen einen Protokolleintrag 256 ein. Mit Bezug auf 2B kann der RAM 202 dem RAM 202 aus 2A entsprechen.
  • Es kann aufschlussreich sein, die in 2B, 2C und 2D gezeigten Metadatenstrukturen in Bezug auf 3 zu beschreiben, ein Flussdiagramm, das einen Beispielprozess 300 zum Verarbeiten eines Schreibvorgangs mit L2P-Verwaltung unter Verwendung des NVM 240 mit niedriger Latenz in einer Datenspeichervorrichtung veranschaulicht. Einer oder mehrere Blöcke von 3 können durch ein Rechensystem ausgeführt werden (einschließlich z. B. einer Steuerung eines Flash-Speichers, einer Datenspeicher-Steuerung eines Datenspeichersystems oder einer Festkörperspeichervorrichtung (SSD), eines Prozessors oder dergleichen). Beispiele eines Rechensystems oder einer Steuerung können Steuerung 501 und/oder 507 sein. Auf ähnliche Weise kann ein nicht transitorisches maschinenlesbares Medium maschinenausführbare Anweisungen darauf einschließen, die bei Ausführen durch einen Computer oder eine Maschine die Blöcke von 3 durchführen. Die Schritte von Prozess 300 können als Hardware/Firmware oder Software implementiert sein.
  • In Block 311, Bezug nehmend auf 2A, empfängt die Steuerung 201 eine Anforderung zum Bestimmen einer Zuordnung logisch zu physisch (L2P) eines Schreibvorgangs, der auf eine logische Adresse gerichtet ist. Der L2PD 230 kann zum Beispiel eine L2P-Anforderung von der FTL 220 empfangen, um eine L2P-Zuordnung für eine logische Adresse oder einen logischen Seitenindex (LPI) aufzulösen.
  • Ein Cacheadresse zu einem Cachebereich kann auch empfangen werden, wobei der Cachebereich die zu schreibenden Daten für die logische Adresse die L2P-Zuordnungsanforderung speichert. Ein entsprechender Knoten mit der angeforderten LPI und der zugeordnete Cacheadresse kann in den CET 250 eingefügt werden. Der CET 250 kann einem ausgeglichenen binären Baum entsprechen, wie beispielsweise einem Adelson-Velsky- und Landis-Baum (AVL), es können aber auch andere Datenstrukturen verwendet werden, wie beispielsweise Hash-Tabellen. Somit kann die Baumgröße des CET 250 durch die Anzahl von Cacheeinträgen begrenzt werden, die in der Steuerung 201 oder anderswo in der Datenspeichervorrichtung verfügbar sind. Der L2PD 230 kann die FTL 220 informieren, dass die Aktualisierung des CET 250 erfolgreich war.
  • In Block 312, Bezug nehmend auf 2A, bestimmt die Steuerung 201 die L2P-Zuordnung der logischen Adresse zu einer physischen Adresse in dem Flash-Speicher 203. Wie oben erörtert, kann die auszuwählende spezifische physische Adresse auf Metadaten basieren, die für den Flash-Speicher 203 gepflegt werden, wie beispielsweise die P/E-Zyklen und die BER für Flash-Speicherblöcke.
  • Im Block 313, Bezug nehmend auf 2A, bestimmt die Steuerung 201, dass der Schreibvorgang in den Flash-Speicher 203 eingespeichert wurde. Zum Beispiel kann der L2PD 230 eine Aktualisierung von der FTL 220 empfangen, dass der Schreibvorgang in den Flash-Speicher 203 eingespeichert wurde und dass die L2P-Tabelle entsprechend aktualisiert werden sollte. Der vorher in den CET 250 eingefügte Knoten kann nun aus dem CET 250 entfernt werden. Es ist zu beachten, dass der CET 250 in dem Fall eines Stromausfalls verworfen werden kann, da der CET 250 nur Zeiger auf zwischengespeicherte nicht eingespeicherte Schreibvorgänge einschließt, die aus einem Protokoll wiederhergestellt werden können, das in dem NVM 240 mit niedriger Latenz gespeichert ist.
  • In Block 314, Bezug nehmend auf 2A und 2B, fügt die Steuerung 201 einen Dateneintrag, umfassend die L2P-Zuordnung, die aus Block 312 bestimmt ist, zu einer offenen Protokollstruktur (z. B. JT 252A) von dem JT 252A und dem JT 252B in den RAM 202 hinzu. Zum Beispiel können der JT 252A und 252B ausgeglichenen binären Bäumen entsprechen, ähnlich wie der CET 250, aber es können andere Datenstrukturen verwendet werden, wie beispielsweise Hash-Tabellen. Wie in 2B gezeigt, kann der JT 252A zunächst als ein offener oder aktiver JT (der Einfügungen von Knoten akzeptiert) bezeichnet werden, wohingegen der JT 252B zunächst als ein geschlossener JT (der keine Einfügungen von Knoten akzeptiert) bezeichnet werden kann. Somit wird in dem Block 314 ein Knoten (Dateneintrag) mit der L2P-Zuordnung des Blocks 312 in den JT 252A eingefügt (hinzugefügt).
  • JT 252A und JT 252B können eingerichtet sein, bis zu einer vorbestimmten Anzahl von Knoten zu speichern, die ein Verhältnis oder Prozentsatz der maximalen Anzahl von L2P-Zuordnungen oder der maximale LPI „n“ in 1B sein können. Zum Beispiel kann das Verhältnis 1/8 oder kleiner als „n“ sein, wie beispielsweise 1/16, 1/32, 1/64 oder ein anderes Verhältnis von „n“. Dieses Verhältnis kann angepasst werden, um Kompromisse in der Schreiblebensdauer des NVM 240 mit niedriger Latenz und den erforderlichen Platz für die Metadatenstrukturen in dem RAM 202 auszugleichen.
  • Sobald der JT 252A die vorbestimmte Anzahl von Knoten erreicht und voll ist, dann ein Snapshot-Prozess beginnen, wie dies in weiterem Detail unten in Verbindung mit 2C und 2D errörtert wird. Der Snapshot-Prozess kann den JT 252A zu aktiv in geschlossen und den JT 252B von geschlossenen in aktiv ändern. Somit können nachfolgende Knoteneinfügungen in den JT 252B eingefügt werden. Dieser aktive JT-Austauschprozess kann für jeden Snapshot wiederholt werden, wodurch Ping-Pong-Austausch des aktiven JT zwischen dem JT 252A und dem JT 252B erfolgt.
  • Im Block 315, Bezug nehmend auf 2A und 2B, fügt die Steuerung 201 einen Protokolleintrag 256, umfassend die L2P-Zuordnung von Block 312, einem Puffer hinzu (z. B. Protokollpuffer 254 in dem RAM 202). Zum Beispiel kann der Protokolleintrag 256 an dem Ende der Protokollpuffer 254 angehängt werden. Der Protokolleintrag 256 enthält die gleichen Informationen wie der Knoten, der in Block 314 in den JT 252A eingefügt wurde, oder die L2P-Zuordnung von Block 312.
  • In Block 316, Bezug nehmend auf 2A, leert die Steuerung 201 die Protokollpuffer 254 in ein erstes Protokoll in dem NVM 240 mit niedriger Latenz als Antwort auf ein Bestimmen, dass die Protokollpuffer 254 einen Größenschwellenwert erfüllt haben. Die Protokollpuffer 254 können eingerichtet sein, um Protokolleinträge bis zu einem Größenschwellenwert zu speichern, der einer physischen Seitengröße des NVM 240 mit niedriger Latenz, wie beispielsweise 4K, entsprechen kann. Wenn die Protokollpuffer 254 als voll bestimmt werden, zum Beispiel wenn ein zusätzlicher Protokolleintrag den Größenschwellenwert überschreiten würde, dann werden die Protokollpuffer 254 in ein erstes Protokoll des NVM 240 mit niedriger Latenz entleert. In dem Fall eines Stromausfalls können die Protokollpuffer 254 in einem nichtflüchtigen Speicher gespeichert werden. Da die Informationen in dem JT 252A und 252B bereits entweder in gespeicherten Protokollpuffern 254 oder der NVM 240 mit niedriger Latenz gespeichert sind, können der JT 252A und 252B bei einem Stromausfall verworfen werden.
  • 2C veranschaulicht Beispielmetadatenstrukturen zum Speichern einer L2P-Tabelle in dem NVM 240 mit niedriger Latenz. Wie in 2C gezeigt, schließt der NVM 240 mit niedriger Latenz, Snapshots, wie beispielsweise einen Snapshot 260A und 260B, Protokolle, wie beispielsweise ein Protokoll 270A und freien oder nicht zugewiesenen Platz ein. In dem in 2C gezeigten Beispiel 2C, ist der NVM 240 mit niedriger Latenz in 16 getrennte Chips unterteilt, es kann aber jede physische Anordnung verwendet werden.
  • Snapshots können einer gesamten L2P-Tabelle für den Flash-Speicher 203 entsprechen, die mit einem bestimmten Zeitpunkt konsistent ist. Somit kann ein Snapshot ähnlich erscheinen wie im „P“-Array in der in 1B gezeigten Metadatenstruktur 160, obwohl andere Datenstrukturen ebenso verwendet werden können. Protokolle können Aktualisierungen seit dem letzten abgeschlossenen Snapshot entsprechen. Somit kann das Protokoll 270A Aktualisierungen seit dem Snapshot 260A entsprechen. In dem oben beschriebenen Block 316 können die Protokollpuffer 254 an des Ende des Protokolls 270A oder des aktuellen Protokolls angehängt werden. Dementsprechend stellt ein Kombinieren des letzten abgeschlossenen Snapshot oder des Snapshot 260A mit dem aktuellen Protokoll oder dem Protokoll 270A einen Wiederaufbau der aktuellsten und aktuellen L2P-Tabelle für den Flash-Speicher 203 bereit.
  • Wie oben erörtert, wird dann, wenn eine Protokollstruktur voll ist, ein Snapshot-Prozess eingeleitet. Die zuvor offene und aktive Protokollstruktur, z. B. JT 252A, wird geschlossen, und eine andere Protokollstruktur, z. B. JT 252B, wird zu der neuen offenen und aktiven Protokollstruktur gemacht. Der L2PD kann somit weiterhin L2P-Anforderungen unter Verwendung des JT 252B bedienen, während der Snapshot 260B an einem neuen und anderen Ort innerhalb des NVM 240 mit niedriger Latenz erzeugt wird. Da der NVM 240 mit niedriger Latenz noch Flash-Speicher ist, kann die Auswahl eines neuen und anderen Orts für den Snapshot 260B auf P/E-Zyklen, der BER, und anderen Überlegungen basieren. Die Protokolleinträge für JT 252B können in einem anderen Protokoll als dem Protokoll 270A gespeichert werden, zum Beispiel in dem in 2D gezeigten Protokoll 270B.
  • Der Snapshot 260B kombiniert oder vereinigt die L2P-Zuordnungsänderungen in der nun geschlossenen Protokollstruktur oder JT 252A mit dem vorherigen Snapshot oder Snapshot 260A, der eine L2P-Tabelle für den Flash-Speicher 203 enthält, die mit einem früheren Zeitpunkt konsistent ist. Zum Beispiel können in einem bestimmten Beispielprozess eine oder mehrere Seiten aus dem Snapshot 260A gelesen werden, jegliche Aktualisierungen von dem JT 252A für den logischen Adressbereich der einen oder mehreren Seiten können angewendet werden, die aktualisierte eine oder mehreren Seiten können in den Snapshot 260B geschrieben werden, und der Prozess kann wiederholt werden, bis alle Seiten von dem Snapshot 260A verarbeitet sind. Wenn kein vorherigen Snapshot existiert, kann der Snapshot 260B nur mit den L2P-Zuordnungen in dem JT 252A erzeugt werden. Somit wird nun der Snapshot 260B erzeugt, der konsistent mit einem Zeitpunkt ist, der nach dem Snapshot 260A liegt.
  • 2D veranschaulicht ein Datenflussdiagramm für einen L2P-Tabellenwiederaufbauprozess mit L2P-Verwaltung unter Verwendung des NVM 240 mit niedriger Latenz in einer Datenspeichervorrichtung. Der NVM 240 mit niedriger Latenz schließt den Snapshot 260A, den Snapshot 260B, das Protokoll 270A und das Protokoll 270B ein. Mit Bezug auf 2C und 2D können gleich bezifferte Elemente gleichen Komponenten entsprechen.
  • Da der NVM 240 mit niedriger Latenz nichtflüchtig ist, ist das System 200 elastisch gegenüber Stromausfällen, selbst während Snapshot-Aktualisierungen. Zum Beispiel wird angenommen, dass ein Stromausfall auftritt, während der Snapshot 260B durch Kombinieren des Snapshot 260A mit dem JT 252A aufgebaut wird, wie oben beschrieben. Wenn die Datenspeichervorrichtung neu gestartet wird, geht alles in dem RAM 202 verloren, mit Ausnahme der Protokollpuffer 254, die bei Stromausfall in einem nichtflüchtigen Speicher gespeichert werden können. Um eine Datenkorrumpierung zu verhindern, kann die Datenspeichervorrichtung den Stromausfall und den Neustart erkennen und in einen Offline-Modus übergehen, in dem Benutzerdatenvorgänge nicht bedient werden. Um die Metadatenstrukturen in dem RAM 202 wieder aufzubauen, kann der JT 252A wieder aufgebaut werden, indem Knoten eingefügt werden, die aus dem Protokoll 270A analysiert werden, und JT 252B kann wieder aufgebaut werden, indem Knoten eingefügt werden, die aus dem Protokoll 270B analysiert werden.
  • Es ist zu beachten, dass der obige Wiederaufbauprozess schnell und einfach durch Lesen und Analysieren von Chargen von Protokollseitendaten sequentiell aus den Protokollen 270A und 270B ablaufen kann, die aus dem NVM 240 mit niedriger Latenz abgerufen wurden. Dies kann günstig mit komplizierteren Wiederaufbauprozessen verglichen werden, die notwendig sein können, wenn Protokolleinträge in dem Flash-Speicher 103 gespeichert werden, wie bei dem L2PD 130. Zum Beispiel können L2P-Metadaten Strukturen wie beispielsweise Partitionstabellen und Super-Partitionstabellen weggelassen werden, wenn der L2PD 230 verwendet wird. Die Wiederaufbauzeit beim Hochfahren der Vorrichtung kann daher reduziert werden, was dabei hilft, die Vorrichtungsausfallzeit zu minimieren.
  • Sobald die Protokollstrukturen wieder aufgebaut sind und die Protokollpuffer 254 wiederhergestellt sind, kann die Datenspeichervorrichtung wieder online gebracht werden, und der L2PD 230 kann ein Bedienen der L2P-Anforderungen wieder aufnehmen, wobei weitere Protokollpuffer in das Ende des Protokolls 270B geschrieben werden. Unterdessen kann der Snapshot-Prozess exakt dort wieder aufgenommen werden, wo er vor dem Stromausfall belassen wurde, oder am Ende des Snapshot 260B. Sobald die Snapshot-Aktualisierung abgeschlossen ist, können der ältere und veraltete Snapshot 260A und das Protokoll 270A freigegeben und an den nicht zugewiesenen freien Platz zurückgebracht werden. Alternativ kann eine Anzahl von älteren Snapshots und Protokollen für Zwecke der Datenwiederherstellung beibehalten werden.
  • Da nun ein Schreibvorgang und eine L2P-Tabellenwiederaufbau erörtert wurden, kann es aufschlussreich sein, einen Lesevorgang zu untersuchen. 4 ist ein Flussdiagramm, das einen Beispielprozess 400 zum Verarbeiten eines Lesevorgangs mit L2P-Verwaltung unter Verwendung des NVM mit niedriger Latenz in einer Datenspeichervorrichtung. Einer oder mehrere Blöcke von 4 können durch ein Rechensystem ausgeführt werden (einschließlich z. B. einer Steuerung eines Flash-Speichers, einer Datenspeicher-Steuerung eines Datenspeichersystems oder eines Solid-State-Speichergerätes (SSD), eines Prozessors oder dergleichen). Beispiele eines Rechensystems oder einer Steuerung können Steuerung 501 und/oder 507 sein. Auf ähnliche Weise kann ein nicht transitorisches maschinenlesbares Medium maschinenausführbare Anweisungen darauf einschließen, die bei Ausführung durch einen Computer oder eine Maschine die Blöcke von 4 durchführen. Die Schritte in Prozess 400 können als Hardware/Firmware oder Software implementiert sein.
  • In Block 411, Bezug nehmend auf 2A, empfängt die Steuerung 201 eine Anforderung zum Abrufen einer Zuordnung logisch zu physischen (L2P) für einen Lesevorgang, der auf eine logische Adresse gerichtet ist. Der L2PD 230 kann zum Beispiel eine L2P-Anforderung von der FTL 220 empfangen, um eine L2P-Zuordnung für eine logische Adresse oder einen logischen Seitenindex (LPI) aufzulösen.
  • In Block 412, Bezug nehmend auf 2A und 2B, durchsucht die Steuerung 201 den JT 252A und den JT 252B nach der L2P-Zuordnung. In manchen Situationen existiert möglicherweise keine geschlossene Protokollstruktur, in welchem Fall nur die offenen Protokollstruktur durchsucht wird. Die Steuerung 201 kann auch den CET 250 durchsuchen. Weitere, manche oder alle Suchen können parallel durchgeführt werden. Wenn eine L2P-Zuordnung, die zu der angeforderten logischen Adresse passt, in einer dieser durchsuchten Datenstrukturen gefunden wird, wird die L2P-Zuordnung abgerufen und die Suche kann enden. Es ist zu beachten, dass, wenn die L2P-Zuordnung in der CET 250 gefunden wird, die abgerufene L2P-Zuordnung tatsächlich eine Zuordnung logisch zu Cache für Daten ist, die noch nicht in den Flash-Speicher 203 eingespeichert wurden, und die angeforderten Daten somit aus dem Cache anstatt von dem Flash-Speicher 203 gelesen werden können.
  • In Block 413, Bezug nehmend auf 2A und 2C, ruft die Steuerung 201 die L2P-Zuordnung aus dem Snapshot 260A in dem NVM 240 mit niedriger Latenz ab, wenn ein Ergebnis der Suche in Block 412 leer ist. Wenn zum Beispiel die angeforderte L2P-Zuordnung nicht in einer der Metadatenstrukturen in dem RAM 202, einschließlich des CET 250, des JT 252A und des JT 252B, gefunden wird, hat der L2PD 230 keine andere Wahl als die L2P-Zuordnung in dem relativ langsameren NVM 240 mit niedriger Latenz nachzuschlagen. Basierend auf der angeforderten logischen Adresse oder LPI und der Offsetposition des Snapshot 260A in dem NVM 240 mit niedriger Latenz, kann die Seite, welche die angeforderte L2P-Zuordnung in dem NVM 240 mit niedriger Latenz enthält, in dem Block 413 abgerufen werden.
  • In dem Block 414, Bezug nehmend auf 2A, veranlasst die Steuerung 201, dass der Lesevorgang eingeleitet wird, wie durch die L2P-Zuordnung angegeben, die aus Block 412 oder 413 abgerufen wurde. Zum Beispiel kann der L2PD 230 die L2P-Zuordnung zu der FTL 220 zurücksenden, was wiederum den Lesevorgang bei der angegebenen physischen Adresse in dem Flash-Speicher 203 einleitet. Alternativ kann, wie oben erörtert, der Lesevorgang die Daten von einer angegebenen Cacheadresse eines Cache in dem System 200 abrufen.
  • 5 ist ein Blockdiagramm, das beispielhafte Komponenten eines Datenspeichersystems gemäß Aspekten der vorliegenden Technologie veranschaulicht. Wie in 5 dargestellt, beinhaltet das Datenspeichersystem 500 (z. B. ein Solid-State-Laufwerk) nach einigen Aspekten den Datenspeichersteuerung 501, das Speichermedium 502 und das Flash-Speicherarray 510, einschließlich eines oder mehrerer Flash-Speicher 503. Steuerung 501 kann Speichermedium 502 zur temporären Speicherung von Daten und Informationen verwenden, die verwendet werden, um das Datenspeichersystem 500 zu verwalten. Steuerung 501 kann mehrere interne Komponenten (nicht abgebildet) wie Nur-Lese-Speicher, eine Flash-Komponentenschnittstelle (beispielsweise einen Multiplexer zum Verwalten von Befehls- und Datentransport entlang einer seriellen Verbindung zu dem Flash-Speicher 503), eine E/A-Schnittstelle, eine Fehlerkorrekturschaltung und dergleichen beinhalten. Nach einigen Aspekten können alle diese Elemente von Steuerung 501 in einem einzelnen Chip integriert sein. In anderen Aspekten können diese Elemente getrennt auf ihren eigenen Leiterplatten vorhanden sein.
  • In einigen Implementierungen können Aspekte der vorliegenden Offenbarung in einem Datenspeichersystem 500 implementiert werden. Die Aspekte der vorliegenden Offenbarung können beispielsweise mit der Funktion der Datenspeichersteuerung 501 integriert werden oder können als separate Komponenten zur Verwendung in Verbindung mit Datenspeichersteuerung 501 vorhanden sein.
  • Steuerung 501 kann auch einen Prozessor beinhalten, der eingerichtet sein kann, um Code oder Befehle auszuführen und die hierin beschriebenen Operationen und Funktionen auszuführen, Anforderungsabläufe und Adressenzuordnungen zu verwalten, Berechnungen durchzuführen und Befehle zu erzeugen. Der Prozessor der Steuerung 501 kann eingerichtet sein, um den Betrieb der Komponenten in der Datenspeichersteuerung 501 zu überwachen und/oder zu steuern. Der Prozessor kann ein Allzweck-Mikroprozessor, ein Mikrocontroller, ein digitaler Signalprozessor (DSP), ein anwendungsspezifischer integrierter Schaltkreis (ASIC), ein im Feld programmierbares Gate-Array (FPGA), ein programmierbarer Logikbaustein (PLD), ein Controller, ein Zustandsmaschine, ein Logikgatter, diskrete Hardwarekomponenten oder eine Kombination der Vorstehenden sein. Eine oder mehrere Sequenzen von Anweisungen können als Firmware im ROM von Steuerung 501 und/oder seinem Prozessor gespeichert sein. Eine oder mehrere Sequenzen von Anweisungen können gespeicherte Software sein, die von dem Speichermedium 502 und dem Flash-Speicher 503 gelesen wird oder von der Host-Vorrichtung 504 empfangen wird (zum Beispiel über die Host-Schnittstelle 505). ROM, Speichermedium 502, Flash-Speicher 503 stellen Beispiele von maschinen- oder computerlesbaren Medien dar, auf denen Befehle/Code gespeichert werden können, die von Steuerung 501 und/oder seinem Prozessor ausführbar sind. Die Begriffe maschinen- oder computerlesbare Medien können allgemein jedes Medium oder jeden Datenträger bezeichnen, das/der verwendet wird, um Befehle an Steuerung 501 bereitzustellen, einschließlich sowohl flüchtiger Medien, wie beispielsweise dynamischer Speicher, der für Speichermedien 502 oder für Puffer in Steuerung 501 verwendet wird, als auch nichtflüchtige Medien wie elektronische Medien, optische Medien und magnetische Medien.
  • In einigen Aspekten kann Steuerung 501 eingerichtet sein, um Daten, die von einem Host-Gerät 504 empfangen werden, als Reaktion auf einem Schreibbefehl von Host-Gerät 504 im Flash-Speicher 503 zu speichern. Steuerung 501 ist weiterhin so eingerichtet, dass sie in dem Flash-Speicher 503 gespeicherte Daten liest und die gelesenen Daten als Reaktion auf einen Lesebefehl von Host-Gerät 504 an Host-Gerät 504 überträgt.
  • Host-Gerät 504 stellt jede Vorrichtung dar, die eingerichtet ist, um mit dem Datenspeichersystem 500 gekoppelt zu werden und Daten in dem Datenspeichersystem 500 zu speichern. Die Host-Vorrichtung 504 kann ein Rechensystem, wie beispielsweise ein Personal Computer, ein Server, eine Workstation, ein Laptop-Computer, ein PDA, ein Smartphone und dergleichen, sein. Alternativ kann die Host-Vorrichtung 504 eine elektronische Vorrichtung, wie beispielsweise eine Digitalkamera, ein digitaler Audioplayer, ein digitaler Videorecorder und dergleichen, sein.
  • In manchen Gesichtspunkten stellt das Datenspeichermedium 502 flüchtigen Speicher dar, der zum temporären Speichern von Daten und Informationen verwendet wird, die verwendet werden, um das Datenspeichersystem 500 zu verwalten. Gemäß Aspekten der vorliegenden Technologie ist das Speichermedium 502 ein Speicher mit wahlfreiem Zugriff (RAM), wie ein RAM mit doppelter Datenrate (DDR). Andere Typen von RAM können auch verwendet werden, um das Datenpeichermedium 502 zu implementieren. Speicher 502 kann unter Verwendung eines einzelnen RAM-Moduls oder mehrerer RAM-Module implementiert werden. Obwohl das Speichermedium 502 als von Steuerung 501 verschieden dargestellt ist, ist für Fachleute leicht ersichtlich, dass das Speichermedium 502 in die Steuerung 501 integriert sein kann, ohne vom Umfang der vorliegenden Technologie abzuweichen. Alternativ kann das Datenspeichermedium 502 ein nichtflüchtiger Speicher sein, wie beispielsweise eine Magnetplatte, ein Flash-Speicher, ein Peripherie-SSD und dergleichen.
  • Wie weiterhin in 5 dargestellt, kann das Datenspeichersystem 500 auch die Host-Schnittstelle 505 beinhalten. Die Host-Schnittstelle 505 kann eingerichtet sein, um betriebsfähig (z. B. durch drahtgebundene oder drahtlose Verbindung) mit der Host-Einrichtung 504 gekoppelt zu sein, um Daten von der Host-Vorrichtung 504 zu empfangen und Daten an die Host-Vorrichtung 504 zu senden. Die Host-Schnittstelle 505 kann elektrische und physikalische Verbindungen oder eine drahtlose Verbindung zum betriebsfähigen Koppeln der Host-Vorrichtung 504 mit der Steuerung 501 (z. B. über die E/A-Schnittstelle der Steuerung 501) einschließen. Die Host-Schnittstelle 505 kann eingerichtet sein, um Daten, Adressen und Steuersignale zwischen der Host-Vorrichtung 504 und Steuerung 501 zu kommunizieren. Alternativ kann die E/A-Schnittstelle der Steuerung 501 eine Host-Schnittstelle 505 beinhalten und/oder mit dieser kombiniert sein. Die Host-Schnittstelle 505 kann eingerichtet sein, um eine Standardschnittstelle wie etwa Serial Attached SCSI (SAS), Fiber Channel Interface, PCI Express (PCIe), SATA, USB und dergleichen zu implementieren. Die Host-Schnittstelle 505 kann eingerichtet sein, um nur eine Schnittstelle zu implementieren. Alternativ kann Host-Schnittstelle 505 (und/oder die E/A-Schnittstelle von Steuerung 501) eingerichtet sein, um mehrere Schnittstellen zu implementieren, welche durch Verwendung eines Konfigurationsparameters, der von einem Benutzer ausgewählt oder bei der Montage programmiert wurde, individuell wählbar sind. Die Host-Schnittstelle 505 kann einen oder mehrere Puffer zum Zwischenspeichern von Übertragungen zwischen der Hostvorrichtung 504 und Steuerung 501 beinhalten.
  • Ein Flash-Speicher 503 stellt eine nichtflüchtige Speichervorrichtung zum Speichern von Daten dar. Nach Aspekten der vorliegenden Technologie schließt der Flash-Speicher 503 beispielsweise einen NAND-Flash-Speicher ein. Flash-Speicher 503 kann eine einzelne Flash-Speichervorrichtung oder einen einzelnen Chip einschließen oder kann, wie in 5 dargestellt, mehrere Flash-Speichervorrichtungen oder Chips einschließen, die in mehreren Kanälen angeordnet sind. Flash-Speicher 503 ist nicht auf irgendeine bestimmte Kapazität oder Konfiguration beschränkt. Zum Beispiel können die Anzahl physischer Blöcke, die Anzahl physischer Seiten pro physischem Block, die Anzahl von Sektoren pro physischer Seite und die Größe der Sektoren innerhalb des Umfangs der vorliegenden Technologie variieren.
  • Der Flash-Speicher kann eine Standard-Schnittstellenspezifikation aufweisen, so dass Chips von mehreren Herstellern austauschbar (zumindest zu einem großen Grad) verwendet werden können. Die Schnittstelle verbirgt die interne Arbeitsweise des Flash und gibt nur intern erkannten Bitwert für Daten zurück. In einigen Aspekten wird die Schnittstelle des Flash-Speichers 503 dazu verwendet, um auf ein oder mehrere interne Register 506 und eine interne Flash-Steuerung 507 zur Kommunikation durch externe Geräte zuzugreifen. Nach einigen Aspekten können die Register 506 Adress-, Befehls- und/oder Datenregister beinhalten, die intern die notwendigen Daten zu und von einem NAND-Speicherzellen-Array 508 abrufen und ausgeben. Ein Datenregister kann zum Beispiel Daten beinhalten, die in dem Speicher-Array 508 gespeichert werden sollen oder Daten nach einem Abruf aus dem Speicher-Array 508 und kann auch zur temporären Datenspeicherung verwendet werden und/oder wie ein Puffer wirken. Ein Adressenregister kann die Speicheradresse speichern, von der Daten an Host 504 abgerufen werden, oder die Adresse, zu der Daten gesendet und gespeichert werden. Nach einigen Aspekten ist ein Befehlsregister enthalten, um die Parität, die Unterbrechungssteuerung und dergleichen zu steuern. Nach einigen Aspekten ist die interne Flash-Steuerung 507 über ein Steuerregister zugänglich, um das allgemeine Verhalten des Flash-Speichers 503 zu steuern. Die interne Flash-Steuerung 507 und/oder das Steuerregister können die Anzahl von Stoppbits, die Wortlänge und die Empfänger-Taktquelle steuern und können auch das Umschalten des Adressiermodus, der Paging-Steuerung, Coprozessorsteuerung und dergleichen steuern.
  • Nach einigen Aspekten kann Register 506 auch ein Testregister beinhalten. Auf das Testregister kann durch spezifische Adressen und/oder Datenkombinationen zugegriffen werden, die an der Schnittstelle des Flash-Speichers 503 bereitgestellt werden (z. B. durch spezialisierte Software, die vom Hersteller bereitgestellt wird, um verschiedene Tests an den internen Komponenten des Flash-Speichers durchzuführen). Nach weiteren Aspekten kann das Testregister verwendet werden, um andere interne Register, beispielsweise die Befehls - und/oder Steuerregister, aufzurufen und/oder zu modifizieren. Nach einigen Ausführungsformen können Testmodi, auf die über das Testregister zugegriffen werden kann, verwendet werden, um bestimmte Programmierbedingungen des Flash-Speichers 503 (z. B. Lesestufen) einzugeben oder zu modifizieren, um dynamisch zu variieren, wie Daten aus den Speicherzellen der Speicherarrays 508 gelesen werden. Die Register 506 können auch einen oder mehrere Datenzwischenspeicher beinhalten, die mit dem Flash-Speicher 503 gekoppelt sind.
  • Es versteht sich, dass nicht in allen Fällen Daten das Ergebnis eines empfangenen Befehls von Host 504 und/oder der Rücksendung an Host 504 sein können. Nach einigen Aspekten kann Steuerung 501 eingerichtet sein, um eine Leseoperation unabhängig von Host 504 auszuführen (z. B. um Lesestufen oder BER zu verifizieren). Die Prädikatswörter „eingerichtet, um“, „betreibbar, um“ und „programmiert, um“, wie hier verwendet, implizieren keine spezielle materielle oder immaterielle Modifikation eines Subjekts, sondern sollen stattdessen austauschbar verwendet werden. Zum Beispiel kann ein Prozessor, der eingerichtet ist, um eine Operation oder eine Komponente zu überwachen, auch bedeuten, dass der Prozessor so programmiert ist, die Operation zu überwachen und zu steuern, oder der Prozessor betreibbar ist, die Operation zu überwachen und zu steuern. Ebenfalls kann ein Prozessor, der eingerichtet ist, um Code auszuführen, als ein Prozessor ausgelegt sein, der programmiert ist, um Code auszuführen oder betreibbar ist, um Code auszuführen.
  • Die Steuerung 501 kann die in den Blöcken 311-316 und 411-414 angegebenen Vorgänge durchführen. Die Steuerung 501 kann bewirken, dass die in den Blöcken 311-316 und 411-414 angegebenen Vorgänge auftreten, oder die Steuerung 501 kann Anweisungen bereitstellen, um die Steuerung 507 (und Register 506) zu veranlassen oder es ihnen zu erleichtern, Vorgänge durchzuführen, die in den Blöcken 311-316 und 411-414 angegeben wurden.
  • Verschiedene Beispiele von Aspekten der Offenbarung werden nachfolgend beschrieben. Diese dienen als Beispiele und schränken die vorliegende Technologie nicht ein.
  • Ein oder mehrere Gesichtspunkte der gegenständlichen Technologie stellen eine Datenspeichervorrichtung bereit, die einen ersten Datenspeicher, der einen ersten Typ von Flash-Speicher umfasst, einen zweiten Datenspeicher, der einen zweiten Typ von Flash-Speicher umfasst, der eine niedrigere Latenz als der erste Typ von Flash-Speicher aufweist, einen dritten Speicher und eine Steuerung einschließen kann. Die Steuerung kann eingerichtet sein, um eine Anforderung zum Bestimmen einer Zuordnung logisch zu physisch (L2P) eines Schreibvorgangs, der auf eine logische Adresse gerichtet ist, zu empfangen. Die Steuerung kann auch eingerichtet sein, um die L2P-Zuordnung der logischen Adresse zu einer physischen Adresse in dem ersten Datenspeicher zu bestimmen. Die Steuerung kann auch eingerichtet sein, um zu bestimmen, dass der Schreibvorgang in dem ersten Speicher eingespeichert wurde. Die Steuerung kann auch eingerichtet sein, um einen Dateneintrag, der die L2P-Zuordnung umfasst, zu einer offenen Protokollstruktur einer Vielzahl von Protokollstrukturen in dem dritten Datenspeicher hinzuzufügen. Die Steuerung kann auch eingerichtet sein, um einen Protokolleintrag, der die L2P-Zuordnung umfasst, zu einem Puffer in dem dritten Datenspeicher hinzuzufügen. Die Steuerung kann auch eingerichtet sein, um den Puffer als Reaktion auf ein Bestimmen, dass der Puffer einen Größenschwellenwert erfüllt hat, in ein erstes Protokoll in dem zweiten Datenspeicher zu leeren.
  • In anderen Gesichtspunkten werden Verfahren zur Tabellenverwaltung logisch zu physisch (L2P) unter Verwendung von NVM mit niedriger Latenz bereitgestellt, um einen Platzbedarf von Speicher mit wahlfreiem Zugriff (RAM) als Solid-State-Laufwerk (SSD) zu reduzieren. Gemäß manchen Gesichtspunkten kann ein Verfahren ein Empfangen einer Anforderung zum Bestimmen einer Zuordnung logisch zu physisch (L2P) eines Schreibvorgangs, der auf eine logische Adresse gerichtet ist, einschließen. Das Verfahren kann auch ein Bestimmen der L2P-Zuordnung der logischen Adresse zu einer physischen Adresse in einem ersten Datenspeicher einschließen, der einen ersten Typ von Flash-Speicher umfasst. Das Verfahren kann auch ein Bestimmen einschließen, dass der Schreibvorgang in dem ersten Speicher eingespeichert wurde. Das Verfahren kann auch ein Hinzufügen eines Dateneintrags, der die L2P-Zuordnung umfasst, zu einer offenen Protokollstruktur einer Vielzahl von Protokollstrukturen in einem dritten Datenspeicher umfassen. Das Verfahren kann auch ein Hinzufügen eines Protokolleintrags, der die L2P-Zuordnung umfasst, zu einem Puffer in dem dritten Datenspeicher einschließen. Das Verfahren kann auch ein Leeren des Puffers in ein erstes Protokoll in einem zweiten Datenspeicher als Reaktion auf ein Bestimmen einschließen, dass der Puffer einen Größenschwellenwert erfüllt hat, wobei der zweite Datenspeicher einen zweiten Typ von Flash-Speicher mit niedrigerer Latenz als der erste Typ von Flash-Speicher umfasst, wobei jede von der Vielzahl von Protokollstrukturen eingerichtet sind, um bis zu einer vorbestimmten Anzahl von Einträgen zu speichern, die 1/8 oder weniger als ein maximaler logischer Seitenindex (LPI) für den ersten Datenspeicher beträgt.
  • In weiteren Gesichtspunkten kann ein System Mittel zum Empfangen einer Anforderung zum Bestimmen einer Zuordnung logisch zu physisch (L2P) eines Schreibvorgangs, der auf eine logische Adresse gerichtet ist, einschließen. Das System kann auch Mittel zum Bestimmen der L2P-Zuordnung der logischen Adresse zu einer physischen Adresse in einem ersten Datenspeicher einschließen, der einen ersten Typ von Flash-Speicher umfasst. Das System kann auch Mittel zum Bestimmen einschließen, dass der Schreibvorgang in den ersten Datenspeicher eingespeichert wurde. Das System kann auch Mittel zum Hinzufügen eines die L2P-Zuordnung umfassenden Dateneintrags zu einer offenen Protokollstruktur einer Vielzahl von Protokollstrukturen in einem dritten Datenspeicher einschließen, wobei der dritte Datenspeicher ein flüchtiger Speicher mit einer niedrigeren Latenz als ein zweiter Datenspeicher ist. Das System kann auch Mittel zum Hinzufügen eines Protokolleintrags, der die L2P-Zuordnung umfasst, zu einem Puffer in dem dritten Datenspeicher einschließen. Das System kann auch Mittel zum Leeren des Puffers in ein erstes Protokoll in dem zweiten Datenspeicher als Reaktion auf ein Bestimmen, dass der Puffer eine physische Seitengröße des zweiten Datenspeichers erfüllt hat, einschließen, wobei der zweite Datenspeicher einen zweiten Typ von Flash-Speicher mit einer niedrigeren Latenz als der erste Typ von Flash-Speicher umfasst.
  • Verschiedene Implementierungen der Verfahren und Systeme zum Bereitstellen einer Tabellenverwaltung logisch zu physisch (L2P) unter Verwendung eines NVM mit niedriger Latenz, um einen Platzbedarf von Speicher mit wahlfreiem Zugriff (RAM) als Solid-State-Laufwerk (SSD) zu reduzieren, stellen mehrere Leistungsvorteile bereit, welche das Funktionieren der Datenspeichervorrichtung oder SSD verbessern. Ein Host-Computer, der mit der Datenspeichervorrichtung über eine Schnittstelle verbunden ist, wird ebenfalls mit verbessertem Funktionieren bereitgestellt, indem die Datenspeichervorrichtung mit höherer Leistung und Datenspeicherkapazität betrieben wird. Somit stellen die beschriebenen Verfahren und Systeme Leistungsvorteile bereit, die das Funktionieren einer Datenspeichervorrichtung und eines Host-Computers verbessern.
  • Es versteht sich, dass andere Konfigurationen der vorliegenden Technologie für Fachleute aus der folgenden detaillierten Beschreibung leicht ersichtlich werden, wobei verschiedene Konfigurationen der vorliegenden Technologie zur Veranschaulichung gezeigt und beschrieben werden. Es ist einleuchtend, dass die vorliegende Technologie andere und unterschiedliche Konfigurationen ermöglicht, und dass ihre verschiedenen Details in verschiedener anderer Hinsicht modifiziert werden können, ohne vom Umfang der vorliegenden Technologie abzuweichen. Dementsprechend sind die Zeichnungen und die detaillierte Beschreibung als veranschaulichend und nicht als einschränkend zu betrachten.
  • Für Fachleute versteht sich, dass veranschaulichende Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen, die hierin beschrieben werden, als elektronische Hardware, Computersoftware oder Kombinationen von beiden implementiert werden können. Um diese Austauschbarkeit von Hardware und Software zu veranschaulichen, wurden verschiedene veranschaulichende Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen vorstehend allgemein hinsichtlich ihrer Funktionalität beschrieben. Ob eine derartige Funktionalität als Hardware oder Software implementiert ist, hängt von der spezifischen Anwendung und Designeinschränkungen ab, denen das Gesamtsystem unterliegt. Fachleute können die beschriebene Funktionalität auf verschiedene Arten für jede bestimmte Anwendung implementieren. Verschiedene Komponenten und Blöcke können anders angeordnet sein (z. B. in einer anderen Reihenfolge angeordnet oder auf eine andere Weise partitioniert sein), ohne vom Umfang der vorliegenden Technologie abzuweichen.
  • Es versteht sich, dass die spezifische Reihenfolge oder Hierarchie von Schritten in den offenbarten Prozessen eine Veranschaulichung von beispielhaften Ansätzen ist. Basierend auf Designpräferenzen versteht es sich, dass die spezifische Reihenfolge oder Hierarchie von Schritten in den Prozessen anders angeordnet werden kann. Einige der Schritte können gleichzeitig durchgeführt werden. Die beigefügten Verfahrensansprüche stellen Elemente der verschiedenen Schritte in einer beispielhaften Reihenfolge dar und sollen nicht auf die spezielle dargestellte Reihenfolge oder Hierarchie beschränkt sein.
  • Die vorhergehende Beschreibung wird bereitgestellt, um es einem Fachmann zu ermöglichen, die verschiedenen hierin beschriebenen Aspekte in der Praxis umzusetzen. Die vorhergehende Beschreibung stellt verschiedene Beispiele der vorliegenden Technologie bereit, und die vorliegende Technologie ist nicht auf diese Beispiele beschränkt. Verschiedene Modifikationen dieser Aspekte werden dem Fachmann leicht ersichtlich sein, und die hierin definierten generischen Prinzipien können auf andere Aspekte angewendet werden. Daher sollen die Ansprüche nicht auf die hier gezeigten Aspekte beschränkt sein, sondern sollen den vollen Schutzumfang erhalten, der mit den in Sprachform niedergelegten Ansprüchen konsistent ist, wobei die Bezugnahme auf ein Element im Singular nicht „ein und nur ein“ Element bedeuten soll, sofern dies nicht speziell angegeben ist, sondern „ein oder mehrere.“ Sofern nicht spezifisch anders angegeben, bezieht sich der Ausdruck „einige“ auf eine oder mehrere. Pronomen im grammatikalischen Maskulin (z. B. sein) schließen das grammatikalische Feminin und Neutrum (z. B. ihr und sein) ein, und umgekehrt. Überschriften und Unterüberschriften, falls vorhanden, werden nur der Einfachheit halber verwendet und schränken die vorliegende Technologie nicht ein.
  • Ein Ausdruck wie zum Beispiel „ein Aspekt“ bedeutet nicht, dass ein solcher Aspekt für die vorliegende Technologie wesentlich ist oder dass ein derartiger Aspekt für alle Konfigurationen der vorliegenden Technologie gilt. Eine Offenbarung, die sich auf einen Aspekt bezieht, kann auf alle Konfigurationen oder eine oder mehrere Konfigurationen angewendet werden. Ein Aspekt kann ein oder mehrere Beispiele bereitstellen. Ein Ausdruck, wie beispielsweise ein Aspekt, kann sich auf einen oder mehrere Aspekte beziehen und umgekehrt. Ein Ausdruck wie beispielsweise eine „Ausführungsform“ impliziert nicht, dass eine solche Ausführungsform für die vorliegende Technologie wesentlich ist oder dass eine solche Ausführungsform für alle Konfigurationen der vorliegenden Technologie gilt. Eine Offenbarung, die sich auf eine Ausführungsform bezieht, kann für alle Ausführungsformen oder eine oder mehrere Ausführungsformen gelten. Eine Ausführungsform kann ein oder mehrere Beispiele bereitstellen. Ein Ausdruck wie beispielsweise eine „Ausführungsform“ kann sich auf eine oder mehrere Ausführungsform beziehen und umgekehrt. Ein Ausdruck wie beispielsweise eine „Konfiguration“ impliziert nicht, dass eine solche Konfiguration für die vorliegende Technologie wesentlich ist oder dass eine solche Konfiguration für alle Konfigurationen der vorliegenden Technologie gilt. Eine Offenbarung, die sich auf eine Konfiguration bezieht, kann auf alle Konfigurationen oder eine oder mehrere Konfigurationen angewendet werden. Eine Konfiguration kann ein oder mehrere Beispiele bereitstellen. Ein Ausdruck, wie z. B. eine „Konfiguration“, kann sich auf eine oder mehrere Konfigurationen beziehen und umgekehrt.
  • Das Wort „beispielhaft“ wird in diesem Dokument in der Bedeutung „als Beispiel oder zur Veranschaulichung dienend“ verwendet. Jeder Aspekt oder jedes Design, der bzw. das hier als „beispielhaft“ beschrieben wird, ist nicht zwangsläufig als bevorzugt oder vorteilhaft gegenüber anderen Aspekten oder Designs zu verstehen.
  • Alle strukturellen und funktionalen Äquivalente zu den Elementen der verschiedenen Aspekte, die in dieser Offenbarung beschrieben sind, die Fachleuten bekannt sind oder später bekannt werden, werden hiermit ausdrücklich durch Bezugnahme aufgenommen und sollen in den Ansprüchen eingeschlossen sein. Darüber hinaus soll nichts hierin Offenbartes der Öffentlichkeit gewidmet sein, ungeachtet dessen, ob eine solche Offenbarung in den Ansprüchen ausdrücklich erwähnt wird. Kein Anspruchselement ist gemäß den Bestimmungen von 35 U.S.C. §112, Absatz sechs, zu verstehen, sofern das Element nicht explizit unter Verwendung des Ausdrucks „Mittel für“ oder im Falle eines Verfahrensanspruchs des Ausdrucks „Schritt für“ erwähnt wird. Sofern die Ausdrücke „einschließen“, „haben“ oder dergleichen in der Beschreibung oder den Ansprüchen verwendet werden, soll ein solcher Begriff ähnliche Begriffe wie etwa „aufweisen“ beinhalten, wenn „aufweisen“ bei der Verwendung als Übergangswort in einem Anspruch ausgelegt wird.

Claims (20)

  1. Ein Datenspeichersystem, aufweisend: einen ersten Datenspeicher; einen zweiten Datenspeicher mit einer niedrigeren Latenz als der erste Datenspeicher; einen dritten Datenspeicher; und eine Steuerung, die eingerichtet ist, um: eine logische zu physikalische (L2P) Zuordnung einer logischen Adresse zu einer physischen Adresse in dem ersten Datenspeicher für einen Vorgang zu bestimmen, der auf die logische Adresse gerichtet ist; einen Dateneintrag, der die L2P-Zuordnung umfasst, zu dem dritten Datenspeicher hinzuzufügen; einen Protokolleintrag, der die L2P-Zuordnung umfasst, zu einem Puffer in dem dritten Datenspeicher hinzuzufügen; und den Puffer in den zweiten Datenspeicher zu leeren als Reaktion auf ein Bestimmen, dass der Puffer einen Größenschwellenwert erfüllt hat.
  2. Datenspeichervorrichtung nach Anspruch 1, wobei der erste Datenspeicher einen ersten Typ von Flash-Speicher umfasst, der zweite Datenspeicher einen zweiten Typ von Flash-Speicher umfasst und der dritte Datenspeicher einen flüchtigen Speicher mit niedrigerer Latenz als der zweite Datenspeicher umfasst.
  3. Datenspeichervorrichtung nach Anspruch 1, wobei der Vorgang ein Schreibvorgang ist, und wobei die Steuerung eingerichtet ist, um den Dateneintrag hinzuzufügen und den Protokolleintrag hinzuzufügen als Reaktion auf ein Bestimmen, dass der Schreibvorgang in den ersten Datenspeicher eingespeichert wurde.
  4. Datenspeichervorrichtung nach Anspruch 3, wobei die Steuerung eingerichtet ist, um den Dateneintrag zu einer offenen Protokollstruktur hinzuzufügen.
  5. Datenspeichervorrichtung nach Anspruch 4, wobei die Steuerung ferner eingerichtet ist, um: eine weitere Anforderung zum Abrufen einer weiteren L2P-Zuordnung eines Lesevorgangs zu empfangen, der auf eine andere logische Adresse gerichtet ist; eine oder mehrere Protokollstrukturen, einschließlich der offenen Protokollstruktur, nach der anderen L2P-Zuordnung zu durchsuchen; die weitere L2P-Zuordnung aus einem ersten Snapshot in dem zweiten Datenspeicher abzurufen, wenn ein Ergebnis der Suche leer ist; und zu veranlassen, dass der Lesevorgang eingeleitet wird, wie durch die andere L2P-Zuordnung angegeben.
  6. Datenspeichervorrichtung nach Anspruch 5, wobei die Steuerung eingerichtet ist, um einen Cacheeintragbaum (CET) nach einer Cacheadresse zu durchsuchen, die der L2P-Zuordnung entspricht.
  7. Datenspeichervorrichtung nach Anspruch 4, wobei die Steuerung ferner eingerichtet ist, um: die offene Protokollstruktur in eine geschlossene Protokollstruktur umzuwandeln als Reaktion auf ein Bestimmen, dass die offene Protokollstruktur voll ist; einen ersten Snapshot, der einer L2P-Tabelle des ersten Datenspeichers entspricht, die mit einem ersten Zeitpunkt konsistent ist, aus einem ersten Ort in dem zweiten Datenspeicher zu lesen; den ersten Snapshot mit der geschlossenen Protokollstruktur zusammenzuführen, um einen zweiten Snapshot zu erzeugen, der einer L2P-Tabelle des ersten Datenspeichers entspricht, der mit einem zweiten Zeitpunkt nach dem ersten Zeitpunkt konsistent ist; und den zweiten Snapshot an einem zweiten Ort in dem zweiten Datenspeicher zu speichern, wobei der zweite Ort von dem ersten Ort verschieden ist.
  8. Datenspeichervorrichtung nach Anspruch 4, wobei die Steuerung ferner eingerichtet ist, um: zu bestimmen, dass ein Stromausfall aufgetreten ist und die Datenspeichervorrichtung in einem Offline-Modus neu gestartet hat; eine Vielzahl von Protokollstrukturen, einschließlich der offenen Protokollstruktur, in dem dritten Datenspeicher basierend auf einem Analysieren eines ersten Protokolls in dem zweiten Datenspeicher neu aufzubauen; den Puffer aus einer in einem nichtflüchtigen Speicher gespeicherten Kopie als Reaktion auf den Stromausfall wiederherzustellen; und die Datenspeichervorrichtung in einen Online-Modus umzuschalten.
  9. Datenspeichervorrichtung nach Anspruch 8, wobei die Vielzahl von Protokollstrukturen eine geschlossene Protokollstruktur einschließt, und wobei die Steuerung eingerichtet ist, um die geschlossene Protokollstruktur basierend auf einem Analysieren eines zweiten Protokolls in dem zweiten Datenspeicher wieder aufzubauen.
  10. Datenspeichervorrichtung nach Anspruch 8, wobei jede von der Vielzahl von Protokollstrukturen eingerichtet ist, um bis zu einer vorbestimmten Anzahl von Einträgen zu speichern, die 1/8 oder weniger als ein maximaler logischer Se(LPI) für den ersten Datenspeicher betragen.
  11. Datenspeichervorrichtung nach Anspruch 1, wobei der Größenschwellenwert einer physischen Seitengröße des zweiten Datenspeichers entspricht.
  12. Verfahren, das unter Verwendung von einer oder mehreren Steuerungen für eine oder mehrere Datenspeichervorrichtungen implementiert wird, wobei das Verfahren umfasst: Bestimmen einer logischen zu physikalischen (L2P) Zuordnung einer logischen Adresse zu einer physischen Adresse in einem ersten Datenspeicher für einen Vorgang, der auf die logische Adresse gerichtet ist; Hinzufügen eines Dateneintrags, der die L2P-Zuordnung umfasst, zu einer offenen Protokollstruktur in einem dritten Datenspeicher; Hinzufügen eines Protokolleintrags, der die L2P Zuordnung umfasst, zu einem Puffer in dem dritten Datenspeicher; und Leeren des Puffers in einen zweiten Datenspeicher als Reaktion auf ein Bestimmen, dass der Puffer einen Größenschwellenwert erfüllt hat, wobei der zweite Datenspeicher eine geringere Latenz als der erste Datenspeicher aufweist; wobei die offene Protokollstruktur eingerichtet ist, um bis zu einer vorbestimmten Anzahl von Einträgen zu speichern, die 1/8 oder weniger als ein maximaler logischer Seitenindex (LPI) für den ersten Datenspeicher betragen.
  13. Verfahren nach Anspruch 12, wobei der erste Datenspeicher einen ersten Typ von Flash-Speicher umfasst, der zweite Datenspeicher einen zweiten Typ von Flash-Speicher umfasst und der dritte Datenspeicher einen flüchtigen Speicher mit niedrigerer Latenz als der zweite Datenspeicher umfasst.
  14. Verfahren nach Anspruch 12, wobei der Vorgang ein Schreibvorgang ist, und wobei die Steuerung eingerichtet ist, um den Dateneintrag hinzuzufügen und den Protokolleintrag hinzuzufügen als Reaktion auf ein Bestimmen, dass der Schreibvorgang in den ersten Datenspeicher eingespeichert wurde.
  15. Verfahren nach Anspruch 12, ferner umfassend: Empfangen einer weiteren Anforderung zum Abrufen einer weiteren L2P-Zuordnung eines Lesevorgangs, der auf eine andere logische Adresse gerichtet ist; Durchsuchen einer oder mehrerer Protokollstrukturen, einschließlich der offenen Protokollstruktur, nach der anderen L2P-Zuordnung; Abrufen der weiteren L2P-Zuordnung aus einem ersten Snapshot in dem zweiten Datenspeicher abzurufen, wenn ein Ergebnis der Suche leer ist; und Bewirken, dass die Lesevorgang eingeleitet wird, wie durch die andere L2P-Zuordnung angegeben.
  16. Verfahren nach Anspruch 15, wobei das Durchsuchen ein Durchsuchen einesCacheeintragbaums (CET) nach einer Cacheadresse umfasst, die der L2P-Zuordnung entspricht.
  17. Verfahren nach Anspruch 12, ferner umfassend: Umwandeln der offenen Protokollstruktur in eine geschlossene Protokollstruktur als Reaktion auf ein Bestimmen, dass die offene Protokollstruktur voll ist; Lesen eines ersten Snapshot, der einer L2P-Tabelle des ersten Datenspeichers entspricht, die mit einem ersten Zeitpunkt konsistent ist, aus einem ersten Ort in dem zweiten Datenspeicher; Zusammenführen des ersten Snapshot mit der geschlossenen Protokollstruktur, um einen zweiten Snapshot zu erzeugen, der einer L2P-Tabelle des ersten Datenspeichers entspricht, die mit einem zweiten Zeitpunkt nach dem ersten Zeitpunkt konsistent ist; und Schreiben des zweiten Snapshot an einem zweiten Ort in dem zweiten Datenspeicher, wobei der zweite Ort von dem ersten Ort verschieden ist.
  18. Verfahren nach Anspruch 12, wobei die Steuerung ferner eingerichtet ist, um: zu bestimmen, dass ein Stromausfall aufgetreten ist und die eine oder mehreren Datenspeichervorrichtungen in einem Offline-Modus neu gestartet sind; eine Vielzahl von Protokollstrukturen, einschließlich der offenen Protokollstruktur, in dem dritten Datenspeicher basierend auf einem Analysieren eines ersten Protokolls in dem zweiten Datenspeicher neu aufzubauen; den Puffer aus einer in einem nichtflüchtigen Speicher gespeicherten Kopie als Reaktion auf den Stromausfall wiederherzustellen; und die eine oder mehreren Datenspeichervorrichtungen in einen Online-Modus umzuschalten.
  19. System, das aufweist: Mittel zum Bestimmen einer logischen zu physikalischen (L2P) Zuordnung einer logischen Adresse zu einer physischen Adresse in einem ersten Datenspeicher für einen Vorgang, der auf die logische Adresse gerichtet ist; Mittel zum Hinzufügen eines Dateneintrags, der die L2P-Zuordnung umfasst, zu einer offenen Protokollstruktur in einem dritten Datenspeicher; Mittel zum Hinzufügen eines Protokolleintrags, der die L2P Zuordnung umfasst, zu einem Puffer in dem dritten Datenspeicher; und Mittel zum Leeren des Puffers in ein erstes Protokoll eines zweiten Datenspeichers als Reaktion auf ein Bestimmen, dass der Puffer einen Größenschwellenwert erfüllt hat, wobei der zweite Datenspeicher eine geringere Latenz als der erste Datenspeicher aufweist.
  20. System nach Anspruch 19, ferner umfassend: Mittel zum Umwandeln der offenen Protokollstruktur in eine geschlossene Protokollstruktur als Reaktion auf ein Bestimmen, dass die offene Protokollstruktur voll ist; Mittel zum Lesen eines ersten Snapshot, der einer L2P-Tabelle des ersten Datenspeichers entspricht, die mit einem ersten Zeitpunkt konsistent ist, aus einem ersten Ort in dem zweiten Datenspeicher; Mittel zum Zusammenführen des ersten Snapshot mit der geschlossenen Protokollstruktur, um einen zweiten Snapshot zu erzeugen, der einer L2P-Tabelle des ersten Datenspeichers entspricht, die mit einem zweiten Zeitpunkt nach dem ersten Zeitpunkt konsistent ist; und Mittel zum Schreiben des zweiten Snapshot an einem zweiten Ort in dem zweiten Datenspeicher, wobei der zweite Ort von dem ersten Ort verschieden ist.
DE102019132371.1A 2019-01-24 2019-11-28 Zuordnungsverwaltung logisch zu physisch unter Verwendung von nichtflüchtigem Speicher Pending DE102019132371A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/256,994 US11301369B2 (en) 2019-01-24 2019-01-24 Logical to physical mapping management using low-latency non-volatile memory
US16/256,994 2019-01-24

Publications (1)

Publication Number Publication Date
DE102019132371A1 true DE102019132371A1 (de) 2020-07-30

Family

ID=71524149

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019132371.1A Pending DE102019132371A1 (de) 2019-01-24 2019-11-28 Zuordnungsverwaltung logisch zu physisch unter Verwendung von nichtflüchtigem Speicher

Country Status (3)

Country Link
US (2) US11301369B2 (de)
CN (1) CN111475427B (de)
DE (1) DE102019132371A1 (de)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019222958A1 (en) 2018-05-24 2019-11-28 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
WO2020000136A1 (en) 2018-06-25 2020-01-02 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of i/o requests
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
TWI697779B (zh) * 2019-02-20 2020-07-01 慧榮科技股份有限公司 資料儲存裝置與資料處理方法
GB2582638B (en) * 2019-03-29 2021-10-06 Kigen Uk Ltd An apparatus, method and computer program for managing memory page updates within non-volatile memory
US10990323B2 (en) * 2019-05-28 2021-04-27 Silicon Motion, Inc. Flash memory controller, memory device and method for accessing flash memory module
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
KR20210068699A (ko) 2019-12-02 2021-06-10 삼성전자주식회사 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US11379447B2 (en) 2020-02-06 2022-07-05 Alibaba Group Holding Limited Method and system for enhancing IOPS of a hard disk drive system based on storing metadata in host volatile memory and data in non-volatile memory using a shared controller
US11449386B2 (en) 2020-03-20 2022-09-20 Alibaba Group Holding Limited Method and system for optimizing persistent memory on data retention, endurance, and performance for host memory
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11354233B2 (en) * 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
US11379141B2 (en) 2020-07-31 2022-07-05 Kioxia Corporation SSD supporting read-only mode after PLP backup failure
US11385819B2 (en) * 2020-08-17 2022-07-12 Micron Technology, Inc. Separate partition for buffer and snapshot memory
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
CN112084070B (zh) * 2020-09-21 2024-04-26 深圳佰维存储科技股份有限公司 L2p映射数据恢复方法、装置、存储介质及电子设备
US11379367B2 (en) * 2020-11-19 2022-07-05 Micron Technology, Inc. Enhancement for activation and deactivation of memory address regions
US11487446B2 (en) * 2020-12-03 2022-11-01 Western Digital Technologies, Inc. Overhead reduction in data transfer protocol for NAND memory
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11714562B2 (en) * 2020-12-15 2023-08-01 Micron Technology, Inc. Journal scheme for two-pass programming memory devices
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11620084B2 (en) 2020-12-30 2023-04-04 Samsung Electronics Co., Ltd. Storage device including memory controller and operating method of memory controller
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
US11983440B2 (en) * 2020-12-30 2024-05-14 Samsung Electronics Co., Ltd. Storage device including memory controller implementing journaling and operating method of the memory controller
JP7472324B2 (ja) 2021-02-08 2024-04-22 長江存儲科技有限責任公司 論理-物理(l2p)テーブルにキャッシュするためのオンダイスタティックランダムアクセスメモリ(sram)
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11947839B2 (en) 2021-05-10 2024-04-02 Samsung Electronics Co., Ltd. Storage device, system, and method for customizable metadata
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage
CN113485948B (zh) * 2021-06-29 2023-11-14 成都忆芯科技有限公司 Nvm坏块管理方法与控制部件
US11747994B2 (en) 2021-08-31 2023-09-05 Micron Technology, Inc. Power loss protection of data in memory devices
US20240193095A1 (en) * 2022-03-17 2024-06-13 Micron Technology, Inc. Sorted change log for physical page table compression
US20230418741A1 (en) * 2022-06-27 2023-12-28 Western Digital Technologies, Inc. Data storage device management system

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8909851B2 (en) * 2011-02-08 2014-12-09 SMART Storage Systems, Inc. Storage control system with change logging mechanism and method of operation thereof
US8756458B2 (en) * 2011-12-12 2014-06-17 Apple Inc. Mount-time reconciliation of data availability
US9069657B2 (en) * 2011-12-12 2015-06-30 Apple Inc. LBA bitmap usage
WO2013147841A1 (en) * 2012-03-30 2013-10-03 Intel Corporation Generic address scrambler for memory circuit test engine
US9213633B2 (en) * 2013-04-30 2015-12-15 Seagate Technology Llc Flash translation layer with lower write amplification
US9927985B2 (en) * 2016-02-18 2018-03-27 SK Hynix Inc. Method of dynamic table journaling

Also Published As

Publication number Publication date
US11789860B2 (en) 2023-10-17
US20220206940A1 (en) 2022-06-30
US11301369B2 (en) 2022-04-12
CN111475427B (zh) 2023-06-30
US20200242021A1 (en) 2020-07-30
CN111475427A (zh) 2020-07-31

Similar Documents

Publication Publication Date Title
DE102019132371A1 (de) Zuordnungsverwaltung logisch zu physisch unter Verwendung von nichtflüchtigem Speicher
DE112017002941B4 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE102017113439B4 (de) Abbildungstabellen für Speichervorrichtungen
DE102020106971A1 (de) Datenschreibverwaltung im nichtflüchtigen speicher
DE112020002526B4 (de) Blockmodusumschaltung in datenspeichersystem
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE112011102487B4 (de) Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen
DE112014000254B4 (de) Mehrstufiges Zwischenspeichern und Migrieren in unterschiedlichen Granularitäten
DE69127752T2 (de) System zur freigabe des raumes gelöschter dateien für ein dynamisch abbildendes virtuelles datenspeichersubsystem
DE112014006118B4 (de) Spekulatives Vorab-Holen von in einem Flash-Speicher gespeicherten Daten
DE69702568T2 (de) Mehrstufiges Cache-System für Massenspeichereinrichtung und Verfahren zum Einrichten eines solchen Systems
DE102011086227A1 (de) Adress mapping method, data storage device and user device
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE112019000141T5 (de) System und verfahren zur vorhersage von mehrfachlesebefehlen, die auf nicht sequentielle daten gerichtet sind
DE102008036822A1 (de) Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE102017104150A1 (de) Abnutzungsausgleich in Speichervorrichtungen
DE202010017613U1 (de) Datenspeichervorrichtung mit host-gesteuerter Speicherbereinigung
DE112019005511T5 (de) Halten von schreibbefehlen in gezonten namensräumen
DE112012004571T5 (de) Unterstützen von unvollständigen Datensegmenten in Flash-Cache-Speichern
DE112020003290B4 (de) Datenplatzierung in einer schreib-cache-architektur, die eine lesehitze-datenaufteilung unterstützt
DE112020000183T5 (de) Speicherungsklassenspeicherzugriff
DE112017005782T5 (de) Warteschlange für Speichervorgänge

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE

R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US

Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., SAN JOSE, CA, US

R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US

Free format text: FORMER OWNER: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATES DELAWARE), MILPITAS, CA, US