DE102010021516B4 - Fehlerkorrekturcodes für erhöhte Speicherkapazität in Mehrpegelspeichereinrichtungen - Google Patents
Fehlerkorrekturcodes für erhöhte Speicherkapazität in Mehrpegelspeichereinrichtungen Download PDFInfo
- Publication number
- DE102010021516B4 DE102010021516B4 DE102010021516.3A DE102010021516A DE102010021516B4 DE 102010021516 B4 DE102010021516 B4 DE 102010021516B4 DE 102010021516 A DE102010021516 A DE 102010021516A DE 102010021516 B4 DE102010021516 B4 DE 102010021516B4
- Authority
- DE
- Germany
- Prior art keywords
- parity
- code sequence
- information bits
- cells
- nvm
- 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.)
- Active
Links
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/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
-
- 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/29—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2933—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using a block and a convolutional code
-
- 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/29—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer 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/29—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2933—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using a block and a convolutional code
- H03M13/2936—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using a block and a convolutional code comprising an outer Reed-Solomon code and an inner convolutional code
-
- 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
-
- 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
-
- 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
-
- 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/25—Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM]
- H03M13/256—Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM] with trellis coding, e.g. with convolutional codes and TCM
-
- 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/27—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 using interleaving techniques
-
- 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/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/41—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
- Read Only Memory (AREA)
Abstract
Description
- Bereich
- Ausführungsformen der vorliegenden Offenbarung beziehen sich auf den Bereich von Speicher und genauer gesagt auf Fehlerkorrekturcodes für erhöhte Speicherkapazität in Mehrpegelspeichereinrichtungen.
- Hintergrund
- Bei dem gewöhnlichen Arbeitsablauf für die Entwicklung einer nichtflüchtigen Speichereinrichtung (nonvolatile memory(NVM)-Einrichtung) wie etwa einer Flasheinrichtung werden Fehlerkorrekturcodes (error correcting codes, ECCs) nach der Festlegung von Schlüsselparametern der NVM-Einrichtung entwickelt (beispielsweise Größe der Technologiegeneration, Anzahl von Bits pro Zelle usw.). Allenfalls werden einige grobe Schätzungen der ECC-Auswirkung auf Latenzzeiten und logische Fläche durchgeführt.
- Die Druckschrift
US 2008/0 137 413 A1 - Druckschrift
US 2008/0 137 413 A1 - Weiter beschreibt die Druckschrift
EP 2 028 661 A1 eine Erfindung bei der Daten in Übereinstimmung mit ihren Attributen unterschiedlich geschrieben und gelesen werden, wobei die Attribute unter anderem folgendes beinhalten können: kritische gegen unkritische Daten, Streaming vs nicht-Streaming-Medien, vertrauliche vs nicht vertraulich oder Lese-/Schreibgeschwindigkeitanforderungen. - Ein zu schreibender Datenblock kann als Objekt gesehen werden, und wird geprüft, und von seinen Attributen können eine oder mehrere Betriebsarten der Speichervorrichtung bestimmt werden, wie z. B. eine unterschiedliche Anzahl von Bits pro Zelle, eine unterschiedliche Anzahl von Fehlerkorrekturcode (ECC) Paritäten pro Nutzdatenblocks und Verschlüsselung gegen mangelnde Verschlüsselung.
- Der Speicher-Controller führt dann den Schreibprozess gemäß dem Betriebsmodus bzw. der Betriebsmodi aus, die durch die Attribute bestimmt sind. Multi-Level-Flash-Speicher ist insbesondere in der Lage, in diesen verschiedenen Modi zu operieren, einen Kompromiss zwischen Sicherheit, Geschwindigkeit, Lebensdauer einerseits und der Kapazität andererseits eingehend.
- Kurze Beschreibung der Zeichnungen
- Ausführungsformen können durch die sich anschließende genaue Beschreibung zusammen mit den beigefügten Zeichnungen leicht verstanden werden. Um diese Beschreibung zu erleichtern, bezeichnen gleiche Referenznummern gleiche Bauteile. Ausführungsformen werden in den Figuren der beigefügten Zeichnungen als Beispiele und nicht als Einschränkungen dargestellt.
-
1 veranschaulicht eine nichtflüchtige Speichereinrichtung gemäß einer Ausführungsform. -
2 veranschaulicht ein Berechnungssystem gemäß einer Ausführungsform. -
3 ist eine Anzahl von Flussdiagrammen, die verschiedene Berechnungsoperationen gemäß einer Ausführungsform veranschaulichen. -
4 veranschaulicht eine Tabelle mit Parameterkombinationen gemäß einer Ausführungsform. -
5 veranschaulicht die nichtflüchtige Speichereinrichtung gemäß einer Ausführungsform. -
6 zeigt zwei Flussdiagramme, die eine Codierungsoperation und eine Decodierungsoperation gemäß einer Ausführungsform veranschaulichen. -
7 ist ein Diagramm mit graphischer Darstellung von Fehlerraten gegen Signal-Rausch-Verhältnis gemäß einer Ausführungsform. -
8 veranschaulicht eine Hostvorrichtung gemäß einer Ausführungsform, die eine NVM-Einrichtung enthält. - Genaue Beschreibung
- In der folgenden genauen Beschreibung wird Bezug genommen auf die beigefügten Zeichnungen, die einen Teil hiervon bilden, wobei gleiche Zahlzeichen durchwegs gleiche Teile bezeichnen, und in denen zur Veranschaulichung Ausführungsformen gezeichnet sind, durch die die Offenbarung verwirklicht werden kann. Es versteht sich, dass andere Ausführungsformen verwendet und bauliche oder logische Veränderungen vorgenommen werden können, ohne den Umfang der vorliegenden Erfindung zu verlassen. Aus diesem Grund darf die folgende genaue Beschreibung nicht in einschränkender Weise verstanden werden, und der Umfang der Ausführungsformen gemäß der vorliegenden Offenbarung wird durch die angefügten Ansprüche und deren Äquivalente bestimmt.
- Verschiedene Operationen können als mehrere einzelne Operationen nacheinander beschrieben werden, in einer Weise, die hilfreich für das Verständnis von Ausführungsformen der vorliegenden Offenbarung sein kann; die Reihenfolge der Beschreibung sollte jedoch nicht so gedeutet werden, dass sie eine Abhängigkeit dieser Operationen von der Reihenfolge impliziert.
- Für die Zwecke der vorliegenden Offenbarung bedeutet der Ausdruck „A und/oder B” „(A), (B) oder (A und B)”. Für die Zwecke der vorliegenden Offenbarung bedeutet der Ausdruck „A, B und/oder C” „(A), (B), (C), (A und B), (A und C), (B und C) oder (A, B und C)”.
- Verschiedene Module und Bauteile können unter Bezug auf eine Operation, die von den Modulen und Bauteilen bereitgestellt wird, eingeführt werden. Diese Module und Bauteile können Hardware-, Software- und/oder Firmwareelemente aufweisen, um die beschriebenen Operationen bereitzustellen. Während einige dieser Module und Bauteile in einem gewissen Grad an Genauigkeit, z. B. durch Angabe einzelner Elemente in einer festgelegten Anordnung, gezeigt sein können, können andere Ausführungsformen verschiedene Abwandlungen von Elementen/Anordnungen verwenden, um die zugehörigen Operationen innerhalb der Vorgaben/Ziele einer bestimmten Ausführungsform bereitzustellen.
- Die Beschreibung kann die Ausdrücke „in einer Ausführungsform” oder „in Ausführungsformen” verwenden, die sich jeweils auf eine oder mehrere gleiche oder verschiedene Ausführungsformen beziehen können. Ferner sind die Begriffe „umfassen”, „aufweisen”, „haben” u. dgl. im Hinblick auf Ausführungsformen der vorliegenden Offenbarung als Synonyme verwendet.
- Der gewöhnliche Arbeitsablauf für die Entwicklung einer nichtflüchtigen Speichereinrichtung (NVM-Einrichtung) wie oben beschrieben, kann effizient sein, wenn die Anzahl an Paritätsinformationsbits bedeutend geringer ist als die Anzahl an Nicht-Paritätsinformationsbits. Mit der sich verkleinernden Größe der Technologiegenerationen und der sich erhöhenden Anzahl von in jeder Zelle gespeicherten Bits wird jedoch die Rohbitfehlerrate (bit error rate, BER) größer und größer und folglich erhöht sich die Anzahl von Paritätsinformationsbits. In diesen Situationen wird der vorgegebene Gewinn an Speicherkapazität durch die sich erhöhende Anzahl an Bits pro Zelle durch den damit verbundenen Anstieg in einer Anzahl von Paritätsinformationsbits aufgehoben, die zum Erreichen eines Zuverlässigkeitsziels verlangt werden. Dies ist insbesondere der Fall, wenn hard-decision ECC-Lösungen, beispielsweise Hamming und BCH-Codes, verwendet werden. Dementsprechend stellen die hier diskutierten Ausführungsformen Metriken und ECC-Schemata bereit, die zum Erhöhen der Speicherkapazität von NVM-Einrichtungen verwendet werden können.
-
1 veranschaulicht eine NVM-Einrichtung100 gemäß einer Ausführungsform. Die NVM-Einrichtung100 kann ein Programmiergerät104 aufweisen, das Eingangsdaten von beispielsweise einer Hostvorrichtung empfängt, die Eingangsdaten codiert und die codierten Daten in eine Zellenmatrix108 schreibt, mit der es verbunden ist. Die Zellenmatrix108 kann eine Matrix aus Mehrpegelspeicherzellen sein, die jeweils durch einen Floatinggate Metall-Oxid-Halbleiter(MOS)-Transistor gebildet sind. In anderen Ausführungsformen können andere Transistoren oder transistorähnliche Technologien verwendet werden. In einigen Ausführungsformen können die Mehrpegelspeicherzellen (oder einfach „Zellen”) Phasenänderungs-Speicherzellen (phase change memory cells) sein. - Die NVM-Einrichtung
100 kann auch ein Lesegerät112 aufweisen, das mit der Zellenmatrix108 verbunden ist. Das Lesegerät112 kann unter Verwendung eines oder mehrerer Leseverstärker zum Lesen von Spannungsniveaus, Vt, von verschiedenen Zellen auf die in der Zellenmatrix108 gespeicherten codierten Daten zugreifen und den Logikpegel oder „Zellenzustand” („cell state”) bestimmen durch den Vergleich der Spannungsniveaus mit einem oder mehreren Schwellenwerten. Die Zellen können mehr als zwei Logikpegel oder „Zellenzustände” haben, die durch den einen oder die mehreren Leseverstärker bestimmt werden, die die Vt einer bestimmten MLC mit einer Mehrzahl von Spannungsschwellen vergleichen. Somit kann ein Logikpegel einem separaten Bereich von Vt entsprechen. - Nach dem Zugriff auf die codierten Daten kann das Lesegerät
112 die Daten auf eine Weise decodieren, die komplementär zu der Codierungsoperation des Programmiergerätes104 ist. Das Lesegerät112 kann dann die Ausgangsdaten z. B. der Hostvorrichtung bereitstellen. - Bei der Codierungsoperation, die durch das Programmiergerät
104 bereitgestellt wird, kann eine Anzahl von Nicht-Paritätsinformationsbits, die die Eingangsdaten darstellen, zusammen mit einer Anzahl von Paritätsinformationsbits erzeugt werden, die zur Korrektur von Fehlern verwendet werden können, die bei der sich anschließenden Wiedergewinnung der Nicht-Paritätsinformationsbits auftreten können. Die Nicht-Paritätsinformationsbits können in Nicht-Paritätszellen geschrieben werden, während die Paritätsinformationsbits in Paritätszellen geschrieben werden können. Es gibt eine Anzahl von Parametern der NVM-Einrichtung100 , einschließlich des bei dem Codierungsprozess verwendeten ECC-Schemas, die eine Auswirkung auf den Anteil von Paritätszellen der Zellenmatrix haben, die zum Einhalten von Zielfehlerraten der NVM-Einrichtung100 erforderlich sind. Demgemäß stellen Ausführungsformen der vorliegenden Offenbarung Systeme, Verfahren und Vorrichtungen bereit zum Auswählen der Parameter, die die Speicherkapazität der Zellenmatrix108 erhöhen, während die erwünschten Betriebskenndaten beibehalten werden. -
2 veranschaulicht ein Berechnungssystem200 , das zum Auswählen von Parametern der NVM-Einrichtung100 gemäß einigen Ausführungsformen verwendet werden kann. Das Berechnungssystem200 kann vier Berechnungsmodule aufweisen: ein Nicht-Paritätsberechnungsmodul204 , ein tatsächliches Bit-pro-Zelle (actual bit per cell, ABC) Berechnungsmodul208 , ein Paritätsberechnungsmodul212 und ein nominales Bit-pro-Zelle (nominal bit per cell, B/C) Berechnungsmodul216 , die zumindest wie gezeigt miteinander verkoppelt sind. - Jedes dieser Berechnungsmodule kann entsprechende Eingaben empfangen, die sich auf eine ausgewählte Parameterkombination der NVM-Einrichtung
100 beziehen. Als Antwort kann jedes dieser Berechnungsmodule eine entsprechende Ausgabe bereitstellen, die als direkte und/oder indirekte Grundlage zum Auswählen einer erwünschten Parameterkombination der NVM-Einrichtung100 verwendet werden kann. Die von diesen Berechnungsmodulen bereitgestellten Berechnungen können die funktionalen gegenseitigen Abhängigkeiten der verschiedenen Parameter begründen. Die Metrik ABC (actual bits per cell) kann operative Vergleiche der verschiedenen Parameterkombinationen ermöglichen, wie im Folgenden beschrieben wird. -
3 beinhaltet Flussdiagramme, die Berechnungsoperationen der verschiedenen Module von2 gemäß einigen Ausführungsformen beschreiben.4 stellt eine Tabelle400 dar, die sieben verschiedene Parameterkombinationen und für jede berechnete Werte gemäß einigen Ausführungsformen bereitstellt. - Zunächst mit Bezug auf Kombination A kann das b/c Berechnungsmodul
216 als Eingaben ein Zellenquantum von 1 und eine Anzahl von Aufteilungen von 4 empfangen. Ein Zellenquantum bezieht sich auf eine Anzahl von Zellen, die zusammen gelesen werden, um Bitinformation zu entnehmen, und die Anzahl von Aufteilungen bezieht sich auf die Anzahl von Logikpegeln für jede Zelle. Wenn diese Eingaben gegeben sind, kann das b/c Berechnungsmodul216 bestimmen, dass der b/c-Wert 2 ist. Das heißt, jede Zelle kann im Durchschnitt zwei Bits darstellen. - Auch mit Bezug auf
3a kann das Nicht-Paritätsberechnungsmodul204 in Block304 eine Einrichtungsgröße der NVM-Einrichtung100 empfangen. Die Einrichtungsgröße kann als eine Anzahl von Nicht-Paritätsinformationsbits gegeben sein, die die NVM-Einrichtung100 speichern kann. In den Kombinationen von Tabelle400 ist die Einrichtungsgröße gegeben als 32,678 Megabits (Mbit). In Block308 kann das Nicht-Paritätsberechnungsmodul204 die b/c von dem b/c Berechnungsmodul216 empfangen. Wenn diese Eingaben gegeben sind, kann das Nicht-Paritätsberechnungsmodul204 eine Anzahl von Nicht-Paritätszellen im Block312 bestimmen. Mit Kombination A kann die Anzahl von Nicht-Paritätszellen 16,384 × 106 sein. - Nun mit Bezug zu
3c kann das Paritätsberechnungsmodul212 folgendes empfangen: Die Einrichtungsgröße der NVM-Einrichtung100 in Block316 ; eine Anzahl von Aufteilungen der Zellen der NVM-Einrichtung100 in Block320 ; ein ECC-Schema zur Verwendung beim Programmieren/Lesen von Daten in/von der NVM-Einrichtung100 in Block324 ; und ein b/c von dem b/c Berechnungsmodul216 in Block328 . Das Paritätsberechnungsmodul212 kann diese Eingaben als Grundlage für die Bestimmung einer Anzahl von Paritätszellen in Block332 verwenden. - In einigen Ausführungsformen kann das Paritätsberechnungsmodul
212 einen ECC-Wert bestimmen, der bestimmt wird basierend auf einer Bitfehlerrate BER (bit error rate), der zu der bereitgestellten Anzahl von Aufteilungen gehört, und auf einer Ziel-Einrichtungsfehlerrate (DER, device error rate) für die NVM-Einrichtung100 . Mit Bezug auf die Parameter der Kombination A und unter Annahme, dass alle Aufteilungen die gleiche Breite, beispielsweise 1,3 Volt (V), haben, kann ein Lesefenster von 5,5 V zur Aufnahme der 4 Aufteilungen einer Zelle verwendet werden. Dies kann eine BER von etwa 10–5 ergeben. Zum Erreichen einer DER von 10 parts per million (ppm) angesichts dieser BER kann das Paritätsberechnungsmodul212 bestimmen, dass ein 6 Bit ECC-Wert verwendet werden kann. Der ECC-Wert kann sich auf die Anzahl von Bits beziehen, die pro ECC-Block korrigiert werden können, was z. B. 512 Nicht-Paritätsinformationsbytes sein kann. - Wenn Kombination A BCH-Codes als das ECC-Schema verwendet, kann das Paritätsberechnungsmodul
212 bestimmen, dass es 78 Paritätsinformationsbits pro ECC-Block von 512 Nicht-Paritätsinformationsbytes geben würde. Dies kann einen Paritäts-Overhead von etwa 2% bereitstellen und zu etwa 328 × 106 Paritätszellen für die gegebene Ausführungsform führen. - Während in dieser Offenbarung bestimmte Werte als von bestimmten Modulen bestimmt beschrieben werden, können in anderen Ausführungsformen die gegebenen Module die Werte als Eingaben von anderen Modulen erhalten und umgekehrt.
- Nun mit Bezug zu
3b kann das ABC-Berechnungsmodul208 Folgendes empfangen: Die Größe der NVM-Einrichtung100 in Block336 ; die Anzahl von Nicht-Paritätszellen von dem Nicht-Paritätsberechnungsmodul204 in Block340 ; und die Anzahl von Paritätszellen von dem Paritätsberechnungsmodul212 in Block344 . Das ABC-Berechnungsmodul208 kann dann diese Eingaben als Grundlage für die Bestimmung eines ABC in Block348 durch die folgende Gleichung verwenden:ABC = (Bits der Einrichtung)/(Nicht-Paritätszellen + Paritätszellen) Gleichung 1. - Somit stellt der Nenner der Gleichung 1 die wahre Anzahl von Zellen dar, die zum Speichern sowohl der Nicht-Paritätsinformationsbits als auch der Paritätsinformationsbits gebraucht werden, die zum Erfüllen der Ziel-DER erzeugt werden. Der Zähler stellt die Größe der NVM-Einrichtung
100 dar, beispielsweise die Anzahl von Nicht-Paritätsinformationsbits, die sie speichern kann. In Kombination A kann der bestimmte ABC etwa 1,96 sein. - Die ABC-Werte für Kombinationen B–G können auf ähnliche Weise bestimmt werden. Die Hauptvariablen, die unter den verschiedenen Kombinationen angepasst werden können, sind die b/c (einschließlich des Zellenquantums und der Anzahl von Aufteilungen) und das ECC-Schema. Die Bereitstellung verschiedener Werte für diese Hauptvariablen und ein Vergleich der sich ergebenden ABCs kann eine Bestimmung eines erwünschten NVM-Designs ermöglichen, das Planungsziele einer gegebenen Ausführungsform erfüllt.
- In Kombination B ist die Anzahl von Aufteilungen auf 8 erhöht und das Zellenquantum bleibt 1, um ein b/c von 3 bereitzustellen. In diesem Szenario wird die BER zu 0,02 und ein 164 Bit ECC-Wert kann zum Erhalten derselben DER von 10 ppm erforderlich sein. Dies würde zu 2028 Paritätsinformationsbits pro ECC-Block führen, was einem Paritäts-Overhead von 49% entspricht. Das Berechnungssystem
200 kann dann bestimmen, dass der ABC dieses Szenarios 2,01 ist, was nur geringfügig größer ist als der 1,96 ABC von Kombination A. Somit werden die vorgegebenen Gewinne durch den Schritt von 2 b/c zu 3 b/c fast vollständig durch die zusätzlich zum Erreichen der 10 ppm Ziel-DER notwendigen Paritätsinformationsbits ausgelöscht. - In Kombination D kann die Anzahl von Aufteilungen 7 und das Zellenquantum 1 sein, was zu einem b/c von 2,67 führt. In diesem Szenario kann ein 100 Bit ECC-Wert zum Erreichen der 10 ppm Ziel-DER erforderlich sein. Dies führt zu einem Paritäts-Overhead von 31% und einem ABC von 2,03. Somit sind, während die nominalen Bits-pro-Zelle von Kombination D geringer sind als von Kombination B, die tatsächlichen Bits pro Zelle größer.
- Ein ähnlicher Effekt kann beim Betrachten von Kombination F erkannt werden. Bei dieser Kombination kann das Berechnungssystem
200 bestimmen, dass ein ABC von 2,15 bei Verwendung eines b/c von 2,5 erreicht werden kann, was sich aus 6 Aufteilungen und einem Zellenquantum von 1 ergibt. - Auf diese Weise kann die Verwendung des ABC zur Berücksichtigung der mit verschiedenen Parameterkombinationen verbundenen Paritätskosten eine echte Kostenmetrik bereitstellen, durch die diese Kombinationen verglichen werden können.
- In einigen Ausführungsformen, wie oben erwähnt, kann das ECC-Schema auch zum Bereitstellen weiterer Effizienzen angepasst werden. Zum Beispiel können, während die Kombinationen A, B, D und F auf BCH-Codes basieren, zusätzliche Gewinne durch die Verwendung eines verketteten Codes als ECC-Schema erlangt werden. Verkettete Codierung kann zum Erstellen langer, mächtiger ECCs aus kurzkomponentigen Codes verwendet werden. Kombinationen C, E und G verwenden ein verkettetes Codierungsschema mit einer Trellis-Code-Modulation (TCM) als innerem Code und Reed Solomon (RS) als äußerem Code. In anderen Ausführungsformen können andere verkettete Codierungsschemata verwendet werden.
-
5 veranschaulicht die NVM-Einrichtung100 in größerer Genauigkeit gemäß einer Ausführungsform, in der das ECC-Schema ein verkettetes Codierungsschema ist. Die NVM-Einrichtung100 und das Programmiergerät104 können insbesondere durch Verwendung von zwei Codiereinrichtungen einen verketteten Code bilden: Eine äußere Codiereinrichtung504 , die einen Nicht-Binärcode verwendet und eine innere Codiereinrichtung508 , die einen Binärcode verwendet. Das Programmiergerät104 kann auch eine Verschachtelungseinrichtung (interleaver)512 zwischen den zwei Codiereinrichtungen aufweisen. - Die Funktionsweise des Programmiergerätes
104 gemäß einer Ausführungsform kann mit Bezug auf das Flussdiagramm in6a kurz beschrieben werden. In Block604 kann das Programmiergerät104 Eingangsdaten von einer digitalen Quelle516 , z. B. einer Hostvorrichtung empfangen. Die äußere Codiereinrichtung504 kann in Block608 eine äußere Codefolge erzeugen, die zumindest teilweise auf den Eingangsdaten basiert. In Block612 kann die innere Codiereinrichtung eine innere Codefolge erzeugen, die zumindest teilweise auf der äußeren Codefolge basiert, die von der äußeren Codiereinrichtung504 erzeugt wurde. In einigen Ausführungsformen, so wie in5 , kann eine Verschachtelungseinrichtung, z. B. die Verschachtelungseinrichtung512 , die äußere Codefolge verschachteln und die innere Codiereinrichtung508 kann die innere Codefolge erzeugen, die zumindest teilweise auf der verschachtelten äußeren Codefolge basiert. - Die innere Codefolge, auf die in
5 als „codierte Daten” Bezug genommen werden kann, kann sowohl Paritäts- als auch Nicht-Paritätsinformationsbits aufweisen. Diese Paritäts- und Nicht-Paritätsinformationsbits können dann in Paritätszellen bzw. Nicht-Paritätszellen der Zellenmatrix108 in Block616 geschrieben werden. - Das Lesegerät
112 kann eine innere Decodiereinrichtung520 , eine Entschachtelungseinrichtung524 und eine äußere Decodiereinrichtung528 aufweisen, die in einer komplementären Weise zu den Bestandteilen des Programmiergerätes104 arbeiten. Die Arbeitsweise des Lesegerätes112 gemäß einer Ausführungsform kann mit Bezug auf das Flussdiagramm der6b kurz beschrieben werden. - In Block
624 kann das Lesegerät112 die innere Codefolge, beispielsweise die codierten Daten oder verkettete Codefolge, von der Zellenmatrix108 empfangen. Dies kann durch Lesen der Paritätsinformationsbits von den Paritätszellen und durch Lesen der Nicht-Paritätsinformationsbits von den Nicht-Paritätszellen geschehen. In Block628 kann die innere Decodiereinrichtung520 des Lesegerätes112 die innere Codefolge decodieren, um eine äußere Codefolge bereitzustellen. Diese kann der äußeren Decodiereinrichtung528 zur Verfügung gestellt werden. In einigen Ausführungsformen kann die äußere Codefolge durch eine Entschachtelungseinrichtung524 entschachtelt werden, bevor sie der äußeren Decodiereinrichtung528 bereitgestellt wird. Die äußere Decodiereinrichtung528 kann die äußere Codefolge decodieren, um Eingangsdaten in Block632 zur Verfügung zu stellen. Die digitalen Daten können dann einer digitalen Senke532 , z. B. der Hostvorrichtung, übermittelt werden. - Die in dieser Ausführungsform verwendete verkettete Codierung kann hohe Verlässlichkeit bei verringerter Komplexität erreichen. Die von der inneren Codiereinrichtung
508 erzeugte innere Codefolge kann eine kurze TCM-Folge sein, die durch die innere Decodiereinrichtung520 mit einem soff-decision Decodierungsalgorithmus, beispielsweise einem Viterbi-Algorithmus decodiert wird. Die äußere Codefolge kann länger sein als die innere Codefolge und kann von der äußeren Decodiereinrichtung528 mit einer algebraischen Decodierungsmethode, beispielsweise einem RS-Code decodiert werden. - Die Effizienz dieser Kombination folgt aus der Tatsache, dass der innere weiche Code (soff code) den Codierungskanal weniger verrauscht macht, beispielsweise das Programmieren und Lesen von in der Zellenmatrix
108 gespeicherten Werten. Der innere Code, beispielsweise der TCM-Code, tut dies im Wesentlichen durch die Verbindung von binären Faltungscodes mit gewöhnlicher Rate R = k/(k + 1) mit einer M-stufigen Signalkonstellation (M = 2(k+1) > 2) auf eine Weise, dass der Codierungsgewinn ohne Erhöhen der Rate erreicht wird, bei der Symbole übermittelt werden. In anderen Worten werden keine zusätzlichen Paritätsprüfungszellen gebraucht. Dann wird der äußere Code, da er auf einem besseren Kanal arbeitet, sehr effizient beim „Zermalmen” der übrigen Fehler. Die Effizienz kann mit Bezug zu7 weiter erklärt werden. -
7 ist ein Graph700 , der Fehlerwahrscheinlichkeiten eines 512 Byte ECC-Blocks gemäß einigen Ausführungsformen zeigt. Insbesondere stellt der Graph700 Signal-Rauschverhältnisse (signal-to-noise ratios, SNRs) gegenüber Wortfehlerraten (word error rates, WERs) für Signale von verschiedenen ECC-Codierschemata und Werten graphisch dar. Die SNRs können die Anzahl von Aufteilungen und die Aufteilungsbreite der Zellen der Zellenmatrix108 betreffen, während die WERs direkt proportional zu den BERs sein können. - Die senkrechte gestrichelte Linie
704 stellt eine erste SNR dar; die vertikale gestrichelte Linie708 stellt eine zweite SNR dar; und die horizontale gestrichelte Linie712 ist eine Fehlerrate des ECC-Blockes, die zum Erlangen einer Ziel-DER von 10 ppm zu erreichen ist. Die Linien716 ,720 ,724 ,728 ,732 ,736 und740 entsprechen den ECC-Werten 164 b, 80 b, 66 b, 40 b, 24 b, 12 b und 0 b. - Wenn die SNR der vertikalen gestrichelten Linie
704 gegeben ist, die einer Ausführungsform mit 8 Aufteilungen für eine Zelle entsprechen kann, kann ein ECC-Wert von 164 b (dargestellt durch Linie716 ) zum Erreichen der Ziel-DER verwendet werden. Somit würde eine Ausführungsform, die einen Standard-BCH-Code verwendet, einen ECC-Wert von 164 b benötigen, wie oben mit Bezug auf Kombination B ausgeführt wurde. - Wenn jedoch Faltungscodes verwendet werden, kann ein innerer Code, beispielsweise ein TCM-Code, einen SNR-Gewinn von etwa 2 dB an dem Codierungskanal bereitstellen. Somit wirkt der äußere Code effektiv auf einen Codierungskanal mit einem SNR ein, das sich auf die vertikale gestrichelte Linie
708 im Gegensatz zu der vertikalen gestrichelten Linie704 bezieht. Diese SNR beschafft der äußeren Decodiereinrichtung528 die Flexibilität, den 66 b Code zu verwenden (dargestellt durch Linie724 ). - Linien
744 bzw.748 zeigen, wie die BER sich pro SNR für ein uncodiertes Signal bzw. ein durch Faltung codiertes Signal ändert. Linie744 stellt eine echte Kanalbedingung dar und Linie748 stellt Kanalbedingungen dar, wie sie durch einen BCH-Code nach Anwendung auf Faltungscodes gesehen werden. Wie zu sehen ist, ist das durch Faltung codierte Signal mit geringeren BERs über den Bereich der SNRs verknüpft. - Erneut mit Bezug zu der Tabelle
400 der4 sind die Kombinationen, die Faltungscodes als ein ECC-Schema verwenden, beispielsweise Kombinationen C, E und G, mit ABC-Werten verknüpft, die größer als 2,2 sind während die mit den Kombinationen, die nur BCH-Codes verwenden, verknüpfte ABC-Werte alle kleiner als 2,2 sind. - Wieder mit Bezug zu
2 kann das System200 in einigen Ausführungsformen eine Auswahleinrichtung220 aufweisen, die Parameterkombinationen und zugehörige ABC-Werte empfängt und, basierend auf den ABC-Werten, gewünschte Parameter auswählt. Es kann sein, dass die Hauptvariablen der Parameterkombinationen ECC-Schemata und nominale Bits-pro-Zelle sind. Folglich können diese Parameter und/oder die zugrunde liegenden Parameter, die eine Auswirkung auf diese Parameter haben (beispielsweise # an Aufteilungen und Zellenquantum) die ausgewählten Parameter dieser Ausführungsformen sein. -
8 veranschaulicht eine Hostvorrichtung800 , die die NVM-Einrichtung100 gemäß einigen Ausführungsformen beherbergen kann. Die Hostvorrichtung800 kann aufweisen: einen oder mehrere Prozessoren804 ; an mindestens einen der Prozessoren gekoppelte Systemsteuerlogik808 ; an die Systemsteuerlogik808 gekoppelten Systemspeicher812 ; die an die Systemsteuerlogik808 gekoppelte NVM-Einrichtung100 ; und eine oder mehrere an die Systemsteuerlogik808 gekoppelte Kommunikationsschnittstellen820 . - Systemsteuerlogik
808 für eine Ausführungsform kann beliebige geeignete Schnittstellensteuerungen zum Bereitstellen passender Schnittstellen für die Bauteile, an die sie gekoppelt ist, aufweisen. - Systemspeicher
812 kann zum Laden und/oder Speichern von Daten/Anweisungen, z. B. für die Hostvorrichtung800 , verwendet werden. Systemspeicher812 kann einen geeigneten flüchtigen Speicher aufweisen, wie etwa, aber nicht beschränkt auf geeigneten dynamischen random access memory (DRAM). - Die NVM-Einrichtung
100 kann auch zum Laden und/oder Speichern von Daten/Anweisungen, z. B. für die Hostvorrichtung800 , verwendet werden. Die NVM-Einrichtung100 kann einen geeigneten nichtflüchtigen Speicher aufweisen, wie etwa, aber nicht beschränkt auf NOR Flashspeicher, NAND Flashspeicher, Phase-Change-Speicher usw. - In einigen Ausführungsformen kann die Logik Anweisungen
824 aufweisen, die, wenn ausgeführt durch den/die Prozessor(en)804 , zur Durchführung zumindest einiger der hierin beschriebenen Programmier-, Lese- und/oder Berechnungsoperationen in der Hostvorrichtung800 und/oder der NVM-Einrichtung100 führen. Die Anweisungen können in der NVM-Einrichtung100 und/oder dem Systemspeicher812 positioniert sein. In einigen Ausführungsformen können die Anweisungen824 zusätzlich/alternativ in der Systemsteuerlogik808 angeordnet sein. - In einigen Ausführungsformen kann die Hostvorrichtung
800 zur Implementierung der Module des Berechnungssystems200 und nicht der Programmier-/Leseoperationen der NVM-Einrichtung100 selbst verwendet werden. In diesen Ausführungsformen kann die NVM-Einrichtung100 nicht in der Hostvorrichtung800 enthalten sein. - Kommunikationsschnittstelle(n)
820 können eine Schnittstelle für die Hostvorrichtung800 zum Kommunizieren über ein oder mehrere Netzwerke und/oder mit einer anderen geeigneten Einrichtung bereitstellen. Kommunikationsschnittstelle(n)820 können andere geeignete Hardware und/oder Firmware aufweisen. Kommunikationsstelle(n)820 für eine Ausführungsform können z. B. einen Netzwerkadapter, einen drahtlosen Netzwerkadapter, ein Telefonmodem und/oder ein drahtloses Modem aufweisen. Für drahtlose Kommunikation kann/können die Kommunikationsschnittstelle(n)820 für eine Ausführungsform eine oder mehrere Antennen verwenden. - Für eine Ausführungsform kann mindestens einer der Prozessoren
804 mit Logik für eine oder mehrere Controller der Systemsteuerlogik808 gebündelt sein. Für eine Ausführungsform kann mindestens ein Prozessor der Prozessoren804 zusammen mit Logik für einen oder mehrere Controller der Systemsteuerlogik808 zur Bildung eines System-in-Package (SiP) gebündelt sein. Für eine Ausführungsform kann mindestens ein Prozessor der Prozessoren804 mit Logik für einen oder mehrere Controller der Systemsteuerlogik808 auf demselben Plättchen (die) integriert sein. Für eine Ausführungsform kann mindestens ein Prozessor der Prozessoren804 mit Logik für einen oder mehrere Controller der Systemsteuerlogik808 auf demselben Plättchen (die) zur Bildung eines System-on-chip (SoC) integriert sein. - In verschiedenen Ausführungsformen kann die Hostvorrichtung
800 ein Desktop- oder Laptop-Computer, ein Server, eine Set-top-Box, ein digitales Aufzeichnungsgerät, eine Spielekonsole, ein personal digital assistant (PDA), ein Handy, ein digitaler Mediaplayer, eine Digitalkamera usw. sein. Die Hostvorrichtung800 kann mehr oder weniger Bestandteile und/oder verschiedene Architekturen haben. - Wenn auch bestimmte Ausführungsformen hierin zum Zweck der Beschreibung der bevorzugten Ausführungsform veranschaulicht und beschrieben wurden, werden Fachmänner auf dem Gebiet verstehen, dass eine große Anzahl von zum Erlangen derselben Zwecke ermittelten alternativen und/oder äquivalenten Ausführungsformen oder Implementierungen an die Stelle der gezeigten und beschriebenen Ausführungsformen gesetzt werden können, ohne den Umfang der vorliegenden Offenbarung zu verlassen. Gleichermaßen können Speichervorrichtungen der vorliegenden Offenbarung in Hostvorrichtungen mit anderen Architekturen verwendet werden. Diese Anmeldung soll beliebige Adaptionen oder Variationen der hierin erläuterten Ausführungsformen umfassen. Aus diesem Grund sollen Ausführungsformen gemäß der vorliegenden Offenbarung offenkundigerweise nur durch die Ansprüche und deren Äquivalente beschränkt sein.
Claims (22)
- Ein Verfahren, das die folgenden Schritte aufweist: Empfangen von Eingangsdaten; Erzeugen einer äußeren Codefolge, die zumindest teilweise auf den Eingangsdaten basiert, mit einer äußeren Codiereinrichtung; Erzeugen einer inneren Codefolge, die zumindest teilweise auf der äußeren Codefolge basiert, mit einer inneren Codiereinrichtung, wobei die innere Codefolge eine erste Mehrzahl von Paritätsinformationsbits und eine zweite Mehrzahl von Nicht-Paritätsinformationsbits aufweist; Schreiben der ersten Mehrzahl von Paritätsinformationsbits in eine dritte Mehrzahl von Paritätszellen einer nichtflüchtigen Speichereinrichtung; und Schreiben der zweiten Mehrzahl von Nicht-Paritätsinformationsbits in eine vierte Mehrzahl von Nicht-Paritätszellen der nichtflüchtigen Speichereinrichtung.
- Verfahren nach Anspruch 1, das ferner aufweist: Verwenden eines Nicht-Binärcodes bei dem Erzeugen der äußeren Codefolge; und Verwenden eines Binärcodes beim Erzeugen der inneren Codefolge.
- Verfahren nach Anspruch 2, wobei der Nicht-Binärcode ein Reed Solomon-Code und der Binärcode ein Trellis-Code-Modulationscode ist.
- Verfahren nach Anspruch 1, das ferner aufweist: Schreiben einer nominalen Zahl von Bits pro Zelle, die größer als 2 ist; und Verwenden einer Gesamtanzahl von 15% oder weniger von Zellen der nichtflüchtigen Speichereinrichtung als Paritätszellen.
- Verfahren nach Anspruch 1, wobei die nichtflüchtige Speichereinrichtung eine erste Zahl von Nicht-Paritätsinformationsbits speichern kann, und die erste Zahl geteilt durch eine Summe einer zweiten Zahl von Paritätszellen der nichtflüchtigen Speichereinrichtung und einer dritten Anzahl von Nicht-Paritätszellen der nichtflüchtigen Speichereinrichtung größer als 2,2 ist.
- Verfahren nach Anspruch 5, wobei jede Zelle acht oder mehr Aufteilungen aufweist.
- Verfahren, das die folgenden Schritte aufweist: Lesen einer ersten Mehrzahl von Paritätsinformationsbits von einer zweiten Mehrzahl von Paritätszellen einer nichtflüchtigen Speichereinrichtung; Lesen einer dritten Mehrzahl von Nicht-Paritätsinformationsbits von einer vierten Mehrzahl von Nicht-Paritätszellen der nichtflüchtigen Speichereinrichtung, wobei die erste Mehrzahl von Paritätsinformationsbits und die dritte Mehrzahl von Nicht-Paritätsinformationsbits einer inneren Codefolge entspricht; Decodieren der inneren Codefolge mit einer inneren Decodiereinrichtung zum Bereitstellen einer äußeren Codefolge; und Decodieren der äußeren Codefolge mit einer äußeren Decodiereinrichtung zum Bereitstellen von Eingabedaten.
- Verfahren nach Anspruch 7, das ferner aufweist: Entschachteln der äußeren Codefolge vor dem Decodieren der äußeren Codefolge.
- Verfahren nach Anspruch 7, das ferner aufweist: Verwenden eines Binärcodes beim Decodieren der inneren Codefolge; und Verwenden eines Nicht-Binärcodes beim Decodieren der äußeren Codefolge.
- Computerlesbares Medium mit darauf gespeicherten computerausführbaren Anweisungen, die, wenn ausgeführt durch ein Gerät, das Gerät zum Ausführen eines Verfahrens veranlassen, das aufweist: Empfangen einer Anzahl von Nicht-Paritätsinformationsbits, die eine nichtflüchtige Speichereinrichtung (NVM-Einrichtung) speichern kann; Empfangen einer Zahl von Nicht-Paritätszellen der NVM-Einrichtung; Empfangen einer Zahl von Paritätszellen der NVM-Einrichtung; und Bestimmen eines tatsächlichen Bits-pro-Zelle-Wertes für die NVM, basierend zumindest teilweise auf der Zahl von Nicht-Paritätsinformationsbits, der Zahl von Nicht-Paritätszellen und der Zahl von Paritätszellen.
- Computerlesbares Medium nach Anspruch 10, wobei die Anweisungen, wenn sie von dem Gerät ausgeführt werden, das Gerät ferner zur Ausführung des Verfahrens veranlassen, das aufweist: Bestimmen eines tatsächlichen Bits-pro-Zelle-Wertes für jede einer Mehrzahl von möglichen Parameterkombinationen für die NVM.
- Computerlesbares Medium nach Anspruch 11, wobei die Anweisungen, wenn sie von dem Gerät ausgeführt werden, das Gerät ferner zur Ausführung des Verfahrens veranlassen, das aufweist: Auswählen einer ersten Parameterkombination für die NVM-Einrichtung, die zumindest teilweise auf den tatsächlichen Bits-pro-Zelle-Werten der Mehrzahl von möglichen Kombinationen basiert.
- Computerlesbares Medium nach Anspruch 12, wobei die Anweisungen, wenn sie von dem Gerät ausgeführt werden, das Gerät zum Ausführen des Auswählens veranlassen durch: Auswählen eines Fehlerkorrekturcodeschemas; und Auswählen eines nominalen Bits-pro-Zelle-Wertes.
- Computerlesbares Medium nach Anspruch 11, wobei die Anweisungen, wenn sie von dem Gerät ausgeführt werden, das Gerät zur Ausführung des Bestimmens veranlassen durch: Teilen der Bitanzahl der NVM-Einrichtung durch eine Summe der Zahl von Nicht-Paritätszellen und der Zahl von Paritätszellen.
- Computerlesbares Medium nach Anspruch 11, wobei die Anweisungen, wenn sie durch das Gerät ausgeführt werden, das Gerät ferner zum Ausführen des Verfahrens veranlassen, das aufweist: Empfangen der Zahl von Nicht-Paritätsinformationsbits, die die NVM-Einrichtung speichern kann; Empfangen eines nominalen Bits-pro-Zelle-Wertes der NVM-Einrichtung; und Bestimmen der Zahl von Nicht-Paritätszellen der NVM-Einrichtung, basierend zumindest teilweise auf der Zahl von Nicht-Paritätsinformationsbits und dem nominalen Bits-pro-Zelle-Wert.
- Computerlesbares Medium nach Anspruch 11, wobei die Anweisungen, wenn sie durch das Gerät ausgeführt werden, das Gerät ferner zum Ausführen des Verfahrens veranlassen, das aufweist: Empfangen einer Zahl von Zellaufteilungen der NVM-Einrichtung; Empfangen eines Fehlerkorrekturcodeschemas (ECC-Schema) zur Verwendung beim Programmieren von Daten in und beim Lesen von Daten aus der NVM-Einrichtung; und Bestimmen der Zahl von Paritätszellen der NVM-Einrichtung, basierend zumindest teilweise auf der Zahl von Aufteilungen und dem ECC-Schema.
- Vorrichtung, die aufweist: eine Matrix nichtflüchtiger Speicherzellen; und ein mit der Matrix nichtflüchtiger Speicherzellen verbundenes Programmiergerät, wobei das Programmiergerät konfiguriert ist zum Empfang von Eingangsdaten und zum Erzeugen einer verketteten Codefolge, die zumindest teilweise auf den Eingangsdaten basiert, wobei die verkettete Codefolge eine erste Mehrzahl von Paritätsinformationsbits und eine zweite Mehrzahl von Nicht-Paritätsinformationsbits aufweist, und das Programmiergerät ferner konfiguriert ist zum Schreiben der ersten Mehrzahl von Paritätsinformationsbits in eine dritte Mehrzahl von Paritätszellen und zum Schreiben der zweiten Mehrzahl von Nicht-Paritätsinformationsbits in eine vierte Mehrzahl von Nicht-Paritätszellen.
- Vorrichtung nach Anspruch 17, wobei das Programmiergerät aufweist: eine äußere Codiereinrichtung, die zum Empfang der Eingangsdaten und zum Erzeugen einer äußeren Codefolge konfiguriert ist, die zumindest teilweise auf den Eingangsdaten basiert; und eine innere Codiereinrichtung, die zum Erzeugen der verketteten Codefolge konfiguriert ist, die zumindest teilweise auf der äußeren Codefolge basiert.
- Vorrichtung nach Anspruch 18, wobei die äußere Codiereinrichtung ferner konfiguriert ist zum Verwenden eines Nicht-Binärcodes zum Erzeugen der äußeren Codefolge, und die innere Codiereinrichtung ferner konfiguriert ist zum Verwenden eines Binärcodes zum Erzeugen der inneren Codefolge.
- Vorrichtung nach Anspruch 17; die ferner aufweist: eine innere Decodiereinrichtung, die zum Decodieren der verketteten Codefolge zum Bereitstellen einer äußeren Codefolge konfiguriert ist; und eine äußere Decodiereinrichtung, die zum Decodieren der äußeren Codefolge zum Bereitstellen der Eingangsdaten konfiguriert ist.
- Vorrichtung nach Anspruch 17, wobei die Vorrichtung eine integrierte Schaltung ist.
- Vorrichtung nach Anspruch 17, wobei die Vorrichtung eine nichtflüchtige Speichereinrichtung ist.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/482,400 US8370702B2 (en) | 2009-06-10 | 2009-06-10 | Error correcting codes for increased storage capacity in multilevel memory devices |
US12/482,400 | 2009-06-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE102010021516A1 DE102010021516A1 (de) | 2010-12-16 |
DE102010021516B4 true DE102010021516B4 (de) | 2014-03-20 |
Family
ID=43070023
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102010021516.3A Active DE102010021516B4 (de) | 2009-06-10 | 2010-05-26 | Fehlerkorrekturcodes für erhöhte Speicherkapazität in Mehrpegelspeichereinrichtungen |
Country Status (5)
Country | Link |
---|---|
US (2) | US8370702B2 (de) |
JP (1) | JP5229591B2 (de) |
KR (1) | KR101188103B1 (de) |
CN (1) | CN101923902B (de) |
DE (1) | DE102010021516B4 (de) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8656263B2 (en) * | 2010-05-28 | 2014-02-18 | Stec, Inc. | Trellis-coded modulation in a multi-level cell flash memory device |
US11336303B2 (en) * | 2010-06-04 | 2022-05-17 | Micron Technology, Inc. | Advanced bitwise operations and apparatus in a multi-level system with nonvolatile memory |
US9195540B2 (en) * | 2010-10-06 | 2015-11-24 | HGST, Inc. | Multiple sector parallel access memory array with error correction |
KR101606718B1 (ko) * | 2010-10-27 | 2016-03-28 | 엘에스아이 코포레이션 | 플래시 메모리 기반 데이터 저장을 위한 적응적 ecc 기술들 |
KR101355988B1 (ko) | 2012-07-05 | 2014-01-29 | 한국과학기술원 | 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치 |
KR102012310B1 (ko) | 2012-08-07 | 2019-10-21 | 삼성전자 주식회사 | 데이터 저장 장치의 동작 방법, 데이터 저장 장치 및 이를 이용한 시스템 |
JP5794240B2 (ja) | 2013-02-05 | 2015-10-14 | ソニー株式会社 | 誤り検出訂正装置、誤り検出訂正方法、情報処理装置、および、プログラム |
KR102204394B1 (ko) | 2013-10-14 | 2021-01-19 | 삼성전자주식회사 | 메모리 시스템에서의 코딩 방법 및 디코딩 방법 |
GB201320983D0 (en) | 2013-11-28 | 2014-01-15 | Ibm | Data encoding in solid-state storage apparatus |
US9396062B1 (en) * | 2014-04-04 | 2016-07-19 | Seagate Technology Llc | Group based codes for multi-dimensional recording (MDR) |
CN103913130B (zh) * | 2014-04-14 | 2017-01-04 | 哈尔滨理工大学 | 一种用于视觉三维测量组合编解码的容错方法 |
US10180877B2 (en) * | 2016-05-12 | 2019-01-15 | Taiwan Semiconductor Manufacturing Co., Ltd. | Selective error correction in a data storage device |
WO2021199409A1 (ja) * | 2020-04-02 | 2021-10-07 | 三菱電機株式会社 | 誤り訂正符号化装置、誤り訂正復号装置、制御回路、記憶媒体、誤り訂正符号化方法および誤り訂正復号方法 |
US11422888B2 (en) * | 2020-10-14 | 2022-08-23 | Western Digital Technologies, Inc. | Data integrity check for writing data in memory |
WO2022185089A1 (en) * | 2021-03-02 | 2022-09-09 | Micron Technology, Inc. | Methods and systems for managing memory with dynamic ecc protection |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080137413A1 (en) * | 2006-12-06 | 2008-06-12 | Samsung Electronics Co., Ltd | Multi-level cell memory devices using trellis coded modulation and methods of storing data in and reading data from the memory devices |
EP2028661A1 (de) * | 2007-08-20 | 2009-02-25 | Marvell International Ltd. | Verfahren und System für Objekt-orientierte Datenspeicherung |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4654847A (en) * | 1984-12-28 | 1987-03-31 | International Business Machines | Apparatus for automatically correcting erroneous data and for storing the corrected data in a common pool alternate memory array |
CA2124709C (en) | 1993-08-24 | 1998-06-09 | Lee-Fang Wei | Reduced speed equalizer |
CA2157958C (en) | 1994-10-11 | 2000-01-18 | Lee-Fang Wei | Trellis coded modulation employing lower dimensionality convolutional encoder |
JPH11143787A (ja) | 1997-11-06 | 1999-05-28 | Hitachi Ltd | 記録再生装置 |
JP2001167596A (ja) | 1999-12-09 | 2001-06-22 | Toshiba Corp | 不揮発性半導体記憶装置 |
US6219276B1 (en) | 2000-02-25 | 2001-04-17 | Advanced Micro Devices, Inc. | Multilevel cell programming |
US6799294B1 (en) | 2000-04-06 | 2004-09-28 | Lucent Technologies Inc. | Method and apparatus for generating channel error flags for error mitigation and/or concealment in source decoders |
US6675344B1 (en) | 2000-05-01 | 2004-01-06 | Hewlett-Packard Development Company, L.P. | Multiple ECC schemes to improve bandwidth |
US6757860B2 (en) | 2000-08-25 | 2004-06-29 | Agere Systems Inc. | Channel error protection implementable across network layers in a communication system |
JP2002091831A (ja) * | 2000-09-12 | 2002-03-29 | Hitachi Ltd | データ処理システム及びデータ処理方法 |
KR100520621B1 (ko) | 2002-01-16 | 2005-10-10 | 삼성전자주식회사 | 가중화된 비이진 반복 누적 부호와 시공간 부호의 부호화방법 및 장치 |
KR100546348B1 (ko) * | 2003-07-23 | 2006-01-26 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그 데이터 저장 방법 |
US7334159B1 (en) * | 2003-09-29 | 2008-02-19 | Rockwell Automation Technologies, Inc. | Self-testing RAM system and method |
US7395482B2 (en) | 2003-12-18 | 2008-07-01 | International Business Machines Corporation | Data storage systems |
US7210077B2 (en) * | 2004-01-29 | 2007-04-24 | Hewlett-Packard Development Company, L.P. | System and method for configuring a solid-state storage device with error correction coding |
KR100694407B1 (ko) * | 2005-04-21 | 2007-03-12 | 주식회사 하이닉스반도체 | 불량 셀 교정 회로를 포함하는 불휘발성 강유전체 메모리장치 |
JP2007133986A (ja) * | 2005-11-11 | 2007-05-31 | Nec Electronics Corp | 半導体記憶装置 |
US7447948B2 (en) | 2005-11-21 | 2008-11-04 | Intel Corporation | ECC coding for high speed implementation |
US7844879B2 (en) | 2006-01-20 | 2010-11-30 | Marvell World Trade Ltd. | Method and system for error correction in flash memory |
CN101405810B (zh) * | 2006-01-20 | 2012-01-25 | 马维尔国际贸易有限公司 | 在闪存中用于纠错的方法和系统 |
EP1912121B1 (de) | 2006-09-13 | 2009-08-12 | STMicroelectronics S.r.l. | NAND-Flash-Speichervorrichtung mit ECC-geschütztem reserviertem Bereich für nicht-flüchtige Speicherung von Redundanzdaten |
US7539052B2 (en) | 2006-12-28 | 2009-05-26 | Micron Technology, Inc. | Non-volatile multilevel memory cell programming |
WO2008086237A2 (en) | 2007-01-05 | 2008-07-17 | California Institute Of Technology | Codes for limited magnitude asymmetric errors in flash memories |
US7646636B2 (en) * | 2007-02-16 | 2010-01-12 | Mosaid Technologies Incorporated | Non-volatile memory with dynamic multi-mode operation |
US20080256419A1 (en) | 2007-04-13 | 2008-10-16 | Microchip Technology Incorporated | Configurable Split Storage of Error Detecting and Correcting Codes |
US8161343B2 (en) | 2007-07-17 | 2012-04-17 | Intel Corporation | Nibble encoding for improved reliability of non-volatile memory |
JP2009070509A (ja) * | 2007-09-14 | 2009-04-02 | Oki Electric Ind Co Ltd | 半導体記憶装置 |
JP2009176393A (ja) * | 2007-12-27 | 2009-08-06 | Toshiba Corp | 不揮発性半導体記憶装置及びその自動テスト方法 |
-
2009
- 2009-06-10 US US12/482,400 patent/US8370702B2/en active Active
-
2010
- 2010-05-18 JP JP2010114819A patent/JP5229591B2/ja active Active
- 2010-05-26 DE DE102010021516.3A patent/DE102010021516B4/de active Active
- 2010-06-08 CN CN2010101984781A patent/CN101923902B/zh active Active
- 2010-06-09 KR KR1020100054300A patent/KR101188103B1/ko active IP Right Grant
-
2012
- 2012-12-12 US US13/712,880 patent/US8745463B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080137413A1 (en) * | 2006-12-06 | 2008-06-12 | Samsung Electronics Co., Ltd | Multi-level cell memory devices using trellis coded modulation and methods of storing data in and reading data from the memory devices |
EP2028661A1 (de) * | 2007-08-20 | 2009-02-25 | Marvell International Ltd. | Verfahren und System für Objekt-orientierte Datenspeicherung |
Also Published As
Publication number | Publication date |
---|---|
JP5229591B2 (ja) | 2013-07-03 |
US20100318877A1 (en) | 2010-12-16 |
KR20100132922A (ko) | 2010-12-20 |
US8370702B2 (en) | 2013-02-05 |
US20130191697A1 (en) | 2013-07-25 |
DE102010021516A1 (de) | 2010-12-16 |
JP2010287305A (ja) | 2010-12-24 |
CN101923902B (zh) | 2013-06-05 |
US8745463B2 (en) | 2014-06-03 |
KR101188103B1 (ko) | 2012-10-09 |
CN101923902A (zh) | 2010-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102010021516B4 (de) | Fehlerkorrekturcodes für erhöhte Speicherkapazität in Mehrpegelspeichereinrichtungen | |
DE112011100371B4 (de) | Verfahren, Vorrichtung und Computerprogrammprodukt zum Decodieren eines Codeworts | |
DE102017001420B4 (de) | Redundanz von fehlerkorrekturcodierten daten in einem speichersystem | |
DE112007003080B4 (de) | Verfahren und Vorrichtung für den ECC-Schutz von kleinen Datenstrukturen | |
DE102011075966B4 (de) | Verbesserter Mehrpegelspeicher | |
DE102017130591B4 (de) | Verfahren und Vorrichtung zur Fehlerkorrekturkodierung auf Basis einer Datenkomprimierung | |
DE112019000167B4 (de) | Anpassbare Lesewiederholungsreihenfolge basierend auf einem Decodierungserfolgstrend | |
DE102017117066A1 (de) | Nichtbinäre codierung für einen nichtflüchtigen speicher | |
DE102017103347B4 (de) | Verarbeitung von daten in speicherzellen eines speichers | |
DE102008003113A1 (de) | ECC-Steuereinheit, Speichersystem und Verfahren zur Korrektur eines Fehlers | |
DE102019124438A1 (de) | Multi-state-programmierung für speichervorrichtungen | |
DE102013222321A1 (de) | Elektronisches Gerät mit einer Vielzahl von Speicherzellen und mit physikalisch unklonbarer Funktion | |
DE112012006153T5 (de) | Rekonstruktion von Codewörtern unter Verwendung eines Seitenkanals | |
DE19963683A1 (de) | Architektur zum Decodieren von linearen Blockfehler-Korrekturcodes mit Soft Decision | |
DE112011101116T5 (de) | Two-Level BCH-Codes für Solid-State-Speichereinheiten | |
DE112014005810B4 (de) | anagement der Datenspeicherung in analogen Speicherzellen unter Verwendung einer nicht ganzzahligen Anzahl von Bits pro Zelle | |
DE112020003489T5 (de) | Speichersteuerung und verfahren zum decodieren von speichervorrichtungen mit vorzeitigem hartdecodierabbruch | |
DE102017110389A1 (de) | Verfahren und Decoder zur Softinput Decodierung von verallgemeinerten verketteten Codes | |
DE112011101852T5 (de) | Decodieren von LDPC-Code | |
DE102015113414A1 (de) | Fehlerkorrektur unter Verwendung von WOM-Codes | |
DE112020005502T5 (de) | Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke | |
DE102017212767A1 (de) | Verfahren und Vorrichtung zur Steigerung der Zuverlässigkeit eines nicht-flüchtigen Speichers | |
DE112020005176T5 (de) | Inhaltsbewusster bit-flipping-decodierer | |
DE102022209318A1 (de) | Verfahren und system zur lesereferenzspannungskalibrierung für nichtflüchtige speicher | |
DE102019119753A1 (de) | Generalisiertes verkettetes Fehlerkorrektur-Codierschema mit Lokalität |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R082 | Change of representative |
Representative=s name: MUELLER-BORE & PARTNER, PATENTANWAELTE, EUROPE, DE Representative=s name: LEINWEBER & ZIMMERMANN, DE Representative=s name: MUELLER-BORE & PARTNER, PATENTANWAELTE, EUROPEAN P Representative=s name: LEINWEBER & ZIMMERMANN, 80331 MUENCHEN, DE |
|
R082 | Change of representative |
Representative=s name: MUELLER-BORE & PARTNER, PATENTANWAELTE, EUROPE, DE Representative=s name: MUELLER-BORE & PARTNER, PATENTANWAELTE, EUROPEAN P |
|
R081 | Change of applicant/patentee |
Owner name: MICRON TECHNOLOGY, INC., BOISE, US Free format text: FORMER OWNER: NUMONYX B.V., ROLLE, CH Effective date: 20111128 Owner name: MICRON TECHNOLOGY, INC., US Free format text: FORMER OWNER: NUMONYX B.V., ROLLE, CH Effective date: 20111128 |
|
R082 | Change of representative |
Representative=s name: MUELLER-BORE & PARTNER PATENTANWAELTE PARTG MB, DE Effective date: 20111128 Representative=s name: MUELLER-BORE & PARTNER PATENTANWAELTE PARTG MB, DE Effective date: 20111205 Representative=s name: MUELLER-BORE & PARTNER PATENTANWAELTE, EUROPEA, DE Effective date: 20111205 Representative=s name: MUELLER-BORE & PARTNER PATENTANWAELTE, EUROPEA, DE Effective date: 20111128 |
|
R012 | Request for examination validly filed |
Effective date: 20120111 |
|
R016 | Response to examination communication | ||
R018 | Grant decision by examination section/examining division | ||
R020 | Patent grant now final | ||
R020 | Patent grant now final |
Effective date: 20141223 |