DE102021107340A1 - Speichersystem und verfahren für eine ausgeglichene quad-level- cell(qlc)-codierung mit spielraum für einen internal-data-load(idl)-lesevorgang - Google Patents

Speichersystem und verfahren für eine ausgeglichene quad-level- cell(qlc)-codierung mit spielraum für einen internal-data-load(idl)-lesevorgang Download PDF

Info

Publication number
DE102021107340A1
DE102021107340A1 DE102021107340.5A DE102021107340A DE102021107340A1 DE 102021107340 A1 DE102021107340 A1 DE 102021107340A1 DE 102021107340 A DE102021107340 A DE 102021107340A DE 102021107340 A1 DE102021107340 A1 DE 102021107340A1
Authority
DE
Germany
Prior art keywords
memory
data
storage system
programming
pages
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
DE102021107340.5A
Other languages
English (en)
Inventor
Eran Sharon
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102021107340A1 publication Critical patent/DE102021107340A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/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/1072Adding 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 multilevel memories
    • 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/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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Bereitgestellt werden ein Speichersystem und ein Verfahren für eine ausgeglichene Quad-Level-Cell(QLC)-Codierung mit Spielraum für einen Internal-Data-Load(IDL)-Lesevorgang. In einem Beispiel wird bei einem MLC-Fein-Programmieransatz eine ausgeglichene 3-4-4-4-Codierung verwendet, wobei die Daten durch Zuweisen einer eindeutigen Binärsequenz je Zustand codiert werden. Das IDL-Lesen wird unterstützt, indem eine eindeutige 3-4-4-4-Codierung verwendet wird, welche eine mindestens drei Zustände umfassende Lücke zwischen den MLC-Zuständen bereitstellt, während dieselbe ECC-Redundanz je Seite verwendet wird. Dies ermöglicht einen verringerten Schreibpuffer durch Unterstützen des IDL-Lesens und stellt aufgrund des ausgeglichenen Abbildens eine ausgeglichene Bitfehlerrate (BER) bereit.

Description

  • HINTERGRUND
  • Wenn Daten in einen nichtflüchtigen Speicher geschrieben werden, der eine Multi-Level-Cell(MLC)-Konfiguration aufweist, wird das Verfahren üblicherweise durch Speichern jedes der Vielzahl von Bits für eine Zelle in einem Direktzugriffsspeicher (RAM) in der Speichersteuerung für alle Zellen in einer vollständigen Wortleitung in dem Speicher und anschließendes Fortfahren mit einem mehrstufigen Programmiervorgang durchgeführt, um in jede Multi-Bit-Zelle Ladung einzugeben, um den für diese Zelle gewünschten programmierten Zustand zu erreichen. Üblicherweise wird bei der mehrstufigen Programmierung zunächst ein Teil der Zustände mit erweiterten Spannungsverteilungen programmiert (der Programmierschritt „Foggy“), gefolgt von einer abschließenden Programmierung aller Zustände mit enger Spannungsverteilung (der Programmierschritt „Fein“). Als Teil dieses mehrstufigen Programmiervorgangs und für jeden der mehreren Programmierschritte kann der Speicher in der Steuerung eine Kopie aller zu programmierenden Datenbits in einer Zelle speichern und die Fehlerkorrekturcode-Bits (Error Correction Code Bits, ECC-Bits) für die Daten verarbeiten. Falls die in dem Foggy-Programmierschritt programmierten Daten aus dem Speicherarray fehlerfrei gelesen oder innerhalb des Speicherchips zuverlässig decodiert werden können, um den folgenden Fein-Programmierschritt zu aktivieren, müssen die Foggy-Daten nicht bis zum Fein-Schritt vorübergehend in der Speichersteuerung gespeichert werden und der Speicherpuffer innerhalb der Speichersteuerung kann in der Größe reduziert werden.
  • Figurenliste
    • 1A ist ein Blockdiagramm eines nichtflüchtigen Speichersystems einer Ausführungsform.
    • 1B ist ein Blockdiagramm, das ein Speichermodul einer Ausführungsform veranschaulicht.
    • 1C ist ein Blockdiagramm, das ein hierarchisches Speichersystem einer Ausführungsform veranschaulicht.
    • 2A ist ein Blockdiagramm, das Komponenten der Steuerung des in 1A veranschaulichten nichtflüchtigen Speichersystems gemäß einer Ausführungsform veranschaulicht.
    • 2B ist ein Blockdiagramm, das Komponenten des in 1A veranschaulichten nichtflüchtigen Speichersystems gemäß einer Ausführungsform veranschaulicht.
    • 3 ist ein Diagramm und ein Graph, welche eine 3-4-4-4-Codierung einer Ausführungsform veranschaulichen.
    • 4 ist ein Flussdiagramm eines Verfahrens einer Ausführungsform.
    • 5 ist ein Flussdiagramm eines anderen Verfahrens einer Ausführungsform.
    • 6 ist ein Graph eines Verfahrens einer Ausführungsform zum Verwenden eines Codierschemas, um einen Lesevorgang zu unterstützen.
  • DETAILLIERTE BESCHREIBUNG
  • Nun Bezug nehmend auf die Zeichnungen, sind in 1A bis 1C Speichersysteme dargestellt, welche zum Realisieren von Gesichtspunkten dieser Ausführungsformen geeignet sind. 1A ist ein Blockdiagramm, welches ein nichtflüchtiges Speichersystem 100 (hierin manchmal als eine Speichervorrichtung oder lediglich als eine Vorrichtung bezeichnet) gemäß einer Ausführungsform des hierin beschriebenen Gegenstands veranschaulicht. Bezug nehmend auf 1A schließt das nichtflüchtige Speichersystem 100 eine Steuerung 102 und einen nichtflüchtigen Speicher, der aus einem oder mehreren nichtflüchtigen Speicherchips 104 bestehen kann, ein. Wie hierin verwendet, bezieht sich der Begriff „Die“ auf die Sammlung von nichtflüchtigen Speicherzellen und eine zugeordnete Schaltung zum Verwalten des physischen Betriebs dieser nichtflüchtigen Speicherzellen, die auf einem einzelnen Halbleitersubstrat gebildet sind. Die Steuerung 102 bildet mit einem Hostsystem eine Schnittstelle und überträgt Befehlssequenzen für Lese-, Programmier- und Löschvorgänge zu dem nichtflüchtigen Speicherchip 104.
  • Die Steuerung 102 (welche eine Steuerung eines nichtflüchtigen Speichers (z. B. eines Flash-Speichers, eines resistiven Direktzugriffsspeichers (Re-RAM), eines Phasenwechselspeichers (PCM) oder eines magnetoresistiven Direktzugriffsspeichers (MRAM) sein kann)) kann zum Beispiel die Form einer Verarbeitungsschaltung, eines Mikroprozessors oder Prozessors und eines computerlesbaren Mediums annehmen, welches computerlesbaren Programmcode (z. B. Firmware) speichert, der von dem (Mikro-)Prozessor, Logikgattern, Schaltern, einer anwendungsspezifischen integrierten Schaltung (ASIC), einer programmierbaren Logiksteuerung und einem eingebetteten Mikrocontroller ausführbar ist. Die Steuerung 102 kann mit Hardware und/oder Firmware eingerichtet sein, um die verschiedenen Funktionen durchzuführen, die unten beschrieben und in den Flussdiagrammen gezeigt sind. Außerdem können einige der Komponenten, die als innerhalb der Steuerung gezeigt sind, auch außerhalb der Steuerung gespeichert werden, und andere Komponenten können verwendet werden. Zusätzlich könnte der Ausdruck „operativ in Kommunikation mit“ direkt in Kommunikation mit oder indirekt (verdrahtet oder drahtlos) in Kommunikation mit durch eine oder mehrere Komponenten, die hierin gezeigt oder beschrieben sein können oder nicht gezeigt oder beschrieben sein können, bedeuten.
  • Wie hierin verwendet, ist eine nichtflüchtige Speichersteuerung eine Vorrichtung, die auf nichtflüchtigem Speicher gespeicherte Daten verwaltet und mit einem Host, wie einem Computer oder einer elektronischen Vorrichtung, kommuniziert. Eine nichtflüchtige Speichersteuerung kann verschiedene Funktionalität zusätzlich zu der hierin beschriebenen spezifischen Funktionalität aufweisen. Zum Beispiel kann die nichtflüchtige Speichersteuerung den nichtflüchtigen Speicher formatieren, um sicherzustellen, dass der Speicher ordnungsgemäß arbeitet, schlechte nichtflüchtige Speicherzellen auszugrenzen und Ersatzzellen zuzuordnen, die künftige fehlerhafte Zellen ersetzen sollen. Ein Teil der Ersatzzellen kann verwendet werden, um Firmware aufzunehmen, um die nichtflüchtige Speichersteuerung zu betreiben und andere Merkmale zu implementieren. Wenn ein Host im Betrieb Daten aus dem nichtflüchtigen Speicher lesen oder Daten in diesen schreiben muss, kann er mit der nichtflüchtigen Speichersteuerung kommunizieren. Wenn der Host eine logische Adresse bereitstellt, in die Daten gelesen/geschrieben werden sollen, kann die nichtflüchtige Speichersteuerung die von dem Host empfangene logische Adresse in eine physische Adresse in der nichtflüchtigen Speichersteuerung umwandeln. (Alternativ kann der Host die physische Adresse bereitstellen.) Die nichtflüchtige Speichersteuerung kann auch verschiedene Speicherverwaltungsfunktionen durchführen, wie, ohne darauf beschränkt zu sein, einen Abnutzungsausgleich (Verteilen von Schreibvorgängen, um zu vermeiden, dass bestimmte Speicherblöcke, die ansonsten wiederholt beschrieben würden, abgenutzt werden) und eine Speicherbereinigung (nachdem ein Block voll ist, werden nur die gültigen Datenseiten in einen neuen Block bewegt, sodass der volle Block gelöscht und wiederverwendet werden kann). Außerdem kann die Struktur für die in den Ansprüchen aufgeführten „Mittel“ zum Beispiel einige oder alle der hierin beschriebenen Strukturen der Steuerung einschließen, die dementsprechend programmiert oder hergestellt sind, um zu bewirken, dass die Steuerung so arbeitet, dass die aufgeführten Funktionen ausgeführt werden.
  • Der nichtflüchtige Speicherchip 104 kann jedes geeignete nichtflüchtige Speichermedium, einschließlich Resistive Random-Access Memory (ReRAM), Magnetoresistive Random-Access Memory (MRAM), Phase-Change Memory (PCM), NAND-Flash-Speicherzellen und/oder NOR-Flash-Speicherzellen, einschließen. Die Speicherzellen können die Form von Festkörperspeicherzellen (z. B. Flash-Speicherzellen) annehmen und können einmalig programmierbar, mehrfach programmierbar oder vielfach programmierbar sein. Die Speicherzellen können auch Single-Level Cells (SLC), Multiple-Level Cells (MLC), Triple-Level Cells (TLC) oder andere Speicherzellen-Level-Technologien sein, die jetzt bekannt sind oder später entwickelt werden. Außerdem können die Speicherzellen auf zweidimensionale oder dreidimensionale Weise hergestellt werden.
  • Die Schnittstelle zwischen der Steuerung 102 und dem nichtflüchtigen Speicherchip 104 kann eine beliebige geeignete Flash-Schnittstelle sein, wie beispielsweise Toggle-Modus 200, 400 oder 800. In einer Ausführungsform kann das Speichersystem 100 ein kartenbasiertes System sein, wie eine Secure Digital-Karte (SD-Karte) oder eine micro Secure Digital-Karte (micro-SD). In einer alternativen Ausführungsform kann das Speichersystem 100 Teil eines eingebetteten Speichersystems sein.
  • Obwohl in dem in 1A veranschaulichten Beispiel das nichtflüchtige Speichersystem 100 (hierin manchmal als Speichermodul bezeichnet) einen einzigen Kanal zwischen der Steuerung 102 und dem nichtflüchtigen Speicherchip 104 einschließt, ist der hierin beschriebene Gegenstand nicht auf einen einzigen Speicherkanal beschränkt. Zum Beispiel können in einigen Speichersystemarchitekturen (wie den in 1B und 1C gezeigten) abhängig von Steuerungsfähigkeiten 2, 4, 8 oder mehr Speicherkanäle zwischen der Steuerung und der Speichervorrichtung vorhanden sein. In jeder der hierin beschriebenen Ausführungsformen kann mehr als ein einziger Kanal zwischen der Steuerung und dem Speicherchip vorhanden sein, selbst wenn in den Zeichnungen ein einziger Kanal gezeigt ist.
  • 1B veranschaulicht ein Speichermodul 200, das mehrere nichtflüchtige Speichersysteme 100 einschließt. Deshalb kann das Speichermodul 200 eine Speichersteuerung 202 einschließen, die mit einem Host und mit einem Speichersystem 204, das eine Vielzahl von nichtflüchtigen Speichersystemen 100 einschließt, verbunden ist. Die Schnittstelle zwischen der Speichersteuerung 202 und den nichtflüchtigen Speichersystemen 100 kann eine Busschnittstelle sein, wie eine Serial-Advanced-Technology-Attachment(SATA)-Schnittstelle, eine Peripheral-Component-Interface-express(PCIe)-Schnittstelle oder eine Double-Data-Rate(DDR)-Schnittstelle. Das Speichermodul 200 kann in einer Ausführungsform ein Solid State Drive (SSD) oder ein Non-Volatile Dual In-line Memory Module (NVDIMM) sein, wie es in einem Server-PC oder in tragbaren Rechenvorrichtungen, wie Laptop-Computern und Tablet-Computern, zu finden ist.
  • 1C ist ein Blockdiagramm, das ein hierarchisches Speichersystem veranschaulicht. Ein hierarchisches Speichersystem 250 schließt eine Vielzahl von Speichersteuerungen 202 ein, von denen jede ein entsprechendes Speichersystem 204 steuert. Host-Systeme 252 können über eine Busschnittstelle auf Speicher innerhalb des Speichersystems zugreifen. In einer Ausführungsform kann die Busschnittstelle eine Non-Volatile-Memory-Express(NVMe)-Schnittstelle oder eine Fibre-Channel-over-Ethernet(FCoE)-Schnittstelle sein. In einer Ausführungsform kann das in 1C veranschaulichte System ein Rack-montierbares Massenspeichersystem sein, auf das von mehreren Host-Computern zugegriffen werden kann, wie es in einem Datenzentrum oder an einem anderen Ort, an dem eine Massenspeicherung benötigt wird, zu finden ist.
  • 2A ist ein Blockdiagramm, das Komponenten der Steuerung 102 detaillierter veranschaulicht. Die Steuerung 102 schließt ein Frontend-Modul 108, das mit einem Host verbunden ist, ein Backend-Modul 110, das mit dem einen oder den mehreren nichtflüchtigen Speicherchips 104 verbunden ist, und verschiedene andere Module, die Funktionen durchführen, die nun ausführlich beschrieben werden, ein. Ein Modul kann zum Beispiel die Form einer gepackten funktionellen Hardwareeinheit, die zur Verwendung mit anderen Komponenten konzipiert ist, eines Abschnitts eines Programmcodes (z. B. Software oder Firmware), der durch einen (Mikro-)Prozessor oder eine Verarbeitungsschaltung, die üblicherweise eine bestimmte Funktion von verwandten Funktionen durchführt, ausführbar ist, oder einer eigenständigen Hardware- oder Softwarekomponente, die mit einem größeren System verbunden ist, annehmen. Die Steuerung 102 kann hierin manchmal als NAND-Steuerung oder eine Flash-Steuerung bezeichnet werden, es versteht sich jedoch, dass die Steuerung 102 mit jeder geeigneten Speichertechnologie verwendet werden kann, wobei für einige von diesen nachstehend Beispiele bereitgestellt werden.
  • Unter erneuter Bezugnahme auf Module der Steuerung 102 verwaltet eine Pufferverwaltung/Bussteuerung 114 Puffer in Direktzugriffsspeicher (RAM) 116 und steuert die interne Buszuteilung der Steuerung 102. Ein Nur-Lese-Speicher (ROM) 118 speichert den System-Boot-Code. Obwohl sie in 2A als von der Steuerung 102 getrennt angeordnet veranschaulicht sind, können in anderen Ausführungsformen einer oder beide von dem RAM 116 und dem ROM 118 innerhalb der Steuerung angeordnet sein. In wiederum anderen Ausführungsformen können Teile des RAM und des ROM sowohl innerhalb der Steuerung 102 als auch außerhalb der Steuerung angeordnet sein.
  • Das Frontend-Modul 108 schließt eine Host-Schnittstelle 120 und eine physische Schnittstelle (PHY) 122 ein, welche die elektrische Schnittstelle mit dem Host oder der Speichersteuerung der nächsten Ebene bereitstellen. Die Wahl des Typs der Host-Schnittstelle 120 kann von dem Typ des verwendeten Speichers abhängen. Beispiele für Host-Schnittstellen 120 schließen, ohne jedoch darauf beschränkt zu sein, SATA, SATA Express, Serially Attached Small Computer System Interface (SAS), Fibre Channel, Universal Serial Bus (USB), PCle und NVMe ein. Die Host-Schnittstelle 120 unterstützt üblicherweise die Übertragung von Daten, Steuersignalen und Taktsignalen.
  • Das Backend-Modul 110 schließt eine Fehlerkorrekturcode-Maschine (ECC-Maschine) 124 ein, welche die von dem Host empfangenen Datenbytes codiert und die aus dem nichtflüchtigen Speicher gelesenen Datenbytes decodiert und Fehler korrigiert. Ein Befehlssequenzierer 126 erzeugt Befehlssequenzen wie Programmier- und Löschbefehlssequenzen zur Übermittlung an den nichtflüchtigen Speicherchip 104. Ein RAID-Modul (Redundant Array of Independent Drives-Modul) 128 verwaltet die Erzeugung von RAID-Parität und die Wiederherstellung fehlerhafter Daten. Die RAID-Parität kann als zusätzliche Ebene des Integritätsschutzes für die Daten verwendet werden, die in die Speichervorrichtung 104 geschrieben werden. In einigen Fällen kann das RAID-Modul 128 ein Teil der ECC-Maschine 124 sein. Eine Speicherschnittstelle 130 stellt die Befehlssequenzen für den nichtflüchtigen Speicherchip 104 bereit und empfängt Statusinformationen von dem nichtflüchtigen Speicherchip 104. In einer Ausführungsform kann die Speicherschnittstelle 130 eine Double-Data-Rate(DDR)-Schnittstelle sein, wie eine Schnittstelle für den Toggle-Modus 200, 400 oder 800. Eine Flash-Steuerschicht 132 steuert den Gesamtbetrieb des Backend-Moduls 110.
  • Das Speichersystem 100 schließt auch andere diskrete Komponenten 140 ein, wie externe elektrische Schnittstellen, externen RAM, Widerstände, Kondensatoren oder andere Komponenten, die mit der Steuerung 102 verbunden sein können. In alternativen Ausführungsformen sind eine oder mehrere der physischen Schnittstelle 122, des RAID-Moduls 128, der Medienverwaltungsschicht 138 und der Pufferverwaltungs-/Bussteuerung 114 optionale Komponenten, die in der Steuerung 102 nicht erforderlich sind.
  • 2B ist ein Blockdiagramm, das Komponenten des nichtflüchtigen Speicherchips 104 detaillierter veranschaulicht. Der nichtflüchtige Speicherchip 104 schließt eine Peripherieschaltung 141 und ein nichtflüchtiges Speicherarray 142 ein. Das nichtflüchtige Speicherarray 142 schließt die nichtflüchtigen Speicherzellen ein, die zum Speichern von Daten verwendet werden. Die nichtflüchtigen Speicherzellen können beliebige geeignete nichtflüchtige Speicherzellen sein, einschließlich ReRAM-, MRAM-, PCM-, NAND-Flash-Speicherzellen und/oder NOR-Flash-Speicherzellen in einer zweidimensionalen und/oder dreidimensionalen Konfiguration. Der nichtflüchtige Speicherchip 104 schließt weiterhin einen Datencache 156 ein, der Daten zwischenspeichert. Die Peripherieschaltung 141 schließt eine Zustandsmaschine 152, die Statusinformationen an die Steuerung 102 bereitstellt, ein.
  • Zurückkehrend zu 2A, behandelt die Flash-Steuerschicht 132 (die hierin als Flash-Übersetzungsschicht (FTL) oder allgemeiner als die „Medienverwaltungsschicht“ bezeichnet wird, da der Speicher möglicherweise kein Flash-Speicher ist) Flash-Fehler und Schnittstellen mit dem Host. Insbesondere ist die FTL, die ein Algorithmus in Firmware sein kann, für die internen Vorgänge der Speicherverwaltung verantwortlich und übersetzt Schreibvorgänge vom Host in Schreibvorgänge in den Speicher 104. Die FTL kann benötigt werden, da der Speicher 104 möglicherweise eine begrenzte Lebensdauer aufweist, möglicherweise nur in Vielfachen von Seiten beschrieben wird und/oder möglicherweise nicht beschrieben wird, sofern er nicht als Block gelöscht wird. Die FTL kennt diese potenziellen Einschränkungen des Speichers 104, die für den Host möglicherweise nicht sichtbar sind. Dementsprechend versucht die FTL, die Schreibvorgänge vom Host in Schreibvorgänge in den Speicher 104 zu übersetzen.
  • Die FTL kann eine logisch-physische Adressabbildung (L2P) (hierin manchmal als eine Tabelle oder eine Datenstruktur bezeichnet) und einen zugewiesenen Cache-Speicher einschließen. Auf diese Weise übersetzt die FTL logische Blockadressen („LBAs“) vom Host in physische Adressen im Speicher 104. Die FTL kann andere Merkmale einschließen, wie, ohne darauf beschränkt zu sein, eine Stromabschaltwiederherstellung (so dass die Datenstrukturen der FTL im Fall eines plötzlichen Leistungsverlusts wiederhergestellt werden können) und einen Verschleißausgleich (so dass der Verschleiß über Speicherblöcke gleichmäßig ist, um zu verhindern, dass bestimmte Blöcke übermäßigem Verschleiß unterliegen, was zu einer größeren Wahrscheinlichkeit eines Ausfalls führen würde).
  • Wie oben erwähnt, wird, wenn Daten in einen nichtflüchtigen Speicher geschrieben werden, der eine Multi-Level-Cell(MLC)-Konfiguration aufweist, das Verfahren üblicherweise durch Speichern jedes der Vielzahl von Bits für eine Zelle in einem Direktzugriffsspeicher (RAM) in der Speichersteuerung für alle Zellen in einer vollständigen Wortleitung in dem Speicher und anschließendes Fortfahren mit einem mehrstufigen Programmiervorgang durchgeführt, um in jede Multi-Bit-Zelle Ladung einzugeben, um den für diese Zelle gewünschten programmierten Zustand zu erreichen. Üblicherweise wird bei der mehrstufigen Programmierung zunächst ein Teil der Zustände mit erweiterten Spannungsverteilungen programmiert (der Programmierschritt „Foggy“), gefolgt von einer abschließenden Programmierung aller Zustände mit enger Spannungsverteilung (der Programmierschritt „Fein“). Als Teil dieses mehrstufigen Programmiervorgangs und für jeden der mehreren Programmierschritte kann der Speicher in der Steuerung eine Kopie aller zu programmierenden Datenbits in einer Zelle speichern und die Fehlerkorrekturcode-Bits (Error Correction Code Bits, ECC-Bits) für die Daten verarbeiten. Falls die in dem Foggy-Programmierschritt programmierten Daten aus dem Speicherarray fehlerfrei gelesen oder innerhalb des Speicherchips zuverlässig decodiert werden können, um den folgenden Fine-Programmierschritt zu aktivieren, müssen die Foggy-Daten nicht bis zum Fein-Schritt vorübergehend in der Speichersteuerung gespeichert werden und der Speicherpuffer innerhalb der Speichersteuerung kann in der Größe reduziert werden. Foggy-Fein Programmierschemata sind zum Programmieren von Multi-Level-Cell-Speichern gut bekannt.
  • Wenn ein fehlerfreies internes Foggy-Lesen innerhalb des Speicherchips (d. h. das Internal-Data-Load(IDL)-Lesen) nicht möglich ist, müssen die Foggy-Daten in einem Schreibpuffer innerhalb der Speichersteuerung zwischengespeichert werden, um während der Fein-Stufe wiederverwendet zu werden. Die Größe des Speicherschreibpuffers, die erforderlich ist, um eine Foggy-Fein-Programmierung zu ermöglichen, wächst mit zunehmender Anzahl an Speicherebenen und Strings, was zum Zweck der Verringerung der Speicherkosten bei fortschreitenden Speichergenerationen der allgemeine Trend ist. Beispielweise kann ein Speicher mit 6 Strings x 4 Ebenen x 4 Seiten von 16 KB je einen Schreibpuffer von -1,5 MB je Speicherchip erfordern, was die Steuerungskosten erheblich erhöht. Daher wäre ein Schema äußerst wünschenswert, welches ein zuverlässiges Foggy-Lesen innerhalb des Speicherchips (IDL-Lesen) ermöglicht.
  • Ein solches Schema ist ein MLC-Fein-Programmierschema, bei welchem während der Foggy-Stufe zwei Seiten programmiert werden („MLC“-Programmierung) und zwei Seiten in der Fein-Stufe hinzugefügt werden. Eine solche MLC-Fein-Programmierung reduziert den erforderlichen Schreibpuffer erheblich auf -128 KB bis 256 KB je Chip. Ein solches Programmierschema erfordert einen Spielraum für ein MLC-Internal-Data-Load(IDL)-Lesen. Ein IDL-Lesen wird angewendet, um Speicherzellen nach dem Programmieren der ersten Seite(n), aber vor dem Programmieren der zweiten Seite(n) zurückzulesen. Durch dieses Lesen kann die erste Seite in einen Satz von Daten-Latches auf dem Speicherchip gespeichert werden und es kann dazu führen, dass die erste Seite von Daten in die Daten-Latches geladen wird, ohne dass Daten von dem Chip zu den Daten-Latches übertragen werden.
  • Jedoch kann nicht jede Zustandscodierung einen solchen Spielraum bereitstellen. Beispielsweise stellt die ausgeglichene 3-4-4-4-Codierung für QLC, die in 6 dargestellt ist, keinen solchen Spielraum bereit. Eine nicht ausgeglichene Codierung wie 2-3-5-5 oder 1-2-6-6 kann einen Spielraum für ein IDL-Lesen bereitstellen, kann aber eine unausgeglichene BER und tR je Seite induzieren, welche unerwünscht sind. Daher kann es zum Zweck des Ausgleichs von BER und tR zwischen Seiten erwünscht sein, eine Zustandscodierung mit einer ausgeglichenen Anzahl an Übergängen je Seite (d. h. die 3-4-4-4-Codierung) zu verwenden.
  • Da eine QLC-Foggy-Fein-Programmierung jedoch einen sehr großen Schreibpuffer erfordert, kommt eine MLC-Fein-Programmierung in Betracht. Die MLC-Fein-Programmierung erfordert dadurch einen wesentlich kleineren Schreibpuffer, dass sie auf die Fähigkeit angewiesen ist, ein IDL-Lesen der MLC-Seite durchzuführen, wodurch die Notwendigkeit vermieden wird, sie in dem Steuerungs-Schreibpuffer zu speichern. Dies kann die erforderliche Schreibpuffergröße für QLC von 1536 KB auf 128 KB bis 256 KB verringern. Das Problem besteht darin, dass fast alle ausgeglichenen 3-4-4-4-Abbildungen nicht gut für die MLC-Fein-Programmierung passen, da sie keinen ausreichenden Spielraum für das IDL-Lesen bereitstellen. Unausgeglichene Abbildungen wie die 2-3-5-5- und die 1-2-6-6-Codierung können einen größeren Spielraum für das IDL-Lesen bereitstellen, führen jedoch zu einer unausgeglichenen Bitfehlerrate (Bit Error Rate, BER) je Seite. Eine unausgeglichene BER je Seite bedeutet, dass mehr ECC-Redundanz erforderlich ist, um die gleiche Zuverlässigkeit zu erreichen (da der ECC die schlechteste Seite bewältigen muss). Dies wiederum verringert die Speicherkosteneffizienz, da für den ECC mehr Datenaufwand zugewiesen werden muss.
  • Die folgenden Ausführungsformen stellen eine alternative 3-4-4-4-Codierung bereit, welche einen hohen Spielraum für das MLC-IDL-Lesen bereitstellt. Im Allgemeinen offenbaren diese Ausführungsformen einen MLC-Fein-Programmieransatz unter Verwendung einer ausgeglichenen 3-4-4-4-Codierung, wobei die Daten durch Zuweisen einer eindeutigen Binärsequenz je Zustand codiert werden. Das IDL-Lesen (d. h. das interne Lesen der MLC-Daten) wird unterstützt, indem eine eindeutige 3-4-4-4-Codierung verwendet wird, welche eine mindestens drei Zustände umfassende Lücke zwischen den MLC-Zuständen bereitstellt, während dieselbe ECC-Redundanz je Seite verwendet wird. Dies ermöglicht einen verringerten Schreibpuffer durch Unterstützen des IDL-Lesens und stellt aufgrund des ausgeglichenen Abbildens eine ausgeglichene Bitfehlerrate (BER) bereit.
  • Der folgende Absatz erläutert die Auswirkung der Zustandscodierung auf die erwartete BER und die Empfindlichkeit der BER gegenüber einem Zustandspositionierungs-Jitter, wodurch eine Motivation zum Verwenden einer ausgeglichenen Zustandscodierung bereitgestellt wird.
  • Bezüglich der Auswirkung der Zustandscodierung auf die BER ist in einer Ausführungsform ein ECC-Codewort in einer logischen Seite enthalten („nicht-verschachtelte Codierung“). Dies bedeutet, dass wir von der schlechtesten Seite innerhalb der Wortleitung abhängen. Es ist daher erwünscht, die BER zwischen verschiedenen Seiten auszugleichen. Die Verwendung einer nicht ausgeglichenen Zustandscodierung macht ein Anpassen der Verifizierungsniveaus erforderlich, um die Zustandsverteilungen auf eine Weise ungleichmäßig zu positionieren, die für alle logischen Seiten eine gleiche BER induzieren würde. Dies gibt es nicht zum Nulltarif, da eine unausgeglichene Codierung zwei Nachteile aufweist. Zunächst wird durch den ungleichmäßigen Abstand der Zustände bei gegebenem Spannungsfenster und gegebener Zustandsbreite die BER angehoben. Zum anderen wird die Empfindlichkeit für einen etwaigen „Jitter“ in der Position der Verteilung erhöht. Da der Speicher unter variablen Betriebsbedingungen (z. B. P/E, DR, Xtemp, Störungen usw.) arbeitet, können wir niemals unter allen Bedingungen eine einwandfreie Positionierung der Zustände gewährleisten. Aufgrund des Vorstehenden ist es äußerst wünschenswert, eine ausgeglichene 3-4-4-4-Zustandscodierung zu verwenden.
  • In einer Ausführungsform wird eine neue 3-4-4-4-Zustandscodierung bereitgestellt, um diese Probleme zu überwinden. Diese Codierung stellt einen höheren Spielraum für das IDL-Lesen der MLC-Seite bereit, wodurch eine MLC-Fein-Programmierung ermöglicht werden kann. Wie in 3 dargestellt, programmiert die MLC-Stufe die Zustände S0, S3, S6 und S10, was einen mindestens drei Zustände umfassenden Spielraum für das IDL-Lesen ergibt.
  • 4 ist ein Flussdiagramm 1200 eines Verfahrens einer Ausführungsform. Wie in 4 dargestellt, wird ein QLC-3-4-4-4-Gray-Code bereitgestellt (Vorgang 1210). In diesem Code induzieren die ersten beiden Seiten (ohne Verlust der Allgemeinheit) eine MLC-Gray-Codierung mit einem Spielraum eines mindestens zwei Zustände umfassenden Unterschieds (Vorgang 1210). Die ersten beiden Seiten (die untere und die mittlere) werden dann als MLC programmiert (Vorgang 1220). Anschließend wird die MLC-Programmierstufe auf Chip (ohne Fehlerkorrektur) gelesen (verifiziert) (Vorgang 1230). Dann werden die obere und die oberste Seite programmiert, um eine QLC-Verteilung zu induzieren (Vorgang 1240).
  • In Bezug auf die Handhabung eines nicht ordnungsgemäßen Herunterfahrens (Ungraceful Shutdown, UGSD) kann das Speichersystem im Fall eines Schreibabbruchs (Write Abort, WA) aufgrund eines Stromausfalls die Daten in den vier Latches in den SLC-Speicher programmieren (unter Verwendung von Kondensatorenergie). Während des Einschaltens werden die Daten wiederhergestellt, indem die SLC-Seiten (welche den Zustand der Latches während des WA enthalten) und die QLC-Seite, für die das Schreiben abgebrochen wurde, gelesen werden. Für jede Zelle zeigt der Latch-Zustand an, ob die Zelle bereits verifiziert/gesperrt wurde, wobei in diesem Fall ihre QLC-Daten gültig sind, oder ob sie noch nicht verifiziert wurde, wobei in diesem Fall ihre SLC-DATEN die gültigen Daten sind.
  • Alternativ können das XOR (L-Seiten über alle Strings) und das XOR (M-Seiten über alle Strings) in SLC gespeichert werden. In diesem Beispiel werden einmal für jede X QLC-Seiten zwei SLC-Seiten programmiert, wobei X die Anzahl der Strings innerhalb des Speicherchips ist. Im Fall eines Stromausfalls während der Programmierung der MLC-Stufe werden die beiden XOR-Seiten in SLC geleert. Die untere und die mittlere Seite können nach dem Einschalten aus den XOR-Seiten und den anderen erfolgreich programmierten Seiten wiederhergestellt werden. Im Fall eines Stromausfalls während der Fein-Stufe können die oberste und die obere Seite in SLC geleert werden. Die untere und die mittlere Seite können nach dem Einschalten aus den XOR-Seiten und den anderen erfolgreich programmierten Seiten wiederhergestellt werden. Die oberste und die obere Seite können aus den geleerten SLC-Seiten wiederhergestellt werden.
  • 5 ist ein Flussdiagramm 1300 eines anderen Verfahrens einer Ausführungsform. Wie in 5 dargestellt, werden die ersten beiden MLC-Seiten (die untere und die mittlere) programmiert und ihr XOR zwischengespeichert (Vorgang 1310). Dann wird die MLC-Programmierstufe auf dem Speicherchip unter Verwendung der temporären XOR-Seite gelesen (verifiziert) und decodiert (Vorgang 1320). Anschließend werden die obere und die oberste QLC-Seite programmiert (Vorgang 1230).
  • 6 ist ein Graph, welcher diese Ausführungsform der Verwendung einer herkömmlichen 3-4-4-4-Zustandscodierung (welche keinen Spielraum für ein IDL-Lesen bereitstellt) mit XOR (L, M) veranschaulicht, um ein IDL-Lesen zu unterstützen. In dieser Ausführungsform wird die herkömmliche 3-4-4-4-Abbildung verwendet, um MLC-Fein zu unterstützen, indem das XOR (L, M) im Steuerungs-Schreibpuffer gespeichert wird und diese XOR-Seite während der Fein-Stufe zum Zweck des IDL-Lesens zum NAND übertragen wird. Unter Verwendung der XOR-Seite (L, M) können wir das IDL-Lesen mit ausreichendem Spielraum durchführen. Wenn das XOR-Bit 0 ist, dann war der MLC-Zustand, der programmiert wurde (0 oder 4), und wenn das XOR-Bit 1 ist, dann ist der MLC-Zustand, der programmiert wurde (2 oder 12). Somit können wir das IDL-Lesen durchführen, indem zwei Richtungen ausgegeben werden, eine zwischen 0 und 4 und die andere zwischen 2 und 12, und das betreffende Ergebnis kann basierend auf dem XOR-Bit ausgewählt werden. Der Schreibpuffer je Chip für dieses Schema kann 64 KB * 1 str * 2 Seiten + 64 KB * Xstr * 1 Seite (XOR) = (X + 2) * 64 KB sein.
  • Schließlich kann, wie oben erwähnt, jeder geeignete Speichertyp verwendet werden. Halbleiterspeichervorrichtungen schließen flüchtige Speichervorrichtungen ein, wie etwa Dynamic Random Access Memory-Vorrichtungen („DRAM-Vorrichtungen“) oder Static Random Access Memory-Vorrichtungen („SRAM-Vorrichtungen“), nichtflüchtige Speichervorrichtungen, wie etwa Resistive Random Access Memory („ReRAM“), Electrically Erasable Programmable Read Only Memory („EEPROM“), Flash-Speicher (der auch als Untergruppe eines EEPROM betrachtet werden kann), Ferroelectric Random Access Memory („FRAM“) und Magnetoresistive Random Access Memory („MRAM“), und andere Halbleiterelemente, die Informationen speichern können. Jeder Typ von Speichervorrichtung kann unterschiedliche Konfigurationen aufweisen. Zum Beispiel können Flash-Speichervorrichtungen in einer NAND- oder NOR-Konfiguration eingerichtet sein.
  • Die Speichervorrichtungen können aus passiven und/oder aktiven Elementen in beliebigen Kombinationen gebildet sein. Als ein nicht einschränkendes Beispiel schließen passive Halbleiterspeicherelemente ReRAM-Vorrichtungselemente ein, die in einigen Ausführungsformen ein Speicherelement mit Widerstandsumschaltung, wie eine Anti-Sicherung, Phasenwechselmaterial usw., und optional ein Lenkelement, wie eine Diode usw., einschließen. Weiterhin schließen als nicht einschränkendes Beispiel aktive Halbleiterspeicherelemente EEPROM- und Flash-Speicher-Vorrichtungselemente ein, die in einigen Ausführungsformen Elemente einschließen, die einen Ladungsspeicherbereich, wie ein Floating-Gate, leitende Nanopartikel oder ein dielektrisches Material zur Ladungsspeicherung, einschließen.
  • Mehrere Speicherelemente können derart eingerichtet sein, dass sie in Reihe geschaltet sind, oder derart, dass jedes Element einzeln zugänglich ist. Als nicht einschränkendes Beispiel enthalten Flash-Speichervorrichtungen in einer NAND-Konfiguration (NAND-Speicher) üblicherweise Speicherelemente, die in Reihe geschaltet sind. Ein NAND-Speicherarray kann derart eingerichtet sein, dass das Array aus mehreren Speicherketten zusammengesetzt ist, in denen eine Kette aus mehreren Speicherelementen zusammengesetzt ist, die sich eine einzelne Bitleitung teilen und auf die als eine Gruppe zugegriffen wird. Alternativ können Speicherelemente derart eingerichtet sein, dass jedes Element einzeln zugänglich ist, z. B. ein NOR-Speicherarray. NAND- und NOR-Speicherkonfigurationen sind Beispiele, und Speicherelemente können anderweitig eingerichtet sein.
  • Die Halbleiterspeicherelemente, die in und/oder über einem Substrat angeordnet sind, können in zwei oder drei Dimensionen angeordnet sein, wie einer zweidimensionalen Speicherstruktur oder einer dreidimensionalen Speicherstruktur.
  • In einer zweidimensionalen Speicherstruktur sind die Halbleiterspeicherelemente in einer einzelnen Ebene oder einer einzelnen Speichervorrichtungsebene angeordnet. Üblicherweise sind Speicherelemente in einer zweidimensionalen Speicherstruktur in einer Ebene (z. B. in einer x-z-Richtung-Ebene) angeordnet, die sich im Wesentlichen parallel zu einer Hauptoberfläche eines Substrats erstreckt, das die Speicherelemente trägt. Das Substrat kann ein Wafer sein, über oder in dem die Schicht der Speicherelemente gebildet ist, oder es kann ein Trägersubstrat sein, das an den Speicherelementen befestigt wird, nachdem diese gebildet werden. Als ein nicht einschränkendes Beispiel kann das Substrat einen Halbleiter, wie Silizium, einschließen.
  • Die Speicherelemente können auf der einzelnen Speichervorrichtungsebene in einem geordneten Array angeordnet sein, wie in einer Vielzahl von Zeilen und/oder Spalten. Jedoch können die Speicherelemente in nicht regelmäßigen oder nicht orthogonalen Konfigurationen angeordnet sein. Die Speicherelemente können jeweils zwei oder mehr Elektroden oder Kontaktleitungen, wie Bitleitungen und Wortleitungen, aufweisen.
  • Ein dreidimensionales Speicherarray ist derart angeordnet, dass Speicherelemente mehrere Ebenen oder mehrere Speichervorrichtungsebenen belegen, wodurch eine Struktur in drei Dimensionen gebildet wird (d. h. in der x-, y- und z-Richtung, wobei die y-Richtung im Wesentlichen senkrecht ist und die x- und z-Richtungen im Wesentlichen parallel zu der Hauptoberfläche des Substrats verlaufen).
  • Als ein nicht einschränkendes Beispiel kann eine dreidimensionale Speicherstruktur vertikal als ein Stapel von mehreren zweidimensionalen Speichervorrichtungsebenen angeordnet sein. Als weiteres nicht einschränkendes Beispiel kann ein dreidimensionales Speicherarray als mehrere vertikale Spalten (z. B. Spalten, die sich im Wesentlichen senkrecht zu der Hauptoberfläche des Substrats erstrecken, d. h. in y-Richtung) angeordnet sein, wobei jede Spalte mehrere Speicherelemente in jeder Spalte aufweist. Die Spalten können in einer zweidimensionalen Konfiguration angeordnet sein, z. B. in einer x-z-Ebene, was in einer dreidimensionalen Anordnung von Speicherelementen mit Elementen auf mehreren vertikal gestapelten Speicherebenen resultiert. Andere Konfigurationen von Speicherelementen in drei Dimensionen können ebenfalls ein dreidimensionales Speicherarray bilden.
  • Als nicht einschränkendes Beispiel können in einem dreidimensionalen NAND-Speicherarray die Speicherelemente miteinander gekoppelt sein, um eine NAND-Kette innerhalb einer einzelnen horizontalen (z. B. x-y-) Speichervorrichtungsebenen zu bilden. Alternativ können die Speicherelemente miteinander gekoppelt sein, um eine vertikale NAND-Kette zu bilden, die über mehrere horizontale Speichervorrichtungsebenen verläuft. Andere dreidimensionale Konfigurationen können in Betracht gezogen werden, wobei einige NAND-Ketten Speicherelemente in einer einzelnen Speicherebene enthalten, während andere Ketten Speicherelemente enthalten, die sich über mehrere Speicherebenen erstrecken. Dreidimensionale Speicherarrays können auch als eine NOR-Konfiguration und als eine ReRAM-Konfiguration ausgelegt sein.
  • Üblicherweise werden in einem monolithischen dreidimensionalen Speicherarray eine oder mehrere Speichervorrichtungsebenen über einem einzelnen Substrat gebildet. Optional kann das monolithische dreidimensionale Speicherarray auch eine oder mehrere Speicherschichten mindestens teilweise innerhalb des einzelnen Substrats aufweisen. Als ein nicht einschränkendes Beispiel kann das Substrat einen Halbleiter, wie Silizium, einschließen. In einem monolithischen dreidimensionalen Array werden die Schichten, die jede Speichervorrichtungsebene des Arrays bilden, üblicherweise auf den Schichten der darunter liegenden Speichervorrichtungsebenen des Arrays gebildet. Jedoch können Schichten von benachbarten Speichervorrichtungsebenen eines monolithischen dreidimensionalen Speicherarrays gemeinsam genutzt werden oder Zwischenschichten zwischen Speichervorrichtungsebenen aufweisen.
  • Dann können wiederum zweidimensionale Arrays getrennt gebildet und dann zusammengepackt werden, um eine nicht monolithische Speichervorrichtung mit mehreren Speicherschichten zu bilden. Zum Beispiel können nicht monolithische gestapelte Speicher konstruiert werden, indem Speicherebenen auf separaten Substraten gebildet und dann die Speicherebenen übereinander gestapelt werden. Die Substrate können vor dem Stapeln gedünnt oder von den Speichervorrichtungsebenen entfernt werden, aber da die Speichervorrichtungsebenen anfänglich über separaten Substraten gebildet werden, sind die resultierenden Speicherarrays keine monolithischen dreidimensionalen Speicherarrays. Weiterhin können mehrere zweidimensionale Speicherarrays oder dreidimensionale Speicherarrays (monolithisch oder nicht monolithisch) auf separaten Chips gebildet und dann zusammengepackt werden, um eine gestapelte Chip-Speichervorrichtung zu bilden.
  • Eine zugehörige Schaltung ist üblicherweise für den Betrieb der Speicherelemente und für die Kommunikation mit den Speicherelementen erforderlich. Als nicht einschränkende Beispiele können Speichervorrichtungen Schaltungen aufweisen, die zum Steuern und Ansteuern von Speicherelementen verwendet werden, um Funktionen, wie Programmieren und Lesen, auszuführen. Diese zugehörige Schaltung kann sich auf demselben Substrat wie die Speicherelemente und/oder auf einem separaten Substrat befinden. Zum Beispiel kann eine Steuerung für Schreib-/Lesevorgänge des Speichers auf einem separaten Steuerungschip und/oder auf demselben Substrat wie die Speicherelemente angeordnet sein.
  • Ein Fachmann wird erkennen, dass diese Erfindung nicht auf die beschriebenen zweidimensionalen und dreidimensionalen Strukturen beschränkt ist, sondern alle relevanten Speicherstrukturen innerhalb des Wesens und Umfangs der Erfindung abdeckt, wie es hierin beschrieben ist und wie es von einem Fachmann verstanden wird.
  • Es ist beabsichtigt, dass die vorstehende detaillierte Beschreibung als eine Veranschaulichung ausgewählter Formen, die die Erfindung annehmen kann, und nicht als eine Definition der Erfindung verstanden wird. Es sind nur die folgenden Ansprüche, einschließlich aller Äquivalente, die den Umfang der beanspruchten Erfindung definieren sollen. Schließlich sei darauf hingewiesen, dass jeder Gesichtspunkt von jeder der hierin beschriebenen Ausführungsformen allein oder in Kombination miteinander verwendet werden kann.

Claims (20)

  1. Speichersystem, aufweisend: einen Speicher; und eine Steuerung, die eingerichtet ist zum: Anwenden eines Quad-Level-Cell(QLC)-3-4-4-4-Gray-Codes auf eine untere und eine mittlere Datenseite, wodurch eine Multi-Level-Cell-Gray-Codierung mit einem Spielraum eines Unterschieds von mindestens zwei Zuständen induziert wird; Programmieren der unteren und der mittleren Datenseite in dem Speicher unter Verwendung einer Multi-Level-Cell-Programmieroperation; Lesen der Programmierung der unteren und der mittleren Datenseite in dem Speicher; und Programmieren einer oberen und einer obersten Datenseite in dem Speicher, um unter Verwendung der gelesenen unteren und mittleren Seite eine Quad-Level-Cell(QLC)-Verteilung zu induzieren.
  2. Speichersystem gemäß Anspruch 1, wobei die gelesenen Daten ohne Anwendung einer Fehlerkorrektur abgerufen werden.
  3. Speichersystem gemäß Anspruch 1, wobei die untere und die mittlere Seite aus dem Speicherarray gelesen werden, ohne sie aus einem Schreibpuffer in der Steuerung abzurufen.
  4. Speichersystem gemäß Anspruch 1, wobei der Speicher einen dreidimensionalen Speicher aufweist.
  5. Speichersystem gemäß Anspruch 1, wobei das Speichersystem dafür eingerichtet ist, in den Host eingebettet zu sein.
  6. Speichersystem gemäß Anspruch 1, wobei das Speichersystem dafür eingerichtet ist, entfernbar mit einem Host verbunden zu sein.
  7. Verfahren in einem Speichersystem, welches einen Speicher und eine Steuerung umfasst, umfassend: Programmieren einer unteren und einer mittleren Datenseite in dem Speicher durch eine Multi-Level-Cell-Programmieroperation; Erzeugen eines Exklusiv-Oder der unteren und der mittleren Datenseite in dem Speicher; Lesen der Programmierung der unteren und der mittleren Datenseite in dem Speicher; Decodieren der unteren und der mittleren Datenseite unter Verwendung des Exklusiv-Oder der unteren und der mittleren Datenseite; und Programmieren einer oberen und einer obersten Datenseite in dem Speicher.
  8. Verfahren gemäß Anspruch 7, ferner umfassend Speichern des Exklusiv-Oder der unteren und der mittleren Datenseite in dem Speichersystem.
  9. Verfahren gemäß Anspruch 7, wobei das Exklusiv-Oder der unteren und der mittleren Datenseite an einer temporären Stelle in dem Speichersystem gespeichert wird.
  10. Verfahren gemäß Anspruch 7, wobei die gelesenen Daten ohne Anwendung einer Fehlerkorrektur abgerufen werden.
  11. Verfahren gemäß Anspruch 7, wobei die untere und die mittlere Seite aus dem Speicherarray gelesen werden, ohne sie aus einem Schreibpuffer in der Steuerung abzurufen.
  12. Verfahren gemäß Anspruch 7, wobei der Speicher einen dreidimensionalen Speicher umfasst.
  13. Verfahren gemäß Anspruch 7, wobei das Speichersystem dafür eingerichtet ist, in einen Host eingebettet zu sein.
  14. Verfahren gemäß Anspruch 7, wobei das Speichersystem dafür eingerichtet ist, entfernbar mit einem Host verbunden zu sein.
  15. Speichersystem, umfassend: einen Speicher; ein Mittel zum Anwenden eines Quad-Level-Cell(QLC)-3-4-4-4-Gray-Codes auf eine untere und eine mittlere Datenseite, wodurch eine Multi-Level-Cell-Gray-Codierung mit einem Spielraum eines Unterschieds von mindestens zwei Zuständen induziert wird; ein Mittel zum Programmieren der unteren und der mittleren Datenseite in dem Speicher durch eine Multi-Level-Cell-Programmieroperation; ein Mittel zum Lesen der Programmierung der unteren und der mittleren Datenseite in dem Speicher; und ein Mittel zum Programmieren einer oberen und einer obersten Datenseite in dem Speicher, um eine Quad-Level-Cell(QLC)-Verteilung zu induzieren.
  16. Speichersystem gemäß Anspruch 15, wobei die gelesenen Daten ohne Anwendung einer Fehlerkorrektur abgerufen werden.
  17. Speichersystem gemäß Anspruch 15, wobei die untere und die mittlere Seite aus dem Speicherarray gelesen werden, ohne sie aus einem Schreibpuffer in der Steuerung abzurufen.
  18. Speichersystem gemäß Anspruch 15, wobei der Speicher einen dreidimensionalen Speicher umfasst.
  19. Speichersystem gemäß Anspruch 15, wobei das Speichersystem dafür eingerichtet ist, in einen Host eingebettet zu sein.
  20. Speichersystem gemäß Anspruch 15, wobei das Speichersystem dafür eingerichtet ist, entfernbar mit einem Host verbunden zu sein.
DE102021107340.5A 2020-06-29 2021-03-24 Speichersystem und verfahren für eine ausgeglichene quad-level- cell(qlc)-codierung mit spielraum für einen internal-data-load(idl)-lesevorgang Pending DE102021107340A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/914,764 2020-06-29
US16/914,764 US11231997B2 (en) 2020-06-29 2020-06-29 Storage system and method for balanced quad-level cell (QLC) coding with margin for an internal data load (IDL) read

Publications (1)

Publication Number Publication Date
DE102021107340A1 true DE102021107340A1 (de) 2021-12-30

Family

ID=78827176

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021107340.5A Pending DE102021107340A1 (de) 2020-06-29 2021-03-24 Speichersystem und verfahren für eine ausgeglichene quad-level- cell(qlc)-codierung mit spielraum für einen internal-data-load(idl)-lesevorgang

Country Status (3)

Country Link
US (1) US11231997B2 (de)
CN (1) CN113936726A (de)
DE (1) DE102021107340A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230282294A1 (en) * 2022-03-07 2023-09-07 Western Digital Technologies, Inc. Storage System and Method for Improving Read Latency During Mixed Read/Write Operations
US12057169B2 (en) 2022-05-18 2024-08-06 Sandisk Technologies Llc Techniques for reading memory cells in a memory device during a multi-pass programming operation
US20240045611A1 (en) * 2022-08-08 2024-02-08 Micron Technology, Inc. Coding for quad-level memory cells having a replacement gate configuration

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012020278A1 (en) 2010-08-13 2012-02-16 Sandisk Il Ltd. Data coding using divisions of memory cell states
US8874994B2 (en) * 2011-07-22 2014-10-28 Sandisk Technologies Inc. Systems and methods of storing data
US8861269B2 (en) 2013-03-05 2014-10-14 Sandisk Technologies Inc. Internal data load for non-volatile storage
US8902652B1 (en) * 2014-05-13 2014-12-02 Sandisk Technologies Inc. Systems and methods for lower page writes
US20170322843A1 (en) * 2016-05-04 2017-11-09 Sandisk Technologies Inc. Multi-die data storage device with in-memory parity circuitry
JP2018005959A (ja) * 2016-06-30 2018-01-11 東芝メモリ株式会社 メモリシステムおよび書き込み方法
KR102363382B1 (ko) * 2017-09-26 2022-02-16 에스케이하이닉스 주식회사 불휘발성 메모리 장치, 불휘발성 메모리 장치의 동작 방법 및 불휘발성 메모리 장치를 포함하는 데이터 저장 장치

Also Published As

Publication number Publication date
US11231997B2 (en) 2022-01-25
CN113936726A (zh) 2022-01-14
US20210406121A1 (en) 2021-12-30

Similar Documents

Publication Publication Date Title
DE112016004760T5 (de) System und Verfahren für direktes Schreiben auf einen MLC-Speicher
DE112019005369T5 (de) Verfahren zum umschalten zwischen herkömmlicher ssd und open-channel-ssd ohne datenverlust
DE102021107340A1 (de) Speichersystem und verfahren für eine ausgeglichene quad-level- cell(qlc)-codierung mit spielraum für einen internal-data-load(idl)-lesevorgang
DE102018106154A1 (de) Faltungsoperationen in datenspeichersystemen mit einzeladressenaktualisierungen
DE102019123709A1 (de) Verwendung verschachtelter schreibvorgänge zur trennung von die-ebenen
DE112017005955T5 (de) Speichersystem und verfahren zur schlanken speicherzuweisung
DE102018123891A1 (de) Handhabung nichtabgestimmter Schreibvorgänge
DE102017128940A1 (de) System und Verfahren zum dynamischen Falten oder direkten Schreiben basierend auf Block-Störungsfreiheit in einem nichtflüchtigen Speichersystem
DE102017114078A1 (de) Fehlerabschwächung für 3d-nand-flash-speicher
DE112008001151B4 (de) Mehrbitprogrammiervorrichtung und Verfahren zum Mehrbitprogrammieren
DE112015005102T5 (de) Systeme und verfahren zum erzeugen von einem hostbefehl zugeordneten hinweisinformationen
DE102021107436A1 (de) Speichersystem und Verfahren zum direkten Quad-Level-Cell-Programmieren (QLC-Programmieren)
US10269421B2 (en) Latch caching of sequential data
DE102021115858A1 (de) Tlc-datenprogrammierung mit hybrid-parität
DE102018105871A1 (de) Speichersystem und Verfahren zur Vermeidung von Befehlskollisionen in nicht flüchtigen Datenspeichern mit expliziter Kachelgruppierung
DE112019000161T5 (de) Speicher-cache-verwaltung
DE112020000143T5 (de) Ssd-system, das einschaltzyklus-basierten read-scrub verwendet
DE112016000696B4 (de) Ablaufplanungsschema(ta) für eine Mehrchip-Speichervorrichtung
DE102021107443A1 (de) Dynamische speichersteuerung und verfahren zur verwendung damit
DE102017128941A1 (de) Speichersystem und Verfahren zur prädiktiven Blockzuweisung zur effizienten Speicherbereinigung
DE102018105277A1 (de) Auf Hamming-Abstand basierende Binärdarstellungen von Zahlen
US11442666B2 (en) Storage system and dual-write programming method with reverse order for secondary block
DE112020005502T5 (de) Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke
DE102021006246A1 (de) Doppelt verschachtelte Programmierung einer Speichervorrichtung in einem Speicher-Untersystem
DE102017120971A1 (de) Pipelineverzögerungsdetektion während des Decodierens durch eine Datenspeichereinrichtung

Legal Events

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

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE

R081 Change of applicant/patentee

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

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

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

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

R081 Change of applicant/patentee

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

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