DE112019000167T5 - Anpassbare Lesewiederholungsreihenfolge basierend auf einem Decodierungserfolgstrend - Google Patents
Anpassbare Lesewiederholungsreihenfolge basierend auf einem Decodierungserfolgstrend Download PDFInfo
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 215
- 230000007423 decrease Effects 0.000 claims abstract description 10
- 230000008569 process Effects 0.000 claims description 195
- 230000015654 memory Effects 0.000 claims description 105
- 238000013500 data storage Methods 0.000 claims description 38
- 238000003860 storage Methods 0.000 claims description 19
- 230000003247 decreasing effect Effects 0.000 claims description 13
- 230000008859 change Effects 0.000 claims description 8
- 230000000694 effects Effects 0.000 claims 2
- 238000005516 engineering process Methods 0.000 description 36
- 238000010586 diagram Methods 0.000 description 11
- 230000004044 response Effects 0.000 description 8
- 238000012937 correction Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000013523 data management Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 239000000872 buffer Substances 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- BUHVIAUBTBOHAG-FOYDDCNASA-N (2r,3r,4s,5r)-2-[6-[[2-(3,5-dimethoxyphenyl)-2-(2-methylphenyl)ethyl]amino]purin-9-yl]-5-(hydroxymethyl)oxolane-3,4-diol Chemical compound COC1=CC(OC)=CC(C(CNC=2C=3N=CN(C=3N=CN=2)[C@H]2[C@@H]([C@H](O)[C@@H](CO)O2)O)C=2C(=CC=CC=2)C)=C1 BUHVIAUBTBOHAG-FOYDDCNASA-N 0.000 description 1
- 241001362574 Decodes Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000012005 ligant binding assay Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3746—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital 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/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/408—Address circuits
- G11C11/4087—Address decoders, e.g. bit - or word line decoders; Multiple line decoders
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital 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/5621—Digital 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/5642—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/021—Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/028—Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/44—Indication or identification of errors, e.g. for repair
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/10—Decoders
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3707—Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
- H03M13/3715—Adaptation to the number of estimated errors or to the channel state
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3723—Decoding 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/563—Multilevel memory reading aspects
- G11C2211/5632—Multilevel 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
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 - 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 bis3F stellen Beispiele des Anpassens von Lesepegelspannungsreihenfolgen basierend auf einem Trend von erfolgreichen Decodierungsvorgängen gemäß Gesichtspunkten der vorliegenden Technologie dar. - Die
4 bis6 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 Datenspeichersystems100 nach Aspekten der vorliegenden Technologie zeigt. Das Datenspeichersystem100 schließt unter anderem die Steuerung102 , die Codier-/Decodier-Maschine104 , das Speichermedium106 und das Flash-Speichervorrichtungs-Array108 ein. Wie in1 dargestellt, kann das Datenspeichersystem100 mit einer Host-Vorrichtung110 über die Host-Schnittstelle112 verbunden sein. - Die Steuerung
102 kann mehrere interne Komponenten (nicht gezeigt) wie einen oder mehrere Prozessoren103 , einen Nur-Lese-Speicher, eine Flash-Komponentenschnittstelle (beispielsweise einen Multiplexer zum Verwalten von Anweisungs- und Datentransport entlang einer Verbindung zu dem Flash-Speichervorrichtungs-Array108 ), eine E/A-Schnittstelle, eine Fehlerkorrekturschaltung und dergleichen einschließen. Ein Prozessor der Steuerung102 kann den Betrieb der Komponenten in der Datenspeichersteuerung102 überwachen und steuern. Der Prozessor und/oder die Steuerung102 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 Steuerung102 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 Steuerung102 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 Steuerung102 gespeichert sein. Eine oder mehrere Sequenzen von Anweisungen können gespeicherte Software sein, die von dem Speichermedium106 und dem Flash-Speichervorrichtungs-Array108 gelesen wird oder von der Host-Vorrichtung110 empfangen wird (zum Beispiel über die Host-Schnittstelle112 ). Speichermedium106 und Flash-Speichervorrichtungs-Array108 stellen Beispiele von maschinen- oder computerlesbaren Medien dar, auf denen Anweisungen/Code, die durch die Steuerung102 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 Steuerung102 bereitzustellen, einschließlich sowohl flüchtiger Medien, wie beispielsweise einem dynamischen Speicher, der für Speichermedien oder für Puffer in der Steuerung102 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 Datenspeichersystem100 zu verwalten. Nach Gesichtspunkten der vorliegenden Offenbarung ist das Speichermedium106 ein Speicher mit wahlfreiem Zugriff (RAM), wie ein RAM mit doppelter Datenrate (DDR). Andere Typen von RAM können auch verwendet werden, um das Speichermedium106 zu implementieren. Das Speichermedium106 kann unter Verwendung eines einzelnen RAM-Moduls oder mehrerer RAM-Module implementiert werden. Während das Speichermedium106 als von der Steuerung102 verschieden dargestellt ist, versteht es sich, dass das Speichermedium106 in die Steuerung102 integriert sein kann, ohne vom Umfang der vorliegenden Offenbarung abzuweichen. Alternativ kann das Speichermedium106 ein nichtflüchtiger Speicher wie eine Magnetplatte, ein Flash-Speicher, eine periphere SSD und dergleichen sein. - Die Host-Schnittstelle
112 kann mit der Host-Vorrichtung110 gekoppelt werden, um Daten von der Host-Vorrichtung110 zu empfangen und Daten an diese zu senden. Die Host-Schnittstelle112 kann sowohl elektrische als auch physische Verbindungen enthalten, um die Host-Vorrichtung110 betriebsmäßig mit der Steuerung102 zu koppeln. Die Host-Schnittstelle112 kann Daten, Adressen und Steuersignale zwischen der Host-Vorrichtung110 und der Steuerung102 kommunizieren. Auf diese Weise kann die Steuerung102 in Reaktion auf einen Schreibbefehl von der Host-Vorrichtung110 von der Host-Vorrichtung110 empfangene Daten in dem Flash-Speichervorrichtungs-Array108 speichern und um in Reaktion auf einen Lesebefehl von der Host-Vorrichtung110 in dem Flash-Speichervorrichtungs-Array108 gespeicherte Daten zu lesen und die gelesenen Daten über die Host-Schnittstelle112 an die Host-Vorrichtung110 zu übertragen. - Die Host-Vorrichtung
110 stellt jede Vorrichtung dar, die mit dem Datenspeichersystem100 gekoppelt werden kann und Daten in dem Datenspeichersystem100 speichert. Die Host-Vorrichtung110 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-Vorrichtung110 eine elektronische Vorrichtung wie eine Digitalkamera, ein digitaler Audiospieler, ein digitaler Videorecorder und dergleichen sein. - Wie ferner in
1 dargestellt, können die Host-Vorrichtung110 und das Datenspeichersystem100 über einen Bus114 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 Datenspeichersystem100 Stifte (oder eine Buchse) einschließen, um sich mit einer entsprechenden Buchse (oder Stiften) auf der Host-Vorrichtung110 zu verbinden, um eine elektrische und physikalische Verbindung herzustellen. - Die Steuerung kann einen internen Systembus
115 einschließen. Der Systembus115 kann eine Kombination aus einem Steuerbus, einem Adressbus und einem Datenbus einschließen und die Komponenten der Steuerung102 (z. B. einen Prozessor und/oder Speicher darin) mit anderen Komponenten des Datenspeichersystems100 , einschließlich der Codier-/Decodier-Maschine104 , des Speichermediums106 , des Flash-Speichervorrichtungs-Arrays108 und der Host-Schnittstelle112 , verbinden. Daten werden zwischen den verschiedenen Komponenten über den Systembus115 übertragen. Der Systembus115 kann sich teilweise außerhalb und teilweise innerhalb der Steuerung102 befinden. - Die Host-Vorrichtung
110 und das Datenspeichersystem100 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 Datenspeichersystem100 (oder die Host-Schnittstelle112 ) einen drahtlosen Transceiver ein, um die Host-Vorrichtung110 und das Datenspeichersystem100 in drahtlose Kommunikation miteinander zu bringen. - Die Steuerung
102 kann Daten und/oder Speicherzugriffsbefehle von einem Speicherschnittstellenmodul116 (z. B. einem Gerätetreiber) der Host-Vorrichtung110 empfangen. Von der Speicherschnittstelle116 kommunizierte Speicherzugriffsbefehle können von dem Host-System110 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 Datenspeichersystem100 gespeichert sind. Die Steuerung102 kann Befehle in dem Flash-Speichervorrichtungs-Array108 in Reaktion auf Befehle ausführen, die von dem Speicherschnittstellenmodul116 empfangen werden. - Das Flash-Speichervorrichtungs-Array
108 kann mehrere Flash-Speichervorrichtungen118 einschließen. Eine Flash-Speichervorrichtung118 stellt einen nichtflüchtige Speichervorrichtung zum Speichern von Daten dar. Gemäß Gesichtspunkten der vorliegenden Technologie schließt die Flash-Speichervorrichtung118 beispielsweise einen NAND-Flash-Speicher ein. Jede Flash-Speichervorrichtung118 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-Array108 einige der Flash Speichervorrichtungen118 ein Flash-Modul aufweisen, während andere mehr als ein Flash-Modul aufweisen können. Die Flash-Speichervorrichtung118 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-Speichervorrichtungen118 aufweist. Eine Flash-Speichervorrichtung118 kann eine oder mehrere Flash-Speicherschnittstellen (nicht dargestellt) einschließen. Jede Flash-Speicherschnittstelle verbindet die Steuerung102 ü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 Steuerung102 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. Systembus115 ) 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-Speichervorrichtung118 kann verwendet werden, um auf interne Register120 und eine interne Flash-Steuerung122 zuzugreifen. In einigen Gesichtspunkten können die Register120 Adressen-, Befehls- und/oder Datenregister einschließen, die intern die notwendigen Daten zu und von einem NAND-Speicherzellen-Array124 abrufen und ausgeben. Beispielsweise kann das Speicherzellen-Array124 einen Einzelpegelzellenspeicher (SLC), einen Mehrpegelzellenspeicher (MLC), eine Dreipegelzellenspeichervorrichtung (TLC) usw. aufweisen, und in einigen Gesichtspunkten kann das Flash-Speichervorrichtungs-Array108 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-Array124 gespeichert werden sollen, oder Daten nach einem Abruf aus dem Speicherzellen-Array124 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-Vorrichtung110 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-Steuerung122 über ein Steuerregister zugänglich, um das allgemeine Verhalten der Flash-Speichervorrichtung118 zu steuern. Die interne Flash-Steuerung122 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-Array108 gespeichert und/oder daraus gelesen werden sollen. Die Codier-/Decodier-Maschine104 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-Maschine104 kann von der Host-Vorrichtung110 empfangene Daten codieren und aus der Flash-Speichervorrichtung118 gelesene Codewörter vor dem Senden der decodierten Daten an den Host decodieren. In einigen Implementierungen kann die Codier-/Decodier-Maschine104 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-Maschine104 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-Maschine104 als von der Steuerung102 verschieden dargestellt ist, versteht es sich, dass die Codier-/Decodier-Maschine104 in die Steuerung102 integriert sein kann, ohne vom Umfang der vorliegenden Offenbarung abzuweichen. -
2 stellt ein beispielhaftes Graphdiagramm200 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 in2 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 Lesepegelspannungsreihenfolge205 verwendet werden, wie in2 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 und3A dargestellte Anzahl an Lesepegelspannungen oder auf die in den2 und3A 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 Lesepegelspannungsreihenfolge300 ist auch als Lesepegelspannungsreihenfolge205 in2 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 in3A 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 bis3F stellen Beispiele von trendbasierten Lesepegelspannungsreihenfolgen gemäß Gesichtspunkten der vorliegenden Technologie dar. Wie in den Lesepegelspannungsreihenfolgen-Diagrammen310 bis350 gezeigt, kann die Lesepegelspannung355 einer Lesepegelspannung entsprechen, die zuletzt (oder jüngst) bei einem erfolgreichen Decodierungsvorgang verwendet wurde (z. B. die letzte erfolgreiche Lesepegelspannung). Außerdem kann die Lesepegelspannung349 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 Lesepegelspannungen349 und355 bestimmt. In einigen Beispielen kann die Lesepegelspannung355 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 die4 bis6 beschrieben. In einem oder mehreren Beispielen kann die Steuerung102 einen oder mehrere Prozesse durchführen, die in Bezug auf die3B bis3F beschrieben sind. - Unter Bezugnahme auf
3B wird, wie in Diagramm310 gezeigt, eine vorläufige Lesepegelspannung auf L eingestellt, welche die Lesepegelspannung355 ist. Der Trend wird als abnehmend bestimmt, da die Lesepegelspannung355 niedriger ist als die Lesepegelspannung349 . Mit anderen Worten zeigt die Änderung von der Lesepegelspannung349 zu der Lesepegelspannung355 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 Lesepegelspannung335 und dem durch die Lesepegelspannungen335 und349 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 Diagramm320 gezeigt, eine vorläufige Lesepegelspannung LL, welche die Lesepegelspannung355 ist. Der Trend nimmt ab, da die Lesepegelspannung355 niedriger ist als die Lesepegelspannung349 . 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 Lesepegelspannung335 und dem durch die Lesepegelspannungen335 und349 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 Diagramm330 gezeigt, eine vorläufige Lesepegelspannung RR, welche die Lesepegelspannung355 ist. Der Trend nimmt zu, da die Lesepegelspannung355 größer ist als die Lesepegelspannung349 . 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 Lesepegelspannungen335 und349 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 der3B und3C , außer dass die Lesepegelspannungen355 und349 C bzw. R sind. Unter Verwendung eines ähnlichen Prozesses wie diejenigen, die in Bezug auf die3B und3C beschrieben sind, wird basierend auf der Lesepegelspannung355 und dem durch die Lesepegelspannungen335 und349 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 von3D , außer dass die Lesepegelspannungen355 und349 R bzw. LL sind. Unter Verwendung eines ähnlichen Prozesses wie diejenigen, die in Bezug auf3D beschrieben sind, wird basierend auf der Lesepegelspannung355 und dem durch die Lesepegelspannungen335 und349 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 bis3F gezeigt, kann ein erster Decodierungserfolgsindikator der Lesepegelspannung355 entsprechen, und ein zweiter Decodierungserfolgsindikator kann einer Lesepegelspannung349 entsprechen, die sich von der Lesepegelspannung355 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 Lesepegelspannung349 zu der Lesepegelspannung355 ). In einigen Beispielen, wie in den3B ,3C und3E gezeigt, nimmt der Trend ab. In einigen Beispielen, wie in den3D und3F gezeigt, nimmt der Trend zu. In einigen Beispielen ist die Sequenz von Lesepegelspannungen (oder die Lesepegelspannungsreihenfolge) gemäß Pfeilen angeordnet, die in den3B bis3F 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 Decodierungsvorgangs400 gemäß Gesichtspunkten der vorliegenden Technologie dar. In einem oder mehreren Beispielen kann die Steuerung102 , die Codier-/Decodier-Maschine104 oder eine Kombination davon einen oder mehrere Prozesse durchführen, die in Bezug auf4 beschrieben sind. Der mehrstufige Decodierungsvorgang kann in Reaktion auf einen Lesebefehl, der von der Host-Vorrichtung110 empfangen wird, oder in Reaktion auf einen internen Datenverwaltungsvorgang, der durch die Steuerung102 ausgeführt wird, eingeleitet werden. Beim Einleiten des mehrstufigen Decodierungsvorgangs wird eine Lesepegelspannung für die Flash-Speichervorrichtung118 , aus der angeforderte Daten auszulesen sind, gemäß einer Sequenz von Lesepegelspannungen eingestellt (Block401 ). - 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 bis3F beschrieben sind. Ein anderes Beispiel für eine Sequenz von Lesepegelspannungen kann eine vorgegebene Sequenz wie diejenige sein, die in Bezug auf3A beschrieben ist. In einigen Beispielen kann dann, wenn die in Bezug auf3B 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 (Block405 ). Wenn der harte Decodierungsvorgang die Daten erfolgreich decodiert (Block410 ), werden die decodierten Daten an den anfordernden Prozess zurückgegeben (Block415 ). Wenn der harte Decodierungsvorgang erfolglos ist, werden weiche Decodierinformationen ausgewählt (Block420 ), und die Daten werden zusammen mit den weichen Decodierinformationen an einen Soft-Decision-Decodierer in der Codier-/Decodier-Maschine104 weitergeleitet, um unter Verwendung der Daten und der ausgewählten weichen Decodierinformationen einen weichen Decodierungsvorgang auszuführen (Block425 ). - Wenn der weiche Decodierungsvorgang die Daten erfolgreich decodiert (Block
430 ), werden die decodierten Daten an den anfordernden Prozess zurückgegeben (Block415 ). 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 (Block435 ). 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 (Block420 ). 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 (Block440 ). In einigen Beispielen kann der mehrstufige Decodierungsvorgang bis zu sieben Stufen einschließen, die beispielsweise der in den2 und3A bis3F 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 (Block401 ) 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 (Block415 ) 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 (Block445 ). -
5 stellt ein Flussdiagramm500 eines beispielhaften mehrstufigen Decodierungsvorgangs gemäß Gesichtspunkten der vorliegenden Technologie dar. In einem oder mehreren Beispielen kann die Steuerung102 , die Codier-/Decodier-Maschine104 oder eine Kombination davon einen oder mehrere Prozesse durchführen, die in Bezug auf5 beschrieben sind. Ähnlich dem vorstehend in Bezug auf4 beschriebenen Prozess kann der in5 dargestellte mehrstufige Decodierungsvorgang in Reaktion auf einen Lesebefehl, der von der Host-Vorrichtung110 empfangen wird, oder in Reaktion auf einen internen Datenverwaltungsvorgang, der durch die Steuerung102 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 bis3F und4 , Anfänglich wird eine vorläufige Lesepegelspannung aus der Sequenz von Lesepegelspannungen, die in einem mehrstufigen Decodierungsvorgang verwendet wird, erhalten, z. B. ausgewählt (Block505 ). Die vorläufige Lesepegelspannung kann basierend auf einem (z. B. von der Steuerung102 ) 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-Speichervorrichtung118 angeben, wobei jeweilige Datenwerte die Lesepegelspannung angeben, die für die einzelnen Blöcke, Gruppen von Blöcken, Matrizen, Gruppen von Matrizen oder Flash-Speichervorrichtungen118 in dem Datenspeichersystem gespeichert sind. Ein einziger gespeicherter Datenwert, der die zuletzt in einem erfolgreichen Decodierungsvorgang verwendeten Lesepegelspannungen angibt, kann für alle Flash-Speichervorrichtungen118 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-Speichervorrichtungen118 in dem Datenspeichersystem beibehalten werden. In einigen Beispielen, wie in den3B bis3F gezeigt, entspricht der Decodierungserfolgsindikator einer Lesepegelspannung355 , die zuletzt in einem erfolgreichen Decodierungsvorgang verwendet wurde. Daher kann die Lesepegelspannung355 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 und3E ab, da die Lesepegelspannung355 kleiner ist als die Lesepegelspannung349 . Jeder der Trends für die3D und3F nimmt zu, da die Lesepegelspannung355 größer ist als die Lesepegelspannung349 . - 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-Maschine104 zum Decodieren weitergeleitet. Wenn der vorläufige Decodierungsvorgang erfolgreich ist, werden die decodierten Daten an den anfordernden Prozess zurückgegeben (Block550 ). 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-Maschine104 zum Decodieren (Block405 ) weitergeleitet und dann können die Blöcke410-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 bis3F ausführlicher beschrieben. In einem oder mehreren Beispielen ist eine vorläufige Lesepegelspannung die letzte erfolgreiche Lesepegelspannung (z. B. die Lesepegelspannung335 in den3B bis3F) . 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 Lesepegelspannung349 in den3B bis3F) . In3B ist die sekundäre Lesepegelspannung die Lesepegelspannung LL. In3C ist die sekundäre Lesepegelspannung die Lesepegelspannung LLL. In3D ist die sekundäre Lesepegelspannung die Lesepegelspannung RRR. In3E ist die sekundäre Lesepegelspannung die Lesepegelspannung L. In3F 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-Maschine104 zum Decodieren weitergeleitet. Wenn der sekundäre Decodierungsvorgang erfolgreich ist, werden die decodierten Daten an den anfordernden Prozess zurückgegeben (Block550 ). 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-Maschine104 zum Decodieren (Block405 ) weitergeleitet und dann können die Blöcke410-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 (Block535 ). 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 die3B bis3F beschrieben sind (mit Ausnahme der vorläufigen und der sekundären Lesepegelspannung, da diese in den Blöcken505-525 verwendet wurden), ausgeführt werden. In einigen Beispielen können die geordneten Lesepegelspannungen, die in Bezug auf die3B bis3F 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 (Block550 ). Wenn der eine oder die mehreren zusätzlichen Decodierungsprozesse erfolglos sind (Block540 ), kann ein Lesefehler an den anfordernden Prozess zurückgegeben werden (Block545 ). - 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-Speichervorrichtung118 ) 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 bis3F 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 Flussdiagramm600 eines beispielhaften mehrstufigen Decodierungsvorgangs gemäß Gesichtspunkten der vorliegenden Technologie dar. In einem oder mehreren Beispielen kann die Steuerung102 , die Codier-/Decodier-Maschine104 oder eine Kombination davon einen oder mehrere Prozesse durchführen, die in Bezug auf6 beschrieben sind. Ähnlich dem vorstehend in Bezug auf4 beschriebenen Prozess kann der in6 dargestellte mehrstufige Decodierungsvorgang als Reaktion auf einen Lesebefehl, der von der Host-Vorrichtung110 empfangen wird, oder als Reaktion auf einen internen Datenverwaltungsvorgang, der durch die Steuerung102 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 die3B bis3F 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 bis3F 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 in3B, L in3C und R in3E) . 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 in3D undC in3F) . 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-Speichervorrichtung118 verwendet werden. Jeder des einen oder der mehreren aktuellen Decodierungsvorgänge kann eine Stufe eines mehrstufigen Decodierungsvorgängen sein, der in Bezug auf4 beschrieben ist, wobei jede Stufe einen harten Decodierungsvorgang (Block405 ) und einen oder mehrere Software-Decodierungsvorgänge (Block425 ) einschließen kann. Die Vielzahl von Speicherzellen kann sich in einer Flash-Speichervorrichtung118 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-Speichervorrichtung118 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 Steuerung102 das Lesen und Decodieren von Daten wiederholen muss, kann die Steuerung102 die zwei vorhergehenden Lesepegelspannungen für diesen Block lesen und die nächste Lesepegelspannung vorhersagen. Nach einer erfolgreichen Lesewiederholung kann die Steuerung102 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 Steuerung102 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; } }
- US 62684157 [0001]
Claims (24)
- 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.
- 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. - 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. - 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. - Verfahren gemäß
Anspruch 4 , wobei die sekundäre Lesepegelspannung höher ist als die Lesepegelspannung, die dem zweiten Decodierungserfolgsindikator entspricht. - 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. - 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.
- 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. - 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. - 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. - 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.
- 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. - 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. - 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. - 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. - 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. - 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. - 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.
- 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. - 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. - 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. - 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.
- 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. - 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.
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 US10636495B2 (en) | 2018-06-12 | 2018-08-01 | Adjustable read retry order based on decoding success trend |
US16/052,523 | 2018-08-01 | ||
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 Granted 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 (9)
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 |
KR20230085625A (ko) | 2021-12-07 | 2023-06-14 | 에스케이하이닉스 주식회사 | 메모리 장치 및 그 동작 방법 |
CN116185309B (zh) * | 2023-04-27 | 2023-08-08 | 合肥康芯威存储技术有限公司 | 一种数据处理方法及数据存储设备 |
Family Cites Families (38)
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 | 富士通株式会社 | 誤り訂正装置 |
CN101553346B (zh) | 2006-09-05 | 2011-01-12 | 盛生投资有限公司 | 手持动力工具 |
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 | 株式会社リコー | 多機能入出力装置及びその制御方法、並びに多機能入出力装置制御プログラム及び記録媒体 |
EP2232843A4 (de) | 2007-12-19 | 2011-07-27 | Colin Simon | Einrichtung und verfahren zur synchronisation von digitalen video- und audioströmen mit medienpräsentationsgeräten |
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 |
EP2764516A4 (de) | 2011-10-05 | 2015-07-08 | Lsi Corp | Selbsthistorisierung und hierarchische konsistenz für nichtflüchtige speicher |
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 |
WO2014158155A1 (en) | 2013-03-28 | 2014-10-02 | Hewlett-Packard Development Company, L.P. | 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 |
US20150127891A1 (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 | 群聯電子股份有限公司 | 讀取電壓準位估測方法、記憶體儲存裝置及記憶體控制電路單元 |
US10108350B2 (en) | 2015-09-10 | 2018-10-23 | Western Digital Technologies, Inc. | Method for providing nonvolatile storage write bandwidth using a caching namespace |
US10048876B2 (en) | 2015-09-10 | 2018-08-14 | Western Digital Technologies, Inc. | Method for providing nonvolatile storage write bandwidth using a caching namespace |
TWI588834B (zh) * | 2016-02-23 | 2017-06-21 | 群聯電子股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
KR102673873B1 (ko) | 2016-06-30 | 2024-06-10 | 삼성전자주식회사 | 데이터 복구 방법 및 이를 적용하는 메모리 시스템 및 레이드 스토리지 시스템 |
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 |
-
2018
- 2018-08-01 US US16/052,523 patent/US10636495B2/en active Active
-
2019
- 2019-02-07 DE DE112019000167.1T patent/DE112019000167T5/de active Granted
- 2019-02-07 WO PCT/US2019/017119 patent/WO2019240847A1/en active Application Filing
- 2019-02-07 CN CN201980005893.XA patent/CN111406370B/zh active Active
- 2019-02-07 KR KR1020207014523A patent/KR102411329B1/ko active IP Right Grant
-
2020
- 2020-03-19 US US16/824,584 patent/US11017867B2/en active Active
-
2021
- 2021-04-29 US US17/244,794 patent/US11557352B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20190378576A1 (en) | 2019-12-12 |
US10636495B2 (en) | 2020-04-28 |
WO2019240847A1 (en) | 2019-12-19 |
US11017867B2 (en) | 2021-05-25 |
US20200219571A1 (en) | 2020-07-09 |
US11557352B2 (en) | 2023-01-17 |
US20210249088A1 (en) | 2021-08-12 |
CN111406370B (zh) | 2023-11-28 |
CN111406370A (zh) | 2020-07-10 |
KR102411329B1 (ko) | 2022-06-22 |
KR20210008326A (ko) | 2021-01-21 |
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 | |
DE102017001433B4 (de) | Systeme und Verfahren für adaptive Lesepegelanpassung | |
DE102016003366B4 (de) | Lesepegelgruppierung für erhöhte flash-leistung | |
DE112014004778B4 (de) | Vorrichtung und Verfahren zum Verwalten von Chipgruppen | |
DE102018105943A1 (de) | Kontextbewusste dynamische Befehlsplanung für ein Datenspeichersystem | |
DE102019124438B4 (de) | Multi-state-programmierung für speichervorrichtungen | |
DE112020006139B4 (de) | Vor-lese-und lese-schwellenspannungsoptimierung | |
DE112018000834T5 (de) | System und verfahren zur adaptiven befehlsabruf-aggregation | |
DE102017128994A1 (de) | Weiche Dekodierungs-Planung | |
DE102017117066A1 (de) | Nichtbinäre codierung für einen nichtflüchtigen speicher | |
DE112015000378T5 (de) | Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher | |
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 | |
DE102019125060A1 (de) | Datenspeichersysteme und verfahren zum autonomen anpassen der leistung, kapazität und/oder der betriebsanforderungen eines datenspeichersystems | |
DE112018000230T5 (de) | System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers | |
DE102018105434A1 (de) | Verfahren und System zum Abtasten von gelöschten Flashspeicherseiten mit Querverweis auf verwandte Anwendungen | |
DE112019005506T5 (de) | Systeme und verfahren zum finden einer letzten guten seite in einem offenen nand-block | |
DE102019133147A1 (de) | Datenspeichersysteme und verfahren zur optimierten planung von hintergrund-verwaltungsoperationen | |
DE102022101607A1 (de) | Verwaltung der hostspeicherpufferzuweisung | |
DE102015117500A1 (de) | Verfahren zur Verbesserung des gemischten Random-Verhaltens bei Arbeitslasten mit niedriger Queue-Tiefe | |
DE112016002305B4 (de) | Reduktion der Schreibverstärkung in einem Objektspeicher |
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 |
|
R016 | Response to examination communication | ||
R018 | Grant decision by examination section/examining division | ||
R081 | Change of applicant/patentee |
Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., SAN JOSE, CA, US Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATE, US Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., SAN JOSE, CA, US |
|
R081 | Change of applicant/patentee |
Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US Free format text: FORMER OWNER: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATES DELAWARE), MILPITAS, CA, US |