DE102021115858A1 - Tlc-datenprogrammierung mit hybrid-parität - Google Patents

Tlc-datenprogrammierung mit hybrid-parität Download PDF

Info

Publication number
DE102021115858A1
DE102021115858A1 DE102021115858.3A DE102021115858A DE102021115858A1 DE 102021115858 A1 DE102021115858 A1 DE 102021115858A1 DE 102021115858 A DE102021115858 A DE 102021115858A DE 102021115858 A1 DE102021115858 A1 DE 102021115858A1
Authority
DE
Germany
Prior art keywords
data
xor
superblock
storage device
parity
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102021115858.3A
Other languages
English (en)
Inventor
Sergey Anatolievich Gorobets
Alan D. Bennett
Liam Parker
Yuval Shohet
Michelle Martin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102021115858A1 publication Critical patent/DE102021115858A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check

Abstract

Die vorliegende Offenbarung bezieht sich allgemein auf die Verbesserung der Programmierung von Datenspeicherungsvorrichtungen wie Solid-State-Laufwerken (SSDs). Eine erste Speichervorrichtung weist ein erstes XOR-Element und eine zweite Speichervorrichtung ein zweites XOR-Element auf. Das Verhältnis des ersten XOR-Elements zur Kapazität der ersten Speichervorrichtung ist wesentlich kleiner als das Verhältnis des zweiten XOR-Elements zur Kapazität der zweiten Speichervorrichtung. Eine Lesekontrolloperation zum Auffinden von Programmierfehlern wird entweder auf einer Wortleitung-zu-Wortleitungs-Basis, einer Löschblock-zu-Löschblock-Basis oder sowohl einer Wortleitung-zu-Wortleitungs-Basis als auch einer Löschblock-zu-Löschblock-Basis ausgeführt. Da die Programmierfehler vor dem Programmieren in die zweite Speichervorrichtung gefunden und behoben werden, kann das zweite XOR-Element wesentlich verringert werden.

Description

  • HINTERGRUND DER OFFENBARUNG
  • Gebiet der Offenbarung
  • Ausführungsformen der vorliegenden Offenbarung beziehen sich allgemein auf die Verbesserung der Programmierung in Datenspeicherungsvorrichtungen wie zum Beispiel Solid-State-Laufwerken (SSDs).
  • Beschreibung des Stands der Technik
  • Programmieren oder Schreiben von Daten kann zwei Schreibphasen erfordern: Foggy und Fein. Bei der Foggy-Fein-Programmierung können die zu schreibenden Bits nicht einfach einmalig geschrieben werden. Entsprechend müssen die Daten zuerst durch Foggy-Programmierung geschrieben werden, wobei Spannungsimpulse bereitgestellt werden, um den aktuellen Zustand in einen weiter aufgelösten Zustand, aber nicht vollständig aufgelösten Zustand zu pushen. Die Feinprogrammierung wird zu einem Zeitpunkt nach der Foggy-Programmierung durchgeführt, um die Daten wieder in den vollständig aufgelösten Zustand zu schreiben.
  • Während des Programmierens oder Schreibens von Daten an die jeweiligen Stellen der Datenspeicherungsvorrichtung können sich Programmierfehler wie Bitfehler akkumulieren. Um die Programmierfehler zu beheben, werden Exklusiv-Oder (XOR)-Paritätsdaten von einer Fehlerkorrekturmaschine wie einer Paritätsmaschine oder einer Low-Density-Parity-Check (LDPC)-Maschine generiert. Die XOR-Paritätsdaten werden an den einzelnen Stellen des Datenschreibvorgangs gespeichert. Wenn zum Beispiel Daten in eine erste nichtflüchtige Speichervorrichtung feinprogrammiert werden, werden die Daten zuerst in einen Cache einer flüchtigen Speichervorrichtung oder in einen Cache einer zweiten nichtflüchtigen Speichervorrichtung programmiert. Die Daten werden dann in die erste nichtflüchtige Speichervorrichtung foggyprogrammiert. Nach Abschluss der Foggy-Programmierung in die erste nichtflüchtige Speichervorrichtung werden die Daten in die erste nichtflüchtige Speichervorrichtung feinprogrammiert. XOR-Paritätsdaten können zusammen mit den programmierten Daten generiert und an den einzelnen Stellen der Datenprogrammiersequenz gespeichert werden, wie in dem Cache der flüchtigen Speichervorrichtung, dem Cache der zweiten nichtflüchtigen Speichervorrichtung, der Foggy-Programmierung in die erste nichtflüchtige Speichervorrichtung und der Feinprogrammierung in die erste nichtflüchtige Speichervorrichtung. Die Akkumulation von XOR-Paritätsdaten in jeder zuvor erwähnten Speichervorrichtung erhöht den XOR-Paritäts-Overhead und reduziert Over-Provisioning oder Kapazität für Benutzerdaten in der Datenspeicherungsvorrichtung.
  • Daher besteht im Stand der Technik ein Bedarf an verbesserter Programmierung des nichtflüchtigen Speichers, während der XOR-Paritäts-Overhead verringert und die Zuverlässigkeit der Datenspeicherungsvorrichtung beibehalten oder erhöht wird.
  • KURZDARSTELLUNG DER OFFENBARUNG
  • Die vorliegende Offenbarung bezieht sich allgemein auf die Verbesserung der Programmierung von Datenspeicherungsvorrichtungen wie beispielsweise Solid-State-Laufwerken (SSDs). Eine erste Speichervorrichtung weist ein erstes XOR-Element und eine zweite Speichervorrichtung ein zweites XOR-Element auf. Das Verhältnis des ersten XOR-Elements zur Kapazität der ersten Speichervorrichtung ist wesentlich kleiner als das Verhältnis des zweiten XOR-Elements zur Kapazität der zweiten Speichervorrichtung. Eine Lesekontrolloperation zum Auffinden von Programmierfehlern wird entweder auf einer Wortleitung-zu-Wortleitungs-Basis, einer Löschblock-zu-Löschblock-Basis oder sowohl einer Wortleitung-zu-Wortleitungs-Basis als auch einer Löschblock-zu-Löschblock-Basis ausgeführt. Da die Programmierfehler vor dem Programmieren in die zweite Speichervorrichtung gefunden und behoben werden, kann das zweite XOR-Element wesentlich verringert werden.
  • In einer Ausführungsform schließt eine Datenspeicherungsvorrichtung eine Steuerung und eine Speichervorrichtung ein, die mit der Steuerung gekoppelt ist. Die Speichervorrichtung schließt einen ersten Superblock, der einen ersten Paritätsabschnitt einer ersten Speicherungsgröße aufweist, und einen zweiten Superblock ein, der einen zweiten Paritätsabschnitt einer zweiten Speicherungsgröße aufweist. Die erste Speicherungsgröße ist kleiner als die zweite Speicherungsgröße.
  • In einer anderen Ausführungsform schließt eine Datenspeicherungsvorrichtung eine Speichervorrichtung und eine Steuerung ein, die mit der Speichervorrichtung gekoppelt ist. Die Steuerung ist dazu eingerichtet, Hostdaten von einer Hostvorrichtung zu empfangen, erste Exklusiv-Oder (XOR)-Paritätsdaten für die Hostdaten zu generieren, die Hostdaten und ersten XOR-Paritätsdaten mit einem Codierer zu codieren, die Hostdaten und ersten XOR-Paritätsdaten in einen ersten Speichersuperblock zu schreiben, gültige Daten und erste XOR-Paritätsdaten, die in den ersten Speichersuperblock geschrieben wurden, zu decodieren, wobei die gültigen Daten den Hostdaten entsprechen, die nicht durch die Hostvorrichtung modifiziert wurden, die sich in dem ersten Speichersuperblock befindet, zweite XOR-Paritätsdaten für die decodierten gültigen Daten zu generieren, die decodierten Daten und zweiten XOR-Paritätsdaten mit dem Codierer neu zu codieren, die neu codierten Daten und Paritätsdaten in einen zweiten Speichersuperblock zu schreiben. Die neu codierten zweiten XOR-Paritätsdaten weisen eine Größe auf, die kleiner als die Größe der ersten XOR-Paritätsdaten ist.
  • In einer anderen Ausführungsform schließt eine Datenspeicherungsvorrichtung Speichermittel, die einen ersten Speichersuperblock und einen zweiten Speichersuperblock aufweisen, Mittel zum Speichern von Hostdaten mit Paritätsdaten in dem ersten Speichersuperblock, und Mittel zum Speichern einer Kopie der Hostdaten und Paritätsdaten in dem zweiten Speichersuperblock ein, wobei die Kopie der Paritätsdaten verglichen mit einer Menge an Paritätsdatenspeicherung in dem ersten Superblock eine geringere Menge an Paritätsdatenspeicherung in dem zweiten Superblock benutzt.
  • Figurenliste
  • Zur Verdeutlichung der Art und Weise, wie die vorstehend angegebenen Merkmale der vorliegenden Offenbarung im Detail verstanden werden können, kann eine ausführlichere Beschreibung der Offenbarung, die vorstehend kurz zusammengefasst ist, unter Bezugnahme auf Ausführungsformen erfolgen, von denen einige in den beigefügten Zeichnungen veranschaulicht sind. Es ist jedoch zu beachten, dass in den beigefügten Zeichnungen nur typische Ausführungsformen dieser Offenbarung veranschaulicht sind und diese daher nicht als ihren Schutzumfang einschränkend anzusehen sind, da die Offenbarung andere ebenso wirksame Ausführungsformen zulassen kann.
    • 1 ist ein schematisches Blockdiagramm, das ein Speicherungssystem veranschaulicht, in dem eine Datenspeicherungsvorrichtung gemäß einer Ausführungsform als Speicherungsvorrichtung für eine Hostvorrichtung fungieren kann.
    • 2A und 2B sind schematische Veranschaulichungen der Planung einer Foggy-Fein-Programmierung gemäß offenbarten Ausführungsformen.
    • 3 ist eine schematische Veranschaulichung eines horizontalen Exklusiv-Oder (XOR)-Schemas mit vollständiger Die-Redundanz eines Superblocks gemäß offenbarten Ausführungsformen.
    • 4 ist eine Veranschaulichung der möglichen Optionen von Exklusiv-Oder (XOR) in einer Mehrebenenzelle gemäß offenbarten Ausführungsformen.
    • 5A und 5B sind Veranschaulichungen verschiedener Programmierfehlerarten gemäß offenbarten Ausführungsformen.
    • 6A und 6B sind schematische Veranschaulichungen eines reduzierten horizontalen Exklusiv-Oder (XOR)-Schemas eines Superblocks gemäß offenbarten Ausführungsformen.
    • 7 ist eine schematische Veranschaulichung eines reduzierten horizontalen Exklusiv-Oder (XOR)-Schemas eines Superblocks gemäß offenbarten Ausführungsformen.
    • 8 ist eine schematische Veranschaulichung eines reduzierten vertikalen Exklusiv-Oder (XOR)-Schemas eines Superblocks gemäß offenbarten Ausführungsformen.
    • 9 ist ein Flussdiagramm, das ein Verfahren zum Durchführen einer Foggy-Fein-Programmierung gemäß offenbarten Ausführungsformen veranschaulicht.
  • Zum besseren Verständnis wurden, soweit möglich, identische Bezugszeichen verwendet, um identische Elemente zu bezeichnen, die den Figuren gemein sind. Es wird in Betracht gezogen, dass die in einer Ausführungsform offenbarten Elemente ohne besondere Aufzählung vorteilhaft auf andere Ausführungsformen angewendet werden können.
  • DETAILLIERTE BESCHREIBUNG
  • Im Folgenden wird auf die Ausführungsformen der Offenbarung verwiesen. Es versteht sich jedoch, dass die Offenbarung nicht auf bestimmte beschriebene Ausführungsformen beschränkt ist. Stattdessen wird jede Kombination der folgenden Merkmale und Elemente, unabhängig davon, ob sie sich auf verschiedene Ausführungsformen beziehen oder nicht, zur Umsetzung und Praxis der Offenbarung in Betracht gezogen. Obwohl Ausführungsformen der Offenbarung Vorteile gegenüber anderen möglichen Lösungen und/oder gegenüber dem Stand der Technik erzielen können, ist die Offenbarung nicht einschränkend, ob ein bestimmter Vorteil durch eine bestimmte Ausführungsform erreicht wird oder nicht. Die folgenden Gesichtspunkte, Merkmale, Ausführungsformen und Vorteile sind daher nur veranschaulichend und gelten nicht als Elemente oder Einschränkungen der beiliegenden Ansprüche, es sei denn, sie werden ausdrücklich in einem oder mehreren Ansprüchen angegeben. Ebenso soll eine Bezugnahme auf „die Offenbarung“ nicht als Verallgemeinerung eines hierin offenbarten erfinderischen Gegenstands ausgelegt werden und soll nicht als Element oder Einschränkung der beiliegenden Ansprüche betrachtet werden, es sei denn, dies wird ausdrücklich in einem Anspruch bzw. in Ansprüchen angegeben.
  • Die vorliegende Offenbarung bezieht sich allgemein auf die Verbesserung der Programmierung von Datenspeicherungsvorrichtungen wie Solid-State-Laufwerken (SSDs). Eine erste Speichervorrichtung weist ein erstes XOR-Element und eine zweite Speichervorrichtung ein zweites XOR-Element auf. Das Verhältnis des ersten XOR-Elements zur Kapazität der ersten Speichervorrichtung ist wesentlich kleiner als das Verhältnis des zweiten XOR-Elements zur Kapazität der zweiten Speichervorrichtung. Eine Lesekontrolloperation zum Auffinden von Programmierfehlern wird entweder auf einer Wortleitung-zu-Wortleitungs-Basis, einer Löschblock-zu-Löschblock-Basis oder sowohl einer Wortleitung-zu-Wortleitungs-Basis als auch einer Löschblock-zu-Löschblock-Basis ausgeführt. Da die Programmierfehler vor dem Programmieren in die zweite Speichervorrichtung gefunden und behoben werden, kann das zweite XOR-Element wesentlich verringert werden.
  • 1 ist ein schematisches Blockdiagramm, das ein Speicherungssystem 100 veranschaulicht, in dem eine Datenspeicherungsvorrichtung 106 gemäß einer Ausführungsform als Speicherungsvorrichtung für eine Hostvorrichtung 104 fungieren kann. Beispielsweise kann die Hostvorrichtung 104 zum Speichern und Abrufen von Daten einen nichtflüchtigen Speicher (NVM) 110, der in der Datenspeicherungsvorrichtung 106 eingeschlossen ist, nutzen. Die Hostvorrichtung 104 weist einen Host-DRAM 138 auf. In einigen Beispielen kann das Speicherungssystem 100 eine Vielzahl von Speicherungsvorrichtungen einschließen, wie die Datenspeicherungsvorrichtung 106, die als Speicherungsanordnung arbeiten kann. Zum Beispiel kann das Speicherungssystem 100 eine Vielzahl von Datenspeicherungsvorrichtungen 106 einschließen, die als eine redundante Anordnung von preiswerten/unabhängigen Festplatten (RAID) eingerichtet sind, die zusammen als Massenspeicherungsvorrichtung für die Hostvorrichtung 104 fungieren.
  • Das Speicherungssystem 100 schließt eine Hostvorrichtung 104 ein, die Daten auf einer oder mehreren Speicherungsvorrichtungen, wie der Datenspeicherungsvorrichtung 106, speichern und/oder davon abrufen kann. Wie in 1 veranschaulicht, kann die Hostvorrichtung 104 über eine Schnittstelle 114 mit der Datenspeicherungsvorrichtung 106 kommunizieren. Die Hostvorrichtung 104 kann jegliche aus einer großen Vielfalt von Vorrichtungen aufweisen, einschließlich Computerservern, NAS-Einheiten (Network Attached Storage), Desktop-Computern, Notebook-Computern (d. h. Laptops), Tablet-Computern, Digitalempfängern, Telefonhandgeräten wie sogenannten „Smartphones“, sogenannten „Smart Pads“, Fernsehern, Kameras, Anzeigevorrichtungen, digitalen Medienplayern, Videospielkonsolen, Video-Streaming-Geräten und anderen Vorrichtungen, die in der Lage sind, Daten von einer Datenspeicherungsvorrichtung zu senden oder zu empfangen.
  • Die Datenspeicherungsvorrichtung 106 schließt eine Steuerung 108, einen NVM 110, eine Stromversorgung 111, einen flüchtigen Speicher 112, eine Schnittstelle 114 und einen Schreibpuffer 116 ein. In einigen Beispielen kann die Datenspeicherungsvorrichtung 106 zusätzliche Komponenten einschließen, die aus Gründen der Übersichtlichkeit nicht in 1 dargestellt sind. Zum Beispiel kann die Datenspeicherungsvorrichtung 106 eine Leiterplatte (PCB) einschließen, an der Komponenten der Datenspeicherungsvorrichtung 106 mechanisch angebracht sind und die elektrisch leitende Leiterbahnen enthält, die Komponenten der Datenspeicherungsvorrichtung 106 oder dergleichen elektrisch miteinander verbinden. In einigen Beispielen können die physischen Abmessungen und Anschlusskonfigurationen der Datenspeicherungsvorrichtung 106 einem oder mehreren Standardformfaktoren entsprechen. Einige Beispiele für Standardformfaktoren schließen unter anderem eine 3,5-Zoll-Datenspeicherungsvorrichtung (z. B. eine Festplatte oder SSD), eine 2,5-Zoll-Datenspeicherungsvorrichtung, eine 1,8-Zoll-Datenspeicherungsvorrichtung, eine Peripheriekomponentenverbindung (PCI), PCI-Extended (PCI-X), PCI Express (PCle) (z. B. PCle x1, x4, x8, x16, PCle Mini Card, MiniPCI usw.) ein. In einigen Beispielen kann die Datenspeicherungsvorrichtung 106 direkt mit einer Hauptplatine der Hostvorrichtung 104 gekoppelt (z. B. direkt verlötet) sein.
  • Die Schnittstelle 114 der Datenspeicherungsvorrichtung 106 kann einen Datenbus zum Datenaustausch mit der Hostvorrichtung 104 und/oder einen Steuerbus zum Austauschen von Befehlen mit der Hostvorrichtung 104 einschließen. Die Schnittstelle 114 kann gemäß einem geeigneten Protokoll betrieben werden. Beispielsweise kann die Schnittstelle 114 gemäß einem oder mehreren der folgenden Protokolle arbeiten: Advanced Technology Attachment (ATA) (z. B. Serial-ATA (SATA) und Parallel-ATA (PATA)), Fibre Channel Protocol (FCP), Small Computer System Interface (SCSI), Serial Attached SCSI (SAS), PCI und PCle, Non-Volatile Memory Express (NVMe), OpenCAPI, GenZ, Cache Coherent Interface Accelerator (CCIX), Open Channel SSD (OCSSD) oder dergleichen. Die elektrische Verbindung der Schnittstelle 114 (z. B. der Datenbus, der Steuerbus oder beides) ist elektrisch mit der Steuerung 108 verbunden und stellt eine elektrische Verbindung zwischen der Hostvorrichtung 104 und der Steuerung 108 her, sodass Daten zwischen der Hostvorrichtung 104 und der Steuerung 108 ausgetauscht werden können. In einigen Beispielen kann die elektrische Verbindung der Schnittstelle 114 der Datenspeicherungsvorrichtung 106 auch ermöglichen, Strom von der Hostvorrichtung 104 zu beziehen. Beispielsweise kann die Stromversorgung 111, wie in 1 veranschaulicht, über die Schnittstelle 114 Strom von der Hostvorrichtung 104 empfangen.
  • Der NVM 110 kann eine Vielzahl von Speichervorrichtungen oder Speichereinheiten einschließen. NVM 110 kann eingerichtet sein, um Daten zu speichern und/oder abzurufen. Zum Beispiel kann eine Speichereinheit des NVM 110 Daten und eine Nachricht von der Steuerung 108 empfangen, mit der die Speichereinheit zum Speichern der Daten angewiesen wird. In ähnlicher Weise kann die Speichereinheit des NVM 110 eine Nachricht von der Steuerung 108 empfangen, mit der die Speichereinheit zum Abrufen von Daten angewiesen wird. In einigen Beispielen kann jede der Speichereinheiten als ein Die bezeichnet werden. In einigen Beispielen kann ein einzelner physikalischer Chip eine Vielzahl von Dies (d. h. eine Vielzahl von Speichereinheiten) einschließen. In einigen Beispielen kann jede Speichereinheit zum Speichern relativ großer Datenmengen eingerichtet werden (z. B. 128 MB, 256 MB, 512 MB, 1 GB, 2 GB, 4 GB, 8 GB, 16 GB, 32 GB, 64 GB, 128 GB, 256 GB, 512 GB, 1 TB usw.).
  • In einigen Beispielen kann jede Speichereinheit des NVM 110 jede Art von nichtflüchtigen Speichervorrichtungen einschließen, wie z. B. Flash-Speichervorrichtungen, Phasenwechselspeicher-Vorrichtungen (PCM-Vorrichtung), resistive Direktzugriffsspeichervorrichtungen (ReRAM-Vorrichtung), magnetoresistive Direktzugriffsspeichervorrichtungen (MRAM-Vorrichtung), ferroelektrische Direktzugriffsspeicher (F-RAM), holographische Speichervorrichtungen und jede andere Art von nichtflüchtigen Speichervorrichtungen.
  • Der NVM 110 kann eine Vielzahl von Flash-Speichervorrichtungen oder Speichereinheiten aufweisen. NVM-Flash-Speichervorrichtungen können NAND- oder NOR-basierte Flash-Speichervorrichtungen einschließen und können Daten basierend auf einer Ladung speichern, die in einem Floating Gate eines Transistors für jede Flash-Speicherzelle enthalten ist. In NVM-Flash-Speichervorrichtungen kann die Flash-Speichervorrichtung in eine Vielzahl von Dies unterteilt sein, wobei jeder Die der Vielzahl von Dies eine Vielzahl von Blöcken einschließt, die weiter in eine Vielzahl von Seiten unterteilt sein können. Jeder Block der Vielzahl von Blöcken innerhalb einer bestimmten Speichervorrichtung kann eine Vielzahl von NVM-Zellen einschließen. Reihen von NVM-Zellen können unter Verwendung einer Wortleitung elektrisch verbunden werden, um eine Seite aus einer Vielzahl von Seiten zu definieren. Entsprechende Zellen in jeder der Vielzahl von Seiten können elektrisch mit den entsprechenden Bitleitungen verbunden sein. Weiterhin können NVM-Flash-Speichervorrichtungen 2D- oder 3D-Vorrichtungen sein und Single-Level-Zellen (SLC), Multi-Level-Zellen (MLC), Triple-Level-Zellen (TLC) oder Quad-Level-Zellen (QLC) sein. Der Controller 108 kann Daten in und aus NVM-Flash-Speichervorrichtungen auf Seitenebene schreiben und lesen und Daten aus NVM-Flash-Speichervorrichtungen auf Blockebene löschen.
  • Die Datenspeichervorrichtung 106 schließt eine Stromversorgung 111 ein, die eine oder mehrere Komponenten der Datenspeichervorrichtung 106 mit Strom versorgen kann. Wenn die Stromversorgung 111 in einem Standardmodus betrieben ist, kann sie eine oder mehrere Komponenten mit Strom versorgen, der von einer externen Vorrichtung, wie der Hostvorrichtung 104, bereitgestellt ist. Beispielsweise kann die Stromversorgung 111 die eine oder die mehreren Komponenten mit Strom versorgen, der von der Hostvorrichtung 104 über die Schnittstelle 114 empfangen wird. In einigen Beispielen kann die Stromversorgung 111 eine oder mehrere Stromspeicherkomponenten einschließen, die eingerichtet sind, um die eine oder die mehreren Komponenten mit Strom zu versorgen, wenn sie in einem Abschaltmodus betrieben werden, z. B. wenn kein Strom mehr von der externen Vorrichtung empfangen wird. Auf diese Weise kann die Stromversorgung 111 als integrierte Backup-Stromquelle fungieren. Einige Beispiele für die eine oder die mehreren Energiespeicherkomponenten schließen, ohne darauf beschränkt zu sein, Kondensatoren, Superkondensatoren, Batterien und dergleichen ein. In einigen Beispielen kann die von der einen oder den mehreren Energiespeicherkomponenten gespeicherte Energiemenge eine Funktion der Kosten und/oder der Größe (z. B. Fläche/Volumen) der einen oder mehreren Energiespeicherkomponenten sein. Das heißt, wenn die von der einer oder den mehreren Stromspeicherkomponenten gespeicherte Strommenge zunimmt, steigen auch die Kosten und/oder die Größe der einen oder mehreren Stromspeicherkomponenten.
  • Die Datenspeichervorrichtung 106 schließt auch den flüchtigen Speicher 112 ein, der von der Steuerung 108 zum Speichern von Informationen verwendet werden kann. Der flüchtige Speicher 112 kann eine oder mehrere flüchtige Speichervorrichtungen einschließen. In einigen Beispielen kann die Steuerung 108 den flüchtigen Speicher 112 als Cache verwenden. Zum Beispiel kann die Steuerung 108 zwischengespeicherte Informationen im flüchtigen Speicher 112 speichern, bis die zwischengespeicherten Informationen in den nichtflüchtigen Speicher 110 geschrieben werden. Wie in 1 veranschaulicht, kann der flüchtige Speicher 112 den von der Stromversorgung 111 empfangenen Strom verbrauchen. Beispiele für flüchtigen Speicher 112 schließen ein, sind aber nicht beschränkt auf Direktzugriffsspeicher (RAM), dynamischen Direktzugriffsspeicher (DRAM), statischen RAM (SRAM) und synchronen dynamischen RAM (SDRAM (z. B. DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4, LPDDR4 und dergleichen)).
  • Die Datenspeicherungsvorrichtung 106 schließt eine Steuerung 108 ein, die eine oder mehrere Vorgänge der Datenspeicherungsvorrichtung 106 verwalten kann. Beispielsweise kann die Steuerung 108 das Lesen von Daten von und/oder das Schreiben von Daten in den NVM 110 verwalten. In einigen Ausführungsformen kann die Steuerung 108, wenn die Datenspeicherungsvorrichtung 106 einen Schreibbefehl von der Hostvorrichtung 104 empfängt, einen Datenspeicherungsbefehl initiieren, um Daten in den NVM 110 zu speichern und den Fortschritt des Datenspeicherungsbefehls zu überwachen. Die Steuerung 108 kann mindestens eine Betriebscharakteristik des Speicherungssystems 100 bestimmen und die mindestens eine Betriebscharakteristik in den NVM 110 speichern. In einigen Ausführungsformen speichert die Steuerung 108, wenn die Datenspeicherungsvorrichtung 106 einen Schreibbefehl von der Hostvorrichtung 104 empfängt, die mit dem Schreibbefehl verbundenen Daten vorübergehend im internen Speicher oder Schreibpuffer 116, bevor die Daten an den NVM 110 gesendet werden.
  • 2A ist eine schematische Veranschaulichung einer Foggy-Fein-Programmierung gemäß offenbarten Ausführungsformen. Das Front-End-Modul (FE-Modul) 202 weist eine erste XOR-Engine 204 und einen ersten statischen Direktzugriffsspeicher (Static Random Access Memory, SRAM) 206 auf. Hostdaten können anfänglich an das FE-Modul 202 geliefert werden. Die Daten durchlaufen die XOR-Engine 204 und werden in den ersten SRAM 206 geschrieben. Die XOR-Engine 204 generiert vor dem Schreiben in den ersten SRAM 206 XOR-Paritätsinformationen. Exklusiv-Oder-Paritätsinformationen (XOR-Paritätsinformationen) werden zur Verbesserung der Zuverlässigkeit der Speicherungsvorrichtung zum Speichern von Daten, wie Ermöglichen der Datenrückgewinnung fehlgeschlagener Schreibvorgänge oder fehlgeschlagener Datenlesevorgänge in und aus dem NVM oder Ermöglichen der Datenrückgewinnung im Falle eines Stromausfalls benutzt. Die Speicherungsvorrichtung kann die Datenspeicherungsvorrichtung 106 aus 1 sein. Die Zuverlässigkeit kann bereitgestellt werden, indem XOR-Paritätsinformationen verwendet werden, die auf der Grundlage von Daten generiert oder berechnet werden, die in der Speicherungsvorrichtung gespeichert werden. Die XOR-Engine 204 kann einen Paritätsstrom generieren, der in den ersten SRAM 206 geschrieben werden soll. Der erste SRAM 206 kann eine Vielzahl von Dies enthalten, in die Daten geschrieben werden können.
  • Das zweite Flash-Manager (FM2)-Modul 210 weist einen Codierer 212, einen zweiten SRAM 216, einen Decodierer 214 und eine zweite XOR-Engine 232 auf, wobei die zweite XOR-Engine 232 dazu eingerichtet ist, einen zweiten Paritätsstrom zu generieren, der in den zweiten SRAM 216 geschrieben werden soll. Der Decodierer 214 kann einen Lastgang-Decodierer (LG-Decodierer) und einen Schnellgang-Decodierer (HG-Decodierer) aufweisen. Der LG-Decodierer kann Algorithmen, wie beispielsweise Niederstrom-Bit-Flipping-Algorithmen implementieren, wie einen Paritätsprüfungs-Algorithmus mit niedriger Dichte (LDPC-Algorithmus). Der LG-Decodierer kann betreibbar sein zum Dekodieren von Daten und Korrigieren von Bit-Flips, wobei solche Daten eine niedrige Bitfehlerrate (BER) haben. Der HG-Decodierer kann Vollleistungsdecodierungs- und Fehlerkorrekturalgorithmen implementieren, die bei einem Ausfall des LG-Decodierers initiiert werden können, um Bitflips in Daten zu decodieren und zu korrigieren. Der HG-Decodierer kann betreibbar sein, um Bitflips zu korrigieren, wenn solche Daten eine hohe BER aufweisen. Alternativ kann FM2 durch einen kombinierten FE FM-Monochip ersetzt werden.
  • Der Codierer 212 und Decodierer 214 (einschließlich des LG-Decodierers und HG-Decodierers) können zum Beispiel eine Verarbeitungsschaltung oder einen Prozessor (mit einem computerlesbaren Medium, das computerlesbaren Programmcode speichert (z. B. Firmware), der durch den Prozessor ausführbar ist), eine Logikschaltung, eine anwendungsspezifische integrierte Schaltung (ASIC), eine programmierbare Logiksteuerung, eine eingebettete Mikrosteuerung, eine Kombination davon, oder dergleichen einschließen. In einigen Beispielen sind der Codierer 212 und der Decodierer 214 getrennt von der Speichersteuerung, und in anderen Beispielen sind der Codierer 212 und der Decodierer 214 in die oder in einen Teil der Speichersteuerung eingebettet. In einigen Beispielen ist der LG-Decodierer eine gehärtete Schaltung, wie eine Logikschaltung, eine ASIC oder dergleichen. In einigen Beispielen kann der HG-Decodierer ein Soft-Decodierer (z. B. durch einen Prozessor implementiert) sein. Daten können in den zweiten SRAM 216 geschrieben werden, nachdem sie im Decodierer 214 decodiert wurden. Weiterhin können die Daten im zweiten SRAM 216 an den Codierer 212 geliefert werden, wie nachstehend erläutert.
  • Die Speichervorrichtung 220 kann eine NAND-Speichervorrichtung sein. Die Speichervorrichtung 220 kann TLC-Speicher 222 aufweisen. Es versteht sich, dass die hierin erörterten Ausführungsformen nicht zwingend auf TLC-Speicher beschränkt sind und auf einen beliebigen Mehrebenenzellenspeicher wie MFK-Speicher, QLC-Speicher oder dergleichen anwendbar sein können. SLC-Speicher, MLC-Speicher, TLC-Speicher, QLC-Speicher und PLC-Speicher sind gemäß der Anzahl von Bits benannt, die eine Speicherzelle aufnehmen kann. Zum Beispiel kann SLC-Speicher ein Bit pro Speicherzelle aufnehmen und QLC-Speicher kann vier Bits pro Speicherzelle aufnehmen. Jedes Bit wird auf der Speicherungsvorrichtung als eine 1 oder eine 0 registriert.
  • Zudem weist der TLC-Speicher 222 eine TLC-Exklusiv-Oder (XOR)-Partition 226 auf, wobei die TLC-XOR-Partition 226 Paritäts- oder XOR-Daten speichert. Hostdaten werden in den ersten SRAM 206 des FE-Moduls 202 geschrieben. Erste XOR-Paritätsdaten können gleichzeitig mit dem Schreiben der Hostdaten in den ersten SRAM 206 an der ersten XOR-Engine 204 des FE-Moduls 202 generiert werden. Die Hostdaten und die generierten ersten XOR-Paritätsdaten gelangen vom ersten SRAM 206 zum Codierer 212, um an Strom 1 codiert zu werden. Die Hostdaten werden codiert und mittels Foggy-Verfahrensweise in den TLC-Speicher 222 geschrieben. Ebenso werden die generierten ersten XOR-Paritätsdaten an Strom 2 codiert und mittels Foggy-Verfahrensweise in die TLC-XOR-Partition 226 der Speichervorrichtung 220 geschrieben. Während des Foggy-Schreibens kann die Steuerung selektiv zu lesende Daten auswählen, um eine Datensortierung in den oder die relevanten Ströme zu ermöglichen. Der TLC-Speicher 222 kann ein dedizierter Bereich der Speichervorrichtung 220 für den Schutz von Daten im Fall eines Leistungsausfallereignisses ist.
  • An Strom 3 werden die Hostdaten am Decodierer 214 aus dem TLC-Speicher 222 gelesen. Nachdem die Hostdaten am Decodierer 214 decodiert wurden, werden die Hostdaten an Strom 4 in den zweiten SRAM 216 des FM2 210 geschrieben, wobei weiterhin an der zweiten XOR-Engine 232 des FM2 210 zweite XOR-Paritätsdaten für die Hostdaten generiert werden. Die Hostdaten und die zweiten XOR-Paritätsdaten werden durch den Codierer 212 geleitet, um an Strom 5 codiert zu werden, und werden an Strom 6 an die jeweiligen Stellen des TLC-Speichers 222 und der TLC-XOR-Partition 226 feingeschrieben.
  • 2B ist eine schematische Veranschaulichung einer Foggy-Fein-Programmierung gemäß offenbarten Ausführungsformen. Der TLC-Speicher 222 kann weiterhin in eine erste TLC-Speicherpartition 222A und eine zweite TLC-Speicherpartition 222B unterteilt sein. Die zweite TLC-Speicherpartition 222B kann größer sein als die erste TLC-Speicherpartition 222A. Darüber hinaus kann die TLC-XOR-Partition 226 weiterhin in eine erste TLC-XOR-Partition 226A und eine zweite TLC-XOR-Partition 226B partitioniert sein. Die zweite TLC-XOR-Partition 226B kann kleiner sein als die erste TLC-XOR-Partition 226B. In einer Ausführungsform beträgt die Größe der zweiten TLC-XOR-Partition 226B etwa 50 % der Größe der Größe der ersten TLX-XOR-Partition 226A. In einem anderen Beispiel beträgt die Größe der zweiten TLC-XOR-Partition 226B weniger als etwa 50 % der Größe der Größe der ersten TLX-XOR-Partition 226A.
  • In einigen Beispielen kann die zweite TLC-XOR-Partition 226B eine konfigurierbare Größe aufweisen, sodass die Steuerung 108 die Größe der zweiten TLC-XOR-Partition 226B im Verlauf der Lebensdauer der Datenspeicherungsvorrichtung 106 in Abhängigkeit von Faktoren wie einem Schwellenwert, dem Zustand des TLC-Speichers 222, wie etwa der fehlerhaften Bitanzahl (FBC) des TLC-Speichers und dergleichen bestimmen kann. Die erste TLC-Speicherpartition 222A und die erste TLC-XOR-Partition 226A können ein erster TLC-Superblock sein, und die zweite TLC-Speicherpartition 222B und die zweite TLC-XOR-Partition 226B können ein zweiter Superblock sein.
  • Bei der Foggy-Programmierung in den TLC-Speicher 222 werden die Hostdaten in die erste TLC-XOR-Partition 222A programmiert. Ebenso werden die XOR-Paritätsdaten in die erste TLC-XOR-Partition 226A programmiert. Die erste TLC-Speicherpartition 222A und die erste TLC-XOR-Partition 226A können als ein „Host-Schreib“-Bereich betrachtet werden, wobei Daten, die in den „Host-Schreib“-Bereich programmiert sind, verloren gehen oder beschädigt werden können. Wenn jedoch eine Feinprogrammierung in den TLC-Speicher 222 erfolgt, werden die Hostdaten von der ersten TLC-XOR-Partition 222A, die noch gültig sind (d. h. nicht durch einen anderen Hostbefehl neu geschrieben oder beschnitten wurden), kopiert (d. h. eine wiedergewonnene Kopie), neu codiert und in die zweite TLC-Speicherpartition 222B programmiert, und die XOR-Paritätsdaten werden in die zweite TLC-XOR-Partition 226B programmiert. Nach der Feinprogrammierung in die zweite TLC-Speicherpartition 222B und die zweite TLC-XOR-Partition 226B sind die Daten und XOR-Paritätsdaten geschützt, da eine erste Kopie der Daten in der ersten TLC-Speicherpartition 222A gespeichert ist. Die zweite TLC-Speicherpartition 222B und die zweite TLC-XOR-Partition 226B können aus den oben genannten Gründen als „Kopie-Rückgewinnungs“-Bereich betrachtet werden.
  • Da die Feinprogrammierung ein verringertes XOR-Paritätsschema benutzen kann, wie die nachstehend beschriebenen Schemata, kann die erforderliche XOR-Paritätspartitionsgröße verringert werden. Zum Beispiel kann eine Reduzierung der XOR-Paritätsdaten um etwa 50 % in einer SSD mit 7680 GB etwa 100 GB Kapazität frei machen. Die 100 GB frei gewordener Kapazität kann dann benutzt werden, um zusätzliche Hostdaten zu speichern. Somit kann Over-Provisioning des Speichers für XOR-Paritätsdaten verringert werden und der Speicher, der zum Speichern von XOR-Paritätsdaten verwendet worden wäre, kann zum Speichern von Hostdaten oder ähnlichen Daten verwendet werden.
  • 3 ist eine schematische Veranschaulichung eines horizontalen Exklusiv-Oder (XOR)-Schemas mit vollständiger Die-Redundanz eines Superblocks 300 gemäß offenbarten Ausführungsformen. Der Superblock 300 schließt eine Vielzahl von Dies (z. B. Dies 0-7) und eine Vielzahl von Wortleitungen (WL) (z. B. WLs 0-95) ein. Die aufgelistete Anzahl der Dies und Wortleitungen soll nicht einschränkend sein, sondern steht beispielhaft für eine mögliche Ausführungsform. Zum Beispiel kann der Superblock etwa 32 Dies und mehr als oder weniger als etwa 96 WLs einschließen. Jeder Die der Vielzahl von Dies schließt eine erste Ebene, die durch PL0 angegeben ist, und eine zweite Ebene, die durch PL1 angegeben ist, ein. Außerdem schließt jede Wortleitung der Vielzahl von Wortleitungen vier Strings (STR) ein. Die Anzahl der Strings pro Wortleitung richtet sich nach dem Typ der Speicherzelle des Superblocks. Zum Beispiel schließt QLC-Speicher vier Strings pro Wortleitung ein, TLC-Speicher schließt drei Strings pro Wortleitung ein und SLC-Speicher schließt einen String pro Wortleitung ein.
  • Der Superblock 300 kann ein Beispiel einer Zonennamensraumarchitektur sein, die sieben Dies für Daten und einen achten Die für XOR-Paritätsdaten einschließt. Der Die 7 des Superblocks 300 ist XOR-Paritätsdaten 302 zugeordnet. Da Die 7 nur XOR-Paritätsdaten 302 einschließt, können die XOR-Paritätsdaten 302 einen anderen fehlerhaften Die 304 wiederherstellen, wie beispielsweise Die 1, wobei das Wiederherstellen des anderen fehlerhaften Dies 304 das Wiederherstellen aller Daten des fehlerhaften Dies einschließt (d. h. vollständige Die-Redundanz). Da sich zudem jeder String, wie String 2 aus WL 0, über jeden der acht Dies erstreckt, schließt jeder String 16 Ebenen ein. Da Die 7 XOR-Paritätsdaten 302 einschließt, beträgt das Paritätsgruppenverhältnis etwa 1:7, wobei der XOR-Paritätsdaten-Overhead etwa 12,5 % (d. h. 1/8) beträgt. Die aufgeführten Werte sollen nicht einschränkend sein, sondern ein Beispiel einer möglichen Ausführungsform bereitstellen.
  • 4 ist eine Veranschaulichung der möglichen Optionen von Exklusiv-Oder (XOR) in einer Mehrebenenzelle gemäß offenbarten Ausführungsformen. Quellen für Datenfehler mit Korrekturcode für unkorrigierbare Fehler (Uncorrectable Error Correction Code, UECC) schließen Programmierstatusfehler (PSF), stille Programmierfehler und abnutzungs- und datenerhaltungsbezogene zufällige Fehler ein. Die PSF und die stillen Programmierfehler können der Bitfehlerrate (BFR) und/oder dem Programmlösch (PE)-Zyklus zugeordnet sein. Die abnutzungs- und datenerhaltungsbezogenen zufälligen Fehler können der Sektorfehlerrate (SFR) zugeordnet sein.
  • Die Spalte „XOR-Parität“ veranschaulicht die Art der XOR-Parität, die in der jeweiligen Ausführungsform enthalten ist. Zum Beispiel kann eine vollständige Die-Redundanz (Full Die Redundancy, FDR) einen gesamten fehlerhaften Die wiederherstellen. Allerdings können die XOR-Paritätsdaten, die der FDR zugeordnet sind, eine große Menge an Speicherungsplatz in dem Superblock erfordern, wodurch die Menge an Daten reduziert wird, die in dem Superblock gespeichert werden kann. XOR-Paritätsdaten oder beliebige andere Paritätsschemata für Codewörter mit mehreren Fehlerkorrekturcodes (ECC), wie beispielsweise Low-Density-Paritätsprüfung (LDPC), können verwendet werden, um fehlerhafte Datenbits wiederherzustellen. Wenn zum Beispiel die Anzahl fehlerhafter Bits (FBC) größer als ein Schwellenwert ist, kann die Steuerung, wie die Steuerung 108 von 1, die XOR-Paritätsdaten benutzen, um die fehlerhaften Bits wiederherzustellen, sodass die Daten, die den fehlerhaften Bits zugeordnet sind, die fehlerhaften Bits nicht einschließen.
  • Ein weiteres Beispiel für einen Datenfehler ist ein Programmierfehler, bei dem die Programmierfehlergröße von einer WL-String-Ebene bis zu einem 2-Löschblockfehler in zwei Ebenen variiert. Anders als bei den FBC-Fehlern, bei denen sowohl XOR-Paritätsdaten als auch LDPC verwendet werden können, um die FBC-Fehler zu korrigieren, können XOR-Paritätsdaten und ähnliche Paritätsschemata verwendet werden, um Programmierfehler zu korrigieren. Programmierfehler wie beispielsweise PSF können durch Schreiben von Daten an eine andere Stelle des Superblocks behoben werden. Wenn zum Beispiel eine Zelle eine inakzeptable Bitfehlerrate (UBER) aufweist, kann die Steuerung das Programmieren von Daten in die Zelle, die eine UBER aufweist, vermeiden. Allerdings sind stille Programmierfehler für die Steuerung möglicherweise nicht erkennbar und werden unbemerkt an den NVM weitergeleitet, wie beispielsweise den NVM 110 von 1. Stille Programmierfehler können zu doppelten, dreifachen oder höheren Fehlern führen, die die Zuverlässigkeit der Datenspeicherungsvorrichtung, wie beispielsweise der Datenspeicherungsvorrichtung 106 von 1, verringern.
  • Um Benutzerdaten vor einem Fehler aufgrund der Programmierfehler zu schützen, muss das XOR-Paritätsdatenschema groß genug sein (d. h. ein niedriges XOR-Paritätsverhältnis), um vor etwaigen Kombinationen der zuvor beschriebenen Programmierfehlern und etwaigen nicht beschriebenen, aber in Betracht gezogenen Programmierfehlern zu schützen, und auch die korrekte Geometrie aufweisen. Die Größe des XOR-Paritätsdatenschemas hat jedoch Einschränkungen. Zum Beispiel können durch Erhöhen der Größe des XOR-Paritätsdatenschemas weniger Benutzerdaten oder beliebige andere Daten in dem NVM gespeichert werden, da die XOR-Paritätsdaten mehr Speicher in dem NVM einnehmen, wobei mehr Speicher benutzt werden könnte, um mehr Benutzerdaten zu speichern.
  • Die Spalte „Zusatzmaßnahmen“ bezieht sich auf die Zwischenspeicherung von Daten in einem Cache oder einem Puffer oder auf die Stufe von Lesekontrolle/Erweitertes Lesen nach dem Schreiben (Enhanced Post Write Read, EPWR), die zum Prüfen und Beheben von Fehlern verwendet wird. Zum Beispiel können der Puffer oder der Cache bis hin zu den letzten zwei Wortleitungen (2WL tief) an in den Superblock geschriebenen Daten speichern. Wenn eine andere Wortleitung in den Superblock geschrieben wird, wird die älteste Wortleitung der letzten zwei Wortleitungen, die in dem Puffer oder dem Cache gespeichert sind, freigegeben, weshalb sich das Freigeben der Wortleitung auf das Löschen der Daten bezieht. Außerdem bezieht sich die Lesekontroll-/EPWR-Ebene auf die Häufigkeit der Lesekontroll-/EPWR-Operationen. Zum Beispiel bedeutet eine Lesekontroll-/EPWR-Ebene einer Wortleitung, dass nach dem Programmieren einer Wortleitung die Lesekontroll-/EPWR-Operation stattfindet.
  • Wie in 4 veranschaulicht, nimmt bei jeder zusätzlichen Firmware (FW)-Lesekontroll-/EPWR-Prüfung das XOR-Paritätsverhältnis ab. Zum Beispiel beträgt das XOR-Paritätsverhältnis bei der ersten Ausführungsform 404 der FW-Lesekontroll-/EPWR-Prüfung, bei der die Daten von einer ersten TLC-Speicherpartition, wie der ersten TLC-Speicherpartition 222A von 2B, in eine zweite TLC-Speicherpartition, wie die zweite TLC-Speicherpartition 222B von 2B, kopiert werden, etwa bis etwa 1:127. Zum Vergleich weist die Ausführungsform 402 ohne weitere Prüfungen ein XOR-Paritätsverhältnis von etwa 1:63 auf. Die erste Ausführungsform 404 der FW-Lesekontroll-/EPWR-Prüfung schließt eine Lesekontroll-/EPWR-Stufe einer Wortleitung ein. Außerdem speichern der Cache oder der Puffer die letzten zwei Wortleitungen (z. B. 2WL tief) an in den Superblock geschriebenen Daten. Durch weiteres Durchführen von Lesekontroll-/EPWR-Prüfungen, wie der vierten Ausführungsform 406 mit FW-Lesekontroll-/EPWR-Prüfung, kann das XOR-Paritätsverhältnis wesentlich auf etwa 0 verringert werden, wobei der Puffer oder der Cache den letzten Löschblock speichern, der in den Superblock geschrieben wurde, und die Lesekontroll-/EPWR-Operation jedes Mal stattfindet, wenn in eine Wortleitung, einen Löschblock oder sowohl eine Wortleitung als auch einen Löschblock programmiert wird.
  • Das XOR-Paritätsdatenverhältnis sowie der Overhead können reduziert werden, wenn die PSF nicht korrigiert werden muss. Wenn zum Beispiel die Daten, wie etwa bis hin zu den letzten zwei geschriebenen Wortleitungen oder dem letzten programmierten Löschblock, noch in den Quellblöcken, wie etwa dem SLC-Speicher, dem Puffer und/oder dem Cache, verfügbar sind, können die Daten in den Quellblöcken über die PSF-Fehler programmiert werden. In einem anderen Beispiel können temporäre XOR-Paritätsdaten in dem Puffer, dem Cache und/oder dem flüchtigen Speicher gespeichert werden, wie dem flüchtigen Speicher 112 von 1, wobei im Fall einer PSF ein XOR-Paritätselement (d. h. XOR-Paritätsdaten) pro zwischengespeichertem XOR-Streifen (d. h. ein Die, letzte zwei Wortleitungen) korrigiert werden kann.
  • Außerdem können das XOR-Paritätsdatenverhältnis sowie der Overhead reduziert werden, wenn die stillen Programmierfehler nicht korrigiert werden müssen. Wenn zum Beispiel die Daten, wie etwa bis hin zu den letzten zwei geschriebenen Wortleitungen oder dem letzten programmierten Löschblock, noch in den Quellblöcken, wie etwa der ersten TLC-Speicherpartition 222A, dem Puffer und/oder dem Cache, verfügbar sind, können die Daten in den Quellblöcken über die PSF-Fehler programmiert werden. Wenn zusätzliche FW-Lesekontroll-/EPWR-Operationen die stillen Programmierfehler durch Suchen nach den Fehlersignaturen für die stillen Programmierfehlerarten erkennen, können zudem das XOR-Paritätsverhältnis und der Overhead reduziert werden. Bezug nehmend auf 2B kann das XOR-Paritätsverhältnis der ersten TLC-Speicherpartition 222A und der ersten TLC-XOR-Partition 226A etwa 1:7 betragen, wobei für jeden 1 Die mit XOR-Paritätsdaten 7 Dies für Daten vorgesehen sind. Ebenso kann das XOR-Paritätsverhältnis der zweiten TLC-Speicherpartition 226A und der zweiten TLC-XOR-Partition 226B etwa 1:7 betragen. Durch Durchführen zusätzlicher FW-Lesekontroll-/EPWR-Operationen an den in die zweite TLC-Speicherpartition 226B programmierten Daten kann jedoch das XOR-Paritätsverhältnis der zweiten TLC-Speicherpartition 222B und der zweiten TLC-XOR-Partition 226B etwa 1:15, etwa 1:31, etwa 1:63, etwa 1:127, etwa 1:255, etwa 1:383 oder dergleichen betragen. Es wird in Betracht gezogen, dass das XOR-Paritätsverhältnis der zweiten TLC-Speicherpartition 222B und der zweiten TLC-XOR-Partition 226B etwa 0 sein kann, wenn keine XOR-Paritätsdaten in der zweiten TLC-XOR-Partition 226B gespeichert sind.
  • Zum Beispiel kann jede Wortleitung auf stille Programmierfehler überprüft werden, wenn sie in einen Superblock der zweiten TLC-Speicherpartition 222B geschrieben wird. In einigen Ausführungsformen wird jede Ebene und/oder jeder String der Wortleitung auch auf stille Programmierfehler überprüft. Obwohl der Overhead der Operation groß sein kann, werden stille Programmierfehler nicht unbemerkt in die zweite TLC-Speicherpartition 222B programmiert. Da jede Wortleitung überprüft wird, kann zudem nur eine minimale Anzahl von Wortleitungen, wie bis zu etwa zwei Wortleitungen, in dem Puffer, dem Cache und/oder dem flüchtigen Speicher gespeichert werden. Somit kann die Latenz des Kopierens der Wortleitungen von der gespeicherten Stelle in die zweite TLC-Speicherpartition 222B oder die Latenz des Freigebens der Wortleitungen von der gespeicherten Stelle vernachlässigbar oder klein sein.
  • In einem anderen Beispiel kann die FW-Lesekontroll-/EPWR-Operation auf ganze Löschblockfehler prüfen. Bei der Überprüfung auf ganze Löschblockfehler müssen am Ende der Programmierung des Löschblocks nur wenige Wortleitungen überprüft werden, wodurch der Overhead der Operation kleiner wird als der Overhead der Operation der Überprüfung jeder Wortleitung. In einer Ausführungsform kann die Anzahl der geprüften Wortleitungen etwa zwei Wortleitungen betragen, wobei die etwa zwei geprüften Wortleitungen die letzten Wortleitungen des programmierten Löschblocks sind. Da jedoch der Löschblock bei Abschluss des Löschblockprogrammierens in die zweite TLC-Speicherpartition 222B geprüft wird, müssen die Quellblöcke, die den Daten des Löschblocks zugeordnet sind, möglicherweise in der ersten TLC-Speicherpartition 222A, dem Puffer und/oder dem Cache gespeichert werden. Da das Speichern der Quellblöcke, die dem Löschblock zugeordnet sind, größer ist als das Speichern der letzten zwei Wortleitungen, die in die zweite TLC-Speicherpartition 222B programmiert sind, kann die Latenz des Freigebens des Quellblocks von der relevanten Stelle größer sein als die Latenz des Freigebens von bis zu etwa zwei Wortleitungen.
  • In noch einem weiteren Beispiel kann die FW-Lesekontroll-/EPWR-Operation sowohl auf Löschblock- als auch auf Wortleitungsfehler prüfen. Nachdem der Löschblock in die zweite TLC-Speicherpartition 222B programmiert wurde, wird jede Wortleitung des Löschblocks auf Wortleitungsfehler überprüft. In einigen Ausführungsformen wird jede Ebene und/oder jeder String der Wortleitung auf Programmierfehler überprüft. Da jede Wortleitung bei Abschluss des Löschblockprogrammierens in die zweite TLC-Speicherpartition 222B geprüft wird, müssen die Quellblöcke, die den Daten des Löschblocks zugeordnet sind, möglicherweise in der ersten TLC-Speicherpartition 222A, dem Puffer und/oder dem Cache gespeichert werden. Da das Speichern der Quellblöcke, die dem Löschblock zugeordnet sind, größer ist als das Speichern der letzten zwei Wortleitungen, die in die zweite TLC-Speicherpartition 222B programmiert sind, kann die Latenz des Freigebens des Quellblocks von der relevanten Stelle größer sein als die Latenz des Freigebens von bis zu etwa zwei Wortleitungen. Obwohl der Overhead der Operation größer sein kann als die vorherigen zwei Beispiele, werden die stillen Programmierfehler möglicherweise nicht unbemerkt an die zweite TLC-Speicherpartition 222B weitergeleitet, wodurch die höchste Reduzierung von XOR-Paritätsdaten ermöglicht wird, wobei die gespeicherten XOR-Paritätsdaten minimal oder im Wesentlichen etwa null sein können. In einigen Ausführungsformen können die einzigen gespeicherten XOR-Paritätsdaten für abnutzungs- und datenerhaltungsbezogene zufällige Fehler sein.
  • 5A und 5B sind Veranschaulichungen verschiedener Programmierfehlerarten gemäß offenbarten Ausführungsformen. Es versteht sich, dass die 5A und 5B zusammen eine einzige Figur darstellen, die auf zwei Seiten aufgeteilt ist, die mit 5A und 5B bezeichnet sind. Die stillen Fehler (d. h. stille Programmierfehler) schließen keine PSF-Fehler ein. Somit können die stillen Fehler an den MFK-Speicher weitergeleitet werden, wie den MFK-Speicher 224 von 2. Wie in den anderen Beispielen der 5A und 5B veranschaulicht, kann jedoch durch Einschließen mindestens einer Zelle, die eine PSF aufweist, der Fehler durch die Steuerung bemerkt werden, und die Steuerung kann den Fehler unter Benutzung von XOR-Paritätsdaten, LDPC und/oder dergleichen korrigieren. Die verschiedenen Programmierfehlerarten können UECC/kurz und PSF sein. In einigen Ausführungsformen verlaufen die Programmierfehler entlang der Grenzen des Superblocks, wie der zuletzt programmierten Wortleitung (d. h. WL(n)) und/oder dem zuletzt programmierten String (d. h. S3). Durch Implementieren einer Lesekontroll-/EPWR-Operation, wie der in 4 beschriebenen Lesekontroll-/EPWR-Operationen, werden die in den 5A und 5B veranschaulichten Programmierfehler möglicherweise nicht in den MFK-Speicher programmiert. Es wird in Betracht gezogen, dass andere Fehlerarten, die nicht gezeigt sind, auf die hierin beschriebenen Ausführungsformen anwendbar sind.
  • 6A und 6B sind schematische Veranschaulichungen eines reduzierten horizontalen Exklusiv-Oder (XOR)-Schemas eines Superblocks 600, 650 gemäß offenbarten Ausführungsformen. Aspekte des Superblocks 300 von 3 können ähnlich dem Superblock 600 von 6A und dem Superblock 650 von 6B sein. Obwohl beispielhaft ein Superblockschema dargestellt ist, wird in Betracht gezogen, dass die offenbarten Ausführungsformen auf Nicht-Superblockschemata anwendbar sind. Das Superblockschema kann sich auf Datenstreifenbildung über mehrere Dies beziehen, um ein höheres Parallelitätsmaß zu erreichen. Das Nicht-Superblockschema kann sich auf Datenstreifenbildung über einen einzelnen Die beziehen. Zudem versteht es sich, dass, obwohl beispielhaft ein horizontales XOR-Schema dargestellt ist, die Ausführungsformen auf ein reduziertes vertikales XOR-Schema anwendbar sein können. Gemäß dem horizontalen XOR-Schema spannt sich die XOR-Paritätsgruppe/der XOR-Paritätsstreifen horizontal über einen Datenstreifen, sodass der letzte Block oder Satz von Blöcken des horizontalen Datenstreifens mit XOR-Paritätsdaten programmiert wird. Die XOR-Paritätsdaten können vor Datenfehlern für den jeweiligen horizontalen Datenstreifen schützen. Gemäß dem vertikalen XOR-Paritätsschema spannt sich die XOR-Paritätsgruppe beispielsweise vertikal über eine einzelne Ebene, sodass der letzte Block einer Ebene oder Satz von Blöcken der Ebene mit XOR-Paritätsdaten programmiert wird. Die XOR-Paritätsdaten können vor Datenfehlern für den jeweiligen vertikalen Datenstreifen schützen.
  • Im Gegensatz zum Superblock 300 von 3 weist der Superblock 600, speziell der Die 7, im Vergleich zum Superblock 300 um etwa 50 % reduzierte XOR-Paritätsdaten auf. Die XOR-Paritätsdaten 602 können auf einer einzigen Ebene eines einzigen Dies, wie PL1 von Die 7, angeordnet sein. Wie der Superblock 600 weist der Superblock 650 im Vergleich zum Superblock 300 um etwa 50 % reduzierte XOR-Paritätsdaten auf. Anstatt XOR-Paritätsdaten auf einer einzelnen Ebene eines einzelnen Dies zu aufzuweisen, können die XOR-Paritätsdaten 602 jedoch an alternierenden Strings gespeichert werden, wie STR1 und STR3 von WL0, wobei die XOR-Paritätsdaten 602 sowohl auf PL0 als auch auf PL1 eines einzelnen Dies, wie beispielsweise Die 7, gespeichert werden. Ebenso veranschaulicht die 1:15-Paritätsgruppe 652, wo sich die Parität (P) an abwechselnden Wortleitungen befinden kann.
  • Die reduzierten XOR-Paritätsdaten können auf die zusätzlichen Lesekontroll-/EPWR-Operationen zurückzuführen sein, die auf PSF und stille Programmierfehler prüfen. Die etwa 50 % XOR-Paritätsdaten des Superblocks 600, 650 können nur einen Block oder eine Ebene eines Dies 604 wiederherstellen und nicht einen vollständigen Die-Fehler. Das Paritätsgruppenverhältnis kann etwa 1:15 statt wie zuvor in 3 veranschaulicht 1:7 betragen. Da die zusätzlichen Lesekontroll-/EPWR-Operationen jedoch an den programmierten Wortleitungen und/oder Löschblöcken des Superblocks ausgeführt werden, kann UBER wesentlich kleiner sein als die programmierten Wortleitungen und/oder Löschblöcke des Superblocks, bei dem keine zusätzlichen Lesekontroll-/EPWR-Operationen die an den Wortleitungen und/oder Löschblöcken des Superblocks ausgeführt werden.
  • 7 ist eine schematische Veranschaulichung eines reduzierten horizontalen Exklusiv-Oder (XOR)-Schemas eines Superblocks 700 gemäß offenbarten Ausführungsformen. Gesichtspunkte des Superblocks 650 von 6B können ähnlich dem Superblock 700 sein. Obwohl beispielhaft ein Superblockschema dargestellt ist, wird in Betracht gezogen, dass die offenbarten Ausführungsformen auf Nicht-Superblockschemata anwendbar sind. Zudem versteht es sich, dass, obwohl beispielhaft ein vertikales XOR-Schema dargestellt ist, die Ausführungsformen auf ein reduziertes horizontales XOR-Schema anwendbar sein können. Zum Beispiel weist der Superblock 700 ein Paritätsgruppenverhältnis von 1:15 auf, wobei die XOR-Paritätsdaten 702 in alternierenden Strings gespeichert sind. Bezüglich des Superblocks 700 wird in den vierten String STR3 der vierten Wortleitung WL3 programmiert. Die durch Programmierfehler gefährdeten Daten sind die beiden zuvor programmierten Wortleitungen WL2 und WL1. Allerdings werden die Quellblöcke für die Daten von WL2 und WL1 in dem TLC-Speicher gespeichert, wie der ersten TLC-Speicherpartition 222A von 2B. WL0 kann als „sicher“ angesehen werden, wenn eine erfolgreiche Lesekontroll-/EPWR-Operation, wie die in 4 beschriebene Lesekontroll-/EPWR-Operation, an den Daten von WL0 abgeschlossen wurde. Die Programmierfehler 704, sowohl PSF als auch stille Programmierfehler, können in WL1, WL2 und WL3 noch vorhanden sein, da die Lesekontroll-/EPWR-Operation noch nicht ausgeführt wurde.
  • 8 ist eine schematische Veranschaulichung eines reduzierten vertikalen Exklusiv-Oder (XOR)-Schemas eines Superblocks 800 gemäß offenbarten Ausführungsformen. Obwohl beispielhaft ein Superblockschema dargestellt ist, wird in Betracht gezogen, dass die offenbarten Ausführungsformen auf Nicht-Superblockschemata anwendbar sind. Zudem versteht es sich, dass, obwohl beispielhaft ein vertikales XOR-Schema dargestellt ist, die Ausführungsformen auf ein reduziertes horizontales XOR-Schema anwendbar sein können. Der Superblock 800 veranschaulicht das 1:383-Paritätsgruppenschema, wie in 4 veranschaulicht, wobei sich das 1:383 auf 1 XOR-Paritätsdaten pro 383 andere Zellen in einem TLC-Speicher bezieht, der 96-Wortleitungen und 8 Dies einschließt. In einigen Beispielen kann die Anzahl von Paritätsgruppen pro Superblock auf die Hälfte oder ein Viertel des Superblocks reduziert werden, sodass der Superblock zwischen etwa 2 und etwa 4 Paritätsgruppen einschließt. Zum Beispiel kann jede der Paritätsgruppen vor Datenfehlern des jeweiligen Dies und eines benachbarten nebenan gelegenen Dies schützen.
  • Anstatt XOR-Paritätsdaten in den letzten Die jeder Wortleitung zu programmieren, werden die XOR-Paritätsdaten 802 in den letzten String der letzten Wortleitung programmiert, sodass die XOR-Paritätsdaten die vorherigen Wortleitungen und die vorherigen Strings für jede Ebene und/oder jeden Die schützen. In manchen Beispielen können die XOR-Paritätsdaten 802 bis zum Abschluss der Programmierung der vorherigen Strings und Wortleitungen in flüchtigem Speicher, wie dem flüchtigen Speicher 112 von 1, gespeichert werden, um eine sequenzielle Programmierung des Superblocks aufrechtzuerhalten.
  • In einem Beispiel können die XOR-Paritätsdaten an demselben Die und/oder derselben Ebene schützen, sodass erste XOR-Paritätsdaten 806 in Die7, PL1, WL 95, STR3 eine vierte Stelle 808d in Die7, PL0, WL0, STR1 schützen können. In einem anderen Beispiel können die ersten XOR-Paritätsdaten 806 in Die7, PL1, WL 95, STR3 eine gestreute Gruppe von Zellen schützen, wie beispielsweise die erste Stelle 808a, die zweite Stelle 808b, die dritte Stelle 808c und die vierte Stelle 808d. Zudem können flüchtiger Speicher und/oder der NVM, wie beispielsweise die erste TLC-Speicherpartition 222A von 2B, den letzten Löschdatenblock speichern, sodass ein erster Löschblock 804 wiederhergestellt werden kann.
  • 9 ist ein Flussdiagramm, das ein Verfahren 900 zum Durchführen einer Foggy-Fein-Programmierung gemäß offenbarten Ausführungsformen veranschaulicht. Bei Block 902 empfängt die Steuerung, wie die Steuerung 108 aus 1, einen Schreibbefehl. Die Steuerung führt bei Block 904 eine Foggy/Fein-Programmierung in den nichtflüchtigen Speicher durch, wie die zweite TLC-Speicherpartition 222B von 2B. Die der Feinprogrammierung zugeordneten Daten können in eine oder mehrere Wortleitungen, wie eine erste Wortleitung und eine zweite Wortleitung, des NVM oder in einen Löschblock des NVM geschrieben werden.
  • Bei Block 906 wird die Datenquelle (d. h. die Daten, die dem Schreibbefehl bei Block 902 zugeordnet sind) in einem flüchtigen Speicher, wie dem flüchtigen Speicher 112 von 1, und/oder in einem NVM, wie der ersten TLC-Speicherpartition 222B von 2B, gehalten, wobei die Datenquelle bis zu etwa zwei Wortleitungen der letzten Feinprogrammierung, die in den NVM geschrieben wurde, oder den letzten Löschblock speichern kann, der in den NVM feinprogrammiert wurde. Bei Block 908 findet eine Lesekontrolloperation an den Daten statt, die auf den NVM fein programmiert sind. Die Lesekontrolloperation kann eine erweiterte Leseoperation nach dem Schreiben sein. Zudem kann die Lesekontrolloperation entweder an den letzten zwei Wortleitungen, die zuvor programmiert wurden, wie einer ersten Wortleitung und einer zweiten Wortleitung, dem letzten Löschblock, der zuvor geschrieben wurde, oder jeder Wortleitung des letzten Löschblocks, der zuvor geschrieben wurde, erfolgen. Die Lesekontrolloperation prüft auf Programmierfehler wie PSF, stille Programmierfehler und dergleichen.
  • Bei Block 910 bestimmt die Steuerung, ob die Lesekontrolloperation erfolgreich war. War die Lesekontrolloperation bei Block 910 nicht erfolgreich, d. h. liegt ein Programmierfehler vor, so wird bei Block 912 die in der ersten TLC-Speicherpartition 222A gespeicherte Datenquelle in die zweite TLC-Speicherpartition 222B kopiert, wobei das Kopieren der Daten in die zweite TLC-Speicherpartition 222B eine Feinprogrammierung ist. Die Steuerung führt dann bei Block 908 eine Lesekontrolloperation an den kopierten Daten durch. Wenn jedoch die Lesekontrolloperation bei Block 910 erfolgreich ist, dann kann eine reduzierte Menge von XOR-Paritätsdaten, die mit Daten in Block 914 programmiert sind, derart, dass die programmierten XOR-Paritätsdaten etwa 50 % der in vorherigen Ansätzen programmierten XOR-Paritätsdaten ausmachen können. Die Menge an programmierten XOR-Paritätsdaten kann vom Maß der durchgeführten Programmierredundanz abhängen, wie den unterschiedlichen Redundanzebenen, die zuvor in 4 beschrieben wurden.
  • Zum Beispiel kann beim Programmieren der Daten in die zweite TLC-Speicherpartition 222B eine Ebene eines Dies über jede der Vielzahl von Wortleitungen hinweg ein XOR-Paritätselement (d. h. XOR-Paritätsdaten) einschließen. Die Vielzahl von Wortleitungen schließt eine Vielzahl von Strings ein, wobei das XOR-Paritätselement in alternierende Strings eines Dies geschrieben wird und mindestens ein String der Vielzahl von Strings keine XOR-Paritätsdaten einschließt. Anstatt einen ganzen Die mit XOR-Paritätsdaten zu programmieren, wird etwa ein halber Die nach einer erfolgreichen Lesekontrolloperation mit XOR-Paritätsdaten programmiert. Es versteht sich, dass das reduzierte XOR-Paritätsdatenschema ein reduziertes horizontales Paritätsschema, ein vertikales reduziertes Paritätsschema oder eine Kombination der zuvor erwähnten Schemata sein kann. Außerdem kann in einigen Beispielen das vertikale reduzierte Paritätsschema ein gestreutes vertikales Paritätsschema sein, sodass die XOR-Paritätsdaten verschiedene Zellen oder Bits pro Ebene jedes Dies schützen. In einigen Ausführungsformen weisen die erste TLC-Speicherpartition 222A und die zweite TLC-Speicherpartition 222B möglicherweise nicht dasselbe XOR-Paritätsschema auf. Zum Beispiel weist die erste TLC-Speicherpartition 222A ein erstes Verhältnis auf, wobei das erste Verhältnis etwa ein Paritätsgruppenverhältnis von 1:7 ist, und die zweite TLC-Speicherpartition 222B weist ein zweites Verhältnis auf, wobei das zweite Verhältnis etwa ein Paritätsgruppenverhältnis von 1:15 ist. Außerdem kann in einigen Beispielen die zweite TLC-Speicherpartition 222B keine XOR-Paritätsdaten aufweisen, wie die in 4 beschriebene vierte Ausführungsform 406 mit FW-Lesekontrolle/EPWR-Prüfung.
  • Bei Block 916 wird die Datenquelle, die den Daten der erfolgreichen Lesekontrolloperation zugeordnet ist, aus der ersten TLC-Speicherpartition 222A, dem Puffer und/oder dem Cache freigegeben. Bei Block 918 ist die Feinprogrammierung abgeschlossen.
  • Indem eine Lesekontrolloperation auf unterschiedlichen Ebenen des nichtflüchtigen Speichers durchgeführt wird, wie auf einer Wortleitung-zu-Wortleitungs-Basis, auf einer Löschblock-Basis oder auf einer Jede-Wortleitung-eines-Löschblocks-Basis, und die Datenquelle in dem SLC-Speicher, dem Puffer und/oder dem Cache gespeichert wird, kann die Größe der XOR-Paritätsdaten der Feinprogrammierung für den NVM verringert werden und die Zuverlässigkeit der Daten erhöht werden.
  • In einer Ausführungsform schließt eine Datenspeicherungsvorrichtung eine Steuerung und eine Speichervorrichtung ein, die mit der Steuerung gekoppelt ist. Die Speichervorrichtung schließt einen ersten Superblock, der einen ersten Paritätsabschnitt einer ersten Speicherungsgröße aufweist, und einen zweiten Superblock ein, der einen zweiten Paritätsabschnitt einer zweiten Speicherungsgröße aufweist. Die erste Speicherungsgröße ist kleiner als die zweite Speicherungsgröße.
  • Der erste Superblock weist eine dritte Speicherungsgröße auf und der zweite Superblock weist eine vierte Speicherungsgröße auf. Die dritte Speicherungsgröße ist kleiner als die vierte Speicherungsgröße. Der erste Superblock ist eingerichtet, um Host-Schreibdaten zu handhaben. Der zweite Superblock ist eingerichtet, um wiederhergestellte Kopien der Host-Schreibdaten zu handhaben. Der erste Superblock ist TLC-Speicher. Der zweite Superblock ist TLC-Speicher. Der erste Paritätsabschnitt und der zweite Paritätsabschnitt sind XOR-Parität. Die zweite Speicherungsgröße ist um etwa 50 % kleiner als die erste Speicherungsgröße. Der zweite Superblock schließt eine Vielzahl von Wortleitungen ein. Jede Wortleitung schließt eine Vielzahl von Strings ein. Mindestens ein String der Vielzahl von Strings schließt keine Exklusiv-Oder (XOR)-Daten ein.
  • In einer anderen Ausführungsform schließt eine Datenspeicherungsvorrichtung eine Speichervorrichtung und eine Steuerung ein, die mit der Speichervorrichtung gekoppelt ist. Die Steuerung ist dazu eingerichtet, Hostdaten von einer Hostvorrichtung zu empfangen, erste Exklusiv-Oder (XOR)-Paritätsdaten für die Hostdaten zu generieren, die Hostdaten und ersten XOR-Paritätsdaten mit einem Codierer zu codieren, die codierten Hostdaten und ersten XOR-Paritätsdaten in einen ersten Speichersuperblock zu schreiben, gültige Daten und erste XOR-Paritätsdaten, die in den ersten Speichersuperblock geschrieben wurden, zu decodieren, wobei die gültigen Daten den Hostdaten entsprechen, die nicht veraltet sind, wenn sie sich in dem ersten Speichersuperblock befinden, zweite XOR-Paritätsdaten für die decodierten gültigen Daten zu generieren, die decodierten gültigen Daten und zweiten XOR-Paritätsdaten mit dem Codierer erneut zu codieren und die neu codierten Daten und der zweiten XOR-Paritätsdaten in einen zweiten Speichersuperblock zu schreiben. Die neu codierten zweiten XOR-Paritätsdaten weisen eine Größe auf, die kleiner als die Größe der ersten XOR-Paritätsdaten ist.
  • Die Speichervorrichtung schließt eine Vielzahl von Dies ein. Jeder der Vielzahl von Dies schließt eine erste Ebene und eine zweite Ebene ein. Mindestens eine Ebene der ersten Ebene und der zweiten Ebene schließt Exklusiv-Oder (XOR)-Daten ein. Die Steuerung ist weiterhin dazu eingerichtet, Daten in eine erste Wortleitung der Vielzahl von Wortleitungen der Speichervorrichtung zu schreiben, Daten in eine zweite Wortleitung der Vielzahl von Wortleitungen zu schreiben, eine Lesekontrolloperation an der ersten Wortleitung durchzuführen und eine Lesekontrolloperation an der zweiten Wortleitung durchzuführen. Mindestens eine der ersten Wortleitung und der zweiten Wortleitung schließt kein XOR-Paritätselement ein. Die Lesekontrolloperation ist eine erweiterte Leseoperation nach dem Schreiben (EPWR). Das XOR-Paritätselement ist mindestens eins von einer vollständigen Die-Redundanz, einer vollständigen Ebenenredundanz und einer Löschblockredundanz. Der Decodierer und der Codierer sind in einem Front-Modul der Datenspeicherungsvorrichtung angeordnet. Die ersten XOR-Paritätsdaten werden in einem von dem Front-Modul getrennten Front-End-Modul generiert.
  • In einer anderen Ausführungsform schließt eine Datenspeicherungsvorrichtung Speichermittel, die einen ersten Speichersuperblock und einen zweiten Speichersuperblock aufweisen, Mittel zum Speichern von Hostdaten mit Paritätsdaten in dem ersten Speichersuperblock, und Mittel zum Speichern einer Kopie der Hostdaten und Paritätsdaten in dem zweiten Speichersuperblock ein, wobei die Kopie der Paritätsdaten verglichen mit einer Menge an Paritätsdatenspeicherung in dem ersten Superblock eine geringere Menge an Paritätsdatenspeicherung in dem zweiten Superblock benutzt.
  • Die Datenspeicherungsvorrichtung schließt weiterhin Mittel ein, um eine Lesekontrolloperation durchzuführen, um Programmierfehler zu erkennen. Die Lesekontrolloperation ist eine erweiterte Leseoperation nach dem Schreiben. Das Mittel zum Durchführen einer Lesekontrolloperation schließt entweder das Prüfen jeder Wortleitung einer Vielzahl von Wortleitungen des Speichermittels auf Programmierfehler, jedes Löschblocks einer Vielzahl von Löschblöcken des Speichermittels auf Programmierfehler oder sowohl jeder Wortleitung der Vielzahl von Wortleitungen als auch jedes Löschblock der Vielzahl von Löschblöcken auf Programmierfehler ein.
  • Während sich das Vorstehende auf Ausführungsformen der vorliegenden Offenbarung bezieht, können andere und weitere Ausführungsformen der Offenbarung ausgearbeitet werden, ohne vom grundlegenden Schutzumfang davon abzuweichen, und der Schutzumfang wird durch die nachstehenden Ansprüche bestimmt.

Claims (20)

  1. Datenspeicherungsvorrichtung, aufweisend: eine Steuerung; und eine zweite Speichervorrichtung, die mit der Steuerung gekoppelt ist, wobei die zweite Speichervorrichtung aufweist: einen ersten Superblock, der einen ersten Paritätsabschnitt einer ersten Speicherungsgröße aufweist; und einen zweiten Superblock, der einen zweiten Paritätsabschnitt einer zweiten Speicherungsgröße aufweist, wobei die erste Speicherungsgröße kleiner als die zweite Speicherungsgröße ist.
  2. Datenspeicherungsvorrichtung gemäß Anspruch 1, wobei der erste Superblock eine dritte Speicherungsgröße aufweist und der zweite Superblock eine vierte Speicherungsgröße aufweist, und wobei die dritte Speicherungsgröße kleiner als die vierte Speicherungsgröße ist.
  3. Datenspeicherungsvorrichtung gemäß Anspruch 2, wobei der erste Superblock zum Handhaben von Host-Schreibdaten eingerichtet ist.
  4. Datenspeicherungsvorrichtung gemäß Anspruch 3, wobei der zweite Superblock eingerichtet ist, um wiedergewonnene Kopien der Host-Schreibdaten zu handhaben.
  5. Datenspeicherungsvorrichtung gemäß Anspruch 1, wobei der erste Superblock ein TLC-Speicher ist.
  6. Datenspeicherungsvorrichtung gemäß Anspruch 5, wobei der zweite Superblock ein TLC-Speicher ist.
  7. Datenspeicherungsvorrichtung gemäß Anspruch 1, wobei der erste Paritätsabschnitt und der zweite Paritätsabschnitt XOR-Parität sind.
  8. Speichervorrichtung gemäß Anspruch 1, wobei die zweite Speicherungsgröße um 50 % kleiner als die erste Speicherungsgröße ist.
  9. Datenspeicherungsvorrichtung gemäß Anspruch 1, wobei der zweite Superblock eine Vielzahl von Wortleitungen aufweist, wobei jede Wortleitung eine Vielzahl von Strings aufweist und wobei mindestens ein String der Vielzahl von Strings keine Exklusiv-Oder(XOR)-Daten einschließt.
  10. Datenspeicherungsvorrichtung, aufweisend: eine Speichervorrichtung; und eine Steuerung, die an die Speichervorrichtung gekoppelt ist, wobei die Steuerung eingerichtet ist zum: Empfangen von Hostdaten von einer Hostvorrichtung; Generieren von ersten Exklusiv-Oder (XOR)-Paritätsdaten für die Hostdaten; Codieren der Hostdaten und der ersten XOR-Paritätsdaten mit einem Codierer; Schreiben der codierten Hostdaten und der ersten XOR-Paritätsdaten in einen ersten Speichersuperblock; Decodieren gültiger Daten und erster XOR-Paritätsdaten, die in den ersten Speichersuperblock geschrieben werden, wobei die gültigen Daten den Hostdaten entsprechen, die noch nicht veraltet sind, wenn sie sich in dem ersten Speichersuperblock befinden; Generieren von zweiten XOR-Paritätsdaten für die decodierten gültigen Daten; erneutes Codieren der decodierten gültigen Daten und der zweiten XOR-Paritätsdaten mit dem Codierer; und Schreiben der neu codierten gültigen Daten und der zweiten XOR-Paritätsdaten in einen zweiten Speichersuperblock, wobei die neu codierten zweiten XOR-Paritätsdaten eine Größe aufweisen, die kleiner als die Größe der ersten XOR-Paritätsdaten ist.
  11. Datenspeicherungsvorrichtung gemäß Anspruch 10, wobei die Speichervorrichtung eine Vielzahl von Dies aufweist und wobei jeder der Vielzahl von Dies eine erste Ebene und eine zweite Ebene aufweist.
  12. Datenspeicherungsvorrichtung gemäß Anspruch 11, wobei mindestens eine Ebene der ersten Ebene und der zweiten Ebene Exklusiv-Oder (XOR)-Daten einschließt.
  13. Datenspeicherungsvorrichtung gemäß Anspruch 10, wobei die Steuerung weiterhin eingerichtet ist zum: Schreiben von Daten in eine erste Wortleitung der Vielzahl von Wortleitungen der Speichervorrichtung; Schreiben von Daten in eine zweite Wortleitung der Vielzahl von Wortleitungen; Durchführen einer Lesekontrolloperation an der ersten Wortleitung; und Durchführen einer Lesekontrolloperation an der zweiten Wortleitung, wobei mindestens eine der ersten Wortleitung und der zweiten Wortleitung kein XOR-Paritätselement einschließt.
  14. Datenspeicherungsvorrichtung gemäß Anspruch 13, wobei die Lesekontrolloperation erweitertes Lesen nach dem Schreiben (EPWR) ist.
  15. Datenspeicherungsvorrichtung gemäß Anspruch 13, wobei das XOR-Paritätselement mindestens eins von einer vollständigen Die-Redundanz, einer vollständigen Ebenenredundanz und einer Löschblockredundanz ist.
  16. Datenspeicherungsvorrichtung gemäß Anspruch 10, wobei der Decodierer und der Codierer in einem Front-Modul der Datenspeicherungsvorrichtung angeordnet sind.
  17. Datenspeicherungsvorrichtung gemäß Anspruch 16, wobei die ersten XOR-Paritätsdaten in einem Front-End-Modul generiert werden, das von dem Front-Modul getrennt ist.
  18. Datenspeicherungsvorrichtung, aufweisend: Speichermittel, die einen ersten Speichersuperblock und einen zweiten Speichersuperblock aufweisen; Mittel zum Speichern von Hostdaten mit Paritätsdaten in dem ersten Speichersuperblock; und Mittel zum Speichern einer Kopie der Hostdaten und Paritätsdaten in dem zweiten Speichersuperblock, wobei die Kopie der Paritätsdaten verglichen mit einer Menge an Paritätsdatenspeicherung in dem ersten Speichersuperblock eine geringere Menge an Paritätsdatenspeicherung in dem zweiten Speichersuperblock benutzt.
  19. Datenspeicherungsvorrichtung gemäß Anspruch 18, weiterhin aufweisend: Mittel zum Durchführen einer Lesekontrolloperation zum Erkennen von Programmierfehlern, wobei die Lesekontrolloperation erweitertes Lesen nach dem Schreiben ist.
  20. Datenspeicherungsvorrichtung gemäß Anspruch 18, wobei das Mittel zum Durchführen einer Lesekontrolloperation entweder das Prüfen jeder Wortleitung einer Vielzahl von Wortleitungen des Speichermittels auf Programmierfehler, jedes Löschblocks einer Vielzahl von Löschblöcken des Speichermittels auf Programmierfehler oder sowohl jeder Wortleitung der Vielzahl von Wortleitungen als auch jedes Löschblocks der Vielzahl von Löschblöcken auf Programmierfehler aufweist.
DE102021115858.3A 2021-03-15 2021-06-18 Tlc-datenprogrammierung mit hybrid-parität Pending DE102021115858A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/202163 2021-03-15
US17/202,163 US11861195B2 (en) 2021-03-15 2021-03-15 TLC data programming with hybrid parity

Publications (1)

Publication Number Publication Date
DE102021115858A1 true DE102021115858A1 (de) 2022-09-15

Family

ID=83005604

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021115858.3A Pending DE102021115858A1 (de) 2021-03-15 2021-06-18 Tlc-datenprogrammierung mit hybrid-parität

Country Status (3)

Country Link
US (2) US11861195B2 (de)
CN (1) CN115083486A (de)
DE (1) DE102021115858A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11789611B2 (en) 2020-04-24 2023-10-17 Netapp, Inc. Methods for handling input-output operations in zoned storage systems and devices thereof
US11340987B1 (en) 2021-03-04 2022-05-24 Netapp, Inc. Methods and systems for raid protection in zoned solid-state drives
US11782602B2 (en) * 2021-06-24 2023-10-10 Western Digital Technologies, Inc. Providing priority indicators for NVMe data communication streams
US11797377B2 (en) * 2021-10-05 2023-10-24 Netapp, Inc. Efficient parity determination in zoned solid-state drives of a storage system
US11803329B2 (en) 2021-11-22 2023-10-31 Netapp, Inc. Methods and systems for processing write requests in a storage system
US11816359B2 (en) 2021-12-16 2023-11-14 Netapp, Inc. Scalable solid-state storage system and methods thereof
US20230376230A1 (en) * 2022-05-18 2023-11-23 Micron Technology, Inc. Data storage with parity and partial read back in a redundant array
US20240045616A1 (en) * 2022-08-05 2024-02-08 Micron Technology, Inc. Multiple-pass programming of memory cells using temporary parity generation

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69133216T2 (de) * 1990-11-09 2003-12-18 Seagate Technology Llc Festplattenantriebsteuerungsarchitektur mit mehreren Mikrokontrollern
KR100822030B1 (ko) 2006-12-26 2008-04-15 삼성전자주식회사 고 부호화율 부호를 이용한 멀티 레벨 셀 메모리 장치
KR101368694B1 (ko) 2008-01-22 2014-03-03 삼성전자주식회사 메모리 프로그래밍 장치 및 방법
US8144512B2 (en) 2009-12-18 2012-03-27 Sandisk Technologies Inc. Data transfer flows for on-chip folding
US8037345B1 (en) * 2010-03-31 2011-10-11 Emc Corporation Deterministic recovery of a file system built on a thinly provisioned logical volume having redundant metadata
KR101666941B1 (ko) 2010-07-06 2016-10-17 삼성전자주식회사 비휘발성 메모리 장치와 이를 포함하는 반도체 시스템
US8898374B2 (en) 2010-07-21 2014-11-25 Silicon Motion, Inc. Flash memory device and method for managing flash memory device
US8656138B2 (en) * 2010-10-06 2014-02-18 Cleversafe, Inc. Efficiently accessing an encoded data slice utilizing a memory bin
US8775901B2 (en) 2011-07-28 2014-07-08 SanDisk Technologies, Inc. Data recovery for defective word lines during programming of non-volatile memory arrays
US9135156B2 (en) * 2012-10-29 2015-09-15 Broadcom Corporation Dynamically configurable memory
US9135155B2 (en) 2012-11-30 2015-09-15 Sandisk Technologies Inc. Storage and retrieval of shaped data
US9009565B1 (en) * 2013-03-15 2015-04-14 Pmc-Sierra, Inc. Systems and methods for mapping for solid-state memory
US9235469B2 (en) 2013-05-22 2016-01-12 Seagate Technology Llc Systems and methods for inter-cell interference mitigation in a flash memory
US9927998B2 (en) * 2014-02-05 2018-03-27 Tidal Systems, Inc. Flash memory compression
US8902652B1 (en) 2014-05-13 2014-12-02 Sandisk Technologies Inc. Systems and methods for lower page writes
US9619321B1 (en) 2015-10-08 2017-04-11 Seagate Technology Llc Internal copy-back with read-verify
US9530491B1 (en) 2015-11-16 2016-12-27 Sandisk Technologies Llc System and method for direct write to MLC memory
US10025662B2 (en) 2016-04-27 2018-07-17 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
US10090044B2 (en) 2016-07-21 2018-10-02 Sandisk Technologies Llc System and method for burst programming directly to MLC memory
US10339000B2 (en) 2016-09-13 2019-07-02 Sandisk Technologies Llc Storage system and method for reducing XOR recovery time by excluding invalid data from XOR parity
US10101942B1 (en) 2017-04-17 2018-10-16 Sandisk Technologies Llc System and method for hybrid push-pull data management in a non-volatile memory
US10789126B2 (en) 2018-10-09 2020-09-29 Micron Technology, Inc. Multiple memory devices having parity protection
US10748606B2 (en) 2018-12-14 2020-08-18 Western Digital Technologies, Inc. Multi-state programming for memory devices
US10769014B2 (en) 2018-12-28 2020-09-08 Micron Technology, Inc. Disposable parity
JP7471883B2 (ja) 2020-03-19 2024-04-22 キオクシア株式会社 メモリシステム

Also Published As

Publication number Publication date
CN115083486A (zh) 2022-09-20
US20220291838A1 (en) 2022-09-15
US11861195B2 (en) 2024-01-02
US20240086097A1 (en) 2024-03-14

Similar Documents

Publication Publication Date Title
DE102021115858A1 (de) Tlc-datenprogrammierung mit hybrid-parität
DE112010004863B4 (de) Datenverwaltung in Festkörperspeichersystemen
DE112016004629T5 (de) Datencodiertechniken für eine Vorrichtung
DE112020005180T5 (de) Kondensieren von logischen zu physischen tabellenzeigern in ssds unter verwendung von gezonten namensräumen
DE102017114078A1 (de) Fehlerabschwächung für 3d-nand-flash-speicher
DE102016009806A1 (de) Speichern von paritätsdaten getrennt von geschützten daten
DE112020006139T5 (de) Vor-lese-und lese-schwellenspannungsoptimierung
DE102013109235A1 (de) Flash-Speichersystem mit Detektor für anormale Wortleitung und Verfahren zum Erfassen einer anormalen Wortleitung
DE102016009807A1 (de) Korrelieren von physikalischen seitenadressen für soft-decision-dekodierung
DE112020000143T5 (de) Ssd-system, das einschaltzyklus-basierten read-scrub verwendet
DE102021115893A1 (de) EFFIZIENTE DATENSPEICHERUNGSNUTZUNG IM ZUSAMMENHANG MIT EINEM NICHT ORDNUNGSGEMÄßEN HERUNTERFAHREN
DE102021107436A1 (de) Speichersystem und Verfahren zum direkten Quad-Level-Cell-Programmieren (QLC-Programmieren)
DE112020004963T5 (de) Datenintegritätsschutz für zns-anforderungen
DE102021106721A1 (de) Schnelles durch-steuerung-kopieren
DE102021107340A1 (de) Speichersystem und verfahren für eine ausgeglichene quad-level- cell(qlc)-codierung mit spielraum für einen internal-data-load(idl)-lesevorgang
US11537510B2 (en) Storage devices having minimum write sizes of data
DE112020005001T5 (de) Qlc-programmierverfahren mit zurückspeichern von feindaten
DE102019132799A1 (de) Speicherchiplayouts für den Fehlerschutz in SSDs
DE102022209756A1 (de) Speichervorrichtung und speichersystem zum programmieren von daten
DE112020004975T5 (de) SPEICHERUNGSVORRICHTUNGEN MIT MINIMALEN SCHREIBGRÖßEN VON DATEN
US11557350B2 (en) Dynamic read threshold calibration
DE112022000470T5 (de) Cache-basierter fluss für einen einfachen kopierbefehl
DE102016115177B4 (de) Verfahren zum Betreiben einer Speichervorrichtung und Speichervorrichtung
US11727984B2 (en) Detection of page discrepancy during read threshold calibration
DE102021115235A1 (de) Verschiebungsablauf unter verwendung der cba-technologie

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

R012 Request for examination validly filed
R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE