DE102017107431A1 - Verfahren und Vorrichtungen zur Fehlerkorrekturcodierung beruhend auf hochratigen verallgemeinerten verketteten Codes - Google Patents

Verfahren und Vorrichtungen zur Fehlerkorrekturcodierung beruhend auf hochratigen verallgemeinerten verketteten Codes Download PDF

Info

Publication number
DE102017107431A1
DE102017107431A1 DE102017107431.7A DE102017107431A DE102017107431A1 DE 102017107431 A1 DE102017107431 A1 DE 102017107431A1 DE 102017107431 A DE102017107431 A DE 102017107431A DE 102017107431 A1 DE102017107431 A1 DE 102017107431A1
Authority
DE
Germany
Prior art keywords
matrix
codes
dimension
code
decoding
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE102017107431.7A
Other languages
English (en)
Other versions
DE102017107431B4 (de
Inventor
Jürgen Freudenberger
Jens Spinner
Christoph Baumhof
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.)
Hyperstone GmbH
Original Assignee
Hyperstone GmbH
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 Hyperstone GmbH filed Critical Hyperstone GmbH
Priority to US15/593,973 priority Critical patent/US10320421B2/en
Publication of DE102017107431A1 publication Critical patent/DE102017107431A1/de
Priority to US16/395,046 priority patent/US10790855B2/en
Application granted granted Critical
Publication of DE102017107431B4 publication Critical patent/DE102017107431B4/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/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/253Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM] with concatenated 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/2906Coding, 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 block 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/1505Golay 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/2906Coding, 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 block codes
    • H03M13/2927Decoding strategies
    • H03M13/293Decoding strategies with erasure setting
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/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/1515Reed-Solomon 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

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Error Detection And Correction (AREA)

Abstract

Die Erfindung betrifft das Gebet der Fehlerkorrekturcodierung, insbesondere für Anwendungen im Bereich der nichtflüchtigen Flashspeicher. Genauer betrifft die Erfindung ein Verfahren zur Fehlerkorrektur Codierung von Daten, die in einer Speichervorrichtung zu speichern sind, ein korrespondierendes Verfahren zum Decodieren einer Codewort-Matrix, welche sich aus dem Codierungsverfahren ergibt, eine Codierungsvorrichtung, die eingerichtet ist, eine oder mehrere dieser Verfahren auszuführen, sowie ein korrespondierendes Computerprogram zur Ausführung dieser Verfahren auf der Codierungsvorrichtung. Die Erfindung beruht auf einer vorgeschlagenen neuen Konstruktion für hochratige Verallgemeinerte Verkettete (GC) Codes. Die vorgeschlagenen Codes sind sehr geeignet zur Fehlerkorrektur bei Flashspeichern zur hochzuverlässigen Datenspeicherung. Die GC-Codes sind aus inneren verschachtelten binären Bose-Chaudhuri-Hocquenghem(BCH)-Codes und äußeren Codes, bevorzugt Reed-Solomon(RS)-Codes, konstruiert. Für die inneren Codes werden erweiterte BCH-Codes verwendet, bei denen auf der ersten Ebene des GC-Codes nur einfache Paritätsprüfungscodes verwendet werden. Dadurch werden hochratige GC-Codes ermöglicht.

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft das Gebet der Fehlerkorrekturcodierung, insbesondere für Anwendungen im Bereich der nichtflüchtigen Flashspeicher. Genauer betrifft die Erfindung ein Verfahren zur Fehlerkorrektur Codierung von Daten, die in einer Speichervorrichtung zu speichern sind, ein korrespondierendes Verfahren zum Decodieren einer Codewort-Matrix, welche sich aus dem Codierungsverfahren ergibt, eine Codierungsvorrichtung, die eingerichtet ist, eine oder mehrere dieser Verfahren auszuführen, sowie ein korrespondierendes Computerprogram zur Ausführung dieser Verfahren auf der Codierungsvorrichtung.
  • HINTERGRUND
  • Auf Verallgemeinerten Verketteten Codes (engl. Generalized Concatenated Codes, GC-Codes) beruhende Fehlerkorrekturcodierung (engl. Error Correction Coding, ECC) weist ein hohes Potenzial für verschiedenste Anwendungen im Bereich der Datenkommunikation und Datenspeichersysteme auf, beispielsweise für digitale magnetische Speichersysteme, wie in [1] beschrieben (siehe unten angegebene Liste von Literaturquellen [...]), für nicht-flüchtige Flashspeicher (vgl. [2]), sowie für zweidimensionale Strichcodes (vgl. [3]). Insbesondere können GC-Codes zur Fehlerkorrekturbei Flashspeichern verwendet werden, wie in [2] und [4] vorgeschlagen.
  • Derartige GCC-Codes können insbesondere aus inneren verschachtelten binären Bose-Chaudhuri-Hocquenghem(BCH)-Codes und äußeren Reed-Solomon(RS)-Codes konstruiert werden, wie beispielsweise allgemein in [5], [6], und [7] beschrieben, und sie sind gut geeignet für schnelle hardwarebasierte Decoderarchitekturen (vgl. [4]). In der Theorie der Codierungen, bilden die BCH-Codes eine Klasse von linearen, zyklischen Fehlerkorrekturcodes, die unter Verwendung von finiten Feldern (Galois-Feldern, GF) konstruiert werden, während die Reed-Solomon-Codes zur Klasse der nicht binären, zyklischen Fehlerkorrekturcodes gehören und auf univarianten Polynomen über finiten Feldern (GF) beruhen.
  • Flashspeicher, insbesondere NAND-Flashspeicher, stellen wichtige Komponenten von eingebetteten Systemen sowie in der Consumer-Elektronik dar. Flashspeicher benötigen ECC, um Datenintegrität und Zuverlässigkeit für die Nutzdaten sicherzustellen (vergleiche. [8]). Bei vielen Flashtechnologien, kann man als statistisches Fehlermodell einen Binären Symmetrischen Kanal (engl. Binary Symmetric Channel, BSC) annehmen. Daher werden typischerweise BCH-Codes zur Fehlerkorrektur verwendet, wie beispielsweise in [9], [10], [11], [12] und [13] beschrieben. GC-Codes weisen eine geringere Decodierungskomplexität auf als lange BCH-Codes. Flashspeicher reservieren typischerweise einen Extra-Speicherbereich, der dazu verwendet wird, die für die ECC benötigten Redundanzen zu speichern. Dieser Extra-Speicherbereich bestimmt die Coderate für den Fehlerkorrekturcode.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Es ist eine Aufgabe der vorliegenden Erfindung, Verfahren und Vorrichtungen zur weiteren Verbesserung der Fehlerkorrekturcodierung, insbesondere zur Verbesserung von Coderaten, bereitzustellen. Speziell ist es wünschenswert, dass solche Verfahren und Vorrichtungen zur verbesserten ECC Codierung/Decodierung von Daten im Zusammenhang mit dem Speichern/Lesen dieser Daten in/aus einem Speicher, wie etwa einem nichtflüchtigen Speicher, geeignet sind.
  • Eine Lösung für dieses Problem wird durch die Lehre der unabhängigen Ansprüche erreicht. Verschiedene bevorzugte Ausführungsformen der vorliegenden Erfindung sind Gegenstand der abhängigen Ansprüche.
  • Ein erster Aspekt der Erfindung betrifft ein Verfahren zur Fehlerkorrekturcodierung von in eine Speichervorrichtung zu speichernden Daten, wobei das Verfahren durch eine Codierungsvorrichtung ausgeführt wird und dabei auf die Daten eine Fehlerkorrekturcodierung zur Erzeugung von codierten Daten angewandt wird, die auf Verallgemeinerten Verketteten Codes, GCC, beruht. Dabei (i) ist der GCC aus L inneren verschachtelten binären erweiterten Bose-Chaudhuri-Hocquenghem, BCH, -Codes und L äußeren Codes, vorzugsweise Reed-Solomon-Codes (RS-Codes) konstruiert, wobei L ≥ 2 eine positive ganze Zahl ist, (ii) der erweiterte BCH-Code auf der niedrigsten Verschachtelungsebene der inneren verschachtelten BCH-Codes ein Einfachparitätsprüfungs-, SPC, -Code ist, und (iii) der erweiterte BCH-Code wenigstens einer höheren Verschachtelungsebene der inneren verschachtelten BCH-Codes eine Fehlerkorrekturfähigkeit aufweist (im Gegensatz zu dem SPC-Code, der nur bestimmte Fehler erkennen kann) und ein Subcode des BCH-Codes der niedrigsten Verschachtelungsebene ist.
  • Der Begriff „erweiterter BCH-Code”, wie hier verwendet, bezieht sich auf einen Code, dessen Codeworte im Allgemeinen sowohl ein BCH-Codewort als auch ein zusätzliches einfaches Paritätsprüfungs-(SPC)-Symbol (d. h. ein Paritätsbit, falls das SPC-Symbol nur ein einziges Bit ist) aufweisen. Allerdings, ist bereits ein bloßer SPC-Code (ohne weitere BCH-Paritätssymbole) ein erweiterter BCH-Code und stellt sogar seine einfachste Form dar. Während ein BCH-Code (der nicht bloß ein SPC-Code ist) die Korrektur einer bestimmten Anzahl von Fehlern in einem Codeword beim Decodieren ermöglicht, erlaubt ein SPC-Code nur das Erkennen bestimmter Fehler, speziell dann, wenn in dem Codewort eine ungerade Anzahl von Fehlern vorliegt.
  • Der Begriff „Subcode” eines bestimmten (Mutter-)-BCH-Codes, wie hier verwendet, bezieht sich auf einen Code, der aus einer echten Untermenge der Codeworte des (Mutter-)BCH-Codes besteht. So ist ein BCH-Code B(n) eine Untermenge eines anderen BCH-Codes B(m), falls die Menge der Code Worte von B(n) eine echte Untermenge der Menge von Codeworten von B(m) ist. Speziell kann der Subcode der BCH-Code einer bestimmten Verschachtelungsebene der verschachtelten Struktur der inneren verschachtelten BCH-Codes sein, wobei dieser Subcode eine Untermenge eines BCH-Codes einer unteren Ebene der verschachtelten Struktur ist. Demgemäß ist in der verschachtelten Struktur B(L-1) ⊆ Ba(L-2) ⊆ ... ⊆ B(0) der BCH-Code B(L-q) mit L > q > 0 und der Ganzzahl q ein a Subcode zumindest des BCH-Codes B(0) der niedrigsten Verschachtelungsebene 0 und, falls q < L – 1, auch von jedem höheren verschachtelten BCH-Code, der zwischen B(0) und B(L-q) in der verschachtelten Struktur definiert ist. Eine Verschachtelung der BCH-Codes mit verschiedenen Ebenen ist insbesondere in [2] und [4] beschrieben.
  • Vorzugsweise sind die äußeren Codes Blockcodes und besonders bevorzugt RS-Codes.
  • Während die Codekonstruktionen, die in den Fundstellen [2] und [4] beschrieben sind, welche beide hiermit in ihrer Gesamtheit durch Verweis aufgenommen sind, auf Codes beschränkt sind, die eine Gesamtcoderate, aufweisen, die kleiner oder gleich 0,9 ist, was bei Flashspeicher an, die nur einen kleinen Extra-Speicherbereich zum Speichern der für die ECC benötigten Redundanz zu Verfügung stellen, nicht anwendbar ist, ermöglicht das Codierverfahren gemäß dem ersten Aspekt der vorliegenden Erfindung hochratige GC-Codes mit Coderaten oberhalb von 0,9. Dementsprechend können solche hochratigen GC-Codes dazu verwendet werden, Daten zu codieren, welche in Speichern, beispielsweise Flashspeichern, die nur einen kleinen Extra-Speicherbereich zur Verfügung stellen, zu speichern sind. Obwohl in der niedrigsten Verschachtelungsebene nur SPC statt höherer BCH-Codes verwendet wird, können vergleichbare ECC-Fehlerkorrekturniveaus erreicht werden und somit die Effizienz (Coderate) des Codes erhöht werden. In anderen Worten, die Effizienz derartiger Speicher im Hinblick auf ihre Speicherkapazität für Nutzdaten kann aufgrund der erhöhten Coderate verbessert werden.
  • Nachfolgend werden bevorzugte Ausführungsformen des Codierverfahrens gemäß dem ersten Aspekt beschrieben, die beliebig miteinander oder mit den weiteren Aspekten der Erfindung kombiniert werden können, soweit eine solche Kombination nicht ausdrücklich ausgeschlossen oder technisch unmöglich ist.
  • Gemäß einer ersten bevorzugten Ausführungsform weist das Anwenden der Fehlerkorrekturcodierung auf:
    • (i) Anordnen der zu codierenden Daten in einer zweidimensionalen Datenmatrix mit einer ersten Dimension na, die der Länge der äußeren RS-Codes entspricht, und einer zweiten Dimension nb, die der Länge der inneren erweiterten BCH-Codes entspricht, wobei eine Linie der ersten Dimension einer Matrix eine Zeile der Matrix und eine Linie ihrer zweiten Dimension eine Spalte der Matrix ist, oder andersherum, und die äußeren RS-Codes über ein Galois-Feld GF(2m1) definiert sind, sodass m1 Elemente jeder Linie der zweiten Dimension ein Symbol des Galois-Feld GF(2m1) darstellen;
    • (ii) Anwenden der L äußeren RS-Codes auf die entsprechenden L·m1 Linien der ersten Dimension der Datenmatrix, sodass jeder der L äußeren RS-Codes ein Codewort aus den entsprechenden m1 Linien der zweiten Dimension liefert und insgesamt L·m1 Linien der sich ergebenden Zwischenmatrix durch die äußeren RS-Codes geschützt sind, wobei m1 eine positive Ganzzahl ist, mit vorzugsweise m1 > 1; und
    • (iii) nachfolgend Anwenden der inneren verschachtelten erweiterten BCH-Codes auf die Linien der zweiten Dimension der Zwischenmatrix, um eine Codewortmatrix zu erhalten, welche die codierten Daten enthält, sodass nb – L·m1 Linien der ersten Dimension der Codewortmatrix für die Codierungsredundanz der inneren verschachtelten erweiterten BCH-Codes verwendet werden, und jede Linie der zweiten Dimension der Codewortmatrix gleich der Summe der L Codeworte der einzelnen verschachtelten erweiterten BCH-Codes für diese Linie ist.
  • Diese Ausführungsform ermöglicht eine besonders effiziente und klar strukturierte Implementierung des Verfahrens gemäß dem ersten Aspekt der vorliegenden Erfindung.
  • Gemäß einer verwandten weiteren bevorzugten Ausführungsform, ist das Codewort bj der j-ten Linie der zweiten Dimension der Codewortmatrix durch die folgende Formel bestimmt:
    Figure DE102017107431A1_0002
    wobei die Codeworte in bj (i) gebildet werden, indem die Symbole aj,i mit den erweiterten BCH-Codes B(i) der i-ten Verschachtelungsebene codiert werden, wobei aj,i das j-te Symbol aus m1 Bits des i-ten äußeren RS-Codes A(i) entlang der ersten Richtung der Zwischenmatrix ist und für diese Codierung (L – i – 1)·m1 Nullbits vor oder nach dem Symbol aj,i an dieses angehängt werden. Diese Ausführungsform ermöglicht insbesondere eine einfache, effiziente und klar strukturierte Implementierung des Verfahrens, weil aufgrund der Hinzufügung der Nullbits eine konstante Länge der Codeworte sowohl der äußeren RS-Codes als auch der darauf aufbauenden erweiterten BCH-Codes erreicht wird.
  • Gemäß einer weiteren bevorzugten Ausführungsform ist die Coderate des entlang der Richtung der zweiten Dimension der Zwischenmatrix definierten ersten RS-Codeworts (welches in der obigen Summe zu i = 0 korrespondiert), geringer als die Coderate des entlang dieser Richtung definierten L-ten RS-Codeworts (das zu i = L – 1 in der obigen Summe korrespondiert). Dies kann dementsprechend verwendet werden, um die Gesamtcoderate des Codes weiter zu erhöhen, ohne sein Sicherheitsniveau zu beeinträchtigen. Eine solche Reduktion der Coderaten der RS-Codeworte entlang der Richtung der zweiten Dimension der Matrix ist möglich, weil auf der Decodierungsseite die Struktur des Gesamt-GCC-Codes, wie sie sich aus der Decodierung ergibt, eine Wiederverwendung der Decodierungsergebnisse einer gegebenen Ebene i zum Decodieren der nächsten Ebene i + 1 erlaubt.
  • Gemäß einer weiteren bevorzugten Ausführungsform sind die inneren erweiterten BCH-Codes über ein Galois-Feld GF (2m2) definiert und m1 ist von m2 verschieden, wobei m2 eine positive ganze Zahl ist. In einer ersten bevorzugten Variante davon gilt m1 = 8 und m2 = 6. In einer zweiten bevorzugten Variante gilt m1 = 9 und m2 = 7. speziell in dieser zweiten Variante ist die Anzahl der Verschachtelungsebenen für die inneren erweiterten BCH-Codes vorzugsweise 13, sodass na = 152 und nb = 118. Des Weiteren können für jede der genannten Verschachtelungsebenen j die korrespondierende Codedimension des inneren erweiterten BCH-Codes kb,j und ihre minimale Hammingdistanz db,j sowie die korrespondierende Codedimension ka,j des äußeren RS-Codes und seine minimale Hammingdistanz da,j diejenigen aus derfolgenden Tabelle sein:
    j kb,j db,j ka,j da,j
    0 117 2 84 69
    1 108 4 130 23
    2 99 6 136 17
    3 90 8 142 11
    4–12 81 12 148 5
  • Der GC-Code gemäß dieser Ausführungsform ist besonders zur Fehlerkorrektur bei der Datenspeicherung in Flashspeichern geeignet. Speziell ist dieser GC-Code für 2 KB-Informationsblöcke angepasst, d. h. für einen Code, der verwendet werden kann, um 2 KB Daten und zusätzlich 4 Bytes Metainformationen zu speichern. Dies betrifft insbesondere die genannte zweite Variante, einschließlich dann, wenn sie gemäß der vorgenannten Tabelle implementiert wird.
  • Gemäß einer weiteren bevorzugten Ausführungsform wird in dem Schritt zur Anwendung der inneren verschachtelten erweiterten BCH-Codes auf die Linien der zweiten Dimension der Zwischenmatrix zumindest in einer der Verschachtelungsebenen, bevorzugt in der niedrigsten Verschachtelungsebene, das einzelne Paritätsbit des entsprechenden erweiterten BCH-Codes dieser Verschachtelungsebene aus einer vordefinierten echten Untermenge der Bits der entsprechenden Linie der zweiten Dimension berechnet. Dies kann insbesondere zu einer gesteigerten Performanz der Codierung führen, weil weniger Bits in die Berechnung der Paritätssymbole bzw. Paritätsbits des zu dem bzw. den entsprechenden erweiterten BCH-Codes) gehörenden SPC involviert werden müssen.
  • Gemäß einer weiteren bevorzugten Ausführungsform weist das Verfahren des Weiteren ein Übermitteln der erhaltenen codierten Daten in ein oder mehrere Speichervorrichtungen zum Speichern der Daten darin auf. Speziell dann, wenn – wie in den vorausgehend erläuterten bevorzugten Ausführungsformen beschrieben – die zu codierenden Daten in einer zweidimensionalen Datenmatrix angeordnet sind und somit die sich ergebenden codierten Daten in einer korrespondierenden zweidimensionalen Codewortmatrix angeordnet sind, enthalten die zu speichernden erhaltenen codierten Daten diese Codewortmatrix, jedenfalls zum Teil.
  • Ein zweiter Aspekt der vorliegenden Erfindung betrifft ein Verfahren zum iterativen Fehlerkorrektur decodieren einer auf verallgemeinerten verketteten Codes, GCC, beruhenden Codewortmatrix wobei: der GCC aus L inneren verschachtelten binären erweiterten Bose-Chaudhuri-Hocquenghem, BCH, -Codes und L äußeren Codes, vorzugsweise Reed-Solomon Codes (RS-Codes) konstruiert ist, wobei L ≥ 2 eine positive ganze Zahl ist; der erweiterte BCH-Code auf der niedrigsten Verschachtelungsebene der inneren verschachtelten BCH-Codes nur ein Einfachparitätsprüfungs-, SPC, -Code ist; und der erweiterte BCH-Code wenigstens einer höheren Verschachtelungsebene der inneren verschachtelten BCH-Codes eine Fehlerkorrekturfähigkeit aufweist und ein Subcode des BCH-Codes der niedrigsten Verschachtelungsebene ist.
  • Das Decodierungsverfahren weist auf:
    • (i) eine erste Iteration, die zu der niedrigsten Verschachtelungsebene der inneren erweiterten BCH-Codes der Codewortmatrix korrespondiert und die folgenden Schritte aufweist:
    • – Anwenden einer SPC-Decodierung auf die Linien der zweiten Dimension der Codewortmatrix bezüglich der niedrigsten Verschachtelungsebene der inneren verschachtelten erweiterten BCH-Codes, in denen die Linien einer zweiten Dimension der Codewortmatrix codiert sind, um eine vorläufige Decodierdatenmatrix der ersten Iteration zu erhalten und Löschinformationen festzustellen, welche die Linien der zweiten Dimension der Codewortmatrix charakterisieren, in denen beruhend auf der SPC-Decodierung eine Löschung detektiert wurde;
    • – Entnehmen der Informationsbits, die in den Linien der zweiten Dimension der vorläufigen Decodierdatenmatrix der ersten Iteration enthalten sind, um Codesymbole der äußeren RS-Codes wiederzugewinnen, in denen die Linien einer ersten Dimension der Codewortmatrix codiert sind;
    • – Anwenden einer RS-Decodierung, die zu den entsprechenden RS-Codes korrespondiert, welche zur Erzeugung der ursprünglichen Codewortmatrix während des Codierens verwendet wurden, auf die wiedergewonnenen RS-Symbole in den Linien der ersten Dimension der vorläufigen Decodierdatenmatrix der ersten Iteration, um eine Teildecodierungsergebnismatrix der ersten Iteration zu erhalten, wobei die Löschinformationen während der RS-Decodierung verwendet werden, um fehlerhafte RS-Symbole in der vorläufigen Decodierdatenmatrix der ersten Iteration zu identifizieren;
    • – Zurückcodieren der Teildecodierungsergebnismatrix der ersten Iteration durch Anwendung einer SPC-Codierung auf die zweite Dimension dieser Matrix, um eine zurückcodierte Matrix der ersten Iteration zu erhalten; und
    • – Subtrahieren der zurückcodierten Matrix der ersten Iteration von der Codewortmatrix, um eine Startmatrix für eine nachfolgende weitere Iteration zu erhalten; und
    • (ii) für jede der weiteren Verschachtelungsebenen der inneren erweiterten BCH-Codes der Codewortmatrix, eine entsprechende weitere Iteration mit den folgenden Schritten:
    • – Anwenden der erweiterten BCH-Decodierung auf die Linien der zweiten Dimension der Staat Matrix der aktuellen Iteration bezüglich der aktuellen Verschachtelungsebene der inneren verschachtelten erweiterten BCH-Codes, in denen die Linien einer zweiten Dimension der Startmatrix der aktuellen Iteration codiert sind, um eine vorläufige Decodierdatenmatrix der aktuellen Iteration zu erhalten;
    • – Entnehmen der Informationsbits, die in den Linien der zweiten Dimension der vorläufigen Decodierdatenmatrix der aktuellen Iteration enthalten sind, um Codesymbole der äußeren RS-Codes wiederzugewinnen, in denen die Linien einer ersten Dimension der Codewortmatrix codiert sind;
    • – Anwenden einer RS-Decodierung, die zu den entsprechenden RS-Codes korrespondiert, welche zur Erzeugung der ursprünglichen Codewortmatrix während des Codierens verwendet wurden, auf die wiedergewonnenen Code Symbole in den Linien der ersten Dimension der vorläufigen Decodierdatenmatrix der aktuellen Iteration, um eine Teildecodierungsergebnismatrix der aktuellen Iteration zu erhalten;
    • – falls die aktuelle Iteration zu der höchsten Verschachtelungsebene der inneren verschachtelten erweiterten BCH-Codes in der Codewortmatrix korrespondiert, ausgeben der Teildecodierungsergebnismatrix der aktuellen Iteration als eine sich aus der Decodierung ergebende Datenmatrix, und
    • – andernfalls, Zurückcodieren der Teildecodierungsergebnismatrix der aktuellen Iteration durch Anwendung einer erweiterten BCH Codierung, die zu der aktuellen Verschachtelungsebene korrespondiert, auf die zweite Dimension dieser Matrix, um eine zurückcodierte Matrix der aktuellen Iteration zu erhalten; und Subtrahieren der zurückcodierten Matrix der aktuellen Iteration von der Startmatrix der aktuellen Iteration, um eine Startmatrix für eine nachfolgende weitere Iteration zu erhalten.
  • Auf diese Weise ermöglicht dieses Verfahren das Decodieren von ECC-codierten Daten, die in einer Codewortmatrix angeordnet sind, welche durch Anwendung der matrixbasierten bevorzugten Ausführungsformen der hierin beschriebenen Codierverfahren erhältlich ist. Dieses Verfahren ermöglicht erhöhte Code raten, insbesondere sogar Coderaten oberhalb von 0,9. Dies wird erreichbar, weil aufgrund des Zusammenspiels der SPC-Decodierung und der BCH-Codierung in der ersten Iteration, wobei die Löschinformation während der RS-Decodierung verwendet wird, um fehlerhafte RS-Symbole in der vorläufigen Decodierdatenmatrix der ersten Iteration zu identifizieren, die Verringerung der Paritätssymbole, die sich nun nur auf eine SPC-Codierung anstelle einer BCH-Codierung für die niedrigste Verschachtelungsebene beziehen, zusätzlichen Platz für Daten innerhalb des Codes schafft, ohne dabei die Gesamtlänge des GCC-Codes zu vergrößern oder dessen Sicherheitsniveau, insbesondere dessen Fehlerkorrekturfähigkeit, zu beeinträchtigen. Darüber hinaus werden sogar Performanzverbesserungen ermöglicht, weil die Verarbeitung der SPC-basierten ersten Iteration eine geringere Komplexität aufweist, als die weiteren BCH-basierten Iterationen.
  • Gemäß einer bevorzugten Ausführungsform dieses Decodierverfahrens gilt für zumindest eine der weiteren Iterationen: (i) der Schritt zum Anwenden der erweiterten BCH-Decodierung weist des Weiteren ein Feststellen von Löschinformationen auf, die Linien der zweiten Dimension der Startmatrix der aktuellen Iteration charakterisieren, in denen basierend auf der SPC-Decodierung eines in dem erweiterten BCH-Code der aktuellen Iteration enthaltenen SPC-Paritätsbits eine Löschung detektiert wurde; und (ii) in dem Schritt zur Anwendung der RS-Decodierung diese Löschinformationen der aktuellen Iteration während der RS-Decodierung verwendet werden, um fehlerhafte RS-Symbole in der vorläufigen Decodierdatenmatrix der aktuellen Interaktion zu identifizieren. Auf diese Weise kann das Konzept des Zusammenspiels zwischen der SPC-Decodierung und der BCH-Decodierung noch zusätzlich erweitert werden. Insbesondere kann dies zu weiteren Verbesserungen der Performanz und/oder der Coderate führen, indem die Verwendung von erweiterten BCH-Codes einer höheren Codedimension k, d. h. mit einem geringeren Redundanz-Overhead, ermöglicht wird.
  • Ein dritter Aspekt der vorliegenden Erfindung betrifft eine Codierungsvorrichtung, insbesondere eine Halbleitervorrichtung mit einem Speichercontroller. Die Codierungsvorrichtung ist eingerichtet, das Codierungsverfahren gemäß dem ersten Aspekt und/oder das Decodierungsverfahren gemäß dem zweiten Aspekt auszuführen, jeweils vorzugsweise gemäß einer oder mehrerer der hierin jeweils beschriebenen bevorzugten Ausführungsformen.
  • Gemäß einer bevorzugten Ausführungsform davon weist die Codierungsvorrichtung ein oder mehrere Prozessoren, einen Speicher sowie ein oder mehrere in dem Speicher abgelegte Programme auf, die bei ihrer Ausführung auf dem einen bzw. den mehreren Prozessoren die Codierungsvorrichtung veranlassen, das genannte Codierungsverfahren und/oder das genannte Decodierungsverfahren auszuführen.
  • Ein vierter Aspekt der vorliegenden Erfindung betrifft ein Computerprogramm, welches Anweisungen enthält, die eine Codierungsvorrichtung, bevorzugt die Codierungsvorrichtung gemäß dem dritten Aspekt, veranlassen, dass Codierungsverfahren gemäß dem ersten Aspekt und/oder das Decodierungsverfahren gemäß dem zweiten Aspekt auszuführen wobei die Codierungsvorrichtung sowie jedes der genannten Verfahren vorzugsweise gemäß einer oder mehrerer ihrer zugehörigen hierin beschriebenen bevorzugten Ausführungsformen ausgebildet sind.
  • Das Computerprogramm kann insbesondere in Form eines Datenträgers implementiert sein, auf dem ein oder mehrere Programme zur Ausführung des bzw. der Verfahren gespeichert sind. Vorzugsweise handelt es sich dabei um einen Datenträger in der Art einer CD, einer DVD oder eines Flashspeichermoduls. Dies kann vorteilhaft sein, wenn das Programm dafür vorgesehen ist, als individuelles Produkt unabhängig von der Prozessorplattform gehandelt zu werden, auf der das eine bzw. die mehreren Programme auszuführen sind. In einer anderen Implementierung, wird das Computerprogramm als eine Datei auf einer Datenverarbeitungseinheit, vorzugsweise auf einem Server, bereitgestellt und kann über eine Datenverbindung, beispielsweise über das Internet oder eine dedizierte Datenverbindung, etwa über ein proprietäres oder lokales Netzwerk, heruntergeladen werden.
  • Dementsprechend treffen die hier beschriebenen Eigenschaften und Vorteile der Verfahren gemäß dem ersten und/oder den zweiten Aspekt der Erfindung mutatis mutandis auch auf die Codierungsvorrichtung gemäß dem dritten Aspekt sowie das Computerprogramm gemäß dem vierten Aspekt zu.
  • Die vorliegende Erfindung ermöglicht insbesondere hochratige Codes. Darüber hinaus ermöglicht es die Verwendung von erweiterten BCH-Codes, Decodierfehler bei den inneren Codes festzustellen. Diese Fehler können unter Verwendung der Tatsache ausgenutzt werden, dass die algebraischen Decodierverfahren für die relevanten äußeren Codes, insbesondere für RS-Codes, sowohl Fehler als auch Löschungen korrigieren können. Wenn die äußere RS-Decodierung konfiguriert ist bis zu t Fehler zu korrigieren, kann sie bis zu 2 t Löschungen korrigieren. Des Weiteren sind diese GC-Codes grundsätzlich in der Lage, Burstfehler zu korrigieren. Die vorgeschlagenen GC-Codes sind gut zur Fehlerkorrektur bei Flashspeichern für hoch zuverlässige Datenspeicherung geeignet, weil sehr geringe Restfehlerwahrscheinlichkeiten erreicht werden können. Die GC-Codes weisen eine Performanz ähnlich der von reinen BCH-Codes auf, sie können jedoch schneller und mit einer geringeren Decoder Komplexität die codiert werden (vgl. [4]). Des Weiteren können die GC-Codes Zuverlässigkeitsinformationen bezüglich des Kanals verwerten [17].
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Weitere Vorteile, Merkmale und Anwendungsmöglichkeiten der vorliegenden Erfindung ergeben sich aus der nachfolgenden detaillierten Beschreibung im Zusammenhang mit den angehängten Figuren, wobei:
  • 1 gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung schematisch eine Codierungsvorrichtung in Form eines Speichercontrollers innerhalb eines Speichersystems illustriert;
  • 2 gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung schematisch ein Codierungsschema für die Transformation einer Datenmatrix, welche zu codierende Informationen enthält, in eine korrespondierende Codewortmatrix illustriert;
  • 3 gemäß einer bevorzugten Ausführungsform der Erfindung schematisch eine vereinfachte Version des Codierungsschemas aus 2 in größeren Detail illustriert;
  • 4 gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung schematisch ein Decodierungsschema für eine Codewortmatrix illustriert, die gemäß dem Codierungsschema aus 2 erhältlich ist; und
  • 5 ein Diagramm zeigt, welches gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung die Coderate gegenüber dem Signal-zu-Rauschverhältnis für beispielhafte GC-Codes im Vergleich zu langen BCH-Codes bei algebraischer Decodierung zeigt.
  • DETAILLIERTE BESCHREIBUNG BEVORZUGTER AUSFÜHRUNGSFORMEN
  • 1 zeigt ein beispielhaftes Speichersystem 1, das einen Speichercontroller 2 sowie eine Speichervorrichtung 3, welche insbesondere eine Flashspeichervorrichtung, beispielsweise vom NAND-Typ sein kann, aufweist. Das Speichersystem 1 ist mit einem Host 4, wie etwa einem Computer zudem das Speichersystem 1 gehört, über einen Satz von Adressleitungen A1, einen Satz von Datenleitungen D1 und einen Satz von Steuerleitungen C1 verbunden. Der Speichercontroller 2 weist eine Verarbeitungseinheit 2a und einen internen Speicher 2b, typischerweise vom eingebetteten (embedded) Typ, auf und ist mit dem Speicher 3 über einen Adressbus A2, einen Datenbus D2 und ein Steuerbus C2 verbunden. Dementsprechend hat der Host 4 über seine Verbindungen A1, D1 und C1 zu dem Speichercontroller 2, der wiederum direkt über die Busse A2, D2 und C2 auf den Speicher 3 zugreifen kann, einen indirekten Lese- und/oder Schreibzugriff auf den Speicher 3. Jeder der Sätze von Leitungen bzw. Bussen A1, B1, C1, A2, B2 und C2 kann mittels einer oder mehrerer einzelner Kommunikationsleitungen implementiert sein.
  • Der Speichercontroller 2 ist auch als Codierungsvorrichtung konfiguriert und daher eingerichtet, die Codierungs- und Decodierungsverfahren der vorliegenden Erfindung auszuführen, insbesondere wie nachfolgend unter Bezugnahme auf die 2 bis 4 beschrieben. Zu diesem Zweck kann der Speichercontroller 2 ein in seinem internen Speicher 2B abgelegtes Computerprogramm aufweisen, welches konfiguriert ist eine oder mehrere dieser Codierungsverfahren durchzuführen, wenn es auf der Prozessoreinheit 2a des Speichercontrollers 2 ausgeführt wird. Alternativ dazu, kann das Programm beispielsweise ganz oder teilweise im Speicher 3 oder in einem zusätzlichen Programmspeicher (nicht gezeigt) abgelegt sein, oder sogar mittels einer hartverdrahteten Schaltung implementiert sein.
  • Die in den 2 bis 4 illustrierten Codierungsverfahren beruhen auf der Verwendung von GC-Codes zur Fehlerkorrektur in Speichern, wie etwa Flashspeichern, welche hochratige Codes verlangen. Die GC-Codes werden aus inneren verschachtelten binären Bose-Chaudhuri-Hocquenghem(BCH)-Codes und äußeren Reed-Solomon(RS)-Codes konstruiert. Für die inneren Codes werden erweiterte BCH-Codes verwendet, bei denen auf der ersten Ebene des GC-Codes einfache Paritätsprüfungscodes verwendet werden (vgl. 2 und 3). Diese Konstruktion ermöglicht hochratige GC-Codes. Ein korrespondierendes Decodierungsverfahren für die GC-Codes ist in 4 illustriert. Eine detaillierte grundlegende Diskussion von GC-Codes findet sich in [5].
  • Nachfolgend wird auf 2 Bezug genommen, die den Codierungsprozess eines GC-Codes gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung illustriert. Das GC-Codewort ist in einer nb × na Matrix angeordnet, wobei na und nb die Längen des äußeren bzw. des Inneren Codes sind. Das Codieren beginnt mit den äußeren Codes. Die Zeilen sind durch L Reed-Solomon Codes der Länge na geschützt, d. h. L bezeichnet die Anzahl der Ebenen. m Elemente jeder Spalte repräsentieren ein Symbol des Galois-Felds GF(2m). Dementsprechend bilden m benachbarte Zeilen ein Codewort eines äußeren Codes A(i), i = 0, ..., L – 1. Es ist zu vermerken, dass die Coderate der äußeren Codes von Ebene zu Ebene ansteigt. Die äußeren Codes schützen Lm Zeilen der Matrix. Die verbleibenden nb – Lm Zeilen werden für die Redundanz der inneren Codes verwendet.
  • Die schraffierte Fläche in 2 illustriert die Redundanzen der Codekomponenten, die durch die äußere und innere Codierung befüllt werden. Nach der äußeren Codierung werden die Spalten der Codewortmatrix mit binären inneren Codes der Länge nb codiert. Jede Spalte der Codewortmatrix ist die Summe von L Codeworten von verschachtelten linearen BCH-Codes. B(L-1) ⊆ B(L-2) ⊆ ... ⊆ B(0) (1)
  • Somit ist ein Code einer höheren Ebene ein Subcode seines Vorgängers, wobei die höheren Ebenen höhere Fehlerkorrekturfähigkeiten aufweisen, d. h. tb,L-1 ≥ tb,L-2 ≥ ... ≥, tb,0, wobei tb,i die Fehlerkorrekturfähigkeit der Ebene i ist. Die Codedimensionen sind k(0) = Lm, k(1) = (L – 1) m, ..., k(L-1) = m.
  • Das Codewort bj der j-ten Spalte ist die Summe der L Codeworte.
  • Figure DE102017107431A1_0003
  • Diese Codeworte bj (i) werden durch Codierung der Symbole aj,i mit dem korrespondierenden Subcode B(i) gebildet, wobei aj,i das j-te Symbol (m Bits) des äußeren Code A(i) ist. Für diese Codierung werden dem Symbol aj,i (L – i – 1)m Null-Bits vorangestellt. Es ist zu vermerken, dass die j-te Spalte bj wegen der Linearität der verschachtelten Codes ein Codewort von B(0) ist.
  • 3 illustriert dieses Codierungsschema in größerem Detail, beruhend auf einem einfachen beispielhaften Fall (Beispiel 1), bei dem L = 2, m = 3 und na = nb = 7 gewählt ist. Demnach gibt es in diesem Beispiel nur L = 2 Ebenen und mit m1 = m = 3 Bits pro Symbol sind die äußeren RS-Codes über dem Galois-Feld GF(23) konstruiert, während zum Zwecke der Vereinfachung die inneren erweiterten BCH-Codes über GF(21) definiert sind, d. h. m2 = 1. In einem ersten Schritt S1 wird eine Datenstruktur, welche eine nb × na Matrix (hier 7 × 7 Matrix) D repräsentiert, mit zu codierenden Daten befüllt, welche aus 24 Informationsbits i0 bis i23 bestehen. Das Befüllungsschema korrespondiert zu demjenigen der Datenmatrix D in 2. Dementsprechend ist in der ersten Ebene (i = 0) die Anzahl der Informationsbits geringer als in der zweiten Ebene (i = 1) und die verbleibenden vorangestellten Bits beider Ebenen werden für die Redundanz reserviert, die in einem nachfolgenden Schritt S2 mittels der äußeren Codierung hinzugefügt wird. Jedes Symbol weist drei benachbarte Bits derselben Spalte auf, sodass beispielsweise in der fünften Spalte von D die Bits i0, i3 und i6 ein erstes Symbol der Spalte und die Bits i11, i16 i21 ein weiteres Symbol bilden. Zusätzlich wird die letzte Zeile der Matrix D für Redundanz reserviert, die mittels der inneren Codierung in einem weiteren Schritt S3 hinzugefügt wird.
  • In dem Schritt S2 zur äußeren Codierung wird die Information in jeder der beiden Ebenen i = 0 und i = 1 mittels eines entsprechenden RS-Codes codiert, wobei die Code Dimension des äußeren RS-Codes für die Ebene 0 nur ka (0) = 3 beträgt, während die Code Dimension der Ebene 1 auf ka (1) = 5 erhöht ist. Die äußere Codierung im Schritt S2 resultiert in einer Zwischenmatrix A, welche die Codesymbole ai,j aufweist, wobei jedes dieser Symbole ai,j m1 = 3 Bits aufweist und die Zeilen der Matrix A Codewörter des äußeren Codes sind.
  • Bei dem Schritt S3 zur inneren Codierung wird jedes der Symbole ai,j der Zwischenmatrix A individuell mittels eines korrespondierenden inneren Codes in Form eines erweiterten BCH-Codes B(i) codiert. In der ersten Ebene i = 0 ist der entsprechende erweiterte BCH-Code B(0) nur ein Einfachparitätsprüfungs-(SPC) Code. Dementsprechend wird, wie in 3 für das Symbol a4,0 beispielhaft illustriert, jedes Symbol a0,j der Ebene 0 (j = 0, ..., 6) durch Voranstellen von (L – i – 1)·m1, d. h. (2 – 0 – 1)·3 = 3 Null-Bits (d. h. „0” Symbol) vor das Symbol und Anwenden eines SPC-Codes auf die zwei Symbole codiert, der in der letzten Zeile der Spalte hinzuaddiert wird, die ein resultierendes Codewort bj (0) für die Spalte j und die Ebene 0 repräsentiert.
  • In der zweiten Ebene i = 1 wird der entsprechende erweiterte BCH-Code B(1), der anders als der SPC-Code eine Fehlerkorrekturfähigkeit von 1 Bit aufweist, in jeder Spalte der Matrix A auf das entsprechende Symbol aj,1 angewandt. Da dies in diesem einfachen Beispiel bereits die letzte Ebene ist, ist ein Voranstellen von „0”-Symbolen nicht erforderlich. Wiederum wird ein SPC-Code auf das resultierende BCH-Codeword angewendet und in der letzten Zeile der entsprechenden Spalte j hinzugefügt.
  • Um die abschließende GC-Codewortmatrix C zu erhalten, werden Spalte für Spalte sämtliche der individuellen Codeworte bj (i) aller Ebenen die der Spalte j gemäß der vorstehenden Formel (2) addiert, um das korrespondierende Codewort bj zu erhalten, das dann die Spalte j der sich ergebenden GC-Codewortmatrix C darstellt, wie nochmals beispielhaft in 3 für die Spalte j = 4 illustriert.
  • In einem weiteren Beispiel (Beispiel 2), das zu 2 korrespondiert, betrachten wir einen GC-Code, der zur Fehlerkorrektur bei Flashspeichern geeignet ist. Der GC-Code ist für 2 KB-Informationsblöcke entworfen, d. h. es ist ein Code, der verwendet werden kann, um 2 KB an Daten und zusätzlich 4 Bytes an Metainformationen zu speichern. Für diesen GC-Code nutzen wir L = 13 Ebenen mit inneren verschachtelten BCH-Codes über GF(27), d. h. m2 = 7, sowie äußere RS-Codes über GF(29) (d. h. m1 = 9). In der ersten Ebene i = 0 wenden wir einfache Paritätsprüfungscodes SPC an. Somit sind alle inneren Codes erweiterte BCH-Codes der Länge nb = 13·9 + 1 = 118.
  • Die äußeren RS-Codes sind über dem Galois-Feld GF(29) konstruiert. Somit wird die Codedimension der inneren Codes von Ebene zu Ebene um m1 = 9 Bits reduziert. Der GC-Code wird aus L = 13 äußeren RS-Codes der Länge na = 152 konstruiert. Die Parameter der Codes sind in Tabelle 1 zusammengefasst, wobei wir in jeder der Ebenen 4 bis 12 dieselben RS-Codes verwenden. Der Code hat insgesamt die Codedimension k = mΣ L – 1 / j = 0 ka,j = 16416 und die Länge n = na·nb = 17936.
    j kb,j db,j ka,j da,j
    0 117 2 84 69
    1 108 4 130 23
    2 99 6 136 17
    3 90 8 142 11
    4–12 81 12 148 5
    TABELLE I
  • Parameter des Beispielscodes. kb,j und db,j sind die Codedimension und die minimale Hammingdistanz des binären inneren Codes der Ebene j. ka,j und da,j sind die Codedimension und die minimale Hammingdistanz der äußeren RS-Codes.
  • Dieser Code hat eine Coderate R = 0,915. Er ist auch in der Lage, Burstfehler zu korrigieren. Die minimale Distanz aller äußeren RS-Codes ist größer oder gleich 5. Folglich kann jeder der äußeren Codes wenigstens zwei fehlerhafte Symbole korrigieren, und somit können zwei Spalten der Codewortmatrix durch eine beliebige Anzahl von Fehlern korrumpiert sein.
  • 4 illustriert gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung schematisch ein korrespondierendes Decodierungsschema für eine Codewortmatrix r, die prinzipiell mittels des Codierungsschemas aus 2 erhältlich ist. Tatsächlich kann sich die zu decodierende Codewortmatrix r von der ursprünglichen Codewortmatrix C, wie sie sich durch Anwendung des Codierungsschemas aus 2 ergibt, verschieden sein, wenn die zu codierenden Daten zuvor mittels einem oder mehreren fehlerhaften Symbolen codiert wurden (beispielsweise vor ihrer Speicherung in einem Speicher), die durch eine unbeabsichtigte Modifikation der ursprünglichen Codewortmatrix C verursacht wurden. Eine derartige Modifikation könnte beispielsweise durch eine oder mehrere fehlerhafte Speicherzellen innerhalb der Speichervorrichtung, durch Speicherdegradation, durch Schreib- oder Lesestörungen (engl. write/read disturbs) oder andere Einflüsse auf die Daten verursacht sein.
  • Der Decoder, z. B. die Codierungsvorrichtung im Speichercontroller 2 aus 1, verarbeitet die empfangene Datenmatrix r Ebene für Ebene, beginnend mit i = 0 bis hinauf zur letzten Ebene i = n, mit n = L – 1, wobei i der Index der aktuellen Ebene ist. 4 stellt die Decodierungsschritte Si-1 bis Si-5 bildlich dar. Zunächst werden die Spalten der Datenmatrix r bezüglich B(i) decodiert (Si-1), und Informationsbits müssen entnommen werden (Rückabbildung, Si-2), um die Codesymbole ai,j von A(i) zu erhalten, wobei j der Spaltenindex ist. Wenn alle Symbole des Codes A(i) entnommen sind, kann der RS-Code decodiert werden (Si-3). An diesem Punkt ist ein Decodierungs-Teilergebnis a ^i verfügbar. Schließlich muss dieses Ergebnis unter Verwendung von B(i) rückcodiert werden (Si-4). Die geschätzten Codeworte des inneren Codes B(i) werden von der Codewortmatrix subtrahiert (Si-5), bevor die nächste Ebene decodiert werden kann.
  • Ein ähnlicher Codierungs- und Decodierungsprozess ist im Detail auch in [14] beschrieben. Allerdings kann in Abweichung davon gemäß der vorliegenden Erfindung in der ersten Ebene i = 0 nur eine Fehlererkennung für die einfachen Paritätsprüfungscodes angewandt werden (S0-1). Der einfache Paritätsprüfungscode kann jeden Fehler ungeraden Gewichts erkennen. Wenn in der Spalte j ein Fehler detektiert wird, wird das korrespondierende Symbol a0,j als Löschung betrachtet. Nach der Auswertung des Fehlers beim einfachen Paritätsprüfungscode kann eine Lösch-Decodierung für den RS-Code angewandt werden (vgl. [15]). Beginnend mit der zweiten Ebene, kann die Struktur der verschachtelten BCH-Codes ausgenutzt werden, d. h. ein BCH-Code kann decodiert werden, der einen Einzelbit-Fehler pro Codeword korrigieren kann aufgrund der Erweiterung des BCH-Codes kann jeder Fehler vom Gewicht 2 detektiert werden. In diesem Fall wird ein Decodierungsfehler für den inneren Code erklärt, wobei die Decodierungsfehler der inneren Codes als gelöschte Symbole des RS-Codes betrachtet werden. Dementsprechend werden Fehler- und Lösch-Decodierung auf allen Ebenen des RS-Codes verwendet.
  • 5 illustriert die Fehlerkorrekturperformanz eines beispielhaften GC-Codes gemäß der vorliegenden Erfindung. Genauer, zeigt sie ein Diagramm, das die Coderate gegenüber dem Rausch-zu-Signalverhältnis SNR („Eb/N0”) für den beispielhaften GC-Code im Vergleich mit langen BCH-Codes bei algebraischer Decodierung aufträgt. Als Performanzmaß wird diejenige Coderate verwendet, die erforderlich ist, um eine Gesamtblockfehlerrate von weniger als 10–16 für eine gegebene Fehlerwahrscheinlichkeit im Kanal zu garantieren. Der Vergleich zeigt klar, dass über fast alle Werte von SNR hinweg die erreichbare Coderate der GC-Codes höher ist, als die Coderate der langen BCH-Codes.
  • Sämtliche individuellen Codes dieses beispielhaften GC-Codes werden ähnlich dem vorausgehend in Beispiel 2 dargestellten Code konstruiert. Insbesondere werden die inneren Codes gemäß der obigen Tabelle I gewählt, während die Fehlerkorrekturfähigkeit der äußeren Codes so angepasst ist, dass für eine Fehlerwahrscheinlichkeit im Kanal die höchstmögliche Coderate erhalten wird. Es ist zu vermerken, dass in diesem Beispiel aufgrund der Wahl der inneren Codes die Gesamt-Coderate des GC-Codes höchstens R = 0,99 beträgt. Im Gegensatz dazu, weisen die in [2], [4] beschriebenen Codes nur eine Coderate von 0,9 oder darunter auf.
  • Während vorausgehend wenigstens eine beispielhafte Ausführungsform der vorliegenden Erfindung beschrieben wurde, ist zu bemerken, dass eine große Anzahl von Variationen dazu existiert. Es ist dabei auch zu beachten, dass die beschriebenen beispielhaften Ausführungsformen nur nichtlimitierende Beispiele dafür darstellen, wie die Erfindung implementiert werden kann, und es nicht beabsichtigt ist, dadurch den Umfang, die Anwendbarkeit oder die Konfiguration der hier beschriebenen Vorrichtungen und Verfahren zu beschränken. Vielmehr wird die vorausgehende Beschreibung dem Fachmann eine Anleitung zur Implementierung mindestens einer beispielhaften Ausführungsform liefern, wobei sich versteht, dass verschiedene Änderungen in der Funktionsweise und der Anordnung der in einer beispielhaften Ausführungsform beschriebenen Elemente vorgenommen werden können, ohne dass dabei von dem in den angehängten Ansprüchen jeweils festgelegten Gegenstand sowie seinen rechtlichen Äquivalenten abgewichen wird.
  • LITERATURANGABEN
  • Bezugszeichenliste
  • 1
    Speichersystem
    2
    Speichercontroller, einschließlich Codierungsvorrichtung
    2a
    Prozessoreinheit
    2b
    eingebetteter (embedded) Speicher des Speichercontrollers
    3
    nichtflüchtiger Speicher, insbesondere Flashspeicher
    4
    Host
    A1
    Adressleitung(en)
    D1
    Datenleitung(en)
    C1
    Steuerleitung(en)
    A2
    Adressbus
    D2
    Datenbus
    C2
    Steuerbus

Claims (14)

  1. Verfahren zur Fehlerkorrekturcodierung von in eine Speichervorrichtung (3) zu speichernden Daten, wobei das Verfahren durch eine Codierungsvorrichtung (2) ausgeführt wird und dabei auf die Daten eine Fehlerkorrekturcodierung zur Erzeugung von codierten Daten angewandt wird, die auf Verallgemeinerten Verketteten Codes, GCC, beruht, wobei: der GCC aus L inneren verschachtelten binären erweiterten Bose-Chaudhuri-Hocquenghem, BCH, -Codes und L äußeren Codes, vorzugsweise Reed-Solomon, RS, -Codes konstruiert ist, wobei L ≥ 2 eine positive ganze Zahl ist; der erweiterte BCH-Code auf der niedrigsten Verschachtelungsebene der inneren verschachtelten BCH-Codes ein Einfachparitätsprüfungs-, SPC, -Code ist; und der erweiterte BCH-Code wenigstens einer höheren Verschachtelungsebene der inneren verschachtelten BCH-Codes eine Fehlerkorrekturfähigkeit aufweist und ein Subcode des BCH-Codes der niedrigsten Verschachtelungsebene ist.
  2. Verfahren gemäß Anspruch 1, wobei das Anwenden der Fehlerkorrekturcodierung aufweist: Anordnen der zu codierenden Daten in einer zweidimensionalen Datenmatrix (D) mit einer ersten Dimension na, die der Länge der äußeren RS-Codes entspricht, und einer zweiten Dimension nb, die der Länge der inneren erweiterten BCH-Codes entspricht, wobei eine Linie der ersten Dimension einer Matrix (D) eine Zeile der Matrix (D) und eine Linie ihrer zweiten Dimension eine Spalte der Matrix (D) ist, oder andersherum, und die äußeren RS-Codes über ein Galois-Feld GF(2m1) definiert sind, sodass m1 Elemente jeder Linie der zweiten Dimension ein Symbol des Galois-Felds GF(2m1) darstellen; Anwenden der L äußeren RS-Codes auf die entsprechenden L·m1 Linien der ersten Dimension der Datenmatrix (D), sodass jeder der L äußeren RS-Codes ein Codewort aus den entsprechenden m1 Linien der zweiten Dimension liefert und insgesamt L·m1 Linien der sich ergebenden Zwischenmatrix (A) durch die äußeren RS-Codes geschützt sind, wobei m1 eine positive Ganzzahl ist; und nachfolgend Anwenden der inneren verschachtelten erweiterten BCH-Codes auf die Linien der zweiten Dimension der Zwischenmatrix (A), um eine Codewortmatrix (C) zu erhalten, welche die codierten Daten enthält, sodass nb – L·m1 Linien der ersten Dimension der Codewortmatrix (C) für die Codierungsredundanz der inneren verschachtelten erweiterten BCH-Codes verwendet werden, und jede Linie der zweiten Dimension der Codewortmatrix gleich der Summe der L Codeworte der einzelnen verschachtelten erweiterten BCH-Codes für diese Linie ist.
  3. Verfahren gemäß Anspruch 2, wobei ist das Codewort bj der j-ten Linie der zweiten Dimension der Codewortmatrix durch die folgende Formel bestimmt ist:
    Figure DE102017107431A1_0004
    wobei die Codeworte bj (i) gebildet werden, indem die Symbole aj,i mit den erweiterten BCH-Codes B(i) der i-ten Verschachtelungsebene codiert werden, wobei aj,i das j-te Symbol aus m1 Bits des i-ten äußeren RS-Codes A(i) entlang der ersten Richtung der Zwischenmatrix ist und für diese Codierung (L – i – 1)·m1 Null-Bits vor oder nach dem Symbol aj,i an dieses angehängt werden.
  4. Verfahren gemäß Anspruch 2 oder 3, wobei die Coderate des entlang der Richtung der zweiten Dimension der Zwischenmatrix (A) definierten ersten RS-Codeworts geringer ist als die Coderate des entlang dieser Richtung definierten L-ten RS-Codeworts.
  5. Verfahren gemäß einem der Ansprüche 2 bis 4, wobei die inneren erweiterten BCH-Codes über ein Galois-Feld GF(2m2) definiert sind und m1 von m2 verschieden ist, wobei m2 eine positive ganze Zahl ist.
  6. Verfahren gemäß Anspruch 5, wobei m1 = 8 und m2 = 6, oder m1 = 9 und m2 = 7.
  7. Verfahren gemäß Anspruch 6, wobei m1 = 9 und m2 = 7 und die Anzahl der Verschachtelungsebenen für die inneren erweiterten BCH-Codes 13 ist, sodass na = 152 und nb = 118; und für jede der genannten Verschachtelungsebenen j die korrespondierende Codedimension des inneren erweiterten BCH-Codes kb,j und ihre minimale Hammingdistanz db,j sowie die korrespondierende Codedimension ka,j des äußeren RS-Codes und seine minimale Hammingdistanz da,j diejenigen aus der folgenden Tabelle sind: j kb,j db,j ka,j da,j 0 117 2 84 69 1 108 4 130 23 2 99 6 136 17 3 90 8 142 11 4–12 81 12 148 5
  8. Verfahren gemäß einem der Ansprüche 2 bis 7, wobei in dem Schritt zur Anwendung der inneren verschachtelten erweiterten BCH-Codes auf die Linien der zweiten Dimension der Zwischenmatrix (A) zumindest in einer der Verschachtelungsebenen das einzelne Paritätsbit des entsprechenden erweiterten BCH-Codes dieser Verschachtelungsebene aus einer vordefinierten echten Untermenge der Bits der entsprechenden Linie der zweiten Dimension berechnet wird.
  9. Verfahren gemäß einem der vorausgehenden Ansprüche, des Weiteren aufweisend Übermitteln der erhaltenen codierten Daten in ein oder mehrere Speichervorrichtungen zum Speichern der Daten darin.
  10. Verfahren zum iterativen Fehlerkorrektur-Decodieren einer auf verallgemeinerten verketteten Codes, GCC, beruhenden Codewortmatrix (r) wobei: Der GCC aus L inneren verschachtelten binären erweiterten Bose-Chaudhuri-Hocquenghem, BCH, -Codes und L äußeren Codes, vorzugsweise Reed-Solomon-, RS, -Codes konstruiert ist, wobei L ≥ 2 eine positive ganze Zahl ist; der erweiterte BCH-Code auf der niedrigsten Verschachtelungsebene der inneren verschachtelten BCH-Codes nur ein Einfachparitätsprüfungs-, SPC, -Code ist; und der erweiterte BCH-Code wenigstens einer höheren Verschachtelungsebene der inneren verschachtelten BCH-Codes eine Fehlerkorrekturfähigkeit aufweist und ein Subcode des BCH-Codes der niedrigsten Verschachtelungsebene ist; wobei das Decodierungsverfahren aufweist: eine erste Iteration, die zu der niedrigsten Verschachtelungsebene der inneren erweiterten BCH-Codes der Codewortmatrix (r) korrespondiert und die folgenden Schritte aufweist: – Anwenden einer SPC-Decodierung auf die Linien der zweiten Dimension der Codewortmatrix (r) bezüglich der niedrigsten Verschachtelungsebene der inneren verschachtelten erweiterten BCH-Codes, in denen die Linien einer zweiten Dimension der Codewortmatrix (r) codiert sind, um eine vorläufige Decodierdatenmatrix der ersten Iteration zu erhalten und Löschinformationen festzustellen, welche die Linien der zweiten Dimension der Codewortmatrix charakterisieren, in denen beruhend auf der SPC-Decodierung eine Löschung detektiert wurde; – Entnehmen der Informationsbits, die in den Linien der zweiten Dimension der vorläufigen Decodierdatenmatrix der ersten Iteration enthalten sind, um Codesymbole (ai,j) der äußeren RS-Codes wiederzugewinnen, in denen die Linien einer ersten Dimension der Codewortmatrix (r) codiert sind; – Anwenden einer RS-Decodierung, die zu den entsprechenden RS-Codes korrespondiert, welche zur Erzeugung der ursprünglichen Codewortmatrix (C) während des Codierens verwendet wurden, auf die wiedergewonnenen RS-Symbole in den Linien der ersten Dimension der vorläufigen Decodierdatenmatrix der ersten Iteration, um eine Teildecodierungsergebnismatrix der ersten Iteration zu erhalten, wobei die Löschinformationen während der RS-Decodierung verwendet werden, um fehlerhafte RS-Symbole in der vorläufigen Decodierdatenmatrix der ersten Iteration zu identifizieren; – Zurückcodieren der Teildecodierungsergebnismatrix der ersten Iteration durch Anwendung einer SPC-Codierung auf die zweite Dimension dieser Matrix, um eine zurückcodierte Matrix der ersten Iteration zu erhalten; und – Subtrahieren der zurückcodierten Matrix der ersten Iteration von der Codewortmatrix (r), um eine Startmatrix für eine nachfolgende weitere Iteration zu erhalten; und für jede der weiteren Verschachtelungsebenen der inneren erweiterten BCH-Codes der Codewortmatrix (r), eine entsprechende weitere Iteration mit den folgenden Schritten: – Anwenden der erweiterten BCH-Decodierung auf die Linien der zweiten Dimension der Staat Matrix der aktuellen Iteration bezüglich der aktuellen Verschachtelungsebene der inneren verschachtelten erweiterten BCH-Codes, in denen die Linien einer zweiten Dimension der Startmatrix der aktuellen Iteration codiert sind, um eine vorläufige Decodierdatenmatrix der aktuellen Iteration zu erhalten; – Entnehmen der Informationsbits, die in den Linien der zweiten Dimension der vorläufigen Decodierdatenmatrix der aktuellen Iteration enthalten sind, um Codesymbole der äußeren RS-Codes wiederzugewinnen, in denen die Linien einer ersten Dimension der Codewortmatrix codiert sind; – Anwenden einer RS-Decodierung, die zu den entsprechenden RS-Codes korrespondiert, welche zur Erzeugung der ursprünglichen Codewortmatrix (C) während des Codierens verwendet wurden, auf die wiedergewonnenen Code Symbole in den Linien der ersten Dimension der vorläufigen Decodierdatenmatrix der aktuellen Iteration, um eine Teildecodierungsergebnismatrix der aktuellen Iteration zu erhalten; – falls die aktuelle Iteration zu der höchsten Verschachtelungsebene der inneren verschachtelten erweiterten BCH-Codes in der Codewortmatrix (r) korrespondiert, ausgeben der Teildecodierungsergebnismatrix der aktuellen Iteration als eine sich aus der Decodierung ergebende Datenmatrix, und – andernfalls, Zurückcodieren der Teildecodierungsergebnismatrix der aktuellen Iteration durch Anwendung einer erweiterten BCH Codierung, die zu der aktuellen Verschachtelungsebene korrespondiert, auf die zweite Dimension dieser Matrix, um eine zurückcodierte Matrix der aktuellen Iteration zu erhalten; und Subtrahieren der zurückcodierten Matrix der aktuellen Iteration von der Startmatrix der aktuellen Iteration, um eine Startmatrix für eine nachfolgende weitere Iteration zu erhalten.
  11. Verfahren gemäß Anspruch 10, wobei für zumindest eine der weiteren Iterationen: der Schritt zum Anwenden der erweiterten BCH-Decodierung des Weiteren ein Feststellen von Löschinformationen aufweist, welche Linien der zweiten Dimension der Startmatrix der aktuellen Iteration charakterisieren, in denen basierend auf der SPC-Decodierung eines in dem erweiterten BCH-Code der aktuellen Iteration enthaltenen SPC-Paritätsbits eine Löschung detektiert wurde; und in dem Schritt zur Anwendung der RS-Decodierung diese Löschinformationen der aktuellen Iteration während der RS-Decodierung verwendet werden, um fehlerhafte RS-Symbole in der vorläufigen Decodierdatenmatrix der aktuellen Interaktion zu identifizieren.
  12. Codierungsvorrichtung (2), insbesondere eine Halbleitervorrichtung mit einem Speichercontroller, wobei die Codierungsvorrichtung eingerichtet ist, das Codierungsverfahren gemäß einem der Ansprüche 1 bis 9; und/oder das Decodierungsverfahren gemäß Anspruch 10 oder 11 auszuführen.
  13. Codierungsvorrichtung (2) gemäß Anspruch 12, aufweisend: einen oder mehrere Prozessoren (2a); einen Speicher (2b); sowie ein oder mehrere in dem Speicher (2b, 3) abgelegte Programme, die bei ihrer Ausführung auf dem einen bzw. den mehreren Prozessoren (2a) die Codierungsvorrichtung veranlassen, das Codierungsverfahren gemäß einem der Ansprüche 1 bis 9 und/oder das Decodierungsverfahren gemäß Anspruch 10 oder 11 auszuführen.
  14. Computerprogramm, welches Anweisungen enthält, die eine Codierungsvorrichtung (2), insbesondere die Codierungsvorrichtung (2) gemäß Anspruch 12 oder 13, veranlassen, das Codierungsverfahren gemäß einem der Ansprüche 1 bis 9 und/oder das Decodierungsverfahren gemäß Anspruch 10 oder 11 auszuführen.
DE102017107431.7A 2016-05-13 2017-04-06 Verfahren und Vorrichtungen zur Fehlerkorrekturcodierung beruhend auf hochratigen verallgemeinerten verketteten Codes Active DE102017107431B4 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US15/593,973 US10320421B2 (en) 2016-05-13 2017-05-12 Method and device for error correction coding based on high-rate generalized concatenated codes
US16/395,046 US10790855B2 (en) 2016-05-13 2019-04-25 Method and device for error correction coding based on high-rate Generalized Concatenated Codes

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102016005985 2016-05-13
DE102016005985.0 2016-05-13

Publications (2)

Publication Number Publication Date
DE102017107431A1 true DE102017107431A1 (de) 2017-11-16
DE102017107431B4 DE102017107431B4 (de) 2022-05-25

Family

ID=81452845

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017107431.7A Active DE102017107431B4 (de) 2016-05-13 2017-04-06 Verfahren und Vorrichtungen zur Fehlerkorrekturcodierung beruhend auf hochratigen verallgemeinerten verketteten Codes

Country Status (1)

Country Link
DE (1) DE102017107431B4 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017110389A1 (de) 2016-05-13 2017-11-16 Hyperstone Gmbh Verfahren und Decoder zur Softinput Decodierung von verallgemeinerten verketteten Codes

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7296212B1 (en) 2002-11-15 2007-11-13 Broadwing Corporation Multi-dimensional irregular array codes and methods for forward error correction, and apparatuses and systems employing such codes and methods

Non-Patent Citations (17)

* Cited by examiner, † Cited by third party
Title
A. Fahrner, H. Griesser, R. Klarer, und V. Zyablov, "Low-complexity GEL codes for digital magnetic storage systems," IEEE Transactions on Magnetics, Bd. 40, Nr. 4, S. 3093–3095, Juli 2004
E. Yaakobi, J. Ma, L. Grupp, P. Siegel, S. Swanson, und J. Wolf, "Error characterization and coding schemes for flash memories," in IEEE GLOBECOM Workshops, Dez. 2010, S. 1856–1860
E. Yaakobi, L. Grupp, P. Siegel, S. Swanson, und J. Wolf, "Characterization and error-correcting codes for TLC flash memories," in Computing, Networking and Communications (ICNC), 2012 International Conference on, Jan. 2012, S. 486–491
F. Sun, S. Devarajan, K. Rose, und T. Zhang, "Design of on-chip error correction systems for multilevel NOR and NAND flash memories," IET Circuits, Devices Systems, Bd. 1, Nr. 3, S. 241–249, Juni 2007
I. Dumer, Concatenated codes and their multilevel generalizations, in Handbook of Coding Theory, Bd. II, Elsevier, Amsterdam, 1998
J. Freudenberger und J. Spinner, "A configurable Bose-Chaudhuri-Hocquenghem codec architecture for flash controller applications," Journal of Circuits, Systems, and Computers, Bd. 23, Nr. 2, S. 1–15, Feb. 2014
J. Freudenberger, J. Spinner, und S. Shavgulidze, "Generalized concatenated codes for correcting two-dimensional clusters of errors and independent errors," in Int. Conference on Communication and Signal Processing (CSP), Castelldefels-Barcelona, Feb. 2014, S. 1–5
J. Freudenberger, U. Kaiser, und J. Spinner, "Concatenated code constructions for error correction in non-volatile memories," in Int. Symposium on Signals, Systems, and Electronics (ISSSE), Potsdam, Oktober 2012, S. 1–6
J. Spinner und J. Freudenberger, "Decoder architecture for generalized concatenated codes," IET Circuits, Devices & Systems, Bd. 9, Nr. 5, S. 328–335, 2015
J. Spinner und J. Freudenberger, "Design and implementation of a pipelined decoder for generalized concatenated codes," in Proceedings of 27th Symposium on Integrated Circuits and Systems Design (SBCCI), Aracaju, Brazil, Sept. 2014, S. 1–16
J. Spinner und J. Freudenberger, "Soft input decoding of generalized concatenated codes using a stack decoding algorithm," in Proceedings of 2nd BW-CAR Symposium an Information and Communication Systems (SInCom), Dez. 2015, S. 1–5
L. Weiburn und J. Cavers, "Improved performance of Reed-Solomon decoding with the use of Pilot signals for erasure generation," in Vehicular Technology Conference, 1998. VTC 98. 48th IEEE, Bd. 3, Mai 1998, S. 1930–1934 Bd. 3
M. Bossert, Channel coding for telecommunications, Wiley, 1999
R. Micheloni, A. Marelli, und R. Ravasio, Error Correction Codes for Non-Volatile Memories, Springer, 2008
U. Wachsmann, R. Fischer, und J. Huber, "Multilevel codes: theoretical concepts and practical design rules," IEEE Transactions on Information Theory, Bd. 45, Nr. 5, S. 1361–1391, Juli 1999
V. Zyablov, S. Shavgulidze, und M. Bossert, "An introduction to generalized concatenated codes," European Transactions on Telecommunications, Bd. 10, Nr. 6, S. 609–622, 1999
X. Zhang und K. K. Parhi, "High-speed architectures for parallel long BCH encoders," IEEE Transactions on Very Large Scale Integration (VLSI) Systems, Bd. 13, Nr. 7, S. 872–877, 2005

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017110389A1 (de) 2016-05-13 2017-11-16 Hyperstone Gmbh Verfahren und Decoder zur Softinput Decodierung von verallgemeinerten verketteten Codes

Also Published As

Publication number Publication date
DE102017107431B4 (de) 2022-05-25

Similar Documents

Publication Publication Date Title
DE112011101116B4 (de) Two-Level BCH-Codes für Solid-State-Speichereinheiten
DE69932962T2 (de) Kodierungsverfahren und Speicheranordnung
DE102017110389B4 (de) Verfahren und Decoder zur Softinput Decodierung von verallgemeinerten verketteten Codes
DE10133595B4 (de) Pufferschaltung, Speicherzugriffsverfahren und Reed-Solomon-Decoder
DE102015201384B4 (de) Vorrichtung und Verfahren zum Verbessern der Datenspeicherung durch Dateninvertierung
DE102010021516B4 (de) Fehlerkorrekturcodes für erhöhte Speicherkapazität in Mehrpegelspeichereinrichtungen
DE112012000385T5 (de) Korrigieren von Auslöschungen in Speicher-Arrays
DE102017103347B4 (de) Verarbeitung von daten in speicherzellen eines speichers
DE102011085602B4 (de) Vorrichtung und Verfahren zum Korrigieren zumindest eines Bitfehlers in einer codierten Bitsequenz
DE102017130591B4 (de) Verfahren und Vorrichtung zur Fehlerkorrekturkodierung auf Basis einer Datenkomprimierung
DE102013215055A1 (de) Schaltungsanordnung und Verfahren mit modifiziertem Fehlersyndrom zur Fehlererkennung von permanenten Fehlern in Speichern
DE102007038114A1 (de) Fehlerkorrekturschaltung, Halbleiterspeicherelement und Fehlerkorrekturverfahren
DE102007058828A1 (de) Speicherbauelement und Fehlerkorrekturverfahren
DE112014005810B4 (de) anagement der Datenspeicherung in analogen Speicherzellen unter Verwendung einer nicht ganzzahligen Anzahl von Bits pro Zelle
DE102015113414B4 (de) Fehlerkorrektur unter Verwendung von WOM-Codes
DE112014002870T5 (de) Kombinations-Fehler- und Löschdecodierung für Produktcodes
DE112012006014T5 (de) Verteilte Codewortteile
DE102013016681B4 (de) Codieren und Decodieren von Daten zum Vornehmen von Anpassungen für Speicherzellen mit Haftfehlern
DE102015215401A1 (de) Speichervorrichtung und Verfahren zum Korrigieren einer gespeicherten Bitfolge
DE102019127089A1 (de) LDPC Decoder, semiconductor memory system, and operating method thereof
DE112011101852T5 (de) Decodieren von LDPC-Code
DE102005022107B4 (de) Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge
DE3882175T2 (de) Fehlerkorrektur-Kode für einen B-bit-pro-Chip-Speicher mit verminderten Redundanz.
DE102017107431B4 (de) Verfahren und Vorrichtungen zur Fehlerkorrekturcodierung beruhend auf hochratigen verallgemeinerten verketteten Codes
DE112019001968B4 (de) Gemeinsame korrekturlogik für hohe und niedrige zufalls-bitfehlerraten

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final