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