DE112019000167T5 - Anpassbare Lesewiederholungsreihenfolge basierend auf einem Decodierungserfolgstrend - Google Patents

Anpassbare Lesewiederholungsreihenfolge basierend auf einem Decodierungserfolgstrend Download PDF

Info

Publication number
DE112019000167T5
DE112019000167T5 DE112019000167.1T DE112019000167T DE112019000167T5 DE 112019000167 T5 DE112019000167 T5 DE 112019000167T5 DE 112019000167 T DE112019000167 T DE 112019000167T DE 112019000167 T5 DE112019000167 T5 DE 112019000167T5
Authority
DE
Germany
Prior art keywords
decoding
read level
level voltage
read
decoding success
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
DE112019000167.1T
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 DE112019000167T5 publication Critical patent/DE112019000167T5/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/408Address circuits
    • G11C11/4087Address decoders, e.g. bit - or word line decoders; Multiple line decoders
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/021Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/10Decoders
    • 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
    • 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/3723Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using means or methods for the initialisation of the decoder
    • 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/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/563Multilevel memory reading aspects
    • G11C2211/5632Multilevel reading using successive approximation

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Verfahren, Systeme und Medien zum Decodieren von Daten werden beschrieben. Eine Sequenz von Lesepegelspannungen für Decodierungsvorgänge kann basierend auf einem Trend von Decodierungserfolgsindikatoren, einschließlich eines ersten Decodierungserfolgsindikators und eines zweiten Decodierungserfolgsindikators, bestimmt werden. Der erste Decodierungserfolgsindikator wird aus einem jüngeren erfolgreichen Decodierungsvorgang erhalten. Die erste der Sequenz kann auf eine Lesepegelspannung des ersten Decodierungserfolgsindikators eingestellt werden. Wenn die Lesepegelspannung des ersten Decodierungserfolgsindikators niedriger ist als eine Lesepegelspannung des zweiten Decodierungserfolgsindikators, dann nimmt der Trend ab, und die zweite der Sequenz kann auf eine Lesepegelspannung eingestellt werden, die niedriger ist als diejenige der ersten der Sequenz. Nach dem Ausführen eines oder mehrerer Decodierungsvorgänge können die Decodierungserfolgsindikatoren basierend auf der Lesepegelspannung des aktuellen erfolgreichen Decodierungsvorgangs aktualisiert werden.

Description

  • RÜCKVERWEISUNG AUF VERWANDTE ANMELDUNGEN
  • Die vorliegende Anmeldung beansprucht den Prioritätsvorteil unter 35 U.S.C. § 119 als nicht vorläufige der vorläufigen US-Patentanmeldung Nr. 62/684,157 mit dem Titel „Adjustable Read Retry Order Based On Decoding Success Trend“, eingereicht am 12. Juni 2018, deren Offenbarung hiermit durch Bezugnahme in ihrer Gesamtheit für alle Zwecke eingeschlossen ist.
  • 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 Lesevorgängen zu korrigieren. Beispielsweise können Paritätsprüfungscodes niedriger Dichte (LDPC-Codes) und Bose-Chaudhuri-Hocquenghem-Codes (BCH-Codes) robuste Fehlerkorrekturfähigkeiten bereitstellen. Jedoch kann das Anwenden der Fehlerkorrekturfähigkeiten von LDPC- und BCH-Codes eine unerwünschte Latenz zu Lesevorgängen hinzufügen.
  • Figurenliste
    • 1 ist ein Blockdiagramm, das beispielhafte Komponenten eines Datenspeichersystems gemäß Gesichtspunkten der vorliegenden Technologie darstellt.
    • 2 zeigt ein beispielhafte Grafik ein Diagramm, die/das vier mögliche Zellenprogrammverteilungen in einem Mehrpegelzellen-Flash-Speicher nach Gesichtspunkten der vorliegenden Technologie veranschaulicht.
    • 3A stellt ein Beispiel einer vorgegebenen Lesepegelspannungsreihenfolge gemäß Gesichtspunkten der vorliegenden Technologie dar.
    • Die 3B bis 3F stellen Beispiele des Anpassens von Lesepegelspannungsreihenfolgen basierend auf einem Trend von erfolgreichen Decodierungsvorgängen gemäß Gesichtspunkten der vorliegenden Technologie dar.
    • Die 4 bis 6 stellen Flussdiagramme von Beispielen eines mehrstufigen Decodierungsvorgangs gemäß Gesichtspunkten der vorliegenden Technologie dar.
  • 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.
  • Aufgrund von hohen Fehlerraten, die in nichtflüchtigem Speicher wie NAND-Flash-Speicher beobachtet werden, können verschiedene Fehlerbehebungsverfahren wie LDPC- und BCH-Decodierung für einen mehrstufigen Decodierungsvorgang, z. B. eine oder mehrere Stufen eines Decodierungsvorgangs, verwendet werden, um Daten zu decodieren, die aus einer Gruppe von Speicherzellen in nichtflüchtigem Speicher gelesen werden. Die Daten, die auf jeder Stufe des Decodierungsvorgangs verarbeitet werden, können aus den Speicherzellen unter Verwendung einer jeweiligen Lesepegelspannung aus einer Sequenz von verschiedenen Lesepegelspannungen gelesen werden. Jede Stufe kann einen harten Decodierungsvorgang an den Daten und/oder einen oder mehrere weiche Decodierungsvorgänge an den Daten ausführen. Der mehrstufige Decodierungsvorgang kann jeweils eine Stufe in einer vorbestimmten Sequenz ausführen, bis die aus den Speicherzellen gelesenen Daten erfolgreich decodiert sind.
  • In einem oder mehreren Gesichtspunkten ist es wünschenswert, die Leistung dieser Fehlerkorrekturverfahren, insbesondere die Zeit, die zum Wiederholen des Lesens und Decodierens von Daten aufgewendet wird, zu verbessern. Ein oder mehrere Gesichtspunkte der vorliegenden Technologie verwenden einen Decodierungserfolgstrend (oder Decodierungsfehlertrend), um den Fehlertyp vorherzusagen und optimale Lesepegelspannungen für Lesewiederholungen zu bestimmen.
  • 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. Lesefehler können durch verschiedene Faktoren wie die Temperatur, Lesestörungen, Programm-/Löschzählungen, Alter und Datenhaltefähigkeit hervorgerufen werden. Einige dieser Faktoren können einigen oder vielen von Speicherzellen gemein sein.
  • In einem oder mehreren Gesichtspunkten nutzt die vorliegende Technologie diese Ähnlichkeiten, um den mehrstufigen Decodierungsvorgang durch Verfolgen des Trends von Decodierungserfolgsindikatoren und entsprechenden Lesepegelspannungen, bei denen vorhergehende Decodierungsvorgänge die aus Speicherzellen gelesenen Daten erfolgreich decodiert haben, zu verbessern. Lesefehler, die in anderen ähnlich gelegenen Speicherzellen erfahren werden, können unter Verwendung des gleichen Trends behoben werden. Beispielsweise neigt eine Bitverschiebung innerhalb desselben Blocks dazu, sich in der gleichen Richtung zu bewegen. Daher kann unter Verwendung der vorhergehenden erfolgreichen Lesepegelspannungen ein Decodierungserfolgstrend vorhergesagt werden, und die Lesepegelspannungskandidaten können optimal neu geordnet werden.
  • Ein oder mehrere Gesichtspunkte der vorliegenden Technologie können nicht nur die optimale Lesepegelspannung für die erste Lesewiederholung bestimmen, sondern auch die optimalen Lesepegelspannungen für die nachfolgenden Lesewiederholungen, wenn die erste Lesewiederholung fehlschlägt. In einem oder mehreren Beispielen kann die Lesepegelspannung für die erste Lesewiederholung die Lesepegelspannung des letzten erfolgreichen Decodierungsvorgangs sein. Ein Lesepegel für eine zweite Lesewiederholung kann basierend auf dem Trend der zwei erfolgreichen Lesepegelspannungen aus den vorherigen Decodierungsvorgängen bestimmt werden. Der Vergleich der letzten zwei erfolgreichen Lesepegelspannungen kann eine Bewegungsrichtung oder einen Trend bereitstellen. Diese Richtung oder dieser Trend kann zum Vorhersagen der nächsten Lesepegelspannungen verfolgt werden, um Daten mit weniger Fehlern zu lesen und zu decodieren.
  • Ein oder mehrere Gesichtspunkte der vorliegenden Technologie stellen verschiedene Leistungsvorteile wie die Reduzierung der Anzahl von Lesewiederholungen und die Verbesserung der Fehlerbehebungseffizienz, insbesondere für nichtflüchtigen Speicher, wie NAND-Flash-Speicher, der eine hohe Fehlerrate erfährt, einer hohen Temperatur unterliegt oder das Ende der Lebensdauer erreicht, bereit. Außerdem sind ein oder mehrere Gesichtspunkte der vorliegenden Technologie nicht auf LDPC und BCH beschränkt und können mit verschiedenen anderen Decodierungsverfahren verwendet werden.
  • Wie nachstehend ausführlicher erörtert wird, kann in einem oder mehreren Gesichtspunkten eine Sequenz von Lesepegelspannungen basierend auf einem Trend von Decodierungserfolgsindikatoren angepasst oder eingestellt werden. In einem oder mehreren Beispielen kann eine Sequenz von Lesepegelspannungen basierend auf der letzten erfolgreichen Lesepegelspannung und einem Trend zwischen der letzten erfolgreichen Lesepegelspannung und der vorletzten erfolgreichen Lesepegelspannung angepasst werden. In einem oder mehreren Beispielen kann eine erste Lesepegelspannung der Sequenz auf die letzte erfolgreiche Lesepegelspannung eingestellt werden. Eine zweite Lesepegelspannung der Sequenz kann basierend auf der ersten Lesepegelspannung und dem Trend bestimmt werden.
  • In einem oder mehreren Beispielen nimmt dann, wenn die letzte erfolgreiche Lesepegelspannung niedriger ist als die vorletzte erfolgreiche Lesepegelspannung, der Trend an Spannung ab. Die zweite Lesepegelspannung kann somit auf eine Lesepegelspannung eingestellt werden, die niedriger ist als die erste Lesepegelspannung. In einem oder mehreren Beispielen nimmt dann, wenn die letzte erfolgreiche Lesepegelspannung höher ist als die vorletzte erfolgreiche Lesepegelspannung, der Trend an Spannung zu. Die zweite Lesepegelspannung kann somit auf eine Lesepegelspannung eingestellt werden, die höher ist als die erste Lesepegelspannung.
  • In einigen Beispielen können eine oder mehrere nachfolgende Lesepegelspannungen der Sequenz basierend auf dem gleichen Trend bestimmt werden. In einigen Beispielen können eine oder mehrere nachfolgende Lesepegelspannungen basierend auf einer Richtung bestimmt werden, die umgekehrt zu dem Trend ist. Ein oder mehrere aktuelle Decodierungsvorgänge können ausgeführt werden, um Daten basierend auf der angepassten Sequenz von Lesepegelspannungen zu decodieren. Wenn einer des einen oder der mehreren aktuellen Decodierungsvorgänge erfolgreich ist und die aktuelle erfolgreiche Lesepegelspannung sich von der letzten erfolgreichen Lesepegelspannung unterscheidet, dann können die letzte erfolgreiche Lesepegelspannung und die vorletzte erfolgreiche Lesepegelspannung aktualisiert werden. Eine Sequenz von Lesepegelspannungen kann dann basierend auf den aktualisierten Informationen neu angepasst werden.
  • 1 ist ein Blockdiagramm, das beispielhafte Komponenten eines Datenspeichersystems 100 nach Aspekten der vorliegenden Technologie zeigt. Das Datenspeichersystem 100 schließt unter anderem die Steuerung 102, die Codier-/Decodier-Maschine 104, das Speichermedium 106 und das Flash-Speichervorrichtungs-Array 108 ein. Wie in 1 dargestellt, kann das Datenspeichersystem 100 mit einer Host-Vorrichtung 110 über die Host-Schnittstelle 112 verbunden sein.
  • Die Steuerung 102 kann mehrere interne Komponenten (nicht gezeigt) wie einen oder mehrere Prozessoren 103, einen Nur-Lese-Speicher, eine Flash-Komponentenschnittstelle (beispielsweise einen Multiplexer zum Verwalten von Anweisungs- und Datentransport entlang einer Verbindung zu dem Flash-Speichervorrichtungs-Array 108), eine E/A-Schnittstelle, eine Fehlerkorrekturschaltung und dergleichen einschließen. Ein Prozessor der Steuerung 102 kann den Betrieb der Komponenten in der Datenspeichersteuerung 102 überwachen und steuern. Der Prozessor und/oder die Steuerung 102 können ein Mehrkernprozessor, ein Allzweck-Mikroprozessor, ein Mikrocontroller, ein digitaler Signalprozessor (DSP), ein anwendungsspezifischer integrierter Schaltkreis (ASIC), eine anwenderprogrammierbare Gatteranordnung (Field Programmable Gate Array, FPGA), ein programmierbarer Logikbaustein (PLD), eine Steuerung, eine Zustandsmaschine, ein Logikgatter, einzelne Hardwarekomponenten oder eine Kombination der Vorstehenden sein. In einigen Gesichtspunkten können ein oder mehrere Elemente der Steuerung 102 in einem einzigen Chip integriert sein. In anderen Gesichtspunkten können die Elemente auf zwei oder mehr diskreten Komponenten implementiert sein.
  • Die Steuerung 102 kann einen Code oder Anweisungen ausführen, um die hierin beschriebenen Operationen und Funktionen durchzuführen. Zum Beispiel kann die Steuerung 102 Operationen zum Verwalten von Anforderungsfluss- und Adressenabbildungen durchführen, Berechnungen durchführen und Befehle 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 nichtflü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 einem dynamischen Speicher, der für Speichermedien 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 das Speichermedium 106 den flüchtigen Speicher dar, der zum temporären Speichern von Daten und Informationen verwendet wird, die dazu dienen, das Datenspeichersystem 100 zu verwalten. Nach Gesichtspunkten 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 wie eine Magnetplatte, ein Flash-Speicher, eine periphere SSD und dergleichen sein.
  • Die Host-Schnittstelle 112 kann mit der Host-Vorrichtung 110 gekoppelt 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 kann Daten, Adressen und Steuersignale zwischen der Host-Vorrichtung 110 und der Steuerung 102 kommunizieren. Auf diese Weise kann die Steuerung 102 in Reaktion auf einen Schreibbefehl von der Host-Vorrichtung 110 von der Host-Vorrichtung 110 empfangene Daten in dem Flash-Speichervorrichtungs-Array 108 speichern und um in Reaktion auf einen Lesebefehl von der Host-Vorrichtung 110 in dem Flash-Speichervorrichtungs-Array 108 gespeicherte Daten zu lesen und die gelesenen Daten über die Host-Schnittstelle 112 an die Host-Vorrichtung 110 zu übertragen.
  • Die Host-Vorrichtung 110 stellt jede Vorrichtung dar, die mit dem Datenspeichersystem 100 gekoppelt werden kann und Daten in dem Datenspeichersystem 100 speichert. Die Host-Vorrichtung 110 kann ein Rechensystem wie ein Personal Computer, ein Server, eine Workstation, ein Laptop-Computer, ein PDA, ein Smartphone und dergleichen sein. Alternativ kann die Host-Vorrichtung 110 eine elektronische Vorrichtung wie eine Digitalkamera, ein digitaler Audiospieler, 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 kann 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), Fiber-Channel-Technologie, Serial Attached SCSI (SAS), Secure Digital (SD), Embedded Multi-Media Card (EMMC), Universal Flash Storage (UFS) und Peripheral Component Interconnect Express (PCIe). Gemäß einigen Gesichtspunkten kann das Datenspeichersystem 100 Stifte (oder eine Buchse) einschließen, um sich mit einer entsprechenden Buchse (oder Stiften) auf der Host-Vorrichtung 110 zu verbinden, um eine elektrische und physikalische Verbindung herzustellen.
  • Die Steuerung kann einen internen Systembus 115 einschließen. Der Systembus 115 kann eine Kombination aus einem Steuerbus, einem Adressbus und einem Datenbus einschließen und die Komponenten der Steuerung 102 (z. B. einen Prozessor und/oder Speicher darin) mit anderen Komponenten des Datenspeichersystems 100, einschließlich der Codier-/Decodier-Maschine 104, des Speichermediums 106, des Flash-Speichervorrichtungs-Arrays 108 und der Host-Schnittstelle 112, verbinden. Daten werden zwischen den verschiedenen Komponenten über den Systembus 115 übertragen. Der Systembus 115 kann sich teilweise außerhalb und teilweise innerhalb der Steuerung 102 befinden.
  • Die Host-Vorrichtung 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 Gesichtspunkten schließt das Datenspeichersystem 100 (oder die Host-Schnittstelle 112) einen drahtlosen Transceiver ein, um die Host-Vorrichtung 110 und das Datenspeichersystem 100 in drahtlose Kommunikation miteinander zu bringen.
  • Die Steuerung 102 kann Daten und/oder Speicherzugriffsbefehle von einem Speicherschnittstellenmodul 116 (z. B. einem Gerätetreiber) der Host-Vorrichtung 110 empfangen. Von der Speicherschnittstelle 116 kommunizierte Speicherzugriffsbefehle können von dem Host-System 110 ausgegebene Schreib- und Lesebefehle einschließen. 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 in Reaktion auf Befehle ausführen, die von dem Speicherschnittstellenmodul 116 empfangen werden.
  • Das Flash-Speichervorrichtungs-Array 108 kann mehrere Flash-Speichervorrichtungen 118 einschließen. Eine Flash-Speichervorrichtung 118 stellt einen nichtflüchtige Speichervorrichtung zum Speichern von Daten dar. Gemäß Gesichtspunkten der vorliegenden Technologie schließt die Flash-Speichervorrichtung 118 beispielsweise einen NAND-Flash-Speicher ein. Jede Flash-Speichervorrichtung 118 kann einen einzelnen Flash-Speicherchip oder ein -Modul einschließen, oder kann mehrere Flash-Speicherchips oder -Module einschließen. 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.
  • Die Flash-Speichervorrichtungen 118 können 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) einschließen. 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) umfassen, 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-Speichervorrichtung 118 kann eine Standardschnittstellenspezifikation aufweisen. Dieser Standard stellt sicher, dass Chips von mehreren Herstellern austauschbar verwendet werden können. Die Schnittstelle der Flash-Speichervorrichtung 118 kann verwendet werden, um auf interne Register 120 und eine interne Flash-Steuerung 122 zuzugreifen. In einigen Gesichtspunkten können die Register 120 Adressen-, Befehls- und/oder Datenregister einschließen, 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 Gesichtspunkten 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. von Registern 120) kann Daten, die in dem Speicherzellen-Array 124 gespeichert werden sollen, oder Daten nach einem Abruf aus dem Speicherzellen-Array 124 einschließen und kann außerdem 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. In einigen Gesichtspunkten ist ein Befehlsregister eingeschlossen, um die Parität, die Unterbrechungssteuerung und dergleichen zu steuern. In einigen Gesichtspunkten ist die interne Flash-Steuerung 122 über ein Steuerregister zugänglich, um das allgemeine Verhalten der Flash-Speichervorrichtung 118 zu steuern. Die interne Flash-Steuerung 122 und/oder das Steuerregister können die Anzahl von Stoppbits, die Wortlänge, die Empfänger-Taktquelle steuern und können auch das Umschalten des Adressiermodus, der Paging-Steuerung, der Coprozessorsteuerung und dergleichen steuern.
  • Die Codier-/Decodier-Maschine 104 stellt eine oder mehrere Komponenten dar, die Codewörter codieren und/oder decodieren können, die in dem Flash-Speichervorrichtungs-Array 108 gespeichert und/oder daraus gelesen werden sollen. Die Codier-/Decodier-Maschine 104 kann einen Codierer und einen Decodierer einschließen. Der Decodierer kann einen harten Decodierer und einen Soft-Decision-ECC-Decodierer einschließen. Die Codier-/Decodier-Maschine 104 kann von der Host-Vorrichtung 110 empfangene Daten codieren und aus der Flash-Speichervorrichtung 118 gelesene Codewörter vor dem Senden der decodierten Daten an den Host decodieren. In einigen Implementierungen kann die Codier-/Decodier-Maschine 104 eine oder mehrere Speichervorrichtung(en) und/oder eine oder mehrere Verarbeitungseinheit(en) aufweisen, die verwendet werden, um eine Fehlerkorrektur durchzuführen (z. B. unter Verwendung von LDPC, BCH oder Turbo-Codes). Die Codier-/Decodier-Maschine 104 kann auch ein unspezifisches Informationsmodul einschließen, das unspezifische metrische Eingaben für Codier- und Decodierungsoperationen bestimmt und/oder beibehält. Obwohl die Codier-/Decodier-Maschine 104 als von der Steuerung 102 verschieden dargestellt ist, versteht es sich, dass die Codier-/Decodier-Maschine 104 in die Steuerung 102 integriert sein kann, ohne vom Umfang der vorliegenden Offenbarung abzuweichen.
  • 2 stellt ein beispielhaftes Graphdiagramm 200 dar, das vier mögliche Zellenprogrammverteilungen in einem Mehrpegelzellen-Flash-Speicher (MLC-Flash-Speicher) gemäß Gesichtspunkten 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 eines Speicherblocks 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 Daten aus den Speicherzellen auszulesen, wird eine Lesepegelspannung an die Speicherzellen angelegt und Speicherzellen, die eine Schwellenspannung (Vt) auf oder unter der angelegten Lesepegelspannung aufweisen und daher eingeschaltet werden oder leiten, werden als Teil einer Programmverteilung unter der Lesepegelspannung betrachtet und diejenigen Speicherzellen, die eine Schwellenspannung über der Lesepegelspannung aufweisen und daher nicht eingeschaltet werden 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. Zum Beispiel 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 (d. h. Daten lesen) programmiert wurden, können mehrere Lesevorgänge als Teil eines mehrstufigen Decodierungsvorgangs eingeleitet werden. Zum Beispiel können die Speicherzellen bei der Lesepegelspannung C auf einer ersten Stufe, bei der Lesepegelspannung LL auf einer zweiten Stufe, bei der Lesepegelspannung RR auf einer dritten Stufe usw. gelesen werden. Der mehrstufige Decodierungsvorgang ist in Bezug auf 3A ausführlicher beschrieben. Die Sequenz von Lesepegelspannungen erzeugt mehrere Programmbereiche, die verwendet werden können, um die aus den Speicherzellen ausgelesenen Datenwerte für eine weiche Decodierung zu kategorisieren, falls eine harte Decodierung der Daten fehlschlägt. Die Sequenz von Lesepegelspannungen kann in der Lesepegelspannungsreihenfolge 205 verwendet werden, wie in 2 gezeigt.
  • Auf einer ersten Stufe des mehrstufigen Decodierungsvorgangs 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 des mehrstufigen Decodierungsvorgangs können drei Programmbereiche definiert werden, indem die Daten, die unter Verwendung der Lesepegelspannung C gelesen werden, mit Daten 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 dem mehrstufigen Decodierungsvorgang aggregiert Daten, die unter Verwendung der Lesepegelspannung entsprechend der Stufe gelesen werden, wobei die auf den vorhergehenden Stufen zum Definieren von zusätzlichen Programmbereichen gelesenen Daten den Bereichen von Programmwerten zwischen den verschiedenen Lesepegelspannungen entsprechen. Die vorliegende Technologie ist nicht auf die in den 2 und 3A dargestellte Anzahl an Lesepegelspannungen oder auf die in den 2 und 3A angegebene Lesereihenfolge zum Anlegen der Lesepegelspannungen auf jeweiligen Stufen des mehrstufigen Decodierungsvorgangs 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.
  • Gemäß Gesichtspunkten der vorliegenden Technologie können Konfidenzwerte den jeweiligen Programmbereichen oder „Bins“ zur Verwendung in weichen Decodierungsvorgängen zugewiesen werden. Konfidenzwerte können Log-Likelihood-Verhältnisse (LLRs) einschließen. In LDPC- oder BCH-Anwendungen kann ein binäres LLR den Logarithmus eines Verhältnisses zwischen der Wahrscheinlichkeit, dass ein Bit „0“ oder „1“ beträgt, 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 dem ersten und dem zweiten vorbestimmten Wert sein. Ein LLR kann auch durch einen nicht binären Konfidenzvektor mit einer Gruppe von Werten 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 Decodierungsvorgänge auf jeder der Stufen durchgeführt werden.
  • Gemäß verschiedenen Implementierungen kann die Codier-/Decodier-Maschine 104 bei Durchführung von Decodierungsvorgängen unterschiedliche Sätze von Decodierinformationen und unterschiedliche Anordnungen der Sätze von Decodierinformationen für jede Decodierstufe verwenden. Ferner 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. Gemäß Gesichtspunkten 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.
  • 3A stellt ein Beispiel einer vorgegebenen (oder vordefinierten) Lesepegelspannungsreihenfolge gemäß Gesichtspunkten der vorliegenden Technologie dar. Die vorgegebene Lesepegelspannungsreihenfolge 300 ist auch als Lesepegelspannungsreihenfolge 205 in 2 gezeigt und schließt eine mittlere Lesepegelspannung C, drei untere Lesepegelspannungen und drei obere Lesepegelspannungen ein. Die drei unteren Lesepegelspannungen können in einer abnehmenden Reihenfolge als L, LL und LLL angeordnet sein, wobei die Lesepegelspannung LLL die niedrigste Lesepegelspannung ist. Die drei oberen Lesepegelspannungen können in einer aufsteigenden Reihenfolge als R, RR und RRR angeordnet sein, wobei die Lesepegelspannung RRR die höchste Lesepegelspannung ist. In einigen Beispielen wird die vorgegebene Lesereihenfolge verwendet, wenn zum ersten Mal ein Speicherblock (z. B. zwei oder mehr Speicherzellen) decodiert wird und es keine Historie vorhergehender Lesevorgänge gibt. In einigen Beispielen wird die vorgegebene Lesereihenfolge verwendet, wenn eine Historie vorhergehender Lesevorgänge des Speicherblocks nicht zuverlässig ist. In einigen Ausführungsformen entsprechen die Lesepegelspannungen C, L, R, RR, LL, RRR und LLL vordefinierten Spannungen. In einigen Beispielen, wie in 3A gezeigt, beginnt die vorgegebene Lesereihenfolge bei der mittleren Lesepegelspannung C und setzt sich mit der Lesepegelspannung LL, dann RR, dann L, dann R, dann LLL und dann RRR in dieser Reihenfolge fort.
  • Die 3B bis 3F stellen Beispiele von trendbasierten Lesepegelspannungsreihenfolgen gemäß Gesichtspunkten der vorliegenden Technologie dar. Wie in den Lesepegelspannungsreihenfolgen-Diagrammen 310 bis 350 gezeigt, kann die Lesepegelspannung 355 einer Lesepegelspannung entsprechen, die zuletzt (oder jüngst) bei einem erfolgreichen Decodierungsvorgang verwendet wurde (z. B. die letzte erfolgreiche Lesepegelspannung). Außerdem kann die Lesepegelspannung 349 einer Lesepegelspannung entsprechen, die bei einem erfolgreichen Decodierungsvorgang vor dem letzten erfolgreichen Decodierungsvorgang verwendet wurde (z. B. die vorletzte erfolgreiche Lesepegelspannung). In einigen Beispielen wird ein Trend einer Änderung der Lesepegelspannung entsprechend erfolgreichen Decodierungsvorgängen basierend auf einem Trend zwischen den Lesepegelspannungen 349 und 355 bestimmt. In einigen Beispielen kann die Lesepegelspannung 355 als eine vorläufige Lesepegelspannung ausgewählt werden, die anfänglich für einen Decodierungsvorgang verwendet wird. Details über Decodierungsvorgänge sind unter Bezugnahme auf die 4 bis 6 beschrieben. In einem oder mehreren Beispielen kann die Steuerung 102 einen oder mehrere Prozesse durchführen, die in Bezug auf die 3B bis 3F beschrieben sind.
  • Unter Bezugnahme auf 3B wird, wie in Diagramm 310 gezeigt, eine vorläufige Lesepegelspannung auf L eingestellt, welche die Lesepegelspannung 355 ist. Der Trend wird als abnehmend bestimmt, da die Lesepegelspannung 355 niedriger ist als die Lesepegelspannung 349. Mit anderen Worten zeigt die Änderung von der Lesepegelspannung 349 zu der Lesepegelspannung 355 eine Abnahme der Spannung an. Somit wird in diesem Beispiel basierend auf dem abnehmenden Trend eine sekundäre Lesepegelspannung (eine nächste Lesepegelspannung) als Lesepegelspannung LL erhalten (z. B. bestimmt, ausgewählt oder eingestellt), welche die nächstniedrigere Lesepegelspannung ist, die niedriger ist als die vorläufige Lesepegelspannung L. Unter Verwendung des gleichen abnehmenden Trends wird die nächste Lesepegelspannung als LLL bestimmt, da LLL die nächstniedrigere Lesepegelspannung ist. Da LLL die niedrigste Lesepegelspannung ist, gibt es keine Lesepegelspannung, die niedriger ist als LLL. Daher wird an diesem Punkt die Richtung, die zum Auswählen von nachfolgenden Lesepegelspannungen verwendet wird, umgekehrt (d. h., die Richtung wird umgekehrt zu dem Trend), und eine nächste Lesepegelspannung wird als C bestimmt. Die Lesepegelspannung C ist höher als jede der Lesepegelspannungen, die ausgewählt wurden (d. h. L, LL und LLL), und C ist die niedrigste Lesepegelspannung unter den Lesepegelspannungen, die nicht ausgewählt wurden (d. h. C, R, RR und RRR). C folgt auf die vorläufige Lesepegelspannung L und ist die nächsthöhere Lesepegelspannung im Vergleich zu L. Unter Verwendung der gleichen umgekehrten Richtung (d. h. in der Spannung zunehmend) wird die nächste Lesepegelspannung als R bestimmt, da R die nächsthöhere Lesepegelspannung ist. Unter Verwendung dergleichen umgekehrten Richtung wird die nächste Lesepegelspannung als RR bestimmt, da RR die nächsthöhere Lesepegelspannung ist. Unter Verwendung der gleichen umgekehrten Richtung wird die nächste Lesepegelspannung als RRR bestimmt, da RRR die nächsthöhere Lesepegelspannung ist. Dementsprechend wird basierend auf der Lesepegelspannung 335 und dem durch die Lesepegelspannungen 335 und 349 der vorherigen erfolgreichen Decodierungsvorgänge bestimmten Trend die Sequenz von Lesepegelspannungen als L, LL, LLL, C, R, RR und RRR in dieser Reihenfolge zur Verwendung für einen mehrstufigen Decodierungsvorgang erhalten (z. B. angepasst, bestimmt, ausgewählt oder eingestellt).
  • Unter Bezugnahme auf 3C ist, wie in Diagramm 320 gezeigt, eine vorläufige Lesepegelspannung LL, welche die Lesepegelspannung 355 ist. Der Trend nimmt ab, da die Lesepegelspannung 355 niedriger ist als die Lesepegelspannung 349. Somit wird in diesem Beispiel basierend auf dem abnehmenden Trend eine sekundäre Lesepegelspannung als Lesepegelspannung LLL erhalten, da LLL die nächstniedrigere Lesepegelspannung ist, die niedriger ist als LL. Da LLL die niedrigste Lesepegelspannung ist, gibt es keine Lesepegelspannung, die niedriger ist als LLL. Daher wird an diesem Punkt die Richtung umgekehrt, und eine nächste Lesepegelspannung wird als L bestimmt. Die Lesepegelspannung L ist höher als jede der Lesepegelspannungen, die ausgewählt wurden (d. h. LL und LLL). Außerdem ist L die niedrigste Lesepegelspannung unter den Lesepegelspannungen, die nicht ausgewählt wurden (d. h. L, C, R, RR und RRR). L folgt auf die vorläufige Lesepegelspannung LL und ist die nächsthöhere Lesepegelspannung im Vergleich zu LL. Unter Verwendung dergleichen umgekehrten Richtung ist die nächste Lesepegelspannung C, da C die nächsthöhere Lesepegelspannung ist. Unter Verwendung der gleichen umgekehrten Richtung ist die nächste Lesepegelspannung R, da R die nächsthöhere Lesepegelspannung ist. Unter Verwendung der gleichen umgekehrten Richtung ist die nächste Lesepegelspannung RR, da RR die nächsthöhere Lesepegelspannung ist. Unter Verwendung der gleichen umgekehrten Richtung ist die nächste Lesepegelspannung RRR, da RRR die nächsthöhere Lesepegelspannung ist. Infolgedessen wird basierend auf der Lesepegelspannung 335 und dem durch die Lesepegelspannungen 335 und 349 aus den vorherigen erfolgreichen Decodierungsvorgängen bestimmten Trend die Sequenz von Lesepegelspannungen als LL, LLL, L, C, R, RR und RRR in dieser Reihenfolge zur Verwendung für einen mehrstufigen Decodierungsvorgang erhalten.
  • Unter Bezugnahme auf 3D ist, wie in Diagramm 330 gezeigt, eine vorläufige Lesepegelspannung RR, welche die Lesepegelspannung 355 ist. Der Trend nimmt zu, da die Lesepegelspannung 355 größer ist als die Lesepegelspannung 349. Somit wird in diesem Beispiel basierend auf dem zunehmenden Trend eine sekundäre Lesepegelspannung als Lesepegelspannung RRR erhalten, da RRR die nächsthöhere Lesepegelspannung im Vergleich zu RR ist. Da RRR die höchste Lesepegelspannung ist, gibt es keine Lesepegelspannung, die höher ist als RRR. Daher wird an diesem Punkt die Richtung umgekehrt (d. h., die Richtung nimmt in der Spannung ab), und eine nächste Lesepegelspannung wird als R bestimmt. Die Lesepegelspannung R ist niedriger als jede der Lesepegelspannungen, die ausgewählt wurden (d. h. RR und RRR), und R ist die höchste Lesepegelspannung unter den Lesepegelspannungen, die nicht ausgewählt wurden (d. h. LLL, LL, L, C, R). R folgt auf die vorläufige Lesepegelspannung RR und ist die nächstniedrigere Lesepegelspannung im Vergleich zu RR. Unter Verwendung der gleichen umgekehrten Richtung ist die nächste Lesepegelspannung C, da C die nächstniedrigere Lesepegelspannung ist. Unter Verwendung dergleichen umgekehrten Richtung ist die nächste Lesepegelspannung L, da L die nächstniedrigere Lesepegelspannung ist. Unter Verwendung der gleichen umgekehrten Richtung ist die nächste Lesepegelspannung LL, da LL die nächstniedrigere Lesepegelspannung ist. Unter Verwendung der gleichen umgekehrten Richtung ist die nächste Lesepegelspannung LLL, da LLL die nächstniedrigere Lesepegelspannung ist. Infolgedessen wird basierend auf dem durch die Lesepegelspannungen 335 und 349 aus den vorherigen erfolgreichen Decodierungsvorgängen bestimmten Trend die Sequenz von Lesepegelspannungen als RR, RRR, R, C, L, LL und LLL in dieser Reihenfolge zur Verwendung für einen mehrstufigen Decodierungsvorgang erhalten.
  • Unter Bezugnahme auf 3E ist der Trend ähnlich zu jedem der Trends der 3B und 3C, außer dass die Lesepegelspannungen 355 und 349 C bzw. R sind. Unter Verwendung eines ähnlichen Prozesses wie diejenigen, die in Bezug auf die 3B und 3C beschrieben sind, wird basierend auf der Lesepegelspannung 355 und dem durch die Lesepegelspannungen 335 und 349 bestimmten Trend die Sequenz von Lesepegelspannungen als C, L, LL, LLL, R, RR und RRR in dieser Reihenfolge zur Verwendung für einen mehrstufigen Decodierungsvorgang erhalten.
  • Unter Bezugnahme auf 3F ist der Trend ähnlich zu dem Trend von 3D, außer dass die Lesepegelspannungen 355 und 349 R bzw. LL sind. Unter Verwendung eines ähnlichen Prozesses wie diejenigen, die in Bezug auf 3D beschrieben sind, wird basierend auf der Lesepegelspannung 355 und dem durch die Lesepegelspannungen 335 und 349 bestimmten Trend die Sequenz von Lesepegelspannungen als R, RR, RRR, C, L, LL und LLL in dieser Reihenfolge zur Verwendung für einen mehrstufigen Decodierungsvorgang erhalten.
  • In einigen Ausführungsformen werden eine Sequenz von Lesepegelspannungen basierend auf einem Trend eines Satzes von Decodierungserfolgsindikatoren erhalten (z. B. bestimmt, ausgewählt oder eingestellt). Wie in den 3B bis 3F gezeigt, kann ein erster Decodierungserfolgsindikator der Lesepegelspannung 355 entsprechen, und ein zweiter Decodierungserfolgsindikator kann einer Lesepegelspannung 349 entsprechen, die sich von der Lesepegelspannung 355 unterscheidet. Der erste und der zweite Decodierungserfolgsindikator können aus mindestens zwei jüngsten erfolgreichen Decodierungsvorgängen erhalten werden. In einigen Beispielen ist der Trend eine Richtung, die durch eine Änderung der Lesepegelspannungen angezeigt wird, die zuvor bei erfolgreichen Decodierungsvorgängen verwendet wurden (z. B. die Änderung oder der Trend von der Lesepegelspannung 349 zu der Lesepegelspannung 355). In einigen Beispielen, wie in den 3B, 3C und 3E gezeigt, nimmt der Trend ab. In einigen Beispielen, wie in den 3D und 3F gezeigt, nimmt der Trend zu. In einigen Beispielen ist die Sequenz von Lesepegelspannungen (oder die Lesepegelspannungsreihenfolge) gemäß Pfeilen angeordnet, die in den 3B bis 3F gezeigt sind.
  • In einigen Beispielen wird beim Bestimmen einer Sequenz (oder Reihenfolge) von Lesepegelspannungen, wenn ein Ende eines Trends erreicht wird, die zum Auswählen nachfolgender Lesepegelspannungen für die Sequenz verwendete Richtung umgekehrt, und der Prozess des Bestimmens der nachfolgenden Lesepegelspannungen setzt sich in einer dem Trend entgegengesetzten Richtung fort. Beispielsweise nimmt in 3B der Trend ab. Daher ist die Reihenfolge L, LL und dann LLL. Wenn LLL erreicht wird (was ein Ende des Trends anzeigt), wird die zum Auswählen nachfolgender Lesepegelspannungen verwendete Richtung umgekehrt (d. h., die Richtung wird umgekehrt zu dem Trend), und der Prozess setzt sich in der umgekehrten Richtung fort. Daher ist in diesem Beispiel die Reihenfolge nach LLL C, R, RR und dann RRR.
  • 4 stellt ein Flussdiagramm eines beispielhaften mehrstufigen Decodierungsvorgangs 400 gemäß Gesichtspunkten der vorliegenden Technologie dar. In einem oder mehreren Beispielen kann die Steuerung 102, die Codier-/Decodier-Maschine 104 oder eine Kombination davon einen oder mehrere Prozesse durchführen, die in Bezug auf 4 beschrieben sind. Der mehrstufige Decodierungsvorgang kann in Reaktion auf einen Lesebefehl, der von der Host-Vorrichtung 110 empfangen wird, oder in Reaktion auf einen internen Datenverwaltungsvorgang, der durch die Steuerung 102 ausgeführt wird, eingeleitet werden. Beim Einleiten des mehrstufigen Decodierungsvorgangs wird eine Lesepegelspannung für die Flash-Speichervorrichtung 118, aus der angeforderte Daten auszulesen sind, gemäß einer Sequenz von Lesepegelspannungen eingestellt (Block 401).
  • Eine Sequenz von Lesepegelspannungen kann basierend auf einem Trend eines Satzes von Decodierungserfolgsindikatoren, der einen ersten Decodierungserfolgsindikator und einen zweiten Decodierungserfolgsindikator einschließt, die aus mindestens zwei jüngsten erfolgreichen Decodierungsvorgängen erhalten werden, angepasst, bestimmt oder eingestellt werden. Der erste Decodierungserfolgsindikator kann einer Lesepegelspannung des letzten erfolgreichen Decodierungsvorgangs entsprechen, und der zweite Decodierungserfolgsindikator kann einer Lesepegelspannung des vorletzten erfolgreichen Decodierungsvorgangs entsprechen. Beispiele für Sequenzen von Lesepegelspannungen, die basierend auf einem Trend eines Satzes von Decodierungserfolgsindikatoren bestimmt werden, können die Sequenzen einschließen, die in Bezug auf die 3B bis 3F beschrieben sind. Ein anderes Beispiel für eine Sequenz von Lesepegelspannungen kann eine vorgegebene Sequenz wie diejenige sein, die in Bezug auf 3A beschrieben ist. In einigen Beispielen kann dann, wenn die in Bezug auf 3B beschriebene Sequenz von Lesepegelspannungen (z. B. eine Sequenz von Lesepegelspannungen L, LL, LLL, C, R, RR und RRR) verwendet wird, die anfängliche Lesepegelspannung auf die Lesepegelspannung L eingestellt werden. Die Lesepegelspannung kann durch Programmieren eines Registers in der Flash-Speichervorrichtung mit einem der Lesepegelspannung L entsprechenden Wert eingestellt werden.
  • Nach Einstellen der Lesepegelspannung werden Daten aus einer Gruppe von Speicherzellen unter Verwendung der eingestellten Lesepegelspannung gelesen und die Daten werden an einen harten Decodierer in der Codier-/Decodier-Maschine 104 weitergeleitet, um einen harten Decodierungsvorgang an den Daten auszuführen (Block 405). Wenn der harte Decodierungsvorgang die Daten erfolgreich decodiert (Block 410), werden die decodierten Daten an den anfordernden Prozess zurückgegeben (Block 415). Wenn der harte Decodierungsvorgang erfolglos ist, werden weiche Decodierinformationen ausgewählt (Block 420), und die Daten werden zusammen mit den weichen Decodierinformationen an einen Soft-Decision-Decodierer in der Codier-/Decodier-Maschine 104 weitergeleitet, um unter Verwendung der Daten und der ausgewählten weichen Decodierinformationen einen weichen Decodierungsvorgang auszuführen (Block 425).
  • Wenn der weiche Decodierungsvorgang die Daten erfolgreich decodiert (Block 430), werden die decodierten Daten an den anfordernden Prozess zurückgegeben (Block 415). Wenn der weiche Decodierungsvorgang erfolglos ist, bestimmt der Prozess, ob ein weiterer weicher Schritt oder weicher Decodierungsvorgang auf der aktuellen Stufe des mehrstufigen Decodierungsvorgangs verbleibt (Block 435). Gemäß Gesichtspunkten der vorliegenden Technologie kann jede Stufe des mehrstufigen Decodierungsvorgangs einen harten Decodierungsvorgang und mehrere weiche Decodierungsvorgänge einschließen. Jeder der weichen Decodierungsvorgänge 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 der weiche Decodierungsvorgang unter Verwendung eines ersten Satzes von weichen Decodierinformationen erfolglos ist, kann der weiche Decodierungsvorgang unter Verwendung derselben Daten, jedoch mit einem zweiten ausgewählten Satz von weichen Decodierinformationen wiederholt werden (Block 420). Diese Schleife von weichen Decodierungsvorgängen kann wiederholt werden, bis entweder die Daten erfolgreich decodiert sind oder alle mit der aktuellen Stufe verknüpften Sätze von weichen Decodierinformationen in weichen Decodierversuchen verwendet worden sind. Gemäß einigen Beispielen der vorliegenden Technologie kann jede Stufe drei Sätze von weichen Decodierinformationen aufweisen, mit denen eine weiche Decodierung von Daten versucht wird.
  • Wenn keine weiteren weichen Schritte oder weichen Decodierungsvorgänge für die aktuelle Stufe verbleiben (Block 435), bestimmt der Vorgang, ob in dem mehrstufigen Decodierungsvorgang eine weitere Stufe verbleibt (Block 440). In einigen Beispielen kann der mehrstufige Decodierungsvorgang bis zu sieben Stufen einschließen, die beispielsweise der in den 2 und 3A bis 3F dargestellten Sequenz von sieben Lesepegelspannungen entsprechen. Bei sieben Stufen und sieben Lesepegelspannungen handelt es sich um Beispiele, und die vorliegende Technologie ist nicht auf diese Zahlen beschränkt. Wenn eine weitere Stufe in dem Vorgang verbleibt, wird die nächste Lesepegelspannung in der Sequenz eingestellt (Block 401) und die vorstehend beschriebenen Stufenvorgänge wiederholen sich. Diese Schleife von harten und weichen Decodierungsvorgängen wiederholt sich, bis entweder die Daten erfolgreich decodiert und zu dem anfordernden Prozess zurückgegeben werden (Block 415) oder alle harten und weichen Decodierungsvorgänge auf jeder der Stufen erfolglos sind. Wenn die Decodierung erfolglos ist, wird ein Lesefehler an den anfordernden Prozess zurückgegeben (Block 445).
  • 5 stellt ein Flussdiagramm 500 eines beispielhaften mehrstufigen Decodierungsvorgangs gemäß Gesichtspunkten der vorliegenden Technologie dar. In einem oder mehreren Beispielen kann die Steuerung 102, die Codier-/Decodier-Maschine 104 oder eine Kombination davon einen oder mehrere Prozesse durchführen, die in Bezug auf 5 beschrieben sind. Ähnlich dem vorstehend in Bezug auf 4 beschriebenen Prozess kann der in 5 dargestellte mehrstufige Decodierungsvorgang in Reaktion auf einen Lesebefehl, der von der Host-Vorrichtung 110 empfangen wird, oder in Reaktion auf einen internen Datenverwaltungsvorgang, der durch die Steuerung 102 ausgeführt wird, eingeleitet werden.
  • Eine Sequenz von Lesepegelspannungen kann angepasst oder eingestellt werden, wie hierin beschrieben (z. B. die Beschreibungen in Bezug auf die 3A bis 3F und 4, Anfänglich wird eine vorläufige Lesepegelspannung aus der Sequenz von Lesepegelspannungen, die in einem mehrstufigen Decodierungsvorgang verwendet wird, erhalten, z. B. ausgewählt (Block 505). Die vorläufige Lesepegelspannung kann basierend auf einem (z. B. von der Steuerung 102) beibehaltenen Decodierungserfolgsindikator aus der Sequenz von Lesepegelspannungen erhalten werden. Gemäß Gesichtspunkten der vorliegenden Technologie kann der Decodierungserfolgsindikator ein gespeicherter Datenwert sein, der die Lesepegelspannung aus der Sequenz von Spannungen angibt, die der Stufe des mehrstufigen Decodierungsvorgangs entspricht, die Daten in einem vorhergehenden Decodierungsvorgang erfolgreich decodiert hat. Der gespeicherte Datenwert (Erfolgsindikator) kann die erfolgreiche Lesepegelspannung aus dem letzten Decodierungsvorgang auf einem gegebenen Block, einer gegebenen Gruppe von Blöcken, Matrizen, einer gegebenen Gruppe von Matrizen oder einer gegebenen Flash-Speichervorrichtung 118 angeben, wobei jeweilige Datenwerte die Lesepegelspannung angeben, die für die einzelnen Blöcke, Gruppen von Blöcken, Matrizen, Gruppen von Matrizen oder Flash-Speichervorrichtungen 118 in dem Datenspeichersystem gespeichert sind. Ein einziger gespeicherter Datenwert, der die zuletzt in einem erfolgreichen Decodierungsvorgang verwendeten Lesepegelspannungen angibt, kann für alle Flash-Speichervorrichtungen 118 in dem Datenspeichersystem anstelle einzelner Datenwerte für die verschiedenen vorstehend aufgelisteten Gruppierungen von Speicherzellen beibehalten werden, um die Speichernutzung für diese Daten zu minimieren. In einigen Beispielen können Indexwerte, welche die zuletzt in einem erfolgreichen Decodierungsvorgang verwendeten Lesepegelspannungen angeben, für alle Flash-Speichervorrichtungen 118 in dem Datenspeichersystem beibehalten werden. In einigen Beispielen, wie in den 3B bis 3F gezeigt, entspricht der Decodierungserfolgsindikator einer Lesepegelspannung 355, die zuletzt in einem erfolgreichen Decodierungsvorgang verwendet wurde. Daher kann die Lesepegelspannung 355 als die vorläufige Lesepegelspannung erhalten werden.
  • In einigen Ausführungsformen kann ein Stapelspeicher Daten halten, die mit den erfolgreichen Decodierungsvorgängen verknüpft sind. Die Stapelspeicherdaten können durch den Decodierungserfolgsindikator aktualisiert werden, welcher der Lesepegelspannung entspricht, die zuletzt in einem erfolgreichen Decodierungsvorgang verwendet wurde. Daher kann der Decodierungserfolgsindikator, welcher der Lesepegelspannung entspricht, die zuletzt in einem erfolgreichen Decodierungsvorgang verwendet wurde, in den Stapelspeicher geschoben werden. Der Stapelspeicher kann jedes Mal aktualisiert werden, wenn der Decodierungserfolgsindikator einer Lesepegelspannung entspricht, die sich von der Lesepegelspannung eines vorherigen Zeitpunkts, zu dem der Stapelspeicher aktualisiert wurde, unterscheidet. Daher schließt der Stapelspeicher einen geordnete Decodierungserfolgsindikatoren derart ein, dass die Decodierungserfolgsindikatoren nach dem Zeitpunkt ihrer jeweiligen erfolgreichen Decodierungsvorgänge angeordnet sind. In einigen Beispielen schließt der Stapelspeicher zwei oder mehr Speicherorte, z. B. zwei Speicherorte, ein und hält somit die Decodierungserfolgsindikatoren, die den letzten zwei erfolgreichen Decodierungsvorgängen entsprechen. In einigen Beispielen schließt der Stapelspeicher vier oder mehr Speicherorte, z. B. vier Speicherorte, ein und hält somit die Decodierungserfolgsindikatoren, die den letzten vier erfolgreichen Decodierungsvorgängen entsprechen. In einigen Beispielen befindet sich der jüngste Decodierungserfolgsindikator oben auf dem Stapelspeicher. Die Lesepegelspannung, die dem jüngsten Decodierungserfolgsindikator entspricht, kann als die vorläufige Lesepegelspannung ausgewählt werden.
  • In einem oder mehreren Beispielen wird ein Trend der Decodierungserfolgsindikatoren basierend mindestens auf den Daten in dem Stapelspeicher bestimmt. Der Trend kann basierend auf den Lesepegelspannungen bestimmt werden, die den Decodierungserfolgsindikatoren des Stapelspeichers entsprechen. In einigen Beispielen zeigt der Trend an, ob die Lesepegelspannungen, die den Decodierungserfolgsindikatoren des Stapelspeichers entsprechen, zunehmen oder abnehmen. In einigen Beispielen schließt der Stapelspeicher zwei Speicherorte ein und hält somit die Decodierungserfolgsindikatoren, die den letzten zwei erfolgreichen Decodierungsvorgängen entsprechen. Somit kann der Trend anzeigen, ob eine Änderung in den Lesepegelspannungen, die den letzten zwei erfolgreichen Decodierungsvorgängen entsprechen, zunimmt oder abnimmt (z. B. eine Zunahme oder Abnahme der Lesepegelspannungen). Somit kann ein Trend als entweder zunehmend oder abnehmend (z. B. Zunahme oder Abnahme der Lesepegelspannungen) angezeigt werden.
  • In einem oder mehreren Gesichtspunkten wird eine Lesepegelspannung, die dem letzten erfolgreichen Decodierungsvorgang entspricht (d. h. die letzte erfolgreiche Lesepegelspannung), mit einer Lesepegelspannung verglichen, die dem vorletzten erfolgreichen Decodierungsvorgang entspricht (d. h. der vorletzten erfolgreichen Lesepegelspannung). Wenn die letzte erfolgreiche Lesepegelspannung kleiner ist als die vorletzte erfolgreiche Lesepegelspannung, wird bestimmt, dass der Trend abnimmt (oder in den Lesepegelspannungen abnimmt). Wenn die letzte erfolgreiche Lesepegelspannung größer ist als die vorletzte erfolgreiche Lesepegelspannung, wird bestimmt, dass der Trend zunimmt (oder in den Lesepegelspannungen zunimmt). Zum Beispiel nimmt jeder der Trends für die 3B, 3C und 3E ab, da die Lesepegelspannung 355 kleiner ist als die Lesepegelspannung 349. Jeder der Trends für die 3D und 3F nimmt zu, da die Lesepegelspannung 355 größer ist als die Lesepegelspannung 349.
  • In einem oder mehreren Beispielen schließt der vorstehend beschriebene Stapelspeicher oder jeweilige Speicherort einen Satz von Decodierungserfolgsindikatoren ein, der einer Historie von erfolgreichen Decodierungsvorgängen entspricht. In einigen Beispielen schließt der Satz von Decodierungserfolgsindikatoren mindestens zwei Decodierungserfolgsindikatoren ein. In einigen Beispielen weist der Satz von Decodierungserfolgsindikatoren zwei oder mehr aufeinanderfolgende Decodierungserfolgsindikatoren auf, die einen jüngsten Decodierungserfolgsindikator und einen zweitjüngsten Decodierungserfolgsindikator einschließen.
  • In einem oder mehreren Beispielen schließt der Satz von Decodierungserfolgsindikatoren einen ersten Decodierungserfolgsindikator und einen zweiten Decodierungserfolgsindikator ein. Der Trend des Satzes von Decodierungserfolgsindikatoren kann basierend auf einem Trend zwischen einer Lesepegelspannung, die dem ersten Decodierungserfolgsindikator entspricht, und einer Lesepegelspannung, die dem zweiten Decodierungserfolgsindikator entspricht, bestimmt werden. Der erste Decodierungserfolgsindikator kann jünger sein als der zweite Decodierungserfolgsindikator. In einigen Beispielen sind der erste und der zweite Decodierungserfolgsindikator aufeinanderfolgende Decodierungserfolgsindikatoren, die zwei unterschiedlichen Lesepegelspannungen entsprechen. In einigen Beispielen ist der erste Decodierungserfolgsindikator der jüngste Decodierungserfolgsindikator. In einigen Beispielen kann eine sekundäre Lesepegelspannung aus einer Sequenz von Lesepegelspannungen basierend auf dem Trend zwischen der vorletzten erfolgreichen Lesepegelspannung und der letzten erfolgreichen Lesepegelspannung erhalten werden.
  • Unter Verwendung der vorläufigen Lesepegelspannung wird ein vorläufiger Decodierungsvorgang ausgeführt (Block 510). Insbesondere werden Daten aus einer Gruppe von Speicherzellen unter Verwendung der vorläufigen Lesepegelspannung gelesen und die Daten werden an einen Decodierer in der Codier-/Decodier-Maschine 104 zum Decodieren weitergeleitet. Wenn der vorläufige Decodierungsvorgang erfolgreich ist, werden die decodierten Daten an den anfordernden Prozess zurückgegeben (Block 550). In einigen Beispielen werden Daten aus der Gruppe von Speicherzellen unter Verwendung der vorläufigen Lesepegelspannung gelesen und die Daten werden an einen harten Decodierer in der Codier-/Decodier-Maschine 104 zum Decodieren (Block 405) weitergeleitet und dann können die Blöcke 410-430, einschließlich einer weichen Decodierung, ausgeführt werden.
  • Wenn der vorläufige Decodierungsvorgang erfolglos ist, wird eine sekundäre Lesepegelspannung aus der Sequenz von Lesepegelspannungen, die in dem mehrstufigen Decodierungsvorgang verwendet wird, erhalten, z. B. bestimmt (Block 520). Die sekundäre Lesepegelspannung kann basierend auf dem Trend der Lesepegelspannungen, die den erfolgreichen Decodierungsvorgängen entsprechen, erhalten (z. B. ausgewählt) werden. Wenn der Trend der Lesepegelspannungen zunimmt, kann die sekundäre Lesepegelspannung aus den Lesepegelspannungen derart erhalten werden, dass die sekundäre Lesepegelspannung größer ist als die vorläufige Lesepegelspannung. Zum Beispiel ist eine sekundäre Lesepegelspannung eine nächsthöhere Lesepegelspannung über der vorläufigen Lesepegelspannung. Anders ausgedrückt, ist eine sekundäre Lesepegelspannung eine nächste Lesepegelspannung, die größer ist als die vorläufige Lesepegelspannung.
  • Wenn der Trend der Lesepegelspannungen abnimmt, kann die sekundäre Lesepegelspannung aus der Sequenz von Lesepegelspannungen derart erhalten werden, dass die sekundäre Lesepegelspannung kleiner ist als die vorläufige Lesepegelspannung. Zum Beispiel ist eine sekundäre Lesepegelspannung eine nächstniedrigere Lesepegelspannung unter der vorläufigen Lesepegelspannung. Anders ausgedrückt, ist eine sekundäre Lesepegelspannung eine nächste Lesepegelspannung, die kleiner ist als die vorläufige Lesepegelspannung.
  • Der Prozess zum Erhalten einer vorläufigen Lesepegelspannung und einer sekundären Lesepegelspannung wird in Bezug auf die 3B bis 3F ausführlicher beschrieben. In einem oder mehreren Beispielen ist eine vorläufige Lesepegelspannung die letzte erfolgreiche Lesepegelspannung (z. B. die Lesepegelspannung 335 in den 3B bis 3F). In einem oder mehreren Beispielen ist eine sekundäre Lesepegelspannung die Lesepegelspannung, die benachbart zu der vorläufigen Lesepegelspannung ist und die in Abhängigkeit von dem Trend entweder größer oder kleiner ist als die vorläufige Lesepegelspannung, jedoch ist eine sekundäre Lesepegelspannung nicht die vorletzte erfolgreiche Lesepegelspannung (z. B. nicht die Lesepegelspannung 349 in den 3B bis 3F). In 3B ist die sekundäre Lesepegelspannung die Lesepegelspannung LL. In 3C ist die sekundäre Lesepegelspannung die Lesepegelspannung LLL. In 3D ist die sekundäre Lesepegelspannung die Lesepegelspannung RRR. In 3E ist die sekundäre Lesepegelspannung die Lesepegelspannung L. In 3F ist die sekundäre Lesepegelspannung die Lesepegelspannung RR.
  • Mit der sekundären Lesepegelspannung wird ein sekundärer Decodierungsvorgang ausgeführt (Block 525). Insbesondere werden Daten aus einer Gruppe von Speicherzellen unter Verwendung der ausgewählten sekundären Lesepegelspannung gelesen und die Daten werden an einen Decodierer in der Codier-/Decodier-Maschine 104 zum Decodieren weitergeleitet. Wenn der sekundäre Decodierungsvorgang erfolgreich ist, werden die decodierten Daten an den anfordernden Prozess zurückgegeben (Block 550). In einigen Beispielen werden Daten aus der Gruppe von Speicherzellen unter Verwendung der ausgewählten sekundären Lesepegelspannung gelesen und die Daten werden an einen harten Decodierer in der Codier-/Decodier-Maschine 104 zum Decodieren (Block 405) weitergeleitet und dann können die Blöcke 410-430, einschließlich einer weichen Decodierung, ausgeführt werden.
  • Wenn der sekundäre Decodierungsvorgang erfolglos ist, können ein oder mehrere zusätzliche in 4 dargestellte Decodierungsvorgänge zum Decodieren der in den Speicherzellen gespeicherten Daten verwendet werden (Block 535). In einigen Beispielen können der eine oder die mehreren Decodierungsvorgänge basierend auf dem Trend der Lesepegelspannungen ausgeführt werden, die den zuvor erfolgreichen Decodierungsvorgängen entsprechen. In einigen Beispielen können der eine oder die mehreren Decodierungsvorgänge gemäß den geordneten Lesepegelspannungen, die in Bezug auf die 3B bis 3F beschrieben sind (mit Ausnahme der vorläufigen und der sekundären Lesepegelspannung, da diese in den Blöcken 505-525 verwendet wurden), ausgeführt werden. In einigen Beispielen können die geordneten Lesepegelspannungen, die in Bezug auf die 3B bis 3F beschrieben sind, auf dem Trend der Lesepegelspannungen basieren, die den zuvor erfolgreichen Decodierungsvorgängen entsprechen. Ein oder mehrere Gesichtspunkte der vorliegenden Technologie ermöglichen das Anpassen der Sequenz (oder Reihenfolge) von Lesepegelspannungen basierend auf dem Trend der Lesepegelspannungen, die zuvor erfolgreichen Decodierungsvorgängen entsprechen. Wenn ein Decodierungsvorgang erfolglos ist (z. B. ein Decodierungsvorgang unter Verwendung der vorläufigen Lesepegelspannung der Sequenz von Lesepegelspannungen), können eine sekundäre Lesepegelspannung und/oder andere nachfolgende Lesepegelspannungen der Sequenz von Lesepegelspannungen verwendet werden, um den Decodierungsvorgang zu wiederholen.
  • Wenn einer des einen oder der mehreren zusätzlichen Decodierungsvorgänge erfolgreich ist (Block 540), können die decodierten Daten an den anfordernden Prozess zurückgegeben werden (Block 550). Wenn der eine oder die mehreren zusätzlichen Decodierungsprozesse erfolglos sind (Block 540), kann ein Lesefehler an den anfordernden Prozess zurückgegeben werden (Block 545).
  • Nach einem erfolgreichen Decodierungsvorgang der Daten kann ein Satz von Decodierungserfolgsindikatoren beibehalten werden (Block 555). Zum Beispiel kann der entsprechende Datenwert basierend auf dem Erfolg des vorläufigen oder sekundären Decodierungsvorgangs unter Verwendung der vorläufigen oder sekundären Lesepegelspannung oder des einen oder der mehreren zusätzlichen Decodierungsvorgänge, während derer die Daten erfolgreich decodiert wurden, aktualisiert werden. In dem vorstehend beschriebenen Beispiel unter Verwendung des Stapelspeichers können der Decodierungserfolgsindikator des vorläufigen oder sekundären Decodierungsvorgangs oder des einen oder der mehreren zusätzlichen Decodierungsvorgänge, während derer die Daten erfolgreich decodiert wurden, in den Stapelspeicher geschoben werden.
  • Die Vielzahl von Speicherzellen kann Teil eines Blocks aus einer Vielzahl von Blöcken auf der nichtflüchtigen Speichervorrichtung sein, und die Steuerung oder eine andere Komponente (z. B. eine andere Komponente in dem Datenspeichersystem 100 oder der Flash-Speichervorrichtung 118) kann einen entsprechenden Decodierungserfolgsindikator für den Block, eine Gruppe von Blöcken, die den Block aufweist, oder die nichtflüchtige Speichervorrichtung beibehalten.
  • Jede Stufe eines mehrstufigen Decodierungsvorgangs kann das Ausführen eines oder mehrerer Decodierungsvorgänge zum Decodieren von Daten, die aus der Vielzahl von Speicherzellen gelesen werden, unter Verwendung einer jeweiligen Lesepegelspannung aus der Sequenz von Lesepegelspannungen, die der Stufe entspricht, einschließen. Die Stufen des mehrstufigen Decodierungsvorgangs können sequenziell ausgeführt werden, bis einer des einen oder der mehreren Decodierungsvorgänge auf einer der Stufen die aus der Vielzahl von Speicherzellen gelesenen Daten erfolgreich decodiert. Der eine oder die mehreren Decodierungsvorgänge jeder Stufe des mehrstufigen Decodierungsvorgangs können einen harten Decodierungsvorgang und bis zu einer Vielzahl von weichen Decodierungsvorgängen einschließen. In einigen Beispielen können die Stufen des mehrstufigen Decodierungsvorgangs basierend auf einer Sequenz von Lesepegelspannungen wie den Sequenzen, die in Bezug auf die 3B bis 3F beschrieben sind, ausgeführt werden.
  • Jeder Decodierungserfolgsindikator kann einer Lesepegelspannung der Sequenz von Lesepegelspannungen entsprechen. Das Beibehalten der Decodierungserfolgsindikatoren schließt das Einstellen der Decodierungserfolgsindikatoren ein, um die Lesepegelspannungen aus der Sequenz von Lesepegelspannungen anzugeben, die zum erfolgreichen Decodieren von Daten verwendet wurden. Der Decodierungserfolgsindikator kann beibehalten werden, indem der Decodierungserfolgsindikator des vorläufigen oder sekundären Decodierungsvorgangs oder des einen oder der mehreren zusätzlichen Decodierungsvorgänge, während derer die Daten erfolgreich decodiert wurden, in den Stapelspeicher geschoben wird.
  • In einigen Ausführungsformen wird der Satz von Decodierungserfolgsindikatoren beibehalten, z. B. aktualisiert, wenn einer des vorläufigen Decodierungsvorgangs, des sekundären Decodierungsvorgangs oder des einen oder der mehreren zusätzlichen Decodierungsvorgänge erfolgreich ist.
  • 6 stellt ein Flussdiagramm 600 eines beispielhaften mehrstufigen Decodierungsvorgangs gemäß Gesichtspunkten der vorliegenden Technologie dar. In einem oder mehreren Beispielen kann die Steuerung 102, die Codier-/Decodier-Maschine 104 oder eine Kombination davon einen oder mehrere Prozesse durchführen, die in Bezug auf 6 beschrieben sind. Ähnlich dem vorstehend in Bezug auf 4 beschriebenen Prozess kann der in 6 dargestellte mehrstufige Decodierungsvorgang als Reaktion auf einen Lesebefehl, der von der Host-Vorrichtung 110 empfangen wird, oder als Reaktion auf einen internen Datenverwaltungsvorgang, der durch die Steuerung 102 ausgeführt wird, eingeleitet werden.
  • Eine Sequenz von Lesepegelspannungen kann basierend auf einem Trend eines Satzes von Decodierungserfolgsindikatoren, die mindestens einen ersten Decodierungserfolgsindikator und einen zweiten Decodierungserfolgsindikator einschließen, die aus mindestens zwei jüngsten (oder vorherigen) erfolgreichen Decodierungsvorgängen erhalten werden, angepasst oder eingestellt werden (Block 610). Der erste Decodierungserfolgsindikator kann einer Lesepegelspannung des letzten (oder jüngsten) erfolgreichen Decodierungsvorgangs entsprechen. Der zweite Decodierungserfolgsindikator kann einer Lesepegelspannung des vorletzten erfolgreichen Decodierungsvorgangs entsprechen. Beispiele für Sequenzen von Lesepegelspannungen, die basierend auf einem Trend eines Satzes von Decodierungserfolgsindikatoren bestimmt werden, können die Sequenzen einschließen, die in Bezug auf die 3B bis 3F beschrieben sind.
  • Eine erste Lesepegelspannung der Sequenz kann auf eine Lesepegelspannung eingestellt werden, die dem ersten Decodierungserfolgsindikator entspricht, wenn der erste Decodierungserfolgsindikator jünger ist als der zweite Decodierungserfolgsindikator. Der Trend des Satzes von Decodierungserfolgsindikatoren nimmt ab, wenn die Lesepegelspannung, die dem ersten Decodierungserfolgsindikator entspricht, kleiner ist als die Lesepegelspannung, die dem zweiten Decodierungserfolgsindikator entspricht. Der Trend des Satzes von Decodierungserfolgsindikatoren nimmt zu, wenn die Lesepegelspannung, die dem ersten Decodierungserfolgsindikator entspricht, größer ist als die Lesepegelspannung, die dem zweiten Decodierungserfolgsindikator entspricht. Eine zweite Lesepegelspannung der Sequenz kann auf eine Lesepegelspannung eingestellt werden, die kleiner ist als die erste Lesepegelspannung, wenn der Trend des Satzes von Decodierungserfolgsindikatoren abnimmt. Eine zweite Lesepegelspannung der Sequenz kann auf eine Lesepegelspannung eingestellt werden, die höher ist als die erste Lesepegelspannung, wenn der Trend des Satzes von Decodierungserfolgsindikatoren zunimmt.
  • Wie in den 3B bis 3F gezeigt, können Lesepegelspannungen die niedrigste Lesepegelspannung (z. B. LLL) und die höchste Lesepegelspannung (RRR) einschließen. Wenn eine Lesepegelspannung in der Sequenz die niedrigste Lesepegelspannung (z. B. LLL) ist, ist eine nächste Lesepegelspannung in der Sequenz eine Lesepegelspannung, die auf die erste Lesepegelspannung folgt und höher ist als diese (z. B. C in 3B, L in 3C und R in 3E). Wenn eine Lesepegelspannung in der Sequenz die höchste Lesepegelspannung (z. B. RRR) ist, ist eine nächste Lesepegelspannung in der Sequenz eine Lesepegelspannung, die auf die erste Lesepegelspannung folgt und niedriger ist als diese (z. B. R in 3D und C in 3F). Wenn eine Lesepegelspannung in der Sequenz die niedrigste oder die höchste Lesepegelspannung (z. B. LLL oder RRR) ist, wird eine nächste Lesepegelspannung in der Sequenz (z. B. die nächste Lesepegelspannung nach LLL oder RRR) basierend auf einer Richtung bestimmt, die umgekehrt zu dem Trend ist.
  • Ein oder mehrere aktuelle Decodierungsvorgänge können ausgeführt werden, um Daten, die aus einer Vielzahl von Speicherzellen gelesen werden, basierend auf der Sequenz von Lesepegelspannungen zu decodieren (Block 620). Eine Lesepegelspannung kann für einen Decodierungsvorgang für einen gegebenen Block, eine gegebene Gruppe von Blöcken, Matrize, eine gegebene Gruppe von Matrizen oder eine gegebene Flash-Speichervorrichtung 118 verwendet werden. Jeder des einen oder der mehreren aktuellen Decodierungsvorgänge kann eine Stufe eines mehrstufigen Decodierungsvorgängen sein, der in Bezug auf 4 beschrieben ist, wobei jede Stufe einen harten Decodierungsvorgang (Block 405) und einen oder mehrere Software-Decodierungsvorgänge (Block 425) einschließen kann. Die Vielzahl von Speicherzellen kann sich in einer Flash-Speichervorrichtung 118 befinden. Ein erster des einen oder der mehreren aktuellen Decodierungsvorgänge kann einer ersten Stufe der mehrstufigen Decodierungsvorgänge entsprechen und kann die erste Lesepegelspannung der Sequenz verwenden, um Daten zu decodieren. Ein zweiter des einen oder der mehreren aktuellen Decodierungsvorgänge, der den ersten ermöglicht, kann einer zweiten Stufe der mehrstufigen Decodierungsvorgänge entsprechen und kann die zweite Lesepegelspannung der Sequenz verwenden, um Daten zu decodieren.
  • Die decodierten Daten aus einem des einen oder der mehreren aktuellen Decodierungsvorgänge kann zurückgegeben werden, wenn der eine des einen oder der mehreren aktuellen Decodierungsvorgänge erfolgreich ist (Block 630).
  • Der Satz von Decodierungserfolgsindikatoren kann basierend mindestens auf einem erfolgreichen des einen oder der mehreren aktuellen Decodierungsvorgänge beibehalten werden (Block 640). Jeder Decodierungserfolgsindikator kann die erfolgreiche Lesepegelspannung eines vorherigen Decodierungsvorgangs auf einem gegebenen Block, einer gegebenen Gruppe von Blöcken, Matrize, einer gegebenen Gruppe von Matrizen oder einer gegebenen Flash-Speichervorrichtung 118 angeben. Der Prozess des Beibehaltens eines Satzes von Decodierungserfolgsindikatoren wird nachstehend weiter beschrieben.
  • In einem oder mehreren Beispielen wird, wenn eine Lesepegelspannung, die für den erfolgreichen des einen oder der mehreren aktuellen Decodierungsvorgänge verwendet (oder damit verknüpft) wurde, sich von einer Lesepegelspannung unterscheidet, die dem ersten Decodierungserfolgsindikator entspricht, Folgendes beobachtet:
    • - eine Lesepegelspannung, die dem zweiten Decodierungserfolgsindikator entspricht, wird auf die Lesepegelspannung, die dem ersten Decodierungserfolgsindikator entspricht, eingestellt (oder geändert). Zum Beispiel wird der Wert der vorletzten erfolgreichen Lesepegelspannung auf den Wert der letzten erfolgreichen Lesepegelspannung eingestellt; und
    • - die Lesepegelspannung, die dem ersten Decodierungserfolgsindikator entspricht, wird auf die Lesepegelspannung eingestellt (oder geändert), die für den erfolgreichen des einen oder der mehreren aktuellen Decodierungsvorgänge verwendet wurde. Zum Beispiel wird der Wert der letzten erfolgreichen Lesepegelspannung auf den Wert der aktuellen erfolgreichen Lesepegelspannung eingestellt.
  • In einem oder mehreren Beispielen wird, wenn die Lesepegelspannung, die für den erfolgreichen des einen oder der mehreren aktuellen Decodierungsvorgänge verwendet (oder damit verknüpft) wurde, die gleiche ist wie die Lesepegelspannung, die dem ersten Decodierungserfolgsindikator entspricht, Folgendes beobachtet:
    • - die Lesepegelspannung, die dem ersten Decodierungserfolgsindikator entspricht, bleibt auf ihrem vorhergehenden Wert, wird nicht durch den erfolgreichen des einen oder der mehreren aktuellen Decodierungsvorgänge geändert und wird als die letzte erfolgreiche Lesepegelspannung betrachtet;
    • - der erste Decodierungserfolgsindikator verbleibt als der jüngste Decodierungserfolgsindikator (oder der letzte Decodierungserfolgsindikator);
    • - der mit dem ersten Decodierungserfolgsindikator verknüpfte Decodierungsvorgang verbleibt als der jüngste erfolgreiche Decodierungsvorgang oder (oder der letzte erfolgreiche Decod ieru ngsvorgang);
    • - die Lesepegelspannung, die dem zweiten Decodierungserfolgsindikator entspricht, bleibt auf ihrem vorhergehenden Wert, wird nicht durch den erfolgreichen des einen oder der mehreren aktuellen Decodierungsvorgänge geändert und wird als die vorletzte erfolgreiche Lesepegelspannung betrachtet;
    • - der zweite Decodierungserfolgsindikator verbleibt als der zweitjüngste Decodierungserfolgsindikator (oder der vorletzte Decodierungserfolgsindikator); und
    • - der mit dem zweiten Decodierungserfolgsindikator verknüpfte Decodierungsvorgang verbleibt als der zweitjüngste erfolgreiche Decodierungsvorgang oder (oder der vorletzte erfolgreiche Decodierungsvorgang);
    • - die mit dem ersten und dem zweiten Decodierungserfolgsindikator verknüpften Decodierungsvorgänge können als nachfolgende jüngste erfolgreiche Decodierungsvorgänge verbleiben; und
    • - die mit dem ersten und dem zweiten Decodierungserfolgsindikator verknüpften Decodierungsvorgänge können als die zwei jüngsten erfolgreichen Decodierungsvorgänge verbleiben.
  • In einem oder mehreren Gesichtspunkten kann die Steuerung 102 die letzte und die vorletzte erfolgreiche Lesepegelspannung aufzeichnen, z. B. pro Blockbasis. Wenn die Steuerung 102 das Lesen und Decodieren von Daten wiederholen muss, kann die Steuerung 102 die zwei vorhergehenden Lesepegelspannungen für diesen Block lesen und die nächste Lesepegelspannung vorhersagen. Nach einer erfolgreichen Lesewiederholung kann die Steuerung 102 die aktuelle Lesepegelspannung mit der letzten erfolgreichen Lesepegelspannung vergleichen. Wenn die zwei Lesepegelspannungen gleich sind, ist keine Aktualisierung für die letzte und die vorletzte erfolgreiche Lesespannung notwendig. Wenn die zwei Lesepegelspannungen unterschiedlich sind, dann kann die Steuerung 102 die letzte erfolgreiche Lesepegelspannung zu der vorletzten erfolgreichen Lesepegelspannung verschieben und kann die aktuelle Lesepegelspannung zu der letzten erfolgreichen Lesepegelspannung verschieben. In einem oder mehreren Gesichtspunkten kann ein Pseudocode zum Beibehalten oder Aktualisieren von Lesepegelspannungen wie folgt dargestellt werden:

 int update_read_level_history_per_block(current_read_level, block_id)
 {if (current_read_level_voltage == last_successful_read_level_voltage[block_id])
  {
    return;
  }
  else
  {second_to_last_successful_read_level_voltage[block_id] =
 last_successful_read_level_voltage[block_id];
    last_successful_relad_level- voltage[block_id] = current_read_level_voltage; 



    }
  }
  • In einem oder mehreren Beispielen kann sich das Wort „letzte“ oder seine Variation manchmal auf „jüngste“ oder eine Variation davon beziehen und umgekehrt. In einem oder mehreren Beispielen kann sich das Wort „vorhergehende“, „vorherige“ oder eine Variation davon manchmal auf „jüngste“ oder eine Variation davon beziehen und umgekehrt.
  • Gemäß Gesichtspunkten der vorliegenden Technologie wird ein maschinenimplementiertes Verfahren bereitgestellt, welches das Erhalten einer vorläufigen Lesepegelspannung basierend auf einem ersten Decodierungserfolgsindikator und das Ausführen eines vorläufigen Decodierungsvorgangs zum Decodieren von Daten, die aus einer Vielzahl von Speicherzellen gelesen werden, unter Verwendung der vorläufigen Lesepegelspannung einschließt. Wenn der vorläufige Decodierungsvorgang erfolglos ist, schließt das Verfahren das Erhalten einer sekundären Lesepegelspannung basierend mindestens auf einem Trend eines Satzes von Decodierungserfolgsindikatoren, der den ersten Decodierungserfolgsindikator und einen zweiten Decodierungserfolgsindikator aufweist, und das Ausführen eines sekundären Decodierungsvorgangs zum Decodieren von Daten, die aus der Vielzahl von Speicherzellen gelesen werden, unter Verwendung der sekundären Lesepegelspannung ein. Wenn der sekundäre Decodierungsvorgang erfolglos ist, schließt das Verfahren das Ausführen eines oder mehrerer Decodierungsvorgänge zum Decodieren von Daten, die aus der Vielzahl von Speicherzellen gelesen werden, basierend mindestens auf einer Sequenz von Lesepegelspannungen ein. Das Verfahren schließt ferner das Beibehalten des Satzes von Decodierungserfolgsindikatoren basierend mindestens auf einem Ergebnis des vorläufigen Decodierungsvorgangs, des sekundären Decodierungsvorgangs oder des einen oder der mehreren Decodierungsvorgänge ein.
  • Gemäß Gesichtspunkten der vorliegenden Technologie wird ein Datenspeichersystem bereitgestellt, das eine nichtflüchtige Speichervorrichtung und eine Steuerung einschließt. Die Steuerung kann das Erhalten einer vorläufigen Lesepegelspannung aus einer Sequenz von Lesepegelspannungen basierend auf einem ersten Decodierungserfolgsindikator, das Ausführen eines vorläufigen Decodierungsvorgangs zum Decodieren von Daten, die aus einer Vielzahl von Speicherzellen gelesen werden, unter Verwendung der vorläufigen Lesepegelspannung und das Zurückgeben von decodierten Daten aus dem vorläufigen Decodierungsvorgang, wenn der vorläufige Decodierungsvorgang erfolgreich ist, bewirken.
  • Wenn der vorläufige Decodierungsvorgang erfolglos ist, kann die Steuerung das Erhalten einer sekundären Lesepegelspannung aus der Sequenz von Lesepegelspannungen basierend mindestens auf einem Trend eines Satzes von Decodierungserfolgsindikatoren, der den ersten Decodierungserfolgsindikator und einen zweiten Decodierungserfolgsindikator aufweist, und das Ausführen eines sekundären Decodierungsvorgangs zum Decodieren von Daten, die aus der Vielzahl von Speicherzellen gelesen werden, unter Verwendung der sekundären Lesepegelspannung und das Zurückgeben von decodierten Daten aus dem sekundären Decodierungsvorgang, wenn der sekundäre Decodierungsvorgang erfolgreich ist, bewirken.
  • Wenn der sekundäre Decodierungsvorgang erfolglos ist, kann die Steuerung das Ausführen eines oder mehrerer Decodierungsvorgänge zum Decodieren von Daten, die aus der Vielzahl von Speicherzellen gelesen werden, basierend mindestens auf der Sequenz von Lesepegelspannungen und das Zurückgeben von decodierten Daten aus einem des einen oder der mehreren Decodierungsvorgänge, wenn der eine des einen oder der mehreren Decodierungsvorgänge erfolgreich ist, bewirken. Die Steuerung kann den Satz von Decodierungserfolgsindikatoren basierend mindestens auf einem Ergebnis des vorläufigen Decodierungsvorgangs, des sekundären Decodierungsvorgangs oder des einen oder der mehreren Decodierungsvorgänge beibehalten.
  • Gemäß Gesichtspunkten der vorliegenden Technologie wird ein Datenspeichersystem bereitgestellt, das eine nichtflüchtige Speichervorrichtung und eine Steuerung einschließt. Die Steuerung kann eine Sequenz von Lesepegelspannungen basierend auf einem Trend eines Satzes von Decodierungserfolgsindikatoren, die mindestens einen ersten Decodierungserfolgsindikator und einen zweiten Decodierungserfolgsindikator aufweisen, die aus mindestens zwei jüngsten erfolgreichen Decodierungsvorgängen erhalten werden, anpassen. Die Steuerung kann ferner einen oder mehrere Decodierungsvorgänge zum Decodieren von Daten, die aus einer Vielzahl von Speicherzellen gelesen werden, basierend auf der Sequenz von Lesepegelspannungen ausführen und decodierte Daten aus einem des einen oder der mehreren Decodierungsvorgänge zurückgeben, wenn der eine des einen oder der mehreren Decodierungsvorgänge erfolgreich ist. Die Steuerung kann ferner den Satz von Decodierungserfolgsindikatoren basierend mindestens auf einem erfolgreichen des einen oder der mehreren Decodierungsvorgänge beibehalten.
  • Gemäß Gesichtspunkten der vorliegenden Technologie ein nichtflüchtiges maschinenlesbares Medium einschließlich maschinenausführbarer Anweisungen darauf, die bei Ausführung durch einen Prozessor ein Verfahren durchführen, welches das Einstellen einer Sequenz von Lesepegelspannungen basierend auf einem Trend eines Satzes von Decodierungserfolgsindikatoren einschließt, die mindestens einen ersten Decodierungserfolgsindikator und einen zweiten Decodierungserfolgsindikator aufweisen. Das Verfahren schließt auch das Durchführen eines oder mehrerer Decodierungsvorgänge zum Decodieren von Daten, die aus einer Vielzahl von Speicherzellen gelesen werden, basierend auf der Sequenz von Lesepegelspannungen, das Zurückgeben von decodierten Daten aus einem des einen oder der mehreren Decodierungsvorgänge, wenn der eine des einen oder der mehreren Decodierungsvorgänge erfolgreich ist, und das Beibehalten des Satzes von Decodierungserfolgsindikatoren basierend mindestens auf einem erfolgreichen des einen oder der mehreren Decodierungsvorgänge ein.
  • Gemäß Gesichtspunkten der vorliegenden Technologie wird ein Datenspeichersystem bereitgestellt, das Mittel zum Einstellen einer Sequenz von Lesepegelspannungen unter Verwendung eines Trends eines Satzes von Decodierungserfolgsindikatoren, die mindestens einen ersten Decodierungserfolgsindikator und einen zweiten Decodierungserfolgsindikator aufweisen, die aus mindestens zwei jüngsten erfolgreichen Decodierungsvorgängen erhalten werden, einschließt. Das Datenspeichersystem schließt ferner Mittel zum Ausführen eines oder mehrerer Decodierungsvorgänge zum Decodieren von Daten, die aus einer Vielzahl von Speicherzellen gelesen werden, basierend auf der Sequenz von Lesepegelspannungen, Mittel zum Bereitstellen von decodierten Daten aus einem des einen oder der mehreren Decodierungsvorgänge, wenn der eine des einen oder der mehreren Decodierungsvorgänge erfolgreich ist, und Mittel zum Beibehalten des Satzes von Decodierungserfolgsindikatoren basierend mindestens auf einem erfolgreichen des einen oder der mehreren Decodierungsvorgänge ein.
  • 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 schließen, ohne darauf beschränkt zu sein, CD-ROMs, Flash-Laufwerke, RAM-Chips, Festplatten, EPROMs, usw. ein. Die computerlesbaren Medien schließen keine Trägerwellen und elektronischen Signale ein, 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. Außerdem können in einigen Implementierungen mehrere Softwaregesichtspunkte der vorliegenden Offenbarung als Unterteile eines größeren Programms unter Beibehaltung einzelner Softwaregesichtspunkte der vorliegenden Offenbarung implementiert 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 spezifische 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 Gesichtspunkte angewendet werden. Daher sollen die Ansprüche nicht auf die hierin gezeigten Gesichtspunkte 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 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 Gesichtspunkt“, bedeutet nicht, dass ein solcher Gesichtspunkt für die vorliegende Offenbarung wesentlich ist oder dass ein derartiger Gesichtspunkt für alle Konfigurationen der vorliegenden Offenbarung gilt. Eine Offenbarung, die sich auf einen Gesichtspunkt bezieht, kann auf alle Konfigurationen oder eine oder mehrere Konfigurationen angewendet werden. Ein Gesichtspunkt kann ein oder mehrere Beispiele bereitstellen. Ein Ausdruck, wie beispielsweise ein Gesichtspunkt, kann sich auf einen oder mehrere Gesichtspunkte 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 Gesichtspunkte oder einen oder mehrere Gesichtspunkte 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 Gesichtspunkt oder jedes Design, der bzw. das hier als „beispielhaft“ beschrieben wird, ist nicht zwangsläufig als bevorzugt oder vorteilhaft gegenüber anderen Gesichtspunkten oder Designs zu verstehen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 62684157 [0001]

    Claims (24)

    1. Maschinenimplementiertes Verfahren, aufweisend: Erhalten einer vorläufigen Lesepegelspannung basierend auf einem ersten Decodierungserfolgsindikator; Ausführen eines vorläufigen Decodierungsvorgangs zum Decodieren von Daten, die aus einer Vielzahl von Speicherzellen gelesen werden, unter Verwendung der vorläufigen Lesepegelspannung; wenn der vorläufige Decodierungsvorgang erfolglos ist: Erhalten einer sekundären Lesepegelspannung basierend mindestens auf einem Trend eines Satzes von Decodierungserfolgsindikatoren, der den ersten Decodierungserfolgsindikator und einen zweiten Decodierungserfolgsindikator aufweist; und Ausführen eines sekundären Decodierungsvorgangs zum Decodieren von Daten, die aus der Vielzahl von Speicherzellen gelesen werden, unter Verwendung der sekundären Lesepegelspannung; wenn der sekundäre Decodierungsvorgang erfolglos ist: Ausführen eines oder mehrerer Decodierungsvorgänge zum Decodieren von Daten, die aus der Vielzahl von Speicherzellen gelesen werden, basierend mindestens auf einer Sequenz von Lesepegelspannungen; und Beibehalten des Satzes von Decodierungserfolgsindikatoren basierend mindestens auf einem Ergebnis des vorläufigen Decodierungsvorgangs, des sekundären Decodierungsvorgangs oder des einen oder der mehreren Decodierungsvorgänge.
    2. Verfahren gemäß Anspruch 1, wobei der Trend des Satzes von Decodierungserfolgsindikatoren basierend auf einem Trend zwischen einer Lesepegelspannung, die dem zweiten Decodierungserfolgsindikator entspricht, und einer Lesepegelspannung, die dem ersten Decodierungserfolgsindikator entspricht, bestimmt wird, und wobei der erste Decodierungserfolgsindikator ein Indikator ist, der jünger ist als der zweite Decodierungserfolgsindikator.
    3. Verfahren gemäß Anspruch 2, wobei der Trend des Satzes von Decodierungserfolgsindikatoren zunimmt, wenn die Lesepegelspannung, die dem ersten Decodierungserfolgsindikator entspricht, höher ist als die Lesepegelspannung, die dem zweiten Decodierungserfolgsindikator entspricht.
    4. Verfahren gemäß Anspruch 3, wobei die sekundäre Lesepegelspannung höher ist als die vorläufige Lesepegelspannung, wenn der Trend des Satzes von Decodierungserfolgsindikatoren zunimmt.
    5. Verfahren gemäß Anspruch 4, wobei die sekundäre Lesepegelspannung höher ist als die Lesepegelspannung, die dem zweiten Decodierungserfolgsindikator entspricht.
    6. Verfahren gemäß Anspruch 1, wobei die vorläufige Lesepegelspannung eine Lesepegelspannung ist, die dem ersten Decodierungserfolgsindikator entspricht, und wobei der erste Decodierungserfolgsindikator ein Indikator ist, der jünger ist als der zweite Decodierungserfolgsindikator.
    7. Datenspeichersystem, aufweisend: eine nichtflüchtige Speichervorrichtung; und eine Steuerung, die eingerichtet ist, um zu bewirken: Erhalten einer vorläufigen Lesepegelspannung aus einer Sequenz von Lesepegelspannungen basierend auf einem ersten Decodierungserfolgsindikator; Ausführen eines vorläufigen Decodierungsvorgangs zum Decodieren von Daten, die aus einer Vielzahl von Speicherzellen gelesen werden, unter Verwendung der vorläufigen Lesepegelspannung; Zurückgeben von decodierten Daten aus dem vorläufigen Decodierungsvorgang, wenn der vorläufige Decodierungsvorgang erfolgreich ist; wenn der vorläufige Decodierungsvorgang erfolglos ist: Erhalten einer sekundären Lesepegelspannung aus der Sequenz von Lesepegelspannungen basierend mindestens auf einem Trend eines Satzes von Decodierungserfolgsindikatoren, der den ersten Decodierungserfolgsindikator und einen zweiten Decodierungserfolgsindikator aufweist; Ausführen eines sekundären Decodierungsvorgangs zum Decodieren von Daten, die aus der Vielzahl von Speicherzellen gelesen werden, unter Verwendung der sekundären Lesepegelspannung; und Zurückgeben von decodierten Daten aus dem sekundären Decodierungsvorgang, wenn der sekundäre Decodierungsvorgang erfolgreich ist; wenn der sekundäre Decodierungsvorgang erfolglos ist: Ausführen eines oder mehrerer Decodierungsvorgänge zum Decodieren von Daten, die aus der Vielzahl von Speicherzellen gelesen werden, basierend mindestens auf der Sequenz von Lesepegelspannungen; und Zurückgeben von decodierten Daten aus einem des einen oder der mehreren Decodierungsvorgänge, wenn der eine des einen oder der mehreren Decodierungsvorgänge erfolgreich ist; und Beibehalten des Satzes von Decodierungserfolgsindikatoren basierend mindestens auf einem Ergebnis des vorläufigen Decodierungsvorgangs, des sekundären Decodierungsvorgangs oder des einen oder der mehreren Decodierungsvorgänge.
    8. Datenspeichersystem gemäß Anspruch 7, wobei der erste und der zweite Decodierungserfolgsindikator aufeinanderfolgende Decodierungserfolgsindikatoren sind, die zwei verschiedenen Lesepegelspannungen entsprechen, wobei der erste Decodierungserfolgsindikator mit einem ersten erfolgreichen Decodierungsvorgang verknüpft ist, wobei der zweite Decodierungserfolgsindikator mit einem zweiten erfolgreichen Decodierungsvorgang verknüpft ist, und wobei der erste erfolgreiche Decodierungsvorgang jünger ist als der zweite erfolgreiche Decodierungsvorgang.
    9. Datenspeichersystem gemäß Anspruch 8, wobei das Erhalten der sekundären Lesepegelspannung auf dem Bestimmen einer Änderung zwischen einer Lesepegelspannung, die dem zweiten Decodierungserfolgsindikator entspricht, und einer Lesepegelspannung, die dem ersten Decodierungserfolgsindikator entspricht, basiert.
    10. Datenspeichersystem gemäß Anspruch 7, wobei die Sequenz von Lesepegelspannungen zum Ausführen des einen oder der mehreren Decodierungsvorgänge die vorläufige Lesepegelspannung und die sekundäre Lesepegelspannung ausschließt.
    11. Datenspeichersystem, aufweisend: eine nichtflüchtige Speichervorrichtung; und eine Steuerung, die eingerichtet ist, um zu bewirken: Anpassen einer Sequenz von Lesepegelspannungen basierend auf einem Trend eines Satzes von Decodierungserfolgsindikatoren, die mindestens einen ersten Decodierungserfolgsindikator und einen zweiten Decodierungserfolgsindikator aufweisen, die aus mindestens zwei jüngsten erfolgreichen Decodierungsvorgängen erhalten werden; Ausführen eines oder mehrerer Decodierungsvorgänge zum Decodieren von Daten, die aus einer Vielzahl von Speicherzellen gelesen werden, basierend auf der Sequenz von Lesepegelspannungen; Zurückgeben von decodierten Daten aus einem des einen oder der mehreren Decodierungsvorgänge, wenn der eine des einen oder der mehreren Decodierungsvorgänge erfolgreich ist; und Beibehalten des Satzes von Decodierungserfolgsindikatoren basierend mindestens auf einem erfolgreichen des einen oder der mehreren Decodierungsvorgänge.
    12. Datenspeichersystem gemäß Anspruch 11, wobei das Anpassen der Sequenz von Lesepegelspannungen das Einstellen einer ersten Lesepegelspannung der Sequenz auf eine Lesepegelspannung aufweist, die dem ersten Decodierungserfolgsindikator entspricht, und wobei der erste Decodierungserfolgsindikator jünger ist als der zweite Decodierungserfolgsindikator.
    13. Datenspeichersystem gemäß Anspruch 12, wobei der Trend des Satzes von Decodierungserfolgsindikatoren abnimmt, wenn die Lesepegelspannung, die dem ersten Decodierungserfolgsindikator entspricht, niedriger ist als eine Lesepegelspannung, die dem zweiten Decodierungserfolgsindikator entspricht.
    14. Datenspeichersystem gemäß Anspruch 13, wobei das Anpassen der Sequenz von Lesepegelspannungen das Einstellen einer zweiten Lesepegelspannung der Sequenz auf eine Lesepegelspannung aufweist, die niedriger ist als die erste Lesepegelspannung, wenn der Trend des Satzes von Decodierungserfolgsindikatoren abnimmt, und wobei ein erster des einen oder der mehreren Decodierungsvorgänge auf der ersten Lesepegelspannung basiert und ein nachfolgender des einen oder der mehreren Decodierungsvorgänge auf der zweiten Lesepegelspannung basiert.
    15. Datenspeichersystem gemäß Anspruch 13, wobei die Lesepegelspannungen eine niedrigste Lesepegelspannung unter den Lesepegelspannungen aufweisen, und wobei, wenn eine Lesepegelspannung in der Sequenz die niedrigste Lesepegelspannung ist, eine nächste Lesepegelspannung in der Sequenz eine Lesepegelspannung ist, die auf die erste Lesepegelspannung folgt und höher ist als diese.
    16. Datenspeichersystem gemäß Anspruch 11, wobei die Lesepegelspannungen eine niedrigste Lesepegelspannung und eine höchste Lesepegelspannung unter den Lesepegelspannungen aufweisen, und wobei, wenn eine Lesepegelspannung in der Sequenz die niedrigste oder die höchste Lesepegelspannung ist, die Steuerung eingerichtet ist, um eine nächste Lesepegelspannung in der Sequenz basierend auf einer dem Trend entgegengesetzten Richtung zu bestimmen.
    17. Datenspeichersystem gemäß Anspruch 11, wobei das Beibehalten des Satzes von Decodierungserfolgsindikatoren aufweist: wenn eine Lesepegelspannung, die für den erfolgreichen des einen oder der mehreren Decodierungsvorgänge verwendet wurde, sich von einer Lesepegelspannung unterscheidet, die dem ersten Decodierungserfolgsindikator entspricht, Einstellen einer Lesepegelspannung, die dem zweiten Decodierungserfolgsindikator entspricht, auf die Lesepegelspannung, die dem ersten Decodierungserfolgsindikator entspricht; und Einstellen der Lesepegelspannung, die dem ersten Decodierungserfolgsindikator entspricht, auf die Lesepegelspannung, die für den erfolgreichen des einen oder der mehreren Decodierungsvorgänge verwendet wurde.
    18. Nichtflüchtiges maschinenlesbares Medium einschließlich maschinenausführbarer Anweisungen darauf, die bei Ausführung durch einen Prozessor ein Verfahren durchführen, aufweisend: Einstellen einer Sequenz von Lesepegelspannungen basierend auf einem Trend eines Satzes von Decodierungserfolgsindikatoren, die mindestens einen ersten Decodierungserfolgsindikator und einen zweiten Decodierungserfolgsindikator aufweisen; Durchführen eines oder mehrerer Decodierungsvorgänge zum Decodieren von Daten, die aus einer Vielzahl von Speicherzellen gelesen werden, basierend auf der Sequenz von Lesepegelspannungen; Zurückgeben von decodierten Daten aus einem des einen oder der mehreren Decodierungsvorgänge, wenn der eine des einen oder der mehreren Decodierungsvorgänge erfolgreich ist; und Beibehalten des Satzes von Decodierungserfolgsindikatoren basierend mindestens auf einem erfolgreichen des einen oder der mehreren Decodierungsvorgänge.
    19. Nichtflüchtiges maschinenlesbares Medium gemäß Anspruch 18, wobei das Verfahren das Bestimmen des Trends des Satzes von Decodierungserfolgsindikatoren basierend auf einem Trend zwischen einer ersten Lesepegelspannung, die dem ersten Decodierungserfolgsindikator entspricht, und einer zweiten Lesepegelspannung, die dem zweiten Decodierungserfolgsindikator entspricht, aufweist, und wobei die erste und die zweite Lesepegelspannung unterschiedlich sind.
    20. Nichtflüchtiges maschinenlesbares Medium gemäß Anspruch 18, wobei das Einstellen der Sequenz von Lesepegelspannungen das Einstellen einer ersten Lesepegelspannung, die eine erste in der Sequenz ist, auf eine Lesepegelspannung aufweist, die einem jüngeren des ersten und des zweiten Decodierungserfolgsindikators entspricht.
    21. Nichtflüchtiges maschinenlesbares Medium gemäß Anspruch 20, wobei dann, wenn eine erste erfolgreiche Lesepegelspannung, die dem ersten Decodierungserfolgsindikator entspricht, niedriger ist als eine zweite erfolgreiche Lesepegelspannung, die dem zweiten Decodierungserfolgsindikator entspricht, das Einstellen der Sequenz von Lesepegelspannungen das Einstellen einer zweiten Lesepegelspannung, die eine zweite in der Sequenz ist, auf eine Lesepegelspannung aufweist, die niedriger als die erste Lesepegelspannung und niedriger als die zweite erfolgreiche Lesepegelspannung ist.
    22. Datenspeichersystem, aufweisend: Mittel zum Einstellen einer Sequenz von Lesepegelspannungen unter Verwendung eines Trends eines Satzes von Decodierungserfolgsindikatoren, die mindestens einen ersten Decodierungserfolgsindikator und einen zweiten Decodierungserfolgsindikator aufweisen, die aus mindestens zwei jüngsten erfolgreichen Decodierungsvorgängen erhalten werden; Mittel zum Ausführen eines oder mehrerer Decodierungsvorgänge zum Decodieren von Daten, die aus einer Vielzahl von Speicherzellen gelesen werden, basierend auf der Sequenz von Lesepegelspannungen; Mittel zum Bereitstellen von decodierten Daten aus einem des einen oder der mehreren Decodierungsvorgänge, wenn der eine des einen oder der mehreren Decodierungsvorgänge erfolgreich ist; und Mittel zum Beibehalten des Satzes von Decodierungserfolgsindikatoren basierend mindestens auf einem erfolgreichen des einen oder der mehreren Decodierungsvorgänge.
    23. Datenspeichersystem gemäß Anspruch 22, wobei das Mittel zum Einstellen der Sequenz von Lesepegelspannungen Mittel zum Bestimmen des Trends des Satzes von Decodierungserfolgsindikatoren basierend auf einer Änderung zwischen einer ersten jüngsten Lesepegelspannung, die dem ersten Decodierungserfolgsindikator entspricht, und einer zweiten jüngsten Lesepegelspannung, die dem zweiten Decodierungserfolgsindikator entspricht, aufweist, und wobei der erste Decodierungserfolgsindikator ein Indikator ist, der jünger ist als der zweite Decodierungserfolgsindikator.
    24. Datenspeichersystem gemäß Anspruch 23, wobei, wenn die erste jüngste Lesepegelspannung niedriger ist als die zweite jüngste Lesepegelspannung, der Trend abnimmt und ein Spannungspegel einer zweiten der Sequenz niedriger ist als ein Spannungspegel einer ersten der Sequenz.
    DE112019000167.1T 2018-06-12 2019-02-07 Anpassbare Lesewiederholungsreihenfolge basierend auf einem Decodierungserfolgstrend Pending DE112019000167T5 (de)

    Applications Claiming Priority (5)

    Application Number Priority Date Filing Date Title
    US201862684157P 2018-06-12 2018-06-12
    US62/684,157 2018-06-12
    US16/052,523 2018-08-01
    US16/052,523 US10636495B2 (en) 2018-06-12 2018-08-01 Adjustable read retry order based on decoding success trend
    PCT/US2019/017119 WO2019240847A1 (en) 2018-06-12 2019-02-07 Adjustable read retry order based on decoding success trend

    Publications (1)

    Publication Number Publication Date
    DE112019000167T5 true DE112019000167T5 (de) 2020-08-06

    Family

    ID=68764233

    Family Applications (1)

    Application Number Title Priority Date Filing Date
    DE112019000167.1T Pending DE112019000167T5 (de) 2018-06-12 2019-02-07 Anpassbare Lesewiederholungsreihenfolge basierend auf einem Decodierungserfolgstrend

    Country Status (5)

    Country Link
    US (3) US10636495B2 (de)
    KR (1) KR102411329B1 (de)
    CN (1) CN111406370B (de)
    DE (1) DE112019000167T5 (de)
    WO (1) WO2019240847A1 (de)

    Families Citing this family (8)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    TWI681393B (zh) * 2019-01-07 2020-01-01 群聯電子股份有限公司 解碼方法、記憶體控制電路單元以及記憶體儲存裝置
    US11244740B1 (en) 2020-08-10 2022-02-08 Micron Technology, Inc. Adapting an error recovery process in a memory sub-system
    KR20220034341A (ko) * 2020-09-11 2022-03-18 삼성전자주식회사 메모리 컨트롤러, 스토리지 장치 및 메모리 컨트롤러의 구동방법
    US11467938B2 (en) 2020-09-21 2022-10-11 SK Hynix Inc. Read retry threshold optimization systems and methods conditioned on previous reads
    US11538547B2 (en) 2020-11-10 2022-12-27 SK Hynix Inc. Systems and methods for read error recovery
    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
    CN116185309B (zh) * 2023-04-27 2023-08-08 合肥康芯威存储技术有限公司 一种数据处理方法及数据存储设备

    Family Cites Families (37)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US6229737B1 (en) 1996-12-12 2001-05-08 Ericsson Inc. Method and apparatus for initializing semiconductor memory
    US6378035B1 (en) 1999-04-06 2002-04-23 Microsoft Corporation Streaming information appliance with buffer read and write synchronization
    US6820144B2 (en) 1999-04-06 2004-11-16 Microsoft Corporation Data format for a streaming information appliance
    US6535920B1 (en) 1999-04-06 2003-03-18 Microsoft Corporation Analyzing, indexing and seeking of streaming information
    US7085842B2 (en) 2001-02-12 2006-08-01 Open Text Corporation Line navigation conferencing system
    US7386655B2 (en) 2004-12-16 2008-06-10 Sandisk Corporation Non-volatile memory and method with improved indexing for scratch pad and update blocks
    US7594087B2 (en) 2006-01-19 2009-09-22 Sigmatel, Inc. System and method for writing data to and erasing data from non-volatile memory
    JP4598711B2 (ja) 2006-03-30 2010-12-15 富士通株式会社 誤り訂正装置
    DE602007004634D1 (de) 2006-09-05 2010-03-18 Senson Invest Ltd Tragbares elektrowerkzeug
    US8151060B2 (en) 2006-11-28 2012-04-03 Hitachi, Ltd. Semiconductor memory system having a snapshot function
    US8290899B2 (en) 2007-03-28 2012-10-16 Netapp, Inc. Group stamping style asynchronous replication utilizing a loosely-accurate global clock
    JP4945372B2 (ja) * 2007-08-28 2012-06-06 株式会社リコー 多機能入出力装置及びその制御方法、並びに多機能入出力装置制御プログラム及び記録媒体
    US20110187927A1 (en) 2007-12-19 2011-08-04 Colin Simon Device and method for synchronisation of digital video and audio streams to media presentation devices
    US8200922B2 (en) 2008-12-17 2012-06-12 Netapp, Inc. Storage system snapshot assisted by SSD technology
    US20120240007A1 (en) * 2010-10-20 2012-09-20 Stec, Inc. Ldpc decoding for solid state storage devices
    CN103392207B (zh) 2011-10-05 2017-08-04 希捷科技有限公司 非易失性存储的自身日志记录和层级一致性
    US8977769B2 (en) 2012-01-17 2015-03-10 Harman International Industries, Incorporated System for managing lossless failover in an audio-bridging (AVB) network
    US9202577B2 (en) 2012-03-30 2015-12-01 Intel Corporation Solid state drive management in power loss recovery
    US9037820B2 (en) 2012-06-29 2015-05-19 Intel Corporation Optimized context drop for a solid state drive (SSD)
    US9690642B2 (en) 2012-12-18 2017-06-27 Western Digital Technologies, Inc. Salvaging event trace information in power loss interruption scenarios
    US9183142B2 (en) 2013-03-15 2015-11-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Reducing flash memory write amplification and latency
    US9678673B2 (en) 2013-03-28 2017-06-13 Hewlett Packard Enterprise Development Lp Coordinating replication of data stored in a non-volatile memory-based system
    US20150085571A1 (en) * 2013-09-24 2015-03-26 Sandisk Technologies Inc. Updating read voltages
    WO2015066702A2 (en) 2013-11-04 2015-05-07 Falconstor, Inc. Write performance preservation with snapshots
    US9720618B1 (en) 2013-12-16 2017-08-01 EMC IP Holding Company LLC Maintaining backup snapshots using continuous replication from multiple sources
    KR20150091693A (ko) * 2014-02-03 2015-08-12 삼성전자주식회사 플래쉬 메모리 읽기 방법
    US9588847B1 (en) 2014-03-25 2017-03-07 EMC IP Holding Company LLC Recovering corrupt virtual machine disks
    US9804934B1 (en) 2014-12-30 2017-10-31 EMC IP Holding Company LLC Production recovery using a point in time snapshot
    US9647697B2 (en) 2015-03-16 2017-05-09 Sandisk Technologies Llc Method and system for determining soft information offsets
    KR102556479B1 (ko) 2015-03-20 2023-07-17 에스케이하이닉스 주식회사 Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
    TWI582779B (zh) * 2015-04-14 2017-05-11 群聯電子股份有限公司 讀取電壓準位估測方法、記憶體儲存裝置及記憶體控制電路單元
    US10048876B2 (en) 2015-09-10 2018-08-14 Western Digital Technologies, Inc. Method for providing nonvolatile storage write bandwidth using a caching namespace
    US10108350B2 (en) 2015-09-10 2018-10-23 Western Digital Technologies, Inc. Method for providing nonvolatile storage write bandwidth using a caching namespace
    TWI588834B (zh) * 2016-02-23 2017-06-21 群聯電子股份有限公司 解碼方法、記憶體儲存裝置及記憶體控制電路單元
    US10291263B2 (en) 2016-07-28 2019-05-14 Ip Gem Group, Llc Auto-learning log likelihood ratio
    KR102181177B1 (ko) * 2016-07-29 2020-11-20 웨스턴 디지털 테크놀로지스, 인코포레이티드 비휘발성 메모리를 위한 비-바이너리 인코딩
    US10025661B1 (en) * 2016-12-27 2018-07-17 Sandisk Technologies Llc Adaptive hard and soft bit decoding

    Also Published As

    Publication number Publication date
    US10636495B2 (en) 2020-04-28
    KR20210008326A (ko) 2021-01-21
    CN111406370A (zh) 2020-07-10
    WO2019240847A1 (en) 2019-12-19
    KR102411329B1 (ko) 2022-06-22
    CN111406370B (zh) 2023-11-28
    US20200219571A1 (en) 2020-07-09
    US20190378576A1 (en) 2019-12-12
    US20210249088A1 (en) 2021-08-12
    US11557352B2 (en) 2023-01-17
    US11017867B2 (en) 2021-05-25

    Similar Documents

    Publication Publication Date Title
    DE112019000167T5 (de) Anpassbare Lesewiederholungsreihenfolge basierend auf einem Decodierungserfolgstrend
    DE102019116520A1 (de) Datenspeichersysteme und -verfahren für eine verbesserte datenumlagerung basierend auf lesepegelspannungen, die mit einer fehlerwiederherstellung verbunden sind
    DE102018123926A1 (de) Dynamische mehrstufige Decodierung
    DE102016003366B4 (de) Lesepegelgruppierung für erhöhte flash-leistung
    DE112014004778B4 (de) Vorrichtung und Verfahren zum Verwalten von Chipgruppen
    DE102019124438B4 (de) Multi-state-programmierung für speichervorrichtungen
    DE102018105943A1 (de) Kontextbewusste dynamische Befehlsplanung für ein Datenspeichersystem
    DE102017128994A1 (de) Weiche Dekodierungs-Planung
    DE112020006139T5 (de) Vor-lese-und lese-schwellenspannungsoptimierung
    DE102017117066A1 (de) Nichtbinäre codierung für einen nichtflüchtigen speicher
    DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
    DE112008002553T5 (de) Einsatz eines MLC-Flash als SLC durch Schreiben von Dummy-Daten
    US10628081B2 (en) Managing internal command queues in solid state storage drives
    DE102010037290A1 (de) Speichersysteme und Verfahren zur Erfassung einer Verteilung von instabilen Speicherzellen
    US11093326B2 (en) Dynamic multi-stage decoding
    DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
    DE102015008923A1 (de) Vielfache ECC-Codewortgrössen in einem SSD
    DE102019125060A1 (de) Datenspeichersysteme und verfahren zum autonomen anpassen der leistung, kapazität und/oder der betriebsanforderungen eines datenspeichersystems
    DE102018105434A1 (de) Verfahren und System zum Abtasten von gelöschten Flashspeicherseiten mit Querverweis auf verwandte Anwendungen
    DE102019133147A1 (de) Datenspeichersysteme und verfahren zur optimierten planung von hintergrund-verwaltungsoperationen
    DE112016002305B4 (de) Reduktion der Schreibverstärkung in einem Objektspeicher
    DE102018123961A1 (de) Gruppen-leseaktualisierung
    DE112021000776T5 (de) Verwaltung von schreib-operationen in einer nichtflüchtigen speichervorrichtung unter verwendung eines variablen vor-lese-spannungspegels
    DE102015117500A1 (de) Verfahren zur Verbesserung des gemischten Random-Verhaltens bei Arbeitslasten mit niedriger Queue-Tiefe
    DE102022101607A1 (de) Verwaltung der hostspeicherpufferzuweisung

    Legal Events

    Date Code Title Description
    R012 Request for examination validly filed
    R079 Amendment of ipc main class

    Free format text: PREVIOUS MAIN CLASS: H03M0013150000

    Ipc: G11C0016080000

    R082 Change of representative

    Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

    Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE