-
TECHNISCHES GEBIET
-
Eine oder mehrere hierin beschriebene Ausführungsformen der vorliegenden Offenbarung betreffen einen Speicher, ein Datenverarbeitungssystem, das den Speicher umfasst, und insbesondere eine Vorrichtung und ein Verfahren zum Eingeben oder Ausgeben von Daten in dem Datenverarbeitungssystem unter Verwendung eines in Zonen eingeteilten bzw. zonierten Namensraums.
-
HINTERGRUND
-
Ein Paradigma für eine Computerumgebung hat sich in Richtung Ubiquitäres Computing entwickelt, das einen Zugriff auf Computersysteme praktisch jederzeit und überall ermöglicht. Infolgedessen nimmt die Verwendung tragbarer elektronischer Vorrichtungen (z.B. Mobiltelefone, Digitalkameras, Notebooks) rasch zu. Solche tragbaren elektronischen Vorrichtungen können ein Speichersystem mit zumindest einer Speichervorrichtung, z.B. einem Datenspeichergerät, aufweisen oder umfassen. Das Datenspeichergerät kann als Hauptspeichergerät oder als Zusatzspeichergerät einer tragbaren elektronischen Vorrichtung verwendet werden.
-
Im Gegensatz zu einer Festplatte weisen Datenspeichergeräte, die nichtflüchtige Halbleiterspeicher verwenden, eine verbesserte Stabilität und Haltbarkeit auf, weisen keine mechanischen Antriebsteile (z.B. einen mechanischen Arm) auf und funktionieren mit hohen Datenzugriffsgeschwindigkeiten und relativ geringem Stromverbrauch. Beispiele für diese Arten von Datenspeichergeräten umfassen in nicht einschränkender Weise USB (Universal Serial Bus)-Speichervorrichtungen, Speicherkarten mit verschiedenen Schnittstellen und Solid-State-Laufwerke (Solid State Drives - SSDs).
-
ZUSAMMENFASSUNG
-
Eine Ausführungsform der Offenbarung kann ein Speichersystem, ein Datenverarbeitungssystem und einen Betriebs- bzw. Operationsprozess oder ein Verfahren bereitstellen, die schnell und zuverlässig Daten in einer Speichervorrichtung verarbeiten können, indem sie die Betriebskomplexität und Verschlechterung der Leistung des Speichersystems reduzieren und dadurch die Nutzungseffizienz der Speichervorrichtung verbessern.
-
In einer Ausführungsform kann eine Speichervorrichtung umfassen eine Speichervorrichtung, die zumindest einen Speicherbereich umfasst; und eine Steuerung, die eingerichtet ist, um: Schreibdaten, die von einer externen Vorrichtung eingegeben werden, von Metadaten zu trennen, die mit in der Speichervorrichtung gespeicherten Daten verbunden sind; entweder auf der Grundlage eines Betriebszustands des zumindest einen Speicherbereichs die Schreibdaten in einem Puffer zu speichern, der zum Speichern von Daten eingerichtet ist, um an die Speichervorrichtung übertragen zu werden, oder die Metadaten unabhängig von dem Betriebszustand des zumindest einen Speicherbereichs in dem Puffer zu speichern; und die Schreibdaten oder die Metadaten, die in den Puffer eingegeben sind, an die Speichervorrichtung zu übertragen, um die Schreibdaten oder die Metadaten in der Speichervorrichtung zu speichern.
-
Der zumindest eine Speicherbereich kann einem zonierten Namensraum zugewiesen werden. Das Speichersystem kann ferner eine Fehlerbehandlungsschaltung umfassen, die eingerichtet ist, um beim Auftreten eines Fehlers in dem zumindest einen Speicherbereich den Fehler zu beheben und ein Speichern der übertragenen Metadaten in dem zumindest einen Speicherbereich zu steuern, nachdem der Fehler behoben ist.
-
Die Fehlerbehandlungsschaltung kann in dem zumindest einen Speicherbereich umfasst sein. Der zumindest eine Speicherbereich kann zumindest einen Speicherchip bzw. Speicher-Die umfassen.
-
Die Fehlerbehandlungsschaltung kann in der Steuerung umfasst sein. Der zumindest eine Speicherbereich kann zumindest einen Speicherblock umfassen.
-
Die Steuerung kann eine Flash-Übersetzungsschaltung umfassen, die eingerichtet ist, um den zumindest einen Speicherbereich zu prüfen, in dem die Schreibdaten gespeichert sind, und den Schreibdaten zugeordnete Metadaten zu erzeugen; eine Sperr- bzw. Blockierschaltung, die eingerichtet ist, um zu verhindern, dass die Schreibdaten und die Metadaten an den zumindest einen Speicherbereich übertragen werden, wenn die Fehlerbehandlungsschaltung den in dem zumindest einen Speicherbereich aufgetretenen Fehler erfasst; und eine Metadaten-Bypass-Schaltung, die eingerichtet ist, um zu ermöglichen, dass die Metadaten die Blockierschaltung umgehen, während der Fehler behoben wird.
-
Die Steuerung kann ferner eine Schaltung für anstehende Metadaten bzw. Metadaten-Pending-Schaltung umfassen, die eingerichtet ist, um eine Übertragung der Metadaten von dem Puffer an den zumindest einen Speicherbereich abzuwarten, während die Fehlerbehandlungsschaltung den Fehler in dem zumindest einen Speicherbereich behebt.
-
Die Flash-Übersetzungsschaltung kann ferner eingerichtet sein, um einem ersten Befehl zum Programmieren der Schreibdaten in der Speichervorrichtung und einem zweiten Befehl zum Programmieren der Metadaten in der Speichervorrichtung unterschiedliche Kennungen bzw. Identifikatoren zuzuordnen.
-
Die Steuerung kann eine Flash-Übersetzungsschaltung umfassen, die eingerichtet ist, um den zumindest einen Speicherbereich zu prüfen, in dem die Schreibdaten gespeichert sind, und den Schreibdaten zugeordnete Metadaten zu erzeugen; und eine Metadaten-Bypass-Schaltung, die eingerichtet ist, um zu verhindern, dass die Schreibdaten an den zumindest einen Speicherbereich übertragen werden, und eine Übertragung der Metadaten zu ermöglichen, wenn die Fehlerbehandlungsschaltung den in dem zumindest einen Speicherbereich aufgetretenen Fehler erfasst.
-
Die Steuerung kann ferner eingerichtet sein, um die Speichervorrichtung derart zu steuern, um die Schreibdaten in einem in der Speichervorrichtung umfassten Speicherbereich sequentiell zu programmieren. Der Speicherbereich kann einem zonierten Namensraum zugewiesen werden, der einer logischen Adresse entspricht, die mit den Schreibdaten verbunden ist bzw. in Zusammenhang steht. Der Puffer kann entsprechend einem Speicherchip oder einer Speicherebene mit dem zumindest einen Speicherbereich angeordnet sein.
-
Die Steuerung kann ferner eingerichtet sein, um Metadaten zu erzeugen, die mit den in dem zumindest einen Speicherbereich gespeicherten Schreibdaten verbunden sind, und die Speichervorrichtung zu steuern, um die Metadaten in einem anderen, in der Speichervorrichtung umfassten Speicherbereich zu speichern.
-
In einer anderen Ausführungsform kann ein Verfahren zum Betreiben eines Speichersystems umfassen ein Trennen von Schreibdaten, die von einer externen Vorrichtung eingegeben werden, von Metadaten, die mit Daten verbunden sind, die in einer Speichervorrichtung gespeichert sind, die zumindest einen Speicherbereich umfasst; entweder ein Speichern der Schreibdaten in einem Puffer, der in der Lage ist, Daten zu speichern, die an die Speichervorrichtung übertragen werden sollen, auf der Grundlage eines Betriebszustands des zumindest einen Speicherbereichs, oder ein Speichern der Metadaten in dem Puffer unabhängig von dem Betriebszustand des zumindest einen Speicherbereichs; Übertragen der Schreibdaten oder der Metadaten, die in dem Puffer gespeichert sind, an die Speichervorrichtung; und Programmieren der übertragenen Schreibdaten oder der übertragenen Metadaten in dem zumindest einen Speicherbereich der Speichervorrichtung.
-
Das Verfahren kann ferner umfassen ein Zuweisen des zumindest einen Speicherbereichs für einen zonierten Namensraum, und, wenn ein Fehler in dem zumindest einen Speicherbereich auftritt, ein Beheben des Fehlers, um die übertragenen Metadaten in dem zumindest einen Speicherbereich zu programmieren, nachdem der Fehler behoben ist.
-
Das Speichern entweder der Schreibdaten oder der Metadaten kann umfassen ein Überprüfen des Betriebszustands des zumindest einen Speicherbereichs; ein Verhindern bzw. Blockieren, dass die Schreibdaten und die Metadaten in dem Puffer gespeichert werden, wenn der Fehler in dem zumindest einen Speicherbereich auftritt; und ein Speichern der blockierten Metadaten in dem Puffer, während der Fehler behoben wird.
-
Das Verfahren kann ferner ein Abwarten der Übertragung der blockierten Metadaten aus dem Puffer in den zumindest einen Speicherbereich umfassen, während der Fehler behoben wird.
-
Das Verfahren kann ferner umfassen, dass einem ersten Befehl zum Programmieren der Schreibdaten in der Speichervorrichtung und einem zweiten Befehl zum Programmieren der Metadaten in der Speichervorrichtung unterschiedliche Kennungen zugeordnet werden.
-
Das Verfahren kann ferner ein Erzeugen von Metadaten umfassen, die mit den in dem zumindest einen Bereich gespeicherten Schreibdaten verbunden sind, nachdem der zumindest eine Speicherbereich überprüft wurde.
-
Das Programmieren der übertragenen Schreibdaten kann ein sequentielles Programmieren der übertragenen Schreibdaten in dem zumindest einen Speicherbereich umfassen, der einem zonierten Namensraum zugeordnet ist, der einer mit den Schreibdaten verbundenen logischen Adresse entspricht.
-
Das Verfahren kann ferner ein Erzeugen von Metadaten umfassen, die mit den in dem zumindest einen Speicherbereich gespeicherten Schreibdaten verbunden sind. Die übertragenen Metadaten und die übertragenen Schreibdaten können in verschiedenen in der Speichervorrichtung umfassten Speicherbereichen programmiert werden.
-
In einer anderen Ausführungsform kann ein Speichersystem umfassen eine Speichervorrichtung, die eine Vielzahl von Speicherblöcken oder eine Vielzahl von Speicherchips umfasst; und eine Steuerung, die eingerichtet ist, um: die Vielzahl von Speicherblöcken oder die Vielzahl von Speicherchips einer Vielzahl von Zonen zuzuordnen; Schreibdaten und eine logische Adresse, die mit den Schreibdaten verbunden ist, von einem Host zu empfangen; basierend darauf, ob ein Fehler in dem zumindest einem Speicherblock oder dem zumindest einem Speicherchip auftritt, entweder die Schreibdaten in einem Puffer zu speichern, der zumindest einem Speicherblock oder zumindest einem Speicherchip zugeordnet ist, die einer Zone zugeordnet sind, die der logischen Adresse unter der Vielzahl von Zonen entspricht, oder Metadaten in dem Puffer unabhängig von dem Fehler zu speichern; und um die Schreibdaten oder die Metadaten, die in dem Puffer gespeichert sind, an die Speichervorrichtung zu übertragen; und die Speichervorrichtung zu steuern, um die übertragenen Schreibdaten oder die übertragenen Metadaten in der Vielzahl von Speicherblöcken oder der Vielzahl von Speicherchips zu speichern.
-
Die Steuerung kann die übertragenen Schreibdaten und die übertragenen Metadaten speichern, indem sie die übertragenen Schreibdaten in der Speichervorrichtung auf der Grundlage der logischen Adresse sequentiell programmiert und die übertragenen Metadaten an einem voreingestellten Speicherort in der Speichervorrichtung unabhängig von den Schreibdaten oder der logischen Adresse programmiert.
-
In einer anderen Ausführungsform kann ein Speichersystem umfassen eine Speichervorrichtung, die eine oder mehrere Speichereinheiten umfasst, die gemäß einem zonierten Namensraumschema zugewiesen sind; und eine Steuerung, die eingerichtet ist, um Metadaten für externe Daten zwischenzuspeichern, während sie einen Fehler innerhalb der Speichereinheiten behebt, und die Speichervorrichtung zu steuern, um nach der Behebung die externen Daten und die zwischengespeicherten Metadaten in den Speichereinheiten gemäß dem Schema zu speichern.
-
Figurenliste
-
In der vorliegenden Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, in denen sich in den gesamten Figuren gleiche Bezugszeichen auf gleiche Teile beziehen.
- 1 stellt ein Speichersystem gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
- 2 stellt ein Datenverarbeitungssystem gemäß einer anderen Ausführungsform der vorliegenden Offenbarung dar.
- 3 stellt ein Speichersystem gemäß einer anderen Ausführungsform der vorliegenden Offenbarung dar.
- 4 stellt eine interne Anordnung, die in einer in den 1 bis 3 gezeigten Steuerung umfasst ist, gemäß Ausführungsformen der vorliegenden Offenbarung dar.
- 5 stellt ein Speichersystem, das ein durch mehrere Zonen unterteiltes Namensraumschema unterstützt, gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
- 6 stellt ein Speichersystem, das eine nichtflüchtige Speichervorrichtung umfasst, die einen durch mehrere Zonen unterteilten Namensraum unterstützt, gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
- 7 stellt ein Verfahren zum Betreiben eines Speichersystems gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
- 8 stellt ein erstes Beispiel eines ein Programmbetriebsverfahrens gemäß einem Betriebszustand eines Speicherchips gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
- 9 stellt ein zweites Beispiel des Programmbetriebsverfahrens gemäß dem Betriebszustand des Speicherchips gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
- 10 stellt ein drittes Beispiel des Programmbetriebsverfahrens gemäß dem Betriebszustand des Speicherstempels gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
- 11 stellt ein Programmbetriebsverfahren gemäß einem Indikator, der einem Programmbefehl hinzugefügt ist, gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
- 12 stellt eine Wirkung eines Programmbetriebsverfahrens gemäß einem Betriebszustand eines Speicherchips gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
- 13 stellt ein erstes Beispiel eines Speichersystems gemäß einer anderen Ausführungsform der vorliegenden Offenbarung dar.
- 14 stellt ein zweites Beispiel eines Speichersystems gemäß einer anderen Ausführungsform der vorliegenden Offenbarung dar.
- 15 stellt ein drittes Beispiel eines Speichersystems gemäß einer anderen Ausführungsform der vorliegenden Offenbarung dar.
- 16 stellt ein viertes Beispiel eines Speichersystems gemäß einer anderen Ausführungsform der vorliegenden Offenbarung dar.
- 17 stellt ein fünftes Beispiel eines Speichersystems gemäß einer anderen Ausführungsform der vorliegenden Offenbarung dar.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Verschiedene Ausführungsformen der vorliegenden Offenbarung werden im Folgenden unter Bezugnahme auf die beigefügten Zeichnungen beschrieben. Elemente und Merkmale dieser Offenbarung können jedoch auch anders gebildet oder angeordnet sein, um andere Ausführungsformen zu bilden, die Variationen einer der offenbarten Ausführungsformen sein können.
-
In dieser Offenbarung sollen Bezugnahmen auf verschiedene Merkmale (z.B., Elemente, Strukturen, Module, Komponenten, Schritte, Vorgänge bzw. Operationen, Merkmale usw.), die in „einer einzelnen Ausführungsform“, „Ausführungsbeispiel“, „einer Ausführungsform“, „einer anderen Ausführungsform“, „einigen Ausführungsformen“, „verschiedenen Ausführungsformen“, „anderen Ausführungsformen“, „alternativen Ausführungsformen“ und dergleichen umfasst sind, bedeuten, dass solche Merkmale in einer oder mehreren Ausführungsformen der vorliegenden Offenbarung umfasst sind, aber nicht unbedingt in denselben Ausführungsformen kombiniert werden müssen.
-
In dieser Offenbarung sind die Begriffe „aufweisen“, „aufweisend“, „umfassen“ und „umfassend bzw. einschließlich“ offen formuliert. Wie in den beigefügten Ansprüchen verwendet, spezifizieren diese Begriffe das Vorhandensein der angegebenen Elemente und schließen das Vorhandensein oder Hinzufügen eines oder mehrerer anderer Elemente nicht aus. Die Begriffe in einem Anspruch schließen nicht aus, dass die Vorrichtung zusätzliche Komponenten, z.B. eine Schnittstelleneinheit, Schaltungen usw. umfasst.
-
In dieser Offenbarung können verschiedene Einheiten, Schaltungen bzw. Schaltkreise oder andere Komponenten beschrieben oder beansprucht werden, dass sie „eingerichtet sind, um“ eine Aufgabe oder Aufgaben durchzuführen. In solchen Zusammenhängen wird der Begriff „eingerichtet, um“ verwendet, um die Struktur bzw. den Aufbau zu bezeichnen, indem angegeben wird, dass die Blöcke/Einheiten/Schaltkreise/Komponenten eine Struktur/einen Aufbau (z.B. einen Schaltkreis) umfassen, die/der während eines Betriebs bzw. einer Operation eine oder mehrere Aufgaben durchführt. Als solches kann also gesagt werden, dass der Block/die Einheit/der Schaltkreis/die Komponente derart eingerichtet ist, dass er/sie die Aufgabe auch dann durchführt, wenn der angegebene Block/die Einheit/der Schaltkreis/die Komponente gerade nicht in Betrieb ist, z.B. nicht eingeschaltet oder nicht aktiviert ist. Der Block/die Einheit/der Schaltkreis/die Komponente, der/die mit der Ausdrucksweise „eingerichtet ist, um“ verwendet wird, umfasst Hardware, z.B. Schaltkreise, Speicher, in dem Programmanweisungen gespeichert sind, die zum Realisieren der Operation ausgeführt werden können, usw. Darüber hinaus kann „eingerichtet, um“ eine generische Struktur (z.B. eine generische Schaltung) umfassen, die durch Software und/oder Firmware (z.B. einen FPGA oder einen Allzweckprozessor, der Software ausführt) derart verändert bzw. gesteuert wird, um in einer Art und Weise zu arbeiten, dass sie die fragliche(n) Aufgabe(n) durchführen kann. „Eingerichtet, um“ kann auch ein Anpassen eines Herstellungsverfahrens (z.B. einer Halbleiterfertigungsanlage) umfassen, um Vorrichtungen (z.B. integrierte Schaltungen) herzustellen, die dazu ausgelegt sind, um eine oder mehrere Aufgaben zu realisieren oder durchzuführen.
-
Wie in der Offenbarung verwendet, bezieht sich der Begriff „Schaltung“ oder „Logik“ auf alle der folgenden Punkte: (a) reine Hardware-Schaltkreis-Realisierungen (z.B. Realisierungen in nur analogen und/oder digitalen Schaltkreisen) und (b) Kombinationen von Schaltkreisen und Software (und/oder Firmware), wie z.B. (falls zutreffend): (i) eine Kombination von Prozessor(en) oder (ii) Teile von Prozessor(en)/Software (einschließlich digitaler Signalprozessor(en)), Software und Speicher(n), die zusammenwirken bzw. zusammenarbeiten, um ein Gerät bzw. eine Vorrichtung, wie z.B. ein Mobiltelefon oder einen Server, zum Durchführen verschiedener Funktionen zu veranlassen, und (iii) Schaltungen, wie z.B. Mikroprozessor(en) oder ein Teil eines Mikroprozessors oder eines Teils von Mikroprozessoren, der/die zum Betrieb Software oder Firmware benötigen, selbst wenn die Software oder Firmware nicht physisch vorhanden ist. Diese Definition von „Schaltkreis“ oder „Logik“ gilt für alle Verwendungen dieses Begriffs in dieser Anmeldung, einschließlich in den Ansprüchen. Als weiteres Beispiel umfasst der Begriff „Schaltung“ oder „Logik“, wie er in dieser Anmeldung verwendet wird, auch eine Realisierung lediglich eines Prozessors (oder mehrerer Prozessoren) oder eines Teils eines Prozessors und seiner (oder ihrer) zugehörigen Software und/oder Firmware. Der Begriff „Schaltung“ oder „Logik“ umfasst zum Beispiel auch, falls auf ein bestimmtes Anspruchselement anwendbar, eine integrierte Schaltung für ein Speichergerät.
-
Wie hier verwendet, werden die Begriffe „erster/erste/erstes“, „zweiter/zweite/zweites“, „dritter/dritte/drittes“ usw. als Bezeichnungen für Substantive verwendet, denen die Begriffe vorausgehen, und implizieren keine Art von Ordnung (z.B. räumlich, zeitlich, logisch usw.). Die Begriffe „erster/erste/erstes" und „ zweiter/zweite/zweites" bedeuten nicht notwendigerweise, dass der erste Wert vor dem zweiten Wert geschrieben werden muss. Auch wenn die Begriffe hier zur Kennzeichnung verschiedener Elemente verwendet werden können, sind diese Elemente durch diese Begriffe nicht eingeschränkt. Diese Begriffe werden verwendet, um ein Element von einem anderen Element zu unterscheiden, das ansonsten denselben oder einen ähnlichen Namen aufweist. Zum Beispiel kann ein erster Schaltkreis von einem zweiten Schaltkreis unterschieden werden.
-
Ferner wird der Begriff „auf der Grundlage bzw. basierend auf“ verwendet, um einen oder mehrere Faktoren zu beschreiben, die eine Bestimmung beeinflussen. Dieser Begriff schließt zusätzliche Faktoren, die eine Bestimmung beeinflussen können, nicht aus. Das heißt, eine Bestimmung kann ausschließlich auf diesen Faktoren basieren oder zumindest teilweise auf diesen Faktoren beruhen. Ein Beispiel dafür ist die Formulierung „A auf der Grundlage von B bestimmen“. In diesem Fall ist B zwar ein Faktor, der sich auf die Bestimmung von A auswirkt, doch schließt eine solche Formulierung nicht aus, dass die Bestimmung von A auch auf der Grundlage von C erfolgt. In anderen Fällen kann A allein auf der Grundlage von B bestimmt werden.
-
Dabei kann ein Element von Daten, ein Datenelement, ein Dateneintrag oder ein Eintrag von Daten eine Folge von Bits sein. Das Datenelement kann zum Beispiel den Inhalt einer Datei, einen Abschnitt bzw. Teil der Datei, eine Seite in dem Speicher, ein Objekt in einem objektorientierten Programm, eine digitale Nachricht, ein digitales gescanntes Bild, einen Teil eines Video- oder Audiosignals, Metadaten oder jede andere Einheit umfassen, die durch eine Folge von Bits dargestellt werden kann. Gemäß einer Ausführungsform kann das Datenelement ein diskretes Objekt umfassen. Gemäß einer anderen Ausführungsform kann das Datenelement eine Einheit von Informationen innerhalb eines Übertragungspakets zwischen zwei verschiedenen Komponenten umfassen.
-
Die hier beschriebenen Ausführungsformen stellen eine Vorrichtung und ein Verfahren zum Verbessern einer Dateneingabe-/-ausgabeoperation eines Speichersystems oder eines Datenverarbeitungssystems bereit.
-
Ausführungsformen werden nun unter Bezugnahme auf die beigefügten Zeichnungen beschrieben, in denen gleiche Bezugszeichen auf gleiche Elemente verweisen.
-
1 stellt eine Ausführungsform eines Speichersystems gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
-
Unter Bezugnahme auf 1 kann ein Speichersystem 110 eine Speichervorrichtung 150 und eine Steuerung 130 umfassen. Die Speichervorrichtung 150 und die Steuerung 130 in dem Speichersystem 110 können als physisch voneinander getrennte Komponenten oder Elemente betrachtet werden. Die Speichervorrichtung 150 und die Steuerung 130 können über zumindest einen Datenpfad verbunden sein. Der Datenpfad kann zum Beispiel einen Kanal und/oder einen Weg umfassen.
-
Gemäß einer Ausführungsform können die Speichervorrichtung 150 und die Steuerung 130 funktional getrennte Komponenten oder Elemente sein. Ferner können gemäß einer Ausführungsform die Speichervorrichtung 150 und die Steuerung 130 mit einem einzigen Chip oder einer Vielzahl von Chips realisiert sein. Die Steuerung 130 kann als Antwort auf eine von der externen Vorrichtung eingegebene Anforderung eine Dateneingabe-/- ausgabeoperation durchführen. Wenn die Steuerung 130 beispielsweise eine Leseoperation als Antwort auf eine von einer externen Vorrichtung eingegebene Leseanforderung durchführt, werden Daten, die in einer Vielzahl von nichtflüchtigen, in der Speichervorrichtung 150 umfassten Speicherzellen gespeichert sind, an die Steuerung 130 übertragen.
-
Gemäß einer Ausführungsform kann die Speichervorrichtung 150 eine Vielzahl von Speicherchips bzw. Speicher-Dies 292, 294 umfassen. Der Speicherchip kann zumindest eine Speicherebene umfassen. Der Speicherchip kann als ein Satz von Komponenten verstanden werden, die auf einem physisch unterscheidbaren Substrat realisiert sind. Jeder Speicherchip kann über einen Datenpfad mit der Steuerung 130 verbunden sein. Jeder Speicherchip kann eine Schnittstelle zum Austausch eines Teils von Daten und eines Signals mit der Steuerung 130 umfassen.
-
Zum Beispiel kann die Speichervorrichtung 150 oder jedes der mehreren Speicherchips 292, 294 eine Vielzahl von Speicherebenen umfassen. Gemäß einer Ausführungsform kann die Speicherebene als logische oder physische Partition betrachtet werden, die zumindest einen Speicherblock, eine Treiberschaltung, die in der Lage ist, ein Array mit einer Vielzahl von nichtflüchtigen Speicherzellen zu steuern, und einen Puffer umfasst, der Daten, die in nichtflüchtige Speicherzellen eingegeben oder von diesen ausgegeben werden, vorübergehend speichern kann.
-
Jeder der Speicherchips 292, 294 kann eine Vielzahl von Speicherblöcken 152, 154, 156 umfassen. Der Speicherblock 152, 154, 156 kann als eine Gruppe von nichtflüchtigen Speicherzellen verstanden werden, in denen Daten gemeinsam durch eine einzige Löschoperation entfernt werden. Obwohl nicht dargestellt, kann der Speicherblock eine Seite umfassen, die eine Gruppe von nichtflüchtigen Speicherzellen ist, die während einer einzigen Programmieroperation Daten zusammen speichern oder während einer einzigen Leseoperation Daten zusammen ausgeben. Zum Beispiel kann ein Speicherblock eine Vielzahl von Seiten umfassen. Die interne Anordnung der in 1 gezeigten Speichervorrichtung 150 kann gemäß der Leistung des Speichersystems 110 unterschiedlich sein. Eine Ausführungsform der vorliegenden Offenbarung ist nicht auf die interne Anordnung beschränkt, die in 1 gezeigt ist.
-
Zumindest einige der Vielzahl von Speicherblöcken, die in der Speichervorrichtung 150 umfasst sind, können einem Namensraum zugewiesen werden, der in mehrere Zonen unterteilt ist, was im Folgenden als zonierter Namensraum (ZNS) bezeichnet wird. Gemäß einer Ausführungsform kann die Steuerung 130 alle in der Speichervorrichtung 150 umfassten Speicherblöcke gleichmäßig für jeweilige ZNSs zuweisen. In diesem Fall können mehrere einem bestimmten ZNS zugewiesene Speicherblöcke einen Speicherblock umfassen, der Daten darin speichert (wie beispielsweise ein offener Block oder ein geschlossener Block), und einen leeren Speicherblock, der darin keine Daten speichert (wie beispielsweise ein freier Block).
-
Gemäß einer Ausführungsform kann die Steuerung 130 einem ZNS zumindest einige der in der Speichervorrichtung 150 umfassten Speicherblöcke zuweisen, wobei die zumindest einigen Speicherblöcke einer von dem ZNS benötigten Speicherkapazität entsprechen. Dabei kann sich die Speicherkapazität darauf beziehen, wie viel Speicherplatz die Speichervorrichtung 150 bereitstellt. Ein einem bestimmten ZNS zugewiesener Speicherblock kann gemäß einer Speicherbereinigung (Garbage Collection) freigegeben werden, und ein anderer freier Block kann dem bestimmten ZNS neu zugewiesen werden. Wenn der bestimmte ZNS deaktiviert wird, können zumindest einige Speicherblöcke des deaktivierten ZNS einem ZNS nicht zugewiesen werden. Die Steuerung 130 kann den nicht zugewiesenen Speicherblock für einen bestimmten ZNS bei Bedarf zusätzlich zuweisen, während sie eine Ein-/Ausgabeoperation durchführt oder eine von einer externen Vorrichtung eingegebene Anforderung empfängt.
-
Der ZNS kann sich auf ein Schema unter Verwendung eines Namensraums beziehen, der in eine Vielzahl von Zonen unterteilt ist. Dabei kann der Namensraum als ein logischer Speicherplatz angesehen werden, der innerhalb der Speichervorrichtung 150 formatierbar ist. Der Namensraum kann eine voreingestellte oder einstellbare Speicherkapazität aufweisen. Wenn der ZNS auf das Speichersystem 110 anwendbar ist, können Dateneingabe-/- ausgabeoperationen anders durchgeführt werden als bei einem herkömmlichen nichtflüchtigen Speichersystem, das ein Schema des ZNS nicht unterstützt.
-
Zum Beispiel können Daten (z.B. Host-Daten), die von einer externen Vorrichtung (z.B. einer Host 102, siehe 2 bis 3) übertragen werden, in einem Speicherchip 292, 294 gespeichert werden, der einer bestimmten Zone zugeordnet ist, die einer logischen Adresse der entsprechenden Daten entspricht. Ein Speichersystem 110 oder ein Datenverarbeitungssystem unter Verwendung eines in Zonen eingeteilten Namensraumes (Zoned Namespace - ZNS) kann eine Vielzahl von Zonen erstellen, und in jeder Zone können Daten gespeichert werden, die einer logischen Adresse eines bestimmten Bereichs entsprechen. Das Speichersystem 110 kann jeder Zone zumindest einen Speicherblock oder zumindest eine Speicherebene oder zumindest einen Speicherchip zuweisen. Das Speichersystem 110 kann Host-Daten sequentiell in einer Zone speichern, die gemäß einer logischen Adresse, die den Host-Daten entspricht, zugeordnet werden kann.
-
Das Speichersystem 110, das ein zoniertes Namensraumschema anwendet, kann jeder Zone zumindest einen Speicherchip 292, 294 oder zumindest einen Speicherblock 152, 154, 156, die in der Speichervorrichtung 150 umfasst sind, zuweisen. In einer initialisierten Zone kann ein Schreibzeiger an einer Startposition der initialisierten Zone angeordnet werden. Dabei kann die Startposition der Zone eine Startposition eines Speicherchips, einer Speicherebene oder eines der Zone zugewiesenen Speicherblocks angeben.
-
Wenn Daten in einer Zone der Speichervorrichtung 150 gespeichert werden, kann die Position des Schreibzeigers der Zone automatisch geändert werden. Zum Beispiel kann der Schreibzeiger jeder Zone an eine Stelle bzw. Position verschoben oder geändert werden, die der Anzahl der logischen Adressen (LBAs) von in der Zone gespeicherten Datenelementen entspricht. Zum Beispiel können Datenelemente, die logischen Adressen 1 bis 100 (LBA1 bis LBA100) entsprechen, in der ersten Zone gespeichert werden. Wenn ein Datenelement, das einer fünften logischen Adresse LBA5 entspricht, in der ersten Zone gespeichert wird, kann sich der Schreibzeiger der ersten Zone zu einer nächsten Position bewegen. Wenn Datenelemente, die einer zehnten logischen Adresse LBA10 bis zu einer zwanzigsten logischen Adresse LBA20 entsprechen, in der ersten Zone gespeichert werden, kann sich der Schreibzeiger in der ersten Zone um 11 Positionen bewegen. Datenelemente, die in einem Bereich logischer Adressen zugeordnet sind, der der ersten Zone entspricht, können nacheinander in der ersten Zone gespeichert werden, und der Schreibzeiger kann um die Anzahl der in der ersten Zone gespeicherten Datenelemente verschoben werden. Eine Anwendung unter Verwendung einer Zone kann eine andere logische Adresse verwenden, wenn ein neues Datenelement gespeichert wird, kann an einem durch einen Schreibzeiger angegebenen Speicherort gespeichert werden und kann Zuordnungs- bzw. Abbildungsdaten (oder Metadaten) erzeugen, die eine logische Adresse des neuen Datenelements mit einer physischen Adresse, die den Speicherort angibt, assoziieren bzw. verbinden oder verknüpfen.
-
Das Speichersystem 110, das ein zoniertes Namensraumschema anwendet, kann derart unterstützen, dass mehrere Anwendungsprogramme nacheinander mehrere Datenelemente in mehreren Zonen speichern können, die jedem der mehreren Anwendungsprogramme zugewiesen oder zugeordnet werden. Dabei können mehrere Zonen nicht nur auf der Grundlage eines logischen Raums, sondern auch anhand von nichtflüchtigen Speicherblöcken voneinander unterschieden werden. Dementsprechend können ähnliche Datenelemente gruppiert und zusammen in jeder Zone gespeichert werden. Da die Daten in jeder Zone sequentiell gespeichert und dann in einer Zoneneinheit gelöscht werden, kann kein Datenmüll (Garbage), der ungültige Daten darstellt, entstehen. Daher muss das Speichersystem 110, das das zonierte Namensraumschema anwendet, keine Speicherbereinigung durchführen, und Overheads in dem Speichersystem 110 können reduziert werden.
-
Ferner kann das Speichersystem 110 als Antwort auf eine Anforderung einer externen Vorrichtung eine Zone aus einer Vielzahl von Zonen zurücksetzen. In diesem Fall kann der Schreibzeiger auf die Startposition der zurückgesetzten Zone gesetzt werden. Gemäß einer Ausführungsform kann das Speichersystem 110 als Antwort auf eine Anforderung von einer externen Vorrichtung alle mehreren Zonen (z.B. ein Low-Level-Format) zurücksetzen. In diesem Fall können die Schreibzeiger der mehreren Zonen zurückgesetzt oder initialisiert werden.
-
Unter Bezugnahme auf 1 kann die Steuerung 130 eine Flash-Übersetzungsschicht (Flash Translation Layer - FTL) 240 und ein Eingabe-/Ausgabe-Steuermodul 260 umfassen. Die in der Steuerung 130 umfasste Flash-Übersetzungsschicht (FTL) 240 kann eine Datenverarbeitungsoperation zum Speichern von Daten (z.B. Host-Daten), die von einer externen Vorrichtung (z.B. dem Host 102, siehe 2 bis 3) übertragen wurden, in der Speichervorrichtung 150 durchführen. Da ein von der externen Vorrichtung verwendetes Adressschema (z.B. eine logische Adresse) und ein von dem Speichersystem 110 verwendetes Adressschema (z.B. eine physikalische Adresse) voneinander verschieden sind, kann die Flash-Übersetzungsschicht (FTL) 240 einen Speicherort bestimmen, an dem die Daten in der Speichervorrichtung 150 gespeichert werden. Ferner kann die Flash-Übersetzungsschicht (FTL) 240 Metadaten oder Abbildungsdaten erzeugen, die eine logische Adresse mit einer physikalischen Adresse verbinden. Dabei sind die logische Adresse und die physikalische Adresse voneinander verschieden, aber beide Adressen sind mit denselben Daten verbunden, die in der Speichervorrichtung 150 gespeichert sind.
-
Das Eingabe-/Ausgabe-Steuermodul 260 kann eine Operation zum Speichern von Daten steuern, die von der Flash-Übersetzungsschicht (FTL) 240 in die Speichervorrichtung 150 übertragen werden. Die Speichervorrichtung 150 kann die mehreren Speicherchips 292, 294 oder eine Vielzahl von Ebenen umfassen. Mehrere Dateneingabe-/-ausgabeoperationen der Speichervorrichtung 150 können parallel durchgeführt werden, um die Eingabe-/Ausgabeleistung des Speichersystems 110 zu verbessern. Das Eingabe-/Ausgabe-Steuerungsmodul 260 kann die mehreren Dateneingabe-/Ausgabeoperationen planen, die in den mehreren Speicherchips 292, 294 oder der Vielzahl von Ebenen durchgeführt werden.
-
Gemäß einer Ausführungsform kann das Eingabe/Ausgabe-Steuermodul 260 Operationen gemäß einer Art von Daten, die an die mehreren Speicherchips 292, 294 oder die Vielzahl von Ebenen übertragen werden, unterschiedlich steuern oder planen. Wie oben beschrieben, können Host-Daten, die von dem Host 102 als eine externe Vorrichtung eingegeben werden, sequentiell in einem Speicherbereich gespeichert werden, der einer Zone zugeordnet ist, die logischen Adressen der Host-Daten entspricht. Von dem Speichersystem 110 erzeugte und verwaltete Metadaten zum Steuern interner Operationen, wie z.B. von der Flash-Übersetzungsschicht (FTL) 240 erzeugte Abbildungsdaten, könnten jedoch frei von Einschränkungen wie Host-Daten sein. Zum Beispiel kann das Speichersystem 110 Metadaten an einem voreingestellten Speicherort oder einem beliebigen Speicherort der Speichervorrichtung 150 speichern. Dementsprechend kann das Eingabe-/Ausgabe-Steuermodul 260 eine Datenverarbeitungsoperation unterschiedlich steuern, je nachdem, welche der Host-Daten und Metadaten an die Speichervorrichtung 150 übertragen bzw. übermittelt werden.
-
Gemäß einer Ausführungsform kann das Eingabe-/Ausgabe-Steuerungsmodul 260 in der Steuerung 130 mehrere Puffer umfassen, die den mehreren Speicherchips 292, 294 oder einer Vielzahl von Ebenen entsprechen. Jeder der mehreren Puffer kann eine Datenstruktur wie z.B. eine Warteschlange aufweisen. Das Eingabe/Ausgabe-Steuermodul 260 kann bestimmen, ob die von der Flash-Übersetzungsschicht (FTL) 240 übertragenen Daten in jedem der mehreren Puffern umfasst werden sollen. Die in jedem der mehreren Puffer gespeicherten Daten können sequentiell an die mehreren Speicherchips 292, 294 oder die Vielzahl von Ebenen übertragen werden.
-
Gemäß einer Ausführungsform kann das Eingabe/Ausgabe-Steuermodul 260 in der Speicherschnittstelle 142 umfasst sein, die unter Bezugnahme auf die 2 bis 3 beschrieben ist. In einer anderen Ausführungsform kann das Eingabe/Ausgabe-Steuermodul 260 zwischen der Flash-Übersetzungsschicht (FTL) 240 und der Speicherschnittstelle 142 angeordnet sein, die unter Bezugnahme auf 3 beschrieben sind.
-
Das Speichersystem 110 gemäß einer Ausführungsform der vorliegenden Offenbarung kann eine Dateneingabe-/-ausgabeoperation innerhalb der Speichervorrichtung 150 durchführen, die einen durch Zonen unterteilten Namensraum unterstützt. Das Speichersystem 110 kann Daten (z.B. Host-Daten), die von einer externen Vorrichtung (z.B. dem Host 102, siehe 2 bis 3) eingegeben werden, sequentiell in einem Speicherbereich der Speichervorrichtung 150 speichern, der einer Zone zugewiesen ist, die einer logischen Adresse entspricht. Im Gegensatz zu Host-Daten können die von dem Speichersystem 110 erzeugten Metadaten (z.B. Abbildungsdaten) jedoch an einem beliebigen Speicherort oder an einem voreingestellten Speicherort in der Speichervorrichtung 150 gespeichert werden. In einem Verfahren zum Speichern der Host-Daten und der Metadaten kann das Speichersystem 110 eine Programmieroperation auf der Grundlage eines Betriebszustands bezüglich der Speicherblöcke 152, 154, 156 (siehe in 2) oder der Speicherchips 292, 294, in denen die Host-Daten gespeichert werden sollen, fortsetzen oder in eine Warteschlange stellen, ob ein Fehler in den Speicherblöcken 152, 154, 156 (siehe 2) oder den Speicherchips 292, 294 der Speichervorrichtung 150 auftritt oder ob der Fehler behoben oder korrigiert wird. Andererseits kann das Speichersystem 110 die Metadaten an die Speichervorrichtung 150 übertragen, unabhängig davon, ob ein Fehler in den Speicherblöcken 152, 154, 156 oder den Speicherchips 292, 294, in denen die Metadaten gespeichert werden sollen, aufgetreten ist oder ob der Fehler behoben oder korrigiert wird, so dass die Metadaten in der Speichervorrichtung 150 gespeichert werden könnten.
-
Unter Bezugnahme auf die 1 und 2 kann die Speichervorrichtung 150 ein Programmbeendigungssignal, das einer Programmanforderung entspricht, schneller an die Steuerung 130 übertragen, wenn zumindest einige der Vielzahl von Speicherblöcken 152, 154, 156, die in den Speicherchips 292, 294 umfasst sind, als Schreib-Cache oder Schreibpuffer zum vorübergehenden Speichern von Schreibdaten verwendet werden. Danach können Daten, die vorübergehend in einem Schreib-Cache oder einem Schreibpuffer gespeichert sind, in einen Datenspeicherbereich in einer Leerlaufzeit verschoben werden, wenn keine Dateneingabe-/-ausgabeoperation stattfindet. Ein Speicherort, an dem die Daten gespeichert werden, kann gemäß Dateneigenschaften geändert oder angepasst werden. Wenn in dem Datenspeicherbereich ein Fehler auftritt, können Daten auch vorübergehend in dem Schreib-Cache oder in dem Schreibpuffer gespeichert werden. Da Host-Daten jedoch sequentiell in der Speichervorrichtung 150 gespeichert werden, die einen durch Zonen unterteilten Namensraum unterstützt, ist es notwendig, einen zusätzlichen Schreib-Cache in der Speichervorrichtung 150 zu sichern bzw. zu gewährleisten. Da es in der Speichervorrichtung 150 keinen Schreib-Cache gibt, könnte ein für den Schreib-Cache zugewiesener und verwendeter Speicherbereich eliminiert werden, und der Datenspeicherbereich kann sich vergrößern. In einem Fall, in dem die Speichervorrichtung 150 jedoch keinen Schreib-Cache oder Schreibpuffer umfasst, könnte es schwierig sein, Daten in dem Datenspeicherbereich zu programmieren, wenn ein Fehler im Datenspeicherbereich auftritt. Da jedoch Metadaten, nicht Host-Daten, nicht sequentiell in einer bestimmten Zone programmiert werden müssen, die einer logischen Adresse wie die Host-Daten entspricht, kann die in dem Speichersystem 110 umfasste Steuerung 130 die Metadaten an das Speichervorrichtung 150 übertragen, unabhängig davon, ob ein Fehler in dem Datenspeicherbereich auftritt oder ob der Fehler behoben oder korrigiert wird.
-
Gemäß einer Ausführungsform kann das Speichersystem 110 eine Programmplanung unterschiedlich steuern oder verarbeiten, je nachdem, ob es sich bei den in der Speichervorrichtung 150 programmierten Daten um Host-Daten oder Metadaten handelt. Wenn in einer nichtflüchtigen Speichervorrichtung ein Fehler auftritt, kann die Steuerung als Antwort auf eine Benachrichtigung der nichtflüchtigen Speichervorrichtung eine Übertragung von Daten, die in die nichtflüchtige Speichervorrichtung programmiert werden sollen, unterbrechen oder beenden. Als Antwort auf ein Fehlerereignis kann die Steuerung eine Übertragung der Host-Daten unterbrechen oder stoppen, jedoch eine Übertragung der Metadaten an die nichtflüchtige Speichervorrichtung durchführen.
-
Die Speichervorrichtung 150 kann die mehreren Speicherchips 292, 294 oder mehrere Speicherebenen umfassen, und die Steuerung 130 kann mehrere Puffer wie Warteschlangen umfassen, die jedem der mehreren Speicherchips 292, 294 oder der mehreren Speicherebenen entsprechen. Jeder der mehreren Puffer kann Daten vorübergehend speichern, die an jeden der mehreren Speicherchips 292, 294 oder die mehreren Speicherebenen übertragen werden sollen. Die Steuerung 130 kann Host-Daten zu den mehreren Puffern auf der Grundlage dessen hinzufügen, ob ein Fehler in der Speichervorrichtung 150 auftritt oder ob der Fehler behoben oder korrigiert wird. Im Gegensatz zu Host-Daten kann die Steuerung 130 Metadaten zu den mehreren Puffern hinzufügen, unabhängig davon, ob ein Fehler in der Speichervorrichtung 150 aufgetreten ist oder ob der Fehler behoben oder korrigiert wurde. Nachdem ein in der Speichervorrichtung 150 aufgetretener Fehler behoben oder korrigiert wurde, können die in dem Puffer gespeicherten Host-Daten sequentiell übertragen werden. Dadurch können die Metadaten im Vergleich zu den Host-Daten bevorzugt an die Speichervorrichtung 150 übertragen werden. Die Speichervorrichtung 150 kann die Metadaten an einer voreingestellten Position oder an einer beliebigen Position programmieren. Nachdem der in der Speichervorrichtung 150 aufgetretene Fehler behoben oder korrigiert worden ist, kann die Steuerung 130 nur die Host-Daten unter den in der Speichervorrichtung 150 zu speichernden Daten speichern, und die Host-Daten werden sequentiell übertragen und an Speicherorten gespeichert, die einem durch die Zoneneinheit unterteilten Namensraum entsprechen. Durch diese Operationen kann das Speichersystem 110 eine Verzögerung bei einer Programmieroperation aufgrund eines Fehlers reduzieren oder vermeiden.
-
2 und 3 stellen einige Operationen dar, die von dem Speichersystem 110 gemäß einer oder mehrerer Ausführungsformen der vorliegenden Offenbarung durchgeführt werden können.
-
Unter Bezugnahme auf 2 kann das Datenverarbeitungssystem 100 einen Host 102 umfassen, der mit einem Speichersystem, wie dem Speichersystem 110, verbunden oder gekoppelt ist. Zum Beispiel können der Host 102 und das Speichersystem 110 über einen Datenbus, ein Hostkabel und dergleichen miteinander gekoppelt sein, um eine Datenkommunikation durchzuführen.
-
Das Speichersystem 110 kann eine Speichervorrichtung 150 und eine Steuerung 130 umfassen. Die Speichervorrichtung 150 und die Steuerung 130 in dem Speichersystem 110 können als physisch voneinander getrennte Komponenten oder Elemente betrachtet werden. Die Speichervorrichtung 150 und die Steuerung 130 können über zumindest einen Datenpfad verbunden sein. Der Datenpfad kann zum Beispiel einen Kanal und/oder einen Weg umfassen.
-
Gemäß einer Ausführungsform können die Speichervorrichtung 150 und die Steuerung 130 funktional getrennte Komponenten oder Elemente sein. Ferner können gemäß einer Ausführungsform die Speichervorrichtung 150 und die Steuerung 130 mit einem einzigen Chip oder einer Vielzahl von Chips realisiert sein. Die Steuerung 130 kann als Antwort auf eine von der externen Vorrichtung eingegebene Anforderung eine Dateneingabe-/- ausgabeoperation durchführen. Wenn die Steuerung 130 beispielsweise eine Leseoperation als Antwort auf eine von einer externen Vorrichtung eingegebene Leseanforderung durchführt, werden Daten, die in einer Vielzahl von nichtflüchtigen Speicherzellen gespeichert sind, die in der Speichervorrichtung 150 umfasst sind, an die Steuerung 130 übertragen.
-
Wie in 2 gezeigt, kann die Speichervorrichtung 150 eine Vielzahl von Speicherblöcken 152, 154, 156 umfassen. Der Speicherblock 152, 154, 156 kann als eine Gruppe von nichtflüchtigen Speicherzellen verstanden werden, in denen Daten gemeinsam durch eine einzige Löschoperation entfernt werden. Obwohl nicht dargestellt, kann der Speicherblock 152, 154, 156 eine Seite umfassen, die eine Gruppe von nichtflüchtigen Speicherzellen ist, die während einer einzigen Programmieroperation Daten zusammen speichern oder während einer einzigen Leseoperation Daten zusammen ausgeben. Zum Beispiel kann ein Speicherblock eine Vielzahl von Seiten umfassen.
-
Zum Beispiel kann die Speichervorrichtung 150 eine Vielzahl von Speicherebenen oder eine Vielzahl von Speicherchips umfassen. Gemäß einer Ausführungsform kann die Speicherebene als logische oder physische Partition betrachtet werden, die zumindest einen Speicherblock, eine Treiberschaltung, die in der Lage ist, ein Array mit einer Vielzahl von nichtflüchtigen Speicherzellen zu steuern, und einen Puffer umfasst, der Daten vorübergehend speichern kann, die in nichtflüchtige Speicherzellen eingegeben oder von diesen ausgegeben werden.
-
Außerdem kann gemäß einer Ausführungsform der Speicherchip zumindest eine Speicherebene umfassen. Der Speicherchip kann als ein Satz von Komponenten verstanden werden, die auf einem physisch unterscheidbaren Substrat realisiert sind. Jeder Speicherchip kann über einen Datenpfad mit der Steuerung 130 verbunden sein. Jeder Speicherchip kann eine Schnittstelle zum Austausch von Daten und Signalen mit der Steuerung 130 umfassen.
-
Gemäß einer Ausführungsform kann die Speichervorrichtung 150 zumindest einen Speicherblock 152, 154, 156, zumindest eine Speicherebene oder zumindest einen Speicherchip umfassen. Die interne Anordnung der Speichervorrichtung 150, die in den 1 und 2 gezeigt ist, kann gemäß der Leistung des Speichersystems 110 unterschiedlich sein. Eine Ausführungsform der vorliegenden Offenbarung ist nicht auf die interne Anordnung beschränkt, die in 2 gezeigt ist.
-
Unter Bezugnahme auf 2 kann die Speichervorrichtung 150 eine Spannungsversorgungsschaltung 170 umfassen, die in der Lage ist, dem Speicherblock 152, 154, 156 zumindest eine gewisse Spannung zuzuführen. Die Spannungsversorgungsschaltung 170 kann eine Lesespannung Vrd, eine Programmierspannung Vprog, eine Durchgangsspannung Vpass oder eine Löschspannung Vers einer nichtflüchtigen Speicherzelle zuführen, die in dem Speicherblock umfasst ist. Zum Beispiel kann die Spannungsversorgungsschaltung 170 während einer Leseoperation zum Lesen von Daten, die in der nichtflüchtigen Speicherzelle gespeichert sind, die in dem Speicherblock 152, 154, 156 umfasst ist, die Lesespannung Vrd in eine ausgewählte nichtflüchtige Speicherzelle zuführen. Während der Programmieroperation zum Speichern von Daten in der nichtflüchtigen Speicherzelle, die in dem Speicherblock 152, 154, 156 umfasst ist, kann die Spannungsversorgungsschaltung 170 in eine ausgewählte nichtflüchtige Speicherzelle die Programmspannung Vprog zuführen. Außerdem kann die Spannungsversorgungsschaltung 170 während einer Leseoperation oder einer Programmieroperation, die an der ausgewählten nichtflüchtigen Speicherzelle durchgeführt wird, eine Durchgangsspannung Vpass in eine nicht ausgewählte nichtflüchtige Speicherzelle zuführen. Während der Löschoperation zum Löschen von Daten, die in der nichtflüchtigen Speicherzelle gespeichert sind, die in dem Speicherblock 152, 154, 156 umfasst ist, kann die Spannungsversorgungsschaltung 170 die Löschspannung Vers in den Speicherblock zuführen.
-
Die Speichervorrichtung 150 kann Informationen über verschiedene Spannungen speichern, die an den Speicherblock 152, 154, 156 auf der Grundlage dessen zugeführt werden, welche Operation durchgeführt wird. Wenn beispielsweise eine nichtflüchtige Speicherzelle in dem Speicherblock 152, 154, 156 Multibit-Daten speichern kann, können mehrere Pegel der Lesespannung Vrd zum Erkennen oder Lesen des Multibit-Datenelements erforderlich sein. Die Speichervorrichtung 150 kann eine Tabelle umfassen, die Informationen umfasst, die mehreren Pegeln der Lesespannung Vrd entsprechen, die dem Multibit-Datenelement entsprechen. Zum Beispiel kann die Tabelle in einem Register gespeicherte Vorspannungswerte umfassen, wobei jeder Vorspannungswert einem bestimmten Pegel der Lesespannung Vrd entspricht. Die Anzahl der Vorspannungswerte für die Lesespannung Vrd, die für eine Leseoperation verwendet wird, kann auf einen voreingestellten Bereich begrenzt werden. Außerdem können die Vorspannungswerte quantisiert werden.
-
Der Host 102 kann eine tragbare elektronische Vorrichtung, z.B. ein Mobiltelefon, einen MP3-Player, einen Laptop-Computer usw. oder eine nicht tragbare elektronische Vorrichtung, z.B. ein Desktop-Computer, ein Spielgerät, ein Fernseher, ein Projektor usw., umfassen.
-
Der Host 102 kann zumindest ein Betriebssystem (Operating System - OS) umfassen, das in dem Host 102 durchgeführte Funktionen und Operationen steuern kann. Das Betriebssystem kann eine Interoperabilität zwischen dem Host 102, der operativ mit dem Speichersystem 110 verbunden ist, und einem Benutzer, der Daten im Speichersystem 110 speichern will, gewährleisten. Das Betriebssystem kann Funktionen und Operationen unterstützen, die den Anforderungen des Benutzers entsprechen. Als Beispiel kann das Betriebssystem in nicht einschränkender Weise in ein allgemeines Betriebssystem und ein mobiles Betriebssystem gemäß der Mobilität des Hosts 102 unterteilt werden. Das allgemeine Betriebssystem kann gemäß den Systemanforderungen oder der Benutzerumgebung in ein persönliches Betriebssystem und ein Unternehmensbetriebssystem aufgeteilt werden. Im Vergleich zum persönlichen Betriebssystem können die Unternehmensbetriebssysteme auf die Sicherung und Unterstützung von Hochleistungsrechnern spezialisiert sein.
-
Das mobile Betriebssystem kann Dienste oder Funktionen für die Mobilität unterstützen, z.B. eine Energiesparfunktion. Der Host 102 kann eine Vielzahl von Betriebssystemen umfassen. Der Host 102 kann mehrere Betriebssysteme, die mit dem Speichersystem 110 verbunden sind, entsprechend der Anforderung eines Benutzers ausführen. Der Host 102 kann eine Vielzahl von Befehlen, die den Anforderungen des Benutzers entsprechen, in das Speichersystem 110 übertragen, wodurch Operationen, die der Vielzahl von Befehlen entsprechen, innerhalb des Speichersystems 110 durchgeführt werden.
-
Eine Steuerung 130 in dem Speichersystem 110 kann eine Speichervorrichtung 150 als Antwort auf eine Anforderung oder einen Befehl, die/der von dem Host 102 eingegeben wird, steuern. Zum Beispiel kann die Steuerung 130 eine Leseoperation durchführen, um dem Host 102 aus der Speichervorrichtung 150 gelesene Daten bereitzustellen, und kann eine Schreiboperation (oder eine Programmieroperation) durchführen, um von dem Host 102 eingegebene Daten in der Speichervorrichtung 150 zu speichern. Um Dateneingabe-/- ausgabeoperationen (E/A) durchzuführen, kann die Steuerung 130 interne Operationen zum Lesen von Daten, Programmieren von Daten, Löschen von Daten oder dergleichen steuern und verwalten.
-
Gemäß einer Ausführungsform kann die Steuerung 130 eine Host-Schnittstelle 132, einen Prozessor 134, die Fehlerkorrekturschaltung (Error Correction Circuitry - ECC) 138, eine Energieverwaltungseinheit (Power Management Unit - PMU) 140, eine Speicherschnittstelle 142 und einen Speicher 144 umfassen. Komponenten, die in der Steuerung 130, wie in 2 dargestellt, umfasst sind, können gemäß Strukturen bzw. Aufbauten, Funktionen, der Betriebsleistung oder dergleichen in Bezug auf das Speichersystem 110 variieren.
-
Beispielsweise kann das Speichersystem 110 mit verschiedenen Arten von Speichervorrichtungen realisiert werden, die gemäß einem Protokoll einer Host-Schnittstelle elektrisch mit dem Host 102 gekoppelt werden können. Nicht einschränkende Beispiele für geeignete Speichervorrichtungen umfassen ein Solid-State-Laufwerk (solid State Drive - SSD), eine Multimedia-Karte (MMC), eine embedded MMC (eMMC), eine reduced size (RS-MMC), eine micro-MMC, eine Secure-Digital (SD)-Karte, eine Mini-SD, eine Mikro-SD, ein USB (Universal Serial Bus)-Speichergerät, eine UFS (Universal Flash Storage)-Vorrichtung, eine Compact-Flash (CF)-Karte, eine SM (Smart Media)-Karte, einen Memory-Stick und dergleichen. Gemäß der Realisierung des Speichersystems 110 können Komponenten zur Steuerung 130 hinzugefügt oder weggelassen werden.
-
Der Host 102 und das Speichersystem 110 können jeweils eine Steuerung (Controller) oder eine Schnittstelle zum Übertragen und Empfangen von Signalen, Daten und dergleichen gemäß einem oder mehreren vorgegebenen Protokollen umfassen. Zum Beispiel kann die Host-Schnittstelle 132 in dem Speichersystem 110 eine Vorrichtung umfassen, die in der Lage ist, Signale, Daten und dergleichen an den Host 102 zu übertragen oder Signale, Daten und dergleichen von dem Host 102 zu empfangen.
-
Die in der Steuerung 130 umfasste Host-Schnittstelle 132 kann Signale, Befehle (oder Anforderungen bzw. Anfragen) und/oder von dem Host 102 eingegebene Daten über einen Bus empfangen. Beispielsweise können der Host 102 und das Speichersystem 110 ein Regelwerk oder Verfahren für eine Datenkommunikation oder eine voreingestellte Schnittstelle verwenden, um Daten zwischen ihnen zu übertragen und zu empfangen. Beispiele für Regelwerke oder Verfahren für Datenkommunikationsstandards oder Schnittstellen, die von dem Host 102 und dem Speichersystem 110 zum Senden und Empfangen von Daten unterstützt werden, umfassen Universal Serial Bus (USB), Multi-Media Card (MMC), Parallel Advanced Technology Attachment (PATA), Small Computer System Interface (SCSI), Enhanced Small Disk Interface (ESDI), Integrated Drive Electronics (IDE), Peripheral Component Interconnect Express (PCIe oder PCIe), Serial-attached SCSI (SAS), Serial Advanced Technology Attachment (SATA), Mobile Industry Processor Interface (MIPI), und dergleichen. Gemäß einer Ausführungsform ist die Host-Schnittstelle 132 eine Art von Schicht zum Austauschen von Daten mit dem Host 102 und wird mit einer als Host-Schnittstellenschicht (Host Interface Layer - HIL) bezeichneten Firmware realisiert oder von dieser angesteuert. Gemäß einer Ausführungsform kann die Host-Schnittstelle 132 eine Befehlswarteschlange umfassen.
-
Die Integrated Drive Electronics (IDE) oder Advanced Technology Attachment (ATA) kann als eine der Schnittstellen zum Übertragen Empfangen von Daten verwendet werden und kann beispielsweise ein Kabel mit 40 parallel angeschlossenen Adern bzw. Drähten umfassen, um eine Datenübertragung und einen Datenempfang zwischen dem Host 102 und dem Speichersystem 110 zu unterstützen. Wenn eine Vielzahl von Speichersystemen 110 mit einem einzigen Host 102 verbunden ist, kann die Vielzahl von Speichersystemen 110 unter Verwendung einer Position oder eines Dip-Schalters, mit denen die Vielzahl von Speichersystemen 110 verbunden ist, in einen Master und einen Slave unterteilt werden. Das als Master eingestellte Speichersystem 110 kann als Hauptspeichereinrichtung verwendet werden. Das IDE (ATA) kann z.B. Fast-ATA, ATAPI oder Enhanced IDE (EIDE) umfassen.
-
Eine Serial SATA (Advanced Technology Attachment)-Schnittstelle ist eine Art serielle Datenkommunikationsschnittstelle, die mit verschiedenen ATA-Standards für parallele Datenkommunikationsschnittstellen kompatibel ist, die von IDE (Integrated Drive Electronics) -Vorrichtungen verwendet werden. Die 40 Drähte der IDE-Schnittstelle können bei der SATA-Schnittstelle auf sechs Drähte reduziert werden. Zum Beispiel können 40 parallele Signale für die IDE-Schnittstelle in 6 serielle Signale für die SATA-Schnittstelle umgewandelt werden. Die SATA-Schnittstelle ist aufgrund ihrer schnelleren Datenübertragungs- und - empfangsrate und ihres geringeren Ressourcenverbrauchs in dem Host 102, der für die Datenübertragung und den Datenempfang verwendet wird, weit verbreitet. Die SATA-Schnittstelle kann bis zu 30 externe Vorrichtungen mit einem einzigen Transceiver verbinden, der in dem Host 102 umfasst ist. Darüber hinaus kann die SATA-Schnittstelle Hot-Plugging unterstützen, was es ermöglicht, eine externe Vorrichtung an den Host 102 anzuschließen oder von ihm zu trennen, selbst während eine Datenkommunikation zwischen dem Host 102 und einer anderen Vorrichtung ausgeführt wird. So kann das Speichersystem 110 als eine zusätzliche Vorrichtung angeschlossen oder abgetrennt werden, wie eine Vorrichtung, die von einem universellen seriellen Bus (USB) unterstützt wird, selbst wenn der Host 102 eingeschaltet ist. Bei dem Host 102, der einen eSATA-Anschluss aufweist, kann das Speichersystem 110 beispielsweise wie eine externe Festplatte frei an den Host 102 angeschlossen oder von ihm getrennt werden.
-
Small Computer System Interface (SCSI) ist eine Art serielle Datenkommunikationsschnittstelle, die zum Verbinden eines Computers oder Servers mit anderen peripheren Vorrichtungen verwendet wird. SCSI kann im Vergleich zu anderen Schnittstellen wie IDE und SATA eine hohe Übertragungsgeschwindigkeit bieten. Bei SCSI sind der Host 102 und zumindest eine periphere Vorrichtung (z.B. das Speichersystem 110) in Reihe geschaltet, aber eine Datenübertragung und ein Datenempfang zwischen dem Host 102 und jeder peripheren Vorrichtung können über eine parallele Datenkommunikation durchgeführt werden. Bei SCSI ist es einfach, eine Vorrichtung wie das Speichersystem 110 mit dem Host 102 zu verbinden oder von ihm zu trennen. SCSI kann den Anschluss von 15 weiteren Vorrichtungen an einen einzigen Transceiver unterstützen, der in dem Host 102 umfasst ist.
-
Serial Attached SCSI (SAS) kann als eine serielle Datenkommunikationsversion von SCSI verstanden werden. Bei SAS sind der Host 102 und eine Vielzahl von peripheren Vorrichtungen in Reihe geschaltet, und eine Datenübertragung und ein Datenempfang zwischen dem Host 102 und jeder peripheren Vorrichtung können in einem seriellen Datenkommunikationsschema durchgeführt werden. Das SAS kann eine Verbindung zwischen dem Host 102 und der peripheren Vorrichtung über ein serielles Kabel anstelle eines parallelen Kabels unterstützen, um Geräte unter Verwendung des SAS einfach zu verwalten und die Betriebszuverlässigkeit und Kommunikationsleistung zu erhöhen oder zu verbessern. Das SAS kann Verbindungen von acht externen Vorrichtungen mit einem einzigen, in dem Host 102 umfassten Transceiver unterstützen.
-
Non-volatile memory express (NVMe) ist ein Schnittstellentyp auf der Grundlage zumindest von Peripheral Component Interconnect Express (PCIe), das entwickelt wurde, um die Leistung und Designflexibilität des Hosts 102, von Servern, Computervorrichtungen und dergleichen, die mit dem nichtflüchtigen Speichersystem 110 ausgestattet sind, zu erhöhen. PCIe kann einen Steckplatz bzw. Slot oder ein bestimmtes Kabel zum Verbinden einer Computervorrichtung (z.B. Host 102) und einer peripheren Vorrichtung (z.B. Speichersystem 110) verwenden. Beispielsweise kann PCIe eine Vielzahl von Pins (z.B. 18 Pins, 32 Pins, 49 Pins oder 82 Pins) und zumindest einen Draht (z.B. xl, x4, x8 oder x16) verwenden, um eine Hochgeschwindigkeits-Datenkommunikation über mehrere hundert MB pro Sekunde (z.B. 250 MB/s, 500 MB/s, 984,6250 MB/s oder 1969 MB/s) zu erreichen. Gemäß einer Ausführungsform kann das PCIe-Schema Bandbreiten von zehn bis hunderten von Giga-Bits pro Sekunde erreichen. NVMe kann eine Betriebsgeschwindigkeit des nichtflüchtigen Speichersystems 110, z.B. einer SSD, unterstützen, die schneller ist als die einer Festplatte.
-
Gemäß einer Ausführungsform können der Host 102 und das Speichersystem 110 über einen universellen seriellen Bus (USB) verbunden sein. Der universelle serielle Bus (USB) ist eine Art skalierbare, bei laufendem Betrieb (Hot-Plug-fähige) serielle Plug-and-Play-Schnittstelle, die eine kostengünstige Standardverbindung zwischen dem Host 102 und peripheren Vorrichtungen wie einer Tastatur, einer Maus, einem Joystick, einem Drucker, einem Scanner, einem Speichergerät, einem Modem, einer Videokamera und dergleichen bereitstellen kann. Eine Vielzahl von peripheren Vorrichtungen, wie z.B. das Speichersystem 110, kann an einen einzigen Transceiver gekoppelt werden, der in dem Host 102 umfasst ist.
-
Unter Bezugnahme auf 2 kann die Fehlerkorrekturschaltung 138 Fehlerbits von aus der Speichervorrichtung 150 ausgelesenen Daten korrigieren und kann einen Fehlerkorrekturcode (ECC)-Codierer und einen ECC-Decodierer umfassen. Der ECC-Codierer kann eine Fehlerkorrekturkodierung von Daten durchführen, die in der Speichervorrichtung 150 programmiert werden sollen, um kodierte Daten zu erzeugen, denen ein Paritätsbit hinzugefügt wird, und die kodierten Daten in der Speichervorrichtung 150 speichern. Der ECC-Decodierer kann Fehlerbits erfassen und korrigieren, die in den aus der Speichervorrichtung 150 gelesenen Daten enthalten sind, wenn die Steuerung 130 die in der Speichervorrichtung 150 gespeicherten Daten liest. Zum Beispiel bestimmt die Fehlerkorrekturschaltung 138 nach einem Durchführen einer Fehlerkorrekturdecodierung an den aus der Speichervorrichtung 150 gelesenen Daten, ob die Fehlerkorrekturdecodierung erfolgreich war oder nicht, und gibt auf der Grundlage eines Ergebnisses der Fehlerkorrekturdecodierung ein Anweisungs- bzw. Befehlssignal aus, z.B. ein Korrekturerfolgssignal oder ein Korrekturfehlersignal. Die Fehlerkorrekturschaltung 138 kann ein Paritätsbit verwenden, das während des ECC-Codierungsprozesses für die in der Speichervorrichtung 150 gespeicherten Daten erzeugt worden ist, um die Fehlerbits der gelesenen Daten zu korrigieren. Wenn die Anzahl der Fehlerbits größer oder gleich der Anzahl der korrigierbaren Fehlerbits ist, kann die Fehlerkorrekturschaltung 138 die Fehlerbits möglicherweise nicht korrigieren und stattdessen das Korrekturfehlersignal ausgeben, das einen Fehler beim Korrigieren der Fehlerbits angibt.
-
Gemäß einer Ausführungsform kann die Fehlerkorrekturschaltung 138 eine Fehlerkorrekturoperation auf der Grundlage einer kodierten Modulation durchführen, wie z.B. eines LDPC (Low Density Parity Check)-Codes, eines Bose-Chaudhuri-Hocquenghem (BCH)-Codes, eines Turbocodes, eines Reed-Solomon (RS)-Codes, eines Faltungscodes, eines rekursiven systematischen Codes (RSC), einer Trelliscodierten Modulation (TCM), einer Block-codierten Modulation (BCM) oder dergleichen. Die Fehlerkorrekturschaltung 138 kann alle Schaltungen, Module, Systeme und/oder Vorrichtungen zum Durchführen der Fehlerkorrekturoperation auf der Grundlage zumindest eines der oben beschriebenen Codes umfassen.
-
Beispielsweise kann der ECC-Decoder eine Hard-Decision-Decodierung oder eine Soft-Decision-Decodierung an von der Speichervorrichtung 150 übertragenen Daten durchführen. Die Hard-Decision-Decodierung kann als eines von zwei Verfahren verstanden werden, die allgemein für eine Fehlerkorrektur klassifiziert werden. Die Hard-Decision-Decodierung kann eine Operation des Korrigierens eines Fehlerbits umfassen, indem digitale Daten von „0“ oder „1“ aus einer nichtflüchtigen Speicherzelle in der Speichervorrichtung 150 gelesen werden. Da die Hard-Decision-Decodierung ein binäres Logiksignal verarbeitet, kann die Ausführung oder die Anordnung bzw. Konfiguration der Schaltung/des Algorithmus einfacher und die Verarbeitungsgeschwindigkeit schneller sein als bei der Soft-Decision-Decodierung.
-
Die Soft-Decision-Decodierung kann eine Schwellenspannung einer nichtflüchtigen Speicherzelle in der Speichervorrichtung 150 durch zwei oder mehr quantisierte Werte quantisieren, z.B. Daten mit mehreren Bits bzw. Mehrbitdaten, Näherungswerte, einen Analogwert und dergleichen, um ein Fehlerbit auf der Grundlage der zwei oder mehr quantisierten Werte zu korrigieren. Die Steuerung 130 kann zwei oder mehr Alphabete oder quantisierte Werte von einer Vielzahl von nichtflüchtigen Speicherzellen in der Speichervorrichtung 150 empfangen und dann eine Dekodierung auf der Grundlage von Informationen durchführen, die durch Charakterisieren der quantisierten Werte als eine Kombination von Informationen, wie z.B. bedingte Wahrscheinlichkeit oder Auftretenswahrscheinlichkeit, erzeugt werden.
-
Gemäß einer Ausführungsform kann der ECC-Decoder unter für die Soft-Decision-Decodierung entwickelten Verfahren einen LDPC-GM (Low-Density-Parity-Check- and Generator-Matrix)-Code verwenden. Der Low-Density-Parity-Check (LDPC)-Code verwendet einen Algorithmus, der Datenwerte aus der Speichervorrichtung 150 in mehreren Bits gemäß der Zuverlässigkeit auslesen kann, und nicht nur Daten von 1 oder 0 wie bei der Hard-Decision-Decodierung, und ihn durch einen Nachrichtenaustausch wiederholt, um die Zuverlässigkeit der Werte zu verbessern. Anschließend werden die Werte schließlich als 1 oder 0 bestimmt. Ein Dekodierungsalgorithmus unter Verwendung von LDPC-Codes kann beispielsweise als probabilistische Dekodierung verstanden werden. Bei der Hard-Decision-Decodierung wird ein von einer nichtflüchtigen Speicherzelle ausgegebener Wert als 0 oder 1 dekodiert. Im Vergleich Hard-Decision-Decodierung kann die Soft-Decision-Decodierung in der nichtflüchtigen Speicherzelle gespeicherten Wert auf der Grundlage der stochastischen Information bestimmen. In Bezug auf das Bit-Flipping, das als Fehler in der Speichervorrichtung 150 betrachtet werden kann, kann die Soft-Decision-Decodierung eine verbesserte Wahrscheinlichkeit des Korrigierens des Fehlers und des Wiederherstellens von Daten bereitstellen sowie das Erbringen der Zuverlässigkeit und Stabilität der korrigierten Daten gewährleisten. Der LDPC-GM-Code kann ein Schema aufweisen, bei dem interne LDGM-Codes mit Hochgeschwindigkeits-LDPC-Codes in Reihe verkettet bzw. verknüpft werden können.
-
Gemäß einer Ausführungsform kann der ECC-Decoder z.B. Low-Density-Parity-Check-Faltungscodes (LDPC-CCs) für die Soft-Decodierung verwenden. Die LDPC-CCs können ein Schema aufweisen, das eine lineare Zeitkodierung und eine Pipeline-Dekodierung auf der Grundlage einer variablen Blocklänge und eines Schieberegisters verwendet.
-
Gemäß einer Ausführungsform kann der ECC-Decoder beispielsweise einen Log Likelihood Ratio Turbo Code (LLR-TC) für die Soft-Decodierung verwenden. Ein Log Likelihood Ratio (LLR) kann als nichtlineare Funktion für einen Abstand zwischen einem abgetasteten Wert und einem Idealwert berechnet werden. Darüber hinaus kann ein Turbo Code (TC) einen einfachen Code (Simple Code), z.B. einen Hamming Code, in zwei oder drei Dimensionen umfassen und die Dekodierung in einer Zeilenrichtung und einer Spaltenrichtung wiederholen, um die Zuverlässigkeit der Werte zu verbessern.
-
Die Energieverwaltungseinheit (PMU) 140 kann die der Steuerung 130 zugeführte elektrische Energie steuern bzw. regeln. Die PMU 140 kann die dem Speichersystem 110 zugeführte elektrische Energie überwachen, z.B. eine der Steuerung 130 zugeführte Spannung, und die elektrische Energie an die in der Steuerung 130 umfassten Komponenten bereitstellen. Die PMU 140 kann nicht nur ein Einschalten oder Ausschalten erfassen, sondern auch ein Triggersignal erzeugen, um das Speichersystem 110 in die Lage zu versetzen, dringend einen aktuellen Zustand wiederherzustellen, wenn die dem Speichersystem 110 zugeführte elektrische Energie instabil ist. Gemäß einer Ausführungsform kann die PMU 140 eine Vorrichtung oder eine Komponente umfassen, die in der Lage ist, elektrische Energie zu akkumulieren, die in einem Notfall verwendet werden kann.
-
Die Speicherschnittstelle 142 kann als eine Schnittstelle für eine Verarbeitung bzw. Handhabung von Befehlen und Daten dienen, die zwischen der Steuerung 130 und der Speichervorrichtung 150 übertragen werden, damit die Steuerung 130 die Speichervorrichtung 150 als Antwort auf einen Befehl oder eine Anfrage steuern kann, die von dem Host 102 eingegeben wird. Die Speicherschnittstelle 142 kann ein Steuersignal für die Speichervorrichtung 150 erzeugen und kann Daten verarbeiten, die in die Speichervorrichtung 150 eingegeben oder von ihr ausgegeben werden, und zwar unter der Steuerung des Prozessors 134 in einem Fall, wenn es sich bei der Speichervorrichtung 150 um einen Flash-Speicher handelt.
-
Wenn die Speichervorrichtung 150 beispielsweise einen NAND-Flash-Speicher umfasst, umfasst die Speicherschnittstelle 142 eine NAND-Flash-Steuerung (Nand Flash Controller - NFC). Die Speicherschnittstelle 142 kann eine Schnittstelle für eine Verarbeitung von Befehlen und Daten zwischen der Steuerung 130 und der Speichervorrichtung 150 bereitstellen. Gemäß einer Ausführungsform kann die Speicherschnittstelle 142 durch eine als Flash Interface Layer (FIL) bezeichnete Firmware zum Austauschen von Daten mit der Speichervorrichtung 150 realisiert oder von dieser angesteuert werden.
-
Gemäß einer Ausführungsform kann die Speicherschnittstelle 142 eine offene NAND-Flash-Schnittstelle (ONFi), einen Toggle-Modus oder dergleichen für eine Dateneingabe/-ausgabe mit der Speichervorrichtung 150 unterstützen. Beispielsweise kann die ONFi einen Datenpfad (z.B. einen Kanal, einen Weg usw.) verwenden, der zumindest eine Signalleitung umfasst, die in der Lage ist, bidirektionale Übertragung und Empfang in einer Einheit von 8-Bit- oder 16-Bit-Daten zu unterstützen. Eine Datenkommunikation zwischen der Steuerung 130 und der Speichervorrichtung 150 kann über zumindest eine Schnittstelle in Bezug auf eine asynchrone einfache Datenrate (Single Data Rate - SDR), eine synchrone doppelte Datenrate (Synchronous Double Data Rate - SDDR), eine umschaltbare doppelte Datenrate (Toggle Double Data Rate - TDDR) oder dergleichen erfolgen.
-
Der Speicher 144 kann als Arbeitsspeicher des Speichersystems 110 oder der Steuerung 130 verwendet werden, wobei er vorübergehend Transaktionsdaten von Operationen speichert, die in dem Speichersystem 110 und in der Steuerung 130 durchgeführt werden. So kann der Speicher 144 beispielsweise von der Speichervorrichtung 150 ausgegebene Lesedaten als Antwort auf eine Leseanforderung von dem Host 102 vorübergehend speichern, bevor die Lesedaten an den Host 102 ausgegeben werden. Darüber hinaus kann die Steuerung 130 Schreibdaten, die von dem Host 102 eingegeben werden, vorübergehend in dem Speicher 144 speichern, bevor die Schreibdaten in der Speichervorrichtung 150 programmiert werden. Wenn die Steuerung 130 Operationen bzw. Vorgänge, wie z.B. eine Datenleseoperation, eine Schreib- oder Programmieroperation von Daten, eine Datenlöschoperation usw. der Speichervorrichtung 150 steuert, können die zwischen der Steuerung 130 und der Speichervorrichtung 150 des Speichersystems 110 übertragenen Daten vorübergehend in dem Speicher 144 gespeichert werden.
-
Zusätzlich zu den Lese- oder Schreibdaten kann der Speicher 144 Informationen speichern, z.B. Abbildungsdaten, Leseanforderungen, Programmanforderungen usw., die zum Eingeben oder Ausgeben von Daten zwischen dem Host 102 und der Speichervorrichtung 150 verwendet werden. Gemäß einer Ausführungsform kann der Speicher 144 eine oder mehrere einer Befehlswarteschlange, eines Programmspeichers, eines Datenspeichers, eines Schreibpuffers/-Caches, eines Lesepuffers/-Caches, eines Datenpuffers/-Caches, eines Abbildungspuffers/-Caches und so weiter umfassen. Die Steuerung 130 kann einen gewissen Speicherplatz in dem Speicher 144 für eine Komponente zuweisen, die zum Ausführen einer Dateneingabe-/- ausgabeoperation eingerichtet ist. Zum Beispiel kann der in dem Speicher 144 eingerichtete Schreibpuffer zum vorübergehenden Speichern von Zieldaten verwendet werden, die einer Programmieroperation unterliegen.
-
In einer Ausführungsform kann der Speicher 144 mit einem flüchtigen Speicher realisiert werden. Zum Beispiel kann der Speicher 144 mit einem statischen Direktzugriffsspeicher (Static Random Access Memory - SRAM), einem dynamischen Direktzugriffsspeicher (Dynamic Random Access Memory - DRAM) oder beidem realisiert sein. Obwohl 2 zum Beispiel den in der Steuerung 130 angeordneten Speicher 144 darstellt, sind die Ausführungsformen nicht darauf beschränkt. Der Speicher 144 kann innerhalb oder außerhalb der Steuerung 130 angeordnet sein. So kann der Speicher 144 beispielsweise durch einen externen flüchtigen Speicher ausgebildet sein, der eine Speicherschnittstelle aufweist, die Daten und/oder Signale zwischen dem Speicher 144 und der Steuerung 130 überträgt.
-
Der Prozessor 134 kann die gesamten Betriebsabläufe des Speichersystems 110 steuern. Zum Beispiel kann der Prozessor 134 eine Programmieroperation oder eine Leseoperation der Speichervorrichtung 150 als Antwort auf eine von dem Host 102 eingegebene Schreib- oder Leseanforderung steuern. Gemäß einer Ausführungsform kann der Prozessor 134 Firmware ausführen, um die Programmieroperation oder die Leseoperation in dem Speichersystem 110 zu steuern. Hierin kann die Firmware als Flash-Übersetzungsschicht (FTL) bezeichnet werden. Ein Beispiel für die FTL wird unter Bezugnahme auf die 3 und 4 im Detail beschrieben. Gemäß einer Ausführungsform kann der Prozessor 134 mit einem Mikroprozessor, einer Zentraleinheit (CPU) oder dergleichen realisiert sein.
-
Gemäß einer Ausführungsform kann das Speichersystem 110 mit zumindest einem Multi-Core-Prozessor realisiert sein. Der Multi-Core-Prozessor ist eine Art von Schaltung bzw. Schaltkreis oder Chip, in der/dem zwei oder mehr Kerne integriert sind, die als unterschiedliche Verarbeitungsbereiche betrachtet werden. Wenn beispielsweise eine Vielzahl von Kernen in dem Multi-Core-Prozessor eine Vielzahl von Flash-Übersetzungsschichten (FTLs) unabhängig voneinander ansteuern oder ausführen, kann die Dateneingabe-/-ausgabegeschwindigkeit (oder Leistung) des Speichersystems 110 verbessert werden. Gemäß einer Ausführungsform können die Dateneingabe-/-ausgabe-(E/A)-Operationen in dem Speichersystem 110 unabhängig über verschiedene Kerne in dem Multi-Core-Prozessor durchgeführt werden.
-
Der Prozessor 134 in der Steuerung 130 kann eine Operation durchführen, die einer Anforderung oder einem Befehl entspricht, die von dem Host 102 eingegeben werden. Ferner kann das Speichersystem 110 eine Operation unabhängig von einer Befehls- oder Anforderungseingabe von dem Host 102 durchführen. In einem Fall kann eine Operation, die von der Steuerung 130 als Antwort auf die Anforderung oder den Befehl durchgeführt wird, die/der von dem Host 102 eingegeben wird, als Vordergrundoperation betrachtet werden, während eine Operation, die von der Steuerung 130 unabhängig von der Anforderungs- oder Befehlseingabe von dem Host 102 durchgeführt wird, als Hintergrundoperation betrachtet werden kann. Die Steuerung 130 kann Vorder- oder Hintergrundoperationen zum Lesen, Schreiben oder Löschen von Daten in der Speichervorrichtung 150 durchführen. Darüber hinaus kann eine Parametersetzoperation, die einem Parametersetzbefehl oder einem Merkmalsetzbefehl als ein Setzbefehl entspricht, der von dem Host 102 übertragen wird, als Vordergrundoperation betrachtet werden. Hintergrundoperationen, die ohne einen von dem Host 102 durch die Steuerung 130 übertragenen Befehl durchgeführt werden können, umfassen eine Speicherbereinigung (Garbage Collection - GC), einen Verschleißausgleich (Wear Leveling - WL), eine Verwaltung fehlerhafter Speicherblöcke (Bad Block Management) zum Erkennen und Verarbeiten fehlerhafter Blöcke oder dergleichen.
-
Gemäß einer Ausführungsform können im Wesentlichen ähnliche Operationen sowohl als Vordergrundals auch als Hintergrundoperation durchgeführt werden. Wenn das Speichersystem 110 beispielsweise eine Speicherbereinigung als Antwort auf eine Anforderung oder einen Befehl durchführt, die/der von dem Host 102 eingegeben wird, (z.B. Manual GC), kann die Speicherbereinigung als Vordergrundoperation betrachtet werden. Wenn das Speichersystem 110 die Operation unabhängig von dem Host 102 durchführt (z.B. Auto GC), kann die Speicherbereinigung als eine Hintergrundoperation betrachtet werden.
-
Wenn die Speichervorrichtung 150 eine Vielzahl von Rohchips bzw. Dies (oder eine Vielzahl von Chips) umfasst, die jeweils eine Vielzahl von nichtflüchtigen Speicherzellen umfassen, kann die Steuerung 130 eine parallele Verarbeitung in Bezug auf mehrere Anforderungen oder Befehle durchführen, die von dem Host 102 eingegeben werden, um die Leistung des Speichersystems 110 zu verbessern. Beispielsweise können die übertragenen Anforderungen oder Befehle in mehrere Gruppen unterteilt werden, die zumindest einige einer Vielzahl von Ebenen, einer Vielzahl von Dies oder einer Vielzahl von Chips umfassen, die in der Speichervorrichtung 150 umfasst sind, und die mehreren Gruppen von Anforderungen oder Befehlen werden einzeln oder parallel in jeder Ebene, jedem Die oder jedem Chip verarbeitet.
-
Die Speicherschnittstelle 142 in der Steuerung 130 kann mit der Vielzahl von Dies oder Chips in der Speichervorrichtung 150 über zumindest einen Kanal und zumindest einen Weg verbunden sein. Wenn die Steuerung 130 Daten in der Vielzahl von Dies über jeden Kanal oder jeden Weg als Antwort auf Anforderungen oder Befehle verteilt und speichert, die einer Vielzahl von Seiten zugeordnet sind, die nichtflüchtige Speicherzellen umfassen, kann eine Vielzahl von Operationen, die den Anforderungen oder den Befehlen entsprechen, gleichzeitig oder parallel in der Vielzahl von Dies oder Ebenen durchgeführt werden. Ein solches Verarbeitungsverfahren oder -schema kann als ein Verschachtelungsverfahren angesehen werden. Da sich die Dateneingabe-/-ausgabegeschwindigkeit des Speichersystems 110 durch ein Betreiben mit dem Verschachtelungsverfahren erhöht, kann die Daten-E/A-Leistung des Speichersystems 110 verbessert werden.
-
Als Beispiel kann die Steuerung 130 in nicht einschränkender Weise Zustände einer Vielzahl von Kanälen (oder Wegen) erkennen, die mit der Vielzahl der in der Speichervorrichtung 150 umfassten Dies verbunden sind. Die Steuerung 130 kann einen Zustand jedes Kanals oder jedes Weges als einen von einem Besetzt- bzw. Belegt-Zustand, einem Bereitschafts-Zustand, einem Aktiv-Zustand, einem Leerlauf- bzw. Ruhe-Zustand, einem Normal-Zustand und einem anormalen Zustand bestimmen. Das Bestimmen, über welchen Kanal oder Weg ein Befehl (und/oder Daten) von der Steuerung geliefert wird, kann mit einer physikalischen Blockadresse verknüpft werden. Die Steuerung 130 kann auf Deskriptoren, die von der Speichervorrichtung 150 geliefert werden, verweisen. Die Deskriptoren können einen Block oder eine Seite von Parametern umfassen, die etwas über die Speichervorrichtung 150 beschreiben. Die Deskriptoren können ein vorgegebenes Format oder eine vorgegebene Struktur aufweisen. Zum Beispiel können die Deskriptoren Vorrichtungsdeskriptoren, Konfigurationsdeskriptoren, Einheitsdeskriptoren und dergleichen umfassen. Die Steuerung 130 kann auf die Deskriptoren verweisen oder sie verwenden, um zu bestimmen, welche(r) Kanal(e) oder Weg(e) zum Austauschen eines Befehls oder von Daten verwendet wird/werden.
-
Unter Bezugnahme auf 2 kann die Speichervorrichtung 150 in dem Speichersystem 110 eine Vielzahl von Speicherblöcken 152, 154, 156 umfassen. Jeder der Vielzahl von Speicherblöcken 152, 154, 156 umfasst eine Vielzahl von nichtflüchtigen Speicherzellen. Gemäß einer Ausführungsform kann der Speicherblock 152, 154, 156 eine Gruppe nichtflüchtiger Speicherzellen sein, die gemeinsam gelöscht werden. Der Speicherblock 152, 154, 156 kann eine Vielzahl von Seiten umfassen, die eine Gruppe von nichtflüchtigen Speicherzellen darstellt, die zusammen gelesen oder programmiert werden.
-
In einer Ausführungsform kann jeder Speicherblock 152, 154 oder 156 eine dreidimensionale Stapelstruktur für eine hohe Integration aufweisen. Ferner kann die Speichervorrichtung 150 eine Vielzahl von Dies umfassen, wobei jeder Die eine Vielzahl von Ebenen umfasst, wobei jede Ebene die Vielzahl von Speicherblöcken 152, 154, 156 umfasst. Eine Anordnung der Speichervorrichtung 150 kann abhängig von der Leistung des Speichersystems 110 geändert werden.
-
2 stellt die Speichervorrichtung 150 dar, die eine Vielzahl von Speicherblöcken 152, 154 und 156 umfasst. Die Vielzahl von Speicherblöcken 152, 154 und 156 können gemäß der Anzahl der Bits, die in einer Speicherzelle gespeichert werden können, beliebige von SLC (Single-Level Cell)-Speicherblöcken, Multi-Level Cell (MLC) -Speicherblöcken oder dergleichen sein. Ein SLC-Speicherblock umfasst eine Vielzahl von Seiten, die durch Speicherzellen realisiert sind, wobei jede Speicherzelle ein Bit an Daten speichert. Ein SLC-Speicherblock kann eine höhere Leistung bei der Daten-E/A-Operation und eine längere Lebensdauer als ein MLC-Speicherblock aufweisen. Der MLC-Speicherblock umfasst eine Vielzahl von Seiten, die durch Speicherzellen realisiert sind, wobei jede Speicherzelle Multi-Bit-Daten, z.B. zwei oder mehr Datenbits, speichert. Der MLC-Speicherblock kann im Vergleich zum SLC-Speicherblock eine größere Speicherkapazität bei gleichem Platzbedarf aufweisen. Der MLC-Speicherblock kann im Hinblick auf die Speicherkapazität hochintegriert sein.
-
In einer Ausführungsform kann die Speichervorrichtung 150 mit MLC-Speicherblöcken wie einem Double-Level-Cell (DLC)-Speicherblock, einem Triple-Level-Cell (TLC)-Speicherblock, einem Quadruple-Level-Cell (QLC)-Speicherblock und einer Kombination davon realisiert werden. Der DLC-Speicherblock kann eine Vielzahl von Seiten umfassen, die durch Speicherzellen realisiert sind, wobei jede Speicherzelle in der Lage ist, 2-Bit-Daten zu speichern. Der TLC-Speicherblock kann eine Vielzahl von Seiten umfassen, die durch Speicherzellen realisiert sind, wobei jede Speicherzelle in der Lage ist, 3-Bit-Daten zu speichern. Der QLC-Speicherblock kann eine Vielzahl von Seiten umfassen, die durch Speicherzellen realisiert sind, wobei jede Speicherzelle in der Lage ist, 4-Bit-Daten zu speichern. In einer anderen Ausführungsform kann die Speichervorrichtung 150 mit einem Block realisiert werden, der eine Vielzahl von Seiten umfasst, die durch Speicherzellen realisiert sind, wobei jede Speicherzelle fünf oder mehr Datenbits speichern kann.
-
Gemäß einer Ausführungsform kann die Steuerung 130 einen MLC-Speicherblock, der in der Speichervorrichtung 150 umfasst ist, als einen SLC-Speicherblock verwenden, der Ein-Bit-Daten in einer Speicherzelle speichert. Eine Dateneingabe-/-ausgabegeschwindigkeit des MLC-Speicherblocks (Multi-Level Cell) kann langsamer sein als die des SLC-Speicherblocks. Das heißt, wenn der MLC-Speicherblock als der SLC-Speicherblock verwendet wird, kann eine Marge für eine Lese- oder Programmieroperation reduziert werden. Zum Beispiel kann die Steuerung 130 eine Dateneingabe-/-ausgabeoperation mit höherer Geschwindigkeit durchführen, wenn der MLC-Speicherblock als SLC-Speicherblock verwendet wird. Somit kann die Steuerung 130 den MLC-Speicherblock als einen SLC-Puffer verwenden, um Daten vorübergehend zu speichern, weil der Puffer eine hohe Dateneingabe-/-ausgabegeschwindigkeit zum Verbessern der Leistung des Speichersystems 110 erfordern kann.
-
Ferner kann die Steuerung 130 gemäß einer Ausführungsform Daten in einem MLC eine Vielzahl von Malen programmieren, ohne eine Löschoperation an einem bestimmten MLC-Speicherblock durchzuführen, der in der Speichervorrichtung 150 umfasst ist. Im Allgemeinen unterstützen nichtflüchtige Speicherzellen ein Überschreiben von Daten nicht. Die Steuerung 130 kann jedoch 1-Bit-Daten eine Vielzahl von Malen in den MLC unter Verwendung einer Funktion programmieren, bei der der MLC in der Lage ist, Multi-Bit-Daten zu speichern. Für eine Operation zum Überschreiben des MLC kann die Steuerung 130 die Anzahl der Programmierzeiten als separate Operations- bzw. Betriebsinformationen speichern, wenn 1-Bit-Daten in einem MLC programmiert werden. Gemäß einer Ausführungsform kann eine Operation zum gleichmäßigen Angleichen von Schwellenspannungen der MLCs ausgeführt werden, bevor weitere 1-Bit-Daten in dieselben MLCs programmiert werden, die jeweils 1-Bit-Daten gespeichert haben.
-
In einer Ausführungsform ist die Speichervorrichtung 150 als nichtflüchtiger Speicher wie ein Flash-Speicher, beispielsweise ein NAND-Flash-Speicher, ein NOR-Flash-Speicher oder dergleichen, ausgebildet. In einer anderen Ausführungsform kann die Speichervorrichtung 150 zumindest durch einen Phasenwechsel-Direktzugriffsspeicher (Phase Change Random Access Memory - PCRAM), einen Ferroelektrik-Direktzugriffsspeicher (FRAM), einen Spin-Transfer-Torque-Direktzugriffsspeicher (STT-RAM) und einen Spin-Transfer-Torque-Magnet-Direktzugriffsspeicher (STT-MRAM) oder dergleichen realisiert sein.
-
Unter Bezugnahme auf 3 arbeitet die Steuerung 130 in einem Speichersystem zusammen mit dem Host 102 und der Speichervorrichtung 150. Wie dargestellt, umfasst die Steuerung 130 eine Flash-Übersetzungsschicht (FTL) 240 sowie die Host-Schnittstelle 132, die Speicherschnittstelle 142 und den Speicher 144, die zuvor unter Bezugnahme auf 2 angegeben wurden.
-
Gemäß einer Ausführungsform kann die in 2 dargestellte Fehlerkorrekturschaltung 138 in der Flash-Übersetzungsschicht (FTL) 240 umfasst sein. In einer anderen Ausführungsform kann die Fehlerkorrekturschaltung 138 als ein separates Modul, eine Schaltung, Firmware oder dergleichen realisiert werden, die in der Steuerung 130 umfasst oder mit ihr verbunden ist.
-
Die Host-Schnittstelle 132 kann Befehle, Daten und dergleichen verarbeiten bzw. handhaben, die von dem Host 102 übertragen werden. Als Beispiel kann die Host-Schnittstelle 132 in nicht einschränkender Weiser eine Befehlswarteschlange 56, einen Puffermanager 52 und eine Ereigniswarteschlange 54 umfassen. Die Befehlswarteschlange 56 kann die von dem Host 102 empfangenen Befehle, Daten und dergleichen sequentiell speichern und sie beispielsweise in der Reihenfolge, in der sie in der Befehlswarteschlange 56 gespeichert sind, an den Puffermanager 52 ausgeben. Der Puffermanager 52 kann die von der Befehlswarteschlange 56 empfangenen Befehle, Daten usw. klassifizieren, verwalten oder anpassen. Die Ereigniswarteschlange 54 kann sequentiell Ereignisse zum Verarbeiten der von dem Puffermanager 52 empfangenen Befehle, Daten und dergleichen übertragen.
-
Eine Vielzahl von Befehlen oder Daten mit derselben Eigenschaft bzw. Charakteristik kann von dem Host 102 übertragen werden, oder eine Vielzahl von Befehlen und Daten mit unterschiedlichen Eigenschaften bzw. Charakteristika kann an das Speichersystem 110 übertragen werden, nachdem sie von dem Host 102 gemischt oder durcheinandergebracht wurden. Zum Beispiel kann eine Vielzahl von Befehlen zum Lesen von Daten, d.h. Lesebefehle, geliefert werden, oder ein Befehl zum Lesen von Daten, d.h. ein Lesebefehl, und ein Befehl zum Programmieren/Schreiben von Daten, d.h. ein Schreibbefehl, können abwechselnd an das Speichersystem 110 übertragen werden. Die Host-Schnittstelle 132 kann Befehle, Daten und dergleichen, die von dem Host 102 übertragen werden, sequentiell in der Befehlswarteschlange 56 speichern. Danach kann die Host-Schnittstelle 132 abschätzen oder vorhersagen, welche Art von internen Operationen die Steuerung 130 gemäß den Eigenschaften der Befehle, der Daten und dergleichen, die von dem Host 102 übertragen wurden, durchführen wird. Die Host-Schnittstelle 132 kann eine Verarbeitungsreihenfolge und eine Priorität von Befehlen, Daten und dergleichen auf der Grundlage ihrer Eigenschaften bestimmen.
-
Gemäß den Merkmalen der von dem Host 102 übertragenen Befehle, Daten und dergleichen ist der Puffermanager 52 in der Host-Schnittstelle 132 eingerichtet, um zu bestimmen, ob der Puffermanager 52 die Befehle, Daten und dergleichen in dem Speicher 144 speichern soll, oder ob der Puffermanager 52 die Befehle, Daten und dergleichen an die Flash-Übersetzungsschicht (FTL) 240 liefern soll. Die Ereigniswarteschlange 54 empfängt Ereignisse, die von dem Puffermanager 52 übertragen werden, die intern von dem Speichersystem 110 oder der Steuerung 130 als Antwort auf die Befehle, die Daten und dergleichen ausgeführt und verarbeitet werden sollen, und liefert die Ereignisse an die Flash-Übersetzungsschicht (FTL) 240 in der Reihenfolge der in die Ereigniswarteschlange 54 eingegebenen Ereignisse.
-
Gemäß einer Ausführungsform kann die in 3 dargestellte Flash-Übersetzungsschicht (FTL) 240 ein Multi-Thread-Schema zum Durchführen von Dateneingabe-/-ausgabe (E/A)-Operationen realisieren. Eine Multi-Thread-FTL kann durch einen Multi-Core-Prozessor unter Verwendung von Multi-Thread realisiert werden, der in der Steuerung 130 umfasst ist.
-
Gemäß einer Ausführungsform kann die Flash-Übersetzungsschicht (FTL) 240 einen Host-Anforderungs-manager (HRM) 46, einen Zuordnungs-Manager (MM) 44, einen Zustands-Manager (GC/WL) 42 und einen Block-Manager (BM/BBM) 48 umfassen. Der Host-Anforderungs-Manager (HRM) 46 kann die von der Ereigniswarteschlange 54 übertragenen Ereignisse verwalten. Der Zuordnungs-Manager (MM) 44 kann Zuordnungsdaten verarbeiten oder steuern. Der Zustands-Manager 42 kann eine Speicherbereinigung (Garbage Collection - GC)) oder einen Verschleißausgleich (Wear Leveling - WL) durchführen. Der Block-Manager 48 kann Befehle oder Anweisungen auf einem Block in der Speichervorrichtung 150 ausführen.
-
Als Beispiel kann der Host-Anforderungs-Manager (HRM) 46 in nicht einschränkender Weise den Zuordnungs-Manager (MM) 44 und den Block-Manager 48 nutzen, um Anforderungen gemäß Lese- und Programmbefehlen und Ereignissen, die von der Host-Schnittstelle 132 geliefert werden, zu bearbeiten oder verarbeiten. Der Host-Anforderungs-Manager (HRM) 46 kann eine Abfrageanforderung an den Zuordnungs-Manager (MM) 44 senden, um eine physikalische Adresse zu bestimmen, die einer logischen Adresse entspricht, die mit den Ereignissen eingegeben wird. Der Host-Anforderungs-Manager (HRM) 46 kann eine Leseanforderung mit der physikalischen Adresse an die Speicherschnittstelle 142 senden, um die Leseanforderung zu verarbeiten, d.h. die Ereignisse zu bearbeiten. In einer Ausführungsform kann der Host-Anforderungs-Manager (HRM) 46 eine Programmanforderung (oder eine Schreibanforderung) an den Block-Manager 48 senden, um Daten auf eine bestimmte leere Seite zu programmieren, auf der keine Daten in der Speichervorrichtung 150 gespeichert sind, und kann dann eine der Programmanforderung entsprechende Zuordnungsaktualisierungsanforderung an den Zuordnungs-Manager (MM) 44 senden, um ein für die programmierten Daten relevantes Element in Informationen des Zuordnens der logischen und physikalischen Adressen zueinander zu aktualisieren.
-
Der Block-Manager 48 kann eine von dem Host-Anforderungs-Manager (HRM) 46, dem Zuordnungs-Manager (MM) 44 und/oder dem Zustands-Manager 42 gelieferte Programmanforderung in eine für die Speichervorrichtung 150 verwendete Flash-Programmanforderung umwandeln, um Flash-Blöcke in der Speichervorrichtung 150 zu verwalten. Um die Programm- oder Schreibleistung des Speichersystems 110 zu maximieren oder zu verbessern, kann der Block-Manager 48 Programmanforderungen sammeln und Flash-Programmanforderungen für Mehrebenen- und One-Shot-Programmoperationen an die Speicherschnittstelle 142 senden. In einer Ausführungsform sendet der Block-Manager 48 mehrere Flash-Programm-Anforderungen an die Speicherschnittstelle 142, um eine parallele Verarbeitung einer mehrkanaligen und multidirektionalen Flash-Steuerung zu verbessern oder zu maximieren.
-
In einer Ausführungsform kann der Block-Manager 48 Blöcke in der Speichervorrichtung 150 gemäß der Anzahl gültiger Seiten verwalten, Blöcke, die keine gültigen Seiten aufweisen, auswählen und löschen, wenn ein freier Block benötigt wird, und einen Block auswählen, der die geringste Anzahl gültiger Seiten umfasst, wenn bestimmt wird, dass eine Speicherbereinigung durchgeführt werden soll. Der Zustands-Manager 42 kann eine Speicherbereinigung durchführen, um in dem ausgewählten Block gespeicherte gültige Daten in einen leeren Block zu verschieben und in dem ausgewählten Block gespeicherte Daten zu löschen, damit die Speichervorrichtung 150 genügend freie Blöcke (d.h. leere Blöcke ohne Daten) aufweisen kann. Wenn der Block-Manager 48 dem Zustands-Manager 42 Informationen über einen zu löschenden Block bereitstellt, kann der Zustands-Manager 42 alle Flash-Seiten des zu löschenden Blocks überprüfen, um zu bestimmen, ob jede Seite des Blocks gültig ist.
-
Um die Gültigkeit jeder Seite zu bestimmen, kann der Zustands-Manager 42 beispielsweise eine logische Adresse ermitteln bzw. identifizieren, die in einem Out-of-Band (OOB)-Bereich jeder Seite aufgezeichnet ist. Um zu bestimmen, ob eine Seite gültig ist, kann der Zustands-Manager 42 eine physische Adresse der Seite mit einer physischen Adresse vergleichen, die einer logischen Adresse zugeordnet ist, die aus einer Abfrageanforderung erhalten wird. Der Zustands-Manager 42 sendet für jede gültige Seite eine Programmanforderung an den Block-Manager 48. Wenn eine Programmieroperation abgeschlossen ist, kann eine Zuordnungstabelle durch den Zuordnungs-Manager aktualisiert werden.
-
Der Zuordnungs-Manager 44 kann Zuordnungsdaten, z.B. eine logisch-physikalische Zuordnungstabelle, verwalten. Der Zuordnungs-Manager 44 kann verschiedene Anfragen bzw. Anforderungen verarbeiten, z.B. Abfragen, Aktualisierungen und dergleichen, die von dem Host-Anforderungs-Manager (HRM) 46 oder dem Zustands-Manager 42 erzeugt werden. Der Zuordnungs-Manager 44 kann die gesamte Zuordnungstabelle in der Speichervorrichtung 150, z.B. in einem Flash-/nichtflüchtigen Speicher, speichern und Zuordnungseinträge gemäß der Speicherkapazität des Speichers 144 in den Cache aufnehmen. Wenn beim Verarbeiten von Abfrage- oder Aktualisierungsanforderungen ein Zuordnungs-Cache-Miss auftritt, kann der Zuordnungs-Manager 44 eine Leseanforderung an die Speicherschnittstelle 142 senden, um eine entsprechende Zuordnungstabelle zu laden, die in der Speichervorrichtung 150 gespeichert ist. Wenn die Anzahl der Dirty-Cache-Blöcke in dem Zuordnungs-Manager 44 einen bestimmten Schwellenwert überschreitet, kann eine Programmanforderung an den Block-Manager 48 gesendet werden, so dass ein Clean-Cache-Block erstellt und eine Dirty-Zuordnungstabelle in der Speichervorrichtung 150 gespeichert werden kann.
-
Wenn eine Speicherbereinigung durchgeführt wird, kopiert der Zustands-Manager 42 die gültige(n) Seite(n) in einen freien Block, und der Host-Anforderungs-Manager (HRM) 46 kann die neueste Version der Daten für dieselbe logische Adresse der Seite programmieren und gleichzeitig eine Aktualisierungsanforderung ausgeben. Wenn der Zuordnungs-Manager 42 die Zuordnungsaktualisierung in einem Zustand anfordert, in dem das Kopieren der gültigen Seite(n) nicht normal abgeschlossen ist, führt der Zuordnungs-Manager 44 die Aktualisierung der Zuordnungstabelle möglicherweise nicht durch. Dies liegt daran, dass die Zuordnungsanforderung mit alten physischen Informationen ausgegeben wird, wenn der Zustands-Manager 42 eine Zuordnungsaktualisierung anfordert und eine gültige Seitenkopie später abgeschlossen wird. Der Zuordnungs-Manager 44 kann eine Zuordnungsaktualisierungsoperation durchführen, um die Genauigkeit zu gewährleisten, wenn oder nur wenn die letzte Zuordnungstabelle immer noch auf die alte physische Adresse verweist.
-
4 stellt die interne Anordnung der in 1 bis 3 gezeigten Steuerung gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
-
Unter Bezugnahme auf 4 kann die Flash-Übersetzungsschicht (FTL) 240 in der Steuerung 130 in drei Schichten (Layer) unterteilt werden: eine Adressübersetzungsschicht ATL, eine virtuelle Flash-Schicht VFL und eine Flash-Schnittstellenschicht FIL.
-
Die Adressübersetzungsschicht ATL kann zum Beispiel eine von einem Dateisystem übertragene logische Adresse LA in eine logische Seitenadresse umwandeln. Die Adressübersetzungsschicht ATL kann einen Adressübersetzungsprozess bezüglich eines logischen Adressraums durchführen. Das heißt, die Adressübersetzungsschicht ATL kann einen Adressübersetzungsprozess auf der Grundlage von Zuordnungs- bzw. Abbildungsinformationen durchführen, in denen die logische Seitenadresse LPA des Flash-Speichers 140 der von dem Host übertragene logische Adresse LA zugeordnet wird. Solche Informationen über die Zuordnung von logischen zu logischen Adressen (im Folgenden als L2L-Zuordnung bezeichnet) können in einem Bereich gespeichert werden, in dem Metadaten in der Speichervorrichtung 150 gespeichert sind.
-
Die virtuelle Flash-Schicht VFL kann die logische Seitenadresse LPA, die von der Adressübersetzungsschicht ATL zugeordnet wird, in eine virtuelle Seitenadresse VPA umwandeln. Dabei kann die virtuelle Seitenadresse VPA einer physikalischen Adresse einer virtuellen Speichervorrichtung entsprechen. Das heißt, die virtuelle Seitenadresse VPA kann dem Speicherblock 60 in der Speichervorrichtung 150 entsprechen. Wenn sich unter den Speicherblöcken 60 in der Speichervorrichtung 150 ein fehlerhafter Block (Bad Block) befindet, kann der fehlerhafte Block durch die virtuelle Flash-Schicht VFL ausgeschlossen werden. Darüber hinaus kann die virtuelle Flash-Schicht VFL einen Wiederherstellungsalgorithmus zum Scannen bzw. Abtasten eines Scanbereichs umfassen, um die in der Speichervorrichtung 150 gespeicherten logisch-virtuellen Adresszuordnungsinformationen (L2V-Mapping) und Zuordnungsinformationen in dem Datenbereich zum Speichern von Benutzerdaten wiederherzustellen. Der Wiederherstellungsalgorithmus kann in der Lage sein, die logisch-virtuellen Adresszuordnungsinformationen (L2V-Mapping) wiederherzustellen. Die virtuelle Flash-Schicht VFL kann auf der Grundlage der durch den Wiederherstellungsalgorithmus wiederhergestellten logisch-virtuellen Adresszuordnungsinformationen (L2V-Mapping) einen Adressumwandlungsprozess in Bezug auf den virtuellen Adressraum durchführen.
-
Die Flash-Schnittstellenschicht FIL kann eine virtuelle Seitenadresse der virtuellen Flash-Schicht VFL in eine physikalische Seitenadresse der Speichervorrichtung 150 umwandeln. Die Flash-Schnittstellenschicht FIL führt eine Low-Level-Operation zum Bilden einer Schnittstelle mit der Speichervorrichtung 150 durch. Zum Beispiel kann die Flash-Schnittstellenschicht FIL einen Low-Level-Treiber zum Steuern von Hardware der Speichervorrichtung 150, einen Fehlerkorrekturcode (ECC) zum Prüfen und Korrigieren eines Fehlers in den von der Speichervorrichtung 150 übertragenen Daten und ein Modul zum Durchführen von Operationen wie Bad-Block-Management (BBM) umfassen.
-
5 stellt ein Speichersystem dar, das ein durch mehrere Zonen unterteiltes Namensraumschema unterstützt.
-
Unter Bezugnahme auf 5 kann der Host 102 einen Speicherplatz des Speichersystems 110 in eine Vielzahl von Zonen (Zone 0, Zone 1, ..., Zone x-1) unterteilen. Zum Beispiel weist das Speichersystem 110 einen Speicherplatz von 1G Byte auf, und es werden 10 Zonen gebildet. Jede der 10 Zonen kann eine Größe von 100M Byte aufweisen.
-
Bei der logischen Blockadressierung handelt es sich um eine Art von Adressierungssystem, das verwendet wird, um einen Speicherort eines Datenblocks zu bezeichnen, der in einem Speichergerät gespeichert ist, das mit einer Rechenvorrichtung zusammenarbeitet. Die logische Blockadressierung kann als ein System verwendet werden, das ein einfaches lineares Adressierungsschema zur Verwendung eines Speichergeräts wie des Speichersystems 110 verwendet. Vor der logischen Blockadressierung wurde auf herkömmliche Festplatten, die Speichergeräte darstellen, über eine Zylinder-, Kopf-, Sektor- (Cylinder, Head, Sector - CHS) oder erweiterte CHS-Adresse zugegriffen. Das heißt, auf die in der Festplatte gespeicherten Daten konnte durch Angabe der Zylinder-, Kopf- und Sektoradressen zugegriffen werden. Im Gegensatz dazu wurde die logische Blockadressierung (LBA) als ein Verfahren des Adressierens von Sektoren in die EIDE/IDE-Schnittstelle aufgenommen. Anstatt durch Bezugnahme auf die Zylinder-, Kopf- und Sektornummern der Festplatte zuzugreifen, kann die logische Blockadressierung jedem Sektor eine eindeutige Sektornummer zuweisen. Beispielsweise ist eine logische Blockadresse (LBA) ein Schema, das auf ein Laufwerk zugreift, indem es die mehreren Sektoren linear adressiert, beginnend mit dem Sektor 0 von Kopf 0 von Zylinder 0 in dem Laufwerk mit LBA 0 bis zum letzten physischen Sektor des letzten Kopfes des letzten Zylinders in dem Laufwerk mit der letzten LBA. Zum Beispiel kann die Anzahl der logischen Blockadressen (LBAs) in dem 540M-Byte-Speichergerät 1.065.456 betragen.
-
Der Speicherplatz des Speichersystems 110, das das Namensraumschema unterstützt, kann für die Vielzahl von Zonen (Zone 0, Zone 1, ..., Zone x-1) zugewiesen werden. Der Speicherplatz kann durch Blöcke unterschieden werden, die durch eine Vielzahl von logischen Adressen (LBA 0, LBA 1, ..., LBA z-1) bezeichnet werden. In dem zonierten Namensraum (ZNS) können jeder Zone (Zone 0, Zone 1, ..., Zone x-1) logische Adressen eines bestimmten Bereichs zugewiesen werden. Zum Beispiel kann der zweiten Zone (Zone 1) eine (m+1)-te logische Blockadresse (LBA m) bis zu einer n-ten logischen Blockadresse (LBA n-1) zugewiesen werden. Ein Anwendungsprogramm unter Verwendung der zweiten Zone (Zone 1) in dem Host 102 kann eine logische Blockadresse zwischen der (m+1)-ten logischen Blockadresse (LBA m) und der n-ten logischen Blockadresse (LBA n-1) sequentiell Daten zuweisen, die an das Speichersystem 110 übertragen und dort gespeichert werden könnten (Sequentielles Schreiben).
-
6 stellt ein Speichersystem dar, das eine nichtflüchtige Speichervorrichtung umfasst, die einen durch mehrere Zonen unterteilten Namensraum unterstützt.
-
Unter Bezugnahme auf 6 kann eine Vielzahl von Anwendungen 312, 314, 316, die in dem Host 102 ausgeführt werden (siehe 2 bis 3), ZNS verwenden, um eine Daten-E/A-Operation der Steuerung 130 anzufordern. Eine Vielzahl von Speicherblöcken, die in der Speichervorrichtung 150 umfasst sind, kann jedem der drei ZNS 322, 324, 326 zugewiesen werden.
-
Es wird ein Speicherblock 322_1 beschrieben, der einem ersten ZNS 322 zugeordnet ist. Dabei kann der Speicherblock 322_1 als eine Gruppe von Speicherzellen betrachtet werden, die gemeinsam zur gleichen Zeit durch eine Löschoperation gelöscht werden. Eine erste Anwendung (APPL1, 312) kann den ersten ZNS (322, Zone#0) verwenden. Der ZNS kann den Einfluss reduzieren, der durch einen Unterschied zwischen einem von dem Host 102 verwendeten logischen Adressschema und einem in der Speichervorrichtung 150 verwendeten physikalischen Adressschema entsteht. Die erste Anwendung (APPL1, 312) kann Daten erzeugen und den Daten eine bestimmte logische Adresse in einem Bereich von logischen Adressen zuweisen, die der ersten ZNS (322, zone#0) zugewiesen sind. Solche von der ersten Anwendung (APPL1, 312) erzeugten Daten können sequentiell in dem den ersten Anwendungen (APPL1, 312) zugewiesenen Speicherblock 322_1 gespeichert werden.
-
Jede der Vielzahl von Anwendungen 312, 314, 316 kann einen bestimmten oder zugewiesenen ZNS aus der Vielzahl von ZNSs zone#0, zone#1, zone#3, ..., zone#n verwenden. Wie in 1 beschrieben, kann gemäß einer Ausführungsform die Vielzahl von ZNSs einer Anwendung zugewiesen werden. Gemäß einer Ausführungsform kann sich die Vielzahl von Anwendungen 312, 314, 316 einen einzigen ZNS teilen. In einem logischen Adressschema können jedem der Vielzahl von ZNSs zone#0, zone#1, zone#3, ..., zone#n, was individuell der Vielzahl von Anwendungen 312, 314, 316 entspricht, im Voraus verschiedene Bereiche logischer Adressen zugewiesen werden. Jede der Vielzahl von Anwendungen 312, 314, 316 darf nicht unbestimmte oder nicht zugewiesene der Vielzahl von ZNSs zone#0, zone#1,
zone#3, ..., zone#n verwenden. Das heißt, eine logische Adresse, die einer bestimmten ZNS vorab zugewiesen wurde, darf nicht von anderen Anwendungen unter Verwendung anderer ZNS aus der Vielzahl von ZNS zone#0, zone#1, zone#3, ..., zone#n verwendet werden. Wenn ein ZNS nicht von einer Vielzahl von Anwendungen gemeinsam genutzt wird, kann mit diesem ZNS-Schema ein Phänomen vermieden werden, bei dem die von einer Vielzahl von Anwendungen erzeugten Daten in einem einzigen Speicherblock vermischt und durcheinandergebracht werden können, was in einer herkömmlichen nichtflüchtigen Speichervorrichtung häufig vorkommt.
-
Bei einem Schema unter Verwendung unterschiedlicher Adressen wie einer logischen Adresse und einer physischen Adresse werden sowohl eine logische Adresse als auch eine physische Adresse von einer Anwendung erzeugten Datenelementen sequentiell zugewiesen, wodurch ein Durchführen der Speicherbereinigung (Garbage Collection) erleichtert wird. Gemäß einer Ausführungsform kann der Host 102 die den ZNSs zone#0, zone#1, zone#3, ..., zone#n zugewiesenen Speicherplätze ändern. Zumindest einige nicht zugewiesene Speicherblöcke in der Speichervorrichtung 150 können zusätzlich den ZNSs 322, 324, 326 zugewiesen werden.
-
Gemäß einer Ausführungsform kann der Host 102 das Speichersystem 110 benachrichtigen, wenn alle in einem bestimmten ZNS gespeicherten Daten gelöscht sind oder wenn der bestimmte ZNS nicht weiter verwendet wird. Das Speichersystem 110 kann den spezifischen ZNS gemäß einer von dem Host 102 eingegebenen Benachrichtig deaktivieren, eine Löschoperation an Speicherblöcken durchführen, die dem spezifischen ZNS zugewiesen sind, oder Einstellwerte für die den spezifischen ZNS zugewiesenen Speicherblöcke initialisieren. Als Antwort auf eine von dem Host 102 eingegebene Anforderung kann das Speichersystem 110 einen bestimmten ZNS, in dem keine Daten gespeichert sind, deaktivieren oder zusätzlich einen Speicherblock, der keinem ZNS zugeordnet ist, dem bestimmten ZNS zuweisen.
-
Beispielsweise kann der Host 102 eine Vielzahl von Anwendungen APPL1, APPL2, APPL3 ausführen, und die Vielzahl von Anwendungen APPL1, APPL2, APPL3 können einzeln Datenelemente erzeugen und die erzeugten Datenelemente in dem Speichersystem 110 speichern.
-
Erstens werden in dem herkömmlichen nichtflüchtigen Speichersystem die von einem Host 102 eingegebenen Daten nacheinander in einem Speicherblock innerhalb der Speichervorrichtung gespeichert. Das heißt, Datenelemente, die von der Vielzahl von Anwendungen APPL1, APPL2, APPL3 erzeugt werden, können gemäß einer Reihenfolge der Datenelemente, die von der Hostvorrichtung 102 an das herkömmliche nichtflüchtige Speichersystem übertragen worden sind, ohne Trennung oder Unterscheidung sequentiell in der Speichervorrichtung gespeichert werden. Die von der Vielzahl von Anwendungen APPL1, APPL2, APPL3 erzeugten Datenelemente können sequentiell in einem Speicherblock gespeichert werden, der zum Programmieren von Daten innerhalb der Speichervorrichtung geöffnet ist. In dem Speicherblock können die von der Vielzahl von Anwendungen APPL1, APPL2, APPL3 erzeugten Datenelemente gemischt oder durcheinandergebracht werden. Bei diesen Prozessen ist die Steuerung eingerichtet, um Abbildungsdatenelemente zu erzeugen, die jeweils eine von dem Host 102 eingegebene logische Adresse mit einer physikalischen Adresse verknüpfen, die einen Ort angibt, an dem Daten in der Speichervorrichtung gespeichert sind. Wenn danach die Vielzahl von Anwendungen APPL1, APPL2, APPL3, die von dem Host 102 ausgeführt werden, in dem Speichersystem gespeicherte Datenelemente anfordert, kann die Steuerung die von der Vielzahl von Anwendungen APPL1, APPL2, APPL3 angeforderten Datenelemente auf der Grundlage der Abbildungsdatenelemente ausgeben.
-
In dem herkömmlichen nichtflüchtigen Speichersystem können verschiedene Arten von Datenelementen, die von verschiedenen Anwendungen erzeugt werden, in einem einzigen Speicherblock vermischt oder durcheinandergebracht werden. In diesem Fall können die in dem einzigen Speicherblock gespeicherten Daten (gültige Daten sind die neuesten Daten) eine unterschiedliche Gültigkeit aufweisen, und es kann schwierig sein, die Gültigkeit der Daten vorherzusagen. Aus diesem Grund können beim Durchführen der Speicherbereinigung viele Ressourcen verbraucht werden, um ein gültiges Datenelement auszuwählen oder zu prüfen, ob die Datenelemente gültig sind. Da mehrere Anwendungen mit einem einzigen Speicherblock verbunden sind, kann außerdem eine von einer der mehreren Anwendungen angeforderte Dateneingabe-/-ausgabeoperation durch eine andere, von einer anderen Anwendung angeforderte oder verursachte Operation verzögert werden. Wenn eine Speicherbereinigung an dem den Speicherblock durchgeführt wird, können sich mehrere von den Anwendungen angeforderte Operationen verzögern. Mit dem ZNS können jedoch die oben beschriebenen Probleme, die in den herkömmlichen nichtflüchtigen Speichersystemen auftreten, vermieden oder verhindert werden.
-
In einem Schema des ZNS kann die Vielzahl von Anwendungen APPL1, APPL2, APPL3 nacheinander Datenelemente in jeweils zugewiesenen zonierten Namensräumen ZNS1, ZNS2, ZNS3 speichern. Dabei kann die Zone einen vorgegebenen Speicherplatz aufweisen, der einem von dem Host 102 verwendeten logischen Adressschema entspricht. Mehrere in der Speichervorrichtung 150 umfasste Speicherblöcke können einzelnen Zonen zugewiesen werden. Unter Bezugnahme auf 6 kann die Vielzahl von zonierten Namensräumen ZNS1, ZNS2, ZNS3 der Vielzahl von Anwendungen APPL1, APPL2, APPL3 entsprechen, die in der Speichervorrichtung 150 umfasst sind. Ein der ersten Anwendung (APPL1, 312) zugeordnetes Datenelement kann in einem dem ersten zonierten Namensraum (ZNS1, 322) zugewiesenen Speicherblock programmiert oder daraus gelesen werden. Die zweite Anwendung (APPL2, 314) kann ein Datenelement in einem anderen, dem zweiten zonierten Namensraum (ZNS2, 324) zugewiesenen Speicherblock speichern oder ein Datenelement daraus lesen. Darüber hinaus kann die dritte Anwendung (APPL3, 316) ein Datenelement in einem anderen, dem dritten zonierten Namensraum (ZNS3, 326) zugewiesenen Speicherblock speichern oder ein Datenelement daraus lesen.
-
In diesem Fall werden die von der ersten Anwendung APPL1 erzeugten Daten sequentiell in einem Speicherblock gespeichert, der dem ersten zonierten Namensraum ZNS1 zugewiesen ist, so dass das Speichersystem 110 keinen anderen Speicherblock, der dem anderen ZNSs als den ersten zonierten Namensraum ZNS1 zugewiesen ist, aus der Vielzahl von zonierten Namensräumen ZNS1, ZNS2, ZNS3 prüfen muss, um eine Dateneingabe-/-ausgabeoperation oder Speicherbereinigung durchzuführen. Solange der Speicherplatz in dem ersten zonierten Namensraum ZNS1, der der ersten Anwendung APPL1 zugewiesen ist, nicht ausreicht, um Daten zu speichern, muss die Speicherbereinigung nicht für die Speicherblöcke durchgeführt werden, die dem ersten zonierten Namensraum ZNS1 zugewiesen sind. Aus diesem Grund kann sich die Effizienz der Speicherbereinigung für die Speichervorrichtung 150 erhöhen, und die Häufigkeit des Durchführens der Speicherbereinigung kann abnehmen. Dies kann zu einer Verringerung eines Schreibverstärkungsfaktors (WAF) führen, der angibt, in welchem Maße eine Datenschreibmenge (oder ein Datenprogramm) in der Speichervorrichtung 150 verstärkt wird, und die Lebensdauer der Speichervorrichtung 150 erhöhen. Darüber hinaus kann in dem Speichersystem 110, auf das der ZNS angewandt wird, die Medienüberversorgung in der Speichervorrichtung 150 reduziert werden, und die Auslastung (oder Belegungsrate) des flüchtigen Speichers 144 (siehe 2 und 3) kann reduziert werden. Es ist möglich, die Menge der innerhalb des Speichersystems 110 verarbeiteten, übertragenen oder empfangenen Daten zu reduzieren, so dass in dem Speichersystem 110 erzeugte Overheads abnehmen können. Dadurch kann die Leistung der Dateneingabe-/Ausgabeoperation des Speichersystems 110 verbessert oder erhöht werden.
-
Gemäß einer Ausführungsform kann die Vielzahl von zonierten Namensräumen ZNS1, ZNS2, ZNS3 jeder der Vielzahl von Anwendungen APPL1, APPL2, APPL3 einzeln zugewiesen werden. In einer anderen Ausführungsform kann sich die Vielzahl von Anwendungen APPL1, APPL2, APPL3 einen bestimmten ZNS teilen. In einer anderen Ausführungsform werden jeder der Vielzahl von Anwendungen APPL1, APPL2, APPL3 mehrere ZNS zugewiesen. Jede der Anwendungen APPL1, APPL2, APPL3 kann die Vielzahl von ZNSs gemäß den Eigenschaften der in dem Speichersystem 110 zu speichernden Daten verwenden. Wenn beispielsweise der erste zonierte Namensraum ZNS1 und der zweite zonierte Namensraum ZNS2 der ersten Anwendung APPL1 zugewiesen werden, kann die erste Anwendung APPL1 ein heißes Datenelement (Hot Data Item) (z.B. ein Datenelement, auf das häufig zugegriffen wird oder das häufig gelesen oder aktualisiert wird) in dem ersten zonierten Namensraum ZNS1 speichern und ein kaltes Datenelement (Cold Data Item) (z.B. ein Datenelement, auf das weniger häufig zugegriffen oder das weniger häufig gelesen oder aktualisiert wird) in dem zweiten zonierten Namensraum ZNS2 speichern. Das Hot Data Item wird häufiger gelesen, aktualisiert oder umprogrammiert als das Cold Data Item, so dass eine Gültigkeitsdauer des Hot Data Items kürzer ist als die des Cold Data Items.
-
Während einer anfänglichen Operation zur Verbindung zwischen dem Host 102 und dem Speichersystem 110 können der Host 102 und das Speichersystem 110 Informationen in Hinblick auf ZNSs austauschen, die den jeweiligen Anwendungen APPL1, APPL2, APPL3 zugewiesen sind. Eine Dateneingabe-/-ausgabeoperation kann für jede der Anwendungen APPL1, APPL2, APPL3 über einen entsprechenden ZNS durchgeführt werden. In Abhängigkeit von den Eigenschaften der Daten während der Dateneingabe-/- ausgabeoperation oder den Eigenschaften der Anwendungen kann der Host 102 eine schnellere Dateneingabe-/- ausgabegeschwindigkeit des Speichersystems 110 erfordern oder ein Datenelement mit einer sehr hohen Priorität sicher in dem Speichersystem 110 speichern.
-
Darüber hinaus kann eine Vielzahl von nichtflüchtigen Speicherzellen, die in der Speichervorrichtung 150 umfasst sind, Speicherzellen umfassen, wobei jede Speicherzelle Mehrbitdaten speichert. Das Speichersystem 110 kann jedoch die Speicherzelle derart einstellen, dass sie Ein-Bit-Daten speichert. Wenn eine schnelle Eingabe-/Ausgabegeschwindigkeit erforderlich ist oder Daten sicher gespeichert werden sollen, kann das Speichersystem 110 einen Speicherzellen umfassenden Speicherblock derart einstellen, dass in jeder Speicherzelle Ein-Bit-Daten gespeichert werden, obwohl die Speicherzellen in der Lage sind, Mehr-Bit-Daten zu speichern. Darüber hinaus kann bei Bedarf ein bestimmter Speicherblock in der Speichervorrichtung 150 als ein SLC (Single-Level-Cell) -Puffer für eine schnelle Dateneingabe/-ausgabe oder Datensicherheit verwendet werden. In manchen Fällen kann das Speichersystem 110 die Anzahl der in der Speicherzelle gespeicherten Datenbits anpassen, um den Verschleiß auszugleichen (Wear Leveling). Aus verschiedenen Gründen kann das Speichersystem 110, nachdem der Host 102 und das Speichersystem 110 den ZNS eingestellt und Informationen in Bezug auf den eingestellten ZNS miteinander ausgetauscht haben, die Anzahl der Datenbits, die in der Speicherzelle gespeichert sind, die in dem Speicherblock umfasst ist, der dem ZNS zugewiesen ist, unabhängig ändern. Es könnte jedoch ein Problem sein, dass eine voreingestellte Speicherkapazität des ZNS geändert wird, wenn die Anzahl der Datenbits, die in der Speicherzelle gespeichert sind, die in dem Speicherblock umfasst ist, der dem bereits eingestellten ZNS zugeordnet ist, geändert wird.
-
7 stellt ein Verfahren zum Betreiben eines Speichersystems gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
-
Unter Bezugnahme auf 7 kann das Verfahren zum Betreiben des Speichersystems 110 ein Starten einer Programmieroperation (Operation 708) umfassen. Beim Empfangen einer Schreibanforderung mit in der Speichervorrichtung 150 zu speichernden Schreibdaten von dem Host 102, bei dem es sich um eine externe Vorrichtung handelt, oder beim Erzeugen der Metadaten, die zum Steuern oder Verwalten einer internen Operation des Speichersystems 110 verwendet werden, könnte ein Ereignis oder ein Auslöser (Trigger) für die Programmieroperation erzeugt werden.
-
Das Speichersystem 110 kann als Antwort auf die Schreibanforderung des Hosts 102 (z.B. eine Host-Operation) prüfen oder bestimmen, ob die Programmieroperation zum Speichern von Hostdaten in der Speichervorrichtung 150 oder zum Speichern der Metadaten des Speichersystems 110 (Operation 710) dient.
-
Wenn sich die Programmieroperation auf die Host-Daten (HOST PROGRAM) bezieht, kann das Speichersystem 110 einen Betriebszustand in Bezug auf einen Speicherchip, eine Speicherebene oder einen Speicherblock prüfen, auf dem/der die Programmieroperation durchgeführt werden soll (Operation 712). Zum Beispiel kann das Speichersystem 110 die Host-Daten in einem Speicherblock, einer Speicherebene oder einem Speicherchip speichern, die einer Zone zugeordnet sind, die einer logischen Adresse entspricht, die mit den Host-Daten verbunden ist. Die Host-Daten und die logische Adresse werden von dem Host 102 eingegeben. Das Speichersystem 110 kann prüfen, ob in dem Speicherblock, der Speicherebene oder dem Speicherchip, in denen die Host-Daten gespeichert sind, ein Fehler aufgetreten ist, oder ob der Fehler behoben oder korrigiert ist, um den Betriebszustand bezüglich des Speicherblocks, der Speicherebene oder des Speicherchips zu bestimmen, bevor die Host-Daten an den entsprechenden Speicherort übertragen werden (Operation 712).
-
Wenn in dem Speicherblock, der Speicherebene oder dem Speicherchip, in dem/der die Host-Daten gespeichert sind, kein Fehler auftritt, kann das Speichersystem 110 die Host-Daten an den Speicherblock, die Speicherebene oder den Speicherchip übertragen (Operation 716). Wenn in dem Speicherblock, der Speicherebene oder dem Speicherchip, in dem/der die Host-Daten gespeichert sind, ein Fehler auftritt, kann das Speichersystem 110 zuerst den Fehler korrigieren und beheben, und dann kann das Speichersystem 110 die Host-Daten an den Speicherblock, die Speicherebene oder den Speicherchip übertragen (Operation 716). Das Speichersystem 110, das das zonierte Namensraumschema unterstützt, kann die von dem Host 102 übertragenen Host-Daten entsprechend der den Host-Daten zugeordneten logischen Adresse sequentiell speichern. Außerdem könnte es schwierig sein, die Host-Daten in einem einer Zone entsprechenden Speicherbereich sequentiell zu programmieren, wenn ein Fehler an einem bestimmten Speicherort in der Speichervorrichtung 150 auftritt. Um das zonierte Namensraumschemas zu unterstützen, kann das Speichersystem 110 die Host-Daten sequentiell programmieren, nachdem der entsprechende Speicherbereich wiederhergestellt oder sich von dem Fehler erholt hat. Zu diesem Zweck kann ein Übertragen der Host-Daten an die Speichervorrichtung 150 behindert oder blockiert werden, bis der Fehler in der Speichervorrichtung 150 korrigiert oder behoben ist. Wenn der Fehler korrigiert oder behoben ist, kann das Speichersystem 110 die Host-Daten an die Speichervorrichtung 150 übertragen.
-
Wenn die Host-Daten an den Speicherchip, die Speicherebene oder den Speicherblock in der Speichervorrichtung 150 übertragen werden, kann die Speichervorrichtung 150 die Host-Daten darin sequentiell programmieren (Operation 720). Zum Beispiel sind 10 Seiten in einem bestimmten Speicherblock umfasst, der einer bestimmten Zone zugeordnet ist. Wenn Daten in drei Seiten in einem bestimmten Speicherblock, der der entsprechenden Zone zugeordnet ist, gespeichert worden sind, kann ein Schreibzeiger der entsprechenden Zone auf die vierte Seite unter den 10 Seiten in dem Speicherblock zeigen bzw. verweisen. Wenn weitere Host-Daten, die einer anderen logischen Adresse der entsprechenden Zone entsprechen, empfangen werden, kann das Speichersystem 110 die Host-Daten auf der vierten Seite speichern. Wenn jedoch in dem entsprechenden Speicherblock ein Fehler auftritt, kann die Speichervorrichtung 150 den Speicherblock, in dem der Fehler auftritt, durch einen anderen Speicherblock ersetzen. Zu diesem Zweck kann das Speichersystem 110 die empfangenen Host-Daten auf der vierten Seite des neuen Speicherblocks speichern, nachdem es die Daten der ersten drei Seiten, die in dem Speicherblock gespeichert sind, in dem der Fehler auftritt, in einen neuen Speicherblock migriert hat.
-
Wenn sich die Programmieroperation auf die Metadaten (MATA/JOURNAL-PROGRAMM) bezieht, kann das Speichersystem 110 die Metadaten an einen Speicherchip, eine Speicherebene oder einen Speicherblock übertragen, auf dem/der die Programmieroperation durchgeführt werden soll (Operation 714). Wie oben beschrieben, können die Host-Daten und die Metadaten durch das Speichersystem 110, das das zonierte Namensraumschema anwendet, voneinander unterschieden werden. Die Host-Daten sollten sequentiell in einem Speicherbereich programmiert werden, der der Zone zugewiesen ist, die der logischen Adresse entspricht, aber es kann keine Beschränkungen für den Speicherort geben, an dem die Metadaten in der Speichervorrichtung 150 gespeichert sind. Da die Metadaten an einem beliebigen Speicherort oder an einem voreingestellten Speicherort in der Speichervorrichtung 150 gespeichert werden können, können die Metadaten an die Speichervorrichtung 150 unabhängig von einem Fehler, der in einem bestimmten Speicherblock, einer bestimmten Speicherebene oder einem bestimmten Speicherchip auftritt, die einer Zone zugeordnet sind, im Gegensatz zu den Host-Daten übertragen werden (Operation 714). Wenn die Metadaten an die Speichervorrichtung 150 übertragen sind, kann die Speichervorrichtung 150 die Metadaten programmieren (Operation 718).
-
Zum Beispiel kann das Speichersystem 110 die Metadaten auch dann übertragen, wenn ein Fehler in einem Speicherblock, einer Speicherebene oder einem Speicherchip auftritt, in dem/der Metadaten in der Speichervorrichtung 150 gespeichert werden. Das Speichersystem 110 muss nicht eine Übertragung der Metadaten abwarten, bis der Fehler korrigiert und behoben ist. Beispielsweise können Metadaten von einer ersten Seite bis zu einer dritten Seite in einem bestimmten Speicherblock, der in der Speichervorrichtung 150 umfasst ist, gespeichert werden, und das Speichersystem 110 kann versuchen, neue Metadaten in der vierten Seite desselben Speicherblocks zu speichern. Wenn ein Fehler in der vierten Seite auftritt, kann das Speichersystem 110 die neuen Metadaten in der fünften Seite und nicht in der vierten Seite speichern, da es keine Einschränkung gibt, Metadaten in einem Speicherbereich sequentiell zu speichern. Dementsprechend kann eine Operation zum Speichern der Metadaten anders ablaufen als die zum Speichern der Host-Daten. Selbst wenn an einem zum Speichern der Metadaten bestimmten Speicherort ein Fehler auftritt, wartet das Speichersystem 110 möglicherweise nicht auf eine Übertragung oder ein Programm der Metadaten, bis der Fehler korrigiert oder behoben ist.
-
8 stellt ein erstes Beispiel eines Programmoperationsverfahrens gemäß einem Betriebszustand eines Speicherchips gemäß einer Ausführungsform der vorliegenden Offenbarung dar. In 8 wird als Beispiel ein Fall beschrieben, in dem vier Speicherchips 292, 294, 296, 298 in der Speichervorrichtung 150 umfasst sind.
-
Unter Bezugnahme auf 8 kann das Speichersystem 110, das das zonierte Namensraumschema unterstützt, ein Die-Sperrmodul bzw. Die-Blocking-Modul 272 und ein Error-Handling-Modul bzw. Fehlerbehandlungsmodul 274 umfassen. Gemäß einer Ausführungsform können das Die-Blocking-Modul 272 und das Fehlerbehandlungsmodul 274 in dem unter Bezugnahme auf 1 beschriebenen Eingabe-/Ausgabe-Steuermodul 260 umfasst sein. In einer weiteren Ausführungsform kann das Die-Blocking-Modul 272 außerdem in dem Eingabe-/Ausgabe-Steuermodul 260 umfasst sein, und das Fehlerbehandlungsmodul 274 kann in der Speicherschnittstelle 142 umfasst sein.
-
Das Die-Blocking-Modul 272 kann Daten, die an die vier Speicherchips 292, 294, 296, 298 übertragen werden, gemäß den Betriebszuständen der vier Speicherchips 292, 294, 296, 298 blockieren. Unter Bezugnahme auf 8 tritt in dem ersten Speicherchip (Die 0) 292 ein Fehler auf. Das Fehlerbehandlungsmodul 274 kann in dem ersten Speicherchip (Die 0) 292 gespeicherte Daten lesen, um einen in dem ersten Speicherchip (Die 0) 292 auftretenden Fehler zu korrigieren und zu beheben, und dann die in dem ersten Speicherchip (Die 0) 292 gespeicherten Daten in dem dritten Speicherchip (Die 2) 296 speichern. Dabei kann ein Bereich von Lesedaten in dem ersten Speicherchip (Die 0) 292 auf der Grundlage eines Fehlertyps, eines behebbaren Bereichs des Fehlers oder dergleichen variieren. Während der in dem ersten Speicherchip (Die 0) 292 aufgetretene Fehler korrigiert oder behoben wird, könnte es schwierig sein, eine Operation zum Speichern neuer Daten in dem ersten Speicherchip (Die 0) 292 sowie in dem dritten Speicherchip (Die 2) 296 in der Speichervorrichtung 150 durchzuführen. Das Fehlerbehandlungsmodul 274 kann das Die-Blocking-Modul 272 über den Fehler informieren (z.B. welche Art von Fehler auftritt, welcher Speicher-Die bzw. Speicherchip zum Beheben oder Korrigieren des Fehlers verwendet wird oder dergleichen). Während das Fehlerbehandlungsmodul 274 den Fehler prüft und den Fehler korrigiert und behebt, kann das Die-Blocking-Modul 272, das Informationen über den Fehler von dem Fehlerbehandlungsmodul 274 empfängt, eine Übertragung von Daten zu dem ersten Speicherchip (Die 0) 292 und zu dem dritten Speicherchip (Die 2) 296 behindern oder blockieren. In 8 wird eine Programmieroperation (Meta-/Journal-Programm) von Metadaten, die in dem ersten Speicherchip (Die 0) 292 gespeichert werden sollen, blockiert oder behindert, so dass die Programmieroperation für die Metadaten verzögert werden könnte.
-
Der zweite Speicherchip (Die 1) 294 wird von dem Fehlerbehandlungsmodul 274 nicht zum Überprüfen eines Fehlers und zum Korrigieren und Beheben des Fehlers verwendet. Das Die-Blocking-Modul 272 wird einen Host-Befehl, der auf dem zweiten Speicherchip (Die 1) 294 durchgeführt werden soll, möglicherweise nicht blockieren oder behindern. Dementsprechend könnte der Host-Befehl an den zweiten Speicherchip (Die 1) 294 übertragen werden, so dass der zweite Speicherchip (Die 1) 294 eine dem Host-Befehl entsprechende Dateneingabe-/-ausgabeoperation durchführen kann.
-
9 stellt ein zweites Beispiel des Programmoperationsverfahrens gemäß dem Betriebszustand des Speicherchips gemäß einer Ausführungsform der vorliegenden Offenbarung dar. 9 stellt eine weitere Operation in einem Fall dar, in dem das Speichersystem 110 einen in einem ersten Speicherchip (Die 0) 292 auftretenden Fehler behebt oder korrigiert, indem es in dem ersten Speicherchip (Die 0) 292 gespeicherte Daten liest und die gelesenen Daten aus dem ersten Speicherchip (Die 0) 292 in einem dritten Speicherchip (Die 2) 296 speichert, wie die in 8 gezeigte Betriebsumgebung.
-
Unter Bezugnahme auf 9 ist es, während das Fehlerbehandlungsmodul 274 einen in dem ersten Speicherchip (Die 0) 292 der Speichervorrichtung 150 auftretenden Fehler korrigiert oder behebt, schwierig, eine Operation (Meta-/Journal-Programm) zum Speichern von Metadaten, bei denen es sich um neue Daten handelt, in dem ersten Speicherchip (Die 0) 292 und in dem dritten Speicherchip (Die 2) 296 durchzuführen, die von dem Fehlerbehandlungsmodul 274 verwendet werden. Dementsprechend kann das Speichersystem 110 eine Übertragung der Metadaten an den ersten Speicherchip (Die 0) 292 und den dritten Speicherchip (Die 2) 296 behindern oder blockieren, so dass eine Ausführung einer Operation zum Speichern der Metadaten (Meta/Journal-Programm) verzögert werden könnte.
-
Da sich die Ausführung der Operation zum Speichern von Metadaten (Meta/Journal-Programm) verzögert, könnte sich auch eine Ausführung einer Programmieroperation verzögern, die einem Host-Befehl entspricht. Zum Beispiel kann die Steuerung 130 Metadaten erzeugen (z.B. Zuordnungs- bzw. Abbildungsdaten, die eine logische Adresse und eine physikalische Adresse verbinden), wenn die Host-Daten oder migrierte oder kopierte Daten in der Speichervorrichtung 150 programmiert werden. Die Steuerung 130 kann die Metadaten vorübergehend in dem Speicher 144 speichern (z.B. in einem Puffer, der den Abbildungsdaten zugewiesen ist). Wenn der Puffer (oder ein Speicherbereich) für die Metadaten oder die Abbildungsdaten (z.B. eine in dem Speicher 144 gespeicherte Abbildungstabelle) voll ist, kann die Steuerung 130 eine Abbildungsaktualisierung oder einen Abbildungs-Flush durchführen, so dass die Abbildungsdaten in der Speichervorrichtung 150 programmiert werden und der Puffer oder die Abbildungstabelle gelöscht oder geleert werden kann. Wie in 9 gezeigt, kann, wenn die Operation zum Speichern von Metadaten in der Speichervorrichtung 150, wie z.B. eine Abbildungsaktualisierung oder ein Abbildungs-Flush (Meta/Journal-Programm), verzögert wird, die Operation der Steuerung (z.B. eine Erzeugung von Abbildungsdaten, die als Antwort auf einen Host-Befehl durch die Flash-Umwandlungsschicht 240 zum Speichern neuer, von dem Host 102 eingegebener Daten in der Speichervorrichtung 150 durchgeführt wird) abgewartet oder verzögert werden. In diesem Fall kann sich die Dateneingabe-/-ausgabeleistung des Speichersystems 110 verschlechtern.
-
10 stellt ein drittes Beispiel des Programmoperationsverfahrens gemäß dem Betriebszustand des Speicherchips gemäß einer Ausführungsform der vorliegenden Offenbarung dar. 10 stellt eine weitere Operation in einem Fall dar, in dem das Speichersystem 110 einen in einem ersten Speicherchip (Die 0) 292 auftretenden Fehler behebt oder korrigiert, indem es in dem ersten Speicherchip (Die 0) 292 gespeicherte Daten liest und die gelesenen Daten aus dem ersten Speicherchip (Die 0) 292 in einem dritten Speicherchip (Die 2) 296 speichert, wie die in 8 gezeigte Betriebsumgebung.
-
Unter Bezugnahme auf 10 kann das Speichersystem 110 ein Metadaten-Bypassing-Modul 278 und ein Metadaten-Pending-Modul 276 umfassen. Zwischen dem Metadaten-Bypassing-Modul 278 und dem Metadaten-Pending-Modul 276 kann ein Die-Blocking-Modul 272 angeordnet sein. Während das Fehlerbehandlungsmodul 274 einen in dem ersten Speicherchip (Die 0) 292 in der Speichervorrichtung 150 auftretenden Fehler korrigiert und behebt, kann das Die-Blocking-Modul 272 eine Übertragung von Daten zu dem ersten Speicherchip (Die 0) 292 und zu dem dritten Speicherchip (Die 2) 296, auf die das Fehlerbehandlungsmodul 274 für ein Fehlerbehebungs- und -korrekturverfahren zugreift, behindern oder blockieren. Das Metadaten-Bypassing-Modul 278 kann es jedoch ermöglichen, dass die Metadaten das Die-Blocking-Modul 272 umgehen, so dass die in den ersten Speicherchips (Die 0) 292 und den dritten Speicherchips (Die 2) 296 zu speichernden Metadaten für eine Operation zum Speichern der Metadaten in der Speichervorrichtung 150 (Meta/Journal-Programm) übertragen werden könnten. Das heißt, dass die in der Speichervorrichtung 150 zu programmierenden Metadaten das Die-Blocking-Modul 272 durch das Metadaten-Bypassing-Modul 278 umgehen dürfen, aber die in der Speichervorrichtung 150 als Antwort auf einen Host-Befehl zu programmierenden Host-Daten das Die-Blocking-Modul 278 möglicherweise nicht umgehen dürfen. Die Programmieroperation der Host-Daten könnte durch das Die-Blocking-Modul 272 verzögert werden.
-
In 10 kann eine Operation zum Speichern von Metadaten, die an den ersten Speicherchip (Die 0) 292 und den dritten Speicherchip (Die 2) 296 (Meta/Journal-Programm) übertragen werden, durch das Metadaten-Bypassing-Modul 278 durchgeführt werden, das es den Metadaten ermöglicht, das Die-Blocking-Modul 272 zu umgehen. Eine Operation zum Speichern der Metadaten, die das Die-Blocking-Modul 272 (Meta/Journal-Programm) umgangen haben, kann in dem Metadaten-Pending-Modul 276 in eine Warteschlange gestellt werden. Das Fehlerbehandlungsmodul 274 kann in dem ersten Speicherchip (Die 0) 292 gespeicherte Daten lesen und dann aus dem ersten Speicherchip (Die 0) 292 gelesene Daten in dem dritten Speicherchip (Die 2) 296 speichern, um den in dem ersten Speicherchip (Die 0) 292 auftretenden Fehler zu korrigieren oder zu beheben. Wenn eine in dem ersten Speicherchip (Die 0) 292 durchgeführte Fehlerbehebungs- und - korrekturoperation beendet ist, kann die Operation zum Speichern der Metadaten (Meta-/Journal-Programm), die von dem Metadaten-Pending-Modul 276 erwartet wird, auf dem ersten Speicherchip (Die 0) 292 durchgeführt werden. Das heißt, die vom Metadaten-Pending-Modul 276 erwarteten Metadaten können zu dem ersten Speicherchip (Die 0) 292 übertragen werden, und der erste Speicherchip (Die 0) 292 kann die übertragenen Metadaten darin programmieren (z.B. eine Seite oder einen Speicherblock, die/der in dem ersten Speicherchip (Die 0) 292 umfasst ist). In ähnlicher Weise kann, wenn eine in dem dritten Speicherchip (Die 2) 296 durchgeführte Fehlerbehebungs- und -korrekturoperation beendet ist, die Operation zum Speichern der Metadaten (Meta-/Journal-Programm), die von dem Metadaten-Pending-Modul 276 erwartet wird, in dem dritten Speicherchip (Die 2) 296 durchgeführt werden. Das heißt, die vom Metadaten-Pending-Modul 276 erwarteten Metadaten werden zu dem dritten Speicherchip (Die 2) 296 übertragen, und der dritte Speicherchip (Die 2) 296 kann die übertragenen Metadaten darin programmieren.
-
Unter Bezugnahme auf 9 und 10 kann die Steuerung 130, während die Metadaten, die das Die-Blocking-Modul 272 umgehen, von dem Metadaten-Pending-Modul 276 erwartet werden, neue Host-Daten empfangen, die zusammen mit einem Host-Befehl eingegeben werden, und die Flash-Übersetzungsschicht 240 kann eine Operation zum Speichern der neuen Host-Daten in der Speichervorrichtung 150 durchführen. Es ist möglich, dass vermieden wird, dass die Flash-Übersetzungsschicht 240 die Operation für die neuen Host-Daten abwartet oder verschiebt, da die Metadaten bereits an das Metadaten-Pending-Modul 276 übertragen worden sind und die Flash-Übersetzungsschicht 240 einen Puffer für die Metadaten, wie z.B. die Abbildungstabelle in dem Speicher 144, verwenden kann (z.B. Flush von Abbildungsdaten oder Aktualisierung von Abbildungsdaten in Arbeit) .
-
Wenn zum Beispiel die neuen Host-Daten, die zusammen mit dem Host-Befehl eingegeben werden, in dem zweiten Speicherchip (Die 1) oder in dem vierten Speicherchip (Die 3) programmiert werden, können die neuen Host-Daten das Die-Blocking-Modul 272 umgehen, so dass die neuen Host-Daten zu dem zweiten Speicherchip (Die 1) oder zu dem vierten Speicherchip (Die 3) übertragen werden können. Nach der Übertragung zu dem zweiten Speicherchip (Die 1) oder zu dem vierten Speicherchip (Die 3) können die neuen Host-Daten in dem zweiten Speicherchip (Die 1) oder in dem vierten Speicherchip (Die 3) ohne eine Verzögerung programmiert werden, die aufgrund eines Fehlers verursacht wird, der in einem anderen Speicherchip wie dem ersten Speicherchip (Die 0) auftritt. Andernfalls, wenn die neuen Host-Daten, die zusammen mit dem Host-Befehl eingegeben werden, in dem ersten Speicherchip (Die 0) oder in dem dritten Speicherchip (Die 2) programmiert werden, könnten die neuen Host-Daten das Die-Blocking-Modul 272 nicht umgehen. Die Flash-Übersetzungsschicht 240 kann jedoch eine Operation für die neuen Host-Daten ohne Verzögerung durchführen. Wenn die in dem ersten Speicherchip (Die 0) 292 oder in dem dritten Speicherchip (Die 2) 296 durch das Fehlerbehandlungsmodul 274 durchgeführte Fehlerbehebungs- und -korrekturoperation beendet ist, können die neuen Host-Daten, die durch das Die-Blocking-Modul 272 behindert oder blockiert wurden, freigegeben werden, und die neuen Host-Daten können an den ersten Speicherchip (Die 0) oder den dritten Speicherchip (Die 2) übertragen werden, so dass der erste Speicherchip (Die 0) oder der dritte Speicherchip (Die 2) die neuen Host-Daten darin programmieren kann.
-
11 stellt Programmoperationsverfahren gemäß einem Indikator, der einem Programmbefehl hinzugefügt wird, gemäß einer Ausführungsform der vorliegenden Offenbarung dar. Insbesondere beschreiben die drei Fälle (A), (B), (C) von 11 verschiedene Operationen zum Speichern von Metadaten (Meta/Journal-Programm) oder zum Speichern oder Lesen von Host-Daten gemäß einem Betriebszustand des ersten Speicherchips (Die 0) 292 in der Speichervorrichtung 150.
-
Unter Bezugnahme auf 8, 10 und den Fall (A) von 11 kann eine Operation zum Beheben und Korrigieren eines Fehlers, der in dem ersten Speicherchip (Die 0) 292 auftritt, aufgrund eines Fehlers, der in dem ersten Speicherchip (Die 0) 292 auftritt, gestartet werden. Das Fehlerbehandlungsmodul 274 kann Daten lesen, die in dem ersten Speicherchip (Die 0) 292 gespeichert sind, und die Daten zu einem anderen Speicherort migrieren, um den Fehler zu beheben. Während der Fehler in dem ersten Speicherchip (Die 0) 292 durch das Fehlerbehandlungsmodul 274 korrigiert oder behoben wird, ist der erste Speicherchip (Die 0) 292 beschäftigt, so dass eine Programmieroperation für neue Daten in dem ersten Speicherchip (Die 0) 292 nicht durchgeführt werden könnte. Damit die an den ersten Speicherchip (Die 0) 292 übertragenen neuen Daten von dem Metadaten-Pending-Modul 276 erwartet werden, kann der erste Speicherchip (Die 0) 292 das Metadaten-Pending-Modul 276 aktivieren oder einschalten (SET = 1), was verwendet wird, um das Metadaten-Pending-Modul 276 zu steuern. Der erste Speicherchip (Die 0) kann über das Meta-Write-Flag bzw. Meta-Schreib-Flag einen Betriebszustand an das Metadaten-Pending-Modul 276 übertragen. Das Metadaten-Pending-Modul 276 kann als Antwort auf den Betriebszustand des ersten Speicherchips (Die 0) 292 aktiviert werden, und das Metadaten-Pending-Modul 276 kann an den ersten Speicherchip (Die 0) 292 übertragene Daten halten (d.h. keine Datenübertragung an den ersten Speicherchip (Die 0) 292).
-
Unter Bezugnahme auf den Fall (B) von 11 kann das Fehlerbehandlungsmodul 274 aufgrund eines Fehlers, der in dem ersten Speicherchip (Die 0) 292 auftritt, eine Operation zum Beheben des Fehlers in dem ersten Speicherchip (Die 0) 292 starten. Während einer Fehlerbehebungsoperation kann das Metadaten-Pending-Modul 276 als Antwort auf einen Betriebszustand des ersten Speicherchips (Die 0) 292 (SET = 1) aktiviert werden, wie im Fall (A). Auch wenn das Metadaten-Pending-Modul 276 aktiviert ist, können die Metadaten zu dem ersten Speicherchip (Die 0) 292 übertragen werden, um eine Operation zum Speichern der Metadaten (Meta/Journal-Programm) durchzuführen. In diesem Fall kann ein Meta-Write-Flag gesetzt werden, damit die Metadaten im Gegensatz zu den Host-Daten, die vom Metadaten-Modul 276 erwartet werden, das Metadaten-Pending-Modul 276 umgehen können (Meta-Write-Flag: Löschen bzw. Clear). Gemäß einer Ausführungsform kann das Fehlerbehandlungsmodul 274 als Antwort auf das Meta-Write-Flag eine Operation des Lesens von in dem ersten Speicherchip (Die 0) 292 gespeicherten Daten vorübergehend unterbrechen oder stoppen, um einen Fehler in dem ersten Speicherchip (Die 0) 292 zu beheben.
-
Gemäß einer Ausführungsform kann das Metadaten-Pending-Modul 276 einen Puffer zum vorübergehenden Speichern von Daten umfassen, die als Antwort auf einen Betriebszustand des ersten Speicherchips (Die 0) 292 übertragen werden sollen. Das Metadaten-Pending-Modul 276 kann eine Übertragung oder das Anhängen von in dem Puffer gespeicherten Daten als Antwort auf einen Betriebszustand eines Speicherchips, einer Speicherebene oder eines Speicherblocks steuern, die in der Speichervorrichtung 150 umfasst sind. Während beispielsweise der erste Speicherchip (Die 0) 292 eine Dateneingabe-/-ausgabeoperation durchführt, kann das Metadaten-Pending-Modul 276 Host-Daten halten, die an den ersten Speicherchip (Die 0) 292 übertragen werden sollen. Im Gegensatz zu den Host-Daten können jedoch die in dem ersten Speicherchip (Die 0) 292 zu speichernden Metadaten übertragen werden. Andererseits, wenn der erste Speicherchip (Die 0) 292 eine Dateneingabe-/-ausgabeoperation aufgrund eines darin auftretenden Fehlers nicht durchführen konnte, kann Metadaten-Pending-Modul 276 eine Übertragung von Host-Daten oder Metadaten an den ersten Speicherchip (Die 0) 292 stoppen.
-
Unter Bezugnahme auf den Fall (C) von 11 könnte, wenn das Fehlerbehandlungsmodul 274 Fehler in dem ersten Speicherchip (Die 0) 292 repariert oder behebt, das Metadaten-Pending-Modul 276 inaktiviert werden. (Clear = 0). Wenn das Metadaten-Pending-Modul 276 deaktiviert ist, kann das Metadaten-Pending-Modul 276 den Puffer steuern, um die in dem Puffer umfassten Daten sequentiell in den ersten Speicherchip (Die 0) 292 zu übertragen. Wenn das Metadaten-Pending-Modul 276 deaktiviert ist, hält der Puffer keine gespeicherten Daten, so dass die gespeicherten Daten in dem Puffer sequentiell an die Speichervorrichtung 150 ausgegeben werden können. Dementsprechend werden die von der Flash-Übersetzungsschicht (FTL) 240 verarbeiteten Metadaten oder Host-Daten, wenn das Metadaten-Pending-Modul 276 die Metadaten oder die Host-Daten nicht hält, sequentiell an den ersten Speicherchip (Die 0) 292 übertragen, so dass der erste Speicherchip (Die 0) 292 die übertragenen Daten sequentiell darin programmieren kann.
-
12 stellt eine Wirkung eines Programmoperationsverfahrens gemäß einem Betriebszustand eines Speicherchips gemäß einer Ausführungsform der vorliegenden Offenbarung dar. Wie unter Bezugnahme auf die 10 und 11 beschrieben, zeigt 12, dass das Speichersystem 110 das Metadaten-Bypassing-Modul 278, das Die-Blocking-Modul 272 und das Metadaten-Pending-Modul 276 umfassen kann. 12 zeigt Operationen in dem Speichersystem 110, wenn das Fehlerbehandlungsmodul 274 Daten liest, die in dem ersten Speicherchip (Die 0) 292 gespeichert sind, und die Daten in dem dritten Speicherchip (Die 2) 296 speichert, um einen Fehler zu korrigieren oder zu beheben, der in dem ersten Speicherchip (Die 0) 292 aufgetreten ist, der einen Betriebszustand aufweist, der dem von 10 ähnlich ist.
-
Da der erste Speicherchip (Die 0) 292 und der dritte Speicherchip (Die 2) 296 zur Korrektur oder Behebung des Fehlers verwendet werden, kann eine Übertragung der mit dem Host-Befehl eingegebenen Host-Daten, die an den ersten Speicherchip (Die 0) 292 und den dritten Speicherchip (Die 2) 296 übertragen werden sollen, durch das Die-Blocking-Modul 272 behindert oder blockiert werden. Den in dem ersten Speicherchip (Die 0) 292 und in dem dritten Speicherchip (Die 2) 296 zu speichernden Metadaten kann jedoch durch das Metadaten-Bypassing-Modul 278 ermöglicht werden, dass sie das Die-Blocking-Modul 272 umgehen. Wenn der erste Speicherchip (Die 0) 292 und der dritte Speicherchip (Die 2) 296 funktionsfähig sind (z.B. der erste Speicherchip (Die 0) 292 und der dritte Speicherchip (Die 2) 296 in der Lage sind, Dateneingabe-/- ausgabeoperationen wie eine Lese- oder Schreiboperation zur Fehlerbehebung durchzuführen), kann das Metadaten-Pending-Modul 276 die Metadaten an den ersten Speicherchip (Die 0) 292 und den dritten Speicherchip (Die 2) 296 übertragen, ohne sie zu halten, um eine Operation zum Speichern der Metadaten (Meta/Journal-Programm) durchzuführen.
-
Da der zweite Speicherchip (Die 1) 294 und der vierte Speicherchip (Die 3) 298 nicht für die Fehlerbehebungs- und -korrekturoperation verwendet werden, können die Host-Daten, die zusammen mit dem Host-Befehl eingegeben werden, in den zweiten Speicherchip (Die 1) 294 und den vierten Speicherchip (Die 3) 298 geliefert werden. Der zweite Speicherchip (Die 1) 294 und der vierte Speicherchip (Die 3) 298 können die Host-Daten sequentiell programmieren.
-
Unter Bezugnahme auf 12 kann die Flash-Übersetzungsschicht (FTL) 240 eine Operation für neue Daten ohne eine Verzögerung durchführen, die durch anhängige Metadaten verursacht wird, die für eine Programmierung in einem für die Fehlerbehebungs- und -korrekturoperation verwendeten Chip vorgesehen sind, da die Metadaten an einer voreingestellten Position oder einer beliebigen Position innerhalb der Speichervorrichtung 150 programmiert werden können, ohne dass sie anstehen. Demzufolge kann die Dateneingabe-/-ausgabeleistung des Speichersystems 110 verbessert werden.
-
13 stellt ein erstes Beispiel eines Speichersystems gemäß einer anderen Ausführungsform der vorliegenden Offenbarung dar.
-
Unter Bezugnahme auf 13 kann das Speichersystem 110 eine Steuerung 130 und eine Speichervorrichtung 150 umfassen. Die Speichervorrichtung 150 kann die Vielzahl von Speicherchips 292, 294 oder die Vielzahl von Speicherblöcken 152, 154, 156 umfassen, die unter Bezugnahme auf die 1 bis 2 beschrieben sind.
-
Die Steuerung 130 kann eine Flash-Übersetzungsschicht (FTL) 240 und ein Host-Prüfmodul 262 umfassen. Unter Bezugnahme auf 1 bis 4 kann die Flash-Übersetzungsschicht (FTL) 240 einen Speicherort zum Speichern von Host-Daten, die von dem Host 102 eingegeben werden, in der Speichervorrichtung 150 bestimmen und Metadaten erzeugen, die Abbildungsdaten oder Abbildungsinformationen umfassen, die mit den gespeicherten Daten verbunden sind bzw. in Zusammenhang stehen. Die Steuerung 130, die die Flash-Übersetzungsschicht (FTL) 240 umfasst, kann die Host-Daten und die Metadaten an die Speichervorrichtung 150 übertragen.
-
Die Flash-Übersetzungsschicht (FTL) 240 kann einen Programmbefehl erzeugen, der mit den Host-Daten oder den Metadaten verbunden ist, die in der Speichervorrichtung 150 gespeichert werden sollen. Das Host-Prüfmodul 262 kann dem von der Flash-Umwandlungsschicht (FTL) 240 erzeugten Programmbefehl eine Kennung oder einen Schlüsselwert hinzufügen. Beispielsweise kann die Kennung oder der Schlüsselwert, die/der dem Programmbefehl zum Speichern der Host-Daten in der Speichervorrichtung 150 zugeordnet ist, auf „1“ gesetzt werden. Andererseits kann die Kennung oder der Schlüsselwert, die/der dem Programmbefehl zum Speichern der Metadaten in der Speichervorrichtung 150 zugeordnet ist, auf „0“ gesetzt werden.
-
Wenn die Kennung oder der Schlüsselwert, die/der in dem Programmbefehl umfasst ist, gesetzt ist, kann die Speichervorrichtung 150 erkennen, ob es sich bei den zusammen mit dem Programmbefehl übertragenen Schreibdaten um Metadaten oder Host-Daten handelt. In einer Ausführungsform, in der das Metadaten-Bypass-Modul 278, das Die-Blocking-Modul 272 und/oder das Metadaten-Pending-Modul 276 zwischen der Flash-Übersetzungsschicht (FTL) 240 und der Speichervorrichtung 150 angeordnet ist, kann das Metadaten-Bypass-Modul 278, das Die-Blocking-Modul 272 oder das Metadaten-Pending-Modul 276 die Kennung oder den Schlüsselwert, die/der dem Programmbefehl hinzugefügt ist, überprüfen, um zu bestimmen, ob der an die Speichervorrichtung 150 übertragene Programmbefehl die Metadaten oder die Host-Daten betrifft.
-
14 stellt ein zweites Beispiel eines Speichersystems gemäß einer anderen Ausführungsform der vorliegenden Offenbarung dar.
-
Unter Bezugnahme auf 14 kann das Metadaten-Bypassing-Modul 278 zwischen der Flash-Übersetzungsschicht (FTL) 240 und der Speichervorrichtung 150 in dem Speichersystem 110 angeordnet sein.
-
Wenn in der Speichervorrichtung 150 ein Fehler auftritt, kann die Speichervorrichtung 150 Informationen über den Fehler an das Metadaten-Bypass-Modul 278 melden. Die Speichervorrichtung 150 kann eine Antwort bezüglich eines Programmbefehls, bei dem ein Fehler aufgetreten ist, an die Flash-Übersetzungsschicht 240 senden bzw. übertragen. Ferner kann die Speichervorrichtung 150 der Antwort eine Kennung hinzufügen, die dem Programmbefehl entspricht, der mit dem aufgetretenen Fehler verbunden ist. Auf der Grundlage der von der Speichervorrichtung 150 übertragenen Kennung kann das Metadaten-Bypass-Modul 278 aktiviert werden. Wenn zum Beispiel die Speichervorrichtung 150 eine Antwort in Bezug auf den Programmbefehl, der mit dem aufgetretenen Fehler verbunden ist, an die Flash-Übersetzungsschicht 240 überträgt, wird die an den entsprechenden Programmbefehl angehängte Kennung auf „1“ gesetzt. Wenn die Kennung „1“ ist, könnte das Metadaten-Bypass-Modul 278 aktiviert werden.
-
Auf der Grundlage der Kennung kann das Metadaten-Bypass-Modul 278 bestimmen, ob die Metadaten an die Speichervorrichtung 150 übertragen werden sollen. Die Speichervorrichtung 150 kann die Kennung in Abhängigkeit davon setzen, ob die Metadaten in einem Prozess des Korrigierens oder Behebens eines darin aufgetretenen Fehlers programmiert werden können. Gemäß einer Ausführungsform kann die Kennung auf „1“ gesetzt werden, während die Speichervorrichtung 150 eine Dateneingabe-/- ausgabeoperation (z.B. eine Leseoperation, eine Schreiboperation usw.) zum Korrigieren oder Beheben des Fehlers durchführt. Wenn die Kennung „1“ ist, kann ermöglicht werden, dass die Metadaten an die Speichervorrichtung 150 übertragen werden, aber es ist möglicherweise nicht erlaubt, dass die Host-Daten an die Speichervorrichtung 150 übertragen werden. Ist die Kennung dagegen „0“, kann das Metadaten-Bypass-Modul 278 deaktiviert werden. Wenn das Metadaten-Bypass-Modul 278 deaktiviert ist, kann das Metadaten-Bypass-Modul 278 erlauben, dass sowohl die Host-Daten als auch die Metadaten an die Speichervorrichtung 150 übertragen werden.
-
15 stellt ein drittes Beispiel eines Speichersystems gemäß einer anderen Ausführungsform der vorliegenden Offenbarung dar.
-
Unter Bezugnahme auf 15 wird eine Operation beschrieben, bei der das in dem Speichersystem 110 umfasste Metadaten-Bypass-Modul 278 aktiviert wird.
-
Unter Bezugnahme auf 15 kann ein von der Flash-Übersetzungsschicht (FTL) 240 an die Speichervorrichtung 150 übertragener Programmbefehl eine Kennung oder einen Schlüsselwert umfassen. Zum Beispiel wird die Kennung oder der Schlüsselwert, die/der in dem Programmbefehl zum Speichern von Host-Daten in der Speichervorrichtung 150 umfasst ist, auf „1“ gesetzt. Die Kennung oder der Schlüsselwert, die/der in dem Programmbefehl zum Speichern von Metadaten in der Speichervorrichtung 150 umfasst ist, kann auf „0“ gesetzt werden.
-
Das Metadaten-Bypass-Modul 278 kann aktiviert werden, wenn die Kennung des Programmbefehls „1“ ist. Das Metadaten-Bypass-Modul 278 kann den entsprechenden Programmbefehl an die Flash-Übersetzungsschicht (FTL) 240 zurückgeben (Rückkehr zur FTL). Ist die Kennung des Programmbefehls dagegen „0“, kann das Metadaten-Umgehungsmodul 278 den entsprechenden Programmbefehl an die Speichervorrichtung 150 übertragen (Ausgabe an den Speicher).
-
16 stellt ein viertes Beispiel eines Speichersystems gemäß einer anderen Ausführungsform der vorliegenden Offenbarung dar.
-
Unter Bezugnahme auf 16 kann das Metadaten-Pending-Modul 276 zwischen der Flash-Übersetzungsschicht (FTL) 240 und der Speichervorrichtung 150 in dem Speichersystem 110 angeordnet sein. Ein Programmbefehl 270 zum Speichern von Metadaten in der Speichervorrichtung 150 kann von der Flash-Übersetzungsschicht (FTL) 240 an das Metadaten-Pending-Modul 276 übertragen werden. Da sich der Programmbefehl 270 auf die Metadaten bezieht, kann in diesem Fall eine in dem Programmbefehl 270 umfasste Kennung auf „0“ gesetzt werden.
-
Das Metadaten-Pending-Modul 276 kann den Programmbefehl 270 und die Metadaten vorübergehend in einem Puffer speichern. Danach kann das Metadaten-Pending-Modul 276 prüfen, ob in der Speichervorrichtung 150 eine Operation zur Fehlerprüfung, Fehlerkorrektur oder Fehlerbehebung durchgeführt wird (① Check Pending). Dabei kann die Operation zur Fehlerprüfung, Fehlerkorrektur oder Fehlerbehebung einzeln oder unabhängig in bestimmten Bereichen durchgeführt werden, die in der Speichervorrichtung 150 umfasst sind. Der Speicherbereich, der an der Operation zur Fehlerprüfung, Fehlerkorrektur oder Fehlerbehebung beteiligt ist, kann je nach Art des Fehlers, einer Größe des Fehlers und eines Speicherorts, an dem der Fehler aufgetreten ist, variieren. Wenn die Operation zur Fehlerprüfung, Fehlerkorrektur oder Fehlerbehebung in jedem Bereich der Speichervorrichtung 150 beendet ist, kann das Metadaten-Pending-Modul 276 den Programmbefehl 270 und die Metadaten, die vorübergehend in dem Puffer gespeichert werden, an jeden Speicherbereich in der Speichervorrichtung 150 übertragen (② Ausgabe Pending-Befehl). Die Speichervorrichtung 150 kann den Programmbefehl 270 und die Metadaten empfangen, um die Metadaten an einem voreingestellten Speicherort oder einem beliebigen Speicherort zu programmieren.
-
17 stellt ein fünftes Beispiel eines Speichersystems gemäß einer anderen Ausführungsform der vorliegenden Offenbarung dar.
-
Unter Bezugnahme auf 17 können das Metadaten-Bypass-Modul 278 und das Metadaten-Pending-Modul 276 zwischen der Flash-Übersetzungsschicht (FTL) 240 und der Speichervorrichtung 150 in dem Speichersystem 110 umfasst sein.
-
Das Metadaten-Pending-Modul 276 kann die in jedem Bereich der Speichervorrichtung 150 durchgeführte Operation zur Fehlerprüfung, Fehlerkorrektur oder Fehlerbehebung überprüfen und überwachen, ob die Operation zur Fehlerprüfung, Fehlerkorrektur oder Fehlerbehebung beendet ist. Das Metadaten-Pending-Modul 276 kann das Metadaten-Bypass-Modul 278 für jeden Speicherbereich deaktivieren, wenn die Operation zur Fehlerprüfung, Fehlerkorrektur oder Fehlerbehebung in jedem Speicherbereich beendet ist. Wenn das Metadaten-Bypass-Modul 278 deaktiviert ist, können zumindest Daten aus den Host-Daten oder den Metadaten sequentiell an die Speichervorrichtung 150 übertragen werden.
-
Wie oben beschrieben, kann ein Speichersystem oder ein Datenverarbeitungssystem gemäß einer Ausführungsform der vorliegenden Offenbarung eine Verzögerung bei einer Programmieroperation aufgrund eines Fehlers in einer nichtflüchtigen Speichervorrichtung, die einen nach Zonen unterteilten Namensraum unterstützt, verringern oder vermeiden.
-
Darüber hinaus kann das Speichersystem gemäß einer Ausführungsform der vorliegenden Offenbarung Host-Daten, die einem durch Zonen unterteilten Namensraum entsprechen, in einer Speichervorrichtung speichern, die einen Speicherchip umfasst, der keinen Schreib-Cache umfasst, so dass eine Geschwindigkeit der Programmieroperation in Bezug auf Host-Daten verbessert werden kann.
-
Die hier beschriebenen Verfahren, Prozesse und/oder Operationen bzw. Vorgänge können durch Codes oder Anweisungen durchgeführt werden, die von einem Computer, einem Prozessor, einer Steuerung (Controller) oder einer anderen Signalverarbeitungsvorrichtung ausgeführt werden. Der Computer, der Prozessor, die Steuerung oder eine andere Signalverarbeitungsvorrichtung können die hier beschriebenen sein oder zusätzlich zu den hier beschriebenen Elementen eingesetzt werden. Da die Algorithmen, die die Grundlage der Verfahren (oder der Operationen des Computers, des Prozessors, der Steuerung oder einer anderen Signalverarbeitungsvorrichtung) bilden, detailliert beschrieben sind, können der Code oder die Anweisungen zur Realisierung der Operationen der Verfahrensausführungsformen den Computer, den Prozessor, die Steuerung oder eine andere Signalverarbeitungsvorrichtung in einen Spezialprozessor zum Durchführen der Verfahren hierin umwandeln.
-
Eine andere Ausführungsform kann auch ein computerlesbares Medium umfassen, z.B. ein nichtflüchtiges computerlesbares Medium, um den oben beschriebenen Code oder die Anweisungen zu speichern. Bei dem computerlesbaren Medium kann es sich um einen flüchtigen oder nichtflüchtigen Speicher oder ein anderes Speichergerät handeln, das abnehmbar oder fest mit dem Computer, dem Prozessor, der Steuerung oder einer anderen Signalverarbeitungsvorrichtung gekoppelt sein kann, die den Code oder die Anweisungen zum Durchführen der Verfahrensausführungsformen oder Operationen der Vorrichtungsausführungsformen ausführen sollen.
-
Die Steuerungen, Prozessoren, Steuerschaltungen, Vorrichtungen, Module, Einheiten, Multiplexer, Logik, Schnittstellen, Decoder, Treiber, Generatoren und andere signalerzeugende und -verarbeitende Merkmale der hier offenbarten Ausführungsformen können beispielsweise realisiert sein in nichtflüchtiger Logik, die Hardware, Software oder beides umfassen kann. Wenn sie zumindest teilweise in Hardware realisiert sind, können die Steuerungen, Prozessoren, Steuerschaltungen, Vorrichtungen, Module, Einheiten, Multiplexer, Logik, Schnittstellen, Decoder, Treiber, Generatoren und andere signalerzeugende und -verarbeitende Merkmale beispielsweise aus einer Vielzahl integrierter Schaltungen bestehen, einschließlich, aber nicht beschränkt auf eine anwendungsspezifische integrierte Schaltung, ein feldprogrammierbares Gate-Array, eine Kombination von Logikgattern, ein System-on-Chip, einen Mikroprozessor oder eine andere Art von Verarbeitungs- oder Steuerschaltung.
-
Wenn sie zumindest teilweise in Software realisiert sind, können die Steuerungen, Prozessoren, Steuerschaltungen, Vorrichtungen, Module, Einheiten, Multiplexer, Logik, Schnittstellen, Decoder, Treiber, Generatoren und andere signalerzeugende und -verarbeitende Funktionen beispielsweise einen Speicher oder ein anderes Speichergerät zum Speichern von Code oder Anweisungen umfassen, die beispielsweise von einem Computer, einem Prozessor, einem Mikroprozessor, einer Steuerung oder einer anderen Signalverarbeitungsvorrichtung ausgeführt werden. Bei dem Computer, dem Prozessor, dem Mikroprozessor, der Vorrichtung oder einer anderen Signalverarbeitungsvorrichtung kann es sich um die hierin beschriebenen Elemente handeln oder um eine zusätzliche Vorrichtung zu den hierin beschriebenen Elementen. Da die Algorithmen, die die Grundlage der Verfahren (oder Operationen des Computers, Prozessors, Mikroprozessors, der Steuerung oder einer anderen Signalverarbeitungsvorrichtung) bilden, detailliert beschrieben sind, können der Code oder die Anweisungen zur Realisierung der Operationen der Verfahrensausführungen den Computer, Prozessor, die Steuerung oder eine andere Signalverarbeitungsvorrichtung in einen Spezialprozessor zum Durchführen der hier beschriebenen Verfahren umwandeln.
-
Während die vorliegende Lehren in Bezug auf die spezifischen Ausführungsformen dargestellt und beschrieben worden sind, wird es für den Fachmann im Lichte der vorliegenden Offenbarung offensichtlich sein, dass verschiedene Änderungen und Modifikationen vorgenommen werden können, ohne vom Grundgedanken und Umfang der Offenbarung, wie sie in den folgenden Ansprüchen definiert ist, abzuweichen. Darüber hinaus können die Ausführungsformen kombiniert werden, um zusätzliche Ausführungsformen zu bilden.