DE102018123926A1 - Dynamische mehrstufige Decodierung - Google Patents

Dynamische mehrstufige Decodierung Download PDF

Info

Publication number
DE102018123926A1
DE102018123926A1 DE102018123926.2A DE102018123926A DE102018123926A1 DE 102018123926 A1 DE102018123926 A1 DE 102018123926A1 DE 102018123926 A DE102018123926 A DE 102018123926A DE 102018123926 A1 DE102018123926 A1 DE 102018123926A1
Authority
DE
Germany
Prior art keywords
read
read level
sequence
data
level voltages
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
DE102018123926.2A
Other languages
English (en)
Inventor
Niang-Chu CHEN
Jun Tao
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 DE102018123926A1 publication Critical patent/DE102018123926A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3746Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding
    • 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/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3707Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
    • H03M13/3715Adaptation to the number of estimated errors or to the channel state
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3738Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with judging correct decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/63Joint error correction and other techniques
    • H03M13/6325Error control coding in combination with demodulation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

Verfahren und Systeme zum Decodieren von Rohdaten können das Bestimmen einer Sequenz einer Mehrzahl von Lesepegelspannungen basierend auf früheren Decodierdaten und das Ausführen einer mehrstufigen Decodierungsoperation zum Decodieren von Rohdaten, die aus der Mehrzahl von Speicherzellen gelesen werden, unter Verwendung der bestimmten Sequenz der Mehrzahl von Lesepegelspannungen beinhalten. Decodierte Daten werden von der mehrstufigen Decodierungsoperation nach Abschluss der mehrstufigen Decodierungsoperation zurückgegeben, und die früheren Decodierdaten werden basierend auf Ergebnissen der mehrstufigen Decodierungsoperation aktualisiert.

Description

  • HINTERGRUND
  • Flash-Speicher können aufgrund von Variationen in den Speicherzellen, die zum Zeitpunkt der Herstellung entstehen, oder aufgrund von Änderungen im Verhalten, wenn die Speicherzellen altern, zu Datenfehlern bei darin gespeicherten Daten führen. Fehlerkorrekturcodes können verwendet werden, um Datenfehler während Leseoperationen zu korrigieren. Beispielsweise können Paritätsprüfungscodes niedriger Dichte (LDPC) robuste Fehlerkorrekturfähigkeiten bereitstellen. Jedoch können LDPC-Algorithmus-Codes zu unerwünschter Latenz bei Leseoperationen beitragen.
  • ZUSAMMENFASSUNG
  • Nach Aspekten der vorliegenden Technologie wird ein maschinenimplementiertes Verfahren bereitgestellt, das das Bestimmen einer Sequenz einer Mehrzahl von Lesepegelspannungen basierend auf früheren Decodierdaten und das Ausführen einer mehrstufigen Decodierungsoperation zum Decodieren von Rohdaten beinhaltet, die aus der Mehrzahl von Speicherzellen unter Verwendung der bestimmten Sequenz der Mehrzahl von Lesepegelspannungen gelesen werden. Decodierte Daten werden von der mehrstufigen Decodierungsoperation nach Abschluss der mehrstufigen Decodierungsoperation zurückgegeben, und die früheren Decodierdaten werden basierend auf Ergebnissen der mehrstufigen Decodierungsoperation aktualisiert.
  • Nach Aspekten der vorliegenden Technologie wird ein Datenspeichersystem bereitgestellt, das eine nichtflüchtiges Speichervorrichtung und eine Steuerung beinhaltet. Die Steuerung ist eingerichtet, um eine Sequenz einer Mehrzahl von Lesepegelspannungen basierend auf früheren Decodierdaten zu bestimmen und eine mehrstufige Decodierungsoperation auszuführen, um Rohdaten zu decodieren, die aus der Mehrzahl von Speicherzellen, unter Verwendung der bestimmten Sequenz der Mehrzahl von Lesepegelspannungen gelesen werden. Jede Stufe der mehrstufigen Decodierungsoperation beinhaltet das Ausführen einer oder mehrerer Decodierungsoperationen zum Decodieren von Rohdaten, die unter Verwendung einer entsprechenden Lesepegelspannung aus der Sequenz der Mehrzahl von Lesepegelspannungen, die der Stufe entsprechen, aus der Mehrzahl von Speicherzellen gelesen werden. Die Stufen der mehrstufigen Decodierungsoperation werden sequenziell ausgeführt, bis eine der einen oder mehreren Decodierungsoperationen auf einer der Stufen die aus der Mehrzahl von Speicherzellen gelesenen Rohdaten erfolgreich decodiert. Decodierte Daten werden von der mehrstufigen Decodierungsoperation nach Abschluss der mehrstufigen Decodierungsoperation zurückgegeben, und die früheren Decodierdaten werden basierend auf Ergebnissen der mehrstufigen Decodierungsoperation aktualisiert.
  • Nach Aspekten der vorliegenden Technologie wird ein prozessorlesbares Medium mit ausführbaren Anweisungen codiert, die, wenn sie von einem Prozessor ausgeführt werden, ein Verfahren durchführen. Das Verfahren beinhaltet das Bestimmen einer Sequenz einer Mehrzahl von Lesepegelspannungen basierend auf früheren Decodierdaten und das Ausführen einer mehrstufigen Decodierungsoperation zum Decodieren von Rohdaten, die aus der Mehrzahl von Speicherzellen unter Verwendung der bestimmten Sequenz der Mehrzahl von Lesepegelspannungen gelesen werden. Decodierte Daten werden von der mehrstufigen Decodierungsoperation nach Abschluss der mehrstufigen Decodierungsoperation zurückgegeben, und die früheren Decodierdaten werden basierend auf Ergebnissen der mehrstufigen Decodierungsoperation aktualisiert, indem ein Zählerwert erhöht wird, der einer Lesepegelspannung der Mehrzahl von Lesepegelspannungen entspricht, die zum Lesen der erfolgreich decodierten Rohdaten verwendet werden. Die Sequenz der Mehrzahl von Lesepegelspannungen wird basierend auf dem Zählerwert bestimmt.
  • Nach Aspekten der vorliegenden Technologie wird ein Datenspeichersystem bereitgestellt, das einen nichtflüchtigen Speicher und Mittel zum Bestimmen einer Sequenz einer Mehrzahl von Lesepegelspannungen basierend auf früheren Decodierdaten beinhaltet. Das Datenspeichersystem beinhaltet weiterhin Mittel zum Ausführen einer mehrstufigen Decodierungsoperation zum Decodieren von Rohdaten, die aus der Mehrzahl von Speicherzellen gelesen werden, unter Verwendung der bestimmten Sequenz der Mehrzahl von Lesepegelspannungen und Mitteln zum Zurückgeben von decodierten Daten von der mehrstufigen Decodierungsoperation nach Abschluss der mehrstufigen Decodierungsoperation. Das Datenspeichersystem beinhaltet weiterhin Mittel zum Aktualisieren der früheren Decodierdaten basierend auf Ergebnissen der mehrstufigen Decodierungsoperation.
  • Es versteht sich, dass andere Konfigurationen der vorliegenden Offenbarung für den Fachmann aus der folgenden detaillierten Beschreibung leicht ersichtlich werden, wobei verschiedene Konfigurationen der vorliegenden Offenbarung zur Veranschaulichung gezeigt und beschrieben werden. Es ist einleuchtend, dass die vorliegende Offenbarung andere und unterschiedliche Konfigurationen ermöglicht, und ihre verschiedenen Details ermöglichen es, in verschiedenen anderen Beziehungen modifiziert zu werden, ohne dabei vom Umfang der vorliegenden Offenbarung abzuweichen. Dementsprechend sind die Zeichnungen und die detaillierte Beschreibung als veranschaulichend und nicht als einschränkend zu betrachten.
  • Figurenliste
    • 1 ist ein Blockdiagramm, das beispielhafte Komponenten eines Datenspeichersystems nach Aspekten der vorliegenden Technologie zeigt.
    • 2 zeigt eine beispielhafte Grafik bzw. ein Diagramm, die/das vier mögliche Zellenprogrammverteilungen in einem Mehrpegelzellen-Flash-Speicher nach Aspekten der vorliegenden Technologie veranschaulicht.
    • 3 zeigt ein Flussdiagramm einer mehrstufigen Decodierungsoperation nach Aspekten der vorliegenden Technologie.
    • 4 zeigt ein Flussdiagramm eines Prozesses zum Einstellen einer mehrstufigen Decodierungsoperation nach Aspekten der vorliegenden Technologie.
  • DETAILLIERTE BESCHREIBUNG
  • Die nachstehend dargelegte detaillierte Beschreibung ist als eine Beschreibung verschiedener Konfigurationen der vorliegenden Offenbarung gedacht und soll nicht die einzigen Konfigurationen darstellen, in denen die vorliegende Offenbarung in der Praxis umgesetzt werden kann. Die beigefügten Zeichnungen sind in dieses Dokument integriert und Bestandteil der detaillierten Beschreibung. Die detaillierte Beschreibung beinhaltet spezifische Details, um ein gründliches Verständnis der vorliegenden Offenbarung zu ermöglichen. Jedoch wird für Fachleute offensichtlich sein, dass die vorliegende Offenbarung ohne diese spezifischen Details in der Praxis umgesetzt werden kann. In einigen Fällen sind Strukturen und Komponenten in Blockdiagrammform gezeigt, um zu vermeiden, dass die Konzepte der vorliegenden Offenbarung unklar werden. Gleiche Komponenten sind zum leichteren Verständnis mit identischen Elementnummern gekennzeichnet.
  • Die LDPC-Decodierung kann sich einer mehrstufigen Decodierungsoperation bedienen, um Rohdaten zu decodieren, die aus einer Gruppe von Speicherzellen in einem nichtflüchtigen Speicher, wie einem NAND-Flash-Speicher, gelesen werden. Die Rohdaten, die in jeder Stufe der Decodierungsoperation verarbeitet werden, können aus den Speicherzellen unter Verwendung einer jeweiligen Lesepegelspannung aus einer Sequenz von verschiedenen Lesepegelspannungen gelesen werden. Jede Stufe kann eine harte Decodierungsoperation an den Rohdaten und/oder eine oder mehrere weiche Decodierungsoperationen an den Rohdaten ausführen. Die mehrstufige Decodierungsoperation kann jeweils eine Stufe in einer Sequenz ausführen, bis die aus den Speicherzellen gelesenen Rohdaten erfolgreich decodiert sind.
  • Speicherzellen in demselben Block, derselben Gruppe von Blöcken, demselben Modul oder derselben Modulcharge können gemeinsame Merkmale aufweisen, die zu Ähnlichkeiten bei Lesefehlern führen, die beim Lesen von Daten aus dem Block, der Gruppe von Blöcken, dem Modul oder der Modulcharge auftreten. Lesefehler, die beim Lesen von Daten aus Speicherzellen eines ähnlichen Lebensalters auftreten, können ebenfalls Ähnlichkeiten haben. Die vorliegende Technologie nutzt diese Ähnlichkeiten, um die mehrstufige Decodierungsoperation durch Verfolgen der Stufe und der entsprechenden Lesepegelspannung zu verbessern, bei der frühere Decodierungsoperationen die aus Speicherzellen gelesenen Rohdaten erfolgreich decodiert haben. Lesefehler, die in anderen ähnlich beschaffenen Speicherzellen auftreten, können unter Verwendung einer Sequenz von Lesepegelspannungen basierend auf früheren erfolgreichen Decodierungsoperationen, die die mehrstufige Decodierungsoperation verkürzen können, wiederhergestellt werden. Wie nachstehend detaillierter besprochen, modifiziert die vorliegende Technologie die mehrstufige Decodierungsoperation durch Bestimmen einer Sequenz von Lesepegelspannungen basierend auf früheren Decodierdaten, die anzeigen, welche Lesepegelspannungen verwendet wurden, um Rohdaten in früheren Lesevorgängen erfolgreich zu decodieren. Das Anordnen der Lesepegelspannungen in einer Sequenz basierend auf früheren erfolgreichen Leseoperationen ermöglicht es, dass Lesepegelspannungen mit einer höheren Wahrscheinlichkeit einer erfolgreichen Decodierung früher in der Sequenz angeordnet werden, während Lesepegelspannungen mit einer geringeren Wahrscheinlichkeit einer erfolgreichen Decodierung an eine weiter hinten liegende Stelle der Sequenz gerückt werden. Auf diese Weise wird die Sequenz von Lesepegelspannungen basierend auf Leseoperationen optimiert, wenn die Speicherzellen altern oder sich die Betriebsbedingungen verändern.
  • 1 ist ein Blockdiagramm, das beispielhafte Komponenten eines Datenspeichersystems 100 nach Aspekten der vorliegenden Technologie zeigt. Das Datenspeichersystem 100 beinhaltet eine Steuerung 102, eine Paritätsprüf-Engine (LDPC) mit niedriger Dichte 104, ein Speichermedium 106 und ein Flash-Speichervorrichtungs-Array 108. Wie in 1 dargestellt, kann das Datenspeichersystem 100 mit einer Host-Vorrichtung 110 über eine Host-Schnittstelle 112 verbunden sein.
  • Die Steuerung 102 kann mehrere interne Komponenten, wie einen oder mehrere Prozessoren 103, einen Nur-Lese-Speicher, eine Flash-Komponentenschnittstelle (beispielsweise einen Multiplexer zum Verwalten von Befehls- und Datentransport entlang einer Verbindung zu dem Flash-Speichervorrichtungs-Array 108), eine E/A-Schnittstelle, eine Fehlerkorrekturschaltung und dergleichen, beinhalten. Der Prozessor 103 der Steuerung 102 kann den Betrieb der Komponenten in der Datenspeichersteuerung 102 überwachen und steuern. Der Prozessor 103 und/oder die Steuerung 102 kann ein Mehrkernprozessor, ein Allzweck-Mikroprozessor, ein Mikrocontroller, ein digitaler Signalprozessor (DSP), ein anwendungsspezifischer integrierter Schaltkreis (ASIC), ein programmierbarer Logikbaustein (PLD), eine Steuerung, ein Zustandsautomat, ein Logikgatter, diskrete Hardwarekomponenten oder eine Kombination der Vorstehenden sein. Eines oder mehrere Elemente der Steuerung 102 können in einem einzelnen Chip integriert sein. In anderen Aspekten können die Elemente in zwei oder mehr diskreten Komponenten implementiert sein.
  • Die Steuerung 102 kann eingerichtet sein, um Code oder Anweisungen auszuführen, um die hierin beschriebenen Operationen und Funktionen durchzuführen. Zum Beispiel kann die Steuerung 102 eingerichtet sein, um Operationen zum Verwalten von Anforderungsfluss- und Adressenabbildungen durchzuführen und um Berechnungen durchzuführen und Befehle zu erzeugen. Eine oder mehrere Sequenzen von Anweisungen können als Firmware in Speicher in der Steuerung 102 gespeichert sein. Eine oder mehrere Sequenzen von Anweisungen können gespeicherte Software sein, die von dem Speichermedium 106 und dem Flash-Speichervorrichtungs-Array 108 gelesen wird oder von der Host-Vorrichtung 110 empfangen wird (zum Beispiel über die Host-Schnittstelle 112). Speichermedium 106 und Flash-Speichervorrichtungs-Array 108 stellen Beispiele von maschinen- oder computerlesbaren Medien dar, auf denen Anweisungen/Code, die durch die Steuerung 102 ausführbar sind, gespeichert werden können. Die Begriffe maschinen- oder computerlesbare Medien können allgemein jedes materielle und nicht-flüchtige Medium oder jeden Datenträger bezeichnen, das/der verwendet wird, um Anweisungen an die Steuerung 102 bereitzustellen, einschließlich sowohl flüchtiger Medien, wie beispielsweise dynamischer Speicher, der für Speichermedien 102 oder für Puffer in der Steuerung 102 verwendet wird, als auch nichtflüchtige Medien, wie elektronische Medien, optische Medien und magnetische Medien. Die hierin beschriebenen Operationen und Funktionen können auch unter Verwendung zum Beispiel von logischen Schaltungen in Hardware oder einer Kombination von Hardware und Software/Firmware implementiert sein.
  • Nach einigen Aspekten stellt Speichermedium 106 flüchtigen Speicher dar, der zum temporären Speichern von Daten und Informationen verwendet wird, die dazu dienen, das Datenspeichersystem 100 zu verwalten. Nach Aspekten der vorliegenden Offenbarung ist das Speichermedium 106 ein Speicher mit wahlfreiem Zugriff (RAM), wie ein RAM mit doppelter Datenrate (DDR). Andere Typen von RAM können auch verwendet werden, um das Speichermedium 106 zu implementieren. Das Speichermedium 106 kann unter Verwendung eines einzelnen RAM-Moduls oder mehrerer RAM-Module implementiert werden. Während das Speichermedium 106 als von der Steuerung 102 verschieden dargestellt ist, versteht es sich, dass das Speichermedium 106 in die Steuerung 102 integriert sein kann, ohne vom Umfang der vorliegenden Offenbarung abzuweichen. Alternativ kann das Speichermedium 106 ein nichtflüchtiger Speicher sein, wie eine Magnetplatte, ein Flash-Speicher, ein Peripherie-SSD und dergleichen.
  • Die Hostschnittstelle 112 ist eingerichtet, um mit der Host-Vorrichtung 110 gekoppelt zu werden, um Daten von der Host-Vorrichtung 110 zu empfangen und Daten an diese zu senden. Die Host-Schnittstelle 112 kann sowohl elektrische als auch physische Verbindungen enthalten, um die Host-Vorrichtung 110 betriebsmäßig mit der Steuerung 102 zu koppeln. Die Host-Schnittstelle 112 ist eingerichtet, um Daten, Adressen und Steuersignale zwischen der Host-Vorrichtung 110 und der Steuerung 102 zu kommunizieren. Auf diese Weise ist die Steuerung 102 so eingerichtet, dass sie in Reaktion auf einen Schreibbefehl von der Hostvorrichtung 110 von der Hostvorrichtung 102 empfangene Daten im Flash-Speichervorrichtungs-Array 108 speichert und im Flash-Speichervorrichtungs-Array 108 gespeicherte Daten liest und die gelesenen Daten als Reaktion auf einen Lesebefehl von der Hostvorrichtung 110 über die Hostschnittstelle 112 an die Hostvorrichtung 110 überträgt.
  • Die Hostvorrichtung 110 stellt jede Vorrichtung dar, die eingerichtet ist, um mit dem Datenspeichersystem 110 gekoppelt zu werden und Daten in dem Datenspeichersystem 100 zu speichern. Die Hostvorrichtung 110 kann ein Rechensystem, wie ein Personalcomputer, ein Server, eine Workstation, ein Laptop-Computer, ein PDA, ein Smartphone und dergleichen, sein. Alternativ kann die Hostvorrichtung 110 eine elektronische Vorrichtung, wie eine Digitalkamera, ein digitaler Audioplayer, ein digitaler Videorecorder und dergleichen, sein.
  • Wie ferner in 1 dargestellt, können die Host-Vorrichtung 110 und das Datenspeichersystem 100 über einen Bus 114 miteinander kommunizieren. Der Bus 114 und die Schnittstelle 112 können geeignete Schnittstellenstandards verwenden, einschließlich, aber nicht beschränkt auf Serial Advanced Technology Attachment (SATA), Advanced Technology Attachment (ATA), Small Computer System Interface (SCSI), PCI-extended (PCI-X), Fibre Channel, Serial Attached SCSI (SAS), Secure Digital (SD), Embedded Multi-Media Card (EMMC), Universal Flash Storage (UFS) und Peripheral Component Interconnect Express (PCIe).
  • Das Datenspeichersystem 100 kann einen internen Systembus 115 beinhalten. Der Systembus 115 kann eine Kombination aus einem Steuerbus, Adressbus und Datenbus beinhalten und die Komponenten der Steuerung 102 (z. B. einen darin befindlichen Prozessor und/oder Speicher) mit anderen Komponenten des Datenspeichersystems 100 verbinden, einschließlich der Speicher-LDPC-Engine 104, des Speichermediums 106, des Flash-Speichervorrichtungs-Arrays 108 und der Host-Schnittstelle 112. Daten können zwischen den verschiedenen Komponenten über den Systembus 115 übertragen werden. Der Systembus 115 kann sich teilweise außerhalb und teilweise innerhalb der Steuerung 102 befinden.
  • Die Hostvorrichtung 110 und das Datenspeichersystem 100 können über eine verdrahtete oder drahtlose Verbindung miteinander kommunizieren und können lokal oder entfernt voneinander sein. Nach einem oder mehreren anderen Aspekten beinhaltet das Datenspeichersystem 100 (oder die Host-Schnittstelle 112) einen drahtlosen Transceiver, um das Host-Gerät 110 und das Datenspeichersystem 100 in drahtlose Kommunikation miteinander zu bringen.
  • Die Steuerung 102 kann eingerichtet sein, um Daten und/oder Speicherzugriffsbefehle von einem Speicherschnittstellenmodul 116 (z. B. einem Gerätetreiber) der Host-Vorrichtung 110 zu empfangen. Von der Speicherschnittstelle 116 kommunizierte Speicherzugriffsbefehle können von dem Host-System 110 ausgegebene Schreib- und Lesebefehle beinhalten. Lese- und Schreibbefehle können eine logische Adresse (z. B. logische Blockadressen oder LBAs) vorgeben, die verwendet wird, um auf Daten zuzugreifen, die in dem Datenspeichersystem 100 gespeichert sind. Die Steuerung 102 kann Befehle in dem Flash-Speichervorrichtungs-Array 108 als Reaktion auf Befehle ausführen, die von dem Speicherschnittstellenmodul 116 empfangen werden.
  • Das Flash-Speichervorrichtungs-Array 108 kann mehrere Flash-Speichervorrichtungen 118 enthalten. Eine Flash-Speichervorrichtung 118 stellt eien nichtflüchtige Speichervorrichtung zum Speichern von Daten dar. Nach Aspekten der vorliegenden Technologie enthält die Flash-Speichervorrichtung 118 beispielsweise einen NAND-Flash-Speicher. Jede Flash-Speichervorrichtung 118 kann einen einzelnen Flash-Speicherchip oder ein -Modul beinhalten, oder kann mehrere Flash-Speicherchips oder -Module beinhalten. Zum Beispiel können in einem Flash-Speichervorrichtungs-Array 108 einige der Flash Speichervorrichtungen 118 ein Flash-Modul aufweisen, während andere mehr als ein Flash-Modul aufweisen können. Die Flash-Speichervorrichtung 118 ist nicht auf irgendeine bestimmte Kapazität oder Konfiguration beschränkt. Zum Beispiel können die Anzahl physischer Blöcke, die Anzahl physischer Seiten pro physischem Block, die Anzahl von Sektoren pro physischer Seite und die Größe der Sektoren innerhalb des Umfangs der vorliegenden Technologie variieren.
  • Das Flash-Speichervorrichtungs-Array 108 kann in mehreren Kanälen angeordnet sein, wobei jeder Kanal eine oder mehrere Flash-Speichervorrichtungen 118 aufweist. Eine Flash-Speichervorrichtung 118 kann eine oder mehrere Flash-Speicherschnittstellen (nicht dargestellt) enthalten. Jede Flash-Speicherschnittstelle verbindet die Steuerung 102 über einen entsprechenden Kanal mit einer der Flash-Speichervorrichtungen. Jeder der Kanäle (nicht dargestellt) kann unter Verwendung von einem oder mehreren physischen E/A-Bussen implementiert werden, die zwischen einer der Flash-Speicherschnittstellen und der/den entsprechenden Flash-Vorrichtung(en) gekoppelt sind. Jeder Kanal ermöglicht der entsprechenden Flash-Speicherschnittstelle, Lese-, Schreib- und/oder Löschbefehle an die entsprechende Flash-Speichervorrichtung zu senden. Jede Flash-Speicherschnittstelle kann ein Register (z. B. First-In-First-Out- (FIFO) -Register) beinhalten, das Lese-, Schreib- und/oder Löschbefehle von der Steuerung 102 für die entsprechende Flash-Speichervorrichtung in einer Warteschlange anordnet. Obwohl der Begriff „Kanal“, wie vorstehend verwendet, sich auf den Bus bezieht, der zwischen einer Flash-Speicherschnittstelle und der entsprechenden Flash-Speichervorrichtung gekoppelt ist, kann sich der Begriff „Kanal“ auch auf die entsprechende Flash-Speichervorrichtung beziehen, die durch einen Bus (z. B. Systembus 115) adressierbar ist.
  • Die Flash-Speichervorrichtungen 118 können eine Standardschnittstellenspezifikation haben. Dieser Standard stellt sicher, dass Chips von mehreren Herstellern austauschbar (zumindest in einem hohen Maß) verwendet werden können. Die Schnittstelle der Flash-Speichervorrichtungen 118 kann verwendet werden, um auf interne Register 120 und einen internen Flash-Controller 122 zuzugreifen. Nach einigen Aspekten können die Register 120 Adress-, Befehls- und/oder Datenregister enthalten, die intern die notwendigen Daten zu und von einem NAND-Speicherzellen-Array 124 abrufen und ausgeben. Beispielsweise kann das Speicherzellen-Array 124 einen Einzelpegelzellenspeicher (SLC), einen Mehrpegelzellenspeicher (MLC), eine Dreipegelzellenspeichervorrichtung (TLC) usw. aufweisen, und in einigen Aspekten kann das Flash-Speichervorrichtungs-Array 108 eine oder mehrere Hybridspeichervorrichtungen aufweisen, die in einem oder mehreren von einem SLC-, MLC- oder TLC-Modus arbeiten können. Andere Typen von Flash-Speichern, wie beispielsweise ein 3D-NAND-Flash-Speicher, werden auch in der vorliegenden Technologie in Betracht gezogen.
  • Ein Datenregister (z. B. der Register 120) kann Daten beinhalten, die in dem Speicherzellen-Array 124 gespeichert werden sollen, oder Daten nach einem Abruf aus dem Speicherzellen-Array 124, und kann auch zur temporären Datenspeicherung verwendet werden und/oder wie ein Puffer wirken. Ein Adressenregister kann die Speicheradresse speichern, von der Daten an die Host-Vorrichtung 110 abgerufen werden, oder die Adresse, an die Daten gesendet und gespeichert werden. Nach einigen Aspekten ist ein Befehlsregister enthalten, um die Parität, die Unterbrechungssteuerung und dergleichen zu steuern. Nach einigen Aspekten ist die interne Flash-Steuerung 122 über ein Steuerregister zugänglich, um das allgemeine Verhalten der Flash-Speichervorrichtung 118 zu steuern. Der interne Flash-Controller 122 und/oder das Steuerregister können die Anzahl von Stoppbits, Wortlänge, Empfänger-Taktquelle steuern und können auch das Umschalten des Adressiermodus, der Paging-Steuerung, Coprozessorsteuerung und dergleichen steuern.
  • Die LDPC-Engine 104 stellt eine oder mehrere Komponenten dar, die eingerichtet sind, um Codewörter zu codieren und/oder zu decodieren, die in dem Flash-Speichervorrichtungs-Array 108 gespeichert und/oder aus diesem gelesen werden sollen. Die LDPC-Engine 104 kann einen Codierer und einen Decodierer einschließen. Der Decodierer kann einen harten Decodierer und einen Soft-Decision-ECC-Decodierer einschließen. Die LDPC-Engine 104 kann die von der Hostvorrichtung 100 empfangenen Daten in Codewörter codieren und Codewörter aus dem Flash-Speicher-Array 118 vor dem Senden der decodierten Daten an den Host decodieren. Bei einigen Implementierungen kann die LDPC-Engine 104 eine oder mehrere Speichervorrichtung(en) und/oder eine oder mehrere Prozessoreinheiten aufweisen, die verwendet werden, um eine Fehlerkorrektur durchzuführen (z. B. unter Verwendung von LDPC oder Turbocodes). Die LDPC-Engine 104 kann auch ein weiches Informationsmodul beinhalten, das Soft-Metrik-Eingaben für Codier- und Decodierungsoperationen bestimmt und/oder beibehält. Während die LDPC-Engine 104 als von der Steuerung 102 verschieden dargestellt ist, versteht es sich, dass die LDPC-Engine 104 in die Steuerung 102 integriert sein kann, ohne vom Umfang der vorliegenden Offenbarung abzuweichen.
  • 2 zeigt eine beispielhafte Grafik ein Diagramm, die/das vier mögliche Zellenprogrammverteilungen in einem Mehrpegelzellen-(MLC) Flash-Speicher nach Aspekten der vorliegenden Technologie veranschaulicht. Wie dargestellt, können MLC-NAND-Zellen auf eine(n) von vier unterschiedlichen Zuständen oder Programmebenen L0, L1, L2 und L3 programmiert werden, was zwei logische Informationsbits pro Zelle ergibt: das höchstwertige Bit (MSB) und das niedrigstwertige Bit (LSB). Wenn Speicherzellen gelesen oder programmiert werden, können diese zwei Bits entsprechende MSB- und LSB-Seiten einer Wordline in einem Speicherblock bilden. Die Programmebenen L0 und L1 können einem logischen LSB-Bitwert von „eins“ entsprechen, und die Programmebenen L2 und L3 können einem logischen LSB-Bitwert von „null“ entsprechen. Obwohl in 2 nicht angegeben, können die Programmebenen L0 und L3 einem logischen MSB-Bitwert von „eins“ entsprechen, und die Programmebenen L1 und L2 können einem logischen MSB-Bitwert von „null“ entsprechen.
  • Um Rohdaten aus den Speicherzellen auszulesen, wird eine Lesepegelspannung an die Speicherzellen angelegt und Speicherzellen mit einer Schwellenspannung (Vt) auf oder unter der angelegten Lesepegelspannung, die sich daher aktivieren oder leiten, werden als Bestandteil einer Programmverteilung unter der Lesepegelspannung betrachtet; und solche Speicherzellen mit einer Schwellenspannung über der Lesepegelspannung, die sich daher nicht aktivieren oder leiten, werden als in einer Programmverteilung über der Lesepegelspannung befindlich betrachtet. Zum Beispiel zeigt 2 eine Lesepegelspannung C, die an eine Gruppe von Speicherzellen angelegt werden kann, um zu bestimmen, welche Zellen entweder auf der L0- oder L1- Programmebene entsprechend einem logischen LSB-Bitwert von „eins“ oder der L2- oder L3- Programmebene entsprechend einem logischen LSB-Bitwert von „null“ programmiert sind.
  • Wenn der Flash-Speicher zyklisch geschaltet (d. h. wiederholt programmiert und gelöscht) wird, ändern sich seine physischen Qualitäten. Beispielsweise kann das wiederholte Platzieren und Entfernen von Elektronen auf dem Floating-Gate während Programmierungs- bzw. Löschvorgängen bewirken, dass einige Elektronen in dem Floating-Gate der Vorrichtung eingefangen werden. Die Schwellenspannungen dieser Speicherzellen können schließlich Werte annehmen, die anders (höher oder niedriger) als erwartete Werte sind, was bewirkt, dass sich die Zellprogrammierungsverteilungen letztendlich zu überlappen beginnen und beim Lesen der Daten Lesefehler verursachen.
  • Um eine Wahrscheinlichkeit zu bestimmen, dass die Speicherzellen tatsächlich auf die beobachteten mutmaßlichen Programmebenen programmiert wurden (d. h. Rohdaten lesen), können mehrere Leseoperationen als Teil einer mehrstufigen Decodierungsoperation eingeleitet werden. Beispielsweise können die Speicherzellen auf einer ersten Stufe mit der Lesepegelspannung C, auf einer zweiten Stufe mit der Lesepegelspannung LL, auf einer dritten Stufe mit dem Lesepegel RR usw. gelesen werden. Die Sequenz von Lesepegelspannungen richtet mehrere Programmbereiche ein, die verwendet werden können, um die aus den Speicherzellen ausgelesenen Rohdatenwerte für weiche Decodierung zu kategorisieren, sofern das harte Decodieren der Rohdaten fehlschlägt.
  • Auf einer ersten Stufe der mehrstufigen Decodierungsoperation können zwei Programmbereiche definiert werden. Ein erster Programmbereich enthält Zellen mit einem programmierten Wert auf oder unter der Lesepegelspannung C und ein zweiter Programmbereich enthält Zellen mit einem programmierten Wert über der Lesepegelspannung C. Auf der zweiten Stufe der mehrstufigen Decodierungsoperation können drei Programmbereiche definiert werden, indem die Rohdaten, die unter Verwendung der Lesepegelspannung C gelesen werden, mit Rohdaten aggregiert werden, die unter Verwendung der Lesepegelspannung LL gelesen werden. Insbesondere kann ein erster Programmbereich Zellen mit einem programmierten Wert auf oder unter der Lesepegelspannung LL einschließen, ein zweiter Programmbereich kann Zellen mit einem programmierten Wert über der Lesepegelspannung LL und auf oder unter der Lesepegelspannung C einschließen, und ein dritter Programmbereich kann Zellen mit einem programmierten Wert über der Lesepegelspannung C einschließen. Jede nachfolgende Stufe in der mehrstufigen Decodierungsoperation aggregiert Rohdaten, die unter Verwendung der Lesepegelspannung entsprechend der Stufe gelesen werden, wobei die in den vorhergehenden Stufen zum Definieren von zusätzlichen Programmbereichen gelesenen Rohdaten den Bereichen von Programmwerten zwischen den verschiedenen Lesepegelspannungen entsprechen. Die vorliegende Technologie ist nicht auf die Anzahl der in 2 dargestellten Lesepegelspannungen oder auf die in 2 angegebene Lesereihenfolge zum Anlegen der Lesepegelspannungen auf die jeweiligen Stufen der mehrstufigen Decodierungsoperation beschränkt. Außerdem können ähnliche Sequenzen von Lesepegelspannungen zum Lesen der MSB-Bitwerte in den Bereichen zwischen den L0- und L1-Programmebenen und zwischen den L2- und L3-Programmebenen verwendet werden.
  • Nach Aspekten der vorliegenden Technologie können Konfidenzwerte den jeweiligen Programmbereichen oder „Bins“ zur Verwendung in weichen Decodierungsoperationen zugewiesen werden. Konfidenzwerte können Log-Likelihood-Verhältnisse (LLRs) beinhalten. In Anwendungen von Paritätsprüfungen niedriger Dichte (LDPC) kann ein binäres LLR den Logarithmus eines Verhältnisses zwischen der Wahrscheinlichkeit, dass ein Bit „0“ oder „1“ ist, einschließen. Ein positives LLR kann anzeigen, dass ein von der Speicherzelle gelesenes Signal wahrscheinlich ein 0-Bit sein kann, und ein negatives LLR kann anzeigen, dass das von der Speicherzelle gelesene Signal wahrscheinlich ein 1-Bit sein kann. In einigen Beispielen kann es wahrscheinlicher sein, dass ein Bitwert mit einem zugewiesenen LLR gleich fünf ein erster vorbestimmter Wert (z. B. binär „0“) ist als ein Bitwert, der ein zugewiesenes LLR gleich einem zweiten vorbestimmten Wert (z. B. binär „1“) ist. Ein Bitwert mit einem zugewiesenen LLR gleich Null kann mit gleicher Wahrscheinlichkeit einer von beiden vorbestimmten Werten sein. Ein LLR kann auch durch einen nicht binären Konfidenzvektor mit einer Gruppe von Komponentenwerten dargestellt werden.
  • Wie vorstehend vorgestellt, definiert jede Stufe des mehrstufigen Decodierprozesses einen Satz von Programmbereichen oder Bins. Jeder Satz von Programmbereichen oder Bins weist einen Satz von Konfidenzwerten (z. B. LLR-Werte) auf, die den jeweiligen Programmbereichen oder Bins des Satzes entsprechen. Diese Konfidenzwerte können als Decodierinformationen bezeichnet werden und können in jeweiligen Tabellen oder anderen Datenstrukturen gespeichert werden, die abgerufen werden, wenn weiche Decodierungsoperationen auf jeder der Stufen durchgeführt werden.
  • Nach verschiedenen Implementierungen kann die LDPC-Engine 104 bei Durchführung von Decodierungsoperationen unterschiedliche Sätze von Decodierinformationen und unterschiedliche Anordnungen der Sätze von Decodierinformationen für jede Decodierstufe verwenden. Weiterhin können unterschiedliche Sätze von Decodierinformationen basierend auf dem Alter eines jeweiligen Blocks (der jeweiligen Blöcke) der Speichervorrichtung verwendet werden. Zum Beispiel kann das Alter eines Blocks (von Blöcken) auf einer Anzahl von Programmier-/Löschzyklen in Verbindung mit dem Block basieren, und es kann eine andere Gruppe von Sätzen zum Decodieren von Informationen für jeden vorbestimmten Bereich der Programmier-/Löschzyklen (und/oder jedem gelesenen Pegel) geben. Nach Aspekten der vorliegenden Technologie kann jede Stufe der Decodierung mehrere Sätze von Decodierinformationen (z. B. drei) verwenden, wobei separate Soft-Decodierungsoperationen unter Verwendung entsprechender Sätze von Decodierinformationen durchgeführt werden.
  • 3 zeigt ein Flussdiagramm einer mehrstufigen Decodierungsoperation nach Aspekten der vorliegenden Technologie. Die mehrstufige Decodierungsoperation kann als Reaktion auf einen Lesebefehl, der von dem Host-System 110 empfangen wird, oder als Reaktion auf eine interne Datenverwaltungsoperation, die durch die Steuerung 102 ausgeführt wird, initiiert werden. Beim Einleiten der mehrstufigen Decodierungsoperation wird eine Lesepegelspannung für die Flash-Speichervorrichtung 118, aus der angeforderte Daten auszulesen sind, nach einer Sequenz von Lesepegelspannungen eingestellt (Block 300). Anfangs kann die Lesepegelspannung auf die Lesepegelspannung C eingestellt werden. Die Lesepegelspannung kann durch Programmieren eines Registers in der Flash-Speichervorrichtung mit einem Wert entsprechend der Lesepegelspannung C eingestellt werden.
  • Nach Einstellen des Lesepegelspannungswerts werden Rohdaten aus einer Gruppe von Speicherzellen unter Verwendung der eingestellten Lesepegelspannung gelesen und die Rohdaten werden an einen harten Decodierer in der LDPC-Engine 104 weitergeleitet, um eine harte Decodierungsoperation an den Rohdaten auszuführen (Block 305). Wenn die harte Decodierungsoperation die Rohdaten erfolgreich decodiert hat (Block 310), werden die decodierten Daten an den anfordernden Prozess zurückgegeben (Block 315). Wenn die harte Decodierungsoperation nicht erfolgreich ist, werden weiche Decodierinformationen ausgewählt (Block 320) und die Rohdaten werden zusammen mit den weichen Decodierinformationen an einen Soft-Decision-Decodierer in der LDPC-Engine 104 weitergegeben, um unter Verwendung der Rohdaten und der ausgewählten Soft-Decodierinformationen eine weiche Decodierungsoperation auszuführen (Block 325).
  • Wenn die weiche Decodierungsoperation die Rohdaten erfolgreich decodiert hat (Block 330), werden die decodierten Daten an den anfordernden Prozess zurückgegeben (Block 315). Wenn die weiche Decodierungsoperation nicht erfolgreich ist, bestimmt der Prozess, ob ein weiterer weicher Schritt oder eine weiche Decodierungsoperation auf der aktuellen Stufe der mehrstufigen Decodierungsoperation verbleibt (Block 335). Nach Aspekten der vorliegenden Technologie kann jede Stufe der mehrstufigen Decodierungsoperation eine harte Decodierungsoperation und bis zu mehrere weiche Decodierungsoperationen beinhalten. Jede der weichen Decodierungsoperationen verwendet einen entsprechenden Satz von weichen Decodierinformationen, die der aktuellen Stufe entsprechen. Jeder Satz von weichen Decodierinformationen kann unter Verwendung von Test- oder Simulationsdaten basierend auf unterschiedlichen Bedingungen und Annahmen bestimmt oder berechnet werden. Wenn die weiche Decodierung unter Verwendung eines ersten Satzes von weichen Decodierinformationen nicht erfolgreich ist, kann die weiche Decodierungsoperation unter Verwendung derselben Rohdaten, jedoch mit einem zweiten ausgewählten Satz von weichen Decodierinformationen wiederholt werden (Block 320). Dieser Regelkreis von weichen Decodierungsoperationen kann wiederholt werden, bis entweder die Rohdaten erfolgreich decodiert sind oder alle Sätze von weichen Decodierinformationen, die der aktuellen Stufe zugeordnet sind, in weichen Decodierversuchen verwendet worden sind. Nach Aspekten der vorliegenden Technologie kann jede Stufe drei Sätze von weichen Decodierinformationen haben, mit denen eine weiche Decodierung von Rohdaten versucht wird. Jedoch kann die vorliegende Technologie unter Verwendung von mehr oder weniger als drei Sätzen von weichen Decodierinformationen für jede Stufe implementiert werden.
  • Wenn keine weichen Schritte oder weichen Decodierungsoperationen für die aktuelle Stufe verbleiben (Block 335), bestimmt die Operation, ob in der mehrstufigen Decodierungsoperation eine weitere Stufe verbleibt (Block 340). Die mehrstufige Decodierungsoperation kann bis zu sieben Stufen einschließen, entsprechend der Sequenz von sieben Lesepegelspannungen, die beispielsweise in 2 dargestellt sind. Wenn eine weitere Stufe in der Operation verbleibt, wird die nächste Lesepegelspannung in der Sequenz eingestellt (Block 300) und die vorstehend beschriebenen Stufenoperationen wiederholen sich. Dieser Regelkreis von harten und weichen Decodierungsoperationen wiederholt sich, bis entweder die Rohdaten erfolgreich decodiert und zum anfordernden Prozess zurückgegeben sind (Block 315) oder alle harten und weichen Decodierungsoperationen auf jeder der Stufen nicht erfolgreich sind. Wenn die Decodierung nicht erfolgreich ist, wird ein Lesefehler an den anfordernden Prozess zurückgegeben (Block 345).
  • 4 zeigt ein Flussdiagramm einer dynamischen Anpassung einer mehrstufigen Decodierungsoperation nach Aspekten der vorliegenden Technologie. Analog zu dem vorstehend mit Bezug auf 3 beschriebenen Prozess kann die in 4 dargestellte Operation als Reaktion auf einen Lesebefehl, der von dem Host-System 110 empfangen wird, oder als Reaktion auf eine interne Datenverwaltungsoperation, die durch die Steuerung 102 ausgeführt wird, initiiert werden.
  • Nach Aspekten der vorliegenden Technologie wird eine Sequenz von Lesepegelspannungen basierend auf früheren Decodierdaten bestimmt (Block 400). Die früheren Decodierdaten enthalten Informationen darüber, welche Stufen und entsprechende Lesepegelspannungen beim Decodieren der Rohdaten erfolgreich waren, die von der Flash-Speichervorrichtung 118 während früherer Decodierungsoperationen gelesen wurden. Die früheren Decodierdaten können ein Array von Zählern entsprechend den Lesepegelspannungen aufweisen, wobei jeder Zähler einen Zählerwert enthält, der eine Anzahl von Decodierungsoperationen angibt, die unter Verwendung der jeweiligen Lesepegelspannung erfolgreich durchgeführt wurden. Zum Beispiel kann das Array von Zählern sieben Zähler aufweisen, die den sieben Lesepegelspannungen entsprechen, die in 2 dargestellt sind (z. B. C, LL, RR, L, R, LLL, RRR). Die in 2 angegebene Lesereihenfolge stellt eine Standardsequenz von Lesepegelspannungen dar, die zu Beginn der Lebensdauer für die DatenSpeichervorrichtung 100 oder einige andere Stufen der Initialisierung verwendet werden.
  • Um die Sequenz von Lesepegelspannungen zu bestimmen, kann die Steuerung 102 das Array von Zählern entsprechend den Zählerwerten in dem Array vom größten Wert zum kleinsten Wert sortieren oder ordnen. Das sortierte Array von Zählern gibt eine Reihenfolge der Lesepegelspannungen an, entsprechend der Lesepegelspannungen bei Decodierungsoperationen erfolgreicher waren. Zum Beispiel kann die Lesepegelspannung L den höchsten entsprechenden Zählerwert haben, gefolgt von Lesepegelspannungen RR, C , LL, R, LLL und RRR Dementsprechend wäre die bestimmte Sequenz von Lesepegelspannungen L, RR, C, LL, R, LLL und RRR, die anschließend in der mehrstufigen Decodierungsoperation angewendet wird, die vorstehend mit Bezug auf 2 beschrieben ist (Block 405). Beim Sortieren des Zählerarrays können Zähler, die den gleichen Zählerwert enthalten, in derselben Reihenfolge relativ zueinander verbleiben wie in der Standardsequenz von Lesepegelspannungen.
  • Nach Abschluss der mehrstufigen Decodierungsoperation werden die früheren Decodierdaten aktualisiert, um die Lesepegelspannung der Decodierstufe widerzuspiegeln, die die Rohdaten erfolgreich decodiert hat (Block 410). Beispielsweise wird der Zähler in dem Zählerfeld, der der auf der erfolgreichen Decodierstufe verwendeten Lesepegelspannung entspricht, um eins erhöht.
  • Das Sortieren oder Ordnen des Zählerarrays und das Bestimmen der Folge von Lesepegelspannungen basierend auf dem geordneten Zählerarray als Reaktion auf jeden Lesebefehl oder jede Verwaltungsoperation, die das Lesen von Daten beinhaltet, kann eine große Verarbeitungsbelastung für die Steuerung 102 darstellen und die Leistung der DatenSpeichervorrichtung 100 minimal beeinflussen. Nach Aspekten der vorliegenden Technologie kann das Bestimmen der Sequenz von Lesepegelspannungen nach Abschluss einer vorbestimmten Anzahl von Leseoperationen seit Durchführung der letzten Bestimmung durchgeführt werden. Zum Beispiel kann die Sequenz bestimmt werden, nachdem jeweils 256 Leseoperationen abgeschlossen sind (Block 415). Wenn die Anzahl von Leseoperationen seit dem letzten Bestimmen der Sequenz den Lese-Zählschwellenwert von 256 nicht erfüllt, wird die Mehrzustands-Decodierungsoperation unter Verwendung der zuletzt bestimmten Sequenz von Lesepegelspannungen durchgeführt (Block 415). Aufgrund der Verwendung von 256 Leseoperationen als Lese-Zählschwellenwert zum Bestimmen, wann die Bestimmung durchzuführen ist, kann das Zählerarray ein Datenbyte für jedes Element des Arrays aufweisen. Die vorliegende Technologie ist nicht auf diese Anzahl von Leseoperationen als Lese-Zählschwellenwert beschränkt und kann unter Verwendung anderer Zahlen implementiert werden, die ausgewählt oder programmiert werden können, um die Prozessorbelastung für diese Hintergrundoperation mit Prozessorbelastungen für andere Operationen, die durch die Steuerung 102 ausgeführt werden, auszugleichen.
  • Ein Zählerarray kann für das Flash-Speichervorrichtungs-Array 108 beibehalten werden. Alternativ kann ein Zählerarray für jeweilige Blöcke, Gruppen von Blöcken, Module, Gruppen von Modulen oder einzelne Flash-Speichervorrichtungen 118 beibehalten werden. Das Beibehalten getrennter Zählerarrays und das Bestimmen von Sequenzen von Lesepegelspannungen für die entsprechenden Blöcke, Gruppen von Blöcken, Module, Gruppen von Modulen, Flash-Speichervorrichtungen 118 usw. ermöglicht, dass sich die Sequenzen von Lesepegelspannungen besser an den Merkmalen und Bedingungen jedes Blocks, jeder Gruppe von Blöcken, jedes Moduls, jeder Gruppe von Modulen oder jeder Flash-Speichervorrichtung 118 ausrichten.
  • In den vorstehend behandelten Beispielen kann die bestimmte Sequenz von Lesepegelspannungen eine beliebige Reihenfolge der Lesepegelspannungen abhängig von den früheren Decodierdaten enthalten, die zum Bestimmen der Sequenz verwendet wurden. Die vorliegende Technologie ist nicht auf diese Konfiguration beschränkt. Nach anderen Aspekten der vorliegenden Technologie können die möglichen Folgen von Lesepegelspannungen auf verschiedene Reihenfolgen von Gruppen von Lesepegelspannungen oder vorbestimmten Sequenzen beschränkt werden, anstatt auf unterschiedliche Reihenfolgen der einzelnen Lesepegelspannungen. Zum Beispiel kann das Zählerarray zwei Zähler beinhalten: einen entsprechend der Gruppe von Lesepegelspannungen R, RR und RRR und einen zweiten entsprechend der Gruppe von Lesepegelspannungen L, LL und LLL. Mit dieser Konfiguration kann die bestimmte Sequenz von Lesepegelspannungen für die Mehrzustands-Decodierungsoperation zwischen den Lesepegelspannungen R-, RR- und RRR, die zuerst in der Sequenz verwendet werden, oder den Lesepegelspannungen L-, LL- und LLL, die zuerst basierend auf den Zählerwerten in den früheren Decodierdaten verwendet werden, umschalten. Andere Gruppierungen und Reihenfolgen innerhalb der Gruppierungen werden in der vorliegenden Technologie in Betracht gezogen.
  • Nach Aspekten der vorliegenden Technologie kann die mehrstufige Decodierungsoperation, die in 3 dargestellt ist, unter Verwendung der bestimmten Sequenz von Lesepegelspannungen ausgeführt werden. Jedoch kann die mehrstufige Decodierungsoperation auf andere Weisen entsprechend der bestimmten Sequenz von Lesepegelspannungen modifiziert werden. Beispielsweise können nur die harten Decodierungsoperationen unter Verwendung der bestimmten Sequenz von Lesepegelspannungen durchgeführt werden, während die weichen Decodierungsoperationen in der Standardreihenfolge ausgeführt werden können. Diese Konfiguration reduziert die Anzahl von Sätzen von Decodierinformationen, die für die Soft Decodierungsoperationen aufrecht erhalten und gespeichert werden. Die vor jeder der harten Decodierungsoperationen gelesenen Rohdaten können zur Verwendung in den späteren weichen Decodierungsoperationen gepuffert werden, um zu vermeiden, dass Daten unter Verwendung einer Lesepegelspannung, die bereits in der Operation verwendet wird, erneut gelesen werden müssen. Zum Beispiel können unter Verwendung der Sequenz L, RR, C, LL, R, LLL und RRR harte Decodierungsoperationen an gelesenen Rohdaten unter Verwendung der Lesespannungspegel L und RR durchgeführt werden, bevor zur Mehrzustands-Operation mit sowohl harten als auch weichen Decodierungsoperationen unter Verwendung der Standardsequenz C, LL, RR, L, R, LLL und RRR übergegangen wird, wenn keine der anfänglichen harten Decodierungsoperationen beim Decodieren der Rohdaten nicht erfolgreich ist. Wenn die mehrstufige Decodierungsoperation eine Stufe erreicht, die einer der frühen harten Decodierungsoperationen (z. B. L und RR) entspricht, würde die Operation direkt zum Regelkreis der weichen Decodierungsoperation übergehen, da zuvor die harte Decodierung unter Verwendung von Rohdaten, die auf den Lesepegeln L und RR gelesen wurden, versucht wurde. Die Rohdaten, die aus der früheren harten Decodierungsoperation gepuffert wurden, können für die weichen Decodierungsoperationen auf diesen Stufen verwendet werden, ohne dass die Rohdaten erneut gelesen zu werden brauchen.
  • Die vorstehende dynamische Anpassung der Sequenz von Lesepegelspannungen bewirkt die automatische Anpassung der Sequenz, wenn die Flash-Speichervorrichtungen altern und/oder sich die Betriebsbedingungen ändern. Das Anpassen der Sequenz von Lesepegelspannungen verringert potentiell die Anzahl von Stufen der mehrstufigen Decodierungsoperation, die vor dem erfolgreichen Decodieren von Rohdaten, die aus den Flash-Speichervorrichtungen gelesen werden, durchgeführt werden muss.
  • Nach Aspekten der vorliegenden Technologie wird ein maschinenimplementiertes Verfahren bereitgestellt, das das Bestimmen einer Sequenz einer Mehrzahl von Lesepegelspannungen basierend auf früheren Decodierdaten und das Ausführen einer mehrstufigen Decodierungsoperation zum Decodieren von Rohdaten beinhaltet, die aus der Mehrzahl von Speicherzellen unter Verwendung der bestimmten Sequenz der Mehrzahl von Lesepegelspannungen gelesen werden. Das Verfahren weist weiterhin das Zurückgeben decodierter Daten aus der mehrstufigen Decodierungsoperation nach Abschluss der mehrstufigen Decodierungsoperation und das Aktualisieren der früheren Decodierdaten basierend auf Ergebnissen der mehrstufigen Decodierungsoperation auf.
  • Jede Stufe der mehrstufigen Decodierungsoperation kann das Ausführen einer oder mehrerer Decodierungsoperationen zum Decodieren von Rohdaten beinhalten, die aus der Mehrzahl von Speicherzellen unter Verwendung einer jeweiligen Lesepegelspannung aus der Sequenz der Mehrzahl von Lesepegelspannungen, die der Stufe entsprechen, gelesen werden. Die Stufen der mehrstufigen Decodierungsoperation können sequenziell ausgeführt werden, bis eine der einen oder mehreren Decodierungsoperationen auf einer der Stufen die aus der Mehrzahl von Speicherzellen gelesenen Rohdaten erfolgreich decodiert.
  • Das Aktualisieren der früheren Decodierdaten kann das Inkrementieren eines Zählerwerts beinhalten, der einer Lesepegelspannung der Mehrzahl von Lesepegelspannungen entspricht, die verwendet werden, um die erfolgreich decodierten Rohdaten zu lesen. Die Sequenz der Mehrzahl von Lesepegelspannungen kann basierend auf dem Zählerwert bestimmt werden. Die früheren Decodierdaten können Zählerwerte einer Mehrzahl jeweiliger Zähler enthalten, die der Mehrzahl von Lesepegelspannungen entsprechen. Das Bestimmen der Sequenz der Mehrzahl von Lesepegelspannungen kann das Anordnen der Mehrzahl von Lesepegelspannungen entsprechend den Zählerwerten der jeweiligen Zähler beinhalten.
  • Das Bestimmen der Sequenz der Mehrzahl von Lesepegelspannungen kann das Auswählen der Sequenz aus einer Mehrzahl vorbestimmter Sequenzen beinhalten. Die Sequenz der Mehrzahl von Lesepegelspannungen kann nach Abschluss einer Mehrzahl von Leseanforderungen seit dem letzten Bestimmen der Sequenz bestimmt werden. Die Mehrzahl von Speicherzellen sind Teil eines Blocks einer Mehrzahl von Blöcken auf einem Modul, und jeweilige frühere Decodierdaten können für den Block, eine Gruppe von Blöcken, die den Block aufweisen, oder das Modul beibehalten werden.
  • Nach Aspekten der vorliegenden Technologie wird ein Datenspeichersystem bereitgestellt, das eine nichtflüchtiges Speichervorrichtung und eine Steuerung beinhaltet. Die Steuerung kann eingerichtet sein, um eine Sequenz einer Mehrzahl von Lesepegelspannungen basierend auf früheren Decodierdaten zu bestimmen und eine mehrstufige Decodierungsoperation auszuführen, um Rohdaten, die aus der Mehrzahl von Speicherzellen gelesen werden, unter Verwendung der bestimmten Sequenz der Mehrzahl von Lesepegelspannungen zu decodieren. Jede Stufe der mehrstufigen Decodierungsoperation kann das Ausführen einer oder mehrerer Decodierungsoperationen zum Decodieren von Rohdaten beinhalten, die aus der Mehrzahl von Speicherzellen unter Verwendung einer jeweiligen Lesepegelspannung aus der Sequenz der Mehrzahl von Lesepegelspannungen, die der Stufe entsprechen, gelesen werden. Die Stufen der mehrstufigen Decodierungsoperation können sequenziell ausgeführt werden, bis eine der einen oder mehreren Decodierungsoperationen auf einer der Stufen die aus der Mehrzahl von Speicherzellen gelesenen Rohdaten erfolgreich decodiert. Die Steuerung kann weiterhin eingerichtet sein, um decodierte Daten von der mehrstufigen Decodierungsoperation nach Abschluss der mehrstufigen Decodierungsoperation zurückzugeben und die früheren Decodierdaten basierend auf Ergebnissen der mehrstufigen Decodierungsoperation zu aktualisieren.
  • Das Aktualisieren der früheren Decodierdaten kann das Inkrementieren eines Zählerwerts beinhalten, der einer Lesepegelspannung der Mehrzahl von Lesepegelspannungen entspricht, die verwendet werden, um die erfolgreich decodierten Rohdaten zu lesen. Die Sequenz der Mehrzahl von Lesepegelspannungen kann basierend auf dem Zählerwert bestimmt werden. Die früheren Decodierdaten können Zählerwerte einer Mehrzahl jeweiliger Zähler enthalten, die der Mehrzahl von Lesepegelspannungen entsprechen. Das Bestimmen der Sequenz der Mehrzahl von Lesepegelspannungen kann das Anordnen der Mehrzahl von Lesepegelspannungen entsprechend den Zählerwerten der jeweiligen Zähler beinhalten.
  • Das Bestimmen der Sequenz der Mehrzahl von Lesepegelspannungen kann das Auswählen der Sequenz aus einer Mehrzahl vorbestimmter Sequenzen beinhalten. Die Sequenz der Mehrzahl von Lesepegelspannungen kann nach Abschluss einer Mehrzahl von Leseanforderungen seit dem letzten Bestimmen der Sequenz bestimmt werden.
  • Die Mehrzahl von Speicherzellen kann Teil eines Blocks einer Mehrzahl von Blöcken auf einem Modul sein. Es können entsprechende frühere Decodierdaten für den Block, eine Gruppe von Blöcken, die den Block aufweisen, oder das Modul beibehalten werden.
  • Nach Aspekten der vorliegenden Technologie wird ein prozessorlesbares Medium bereitgestellt, das mit ausführbaren Anweisungen codiert ist, die, wenn sie von einem Prozessor ausgeführt werden, ein Verfahren durchführen. Das Verfahren beinhaltet das Bestimmen einer Sequenz einer Mehrzahl von Lesepegelspannungen basierend auf früheren Decodierdaten und das Ausführen einer mehrstufigen Decodierungsoperation zum Decodieren von Rohdaten, die aus der Mehrzahl von Speicherzellen unter Verwendung der bestimmten Sequenz der Mehrzahl von Lesepegelspannungen gelesen werden. Das Verfahren beinhaltet weiterhin das Zurückgeben decodierter Daten aus der mehrstufigen Decodierungsoperation nach Abschluss der mehrstufigen Decodierungsoperation und das Aktualisieren der früheren Decodierdaten basierend auf Ergebnissen der mehrstufigen Decodierungsoperation durch Erhöhen eines Zählerwerts entsprechend einer Lesepegelspannung der Mehrzahl von Lesepegelspannungen, die zum Lesen der erfolgreich decodierten Rohdaten verwendet werden, wobei die Sequenz der Mehrzahl von Lesepegelspannungen basierend auf dem Zählerwert bestimmt wird.
  • Jede Stufe der mehrstufigen Decodierungsoperation kann das Ausführen einer oder mehrerer Decodierungsoperationen zum Decodieren von Rohdaten beinhalten, die aus der Mehrzahl von Speicherzellen unter Verwendung einer jeweiligen Lesepegelspannung aus der Sequenz der Mehrzahl von Lesepegelspannungen, die der Stufe entsprechen, gelesen werden. Die Stufen der mehrstufigen Decodierungsoperation können sequenziell ausgeführt werden, bis eine der einen oder mehreren Decodierungsoperationen auf einer der Stufen die aus der Mehrzahl von Speicherzellen gelesenen Rohdaten erfolgreich decodiert.
  • Die früheren Decodierdaten können Zählerwerte einer Mehrzahl jeweiliger Zähler enthalten, die der Mehrzahl von Lesepegelspannungen entsprechen. Das Bestimmen der Sequenz der Mehrzahl von Lesepegelspannungen kann das Anordnen der Mehrzahl von Lesepegelspannungen entsprechend den Zählerwerten der jeweiligen Zähler beinhalten. Das Bestimmen der Sequenz der Mehrzahl von Lesepegelspannungen kann das Auswählen der Sequenz aus einer Mehrzahl vorbestimmter Sequenzen beinhalten. Die Sequenz der Mehrzahl von Lesepegelspannungen kann nach Abschluss einer Mehrzahl von Leseanforderungen seit dem letzten Bestimmen der Sequenz bestimmt werden.
  • Die Mehrzahl von Speicherzellen kann Teil eines Blocks einer Mehrzahl von Blöcken auf einem Modul sein. Es können entsprechende frühere Decodierdaten für den Block, eine Gruppe von Blöcken, die den Block aufweisen, oder das Modul beibehalten werden.
  • Nach Aspekten der vorliegenden Technologie wird ein Datenspeichersystem bereitgestellt, das einen nichtflüchtigen Speicher, Mittel zum Bestimmen einer Sequenz einer Mehrzahl von Lesepegelspannungen basierend auf vorherigen Decodierungsdaten und Mittel für das Ausführen einer mehrstufigen Decodierungsoperation zum Decodieren von Rohdaten beinhaltet, die aus der Mehrzahl von Speicherzellen unter Verwendung der bestimmten Sequenz der Mehrzahl von Lesepegelspannungen gelesen werden. Das Datenspeichersystem enthält weiterhin Mittel zum Zurückgeben decodierter Daten aus der mehrstufigen Decodierungsoperation nach Abschluss der mehrstufigen Decodierungsoperation und Mittel zum Aktualisieren der früheren Decodierdaten basierend auf Ergebnissen der mehrstufigen Decodierungsoperation.
  • Jede Stufe der mehrstufigen Decodierungsoperation kann das Ausführen einer oder mehrerer Decodierungsoperationen zum Decodieren von Rohdaten beinhalten, die aus der Mehrzahl von Speicherzellen unter Verwendung einer jeweiligen Lesepegelspannung aus der Sequenz der Mehrzahl von Lesepegelspannungen, die der Stufe entsprechen, gelesen werden. Die Stufen der mehrstufigen Decodierungsoperation können sequenziell ausgeführt werden, bis eine der einen oder mehreren Decodierungsoperationen auf einer der Stufen die aus der Mehrzahl von Speicherzellen gelesenen Rohdaten erfolgreich decodiert.
  • Das Aktualisieren der früheren Decodierdaten kann das Inkrementieren eines Zählerwerts beinhalten, der einer Lesepegelspannung der Mehrzahl von Lesepegelspannungen entspricht, die verwendet werden, um die erfolgreich decodierten Rohdaten zu lesen. Die Sequenz der Mehrzahl von Lesepegelspannungen kann basierend auf dem Zählerwert bestimmt werden. Die früheren Decodierdaten können Zählerwerte einer Mehrzahl jeweiliger Zähler enthalten, die der Mehrzahl von Lesepegelspannungen entsprechen. Das Bestimmen der Sequenz der Mehrzahl von Lesepegelspannungen kann das Anordnen der Mehrzahl von Lesepegelspannungen entsprechend den Zählerwerten der jeweiligen Zähler beinhalten. Das Bestimmen der Sequenz der Mehrzahl von Lesepegelspannungen kann das Auswählen der Sequenz aus einer Mehrzahl vorbestimmter Sequenzen beinhalten.
  • Viele der vorstehend beschriebenen Funktionen und Anwendungen können als Software- oder Firmwareprozesse implementiert sein, die als ein Satz von Anweisungen spezifiziert sind, die auf einem computerlesbaren Speichermedium aufgezeichnet sind (auch als computerlesbares Medium bezeichnet). Wenn diese Anweisungen von einer oder mehreren Verarbeitungseinheit(en) (z. B. einem oder mehreren Prozessoren, Prozessorkernen oder anderen Verarbeitungseinheiten) ausgeführt werden, veranlassen sie die Verarbeitungseinheit(en) zum Durchführen der in den Anweisungen angegebenen Aktionen. Beispiele computerlesbarer Medien beinhalten, ohne darauf beschränkt zu sein, CD-ROMs, Flash-Laufwerke, RAM-Chips, Festplatten, EPROMs, usw. Die computerlesbaren Medien beinhalten keine Trägerwellen und elektronischen Signale, die per Funk oder über leitungsgebundene Verbindungen übermittelt werden.
  • Der Begriff „Software“ soll gegebenenfalls Firmware einschließen, die sich im Nur-Lese-Speicher oder anderen Speicherformen befindet, die zur Verarbeitung durch einen Prozessor in den Speicher gelesen werden können. Auch können in einigen Implementierungen mehrere Softwareaspekte der vorliegenden Offenbarung als Unterteile eines größeren Programms implementiert werden, während die übrigen individuellen Softwareaspekte der vorliegenden Offenbarung beibehalten werden. In einigen Implementierungen können auch mehrere Software Aspekte als separate Programme implementiert werden. Schließlich liegt jede beliebige Kombination von separaten Programmen, die zusammen einen hier beschriebenen Softwareaspekt implementieren, innerhalb des Umfangs der vorliegenden Offenbarung. Bei einigen Implementierungen definieren die Softwareprogramme, wenn sie installiert sind, um auf einem oder mehreren elektronischen Systemen zu arbeiten, eine oder mehrere spezifische Maschinenimplementierungen, die die Operationen der Softwareprogramme ausführen und durchführen.
  • Ein Computerprogramm (auch als Programm, Software, Softwareanwendung, Skript oder Code bekannt) kann in jeder Form von Programmiersprache geschrieben sein, einschließlich kompilierter oder interpretierter Sprachen, deklarativer oder prozeduraler Sprachen, und kann in jeder Form eingesetzt werden, einschließlich als ein eigenständiges Programm oder als Modul, Komponente, Subroutine, Objekt oder eine andere Einheit, die zur Verwendung in einer Computerumgebung geeignet ist. Ein Computerprogramm kann, muss aber nicht, einer Datei in einem Dateisystem entsprechen. Ein Programm kann in einem Abschnitt einer Datei gespeichert sein, der andere Programme oder Daten (z. B. ein oder mehrere Skripte, die in einem Markup Language Dokument gespeichert sind) in einer einzelnen Datei, die dem betreffenden Programm zugeordnet ist, oder in mehreren koordinierten Dateien (z. B. Dateien, die ein oder mehrere Module, Unterprogramme oder Codeanteile speichern) enthält. Ein Computerprogramm kann eingesetzt werden, um auf einem Computer oder auf mehreren Computern ausgeführt zu werden, die sich an einem Standort befinden oder über mehrere Standorte verteilt und durch ein Kommunikationsnetzwerk miteinander verbunden sind.
  • Es versteht sich, dass veranschaulichende Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen, die in diesem Dokument beschrieben werden, als elektronische Hardware, Computersoftware oder Kombinationen von beiden implementiert sein können. Um diese Austauschbarkeit von Hardware und Software zu veranschaulichen, wurden verschiedene veranschaulichende Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen vorstehend allgemein hinsichtlich ihrer Funktionalität beschrieben. Ob eine derartige Funktionalität als Hardware oder Software implementiert ist, hängt von der spezifischen Anwendung und Designeinschränkungen ab, denen das Gesamtsystem unterliegt. Fachleute können die beschriebene Funktionalität auf verschiedene Arten für jede bestimmte Anwendung implementieren. Verschiedene Komponenten und Blöcke können anders angeordnet sein (z. B. in einer anderen Reihenfolge angeordnet oder auf eine andere Weise partitioniert sein), ohne vom Umfang der vorliegenden Offenbarung abzuweichen.
  • Es versteht sich, dass die spezifische Reihenfolge oder Hierarchie von Schritten in den offenbarten Prozessen als eine Veranschaulichung einiger beispielhafter Ansätze dargestellt wird. Basierend auf Designpräferenzen und/oder anderen Überlegungen versteht es sich, dass die spezifische Reihenfolge oder Hierarchie von Schritten in den Prozessen anders angeordnet werden kann. Zum Beispiel können in einigen Implementierungen einige der Schritte gleichzeitig ausgeführt werden. Somit stellen die beigefügten Verfahrensansprüche Elemente der verschiedenen Schritte in einer beispielhaften Reihenfolge dar und sollen nicht auf die spezielle dargestellte Reihenfolge oder Hierarchie beschränkt sein.
  • Die vorhergehende Beschreibung wird bereitgestellt, um es einem Fachmann zu ermöglichen, die verschiedenen hierin beschriebenen Aspekte in der Praxis umzusetzen. Die vorhergehende Beschreibung stellt verschiedene Beispiele der vorliegenden Offenbarung bereit, und die vorliegende Offenbarung ist nicht auf diese Beispiele beschränkt. Verschiedene Modifikationen dieser Aspekte werden dem Fachmann leicht ersichtlich sein, und die hierin definierten generischen Prinzipien können auf andere Aspekte angewendet werden. Daher sollen die Ansprüche nicht auf die hier gezeigten Aspekte beschränkt sein, sondern sollen den vollen Schutzumfang erhalten, der mit den in Sprachform niedergelegten Ansprüchen konsistent ist, wobei die Bezugnahme auf ein Element im Singular nicht „ein und nur ein“ Element bedeuten soll, sofern dies nicht speziell angegeben ist, sondern „ein oder mehrere“. Sofern nicht spezifisch anders angegeben, bezieht sich der Ausdruck „einige“ auf ein(en) oder mehrere. Pronomen im grammatikalischen Maskulin (z. B. sein) schließen das grammatikalische Feminin und Neutrum (z. B. ihr und sein) ein, und umgekehrt. Überschriften und Untertitel, falls vorhanden, werden nur der Einfachheit halber verwendet und schränken die vorliegende Offenbarung nicht ein.
  • Die Prädikatswörter „eingerichtet, um“, „betreibbar, um“ und „programmiert, um“ implizieren keine spezielle materielle oder immaterielle Modifikation eines Subjekts, sondern sollen stattdessen austauschbar verwendet werden. Zum Beispiel kann ein Prozessor, der eingerichtet ist, um eine Operation oder eine Komponente zu überwachen, auch bedeuten, dass der Prozessor so programmiert ist, die Operation zu überwachen und zu steuern, oder der Prozessor betreibbar ist, die Operation zu überwachen und zu steuern. Ebenfalls kann ein Prozessor, der eingerichtet ist, um Code auszuführen, als ein Prozessor ausgelegt sein, der programmiert ist, um Code auszuführen oder betreibbar ist, um Code auszuführen.
  • Die Ausdrücke „in Kommunikation mit“ und „gekoppelt“ bedeuten „in direkter Kommunikation mit“ oder „in indirekter Kommunikation mit“ über eine oder mehrere Komponenten, die in diesem Dokument benannt oder nicht benannt sind (z. B. ein Speicherkartenlesegerät).
  • Ein Ausdruck, wie zum Beispiel „ein Aspekt“, bedeutet nicht, dass ein solcher Aspekt für die vorliegende Offenbarung wesentlich ist oder dass ein derartiger Aspekt für alle Konfigurationen der vorliegenden Offenbarung gilt. Eine Offenbarung, die sich auf einen Aspekt bezieht, kann auf alle Konfigurationen oder eine oder mehrere Konfigurationen angewendet werden. Ein Aspekt kann ein oder mehrere Beispiele bereitstellen. Ein Ausdruck, wie beispielsweise ein Aspekt, kann sich auf einen oder mehrere Aspekte beziehen und umgekehrt. Ein Ausdruck, wie beispielsweise eine „Implementierung“, impliziert nicht, dass eine solche Implementierung für die vorliegende Offenbarung wesentlich ist oder dass eine solche Implementierung für alle Konfigurationen der vorliegenden Offenbarung gilt. Eine Offenbarung, die sich auf eine Implementierung bezieht, kann für alle Aspekte oder einen oder mehrere Aspekte gelten. Eine Implementierung kann ein oder mehrere Beispiele bereitstellen. Ein Ausdruck, wie beispielsweise eine „Implementierung“, kann sich auf eine oder mehrere Implementierungen beziehen und umgekehrt. Ein Ausdruck, wie beispielsweise eine „Konfiguration“, impliziert nicht, dass eine solche Konfiguration für die vorliegende Offenbarung wesentlich ist oder dass eine solche Konfiguration für alle Konfigurationen der vorliegenden Offenbarung gilt. Eine Offenbarung, die sich auf eine Konfiguration bezieht, kann auf alle Konfigurationen oder eine oder mehrere Konfigurationen angewendet werden. Eine Konfiguration kann ein oder mehrere Beispiele bereitstellen. Ein Ausdruck, wie z. B. eine „Konfiguration“, kann sich auf eine oder mehrere Konfigurationen beziehen und umgekehrt.
  • Das Wort „beispielhaft“ wird in diesem Dokument in der Bedeutung „als Beispiel oder zur Veranschaulichung dienend“ verwendet. Jeder Aspekt oder jedes Design, der bzw. das hier als „beispielhaft“ beschrieben wird, ist nicht zwangsläufig als bevorzugt oder vorteilhaft gegenüber anderen Aspekten oder Designs zu verstehen.

Claims (24)

  1. Maschinenimplementiertes Verfahren, aufweisend: Bestimmen einer Sequenz einer Mehrzahl von Lesepegelspannungen basierend auf früheren Decodierdaten; Ausführen einer mehrstufigen Decodierungsoperation zum Decodieren von Rohdaten, die aus der Mehrzahl von Speicherzellen gelesen werden, unter Verwendung der bestimmten Sequenz der Mehrzahl von Lesepegelspannungen; Zurückgeben decodierter Daten aus der mehrstufigen Decodierungsoperation nach Abschluss der mehrstufigen Decodierungsoperation; und Aktualisieren der früheren Decodierdaten basierend auf den Ergebnissen der mehrstufigen Decodi erungsoperati on.
  2. Maschinenimplementiertes Verfahren gemäß Anspruch 1, wobei jede Stufe der mehrstufigen Decodierungsoperation das Ausführen einer oder mehrerer Decodierungsoperationen zum Decodieren von Rohdaten aufweist, die aus der Mehrzahl von Speicherzellen gelesen werden, wobei eine entsprechende Lesepegelspannung aus der Sequenz der Mehrzahl von Lesepegelspannungen entsprechend der Stufe verwendet wird, und wobei die Stufen der mehrstufigen Decodierungsoperation sequenziell ausgeführt werden, bis eine der einen oder mehreren Decodierungsoperationen auf einer der Stufen die aus der Mehrzahl von Speicherzellen gelesenen Rohdaten erfolgreich decodiert.
  3. Maschinenimplementiertes Verfahren gemäß Anspruch 2, wobei das Aktualisieren der früheren Decodierdaten das Inkrementieren eines Zählerwerts aufweist, der einer Lesepegelspannung der Mehrzahl von Lesepegelspannungen entspricht, die zum Lesen der erfolgreich decodierten Rohdaten verwendet werden; und wobei die Sequenz der Mehrzahl von Lesepegelspannungen basierend auf dem Zählerwert bestimmt wird.
  4. Maschinenimplementiertes Verfahren gemäß Anspruch 3, wobei die früheren Decodierdaten Zählerwerte einer Mehrzahl jeweiliger Zähler aufweisen, die der Mehrzahl von Lesepegelspannungen entsprechen, und wobei das Bestimmen der Sequenz der Mehrzahl von Lesepegelspannungen das Ordnen der Mehrzahl von Lesepegelspannungen entsprechend den Zählerwerten der jeweiligen Zähler aufweist.
  5. Maschinenimplementiertes Verfahren gemäß Anspruch 3, wobei das Bestimmen der Sequenz der Mehrzahl von Lesepegelspannungen das Auswählen der Sequenz aus einer Mehrzahl vorbestimmter Sequenzen aufweist.
  6. Maschinenimplementiertes Verfahren gemäß Anspruch 1, wobei die Sequenz der Mehrzahl von Lesepegelspannungen nach Abschluss einer Mehrzahl von Leseanforderungen, seit der letzten Bestimmung der Sequenz, bestimmt wird.
  7. Maschinenimplementiertes Verfahren gemäß Anspruch 1, wobei die Mehrzahl von Speicherzellen Teil eines Blocks einer Mehrzahl von Blöcken auf einem Modul sind, und wobei entsprechende frühere Decodierdaten für den Block, eine Gruppe von Blöcken, die den Block aufweisen, oder das Modul beibehalten werden.
  8. Datenspeichersystem, aufweisend: eine nichtflüchtige Speichervorrichtung; und eine Steuerung, die eingerichtet ist, um: eine Sequenz einer Mehrzahl von Lesepegelspannungen basierend auf früheren Decodierdaten zu bestimmen; eine mehrstufige Decodierungsoperation zum Decodieren von Rohdaten auszuführen, die aus der Mehrzahl von Speicherzellen unter Verwendung der bestimmten Sequenz der Mehrzahl von Lesepegelspannungen gelesen werden, wobei jede Stufe der mehrstufigen Decodierungsoperation das Ausführen einer oder mehrerer Decodierungsoperationen zum Decodieren von Rohdaten aufweist, die aus der Mehrzahl von Speicherzellen gelesen werden, wobei eine entsprechende Lesepegelspannung aus der Sequenz der Mehrzahl von Lesepegelspannungen entsprechend der Stufe verwendet wird, und wobei die Stufen der mehrstufigen Decodierungsoperation sequenziell ausgeführt werden, bis eine der einen oder mehreren Decodierungsoperationen auf einer der Stufen die aus der Mehrzahl von Speicherzellen gelesenen Rohdaten erfolgreich decodiert. decodierte Daten von der mehrstufigen Decodierungsoperation nach Abschluss der mehrstufigen Decodierungsoperation zurückzugeben; und die früheren Decodierdaten basierend auf Ergebnissen der mehrstufigen Decodierungsoperation zu aktualisieren.
  9. Datenspeichersystem gemäß Anspruch 8, wobei das Aktualisieren der früheren Decodierdaten das Inkrementieren eines Zählerwerts aufweist, der einer Lesepegelspannung der Mehrzahl von Lesepegelspannungen entspricht, die zum Lesen der erfolgreich decodierten Rohdaten verwendet werden, und wobei die Sequenz der Mehrzahl von Lesepegelspannungen basierend auf dem Zählerwert bestimmt wird.
  10. Datenspeichersystem gemäß Anspruch 9, wobei die früheren Decodierdaten Zählerwerte einer Mehrzahl jeweiliger Zähler aufweisen, die der Mehrzahl von Lesepegelspannungen entsprechen, und und wobei das Bestimmen der Sequenz der Mehrzahl von Lesepegelspannungen das Ordnen der Mehrzahl von Lesepegelspannungen entsprechend den Zählerwerten der jeweiligen Zähler aufweist.
  11. Datenspeichersystem gemäß Anspruch 9, wobei das Bestimmen der Sequenz der Mehrzahl von Lesepegelspannungen das Auswählen der Sequenz aus einer Mehrzahl vorbestimmter Sequenzen aufweist.
  12. Datenspeichersystem gemäß Anspruch 8, wobei die Sequenz der Mehrzahl von Lesepegelspannungen nach Abschluss einer Mehrzahl von Leseanforderungen seit dem letzten Bestimmen der Sequenz bestimmt wird.
  13. Datenspeichersystem gemäß Anspruch 8, wobei die Mehrzahl von Speicherzellen Teil eines Blocks einer Mehrzahl von Blöcken auf einem Modul sind, und wobei entsprechende frühere Decodierdaten für den Block, eine Gruppe von Blöcken, die den Block aufweisen, oder das Modul beibehalten werden.
  14. Prozessorlesbares Medium, das mit ausführbaren Anweisungen codiert ist, die, wenn sie durch einen Prozessor ausgeführt werden, ein Verfahren ausführen, aufweisend: Bestimmen einer Sequenz einer Mehrzahl von Lesepegelspannungen basierend auf früheren Decodierdaten; Ausführen einer mehrstufigen Decodierungsoperation zum Decodieren von Rohdaten, die aus der Mehrzahl von Speicherzellen gelesen werden, unter Verwendung der bestimmten Sequenz der Mehrzahl von Lesepegelspannungen; Zurückgeben decodierter Daten aus der mehrstufigen Decodierungsoperation nach Abschluss der mehrstufigen Decodierungsoperation; und Aktualisieren der früheren Decodierdaten basierend auf Ergebnissen der mehrstufigen Decodierungsoperation durch Inkrementieren eines Zählerwerts entsprechend einer Lesepegelspannung der Mehrzahl von Lesepegelspannungen, die zum Lesen der erfolgreich decodierten Rohdaten verwendet werden, wobei die Sequenz der Mehrzahl von Lesepegelspannungen basierend auf dem Zählerwert bestimmt wird.
  15. Prozessorlesbares Medium gemäß Anspruch 14, wobei jede Stufe der mehrstufigen Decodierungsoperation das Ausführen einer oder mehrerer Decodierungsoperationen zum Decodieren von Rohdaten aufweist, die aus der Mehrzahl von Speicherzellen gelesen werden, unter Verwendung einer jeweiligen Lesepegelspannung aus der Sequenz der Mehrzahl von Lesepegelspannungen entsprechend der Stufe; und wobei die Stufen der mehrstufigen Decodierungsoperation sequenziell ausgeführt werden, bis eine der einen oder mehreren Decodierungsoperationen auf einer der Stufen die von der Mehrzahl von Speicherzellen gelesenen Rohdaten erfolgreich decodiert.
  16. Prozessorlesbares Medium gemäß Anspruch 15, wobei die früheren Decodierdaten Zählerwerte einer Mehrzahl jeweiliger Zähler aufweisen, die der Mehrzahl von Lesepegelspannungen entsprechen, und und wobei das Bestimmen der Sequenz der Mehrzahl von Lesepegelspannungen das Ordnen der Mehrzahl von Lesepegelspannungen entsprechend den Zählerwerten der jeweiligen Zähler aufweist.
  17. Prozessorlesbares Medium gemäß Anspruch 15, wobei das Bestimmen der Sequenz der Mehrzahl von Lesepegelspannungen das Auswählen der Sequenz aus einer Mehrzahl vorbestimmter Sequenzen aufweist.
  18. Prozessorlesbares Medium gemäß Anspruch 14, wobei die Sequenz der Mehrzahl von Lesepegelspannungen nach Abschluss einer Mehrzahl von Leseanforderungen bestimmt wird, seit die Sequenz zuletzt bestimmt wurde.
  19. Prozessorlesbares Medium gemäß Anspruch 14, wobei die Mehrzahl von Speicherzellen Teil eines Blocks einer Mehrzahl von Blöcken auf einem Modul sind, und wobei entsprechende frühere Decodierdaten für den Block, eine Gruppe von Blöcken, die den Block aufweisen, oder das Modul beibehalten werden.
  20. Datenspeichersystem, aufweisend: nicht flüchtigen Speicher; Mittel zum Bestimmen einer Sequenz einer Mehrzahl von Lesepegelspannungen basierend auf früheren Decodierdaten; Mittel zum Ausführen einer mehrstufigen Decodierungsoperation zum Decodieren von Rohdaten, die aus der Mehrzahl von Speicherzellen unter Verwendung der bestimmten Sequenz der Mehrzahl von Lesepegelspannungen gelesen werden; Mittel zum Zurückgeben decodierter Daten aus der mehrstufigen Decodierungsoperation nach Abschluss der mehrstufigen Decodierungsoperation; und Mittel zum Aktualisieren der früheren Decodierdaten basierend auf Ergebnissen der mehrstufigen Decodierungsoperation.
  21. Datenspeichersystem gemäß Anspruch 20, wobei jede Stufe der mehrstufigen Decodierungsoperation das Ausführen einer oder mehrerer Decodierungsoperationen zum Decodieren von Rohdaten aufweist, die aus der Mehrzahl von Speicherzellen unter Verwendung einer jeweiligen Lesepegelspannung aus der Sequenz der Mehrzahl von Lesepegelspannungen, die der Stufe entsprechen, gelesen werden, und wobei die Stufen der mehrstufigen Decodierungsoperation sequenziell ausgeführt werden, bis eine der einen oder mehreren Decodierungsoperationen auf einer der Stufen die von der Mehrzahl von Speicherzellen gelesenen Rohdaten erfolgreich decodiert.
  22. Datenspeichersystem gemäß Anspruch 21, wobei das Aktualisieren der früheren Decodierdaten das Inkrementieren eines Zählerwerts aufweist, der einer Lesepegelspannung der Mehrzahl von Lesepegelspannungen entspricht, die verwendet werden, um die erfolgreich decodierten Rohdaten zu lesen, und wobei die Sequenz der Mehrzahl von Lesepegelspannungen basierend auf dem Zählerwert bestimmt wird.
  23. Datenspeichersystem gemäß Anspruch 22, wobei die früheren Decodierdaten Zählerwerte einer Mehrzahl jeweiliger Zähler aufweisen, die der Mehrzahl von Lesepegelspannungen entsprechen, und wobei das Bestimmen der Sequenz der Mehrzahl von Lesepegelspannungen das Ordnen der Mehrzahl von Lesepegelspannungen entsprechend den Zählerwerten der jeweiligen Zähler aufweist.
  24. Datenspeichersystem gemäß Anspruch 23, wobei das Bestimmen der Sequenz der Mehrzahl von Lesepegelspannungen das Auswählen der Sequenz aus einer Mehrzahl vorbestimmter Sequenzen aufweist.
DE102018123926.2A 2017-12-18 2018-09-27 Dynamische mehrstufige Decodierung Pending DE102018123926A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/846,020 US10637511B2 (en) 2017-12-18 2017-12-18 Dynamic multi-stage decoding
US15/846,020 2017-12-18

Publications (1)

Publication Number Publication Date
DE102018123926A1 true DE102018123926A1 (de) 2019-06-19

Family

ID=66674496

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018123926.2A Pending DE102018123926A1 (de) 2017-12-18 2018-09-27 Dynamische mehrstufige Decodierung

Country Status (3)

Country Link
US (3) US10637511B2 (de)
CN (1) CN109933455B (de)
DE (1) DE102018123926A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11456037B2 (en) * 2017-10-31 2022-09-27 Micron Technology, Inc. Block read count voltage adjustment

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019160364A (ja) * 2018-03-12 2019-09-19 東芝情報システム株式会社 メモリシステム及びメモリ制御方法
TWI664634B (zh) * 2018-08-17 2019-07-01 慧榮科技股份有限公司 快閃記憶體控制器、管理快閃記憶體模組的方法及相關的電子裝置
US10998041B1 (en) * 2020-05-07 2021-05-04 Western Digital Technologies, Inc. Calibrating non-volatile memory read thresholds
US11411582B1 (en) 2021-01-15 2022-08-09 SK Hynix Inc. Machine-learning based LLR generation without assist-read for early-stage soft decoding
US11809355B2 (en) 2021-02-05 2023-11-07 SK Hynix Inc. UART aggregation and JTAG selection circuitry for a multi-solid state drive environment
CN114661233A (zh) * 2022-03-18 2022-06-24 合肥兆芯电子有限公司 表格排序方法、存储器存储装置及存储器控制电路单元
US20230393892A1 (en) * 2022-06-06 2023-12-07 International Business Machines Corporation Configurable orchestration for data pipelines

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6829166B2 (en) * 2002-09-13 2004-12-07 Ememory Technology Inc. Method for controlling a non-volatile dynamic random access memory
KR100621632B1 (ko) * 2005-03-22 2006-09-19 삼성전자주식회사 시리얼 센싱 동작을 수행하는 노어 플래시 메모리 장치
KR100729357B1 (ko) * 2005-08-25 2007-06-15 삼성전자주식회사 읽기 속도를 향상시킬 수 있는 플래시 메모리 장치
US8261170B2 (en) * 2007-06-19 2012-09-04 Mitsubishi Electric Research Laboratories, Inc. Multi-stage decoder for error-correcting codes
US8344755B2 (en) * 2007-09-06 2013-01-01 Tabula, Inc. Configuration context switcher
US8335977B2 (en) * 2007-12-05 2012-12-18 Densbits Technologies Ltd. Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated BCH codes and/or designation of “first below” cells
US7800943B2 (en) * 2008-01-18 2010-09-21 Qimonda Ag Integrated circuit having a memory cell arrangement and method for reading a memory cell state using a plurality of partial readings
US8724381B2 (en) * 2008-03-11 2014-05-13 Agere Systems Llc Methods and apparatus for storing data in a multi-level cell flash memory device with cross-page sectors, multi-page coding and per-page coding
US8184480B2 (en) * 2008-12-11 2012-05-22 Samsung Electronics Co., Ltd. Multi-level nonvolatile memory device with reduced number of read voltages based on a cell address and method for operating the same
KR101578511B1 (ko) * 2009-05-20 2015-12-18 삼성전자주식회사 리드 전압 설정 방법
DE102009027327A1 (de) 2009-06-30 2011-01-05 Robert Bosch Gmbh Mischerbaugruppe und Radarsensor für Kraftfahrzeuge
US8935595B2 (en) 2010-03-12 2015-01-13 Lsi Corporation LDPC erasure decoding for flash memories
JP2011197957A (ja) * 2010-03-18 2011-10-06 Toshiba Corp 誤り訂正符号復号装置及び誤り訂正符号復号方法
US8427875B2 (en) * 2010-12-07 2013-04-23 Silicon Motion Inc. Method and memory controller for reading data stored in flash memory by referring to binary digit distribution characteristics of bit sequences read from flash memory
US9142323B1 (en) 2011-03-01 2015-09-22 Sk Hynix Memory Solutions Inc. Hardware acceleration of DSP error recovery for flash memory
US9502117B2 (en) 2011-03-14 2016-11-22 Seagate Technology Llc Cell-level statistics collection for detection and decoding in flash memories
CN102394113B (zh) 2011-11-14 2014-06-18 清华大学 一种应用于快闪存储器中的动态ldpc纠错码方法
US8856611B2 (en) 2012-08-04 2014-10-07 Lsi Corporation Soft-decision compensation for flash channel variation
US9239754B2 (en) 2012-08-04 2016-01-19 Seagate Technology Llc Single read based soft-decision decoding of non-volatile memory
US9397701B1 (en) 2013-03-11 2016-07-19 Microsemi Storage Solutions (Us), Inc. System and method for lifetime specific LDPC decoding
US9367389B2 (en) 2013-03-14 2016-06-14 Seagate Technology Llc Recovery strategy that reduces errors misidentified as reliable
JP6451955B2 (ja) * 2013-03-21 2019-01-16 マーベル ワールド トレード リミテッド 多段ソフト入力デコードのためのシステムおよび方法
US9298552B2 (en) 2013-09-27 2016-03-29 Intel Corporation Using read values from previous decoding operations to calculate soft bit information in an error recovery operation
US9007854B1 (en) * 2013-12-09 2015-04-14 Western Digital Technologies, Inc. Method and system for optimized soft decoding in a data storage device
US9633740B1 (en) 2016-02-11 2017-04-25 Seagate Technology Llc Read retry operations where likelihood value assignments change sign at different read voltages for each read retry
US9563502B1 (en) 2013-12-20 2017-02-07 Seagate Technology Llc Read retry operations with read reference voltages ranked for different page populations of a memory
KR20150091693A (ko) * 2014-02-03 2015-08-12 삼성전자주식회사 플래쉬 메모리 읽기 방법
US9378810B2 (en) 2014-02-11 2016-06-28 Seagate Technology Llc Systems and methods for last written page handling in a memory device
US10176041B2 (en) 2014-06-16 2019-01-08 Tidal Systems, Inc. Deterministic read retry method for soft LDPC decoding in flash memories
US9378090B2 (en) 2014-06-16 2016-06-28 Seagate Technology Llc Cell-to-cell program interference aware data recovery when ECC fails with an optimum read reference voltage
US9407294B2 (en) 2014-07-07 2016-08-02 Kabushi Kaisha Toshiba. Non-volatile memory controller with error correction (ECC) tuning via error statistics collection
KR102265220B1 (ko) * 2015-03-09 2021-06-16 에스케이하이닉스 주식회사 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
KR20160110774A (ko) * 2015-03-12 2016-09-22 에스케이하이닉스 주식회사 메모리 장치 및 이를 포함하는 시스템
US9564239B2 (en) 2015-03-16 2017-02-07 Sk Hynix Memory Solutions Inc. Memory controller and operating method thereof
US9910594B2 (en) * 2015-11-05 2018-03-06 Micron Technology, Inc. Apparatuses and methods for concurrently accessing multiple memory planes of a memory during a memory access operation
TWI588834B (zh) * 2016-02-23 2017-06-21 群聯電子股份有限公司 解碼方法、記憶體儲存裝置及記憶體控制電路單元
CN107146638B (zh) * 2016-03-01 2020-08-11 群联电子股份有限公司 译码方法、存储器储存装置及存储器控制电路单元
US9761308B1 (en) * 2016-03-11 2017-09-12 Western Digital Technologies, Inc. Systems and methods for adaptive read level adjustment
TWI584304B (zh) * 2016-05-23 2017-05-21 大心電子(英屬維京群島)股份有限公司 解碼方法、記憶體儲存裝置及記憶體控制電路單元
TWI612525B (zh) * 2016-07-07 2018-01-21 群聯電子股份有限公司 解碼方法、記憶體儲存裝置及記憶體控制電路單元
KR102559925B1 (ko) 2016-07-21 2023-07-26 에스케이하이닉스 주식회사 Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
US10291263B2 (en) * 2016-07-28 2019-05-14 Ip Gem Group, Llc Auto-learning log likelihood ratio
US10025661B1 (en) * 2016-12-27 2018-07-17 Sandisk Technologies Llc Adaptive hard and soft bit decoding
KR20180085107A (ko) * 2017-01-17 2018-07-26 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US10175892B1 (en) * 2017-06-23 2019-01-08 Amazon Technologies, Inc. Adaptive read algorithm for a nonvolatile medium
US10558522B2 (en) 2017-10-20 2020-02-11 Western Digital Technologies, Inc. Dynamic multi-stage decoding

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11456037B2 (en) * 2017-10-31 2022-09-27 Micron Technology, Inc. Block read count voltage adjustment

Also Published As

Publication number Publication date
US10637511B2 (en) 2020-04-28
US20190190541A1 (en) 2019-06-20
US11211949B2 (en) 2021-12-28
CN109933455B (zh) 2023-01-10
US20220077876A1 (en) 2022-03-10
US11606105B2 (en) 2023-03-14
US20200220562A1 (en) 2020-07-09
CN109933455A (zh) 2019-06-25

Similar Documents

Publication Publication Date Title
DE102018123926A1 (de) Dynamische mehrstufige Decodierung
DE112019000167T5 (de) Anpassbare Lesewiederholungsreihenfolge basierend auf einem Decodierungserfolgstrend
DE102017001433B4 (de) Systeme und Verfahren für adaptive Lesepegelanpassung
DE102019116520A1 (de) Datenspeichersysteme und -verfahren für eine verbesserte datenumlagerung basierend auf lesepegelspannungen, die mit einer fehlerwiederherstellung verbunden sind
DE112014004778B4 (de) Vorrichtung und Verfahren zum Verwalten von Chipgruppen
DE102016003366B4 (de) Lesepegelgruppierung für erhöhte flash-leistung
DE102018105943A1 (de) Kontextbewusste dynamische Befehlsplanung für ein Datenspeichersystem
DE102018105948A1 (de) Leseniveau-Nachverfolgung und Optimierung
DE102017128994A1 (de) Weiche Dekodierungs-Planung
DE112020006139T5 (de) Vor-lese-und lese-schwellenspannungsoptimierung
DE102014103125A1 (de) Verfahren und Vorrichtung zum Optimieren des Log-Likelihood-Quotienten (LLR), die verwendet werden für eine nichtflüchtige Speichervorrichtung und zum Korrigieren von Fehlern in einer nichtflüchtigen Speichervorrichtung
DE102017117066A1 (de) Nichtbinäre codierung für einen nichtflüchtigen speicher
DE102011055714A1 (de) Verfahren zum Programmieren einer nicht-flüchtigen Speichervorrichtung
DE112012006153T5 (de) Rekonstruktion von Codewörtern unter Verwendung eines Seitenkanals
DE102017128999A1 (de) Lesebetrieb und weiches Dekodierungs-Timing
US11093326B2 (en) Dynamic multi-stage decoding
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE102018105434A1 (de) Verfahren und System zum Abtasten von gelöschten Flashspeicherseiten mit Querverweis auf verwandte Anwendungen
DE102019125060A1 (de) Datenspeichersysteme und verfahren zum autonomen anpassen der leistung, kapazität und/oder der betriebsanforderungen eines datenspeichersystems
DE102019133147A1 (de) Datenspeichersysteme und verfahren zur optimierten planung von hintergrund-verwaltungsoperationen
DE112016002305B4 (de) Reduktion der Schreibverstärkung in einem Objektspeicher
DE112020005502T5 (de) Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke
DE102017119065B4 (de) Aktualisieren eines Speichers
DE102015209502A1 (de) Markierungsprogrammierung in nichtflüchtigen Speichern
DE112015003569T5 (de) Verfahren und System zum Verwenden von NAND-Seitenpuffern, um die Übertragungspuffernutzung eines Festkörperlaufwerks zu verbessern

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