-
TECHNISCHES GEBIET
-
Eine oder mehrere hierin beschriebene Ausführungsformen der vorliegenden Offenbarung betreffen eine Speichervorrichtung, ein Speichersystem und ein Betriebsverfahren dafür, und insbesondere eine Vorrichtung und ein Verfahren zum Programmieren von Daten in einer nichtflüchtigen Speichervorrichtung.
-
HINTERGRUND
-
Ein Datenverarbeitungssystem umfasst ein Speichersystem oder ein Datenspeichergerät. Das Datenverarbeitungssystem kann derart entwickelt werden, dass es umfangreichere Daten in dem Datenspeichergerät speichert, Daten in dem Datenspeichergerät schneller speichert und in dem Datenspeichergerät gespeicherte Daten schneller liest. Das Speichersystem oder das Datenspeichergerät kann nichtflüchtige Speicherzellen und/oder flüchtige Speicherzellen zum Speichern von Daten umfassen.
-
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 Leistungsverschlechterung des Speichersystems reduzieren und dadurch die Nutzungseffizienz der Speichervorrichtung verbessern.
-
In einer Ausführungsform kann eine Speichervorrichtung umfassen eine erste Speichergruppe, die eine Vielzahl von ersten nichtflüchtigen Speicherzellen umfasst, die in der Lage sind, Multi-Bit-Daten (Mehrbitdaten) zu speichern; eine zweite Speichergruppe, die eine Vielzahl von zweiten nichtflüchtigen Speicherzellen umfasst, die in der Lage sind, Single-Bit-Daten (Einzelbitdaten) zu speichern; und eine Programmieroperationssteuerung, die eingerichtet ist, um die Mehrbitdaten auf der Grundlage von Daten aufzubauen, die von einer externen Vorrichtung eingegeben werden, eine logische Operation in Bezug auf partielle Daten bzw. Teildaten unter den Multi-Bit-Daten durchzuführen, um eine Parität zu erzeugen, die Parität in der zweiten Speichergruppe zu programmieren, nachdem die partiellen Daten in der ersten Speichergruppe programmiert wurden, eine Verifizierungsoperation in Bezug auf die partiellen Daten durchzuführen, nachdem ein plötzliches Abschalten (Sudden Power Off - SPO) auftritt, die partiellen Daten auf der Grundlage der Parität und eines Ergebnisses der Verifizierungsoperation wiederherzustellen und wiederhergestellte partielle Daten in der ersten Speichergruppe zu programmieren.
-
Die Programmieroperationssteuerung kann ferner eingerichtet sein, um eine Fertigstellungsmeldung auszugeben, die mit dem Programmieren der partiellen Daten in Zusammenhang steht, nachdem die partiellen Daten nacheinander in der ersten Speichergruppe programmiert worden sind.
-
Die Programmieroperationssteuerung kann die Parität in der zweiten Speichergruppe nach dem Ausgeben der Fertigstellungsmeldung programmieren.
-
Die partiellen Daten können Daten des niedrigstwertigen Bits (Least Significant Bit - LSB) unter den Multi-Bit-Daten umfassen. Die logische Operation kann eine Exklusiv-ODER (XOR)-Operation umfassen, die durchgeführt wird, während die Programmieroperationssteuerung die Multi-Bit-Daten in die erste Speichergruppe durch eine mehrstufige (Multi-Step-) Programmieroperation programmiert, die einer Bitanzahl der Multi-Bit-Daten entspricht.
-
Die Programmieroperationssteuerung ist ferner eingerichtet, um die Multi-Bit-Daten in die erste Speichergruppe durch eine binäre Programmieroperation bzw. Binärprogrammieroperation und eine Foggy-Fine-Programmieroperation zu programmieren. Die partiellen Daten können Daten umfassen, die in einer binären Programmieroperation programmiert werden.
-
Die Programmieroperationssteuerung kann die partiellen Daten auf der Grundlage der programmierten Werte, die den partiellen Daten in der ersten Speichergruppe und der Parität in der zweiten Speichergruppe entsprechen, während der Verifizierungsoperation wiederherstellen, die nach der Wiederaufnahme der Stromversorgung durchgeführt wird.
-
Die Programmieroperation kann eine Operation zum Bestimmen auf der Grundlage eines Ergebnisses einer Verifizierungsoperation umfassen, ob die Multi-Bit-Daten nacheinander programmiert worden sind, nachdem die wiederhergestellten partiellen Daten in der ersten Speichergruppe programmiert wurden.
-
Die Programmieroperationssteuerung kann ferner eingerichtet sein, um vor dem Durchführen der logischen Operation einen Sicherungs- bzw. Backupbereich auf der Grundlage eines Attributs der Multi-Bit-Daten zu bestimmen.
-
Die Programmieroperationssteuerung ist ferner eingerichtet, um eine Wiederherstellungsoperation für einen Fehler in den in der ersten Speichergruppe gespeicherten partiellen Daten durchzuführen und die partiellen Daten unter den Multi-Bit-Daten in der zweiten Speichergruppe während der Wiederherstellungsoperation zu sichern.
-
Die erste Speichergruppe und die zweite Speichergruppe können in verschiedenen Speicherblöcken eines einzigen Speicherchips umfasst sein.
-
Die Programmieroperationssteuerung kann in dem Speicherchip umfasst sein.
-
Die Programmieroperationssteuerung kann über einen Datenkanal mit einem Speicherchip gekoppelt werden, der die erste Speichergruppe und die zweite Speichergruppe umfasst.
-
Die Speichervorrichtung umfasst ferner einen Cache-Puffer, der die partiellen Daten vorübergehend speichert, und mehrere Seitenpuffer, die mit der ersten Speichergruppe und der zweiten Speichergruppe gekoppelt sind, um die vom Cache-Puffer übertragenen partiellen Daten zu speichern.
-
Die Programmieroperationssteuerung kann eine Paritätserzeugungsmaschine umfassen, die derart eingerichtet ist, dass sie die Parität auf der Grundlage der von dem Cache-Puffer zu den mehreren Seitenpuffern übertragenen partiellen Daten erzeugt.
-
In einer anderen Ausführungsform kann ein Speichersystem zumindest umfassen einen Speicherchip, der eine erste Speichergruppe umfasst, die eine Vielzahl von ersten nicht-flüchtigen Speicherzellen umfasst, die in der Lage sind, Multi-Bit-Daten zu speichern, und eine zweite Speichergruppe, die eine Vielzahl von zweiten nicht-flüchtigen Speicherzellen umfasst, die in der Lage sind, Single-Bit-Daten zu speichern; und zumindest eine Programmieroperationssteuerung, die eingerichtet ist, um die Multi-Bit-Daten auf der Grundlage von Schreibdaten, die von einer externen Vorrichtung eingegeben werden, aufzubauen, eine logische Operation in Bezug auf partielle Daten unter den Multi-Bit-Daten durchzuführen, um eine Parität zu erzeugen, die Parität in der zweiten Speichergruppe zu programmieren, nachdem die partiellen Daten in der ersten Speichergruppe programmiert wurden, eine Verifizierungsoperation in Bezug auf die partiellen Daten durchzuführen, nachdem eine plötzliche Stromabschaltung (SPO) auftritt, die partiellen Daten auf der Grundlage der Parität und eines Ergebnisses der Verifizierungsoperation wiederherzustellen, und wiederhergestellte partiellen Daten in der ersten Speichergruppe zu programmieren.
-
Das Speichersystem kann ferner eine Steuerung umfassen, die über einen Datenkanal mit dem zumindest einen Speicherchip gekoppelt und derart eingerichtet ist, dass sie die Schreibdaten von der externen Vorrichtung empfängt und einen Speicherplatz zum Speichern der Multi-Bit-Daten in der ersten Speichergruppe bestimmt.
-
Die Steuerung kann ferner eingerichtet sein, um auf der Grundlage eines Attributs der Multi-Bit-Daten einen Sicherungsbereich zu bestimmen.
-
Die zumindest eine Programmieroperationssteuerung kann in der Steuerung umfasst sein.
-
Die zumindest eine Programmieroperationssteuerung kann ferner eingerichtet sein, um eine Wiederherstellungsoperation für einen Fehler in den in der ersten Speichergruppe gespeicherten partielle Daten durchzuführen und die partiellen Daten unter den Multi-Bit-Daten während der Wiederherstellungsoperation in der zweiten Speichergruppe zu sichern.
-
Die zumindest eine Programmieroperationssteuerung kann in dem zumindest einen Speicherchip umfasst sein.
-
Die zumindest eine Programmieroperationssteuerung kann ferner eingerichtet sein, um eine Fertigstellungsmeldung auszugeben, die mit dem Programmieren der partiellen Daten in Zusammenhang steht, nachdem die partiellen Daten nacheinander in der ersten Speichergruppe programmiert worden sind.
-
Die zumindest eine Programmieroperationssteuerung kann die Parität in der zweiten Speichergruppe nach dem Ausgeben der Fertigstellungsmeldung programmieren.
-
Die partiellen Daten können Daten des niedrigstwertigen Bits (LSB) unter den Multi-Bit-Daten umfassen. Die logische Operation umfasst eine Exklusiv-ODER (XOR)-Verknüpfung, die durchgeführt wird, während die Programmieroperationssteuerung die Multi-Bit-Daten in die erste Speichergruppe durch eine mehrstufige Programmieroperation programmiert, die einer Bitzahl der Multi-Bit-Daten entspricht.
-
Die zumindest eine Programmieroperationssteuerung kann ferner eingerichtet sein, um die Multi-Bit-Daten in die erste Speichergruppe durch eine binäre Programmieroperation und eine Foggy-Fine-Programmieroperation zu programmieren. Die partiellen Daten können Daten umfassen, die in der binären Programmieroperation programmiert werden.
-
Die zumindest eine Programmieroperationssteuerung kann die partiellen Daten auf der Grundlage von programmierten Werten, die den partiellen Daten in der ersten Speichergruppe und der Parität in der zweiten Speichergruppe entsprechen, während der Verifizierungsoperation wiederherstellen, die nach der Wiederaufnahme der Stromversorgung durchgeführt wird.
-
Die zumindest eine Programmieroperationssteuerung kann auf der Grundlage eines Ergebnisses einer Verifizierungsoperation bestimmen, ob die Multi-Bit-Daten nacheinander programmiert worden sind, nachdem die wiederhergestellten partiellen Daten in der ersten Speichergruppe programmiert wurden.
-
Die erste Speichergruppe und die zweite Speichergruppe können in verschiedenen Speicherblöcken eines einzigen Speicherchips umfasst sein.
-
In einer anderen Ausführungsform kann ein Betriebsverfahren einer Speichervorrichtung umfassen ein Programmieren einer Vielzahl von Daten des niedrigstwertigen Bits (LSB) und dann der verbleibenden Daten in ein erstes Speichermedium, während eine Parität der Vielzahl von LSB-Daten in ein zweites Speichermedium programmiert wird; und ein Wiederherstellen der LSB-Daten, wenn die Speichervorrichtung während eines Programmierens der verbleibenden Daten unterbrochen wird, indem die Parität verwendet wird, um die wiederhergestellten LSB-Daten zurück in das erste Speichermedium zu programmieren.
-
Figurenliste
-
In der vorliegenden Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, in denen sich gleiche Bezugszeichen durchgehend auf gleiche Teile in den Figuren beziehen.
- 1 stellt eine Ausführungsform eines Speichersystems 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 1 bis 3 gezeigten Steuerung umfasst ist, gemäß Ausführungsformen der vorliegenden Offenbarung dar.
- 5 stellt einen Betriebszeitpunkt bzw. ein Betriebs-Timing zum Bestätigen eines Betriebszustands und eines Betriebsergebnisses von Ebenen dar, die in einem Speichersystem gemäß einer Ausführungsform der vorliegenden Offenbarung umfasst sind.
- 6 stellt ein erstes Beispiel davon, wie Multi-Bit-Daten in einer Speichervorrichtung programmiert werden, gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
- 7 stellt ein zweites Beispiel davon, wie Multi-Bit-Daten in einer Speichervorrichtung programmiert werden, gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
- 8 stellt ein drittes Beispiel davon, wie Multi-Bit-Daten in der Speichervorrichtung programmiert werden, gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
- 9 stellt eine redundante Anordnung unabhängiger (oder kostengünstiger) Festplatten (RAID) dar, die gemäß einer Ausführungsform der vorliegenden Offenbarung auf eine Speichervorrichtung anwendbar ist.
- 10 stellt ein Datenprogrammverfahren gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
- 11 stellt ein erstes Beispiel des Datenprogrammverfahrens gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
- 12 stellt ein zweites Beispiel des Datenprogrammverfahrens gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
- 13 stellt eine Datenübertragung zwischen einer Steuerung und einer Speichervorrichtung während einer Datenprogrammieroperation gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
- 14 stellt einen Fall dar, in dem die Datenprogrammieroperation in einem Speichersystem gemäß einer Ausführungsform der vorliegenden Offenbarung angehalten oder unterbrochen wird.
- 15 stellt ein erstes Beispiel einer Vorrichtung zum Steuern einer Datenprogrammieroperation gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
- 16 stellt ein zweites Beispiel der Vorrichtung zum Steuern einer Datenprogrammieroperation gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
- 17 stellt ein drittes Beispiel der Vorrichtung zum Steuern einer Datenprogrammieroperation gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
- 18 stellt Vorgänge bzw. Operationen dar, die von der in 17 gezeigten Vorrichtung gemäß einer Ausführungsform der vorliegenden Offenbarung durchgeführt werden.
- 19 stellt ein viertes Beispiel der Vorrichtung zum Steuern einer Datenprogrammieroperation gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
- 20 stellt ein erstes Beispiel von Vorgängen bzw. Operationen dar, die von der in 19 gezeigten Vorrichtung gemäß einer Ausführungsform der vorliegenden Offenbarung durchgeführt werden.
- 21 stellt ein zweites Beispiel von Vorgängen bzw. Operationen dar, die von der in 19 gezeigten Vorrichtung gemäß einer Ausführungsform der vorliegenden Offenbarung durchgeführt werden.
- 22 stellt eine Wirkung einer Ausführungsform der vorliegenden Offenbarung dar.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Verschiedene Ausführungsformen der vorliegenden Offenbarung werden in dem Folgenden unter Bezugnahme auf die beigefügten Zeichnungen beschrieben. Elemente und Merkmale der Offenbarung können jedoch auch anders gebildet oder angeordnet sein, um andere Ausführungsformen zu bilden, die Variationen 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. 2 stellt ein Datenverarbeitungssystem gemäß einer anderen Ausführungsform der vorliegenden Offenbarung dar.
-
Unter Bezugnahme auf 1 und 2 kann das Speichersystem 110 eine Steuerung 130 und eine Speichervorrichtung 150 umfassen. Die Speichervorrichtung 150 kann eine Vielzahl von nichtflüchtigen Speicherzellen umfassen, die in der Lage sind, Daten zu speichern, die von einer externen Vorrichtung, z.B. einem in 2 gezeigten Host 102, übertragen werden. Die Speichervorrichtung 150 kann gespeicherte Daten auf eine Anforderung des Hosts 102 ausgeben. Die Steuerung 130 kann die innerhalb der Speichervorrichtung 150 durchgeführten Dateneingabe-/- ausgabeoperationen steuern und eine Datenkommunikation mit dem Host 102 durchführen. In dem Speichersystem 110 umfasste Komponenten werden später unter Bezugnahme auf die
-
2 und 3 beschrieben.
-
Unter Bezugnahme auf 1 kann das Speichersystem 110 eine Vielzahl von nichtflüchtigen Speicherzellenbereichen umfassen. Die Vielzahl von nichtflüchtigen Speicherzellenbereichen umfasst zum Beispiel einen ersten nichtflüchtigen Zellenbereich 522 und einen zweiten nichtflüchtigen Zellenbereich 524.
-
Gemäß einer Ausführungsform können der erste nichtflüchtige Zellenbereich 522 und der zweite nichtflüchtige Zellenbereich 524 unterschiedliche Speicherzellen umfassen. Zum Beispiel kann der erste nichtflüchtige Zellenbereich 522 eine Vielzahl von Speicherzellen umfassen, wobei jede Speicherzelle in der Lage ist, Multi-Bit-Daten zu speichern, während der zweite nichtflüchtige Zellenbereich 524 eine Vielzahl von Speicherzellen umfassen kann, wobei jede Speicherzelle in der Lage ist, Single-Bit-Daten zu speichern. In einem anderen Beispiel können sowohl der erste nichtflüchtige Zellenbereich 522 als auch der zweite nichtflüchtige Zellenbereich 524 Speicherzellen umfassen, die in der Lage sind, Multi-Bit-Daten zu speichern. In einem anderen Beispiel kann jede der Vielzahl von Speicherzellen, die in dem ersten nichtflüchtigen Zellenbereich 522 umfasst sind, Daten mit einer größeren Anzahl von Bits speichern als eine Speicherzelle, die in dem zweiten nichtflüchtigen Zellenbereich 524 umfasst ist.
-
Der erste nichtflüchtige Zellenbereich 522 und der zweite nichtflüchtige Zellenbereich 524, die in dem Speichersystem 110 umfasst sind, können verschiedene Arten von Daten speichern. Zum Beispiel kann der erste nichtflüchtige Zellenbereich 522 in dem Speichersystem 110 Daten speichern, die von einer externen Vorrichtung übertragen werden. Der zweite nichtflüchtige Zellenbereich 524 kann Paritätsinformationen von Daten speichern, die in dem ersten nichtflüchtigen Zellenbereich 522 gespeichert sind. Dabei können die Paritätsinformationen verwendet werden, um Daten wiederherzustellen, die in den ersten nichtflüchtigen Zellenbereich 522 programmiert werden und aufgrund einer Unterbrechung oder eines Fehlers beschädigt wurden, der während einer Operation auftrat, bei dem die Multi-Bit-Daten in den ersten nichtflüchtigen Zellenbereich 522 programmiert wurden.
-
Eine Operation zum Programmieren der Multi-Bit-Daten kann in mehreren Stufen innerhalb des ersten nichtflüchtigen Zellenbereichs 522 durchgeführt werden, der eine Speicherzelle umfasst, die die Multi-Bit-Daten speichern kann. Gemäß einer Ausführungsform kann das Speichersystem 110 zweistufige oder mehrstufige Datenprogrammieroperationen durchführen, um die Multi-Bit-Daten zu programmieren. In einer anderen Ausführungsform kann das Speichersystem 110 die Foggy-and-Fine-Datenprogrammieroperationen durchführen, um die Multi-Bit-Daten zu programmieren. Eine von dem Speichersystem 110 durchgeführte Operation zum Speichern der Multi-Bit-Daten wird später unter Bezugnahme auf die 7 bis 9 beschrieben.
-
Eine One-Shot-Programmieroperation ist eine Operation, bei der eine Vielzahl von ISPP-Schrittimpulsen nacheinander an eine bestimmte Wortleitung des ersten nichtflüchtigen Zellenbereichs 522 angelegt wird, um eine nichtflüchtige Speicherzelle zu programmieren, bis die nichtflüchtige Speicherzelle vollständig mit Multi-Bit-Daten programmiert ist. Während bei der One-Shot-Programmieroperation eine Programmieroperation einer Einheit durch eine spezifische Wortleitung durchgeführt wird, kann eine Programmieroperation einer anderen Einheit nicht durch eine andere Wortleitung durchgeführt werden. Da jedoch der Integrationsgrad des ersten nichtflüchtigen Bereichs 522 zunimmt, kann eine erhebliche Menge an Zell-zu-Zell-Interferenz in nichtflüchtigen Speicherzellen auftreten, die an Wortleitungen gekoppelt sind, die an eine Wortleitung angrenzen, an der eine One-Shot-Programmierung durchgeführt wird, d.h., es werden Programmimpulse angelegt, wenn es keine Verschachtelung zwischen den an Wortleitungen durchgeführten Programmieroperationen gibt. Um den Effekt der Zell-zu-Zell-Interferenz, z.B. der Programminterferenz, zu reduzieren, könnte eine zweistufige Programmieroperation zum Speichern der Multi-Bit-Daten in einer nichtflüchtigen Speicherzelle verwendet werden, die in dem ersten nichtflüchtigen Zellenbereich 522 umfasst ist. Bei der zweistufigen Programmieroperation können zunächst LSB-Daten über eine bestimmte Wortleitung in nichtflüchtige Speicherzellen programmiert werden, die eine Schwellenspannung des Löschzustands aufweisen (erster Programmierschritt). Dann können MSB-Daten in die nichtflüchtigen Speicherzellen programmiert werden (zweiter Programmschritt), nachdem weitere LSB-Daten in andere nichtflüchtige Speicherzellen programmiert wurden, die mit einer anderen Wortleitung neben der spezifischen Wortleitung verbunden sind. Nachdem LSB-Daten in nichtflüchtige Speicherzellen programmiert wurden, die mit einer Vielzahl von Wortleitungen verbunden sind, und dann die MSB-Daten nacheinander darin programmiert wurden, konnte eine Zell-zu-Zell-Interferenz reduziert werden.
-
In dem Speichersystem 110 ist eine Größe von Daten, die in nichtflüchtigen Speicherzellen, die mit einer Vielzahl von Wortleitungen verbunden sind, durch eine zweistufige Programmieroperation gespeichert werden, größer als eine Größe von Daten, die in nichtflüchtigen Speicherzellen, die mit einer einzelnen Wortleitung verbunden sind, gespeichert werden. Der Zeitaufwand für ein zweistufiges Programmierverfahren für umfangreiche Daten kann größer sein. Wenn das Speichersystem 110 erfolgreich partielle Daten unter den Multi-Bit-Daten in Speicherzellen programmieren kann, obwohl die Multi-Bit-Daten nicht vollständig in den Speicherzellen programmiert sind, kann das Speichersystem 110 bestimmen, dass eine Programmieroperation für partiellen Daten Teildaten abgeschlossen ist, und eine Beendigung erzeugen, die mit den partiellen Daten verbunden ist. Insbesondere, wenn eine große Datenmenge in nichtflüchtigen Speicherzellen programmiert wird, die mit einer Vielzahl von Wortleitungen in dem ersten nichtflüchtigen Zellenbereich 522 verbunden sind, kann das Speichersystem 100 mitteilen, dass die Datenprogrammieroperation für die partiellen Daten beendet worden ist, nachdem die Programmieroperation des ersten Schritts erfolgreich abgeschlossen wurde, bevor die Programmieroperation des zweiten Schritts erfolgreich abgeschlossen wird.
-
Nachdem die Programmieroperation des ersten Schritts in dem ersten nichtflüchtigen Zellenbereich 522 abgeschlossen ist, kann das Speichersystem 110 bestimmen, dass die partiellen Daten durch die Programmieroperation des ersten Schritts in der Speichervorrichtung 150 in dem ersten nichtflüchtigen Zellenbereich 522 programmiert sind. Zum Beispiel kann das Speichersystem 110 eine Benachrichtigung bzw. Mitteilung über die Beendigung (oder eine Antwort) bezüglich eines Programmbefehls, der mit den partiellen Daten verbunden ist, an den Host 102, der eine externe Vorrichtung ist, übertragen (siehe 2 bis 3). Durch diese Mitteilung kann der Host 102 bestimmen, dass eine dem Programmbefehl entsprechende Programmieroperation in dem Speichersystem 110 erfolgreich abgeschlossen wurde.
-
Obwohl die Programmieroperation des ersten Schritts in dem ersten nichtflüchtigen Zellenbereich 522 abgeschlossen ist, wird möglicherweise die Programmieroperation des zweiten Schritts durchgeführt, und ein Fehler oder eine Unterbrechung in dem Speichersystem 110 kann auftreten, während die Programmieroperation des zweiten Schritts durchgeführt wird. Nachdem LSB-Daten in nichtflüchtige Speicherzellen programmiert wurden, die in dem ersten nichtflüchtigen Zellenbereich 522 umfasst sind, könnte eine Programmieroperation abnormal beendet, angehalten oder gestoppt werden, während MSB-Daten in die nichtflüchtigen Speicherzellen programmiert werden. In diesem Fall sollte das Speichersystem 110 in der Lage sein, die Sicherheit der LSB-Daten, die in den ersten nichtflüchtigen Zellenbereich 522 programmiert werden, durch die Programmieroperation des ersten Schritts zu gewährleisten. Das heißt, dass während der Operation des Programmierens von Daten in dem ersten nichtflüchtigen Zellenbereich 522 des Speichersystems 110 eine Unterbrechung (z.B. unerwartete Fehler, Leistungsinstabilität oder Notfall) in dem ersten nichtflüchtigen Zellenbereich 522 auftreten kann. Aufgrund eines solchen Fehlers oder einer Unterbrechung kann die gesamte Operation des Programmierens der Multi-Bit-Daten in dem ersten nichtflüchtigen Zellenbereich 522 des Speichersystems 110 möglicherweise nicht abgeschlossen werden. Wenn das Speichersystem 110 eine Fertigstellungsmeldung an den Host 102 für bestimmte, teilweise oder ganze Programmdaten, die mit einem bestimmten Programmbefehl verbunden sind, sendet, kann das Speichersystem 110 die bestimmten, teilweisen oder ganzen Programmdaten, die der Fertigstellungsmeldung entsprechen, sicher in dem nichtflüchtigen Zellenbereich 522 speichern und wiederherstellen, um die Sicherheit der Dateneingabe-/- ausgabeoperationen in dem Speichersystem 110 zu gewährleisten.
-
Während beispielsweise die Multi-Bit-Daten in dem ersten nichtflüchtigen Bereich 522 programmiert werden sollen, wird eine Fertigstellungsmeldung gesendet, nachdem die Daten des niedrigstwertigen Bits (LSB) unter den Multi-Bit-Daten zuerst in die Speicherzellen in dem ersten nichtflüchtigen Bereich 522 programmiert worden sind. Nachdem die Daten des niedrigstwertigen Bits (LSB) der Multi-Bit-Daten programmiert sind, könnte die Programmieroperation aufgrund eines Fehlers oder einer Unterbrechung angehalten werden, während die Daten des höchstwertigen Bits (MSB) der Multi-Bit-Daten programmiert werden. Das Speichersystem 110 kann die bereits programmierten LSB-Daten unter den Multi-Bit-Daten aus dem ersten nichtflüchtigen Zellenbereich 522 lesen und wiederherstellen. Es könnte jedoch schwierig sein, den aus dem ersten nichtflüchtigen Zellenbereich 522 gelesenen LSB-Daten zu vertrauen, da die Programmieroperation plötzlich gestoppt wird. Wenn Paritätsinformationen für die LSB-Daten in dem zweiten nichtflüchtigen Zellenbereich 524 gespeichert sind, kann das Speichersystem 110 die LSB-Daten auf der Grundlage der aus dem zweiten nichtflüchtigen Zellenbereich 524 erhaltenen Paritätsinformationen und der aus dem ersten nichtflüchtigen Zellenbereich 522 gelesenen LSB-Daten wiederherstellen.
-
Das Speichersystem 110 kann eine Paritätserzeugungsmaschine umfassen, die in der Lage ist, die in dem zweiten nichtflüchtigen Bereich 524 zu speichernden Paritätsinformationen auf der Grundlage der in dem ersten nichtflüchtigen Bereich 522 gespeicherten spezifischen, teilweisen oder vollständigen Programmdaten zu erzeugen. Gemäß einer Ausführungsform kann die Paritätserzeugungsmaschine 510 einen Fehlerkorrekturcode verwenden. Wenn die Paritätserzeugungsmaschine 510 jedoch eine komplizierte Operation zum Erzeugen von Paritätsinformationen durchführt, könnte die Geschwindigkeit und Leistung der von dem Speichersystem 110 durchgeführten Programmieroperation beeinträchtigt oder reduziert werden. Dementsprechend könnte die Paritätserzeugungsmaschine 510 derart ausgelegt sein, dass sie die Geschwindigkeit und Leistung der Programmieroperation nicht verschlechtert.
-
Gemäß einer Ausführungsform kann das Speichersystem 110 Chipkill-Decodierung verwenden, die in der Lage ist, die ursprünglichen Daten wiederherzustellen, selbst wenn ein Fehler in mehreren Bits der ursprünglichen Daten auftritt. Ein Prozess, bei dem das Speichersystem 110 eine Chipkill-Parität erzeugt, wird später unter Bezugnahme auf die 2 und 9 beschrieben. Zum Beispiel kann die in 2 beschriebene Fehlerkorrekturschaltung (Error Correction Circuitry - ECC) 138 die Chipkill-Dekodierung durchführen. Durch die Chipkill-Decodierung kann das Speichersystem 110 beispielsweise einen Abschnitt bzw. Teil des ersten nichtflüchtigen Zellenbereichs 522 auf der Grundlage anderer, in anderen Bereichen gespeicherter Daten wiederherstellen, selbst wenn der Abschnitt bzw. der Teil des ersten nichtflüchtigen Zellenbereichs 522 nicht autonom wiederhergestellt werden konnte.
-
Das Speichersystem 110 kann Daten in der Speichervorrichtung 150 speichern, die den ersten nichtflüchtigen Zellenbereich 522 und den zweiten nichtflüchtigen Zellenbereich 524 umfasst, die als redundantes Array unabhängiger (oder kostengünstiger) Festplatten (RAID) ausgeführt sind. Das Speichersystem 110 kann die Dateneingabe/-ausgabe (E/A) der Festplatte parallelisieren, indem es einen einzigen Datenträger mit einer großen Kapazität durch ein RAID-Schema verwendet. Zum Beispiel kann das Speichersystem 110 5 Datenstücke bzw. Datenelemente speichern, die 4 Datenstücke mit der gleichen Größe (Anzahl der Bits) und 1 Paritätsdatenstück umfassen, das auf der Grundlage der 4 Datenstücke in mehreren verschiedenen Bereichen erzeugt wird (z.B. RAID5). Gemäß einer Ausführungsform kann das Speichersystem 110 vier Datenstücke mit derselben Größe (Anzahl der Bits) und zwei Paritätsdatenstücke, die auf der Grundlage der vier Datenstücke erzeugt wurden (d.h. insgesamt sechs Datenstücke), in einer Vielzahl verschiedener Bereiche (z.B. RAID6) speichern. Die in 1 beschriebene Paritätserzeugungsmaschine 510 kann zumindest ein Stück von Paritätsdaten auf der Grundlage einer Vielzahl von Schreibdaten erzeugen.
-
Wenn beispielsweise vier Schreibdatenstücke in vier verschiedenen Bereichen innerhalb des ersten nichtflüchtigen Zellenbereichs 522 gespeichert sind, kann die Paritätserzeugungsmaschine 510 auf der Grundlage der vier Datenstücke ein Stück von Paritätsdaten erzeugen. Ein Stück der Paritätsdaten kann in dem zweiten nichtflüchtigen Zellenbereich 524 gespeichert werden. Wenn in einem der vier in dem ersten nichtflüchtigen Zellenbereich 522 gespeicherten Schreibdatenstücken ein Fehler auftritt, kann die Paritätserzeugungsmaschine 510 das fehlerhafte der vier Schreibdatenstücke auf der Grundlage der anderen drei Schreibdatenstücke unter den vier in dem ersten nichtflüchtigen Zellenbereich 522 gespeicherten Schreibdatenstücken und der in dem zweiten nichtflüchtigen Zellenbereich 524 gespeicherten Paritätsdaten wiederherstellen.
-
Wenn LSB-Daten unter den Multi-Bit-Daten in den ersten nichtflüchtigen Bereich 522 programmiert werden, kann die Paritätserzeugungsmaschine 510 Paritätsinformationen für die LSB-Daten erzeugen. Beispielsweise kann eine Speicherzelle, die in dem ersten nichtflüchtigen Zellenbereich 522 umfasst ist, drei Datenbits speichern. Die Drei-Bit-Daten können in LSB-Daten, CSB-Daten und MSB-Daten unterteilt werden. Das Speichersystem 110 kann LSB-Daten, CSB-Daten und MSB-Daten unter Verwendung einer mehrstufigen Programmieroperation sequentiell programmieren. Das heißt, LSB-Seitendaten, CSB-Seitendaten und MSB-Seitendaten können sequentiell in eine Vielzahl von Speicherzellen programmiert werden, die durch dieselbe Wortleitung verbunden sind. In diesem Fall kann die Paritätserzeugungsmaschine 510, nachdem die LSB-Seitendaten in den ersten nichtflüchtigen Bereich 522 programmiert wurden, die den LSB-Seitendaten entsprechenden Paritätsinformationen in dem zweiten nichtflüchtigen Bereich 522 speichern. Detaillierte Operationen der Paritätserzeugungsmaschine 510 werden später unter Bezugnahme auf 11 beschrieben.
-
Gemäß einer Ausführungsform kann die Paritätserzeugungsmaschine 510 Paritätsinformationen nur für Daten erzeugen, die von der externen Vorrichtung (z.B. dem Host 102) übertragen und in dem ersten nichtflüchtigen Zellenbereich 522 gespeichert werden. Während beispielsweise Daten durch Speicherbereinigung (Garbage Collection) oder Verschleiß- bzw. Abnutzungsausgleich (Wear Leveling) in dem ersten nichtflüchtigen Zellenbereich 522 von einem bestimmten Speicherort an einen anderen Speicherort verschoben werden, kann die Paritätserzeugungsmaschine 510 möglicherweise keine Paritätsinformationen für Daten erzeugen, die innerhalb des Speichersystems 110 intern verschoben oder migriert werden. Selbst wenn die Datenmigration durch einen Fehler oder eine Unterbrechung gestoppt wird, während Daten innerhalb des ersten nichtflüchtigen Zellenbereichs 522 durch Speicherbereinigung oder Verschleißausgleich verschoben, kopiert oder migriert werden, werden die Daten immer noch an einem vorherigen Speicherort in dem ersten nichtflüchtigen Zellenbereich 522 gespeichert. Da die Möglichkeit eines Verlusts der migrierten Daten sehr gering ist, könnte die Paritätserzeugungsmaschine 510 in dem Speichersystem 110 möglicherweise keine Paritätsinformationen für die migrierten Daten erzeugen, um die Betriebseffizienz des Speichersystems 110 zu erhöhen.
-
Gemäß einer Ausführungsform der vorliegenden Offenbarung wird eine frühe Beendigung für eine Operation des Programmierens von Daten in einer nichtflüchtigen Speicherzelle, die Mehrbitdaten speichert, mitgeteilt, aber die Multi-Bit-Daten sind möglicherweise nicht vollständig in der nichtflüchtigen Speicherzelle programmiert. In diesem Fall kann die Ausführungsform eine Vorrichtung und ein Verfahren zum Wiederherstellen von Schreibdaten auf der Grundlage anderer Schreibdaten, die in einer nichtflüchtigen Speicherzelle gespeichert sind, und von Paritätsinformationen, die den Schreibdaten und den anderen Schreibdaten entsprechen, bereitstellen. Eine Vorrichtung zum Programmieren von Daten könnte eine Größe von Paritätsinformationen reduzieren, die als Antwort darauf erzeugt werden, dass Schreibdaten programmiert werden, und die Paritätsinformationen können in einem anderen Bereich als dem Bereich, in dem die Schreibdaten programmiert werden, gespeichert werden. Eine Speichervorrichtung, die nichtflüchtige Speicherzellen umfasst, kann mehrere Bereiche zum Speichern von Schreibdaten und einen Bereich zum Speichern der den Schreibdaten entsprechenden Parität umfassen.
-
Darüber hinaus können eine Vorrichtung und ein Verfahren zum Programmieren von Schreibdaten in dem Speichersystem 110 auf der Grundlage von Eigenschaften oder Attributen von Daten, die in nichtflüchtigen Speicherzellen programmiert sind, bestimmen, ob Paritätsinformationen erzeugt werden sollen. Gemäß einer Ausführungsform können die Paritätsinformationen für Schreibdaten erzeugt werden, die von einer externen Vorrichtung eingegeben werden, um in dem Speichersystem 110 gespeichert zu werden. Die Paritätsinformationen werden jedoch möglicherweise nicht in einem Prozess des Kopierens, Verschiebens oder Migrierens von Daten erzeugt, die in dem Speichersystem 110 gespeichert worden sind. Während das Speichersystem 110 beispielsweise eine Operation wie Speicherbereinigung oder Verschleißausgleich durchführt, erzeugt die Vorrichtung gemäß der Ausführungsform möglicherweise keine Paritätsinformationen, die den Daten entsprechen, die während der Operation der Speicherbereinigung oder des Verschleißausgleichs kopiert, verschoben oder migriert wurden. Die Vorrichtung gemäß der Ausführungsform kann Paritätsinformationen in Bezug auf Schreibdaten erzeugen, die von dem Host 102 an das Speichersystem 110 übertragen werden, während die Schreibdaten in der Speichervorrichtung 150 programmiert werden.
-
Das Speichersystem 110 kann die Größe der während einer Programmieroperation erzeugten Paritätsinformationen reduzieren, indem Paritätsinformationen für Daten erzeugt werden, die einem niedrigstwertigen Bit (LSB) entsprechen, die ein Teil der Schreibdaten sind, die in einer nichtflüchtigen Speicherzelle gespeichert sind, die die Multi-Bit-Daten speichert. Da die Größe der Paritätsinformationen klein ist, kann der Overhead aufgrund der Operation des Erzeugens und Speicherns der Paritätsinformationen während der Programmieroperation reduziert werden. Da die Größe der während einer Programmieroperation erzeugten Paritätsinformationen reduziert wird, kann außerdem die Größe von Daten zur Sicherung von Daten in einem Notfall, wie z.B. plötzliches Ausschalten (SPO), reduziert werden. Demzufolge ist der Speicher der flüchtigen Speichervorrichtung, der während einer Operation des Erzeugens von Paritätsinformationen in dem Speichersystem verbraucht wird, möglicherweise nicht groß, so dass der Speicher des nichtflüchtigen Speicherpuffers, der die Paritätsinformationen speichert, möglicherweise nicht groß sein muss. Gemäß einer Ausführungsform kann die Vorrichtung zum Erzeugen von Paritätsinformationen in einer Steuerung in dem Speichersystem umfasst sein. In einer anderen Ausführungsform kann die Vorrichtung zum Erzeugen von Paritätsinformationen in einem Speicherchip umfasst sein, der nichtflüchtige Speicherzellen umfasst.
-
In dem Folgenden werden Beschreibungen vorgenommen, die sich auf Operationen oder Komponenten konzentrieren, die technisch zwischen der Steuerung 130 und der Speichervorrichtung 150 unterschieden werden können, die in 1 und 2 bis 4 beschriebenen sind. Insbesondere wird eine Flash-Übersetzungsschicht (Flash Translation Layer - FTL) 240 in der Steuerung 130 unter Bezugnahme auf 3 bis 4 näher beschrieben. Gemäß einer Ausführungsform können die Rollen und Funktionen der Flash-Übersetzungsschicht (FTL) in der Steuerung 130 variiert werden.
-
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 in eine nichtflüchtige 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, die in dem Speicherblock 152, 154, 156 umfasst ist, gespeichert sind, 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, die in dem Speicherblock 152, 154, 156 umfasst ist, gespeichert sind, kann die Spannungsversorgungsschaltung 170 die Löschspannung Vers in den Speicherblock zuführen.
-
Die Speichervorrichtung 150 kann Informationen hinsichtlich verschiedener Spannungen speichern, die dem Speicherblock 152, 154, 156 auf der Grundlage darauf zugeführt werden, welche Operation durchgeführt wird. Wenn beispielsweise eine nichtflüchtige Speicherzelle in dem Speicherblock 152, 154, 156 Multi-Bit-Daten speichern kann, können mehrere Pegel der Lesespannung Vrd zum Erkennen oder Lesen des Multi-Bit-Datenelements erforderlich sein. Die Speichervorrichtung 150 kann eine Tabelle umfassen, die Informationen umfasst, die einer Vielzahl von Pegeln der Lesespannung Vrd entsprechen, die dem Multi-Bit-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 umfassen, 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.
-
Der Host 102 kann zumindest ein Betriebssystem (Operating System - OS) umfassen, das die in dem Host 102 durchgeführten Funktionen und Operationen steuern kann. Das Betriebssystem OS kann eine Interoperabilität zwischen dem Host 102, der operativ mit dem Speichersystem 110 verbunden ist, und einem Benutzer, der Daten in dem 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 unterstützenden Diensten oder Funktionen für die Mobilität unterliegen, z.B. einer Stromsparfunktion. 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 von dem Host 102 eingegebenen Befehl steuern. Zum Beispiel kann die Steuerung 130 eine Leseoperation durchführen, um dem Host 102 aus der Speichervorrichtung 150 gelesene Daten bereitzustellen, und sie 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 des Lesens von Daten, Programmierens von Daten, Löschens von Daten oder dergleichen steuern und verwalten.
-
Gemäß einer Ausführungsform kann die Steuerung 130 eine Host-Schnittstelle 132, einen Prozessor 134, die Fehlerkorrekturschaltung (ECC) 138, eine Energieverwaltungseinheit (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äß den Strukturen, Funktionen, der Betriebsleistung oder dergleichen in Bezug auf das Speichersystem 110 variieren.
-
Beispielsweise kann das Speichersystem 110 mit verschiedenen Arten von Speichergeräten 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 Speichergeräte umfassen ein Solid-State-Laufwerk (SSD), eine Multimedia-Karte (MMC), eine embedded MMC (eMMC), eine RS-MMC (reduced size MMC), eine Micro-MMC, eine SD (Secure Digital)-Card, 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äß einer 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 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 Host-Schnittstelle 132, die in der Steuerung 130 umfasst ist, kann Signale, Befehle (oder Anfragen bzw. Anforderungen) und/oder von dem Host 102 eingegebene Daten über einen Bus empfangen. Beispielsweise können der Host 102 und das Speichersystem 110 vorgegeben Regelwerke oder Verfahren/Prozeduren 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 PCI-e), 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 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 und Empfangen von Daten verwendet werden und kann beispielsweise ein Kabel mit 40 parallel geschalteten Adern umfassen, um eine Datenübertragung und 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 dem 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 Advanced Technology Attachment (SATA)-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 Adern der IDE-Schnittstelle können bei der SATA-Schnittstelle auf sechs Adern reduziert werden. Zum Beispiel können 40 parallele Signale für die DIE 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. Somit kann das Speichersystem 110 als 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 einem 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 gelöst 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 die Datenübertragung und der 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 Anschlüsse bzw. Verbindungen 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 von 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 Transceiver unterstützen, der in dem Host 102 umfasst ist.
-
NVMe (Non-volatile memory express) ist eine Art von Schnittstelle basierend auf zumindest Peripheral Component Interconnect Express (PCIe), was 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 (Slot) oder ein spezielles Kabel zum Verbinden einer Rechenvorrichtung (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 bzw. eine Ader (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 einsteckbare serielle 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 ermöglichen 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 einen Fehlerkorrekturcode (ECC)-Codierer und einen ECC-Decoder 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-Decoder 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 auf der Grundlage eines Ergebnisses der Fehlerkorrekturdecodierung, ob die Fehlerkorrekturdecodierung erfolgreich war oder nicht, und gibt ein Anweisungssignal, z.B. ein Korrekturerfolgssignal oder ein Korrekturfehlersignal, aus. 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 bei der Korrektur 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 blockcodierten 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. Die in 2 gezeigte Fehlerkorrekturschaltung 138 kann zumindest einige der Komponenten umfassen, die in der in 1 gezeigten Steuerung 130 umfasst sind.
-
Der ECC-Decoder kann beispielsweise eine Hard-Decision-Decodierung oder eine Soft-Decision-Decodierung an den von der Speichervorrichtung 150 übertragenen Daten durchführen. Die Hard-Decision-Decodierung kann als eines von zwei Verfahren verstanden werden, die allgemein als 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 Anordnung der Schaltung/des Algorithmus einfacher und die Verarbeitungsgeschwindigkeit schneller sein als bei 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. 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 das Charakterisieren der quantisierten Werte als eine Kombination von Informationen, wie z.B. bedingte Wahrscheinlichkeit, erzeugt werden.
-
Gemäß einer Ausführungsform kann der ECC-Decoder unter den für die Soft-Decision-Decodierung entwickelten Verfahren einen Low-Density-Parity-Check- und Generator-Matrix (LDPC-GM)-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 Daten von 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 zur Hard-Decision-Decodierung kann die Soft-Decision-Decodierung den in der nichtflüchtigen Speicherzelle gespeicherten Wert auf der Grundlage der stochastischen Information bestimmen. In Bezug auf das Bit-Flipping, das als ein Fehler angesehen werden kann, der in der Speichervorrichtung 150 auftreten kann, kann die Soft-Decision-Decodierung die Wahrscheinlichkeit des Korrigierens des Fehlers und des Wiederherstellens von Daten verbessern sowie die 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 werden können.
-
Gemäß einer Ausführungsform kann der ECC-Decoder z.B. Low-Density-Parity-Check-Faltungscodes (LDPC-CCs) für die Soft-Decision-Decodierung verwenden. Die LDPC-CCs können ein Schema unter Verwendung einer linearen Zeitkodierung und einer Pipeline-Dekodierung auf der Grundlage einer variablen Blocklänge und eines Schieberegisters aufweisen.
-
Gemäß einer Ausführungsform kann der ECC-Decoder beispielsweise einen Log Likelihood Ratio Turbo Code (LLR-TC) für die Soft-Decision-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, z.B. einen Hamming Code, in zwei oder drei Dimensionen umfassen und eine Dekodierung in einer Zeilen- 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. 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 Schnittstelle für die Verarbeitung 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 werden. Die Speicherschnittstelle 142 kann ein Steuersignal für die Speichervorrichtung 150 erzeugen und 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 die 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-Schnittstellenschicht (Flash Interface Layer - FIL) bezeichnete Firmware zum Datenaustausch 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 bidirektionalen 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 (Double Data Rate - DDR), eine umschaltbare doppelte Datenrate (DDR) 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. Beispielsweise kann der Speicher 144 Lesedaten vorübergehend speichern, die von der Speichervorrichtung 150 als Antwort auf eine Leseanforderung von dem Host 102 ausgegeben werden, 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 der Speichervorrichtung 150 steuert, wie z.B. eine Leseoperation, eine Schreib- oder Programmieroperation, eine Löschoperation usw., können 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. Zuordnungs- bzw. 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 von einer Befehlswarteschlange, einem Programmspeicher, einem Datenspeicher, einem Schreibpuffer/Cache, einem Lesepuffer/Cache, einem Datenpuffer/Cache, einem Abbildungspuffer/Cache usw. umfassen. Die Steuerung 130 kann einen gewissen Speicherplatz in dem Speicher 144 für eine Komponente zuweisen, die zur Durchführung einer Dateneingabe-/-ausgabeoperation eingerichtet ist. Zum Beispiel kann der in dem Speicher 144 eingerichtete Schreibpuffer zur vorübergehenden Speicherung 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 (SRAM), einem dynamischen Direktzugriffsspeicher (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 bzw. Operationen 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 (Flash Translation Layer - FTL) bezeichnet werden. Ein Beispiel für die FTL wird unter Bezugnahme auf die 3 und 4 in dem Detail beschrieben. Gemäß einer Ausführungsform kann der Prozessor 134 durch einen Mikroprozessor, eine 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 ein Schaltkreis- oder Chiptyp, in 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-Translation-Layern (FTLs) unabhängig voneinander ansteuern oder ausführen, kann eine 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/der von dem Host 102 eingegeben wird. Darüber hinaus kann das Speichersystem 110 eine Operation unabhängig von einem Befehl oder einer Anforderung durchführen, der/die von dem Host 102 eingegeben wird. In einem Fall kann eine Operation, die von der Steuerung 130 als Antwort auf die Anforderung oder den Befehl, die/der von dem Host 102 eingegeben wird, durchgeführt wird, als Vordergrundoperation betrachtet werden, während eine Operation, die von der Steuerung 130 unabhängig von der Anforderung oder dem Befehl, die/der von dem Host 102 eingegeben wird, 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 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 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 eine Vielzahl von Anforderungen oder Befehlen 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 betrachtet 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 von nichtflüchtigen 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 in Abhängigkeit 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 hoch integriert 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 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 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 SLC-Puffer verwenden, um Daten vorübergehend zu speichern, weil der Puffer eine hohe Dateneingabe-/-ausgabegeschwindigkeit erfordern kann, um die Leistung des Speichersystems 110 zu verbessern.
-
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 das Überschreiben von Daten nicht. Die Steuerung 130 kann jedoch eine Vielzahl von 1-Bit-Daten in dem MLC unter Verwendung einer Funktion eine Vielzahl von Malen programmieren, bei der der MLC in der Lage ist, Multi-Bit-Daten zu speichern. Für eine MLC-Überschreiboperation kann die Steuerung 130 die Zahl der Programmzeiten als separate 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 ein 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 aus einem Phasenänderungs-Direktzugriffsspeicher (Phase Change Random Access Memory - PCRAM), einem ferroelektrischen Direktzugriffsspeicher (FRAM), einem Transfer-Torque-Direktzugriffsspeicher (STT-RAM) und einem Spin-Transfer-Torque-Magnet-Direktzugriffsspeicher (STT-MRAM) oder dergleichen realisiert werden.
-
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 die Host-Schnittstelle 132, eine Flash-Übersetzungsschicht (FTL) 240, die Speicherschnittstelle 142 und den zuvor unter Bezugnahme auf 2 bezeichneten Speicher 144.
-
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, das/die in der Steuerung 130 umfasst oder mit ihm/ihr verbunden ist.
-
Die Host-Schnittstelle 132 kann Befehle, Daten und dergleichen verarbeiten, die von dem Host 102 übertragen werden. Als Beispiel kann die Host-Schnittstelle 132 in nicht einschränkender Weise 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 vom Puffermanager 52 empfangenen Befehle, Daten und dergleichen übertragen.
-
Eine Vielzahl von Befehlen oder Daten mit derselben Eigenschaft kann von dem Host 102 übertragen werden, oder eine Vielzahl von Befehlen und Daten mit unterschiedlichen Eigenschaften 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 Eigenschaften 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 sollte oder ob der Puffermanager 52 die Befehle, Daten und dergleichen an die Flash-Übersetzungsschicht (FTL) 240 liefern sollte. Die Ereigniswarteschlange 54 empfängt von dem Puffermanager 52 übertragene Ereignisse, 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 42 und einen Block-Manager 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 eine 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 Betriebs-Timing zum Bestätigen eines Betriebszustands und eines Betriebsergebnisses von Ebenen dar, die in einem Speichersystem gemäß einer Ausführungsform der vorliegenden Offenbarung umfasst sind. Insbesondere stellt 5 schematisch eine Speicherzellenfeldschaltung in einem Speicherchip (Speicher-Die) oder einer Speicherebene, der/die in der Speichervorrichtung 150 umfasst ist, gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
-
Unter Bezugnahme auf 5 kann die Speichervorrichtung 150 zumindest eine Speichergruppe 330 mit einer Vielzahl von Zellenstrings 340 umfassen. Jeder Zellenstring 340 kann eine Vielzahl von nichtflüchtigen Speicherzellen MC0 bis MCn-1 umfassen, die mit einer entsprechenden einer Vielzahl von Bitleitungen BL0 bis BLm-1 verbunden sind. Die Zellenstrings 340 sind in entsprechenden Spalten der Speichergruppe 330 angeordnet, und jeder Zellenstring 340 kann zumindest einen Drain-Auswahltransistor DST und zumindest einen Source-Auswahltransistor SST umfassen. Die nichtflüchtigen Speicherzellen MC0 bis MCn-1 jedes Zellenstrings 340 können in Reihe zwischen einem Drain-Auswahltransistor DST und einem Source-Auswahltransistor SST geschaltet werden. Jede der nichtflüchtigen Speicherzellen MC0 bis MCn-1 kann als Multi-Level-Zelle (MLC) ausgeführt sein, die ein Datenelement mit einer Vielzahl von Bits pro Zelle speichert. Die Zellenstrings 340 können elektrisch mit den entsprechenden der Bitleitungen BL0 bis BLm-1 verbunden sein.
-
In der in 5 gezeigten Ausführungsform kann die Speichergruppe 330 Flash-Speicherzellen vom NAND-Typ MC0 bis MCn-1 umfassen. In einer anderen Ausführungsform kann die Speichergruppe 330 als NOR-Flash-Speicher, als Hybrid-Flash-Speicher, bei dem zumindest zwei verschiedene Arten von Speicherzellen gemischt oder kombiniert werden, oder als Ein-Chip-NAND-Flash-Speicher, bei dem eine Steuerung in einen einzigen Speicherchip eingebettet ist, realisiert werden. In einer Ausführungsform kann die Speichergruppe 330 eine Flash-Speicherzelle umfassen, die eine CTF (Charge Trap Flash)-Schicht umfasst, die ein leitfähiges schwebendes Gate oder eine Isolierschicht umfasst.
-
5 zeigt eine Ausführungsform eines Speichersystems 110, das die Speichervorrichtung 150 umfassen kann. In dieser Ausführungsform kann die Speichergruppe 330 in der Speichervorrichtung 150 einen oder mehrere Speicherblöcke 152, 154, 156 umfassen. Gemäß einer Ausführungsform kann die Speichervorrichtung 150 eine zweidimensionale (2D) oder dreidimensionale (3D) Struktur aufweisen. Zum Beispiel kann jeder der Speicherblöcke 152, 154, 156 in der Speichervorrichtung 150 als 3D-Struktur oder als vertikale Struktur realisiert sein. Jeder der Speicherblöcke 152, 154, 156 kann eine dreidimensionale Struktur aufweisen, die sich entlang einer ersten bis dritten Richtung erstreckt, zum Beispiel einer x-Achsen-Richtung, einer y-Achsen-Richtung und einer z-Achsen-Richtung.
-
Die Speichergruppe 330, die die Vielzahl von Speicherblöcken 152, 154, 156 umfasst, kann mit einer Vielzahl von Bitleitungen BL, einer Vielzahl von String-Auswahlleitungen SSL und einer Vielzahl von Drain-Auswahlleitungen DSL, einer Vielzahl von Wortleitungen WL, einer Vielzahl von Dummy-Wortleitungen DWL und einer Vielzahl von gemeinsamen Source-Leitungen CSL gekoppelt sein. In einer Ausführungsform kann die Speichergruppe 330 eine Vielzahl von NAND-Strings NS umfassen, die beispielsweise jeweils den Zellenstrings 340 entsprechen können. Jeder NAND-String NS kann eine Vielzahl von Speicherzellen MC umfassen und kann mit einer entsprechenden Bitleitung BL verbunden sein. Darüber hinaus kann der String-Auswahltransistor SST jedes NAND-Strings NS mit einer gemeinsamen Source-Leitung CSL verbunden sein, und der Drain-Auswahltransistor DST jedes NAND-Strings NS kann mit einer entsprechenden Bitleitung BL verbunden sein. In jedem NAND-String NS können die Speicherzellen MC zwischen dem String-Auswahltransistor SST und dem Drain-Auswahltransistor DST angeordnet sein.
-
Unter Bezugnahme auf 5 kann die Speichervorrichtung 150 eine Spannungsversorgungsschaltung 170 umfassen, die eine Wortleitungsspannung, z.B. eine oder mehrere vorgegebene Spannungen, wie eine Programmierspannung, eine Lesespannung und eine Durchgangsspannung, für jeweilige Wortleitungen gemäß einem Operations- bzw. Betriebsmodus zuführen kann, oder eine Spannung an einen Bulk (z.B. einen Wannenbereich) zuführen kann, in dem jeder Speicherblock einschließlich der Speicherzellen MC gebildet wird. In diesem Fall kann eine Spannungserzeugungsoperation der Spannungszuführungsschaltung 170 unter einer Steuerung einer Steuerschaltung 180 durchgeführt werden. Außerdem kann die Spannungsversorgungsschaltung 170 eine Vielzahl von variablen Lesespannungen erzeugen, um eine Vielzahl von Datenelementen voneinander zu unterscheiden. Die Vielzahl von variablen Lesespannungen kann an nichtflüchtige Speicherzellen in der Speichergruppe 330 angelegt werden.
-
Als Antwort auf die Steuerung der Steuerschaltung kann einer der Speicherblöcke (oder Sektoren) des Speicherzellenfeldes ausgewählt werden, und eine der Wortleitungen des ausgewählten Speicherblocks kann ausgewählt werden. Wortleitungsspannungen können der ausgewählten Wortleitung und der nicht ausgewählten Wortleitung einzeln zugeführt werden. Die Spannungsversorgungsschaltung 170 kann eine Spannungserzeugungsschaltung (siehe beispielsweise 6 bis 8) zum Erzeugen von Zielspannungen mit verschiedenen Pegeln umfassen.
-
In einer Ausführungsform kann die Spannungsversorgungsschaltung 170 gekoppelt sein mit einem ersten Pin oder Pad, der/das eine von außen (z.B. von einer externen Vorrichtung) angelegte erste Versorgungsspannung VCC empfängt, und mit einem zweiten Pin oder Pad, der/das die von der externen Vorrichtung angelegte zweite Versorgungsspannung VPP empfängt. Die zweite Versorgungsspannung VPP kann einen höheren Spannungspegel aufweisen, z.B. doppelt so hoch oder höher als die erste Versorgungsspannung VCC. Zum Beispiel kann die erste Versorgungsspannung VCC einen Spannungspegel von 2,0 V bis 5,5 V aufweisen, während die zweite Versorgungsspannung einen Spannungspegel von 9 V bis 13 V aufweisen kann.
-
Gemäß einer Ausführungsform kann die Spannungsversorgungsschaltung 170 eine Spannungserzeugungsschaltung umfassen, um die in der Speichergruppe 330 verwendeten Zielspannungen mit verschiedenen Pegeln schneller zu erzeugen. Die Spannungserzeugungsschaltung kann die zweite Versorgungsspannung VPP verwenden, um eine Zielspannung zu erzeugen, die einen höheren Spannungspegel aufweisen kann als die zweite Versorgungsspannung VPP.
-
Die Speichervorrichtung 150 kann auch eine Lese-/Schreibschaltung 320 umfassen, die von der Steuerschaltung 180 gesteuert wird. Die Lese-/Schreibschaltung 320 kann gemäß einem Betriebsmodus als Leseverstärker oder als Schreibtreiber arbeiten. Zum Beispiel kann die Lese-/Schreibschaltung 320 bei einer Verifizierungsoperation und einer Leseoperation als Leseverstärker zum Lesen des Datenelements aus dem Speicherzellenfeld arbeiten. In einer Programmieroperation kann die Schreib-/Leseschaltung 320 als Schreibtreiber arbeiten, der Potenziale von Bitleitungen gemäß einem in dem Speicherzellenfeld zu speichernden Datenelement steuert. Die Schreib-/Leseschaltung 320 kann während der Programmieroperation die in das Zellenfeld zu programmierenden Daten von Seitenpuffern empfangen. Die Schreib-/Leseschaltung 320 kann auf der Grundlage des eingegebenen Datenelements Bitleitungen ansteuern. Zu diesem Zweck kann die Lese-/Schreibschaltung 320 eine Vielzahl von Seitenpuffern (PB) 322, 324, 326 umfassen, wobei jeder Seitenpuffer jeder Spalte (oder jeder Bitleitung) oder jedem Spaltenpaar (oder jedem Bitleitungspaar) entspricht. Gemäß einer Ausführungsform kann eine Vielzahl von Zwischenspeichern (Latches) in jedem der Seitenpuffer 322, 324, 326 umfasst sein.
-
Die Seitenpuffer 322, 324, 326 können über eine Vielzahl von Bussen BUS mit einer Dateneingabe-/- ausgabevorrichtung (z.B. einer Serialisierungsschaltung oder einem Serialisierer) gekoppelt sein. Wenn jeder der Seitenpuffer 322, 324, 326 über verschiedene Busse mit der Dateneingabe-/-ausgabevorrichtung gekoppelt ist, kann eine Verzögerung, die bei der Datenübertragung von den Seitenpuffern 322, 324, 326 auftreten kann, verringert werden. Zum Beispiel kann jeder Seitenpuffer 322, 324, 326 die Datenübertragung ohne Wartezeit durchführen.
-
Gemäß einer Ausführungsform kann die Speichervorrichtung 150 einen Schreibbefehl, Schreibdaten und Informationen (z.B. eine physikalische Adresse) in Bezug auf einen Speicherort empfangen, an dem die Schreibdaten gespeichert werden sollen. Die Steuerschaltung 180 veranlasst die Spannungsversorgungsschaltung 170, einen Programmimpuls, eine Durchgangsspannung usw. zu erzeugen, die für eine Programmieroperation verwendet werden, die als Antwort auf einen Schreibbefehl durchgeführt wird, und eine oder mehrere Spannungen zu erzeugen, die für eine nach der Programmieroperation durchgeführte Verifizierungsoperation verwendet werden.
-
Wenn ein Multi-Bit-Datenelement in nichtflüchtigen Speicherzellen programmiert wird, die in der Speichergruppe 330 umfasst sind, könnte die Fehlerrate höher sein als wenn ein Ein-Bit-Datenelement in den nichtflüchtigen Speicherzellen gespeichert wird. Zum Beispiel kann ein Fehler in den nichtflüchtigen Speicherzellen aufgrund von Zelle-zu-Zelle-Interferenz (CCI) hervorgerufen werden. Um den Fehler in den nichtflüchtigen Speicherzellen zu reduzieren, sollte die Breite (Abweichung) einer Schwellenspannungsverteilung, die den gespeicherten Datenelementen zwischen den nichtflüchtigen Speicherzellen entspricht, verringert werden.
-
Zu diesem Zweck kann die Speichervorrichtung 150 eine ISPP (inkrementelle Schrittimpuls-Programmierungs-) Operation durchführen, um eine enge Schwellenspannungsverteilung der nichtflüchtigen Speicherzellen zu erreichen. In einer Ausführungsform kann die Speichervorrichtung 150 die ISPP-Operation für mehrstufige Programmieroperationen verwenden. Zum Beispiel kann die Speichervorrichtung 150 eine Programmieroperation in eine LSB (Least Significant Bit)-Programmieroperation und eine MSB (Most Significant Bit)-Operation gemäß einer vorgegebenen Reihenfolge zwischen den nichtflüchtigen Speicherzellen oder Seiten unterteilen.
-
6 stellt ein erstes Beispiel davon, wie Multi-Bit-Daten in einer Speichervorrichtung programmiert werden, gemäß einer Ausführungsform der vorliegenden Offenbarung dar. Insbesondere stellt 6 eine zweistufige Programmieroperation zum Speichern von 2-Bit-Daten in einer nichtflüchtigen Speicherzelle dar.
-
Unter Bezugnahme auf 6 kann eine nichtflüchtige Speicherzelle eine Schwellenspannung eines gelöschten Zustands aufweisen, bevor eine Programmieroperation durchgeführt wird. Wenn eine Programmieroperation des ersten Schritts durchgeführt wird, können LSB-Daten in die nichtflüchtige Speicherzelle programmiert werden. Danach, wenn eine Programmieroperation des zweiten Schritts durchgeführt wird, können MSB-Daten in die nichtflüchtige Speicherzelle programmiert werden. Durch die Programmieroperation des ersten Schritts und des zweiten Schritts wird die Schwellenspannung der nichtflüchtigen Speicherzelle zu einem von vier verschiedenen Pegeln ER, P1, P2, P3. Die vier verschiedenen Schwellenspannungspegel ER, P1, P2, P3, die die nichtflüchtige Speicherzelle aufweisen kann, können verschiedenen 2-Bit-Daten von ‚11‘, ‚01‘, ‚00‘ und ‚10‘ entsprechen.
-
Die Speichervorrichtung 150 kann eine lange Zeit benötigen, um Multi-Bit-Daten zu speichern. Wie unter Bezugnahme auf 1 beschrieben, kann die Speichervorrichtung 150, wenn die Programmieroperation des ersten Schritts erfolgreich abgeschlossen ist, eine Fertigstellungsmeldung bezüglich der LSB-Daten (LSB-DATEN-BEENDIGUNG - LSB DATA COMPLETION) an die Steuerung 130 senden. Danach kann die Speichervorrichtung 150 die MSB-Daten durch die Programmieroperation des zweiten Schritts programmieren. Wenn die Programmieroperation des zweiten Schritts erfolgreich abgeschlossen ist, kann die Speichervorrichtung 150 die Beendigung bezüglich der MSB-Daten melden (MSB-DATEN-BEENDIGUNG - MSB DATA COMPLETION).
-
7 stellt ein zweites Beispiel davon, wie Multi-Bit-Daten in einer Speichervorrichtung programmiert werden, gemäß einer Ausführungsform der vorliegenden Offenbarung dar. Insbesondere stellt 7 eine zweistufige Programmieroperation zum Speichern von 3-Bit-Daten in einer nichtflüchtigen Speicherzelle dar.
-
Unter Bezugnahme auf 7 kann eine nichtflüchtige Speicherzelle eine Schwellenspannung eines gelöschten Zustands aufweisen, bevor eine Datenprogrammieroperation durchgeführt wird. Wenn eine Programmieroperation des ersten Schritts durchgeführt wird, können LSB-Daten in die nichtflüchtige Speicherzelle programmiert werden. Danach, wenn eine Programmieroperation des zweiten Schritts durchgeführt wird, können CSB-Daten und MSB-Daten in die nichtflüchtige Speicherzelle programmiert werden. Eine Schwellenspannung der nichtflüchtigen Speicherzelle kann einen von acht verschiedenen Pegeln aufweisen, nachdem die Programmieroperation des ersten Schritts und die Programmieroperation des zweiten Schritts durchgeführt wurden. Dabei können acht verschiedene Schwellenspannungspegel, die die nichtflüchtige Speicherzelle aufweisen kann, Drei-Bit-Daten ‚111‘, ‚011‘, ‚101‘, ‚001‘, ‚110‘, ‚010‘, ‚100‘ und ‚000‘ angeben.
-
Die Speichervorrichtung 150 kann eine lange Zeit benötigen, um Multi-Bit-Daten zu speichern. Wie unter Bezugnahme auf 1 beschrieben, kann die Speichervorrichtung 150, wenn die Programmieroperation des ersten Schritts erfolgreich abgeschlossen ist, eine Fertigstellungsmeldung bezüglich der LSB-Daten (LSB-DATEN-BEENDIGUNG) melden. Danach kann die Speichervorrichtung 150 die CSB-Daten und die MSB-Daten durch eine Programmieroperation des zweiten Schritts programmieren. Wenn die Programmieroperation des zweiten Schritts erfolgreich abgeschlossen ist, kann die Speichervorrichtung 150 eine Fertigstellungsmeldung (MSB-DATEN-BEENDIGUNG) für die CSB-Daten und die MSB-Daten bereitstellen.
-
Obwohl es in 7 beschrieben worden ist, dass 3-Bit-Daten in der nichtflüchtigen Speicherzelle durch die zweistufige Programmieroperation programmiert werden können, können die 3-Bit-Daten gemäß einer anderen Ausführungsform durch eine dreistufige Programmieroperation programmiert werden. Zum Beispiel kann die Speichervorrichtung 150 beim Programmieren der dreistufigen Programmieroperation jede Fertigstellungsmeldung in Bezug auf alle LSB-Daten, CSB-Daten und MSB-Daten übertragen.
-
8 stellt ein drittes Beispiel davon, wie Multi-Bit-Daten in der Speichervorrichtung programmiert werden, gemäß einer Ausführungsform der vorliegenden Offenbarung dar. Insbesondere stellt 8 eine zweistufige Programmieroperation zum Speichern von 3-Bit-Daten in einer nichtflüchtigen Speicherzelle dar.
-
Unter Bezugnahme auf 8 kann eine nichtflüchtige Speicherzelle eine Schwellenspannung eines gelöschten Zustands aufweisen, bevor eine Datenprogrammieroperation durchgeführt wird. Die Speichervorrichtung 150 kann zunächst eine partielle Programmieroperation auf der Grundlage der LSB-Daten durchführen, die in der nichtflüchtigen Speicherzelle gespeichert werden sollen. Dabei kann die partielle Programmieroperation eine Binärprogrammieroperation umfassen, bei der eine Schwellenspannung einer nichtflüchtigen Speicherzelle unter Verwendung eines sehr großen ISPP-Schrittimpulses stark erhöht wird. Nach einem Durchführen der Binärprogrammieroperation kann die Speichervorrichtung 150 eine Fertigstellungsmeldung (LSB-DATEN-BEENDIGUNG) für die LSB-Daten übertragen.
-
Nachdem die Binärprogrammieroperation durchgeführt wurde, kann die Speichervorrichtung 150 die nichtflüchtige Speicherzelle auf der Grundlage der CSB- und MSB-Daten erneut programmieren. In diesem Schritt kann die Schwellenspannung der nichtflüchtigen Speicherzelle unter Verwendung eines ISPP-Schrittimpulses erhöht werden, der kleiner ist als der der Binärprogrammieroperation. Dieser Prozess kann als eine Foggy-Programmieroperation bezeichnet werden. Danach kann die Speichervorrichtung 150 eine Fine-Programmieroperation durchführen, um die Schwellenspannungsverteilungen der nichtflüchtigen Speicherzellen zu verringern. Die Fine-Programmieroperation kann kleinere ISPP-Schrittimpulse verwenden als die, die in einer Foggy-Programmieroperation verwendet werden.
-
Im Gegensatz zur Binärprogrammieroperation oder zur Foggy-Programmieroperation kann die Fine-Programmieroperation einen Prozess umfassen, bei dem die Schwellenspannungsverteilungen der nichtflüchtigen Speicherzellen eingeengt werden. Demzufolge kann die Wahrscheinlichkeit von Fehlern während der Fine-Programmieroperation zunehmen. In einer Ausführungsform kann die Speichervorrichtung 150 die Multi-Bit-Daten (alle Bitwerte), die programmiert werden sollen, nach der Binärprogrammieroperation und der Foggy-Programmieroperation in dem SLC-Puffer speichern. Als weiteres Beispiel kann die Speichervorrichtung 150 eine Beendigung der Programmieroperation melden, nachdem die Foggy-Programmieroperation durchgeführt wurde. Außerdem kann die Speichervorrichtung 150 die Beendigung der Fine-Programmieroperation (FINE-BEENDIGUNG - FINE COMPLETION) melden, nachdem das Fine-Programm durchgeführt wurde.
-
Wie oben unter Bezugnahme auf die 6 bis 8 beschrieben, kann ein Verfahren zum Speichern der Multi-Bit-Daten in der Speichervorrichtung 150 durch mehrstufige Programmieroperationen durchgeführt werden. Wenn zumindest einige Schritte der Programmieroperation der Speichervorrichtung 150 erfolgreich abgeschlossen sind, könnte eine Fertigstellungsmeldung an die Steuerung 130 ausgegeben werden.
-
9 stellt eine redundante Anordnung unabhängiger (oder kostengünstiger) Festplatten (RAID) dar, die gemäß einer Ausführungsform der vorliegenden Offenbarung auf eine Speichervorrichtung anwendbar ist. Insbesondere zeigt 9 ein Beispiel der Verwendung von fünf Bereichen (Plane1, Plane2, Plane3, Plane4, Plane5) in einem RAID (Redundant Array of Independent Disk) oder einem RAID (Redundant Array of Inexpensive Disk).
-
Fünf Bereiche, die in der Speichervorrichtung unter Verwendung eines RAID-Schemas umfasst sind, können im Wesentlichen die gleiche Größe aufweisen. Gemäß einer Ausführungsform kann jeder der fünf Bereiche Plane1, Plane2, Plane3, Plane4, Plane5, die in der Speichervorrichtung 150 umfasst sind, eine Speicherebene, einen Speicherblock, ein Speicherchip oder dergleichen umfassen. In einer anderen Ausführungsform können die fünf Bereiche Plane1, Plane2, Plane3, Plane4 und Plane5 fünf logische Bereiche sein, die von einem Benutzer festgelegt werden.
-
Das Speichersystem 100 kann das RAID-Schema verwenden, um 4 Datenstücke A1, A2, A3, A4 und 1 Parität Ap in fünf Bereichen Plane1, Plane2, Plane3, Plane4, Plane5 zu speichern. Selbst wenn in einem Bereich der fünf Bereiche Plane1, Plane2, Plane3, Plane4, Plane5 ein Fehler auftritt, können die in einem fehlerhaften Bereich gespeicherten Daten auf der Grundlage der anderen Datenstücke und der in den übrigen vier Bereichen gespeicherten Parität wiederhergestellt werden. Zum Beispiel kann die Parität Ap durch eine Exklusiv-ODER (XOR)-Logikoperation der vier Datenstücke A1, A2, A3, A4 erzeugt werden. Wenn dann ein Fehler in einem zweiten Datenstück A2 unter den vier Datenstücken A1, A2, A3, A4 auftritt, können die zweiten Daten A2 durch eine Exklusiv-ODER (XOR)-Operation der ersten, dritten und vierten Datenstücke A1, A3, A4 und des Paritätsstücks Ap zurückgewonnen und wiederhergestellt werden.
-
Da sich nur schwer vorhersagen lässt, in welchem der fünf Bereiche Plane1, Plane2, Plane3, Plane4, Plane5 ein Problem auftreten wird, können Speicherorte zum Speichern von vier Datenstücken und einem Paritätsstück geändert werden. Zum Beispiel kann ein Stück der ersten Parität Ap, die den vier Stücken von ersten Daten A1, A2, A3, A4 entspricht, in einem fünften Bereich Plane5 gespeichert werden, aber ein Stück der zweiten Parität Bp, die den vier Stücken der zweiten Daten B1, B2, B3, B4 entspricht, kann in einem vierten Bereich Plane4 gespeichert werden.
-
Unter Bezugnahme auf 1 und 9 können in den fünf Bereichen Plane1, Plane2, Plane3, Plane4, Plane5 der Speichervorrichtung 150 vier Stücke von ersten Daten A1, A2, A3, A4 und ein Stück der ersten Parität Ap programmiert werden. Die Paritätserzeugungsmaschine 510, die unter Bezugnahme auf 1 beschrieben ist, kann auf der Grundlage der vier Stücke von ersten Daten A1, A2, A3, A4 ein Stück der ersten Parität Ap erzeugen. In dem Speichersystem 110 können vier Stücke der ersten Daten A1, A2, A3, A4 in dem ersten nichtflüchtigen Bereich 522 gespeichert werden, und ein Stück der ersten Parität Ap kann in dem zweiten nichtflüchtigen Bereich 524 gespeichert werden. Um die Multi-Bit-Daten zu programmieren, wenn die Speichervorrichtung 150 gemäß einer Ausführungsform der vorliegenden Offenbarung eine zweistufige Programmieroperation durchführen kann, kann eine Parität erzeugt und in dem RAID-Schema gespeichert werden. In diesem Fall kann die Größe des unter Bezugnahme auf 9 beschriebenen SLC-Puffers oder des unter Bezugnahme auf 1 beschriebenen zweiten nichtflüchtigen Zellenbereichs 524 reduziert oder effizient genutzt werden.
-
10 stellt ein Datenprogrammverfahren gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
-
Unter Bezugnahme auf 10 kann die Speichervorrichtung 150, wenn eine Datenprogrammieroperation beginnt (Operation 710), LSB-Daten in einer nichtflüchtigen Speicherzelle programmieren (Operation 712). Nachdem die Speichervorrichtung 150 LSB-Daten in der nichtflüchtigen Speicherzelle programmiert hat (Operation 712), kann die Speichervorrichtung 150 bestimmen, ob eine Datenwiederherstellung durchgeführt wird, um LSB-Daten, die aufgrund eines Fehlers oder einer Unterbrechung (z.B. Sudden Power Off SPO oder Sudden Power Off Recovery SPOR) in die nichtflüchtige Speicherzelle programmiert wurden, wiederzugewinnen oder wiederherzustellen (Operation 714). Wenn die Datenwiederherstellungsoperation zur Datenwiederherstellung der in der nichtflüchtigen Speicherzelle programmierten LSB-Daten, die aufgrund eines Fehlers oder einer Unterbrechung (z.B. Sudden Power Off SPO) beschädigt wurden, auf der Grundlage von Daten durchgeführt wird, die in der Speichervorrichtung 150 programmiert worden sind (z.B. JA in der Operation 714), kann die Speichervorrichtung 150 die in der nichtflüchtigen Speicherzelle gespeicherten LSB-Daten sichern (Operation 716). Ein Beispiel der Operation 716 des Sicherns der LSB-Daten wird später unter Bezugnahme auf 11 beschrieben.
-
Wenn die Datenwiederherstellung aufgrund eines Fehlers oder einer Unterbrechung (z.B. Sudden Power Off, SPO) als Antwort auf die in der Speichervorrichtung 150 programmierten Daten nicht durchgeführt wird (NEIN in Operation 714), kann die Speichervorrichtung 150 außerdem prüfen, ob Programmdaten innerhalb des Speichersystems 110 kopiert, verschoben oder migriert werden (Operation 718). Hier ist die Datenmigration innerhalb des Speichersystems 110 ein Prozess des Kopierens, Verschiebens oder Migrierens von Daten von einem Speicherort zu einem anderen Speicherort in dem Speichersystem 110 aufgrund einer Speicherbereinigung oder eines Verschleißausgleichs. Wenn die Programmdaten mit der Datenmigration in dem Speichersystem 110 verbunden sind (JA in der Operation 718), führt die Speichervorrichtung 150 möglicherweise keine Sicherungs- bzw. Backupoperation durch oder erzeugt keine Parität für LSB-Daten, die bereits in der Speichervorrichtung 150 programmiert worden sind.
-
Andererseits, wenn die Programmieroperation nicht zur Wiederherstellung für die LSB-Daten oder zur Datenmigration durchgeführt wird (NEIN in Operation 718), kann die Paritätserzeugungsmaschine 510 die Paritätsinformationen auf der Grundlage der LSB-Daten, die programmiert werden, aktualisieren oder berechnen (Operation 720). Nachdem die Paritätserzeugungsmaschine 510 die Paritätsinformationen aktualisiert hat (Operation 720), kann die Speichervorrichtung 150 prüfen, ob die programmierten LSB-Daten die letzten LSB-Daten sind (Operation 722). Wenn die Datenprogrammieroperation der LSB-Daten nicht der Datenwiederherstellung oder Datenmigration dient, können die Programmdaten von dem Host 102, der eine externe Vorrichtung ist, übertragen werden, um die Programmdaten innerhalb des Speichersystems 110 zu speichern. Wenn die programmierten LSB-Daten die letzten LSB-Daten sind (JA in der Operation 722), können die von der Paritätserzeugungsmaschine 510 erzeugten Paritätsinformationen gespeichert werden. Eine Operation zum Sichern der mit den LSB-Daten verbundenen Parität wird später unter Bezugnahme auf 12 beschrieben. Wenn die programmierten LSB-Daten nicht die letzten LSB-Daten sind (NEIN in der Operation 722), kann die Speichervorrichtung 150 die nächsten LSB-Daten programmieren (Operation 712).
-
Unter Bezugnahme auf 10 kann die Speichervorrichtung 150 oder die Paritätserzeugungsmaschine 510, wenn es sich bei den in einer nichtflüchtigen Speicherzelle programmierten Daten um LSB-Daten handelt, in einem ersten Fall (FALL1 - CASE1) die LSB-Daten (Operation 716) sichern, die Paritätsinformationen bezüglich der LSB-Daten sichern (Operation 724) (FALL3 - CASE3) oder die Sicherungsoperation möglicherweise nicht durchführen (FALL2 - CASE2).
-
11 stellt ein erstes Beispiel des Datenprogrammverfahrens gemäß einer Ausführungsform der vorliegenden Offenbarung dar. 11 kann eine detaillierte Operation des in 10 beschriebenen ersten Falls (FALL1) des Sicherns der LSB-Daten (Operation 716) beschreiben. Insbesondere beschreibt 9 eine Operation des Programmierens von Multi-Bit-Daten (3-Bit-Daten) in einer Speichervorrichtung, die eine Vielzahl von Speicherebenen Plane0, Plane1, Plane2, Plane3 umfasst. Die Vielzahl von Speicherebenen Plane0, Plane1, Plane2, Plane3 sind als Beispiel gezeigt, um einen Bereich zu beschreiben, in dem die Multi-Bit-Daten programmiert werden. Die Multi-Bit-Daten können in einer Vielzahl von Speicherblöcken oder einer Vielzahl von Speicherchips auf im Wesentlichen gleiche Weise gespeichert werden. Gemäß einer Ausführungsform kann die Speichervorrichtung 150 die Multi-Bit-Daten sequentiell in einer Vielzahl von Bereichen, z.B. einer vorgegebenen Anzahl von Strings oder einer Vielzahl von Unterseiten, innerhalb eines einzigen Speicherblocks speichern.
-
Unter Bezugnahme auf 11 kann die erste Ebene Ebene0 eine Vielzahl von TLC-Blöcken und zumindest einen SLC-Puffer umfassen. Dabei kann der TLC-Block eine Vielzahl von Speicherzellen umfassen, die mit der Vielzahl von Wortleitungen WL0, WL1, WL2, WL3 verbunden sind. Daten, die einer Vielzahl von Seiten entsprechen, können in einer Vielzahl von nichtflüchtigen Speicherzellen gespeichert werden, die mit jeder der Wortleitungen WL0, WL1, WL2, WL3 in dem TLC-Block verbunden sind. Das heißt, die Multi-Bit-Daten können in jeder nichtflüchtigen Speicherzelle gespeichert werden. Zum Beispiel können in nichtflüchtigen Speicherzellen, die mit einer ersten Wortleitung WL0 des ersten TLC-Blocks in der ersten Ebene Ebene0 verbunden sind, erste Daten D0, sechste Daten D5 und siebte Daten D6, die LSB-Seitendaten, CSB-Seitendaten und MSB-Seitendaten entsprechen, programmiert werden. In nichtflüchtigen Speicherzellen, die mit einer zweiten Wortleitung WL1 des ersten TLC-Blocks in der ersten Ebene Ebene0 verbunden sind, können fünfte Daten D4, 18-te Daten D17 und 19-te Daten D18, die LSB-Seitendaten, CSB-Seitendaten und MSB-Seitendaten entsprechen, programmiert werden.
-
Ferner kann der SLC-Puffer eine Vielzahl von nichtflüchtigen Speicherzellen umfassen, die mit der Vielzahl von Wortleitungen WL0, WL1, WL2, WL3 verbunden sind. Die einer Seite entsprechenden Daten können in einer Vielzahl von nichtflüchtigen Speicherzellen gespeichert werden, die mit jeder der Wortleitungen WL0, WL1, WL2, WL3 in dem SLC-Block verbunden sind. Zum Beispiel können die ersten Daten D0 in nichtflüchtigen Speicherzellen gespeichert werden, die mit der ersten Wortleitung WL0 des ersten SLC-Puffers in der ersten Ebene Ebene0 verbunden sind.
-
Unter Bezugnahme auf 7 bis 8 kann die Operation des Speicherns der Multi-Bit-Daten in einer Vielzahl von TLC-Blöcken durch eine mehrstufige Operation durchgeführt werden. Unter Bezugnahme auf 7 kann die Speichervorrichtung 150, wenn eine Programmieroperation des ersten Schritts zum Speichern von LSB-Daten während einer Datenprogrammieroperation für Multi-Bit-Daten in einer Vielzahl von TLC-Blöcken, die in einer Vielzahl von Ebenen Ebene0, Ebene1, Ebene2, Ebene3 umfasst sind, abgeschlossen ist, eine Fertigstellungsmeldung für die LSB-Daten übertragen. Da ein Fehler oder eine Unterbrechung auftreten kann, während die Programmieroperation des zweiten Schritts durchgeführt wird, können die LSB-Daten, die in der Vielzahl von TLC-Blöcken gespeichert sind, in dem SLC-Puffer gesichert werden, wenn die Programmieroperation des ersten Schritts durchgeführt wird, um die Datensicherheit zu erhöhen.
-
Zum Beispiel werden zu einem ersten Zeitpunkt T1 die ersten Daten D0 zunächst als LSB-Daten in nichtflüchtige Speicherzellen programmiert, die mit der ersten Wortleitung WL0 des ersten TLC-Blocks der ersten Ebene Plane0 verbunden sind. Nachdem sie programmiert sind, können die ersten Daten D0 zu einem zweiten Zeitpunkt T2 in einer nichtflüchtigen Speicherzelle gesichert werden, die mit der ersten Wortleitung WL0 des SLC-Puffers der ersten Ebene Ebene0 verbunden ist. Nachdem die zweiten Daten D1 als LSB-Daten in nichtflüchtigen Speicherzellen zu einem dritten Zeitpunkt T3 programmiert wurden, die mit der ersten Wortleitung WL0 des ersten TLC-Blocks der zweiten Ebene Ebene1 verbunden sind, können die zweiten Daten D1 zu einem vierten Zeitpunkt T4 in nichtflüchtigen Speicherzellen gesichert werden, die mit der ersten Wortleitung WL0 des SLC-Puffers der zweiten Ebene Ebene1 gekoppelt sind. Wenn zu einem fünften Zeitpunkt T5 dritte Daten D2 als LSB-Daten in nichtflüchtigen Speicherzellen programmiert werden, die mit der ersten Wortleitung WL0 des ersten TLC-Blocks der dritten Ebene Ebene2 verbunden sind, können die dritten Daten D2 als LSB-Daten programmiert werden. Zu einem sechsten Zeitpunkt T6 können die dritten Daten D2 in nichtflüchtigen Speicherzellen gesichert werden, die mit der ersten Wortleitung WL0 des SLC-Puffers der dritten Ebene Ebene2 gekoppelt sind. In ähnlicher Weise werden zum siebten Zeitpunkt T7 die vierten Daten D3 als LSB-Daten in eine nichtflüchtige Speicherzelle programmiert, die mit der ersten Wortleitung WL0 des ersten TLC-Blocks der vierten Ebene Ebene2 verbunden ist. Zum achten Zeitpunkt T8 können die vierten Daten D3 in nichtflüchtigen Speicherzellen gesichert werden, die mit der ersten Wortleitung WL0 des SLC-Puffers der dritten Ebene Ebene3 gekoppelt sind.
-
Nachdem die LSB-Daten in nichtflüchtige Speicherzellen programmiert wurden, die mit der ersten Wortleitung WL0 gekoppelt sind, kann die Speichervorrichtung 150 andere LSB-Daten in nichtflüchtige Speicherzellen programmieren, die mit der zweiten Wortleitung WL1 neben der ersten Wortleitung WL0 verbunden sind. Nach Durchführen der Programmieroperation des ersten Schritts für die LSB-Daten in den nichtflüchtigen Speicherzellen, die mit der zweiten Wortleitung WL1 verbunden sind, kann die Speichervorrichtung 150 eine Programmieroperation des zweiten Schritts für CSB-Daten und MSB-Daten in den nichtflüchtigen Speicherzellen durchführen, die mit der ersten Wortleitung WL1 verbunden sind. Durch dieses Programmverfahren werden die fünften Daten D4 zum neunten Zeitpunkt T9 als LSB-Daten in den nichtflüchtigen Speicherzellen programmiert, die mit der zweiten Wortleitung WL1 des ersten Blocks TLC Block in der ersten Ebene Ebene0 verbunden sind. Die fünften Daten D4 können zum zehnten Zeitpunkt T10 in den nichtflüchtigen Speicherzellen gesichert werden, die mit der zweiten Wortleitung WL0 des SLC-Puffers in der ersten Ebene Ebene0 verbunden sind. Danach, zu einem elften Zeitpunkt T11, können die sechsten Daten D5 und die siebten Daten D6 als CSB-Daten und MSB-Daten in den nichtflüchtigen Speicherzellen programmiert werden, die mit der ersten Wortleitung WLO verbunden sind.
-
Außerdem kann die Speichervorrichtung 150 die sechsten Daten D5 und die siebten Daten D6 als CSB-Daten und MSB-Daten in dem ersten TLC-Block programmieren, aber die sechsten Daten D5 und die siebten Daten D6 werden möglicherweise nicht in dem SLC-Puffer gesichert. Da die 3-Bit-Daten, d.h. LSB-Daten, CSB-Daten und MSB-Daten, vollständig in den nichtflüchtigen Speicherzellen programmiert sind, die mit der ersten Wortleitung WL0 des ersten Blocks TLC Block der ersten Ebene Ebene0 verbunden sind, muss die Speichervorrichtung 150 die sechsten Daten D5 und die siebten Daten D6 nicht in dem SLC-Puffer sichern, und die gesicherten ersten Daten D0 können unnötig werden.
-
In der unter Bezugnahme auf 11 beschriebenen Datenprogrammieroperation zum Programmieren der Multi-Bit-Daten kann die Speichervorrichtung 150 die Programmieroperation des ersten Schritts bezüglich der LSB-Daten in dem ersten Block (TLC-Block) durchführen, der in der Vielzahl von Ebenen Ebene0, Ebene1, Ebene2, Ebene3 umfasst ist. Dann kann die Speichervorrichtung 150 eine Fertigstellungsmeldung senden und die LSB-Daten in dem SLC-Puffer sichern. Danach, selbst wenn ein Fehler oder eine Unterbrechung in einem Prozess des Programmierens von CSB-Daten oder MSB-Daten durch die Programmieroperation des zweiten Schritts auftritt, könnten die LSB-Daten, für die die Fertigstellungsmeldung gesendet wird, wiederhergestellt oder wiedergewonnen werden, weil die LSB-Daten gesichert sind. Der in 11 beschriebene erste TLC-Block kann dem in 1 beschriebenen ersten nichtflüchtigen Zellenbereich 522 entsprechen, und der in 11 beschriebene SLC-Block kann dem in 1 beschriebenen zweiten nichtflüchtigen Zellenbereich 524 entsprechen.
-
Selbst wenn ein Fehler oder eine Unterbrechung an einem bestimmten Punkt der in der Speichervorrichtung 150 durchgeführten Datenprogrammieroperation auftritt, kann das Speichersystem 110 eine Operation zum Wiederherstellen oder Wiedergewinnen von LSB-Daten durchführen. Wenn ein Fehler oder eine Unterbrechung zu einem bestimmten Zeitpunkt auftritt, ist es notwendig, dass die Speichervorrichtung 150 eine Sicherheit für Daten bietet, die mit einer Fertigstellungsmeldung verbunden sind, bevor der Fehler oder die Unterbrechung auftritt. Da in 11 die in dem ersten Block (TLC-Block) gespeicherten LSB-Daten in dem SLC-Block gesichert sind, kann das Speichersystem 110 die Datensicherheit der gesicherten Daten gewährleisten.
-
12 stellt ein zweites Beispiel des Datenprogrammverfahrens gemäß einer Ausführungsform der vorliegenden Offenbarung dar. 12 beschreibt eine detaillierte Operation (Operation 724) der Sicherung einer Parität, die mit den in 10 beschriebenen LSB-Daten verbunden ist (FALL3). Insbesondere beschreibt 12 eine Operation des Programmierens der Multi-Bit-Daten (3-Bit-Daten) in einer Speichervorrichtung, die eine Vielzahl von Speicherebenen Ebene0, Ebene1, Ebene2, Ebene3 umfasst. Die Vielzahl von Speicherebenen Ebene0, Ebene1, Ebene2, Ebene3 sind als Beispiel gezeigt, um mehrere Bereiche zu beschreiben, in denen die Multi-Bit-Daten gespeichert sind. Die Multi-Bit-Daten können in einer Vielzahl von Speicherblöcken oder einer Vielzahl von Speicherchips im Wesentlichen auf die gleiche Weise programmiert werden.
-
Unter Bezugnahme auf 12 kann die erste Ebene Ebene0 eine Vielzahl von TLC-Blöcken und zumindest einen SLC-Puffer umfassen. Der TLC-Block kann eine Vielzahl von nichtflüchtigen Speicherzellen umfassen, die mit der Vielzahl von Wortleitungen WL0, WL1, WL2, WL3 gekoppelt sind. Daten, die einer Vielzahl von Seiten entsprechen, können in einer Vielzahl von Speicherzellen gespeichert werden, die mit jeder der Wortleitungen WL0, WL1, WL2, WL3 in dem TLC-Block gekoppelt sind. Eine Programmreihenfolge von Daten, die in dem in 12 gezeigten TLC-Block gespeichert sind, ist im Wesentlichen die gleiche wie die Programmreihenfolge von Daten, die in dem in 11 beschriebenen TLC-Block gespeichert sind.
-
Der SLC-Puffer kann eine Vielzahl von nichtflüchtigen Speicherzellen umfassen, die mit einer Vielzahl von Wortleitungen WL0, WL1, WL2, WL3 verbunden sind. Im Gegensatz zu der unter Bezugnahme auf 11 beschriebenen Ausführungsform kann die Vielzahl von nichtflüchtigen Speicherzellen, die mit jeder Wortleitung WL0, WL1, WL2, WL3 in dem unter Bezugnahme auf 12 beschriebenen SLC-Block verbunden sind, Paritätsinformationen P0, P1, P2, P3 speichern, wobei jede Paritätsinformation den LSB-Daten entspricht, die in jeder Seite der TLC-Blöcke in der Vielzahl von Speicherebenen Ebene0, Ebene1, Ebene2, Ebene3 programmiert sind. Zum Beispiel kann die Paritätserzeugungsmaschine 510 die erste Paritätsinformation P0 auf der Grundlage der ersten Daten bis zu den vierten Daten D0, D1, D2, D3 erzeugen. Die erste Paritätsinformation P0 kann in dem SLC-Puffer gespeichert werden. Während die ersten bis vierten Daten D0, D1, D2, D3 sequentiell in dem unter Bezugnahme auf 9 beschriebenen RAID-Schema programmiert werden, kann die Paritätserzeugungsmaschine 510 die erste Paritätsinformation P0 erzeugen, indem sie eine Exklusiv-ODER-(XOR)-Operation mit den in den TLC-Blöcken programmierten LSB-Daten durchführt.
-
Unter Bezugnahme auf 7 bis 8 kann die Operation des Speicherns einer Vielzahl von Multi-Bit-Daten in einer Vielzahl von TLC-Blöcken in mehreren Schritten durchgeführt werden. Unter Bezugnahme auf 7 kann die Speichervorrichtung 150, wenn die Programmieroperation des ersten Schritts zum Speichern von LSB-Daten während der Datenprogrammieroperation zum Speichern der Vielzahl von Multi-Bit-Daten in der Vielzahl von TLC-Blöcken in einer Vielzahl von Speicherebenen Ebene0, Ebene1, Ebene2, Ebene3 abgeschlossen ist, eine Fertigstellungsmeldung für die LSB-Daten ausgeben. Wie in 10 beschrieben, wenn das Speichersystem eine Fertigstellungsmeldung bezüglich zumindest einiger der Programmdaten überträgt, die von dem Host 102, der eine externe Vorrichtung darstellt, übertragen werden, sollte das Speichersystem 110 die Sicherheit der mit der Fertigstellungsmeldung verbundenen Daten gewährleisten. Da ein Fehler oder eine Unterbrechung auftreten kann, wenn die Programmieroperation des zweiten Schritts in den nichtflüchtigen Speicherzellen zum Speichern der LSB-Daten durchgeführt wird, kann die erste Paritätsinformation P0 für die LSB-Daten, die in der Vielzahl von TLC-Blöcken gespeichert sind, in dem SLC-Puffer gesichert werden, nachdem die Programmieroperation des ersten Schritts durchgeführt wurde.
-
Zum Beispiel kann zu einem ersten Zeitpunkt T1, wenn die Speichervorrichtung 150 erste Daten D0 als LSB-Daten in nichtflüchtigen Speicherzellen programmieren kann, die mit der ersten Wortleitung WL0 in dem ersten TLC-Block der ersten Speicherebene Plane0 gekoppelt sind, die Paritätserzeugungsmaschine 510 die ersten Daten D0 als erste Paritätsinformationen P0 (P0 = D0) bestimmen. Zu einem zweiten Zeitpunkt T2, wenn die Speichervorrichtung 150 zweite Daten D1 als LSB-Daten in nichtflüchtigen Speicherzellen programmiert, die mit der ersten Wortleitung WL0 des ersten TLC-Blocks der zweiten Ebene Ebene1 gekoppelt sind, kann die Paritätserzeugungsmaschine 510 eine Exklusiv-ODER-(XOR)-Operation mit den zweiten Daten D1 und den vorherigen ersten Paritätsinformationen (P0 = D0) durchführen, um die ersten Paritätsinformationen P0 zu aktualisieren (P0 = P0 XOR D1 = D0 XOR D1). Wenn die Speichervorrichtung 150 zum dritten Zeitpunkt T3 dritte Daten D2 als LSB-Daten in nichtflüchtigen Speicherzellen programmiert, die mit der ersten Wortleitung WL0 des ersten Blocks TLC Block der dritten Ebene Ebene2 verbunden sind, kann die Paritätserzeugungsmaschine 510 eine Exklusiv-ODER-(XOR)-Operation mit den dritten Daten D2 und den vorherigen ersten Paritätsinformationen durchführen, um die ersten Paritätsinformationen P0 zu aktualisieren (P0 = P0 XOR D2 = (D0 XOR D1) XOR D2). Danach, zu einem vierten Zeitpunkt T4, wenn die Speichervorrichtung 150 vierte Daten D3 als LSB-Daten in den nichtflüchtigen Speicherzellen programmieren kann, die mit der ersten Wortleitung WL0 des ersten Blocks TLC Block der vierten Ebene Ebene3 gekoppelt sind, kann die Paritätserzeugungsmaschine 510 eine Exklusiv-ODER (XOR)-Operation mit den vierten Daten D3 und der vorherigen ersten Paritätsinformation (P0 = (D0 XOR D1) XOR D2) durchführen, um die Paritätsinformation P0 zu aktualisieren (P0 = P0 XOR D3 = ((D0 XOR D1) XOR D2) XOR D3).
-
Die Speichervorrichtung 150 kann die ersten Daten D0 bis die vierten Daten D3 in nichtflüchtigen Speicherzellen programmieren, die mit einer ersten Wortleitung WL0 jedes der TLC-Blöcke in der Vielzahl von Speicherebenen Ebene0, Ebene1, Ebene2, Ebene3 gekoppelt sind. Nach Programmieroperationen für die LSB-Daten kann die Paritätserzeugungsmaschine 510 die erste Paritätsinformation (P0 = ((D0 XOR D1) XOR D2) XOR D3) erzeugen, die mit den ersten Daten D0 bis zu den vierten Daten D3 verbunden ist. Die Speichervorrichtung 150 kann die erste Paritätsinformation P0 in nichtflüchtigen Speicherzellen speichern, die mit der ersten Wortleitung WL0 des SLC-Puffers in der ersten Ebene Ebene0 gekoppelt sind.
-
Nachdem die LSB-Daten für die erste Wortleitung WL0 programmiert sind, kann die Speichervorrichtung 150 andere LSB-Daten in nichtflüchtigen Speicherzellen programmieren, die mit der zweiten Wortleitung WL1 neben der ersten Wortleitung WL0 gekoppelt sind. Nach Durchführen einer Programmieroperation des ersten Schritts zum Programmieren der LSB-Daten in den nichtflüchtigen Speicherzellen, die mit der zweiten Wortleitung WL1 verbunden sind, kann die Speichervorrichtung 150 eine Programmieroperation des zweiten Schritts zum Programmieren der CSB-Daten und MSB-Daten in der nichtflüchtigen Speicherzelle durchführen, die mit der ersten Wortleitung WL1 gekoppelt ist.
-
Durch diese Programmsequenz kann zu einem sechsten Zeitpunkt T6, wenn die fünften Daten D4 als LSB-Daten in den nichtflüchtigen Speicherzellen programmiert sind, die mit der zweiten Wortleitung WL1 des ersten Blocks TLC Block in der ersten Ebene Ebene0 gekoppelt sind, die zweite Paritätsinformation P1 als die fünften Daten D4 (P1 = D4) bestimmt werden. Zu einem siebten Zeitpunkt T7 kann die Speichervorrichtung 150 die sechsten Daten D5 und die siebten Daten D6 als CSB-Daten und MSB-Daten in den nichtflüchtigen Speicherzellen programmieren, die mit der ersten Wortleitung WL0 des TLC-Blocks in der ersten Ebene Ebene0 verbunden sind. Während die Speichervorrichtung 150 die sechsten Daten D5 und die siebten Daten D6 als die CSB-Daten und die MSB-Daten in dem ersten TLC-Block programmiert, werden die sechsten Daten D5 und die siebten Daten D6 möglicherweise nicht in dem SLC-Puffer gesichert. Da die 3-Bit-Daten, die den LSB-Daten, CSB-Daten und MSB-Daten entsprechen, vollständig in den nichtflüchtigen Speicherzellen programmiert sind, die mit der ersten Wortleitung WL0 des ersten Block-TLC-Blocks der ersten Ebene Ebene0 gekoppelt sind, muss die Speichervorrichtung 150 möglicherweise keine Paritätsinformationen für die sechsten Daten D5 und die siebten Daten D6 in dem SLC-Puffer sichern.
-
Danach, zu einem achten Zeitpunkt T8, wenn die Speichervorrichtung 150 die achten Daten D7 als LSB-Daten in den nichtflüchtigen Speicherzellen programmiert, die mit der zweiten Wortleitung WL1 des ersten TLC-Blocks in der zweiten Ebene Plane1 gekoppelt sind, kann die zweite Paritätsinformation P1 (P1 = P1 XOR D7 = D4 XOR D7) als Ergebnis des exklusiven ODER der achten Daten D7 und der vorherigen zweiten Paritätsinformation (P1 = D4) aktualisiert werden. Zu einem neunten Zeitpunkt T9 programmiert die Speichervorrichtung 150 die sechsten Daten D5 und die siebten Daten D6 als CSB-Daten und MSB-Daten in den nichtflüchtigen Speicherzellen, die mit der ersten Wortleitung WL0 des TLC-Blocks in der zweiten Ebene Ebene1 gekoppelt sind.
-
Die in 12 beschriebene Datenprogrammieroperation wird an LSB-Daten, die der Programmieroperation des ersten Schritts entsprechen, während eines Verfahrens des Programmierens von Multi-Bit-Daten in den ersten TLC-Blöcken durchgeführt, die in der Vielzahl von Speicherebenen Ebene0, Ebene1, Ebene2, Ebene3 umfasst sind. Während das Speichersystem 110 die Programmbeendigung meldet, kann es die Paritätsinformationen für die LSB-Daten in dem SLC-Puffer sichern. Danach, selbst wenn ein Fehler oder eine Unterbrechung beim Programmieren von CSB-Daten oder MSB-Daten durch die Programmieroperation des zweiten Schritts auftritt, können die LSB-Daten, die mit der Fertigstellungsmeldung verbunden sind, wiedergewonnen und wiederhergestellt werden, da die LSB-Daten und die Paritätsinformationen gesichert sind. Zum Beispiel, unter Bezugnahme auf 9, selbst wenn ein Fehler in einem der ersten Daten bis zu den vierten Daten D1, D2, D3, D4 auftritt, können Daten, in denen der Fehler aufgetreten ist, auf der Grundlage der ersten Daten bis zu den vierten Daten D1, D2, D3, D4 und der ersten Paritätsinformation P0 wiedergewonnen und wiederhergestellt werden. Der in 12 beschriebene erste TLC-Block kann dem in 1 beschriebenen ersten nichtflüchtigen Zellenbereich 522 entsprechen, und der in 12 beschriebene SLC-Block kann dem in 1 beschriebenen zweiten nichtflüchtigen Zellenbereich 524 entsprechen.
-
13 stellt eine Datenübertragung zwischen einer Steuerung und einer Speichervorrichtung während einer Datenprogrammieroperation gemäß einer Ausführungsform der vorliegenden Offenbarung dar. Insbesondere kann die unter Bezugnahme auf 12 beschriebene Operation des Erzeugens und Sicherns der Paritätsinformationen durch die Steuerung 130 und die unter Bezugnahme auf 2 bis 3 beschriebene Speichervorrichtung 150 durchgeführt werden. 13 zeigt ein Diagramm, das eine Datenübertragung und die für die Datenübertragung aufgewendete Zeit über die ersten und zweiten Kanäle Ch0, Ch1, die die Steuerung 130 und die Speichervorrichtung 150 verbinden, während einer Programmieroperation und einer in der Speichervorrichtung 150 durchgeführten Operation darstellt.
-
Unter Bezugnahme auf 13 werden erste Daten D0 in einem Speicherblock gespeichert, der über einen ersten Kanal Ch0 mit der Steuerung 130 verbunden ist, und zweite Daten D1 können in einem Speicherblock programmiert werden, der über einen zweiten Kanal Ch1 angeschlossen ist. Die Steuerung 130 überträgt die dritten Daten D2 über den ersten Kanal Ch0 an einen Speicherblock und die vierten Daten D3 über den zweiten Kanal Ch1 an einen Speicherblock. Gemäß einer anderen Ausführungsform können die Speicherblöcke, die über den ersten Kanal Ch0 oder den zweiten Kanal Ch1 mit der Steuerung 130 verbunden sind, einzeln in verschiedenen Speicherchips, verschiedenen Speicher-Dies oder verschiedenen Speicherebenen umfasst sein.
-
Die Steuerung 130 ist eingerichtet, um die dritten Daten D2 und die vierten Daten D3 über den ersten Kanal Ch0 und den zweiten Kanal Ch1 parallel in die Speichervorrichtung 150 zu übertragen, die Datenblöcke an Positionen umfasst, in denen die dritten Daten D2 und die vierten Daten D3 gespeichert sind (①). Nachdem die dritten Daten D2 und die vierten Daten D3 in dem in der Speichervorrichtung 150 umfassten Cache-Puffer gespeichert sind, kann die Speichervorrichtung 150 die dritten Daten D2 und die vierten Daten D3 aus dem Cache-Puffer in den Seitenpuffer übertragen. Dann können die dritten Daten D2 und die vierten Daten D3 in dem Seitenpuffer in den Speicherblock (②) programmiert werden. Die Speichervorrichtung 150 kann die ersten Daten D0 und die zweiten Daten D1 in dem Seitenpuffer lesen und speichern und dann eine XOR-Operation an den ersten Daten D0 und den zweiten Daten D1 und den dritten Daten D2 und den vierten Daten D3, die in dem Cache-Puffer (③) gespeichert sind, durchführen. Die Speichervorrichtung 150 kann ein XOR-Ergebnis D0D2, D1D3 in den Sicherungsblock (④) programmieren. Bei dem obigen Verfahren können die Zeit, die für das Lesen der bereits programmierten Daten und das Durchführen der Exklusiv-ODER-Operation (③) aufgewendet wird, und die Zeit, die für das Programmieren des Ergebnisses der Exklusiv-ODER-Operationen (④) aufgewendet wird, ein Overhead für ein Erzeugen und Sichern der Paritätsinformationen sein.
-
Wenn der oben beschriebene Overhead in Bezug auf die in der Speichervorrichtung 150 übertragenen und programmierten Daten auftreten, könnte die Dateneingabe-/- ausgabeleistung der Speichervorrichtung 150 reduziert oder verschlechtert werden. Gemäß einer Ausführungsform wendet die Speichervorrichtung 150 ein RAID-Schema an, um Paritätsinformationen zu speichern, während eine voreingestellte Anzahl von Daten programmiert wird, wie unter Bezugnahme auf 12 beschrieben. Nachdem die voreingestellte Anzahl von Daten programmiert wurde, könnten aktualisierte Paritätsinformationen bezüglich der voreingestellten Anzahl von Daten an einem anderen Speicherort programmiert werden. Die Speichervorrichtung 150 könnte eine Menge an Paritätsinformationen reduzieren und den Overhead verringern. Außerdem kann die Speichervorrichtung 150 gemäß einer Ausführungsform der vorliegenden Offenbarung einen separaten Speicherplatz zum Berechnen oder Aktualisieren von Paritätsinformationen in dem Seitenpuffer oder in dem Cache-Puffer umfassen, um die Zeit für das Lesen von zuvor in dem Speicherblock gespeicherten Daten und das Speichern von gelesenen Daten in dem Seitenpuffer zu verringern.
-
14 stellt einen Fall dar, in dem die Datenprogrammieroperation in einem Speichersystem gemäß einer Ausführungsform der vorliegenden Offenbarung angehalten oder unterbrochen wird. Die unter Bezugnahme auf 14 beschriebene Programmieroperation ist im Wesentlichen die gleiche wie die unter Bezugnahme auf 12 beschriebene. In 14 erfolgt jedoch eine plötzliche Abschaltung (Sudden Power Off) zu einem zwanzigsten Zeitpunkt T20, wenn die Speichervorrichtung 150 die 24-ten Daten D23 und die 25-ten Daten D24 in der dritten Ebene Ebene2 speichert. 14 stellt ein Beispiel für eine Programmieroperation für CSB-Daten und MSB-Daten in nichtflüchtigen Speicherzellen dar, die mit der zweiten Wortleitung WL1 des TLC-Blocks verbunden sind, die ausgefallen ist.
-
Da die Programmieroperationen, die von dem ersten Zeitpunkt T1 bis zum 19-ten Zeitpunkt T19 durchgeführt werden, erfolgreich abgeschlossen sind, könnte die Speichervorrichtung 150 die Datensicherheit von den ersten Daten D0 bis zu den 23-ten Daten D22 gewährleisten. An dem zwanzigsten Zeitpunkt T20 schlägt jedoch die Operation zum Programmieren der vierundzwanzigsten Daten D23 und der fünfundzwanzigsten Daten D24 als CSB-Daten und MSB-Daten fehl, so dass die Sicherheit der elften LSB-Daten D10, die in den nichtflüchtigen Speicherzellen desselben Speicherortes gespeichert sind, fraglich sein könnte.
-
Wenn die Stromversorgung nach der plötzlichen Abschaltung wiederaufgenommen wird, kann das Speichersystem 110 oder die Speichervorrichtung 150 die elften Daten D10 wiederherstellen, deren Sicherheit in Frage steht. Zu einem ersten Zeitpunkt T1, nachdem die Stromversorgung erfolgt ist, liest die Speichervorrichtung 150 die fünften Daten D4, die mit den elften Daten D10 verbunden sind, aus dem TLC-Block und speichert dann die fünften Daten D4 als die elften Daten D10 (D10 = D4). Danach, zu einem zweiten Zeitpunkt T2, liest die Speichervorrichtung 150 die achten Daten D7, die mit den elften Daten D10 verbunden sind, aus dem TLC-Block, um eine Exklusiv-ODER-Operation an den achten Daten D7 und den fünften Daten D4, die als die elften Daten D10 gespeichert sind, durchzuführen. Nach Durchführen der XOR-Operation kann das Ergebnis als die elften Daten D10 aktualisiert werden (D10 = D10 XOR D7 = D4 XOR D7). Zu einem dritten Zeitpunkt T3 liest die Speichervorrichtung 150 die 14-ten Daten D13, die mit den 11-ten Daten D10 verbunden sind, aus dem TLC-Block und führt eine Exklusiv-ODER-Operation (XOR) mit den vorherigen 11-ten Daten D10 durch. Das Ergebnis kann als die elften Daten D10 aktualisiert werden (D10 = D10 XOR D13 = (D4 XOR D7) XOR D13). Zu einem vierten Zeitpunkt liest die Speichervorrichtung 150 die zweite Paritätsinformation P1, die mit den elften Daten D10 verbunden ist, aus dem SLC-Puffer und führt eine Exklusiv-ODER-Operation (XOR) mit den vorherigen elften Daten D10 durch. Dann kann das Ergebnis als die elften Daten D10 aktualisiert werden (D10 = D10 XOR P1 = ((D4 XOR D7) XOR D13) XOR P1). Zu einem fünften Zeitpunkt T5 kann die Speichervorrichtung 150 die wiederhergestellten elften Daten D10 in den TLC-Block programmieren, um Daten wiederherzustellen, deren Datensicherheit aufgrund einer plötzlichen Abschaltung in Frage gestellt ist. Wie oben beschrieben, kann das Speichersystem 110 selbst dann, wenn eine Programmieroperation zu einem bestimmten Zeitpunkt fehlschlägt, die Sicherheit der in der Speichervorrichtung 150 vor dem entsprechenden Zeitpunkt programmierten Daten garantieren.
-
15 stellt ein erstes Beispiel einer Vorrichtung zum Steuern einer Datenprogrammieroperation gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
-
Unter Bezugnahme auf 15 kann die Steuerung 130 in dem Speichersystem 110 ein Modul oder eine Schaltung 424, 422 umfassen, das/die eingerichtet ist, um eine Parität zum Wiederherstellen oder Wiedergewinnen von Daten zu berechnen, die in der Speichervorrichtung 150 gespeichert oder programmiert worden sind. Die Speichervorrichtung 150 kann eine Vielzahl von Speicherchips 182, 184 umfassen.
-
Die Speicherchips 182, 184 können eine Vielzahl von Speicherebenen Ebene0, Ebene1, Ebene2, Ebene3 umfassen. Jede Speicherebene kann eine Vielzahl von Speicherblöcken und Seitenpuffern PB umfassen. Die Seitenpuffer 322A können eine Steuerschaltung 434 zum Steuern von Dateneingabe-/- ausgabeoperationen und eine Vielzahl von Zwischenspeicher (Latches) 432 umfassen.
-
Gemäß einer Ausführungsform können der erste Paritätsrechner 422 und der zweite Paritätsrechner 424, die in der Steuerung 130 umfasst sind, unterschiedliche Operationen durchführen. Der erste Paritätsrechner 422 kann der unter Bezugnahme auf 2 beschriebenen Fehlerkorrekturschaltung 138 entsprechen. Der erste Paritätsrechner 422 kann Daten unter Verwendung eines Fehlerkorrekturcodes kodieren, um Daten wiederherzustellen, wenn ein Fehler in Daten, die in der Speichervorrichtung 150 programmiert sind, oder ein Fehler in einigen nichtflüchtigen Speicherzellen in der Speichervorrichtung 150 auftritt. Ferner kann der erste Paritätsrechner 422 Daten unter Verwendung eines Fehlerkorrekturcodes dekodieren, um zu prüfen, ob ein Fehler in den aus der Speichervorrichtung 150 gelesenen Daten vorliegt.
-
Im Gegensatz zu dem ersten Paritätsrechner 422 kann der zweite Paritätsrechner 424 Paritätsinformationen erzeugen, um die Sicherheit von bereits programmierten Daten zu gewährleisten, wenn Daten aufgrund eines Fehlers oder einer Unterbrechung während einer Operation des Programmierens von Daten in der Speichervorrichtung 150 nicht programmiert werden können. Insbesondere kann der zweite Paritätsrechner 424 Paritätsinformationen für eine Vielzahl von LSB-Daten erzeugen und die Paritätsinformationen an die Speichervorrichtung 150 übertragen. Wie unter Bezugnahme auf 12 beschrieben, kann der zweite Paritätsrechner 424 die Paritätsinformationen erzeugen, indem er eine Exklusiv-ODER-(XOR)-Operation an vier Datenstücken durchführt, die in verschiedenen Bereichen der Speichervorrichtung 150 programmiert sind.
-
Da der zweite Paritätsrechner 424 in der Steuerung 130 Paritätsinformationen für eine Vielzahl von LSB-Daten erzeugen kann und die Paritätsinformationen an die Speichervorrichtung 150 überträgt, könnte der Overhead in einem Prozess des Programmierens der Vielzahl von LSB-Daten in der Speichervorrichtung 150 reduziert werden. Darüber hinaus kann die Vielzahl von Speicherchips 182, 184 in der Speichervorrichtung 150 eine Logikschaltung zum Erzeugen von Paritätsinformationen und einen separaten Speicherplatz (z.B. einen zusätzlichen Zwischenspeicher (Latch), ein Register oder usw.) zum vorübergehenden Speichern der Paritätsinformationen umfassen. Da jedoch die Paritätsinformationen für eine Vielzahl von LSB-Daten über einen Kanal zwischen der Steuerung 130 und der Vielzahl von Speicherchips 182, 184 übertragen werden, könnte sich die Kanalbelegung erhöhen.
-
Da der zweite Paritätsrechner 424 in der Steuerung 130 Paritätsinformationen für eine Vielzahl von LSB-Daten erzeugt und die Paritätsinformationen an die Speichervorrichtung 150 überträgt, könnten die Paritätsinformationen außerdem in einem anderen Chip oder einer anderen Speicherebene programmiert werden. Zum Beispiel kann die Steuerung 130 eine Vielzahl von LSB-Daten und Paritätsinformationen, die der Vielzahl von LSB-Daten entsprechen, an verschiedene Speicherchips oder verschiedene Ebenen in der Speichervorrichtung 150 übertragen. Unter Bezugnahme auf 10, da die Steuerung 130 eine Vielzahl von LSB-Daten und Paritätsinformationen, die der Vielzahl von LSB-Daten entsprechen, an verschiedene Bereiche überträgt und programmiert, könnte die Sicherheit und Zuverlässigkeit der gespeicherten Daten verbessert werden.
-
16 stellt ein zweites Beispiel der Vorrichtung zum Steuern einer Datenprogrammieroperation gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
-
Unter Bezugnahme auf 16 kann die Steuerung 130 in dem Speichersystem 110 einen ersten Paritätsrechner 422 zum Berechnen eines Codes oder einer Parität zum Wiedergewinnen oder Wiederherstellen von in der Speichervorrichtung 150 gespeicherten Daten umfassen. Der erste Paritätsrechner 422 kann der unter Bezugnahme auf 2 beschriebenen Fehlerkorrekturschaltung 138 entsprechen.
-
Die Speichervorrichtung 150, die über einen Kanal mit der Steuerung 130 verbunden ist, kann eine Vielzahl von Speicherchips 182, 184 umfassen. Jeder der Speicherchips 182, 184 kann eine Vielzahl von Speicherebenen Ebene0, Ebene1, Ebene2, Ebene3 umfassen. Jede Speicherebene kann eine Vielzahl von Speicherblöcken und einen Seitenpuffer (PB) umfassen. Der Seitenpuffer PB kann eine Steuerlogik zum Steuern von Dateneingabe-/- ausgabeoperationen und eine Vielzahl von Zwischenspeichern zum vorübergehenden Speichern von Daten umfassen, die während Dateneingabe-/-ausgabeoperationen, z.B. Lese-, Programm- und Löschoperationen, übertragen werden. Darüber hinaus kann die Speicherebene oder der Seitenpuffer PB eine Steuerlogik 436 mit einer Paritätsrechenmaschine umfassen, die dem in 15 gezeigten zweiten Paritätsrechner 424 entspricht und eingerichtet ist, um eine Parität zum Wiedergewinnen oder Wiederherstellen von durch eine Programmieroperation gespeicherten Daten zu berechnen. Gemäß einer Ausführungsform kann die Paritätsrechenmaschine in jedem der Speicherchips 182, 184 oder in jeder der Ebenen Ebene0, Ebene1, Ebene2, Ebene3 umfasst sein. In einer anderen Ausführungsform kann die Paritätsrechenmaschine in jedem Speicherchip 182, 184 umfasst sein.
-
Wenn die Steuerung 130 Daten über den Kanal an die Speichervorrichtung 150 überträgt, kann die in der Speichervorrichtung 150 umfasste Steuerschaltung 436, d.h. der in dem Speicherchip oder in der Speicherebene umfasste Seitenpuffer 322B, eine XOR-Operation in Bezug auf eine voreingestellte Anzahl von Daten durchführen, um Paritätsinformationen zu erzeugen. Das heißt, die Steuerschaltung 436 könnte sowohl die Operationen der Steuerschaltung 434 als auch des zweiten Paritätsrechners 424 durchführen, die unter Bezugnahme auf 15 beschrieben sind. Darüber hinaus kann der Seitenpuffer 322B eine Vielzahl von Zwischenspeichern 432 umfassen, die während Dateneingabe-/-ausgabeoperationen (z.B. Lese-, Programmier-, Löschoperationen) übertragene Daten vorübergehend speichern können, sowie einen zusätzlichen Zwischenspeicher 438, der in der Lage ist, Paritätsinformationen vorübergehend zu speichern. Die von der Steuerschaltung 436 erzeugten Paritätsinformationen können in einem Speicherchip oder einer Speicherebene, die die Steuerung 436 umfassen, gespeichert werden.
-
Verglichen mit der Ausführungsform von 15, bei der die Steuerung 130 Paritätsinformationen an die Speichervorrichtung 150 überträgt, könnte die Belegung der Kanäle geringer werden, da die Steuerschaltung 436, die dem zweiten Paritätsrechner 424 entspricht, in dem Speicherchip oder der Speicherebene umfasst ist. Die Steuerschaltung 436, die in dem Speicherchip oder der Speicherebene der Speichervorrichtung 150 umfasst ist, kann jedoch auch eine zusätzliche Logikschaltung zum Durchführen einer Operation anstelle des zweiten Paritätsrechners 424 und einen zusätzlichen Zwischenspeicher 438 zum vorübergehenden Speichern der Paritätsinformationen umfassen.
-
17 stellt ein drittes Beispiel der Vorrichtung zum Steuern einer Datenprogrammieroperation gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
-
Unter Bezugnahme auf 17 kann das Speichersystem 110, das einen Dateneingabe-/-ausgabebefehl von dem Host 102 empfängt, eine Steuerung 130 und eine Speichervorrichtung 150 umfassen. Die Speichervorrichtung 150 kann eine Vielzahl von Speicherchips 182, 184 umfassen, die über verschiedene Kanäle verbunden sind.
-
Jeder der Vielzahl von Speicherchips 182, 184 kann eine Vielzahl von Schichten umfassen. Die erste Schicht des ersten Speicherchips 182 kann vier Zellenbereiche L0, L1, L2, L3 umfassen, und die zweite Schicht kann vier verschiedene Zellenbereiche L4, L5, L6, L7 umfassen. Gemäß einer Ausführungsform kann der erste Speicherchip 184 drei oder mehr Schichten aufweisen, und eine Vielzahl von Zellenbereichen kann auf jeder Schicht angeordnet sein.
-
Die Steuerung 130 kann eine erste Maschine bzw. Engine 452, die dem ersten Speicherchip 182 entspricht, und eine zweite Maschine bzw. Engine, die dem zweiten Speicherchip 184 entspricht, umfassen. Die erste Maschine 452 und die zweite Maschine 454 in der Steuerung 130 können zumindest ein Stück Paritätsinformation erzeugen, indem sie eine Exklusiv-ODER (XOR)-Operation an einer voreingestellten Anzahl von LSB-Daten während einer Programmieroperation durchführen. Der erste Speicherchip 182 kann acht Zellenbereiche L0 bis L7 umfassen. Gemäß einer Ausführungsform kann die erste Maschine 452 ein Paritätsinformationsstück für vier LSB-Daten erzeugen, wie unter Bezugnahme auf 12 beschrieben. Die vier LSB-Daten und eine Paritätsinformation können über 5 Zellenbereiche unter den acht Zellenbereichen L0 bis L7 verteilt und in diese programmiert werden.
-
Gemäß einer Ausführungsform kann die erste Maschine 452 zwei Paritätsinformationsstücke für vier LSB-Datenstücke erzeugen. In diesem Fall können vier LSB-Daten und zwei Paritätsinformationsstücke auf sechs Zellenbereiche unter den acht Zellenbereichen L0 bis L7 verteilt und in diese programmiert werden. Selbst wenn in zwei Zellenbereichen der acht Zellenbereiche L0 bis L7 Fehler auftreten, kann in dieser Ausführungsform die erste Maschine 452 in der Steuerung 130 auf der Grundlage der aus den anderen vier Zellenbereichen gelesenen Informationen die fehlerhaften Daten wiedergewinnen oder wiederherstellen.
-
Die erste Maschine 452 und die zweite Maschine 454 in der Steuerung 130 können derart angeordnet sein, dass sie dem ersten Speicherchip 182 und dem zweiten Speicherchip 184 entsprechen oder darin umfasst sind. In diesem Fall können die erste Maschine 452 und die zweite Maschine 454 in der Speicherschnittstelle 142 umfasst sein, die unter Bezugnahme auf die 2 bis 3 beschrieben ist. Wenn die Steuerung 130 eine Vielzahl von Maschinen umfasst, können Operationen zum Erzeugen von Paritätsinformationen für LSB-Daten parallel während einer Datenprogrammieroperation durchgeführt werden. Wenn Operationen zum Erzeugen und Übertragen von Paritätsinformationen einem Kanal entsprechen können, könnte der Overhead reduziert werden.
-
18 stellt Vorgänge bzw. Operationen dar, die von der in 17 gezeigten Vorrichtung gemäß einer Ausführungsform der vorliegenden Offenbarung durchgeführt werden. 18 zeigt eine Datenübertragungsoperation zwischen der Steuerung 130 und entweder dem ersten Speicherchip 182 oder dem zweiten Speicherchip 184 in der Speichervorrichtung 150, die unter Bezugnahme auf 17 beschrieben ist, und eine Programmieroperation, die in dem ersten Speicherchip 182 und dem zweiten Speicherchip 184 durchgeführt wird.
-
Unter Bezugnahme auf 18 kann die Steuerung 130 die ersten LSB-Daten L0 über den ersten Kanal DQ0 an den ersten Speicherchip D0 übertragen. Die erste Maschine in der Steuerung 130 kann eine Paritätsoperation (LSB-Parität) für die ersten LSB-Daten L0 starten. Nachdem die ersten LSB-Daten L0 in dem ersten Speicherchip D0 erfolgreich abgeschlossen sind, kann die Steuerung 130 die zweiten LSB-Daten L1 an den ersten Speicherchip D0 übertragen. Die erste Maschine in der Steuerung 130 kann eine Paritätsoperation (LSB-Parität) an den ersten LSB-Daten L0, die das Ergebnis der vorherigen Paritätsoperation sind, und den zweiten LSB-Daten L1 durchführen. Die Steuerung 130 kann die dritten LSB-Daten L2 und die vierten LSB-Daten L3 sequentiell an den ersten Speicherchip D0 übertragen, und der erste Speicherchip D0 kann die dritten LSB-Daten L2 und die vierten LSB-Daten L3 sequentiell programmieren. Die erste Maschine in der Steuerung 130 kann die vierten LSB-Daten L3 an den ersten Speicherchip D0 übertragen und führt dann eine Paritätsoperation (LSB-Parität) an den ersten bis vierten LSB-Daten durch, um die erste Paritätsinformation P0 zu erzeugen, die den ersten bis vierten LSB-Daten L0, L1, L2, L3 entspricht. Die Steuerung 130 kann die erste Paritätsinformation P0 an den ersten Speicherchip 182 übertragen, und dann kann der erste Speicherchip 182 die erste Paritätsinformation P0 darin programmieren.
-
Die Steuerung 130 kann die ersten bis vierten LSB-Daten L0, L1, L2, L3 und die erste Paritätsinformation P0 über den ersten Kanal DQ0 sequentiell an den ersten Speicherchip D0 übertragen. Parallel zum ersten Kanal DQ0 kann die Steuerung 130 weitere erste bis vierte LSB-Daten L0, L1, L2, L3 und die erste Paritätsinformation P0 an den zweiten Speicherchip D1 übertragen. Unter Bezugnahme auf 18 könnte der Overhead, der bei einem Prozess zum Erzeugen und Sichern von Paritätsinformationen zur Erhöhung der Datensicherheit während einer Datenprogrammieroperation auftritt, stark reduziert werden. Wenn zum Beispiel für jeweils vier LSB-Daten eine Paritätsinformation übertragen und programmiert wird, könnte auf der Grundlage einer Programmieroperationsmarge für die LSB-Daten ein Overhead von etwa 25 % entstehen.
-
Die Steuerung 130 kann auf ähnliche Weise Paritätsinformationen für die anderen vier LSB-Daten L4, L5, L6, L7 erzeugen und die vier LSB-Daten L4, L5, L6, L7 und die Paritätsinformationen P1 sequentiell über einen Kanal übertragen. Der Speicherchip D0 kann die vier LSB-Daten L4, L5, L6, L7 und die Paritätsinformationen P1, die von der Steuerung 130 übertragen werden, sequentiell programmieren.
-
19 stellt ein viertes Beispiel der Vorrichtung zum Steuern einer Datenprogrammieroperation gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
-
Unter Bezugnahme auf 19 kann das Speichersystem 110, das einen Dateneingabe-/-ausgabebefehl von dem Host 102 empfängt, eine Steuerung 130 und eine Speichervorrichtung 150 umfassen. Die Speichervorrichtung 150 kann eine Vielzahl von Speicherchips 182, 184 umfassen, die über verschiedene Kanäle verbunden sind.
-
Jeder der Vielzahl von Speicherchips 182, 184 kann eine Vielzahl von Schichten umfassen. Die erste Schicht des ersten Speicherchips 182 kann vier Zellenbereiche L0, L1, L2, L3 umfassen, und die zweite Schicht kann vier verschiedene Zellenbereiche L4, L5, L6, L7 umfassen. Gemäß einer Ausführungsform kann der erste Speicherchip 182 drei oder mehr Schichten aufweisen, und eine Vielzahl von Zellenbereichen kann auf einer einzigen Schicht angeordnet sein.
-
Der erste Speicherchip 182 kann eine erste Maschine 452 umfassen, während der zweite Speicherchip 184 eine zweite Maschine 454 umfassen kann. Die erste Maschine 452 und die zweite Maschine 454 können zumindest ein Paritätsinformationsstück erzeugen, indem sie eine Exklusiv-ODER (XOR)-Operation an einer voreingestellten Anzahl von LSB-Daten während einer Datenprogrammieroperation durchführen. Der erste Speicherchip 182 kann acht Zellenbereiche L0 bis L7 umfassen. Gemäß einer Ausführungsform kann die erste Maschine 452 ein Paritätsinformationsstück für vier LSB-Daten erzeugen, wie unter Bezugnahme auf 12 beschrieben, und die vier LSB-Daten und eine Paritätsinformation können in 5 Zellenbereichen unter den acht Zellenbereichen L0 bis L7 verteilt und programmiert werden.
-
Gemäß einer Ausführungsform kann die erste Maschine 452 zwei Paritätsinformationsstücke für vier LSB-Datenstücke erzeugen. In diesem Fall können vier LSB-Datenstücke und zwei Paritätsinformationsstücke über sechs Zellenbereiche unter den acht Zellenbereichen L0 bis L7 verteilt und in diesen programmiert werden. In diesem Fall kann die erste Maschine 452 in der Steuerung 130 auf der Grundlage der aus den anderen vier Zellenbereichen gelesenen Informationen Daten wiedergewinnen oder wiederherstellen, selbst wenn ein Problem in zwei Zellenbereichen unter den acht Zellenbereichen L0 bis L7 auftritt.
-
Die erste Maschine 452 und die zweite Maschine 454 können einzeln in dem ersten Speicherchip 182 und dem zweiten Speicherchip 184 umfasst sein. Der erste Speicherchip 182 und der zweite Speicherchip 184 können Paritätsinformationen durch die erste Maschine 452 und die zweite Maschine 454, die darin umfasst sind, erzeugen, und die Paritätsinformationen können in einem Zellenbereich davon gespeichert werden. Die Steuerung 130 ist möglicherweise nicht an der Paritätsinformationserzeugung und der Paritätsinformationssicherung während der Datenprogrammieroperation beteiligt, so dass die Steuerung 130 eine andere von dem Host 102 angeforderte Dateneingabe/-ausgabeoperation durchführen oder planen kann. Da Paritätsinformationen innerhalb des ersten Speicherchips 182 und des zweiten Speicherchips 184 ohne Übertragung über einen Kanal erzeugt und programmiert werden können, kann ein Fehler, der während einer Übertragung und eines Empfangs von Paritätsinformationen über den Kanal auftreten könnte, vermieden werden.
-
20 stellt ein erstes Beispiel von Vorgängen bzw. Operationen dar, die von der in 19 gezeigten Vorrichtung gemäß einer Ausführungsform der vorliegenden Offenbarung durchgeführt werden.
-
Unter Bezugnahme auf 20 speichert die Steuerung 130, wenn eine Maschine, die während einer Programmieroperation Paritätsinformationen erzeugt, in einem Speicherchip umfasst ist, vier LSB-Datenstücke L0, L1, L2, L3 in dem ersten Speicherchip D0. Die erste in dem ersten Speicherchip D0 umfasste Maschine kann eine Paritätsoperation (LSB-Parität) durchführen, während sie die über den Kanal in die Zellenbereiche übertragenen LSB-Daten L0, L1, L2, L3 programmiert. Nachdem die letzten Daten (L3) unter den vier LSB-Datenstücken L0, L1, L2, L3 in einem Zellenbereich programmiert sind, kann die Paritätsinformation P0, die den vier LSB-Datenstücken L0, L1, L2, L3 entspricht, in einem Bereich programmiert werden.
-
Da der erste Speicherchip 182 und der zweite Speicherchip 184 jeweils eine Maschine umfassen können, die in der Lage ist, Paritätsinformationen einzeln zu erzeugen, können Operationen zum Erzeugen und Sichern von Paritätsinformationen P0 zusammen mit dem über den Kanal übertragenen Programm von LSB-Daten auch parallel durchgeführt werden. Übertragung und Empfang der Paritätsinformationen P0 sind zwischen der Steuerung 130 und dem ersten Speicherchip 182 oder dem zweiten Speicherchip 184 über den Kanal möglicherweise nicht erforderlich, so dass die Kanalbelegung reduziert werden kann. Eine Betriebsmarge für Übertragung/Empfang der Paritätsinformation P0 könnte vermieden werden.
-
21 stellt ein zweites Beispiel von Vorgängen bzw. Operationen dar, die von der in 19 gezeigten Vorrichtung gemäß einer Ausführungsform der vorliegenden Offenbarung durchgeführt werden. Die in 21 beschriebenen Paritätserzeugungs- und Sicherungsoperationen können in ähnlicher Weise wie die in 13 beschriebenen Operationen durchgeführt werden.
-
Unter Bezugnahme auf 21 kann die Steuerung 130, wenn eine Maschine, die während einer Programmieroperation Paritätsinformationen erzeugt, in dem Speicherchip umfasst ist, vier LSB-Datenstücke L0, L1, L2, L3 sequentiell an den ersten Speicherchip D0 übertragen. Der erste Speicherchip D0 kann die vier LSB-Datenstücke L0, L1, L2, L3, die über den Kanal in dem Zellenbereich empfangen werden, sequentiell programmieren. Nachdem die letzten LSB-Daten L3 programmiert sind, kann die in dem ersten Speicherchip D0 umfasste Maschine eine Paritätsoperation (LSB-Parität) für die vier LSB-Datenstücke L0, L1, L2, L3 abschließen. Zum Beispiel kann eine Exklusiv-ODER (XOR)-Operation ein sequentielles Lesen der drei zuvor gespeicherten LSB-Datenstücke L0, L1, L2 umfassen. Nachdem Paritätsinformationen P0, die den vier LSB-Datenstücken L0, L1, L2, L3 entsprechen, berechnet worden sind (LSB-Parität), können die Paritätsinformationen P0 auch in einem Zellenbereich programmiert werden.
-
Da der erste Speicherchip 182 und der zweite Speicherchip 184 jeweils eine Maschine umfassen, die in der Lage ist, Paritätsinformationen zu erzeugen, kann ein Erzeugen und Sichern der Paritätsinformationen P0 parallel zusammen mit einem Programmieren der über den Kanal übertragenen LSB-Daten durchgeführt werden. Da es zwischen der Steuerung 130 und dem ersten Speicherchip 182 oder dem zweiten Speicherchip 184 über den Kanal keine Übertragung/keinen Empfang der Paritätsinformationen P0 gibt, könnte die Kanalbelegung reduziert werden. Darüber hinaus kann, wie in 13 beschrieben, wenn eine Struktur des Seitenpuffers und Cache-Puffers verwendet wird, kann eine Erzeugung und Sicherung von Paritätsinformationen durchgeführt werden, ohne dass ein separater Zwischenspeicher, der zum Erzeugen von Paritätsinformationen eingerichtet ist, in dem ersten Speicherchip 182 hinzugefügt werden muss.
-
22 stellt eine Wirkung einer Ausführungsform der vorliegenden Offenbarung dar.
-
Unter Bezugnahme auf 22 können die Wirkungen des Speichersystems 110 und der Speichervorrichtung 150 gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung verstanden werden. Während die Multi-Bit-Daten in einer nichtflüchtigen Speicherzelle der Speichervorrichtung 150 durch eine mehrstufige Programmieroperation programmiert werden, ist es notwendig, die LSB-Daten zu sichern, um die Datensicherheit oder Zuverlässigkeit zu gewährleisten. Wenn die LSB-Daten derart gesichert werden, wie sie sind, kann die Größe eines Bereichs, der für die LSB-Sicherung in dem SLC-Puffer der Speichervorrichtung 150 zugewiesen ist, zunehmen. Wenn der in dem SLC-Puffer zugewiesene Speicherplatz nicht ausreicht, kann sich außerdem eine Operation des Programmierens von Multi-Bit-Daten in der Speichervorrichtung 150 verzögern, so dass sich die Leistung der Dateneingabe/-ausgabe verschlechtern kann.
-
In verschiedenen Ausführungsformen der vorliegenden Offenbarung kann das Speichersystem 110 oder die Speichervorrichtung 150 zur Sicherung von LSB-Daten oder zur Gewährleistung der Datensicherheit oder - zuverlässigkeit Paritätsinformationen erzeugen und sichern, die den LSB-Daten entsprechen. In diesem Fall kann die Programmieroperation auf eine von mehreren Arten durchgeführt werden: Sichern der LSB-Daten, Erzeugen und Sichern einer Parität für die LSB-Daten und Nicht-Erzeugen einer Parität für die LSB-Daten (z.B. siehe 10). Wie oben beschrieben, könnte der in dem SLC-Puffer für die Programmieroperation in der Speichervorrichtung 150 zugewiesene Speicherplatz durch Bestimmen eines Sicherungsbereichs auf der Grundlage eines Attributs der Multi-Bit-Daten einschließlich der in der Speichervorrichtung 150 programmierten LSB-Daten reduziert werden. Ressourcen in dem Speichersystem 110 oder in der Speichervorrichtung 150 können effizienter genutzt werden, wodurch die Leistung der Dateneingabe/-ausgabe und die Haltbarkeit der Speichervorrichtung verbessert werden.
-
Wie oben beschrieben, kann ein Speichersystem gemäß einer Ausführungsform der vorliegenden Offenbarung Overheads und Ressourcen reduzieren, die für ein Erzeugen von Paritätsinformationen aufgewendet werden, die zur Wiederherstellung oder Wiedergewinnung von Daten in einer Datenprogrammieroperation oder einem Verfahren des Programmierens von Multi-Bit-Daten in einer Speichervorrichtung verwendet werden.
-
Ferner kann in dem Speichersystem gemäß einer Ausführungsform der vorliegenden Offenbarung eine Vorrichtung, die in der Lage ist, Daten nach einer anormalen Unterbrechung einer Datenprogrammieroperation wiederherzustellen, selektiv in der Steuerung oder der Speichervorrichtung umfasst sein, wodurch die Designflexibilität für das Speichersystem erhöht wird.
-
Darüber hinaus kann ein Speichersystem gemäß einer Ausführungsform der vorliegenden Offenbarung die Betriebssicherheit einer Datenprogrammieroperation verbessern, ohne eine Größe (oder die Speicherkapazität) eines Datenpuffers zu erhöhen, der nichtflüchtige Speicherzellen umfasst, wodurch eine Größe (oder Speicherkapazität) zum Speichern von Daten in einer Speichervorrichtung erhöht wird.
-
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.