DE102010021516B4 - Fehlerkorrekturcodes für erhöhte Speicherkapazität in Mehrpegelspeichereinrichtungen - Google Patents

Fehlerkorrekturcodes für erhöhte Speicherkapazität in Mehrpegelspeichereinrichtungen Download PDF

Info

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
Application number
DE102010021516.3A
Other languages
English (en)
Other versions
DE102010021516A1 (de
Inventor
Paolo Amato
Giovanni Campardo
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Publication of DE102010021516A1 publication Critical patent/DE102010021516A1/de
Application granted granted Critical
Publication of DE102010021516B4 publication Critical patent/DE102010021516B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, 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/2933Coding, 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, 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/2933Coding, 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/2936Coding, 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/25Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM]
    • H03M13/256Error 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/41Sequence 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)
  • Read Only Memory (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

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.

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 zeigt ein Multi-Level-Cell(MLC)-Speichergerät umfassend eine MLC-Speicherzelle, einen äußeren Codierer, der Daten mit einem ersten Codierschema, um einen äußeren codierten Bitstrom zu erzeugen, codiert und einen TCM-Modulator, der einen Programm Impuls an die MLC-Speicherzelle sendet um die Daten auf die MLC-Speicherzelle zu schreiben. Der Programm Impuls kann durch TCM Modulation des äußeren codierten Bitstroms erzeugt werden.
  • Druckschrift US 2008/0 137 413 A1 zeigt ein Verfahren zum Speichern von Daten in einer MLC-Speichervorrichtung, Lesen von Daten von der MLC-Speichervorrichtung oder Speichern von Daten in und Lesen von Daten von der MLC-Speichervorrichtung umfassend: Codieren von Daten mit einem ersten Codierschema, um einen äußeren codierten Bitstrom zu erzeugen und Anwenden eines Programm Impuls auf eine MLC Speicherzelle der MLC-Speichervorrichtung um die Daten in die MLC-Speicherzelle zu schreiben. Der Programm Impuls kann durch TCM Modulation des äußeren codierten Bitstroms erzeugt werden.
  • 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-Einrichtung 100 gemäß einer Ausführungsform. Die NVM-Einrichtung 100 kann ein Programmiergerät 104 aufweisen, das Eingangsdaten von beispielsweise einer Hostvorrichtung empfängt, die Eingangsdaten codiert und die codierten Daten in eine Zellenmatrix 108 schreibt, mit der es verbunden ist. Die Zellenmatrix 108 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ät 112 aufweisen, das mit der Zellenmatrix 108 verbunden ist. Das Lesegerät 112 kann unter Verwendung eines oder mehrerer Leseverstärker zum Lesen von Spannungsniveaus, Vt, von verschiedenen Zellen auf die in der Zellenmatrix 108 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ätes 104 ist. Das Lesegerät 112 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-Einrichtung 100, 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-Einrichtung 100 erforderlich sind. Demgemäß stellen Ausführungsformen der vorliegenden Offenbarung Systeme, Verfahren und Vorrichtungen bereit zum Auswählen der Parameter, die die Speicherkapazität der Zellenmatrix 108 erhöhen, während die erwünschten Betriebskenndaten beibehalten werden.
  • 2 veranschaulicht ein Berechnungssystem 200, das zum Auswählen von Parametern der NVM-Einrichtung 100 gemäß einigen Ausführungsformen verwendet werden kann. Das Berechnungssystem 200 kann vier Berechnungsmodule aufweisen: ein Nicht-Paritätsberechnungsmodul 204, ein tatsächliches Bit-pro-Zelle (actual bit per cell, ABC) Berechnungsmodul 208, ein Paritätsberechnungsmodul 212 und ein nominales Bit-pro-Zelle (nominal bit per cell, B/C) Berechnungsmodul 216, 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-Einrichtung 100 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 von 2 gemäß einigen Ausführungsformen beschreiben. 4 stellt eine Tabelle 400 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 Berechnungsmodul 216 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ätsberechnungsmodul 204 in Block 304 eine Einrichtungsgröße der NVM-Einrichtung 100 empfangen. Die Einrichtungsgröße kann als eine Anzahl von Nicht-Paritätsinformationsbits gegeben sein, die die NVM-Einrichtung 100 speichern kann. In den Kombinationen von Tabelle 400 ist die Einrichtungsgröße gegeben als 32,678 Megabits (Mbit). In Block 308 kann das Nicht-Paritätsberechnungsmodul 204 die b/c von dem b/c Berechnungsmodul 216 empfangen. Wenn diese Eingaben gegeben sind, kann das Nicht-Paritätsberechnungsmodul 204 eine Anzahl von Nicht-Paritätszellen im Block 312 bestimmen. Mit Kombination A kann die Anzahl von Nicht-Paritätszellen 16,384 × 106 sein.
  • Nun mit Bezug zu 3c kann das Paritätsberechnungsmodul 212 folgendes empfangen: Die Einrichtungsgröße der NVM-Einrichtung 100 in Block 316; eine Anzahl von Aufteilungen der Zellen der NVM-Einrichtung 100 in Block 320; ein ECC-Schema zur Verwendung beim Programmieren/Lesen von Daten in/von der NVM-Einrichtung 100 in Block 324; und ein b/c von dem b/c Berechnungsmodul 216 in Block 328. Das Paritätsberechnungsmodul 212 kann diese Eingaben als Grundlage für die Bestimmung einer Anzahl von Paritätszellen in Block 332 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-Einrichtung 100. 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ätsberechnungsmodul 212 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-Berechnungsmodul 208 Folgendes empfangen: Die Größe der NVM-Einrichtung 100 in Block 336; die Anzahl von Nicht-Paritätszellen von dem Nicht-Paritätsberechnungsmodul 204 in Block 340; und die Anzahl von Paritätszellen von dem Paritätsberechnungsmodul 212 in Block 344. Das ABC-Berechnungsmodul 208 kann dann diese Eingaben als Grundlage für die Bestimmung eines ABC in Block 348 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-Einrichtung 100 in größerer Genauigkeit gemäß einer Ausführungsform, in der das ECC-Schema ein verkettetes Codierungsschema ist. Die NVM-Einrichtung 100 und das Programmiergerät 104 können insbesondere durch Verwendung von zwei Codiereinrichtungen einen verketteten Code bilden: Eine äußere Codiereinrichtung 504, die einen Nicht-Binärcode verwendet und eine innere Codiereinrichtung 508, die einen Binärcode verwendet. Das Programmiergerät 104 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 in 6a kurz beschrieben werden. In Block 604 kann das Programmiergerät 104 Eingangsdaten von einer digitalen Quelle 516, z. B. einer Hostvorrichtung empfangen. Die äußere Codiereinrichtung 504 kann in Block 608 eine äußere Codefolge erzeugen, die zumindest teilweise auf den Eingangsdaten basiert. In Block 612 kann die innere Codiereinrichtung eine innere Codefolge erzeugen, die zumindest teilweise auf der äußeren Codefolge basiert, die von der äußeren Codiereinrichtung 504 erzeugt wurde. In einigen Ausführungsformen, so wie in 5, kann eine Verschachtelungseinrichtung, z. B. die Verschachtelungseinrichtung 512, die äußere Codefolge verschachteln und die innere Codiereinrichtung 508 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 Zellenmatrix 108 in Block 616 geschrieben werden.
  • Das Lesegerät 112 kann eine innere Decodiereinrichtung 520, eine Entschachtelungseinrichtung 524 und eine äußere Decodiereinrichtung 528 aufweisen, die in einer komplementären Weise zu den Bestandteilen des Programmiergerätes 104 arbeiten. Die Arbeitsweise des Lesegerätes 112 gemäß einer Ausführungsform kann mit Bezug auf das Flussdiagramm der 6b kurz beschrieben werden.
  • In Block 624 kann das Lesegerät 112 die innere Codefolge, beispielsweise die codierten Daten oder verkettete Codefolge, von der Zellenmatrix 108 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 Block 628 kann die innere Decodiereinrichtung 520 des Lesegerätes 112 die innere Codefolge decodieren, um eine äußere Codefolge bereitzustellen. Diese kann der äußeren Decodiereinrichtung 528 zur Verfügung gestellt werden. In einigen Ausführungsformen kann die äußere Codefolge durch eine Entschachtelungseinrichtung 524 entschachtelt werden, bevor sie der äußeren Decodiereinrichtung 528 bereitgestellt wird. Die äußere Decodiereinrichtung 528 kann die äußere Codefolge decodieren, um Eingangsdaten in Block 632 zur Verfügung zu stellen. Die digitalen Daten können dann einer digitalen Senke 532, 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 Decodiereinrichtung 520 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 Decodiereinrichtung 528 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 zu 7 weiter erklärt werden.
  • 7 ist ein Graph 700, der Fehlerwahrscheinlichkeiten eines 512 Byte ECC-Blocks gemäß einigen Ausführungsformen zeigt. Insbesondere stellt der Graph 700 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 Zellenmatrix 108 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 Linie 708 stellt eine zweite SNR dar; und die horizontale gestrichelte Linie 712 ist eine Fehlerrate des ECC-Blockes, die zum Erlangen einer Ziel-DER von 10 ppm zu erreichen ist. Die Linien 716, 720, 724, 728, 732, 736 und 740 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 Linie 716) 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 Linie 704 bezieht. Diese SNR beschafft der äußeren Decodiereinrichtung 528 die Flexibilität, den 66 b Code zu verwenden (dargestellt durch Linie 724).
  • Linien 744 bzw. 748 zeigen, wie die BER sich pro SNR für ein uncodiertes Signal bzw. ein durch Faltung codiertes Signal ändert. Linie 744 stellt eine echte Kanalbedingung dar und Linie 748 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 der 4 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 System 200 in einigen Ausführungsformen eine Auswahleinrichtung 220 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 Hostvorrichtung 800, die die NVM-Einrichtung 100 gemäß einigen Ausführungsformen beherbergen kann. Die Hostvorrichtung 800 kann aufweisen: einen oder mehrere Prozessoren 804; an mindestens einen der Prozessoren gekoppelte Systemsteuerlogik 808; an die Systemsteuerlogik 808 gekoppelten Systemspeicher 812; die an die Systemsteuerlogik 808 gekoppelte NVM-Einrichtung 100; und eine oder mehrere an die Systemsteuerlogik 808 gekoppelte Kommunikationsschnittstellen 820.
  • 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 Hostvorrichtung 800, verwendet werden. Systemspeicher 812 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 Hostvorrichtung 800, verwendet werden. Die NVM-Einrichtung 100 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 Hostvorrichtung 800 und/oder der NVM-Einrichtung 100 führen. Die Anweisungen können in der NVM-Einrichtung 100 und/oder dem Systemspeicher 812 positioniert sein. In einigen Ausführungsformen können die Anweisungen 824 zusätzlich/alternativ in der Systemsteuerlogik 808 angeordnet sein.
  • In einigen Ausführungsformen kann die Hostvorrichtung 800 zur Implementierung der Module des Berechnungssystems 200 und nicht der Programmier-/Leseoperationen der NVM-Einrichtung 100 selbst verwendet werden. In diesen Ausführungsformen kann die NVM-Einrichtung 100 nicht in der Hostvorrichtung 800 enthalten sein.
  • Kommunikationsschnittstelle(n) 820 können eine Schnittstelle für die Hostvorrichtung 800 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 Systemsteuerlogik 808 gebündelt sein. Für eine Ausführungsform kann mindestens ein Prozessor der Prozessoren 804 zusammen mit Logik für einen oder mehrere Controller der Systemsteuerlogik 808 zur Bildung eines System-in-Package (SiP) gebündelt sein. Für eine Ausführungsform kann mindestens ein Prozessor der Prozessoren 804 mit Logik für einen oder mehrere Controller der Systemsteuerlogik 808 auf demselben Plättchen (die) integriert sein. Für eine Ausführungsform kann mindestens ein Prozessor der Prozessoren 804 mit Logik für einen oder mehrere Controller der Systemsteuerlogik 808 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 Hostvorrichtung 800 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)

  1. 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.
  2. 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.
  3. Verfahren nach Anspruch 2, wobei der Nicht-Binärcode ein Reed Solomon-Code und der Binärcode ein Trellis-Code-Modulationscode ist.
  4. 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.
  5. 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.
  6. Verfahren nach Anspruch 5, wobei jede Zelle acht oder mehr Aufteilungen aufweist.
  7. 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.
  8. Verfahren nach Anspruch 7, das ferner aufweist: Entschachteln der äußeren Codefolge vor dem Decodieren der äußeren Codefolge.
  9. 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.
  10. 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.
  11. 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.
  12. 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.
  13. 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.
  14. 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.
  15. 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.
  16. 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.
  17. 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.
  18. 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.
  19. 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.
  20. 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.
  21. Vorrichtung nach Anspruch 17, wobei die Vorrichtung eine integrierte Schaltung ist.
  22. Vorrichtung nach Anspruch 17, wobei die Vorrichtung eine nichtflüchtige Speichereinrichtung ist.
DE102010021516.3A 2009-06-10 2010-05-26 Fehlerkorrekturcodes für erhöhte Speicherkapazität in Mehrpegelspeichereinrichtungen Active DE102010021516B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/482,400 2009-06-10
US12/482,400 US8370702B2 (en) 2009-06-10 2009-06-10 Error correcting codes for increased storage capacity in multilevel memory devices

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 (14)

* Cited by examiner, † Cited by third party
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
CN103329103B (zh) * 2010-10-27 2017-04-05 希捷科技有限公司 使用用于基于闪存的数据存储的自适应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
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
CN101405811B (zh) * 2006-01-20 2012-01-04 马维尔国际贸易有限公司 具有编码和信号处理的闪存
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
US8296623B2 (en) * 2007-01-05 2012-10-23 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 不揮発性半導体記憶装置及びその自動テスト方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
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
CN101923902B (zh) 2013-06-05
KR20100132922A (ko) 2010-12-20
CN101923902A (zh) 2010-12-22
US20100318877A1 (en) 2010-12-16
US20130191697A1 (en) 2013-07-25
JP5229591B2 (ja) 2013-07-03
DE102010021516A1 (de) 2010-12-16
JP2010287305A (ja) 2010-12-24
US8370702B2 (en) 2013-02-05
US8745463B2 (en) 2014-06-03
KR101188103B1 (ko) 2012-10-09

Similar Documents

Publication Publication Date Title
DE102010021516B4 (de) Fehlerkorrekturcodes für erhöhte Speicherkapazität in Mehrpegelspeichereinrichtungen
DE102019124438B4 (de) Multi-state-programmierung für speichervorrichtungen
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
DE112011101116B4 (de) Two-Level BCH-Codes für Solid-State-Speichereinheiten
DE102017117066A1 (de) Nichtbinäre codierung für einen nichtflüchtigen speicher
DE102017103347B4 (de) Verarbeitung von daten in speicherzellen eines speichers
DE102017130591B4 (de) Verfahren und Vorrichtung zur Fehlerkorrekturkodierung auf Basis einer Datenkomprimierung
DE102008003113A1 (de) ECC-Steuereinheit, Speichersystem und Verfahren zur Korrektur eines Fehlers
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
DE112011101852B4 (de) Decodieren von LDPC-Code
DE112014005810B4 (de) anagement der Datenspeicherung in analogen Speicherzellen unter Verwendung einer nicht ganzzahligen Anzahl von Bits pro Zelle
DE112019000167T5 (de) Anpassbare Lesewiederholungsreihenfolge basierend auf einem Decodierungserfolgstrend
DE112020003489T5 (de) Speichersteuerung und verfahren zum decodieren von speichervorrichtungen mit vorzeitigem hartdecodierabbruch
DE102017110389A1 (de) Verfahren und Decoder zur Softinput Decodierung von verallgemeinerten verketteten Codes
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
DE112019000108T5 (de) Kodier-raten-umschaltmechanismus für flash-speicher
DE102013016694B4 (de) Codieren und Decodieren redundanter Bits zum Vornehmen von Anpassungen für Speicherzellen mit Haftfehlern
DE102019119753A9 (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