DE102017107431B4 - Methods and devices for error correction coding based on high rate generalized concatenated codes - Google Patents

Methods and devices for error correction coding based on high rate generalized concatenated codes Download PDF

Info

Publication number
DE102017107431B4
DE102017107431B4 DE102017107431.7A DE102017107431A DE102017107431B4 DE 102017107431 B4 DE102017107431 B4 DE 102017107431B4 DE 102017107431 A DE102017107431 A DE 102017107431A DE 102017107431 B4 DE102017107431 B4 DE 102017107431B4
Authority
DE
Germany
Prior art keywords
matrix
codes
code
dimension
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.)
Active
Application number
DE102017107431.7A
Other languages
German (de)
Other versions
DE102017107431A1 (en
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/en
Priority to US16/395,046 priority patent/US10790855B2/en
Application granted granted Critical
Publication of DE102017107431B4 publication Critical patent/DE102017107431B4/en
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

Abstract

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 BCH-Codes und L äußeren Codes, vorzugsweise 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 SPC-Code ist;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; und„BCH-Code“ einen Bose-Chaudhuri-Hocquenghem Code bezeichnet, „RS-Code“ einen Reed-Solomon-Code bezeichnet und „SPC-Code“ einen Einfachparitätsprüfungscode bezeichnet.Method for error correction coding of data to be stored in a storage device (3), the method being carried out by a coding device (2) and error correction coding being applied to the data to generate coded data which is based on generalized concatenated codes, GCC, where:the GCC is constructed from L inner interleaved binary extended BCH codes and L outer codes, preferably RS codes, where L ≥ 2 is a positive integer;the extended BCH code at the lowest nest level of the inner interleaved BCH codes is an SPC code;the extended BCH code of at least one higher nest level of the inner nested BCH codes has an error correction capability and is a subcode of the BCH code of the lowest nest level; and "BCH code" denotes a Bose-Chaudhuri-Hocquenghem code, "RS code" denotes a Reed-Solomon code, and "SPC code" denotes a single parity check code.

Description

GEBIET DER ERFINDUNGFIELD OF THE INVENTION

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.The present invention relates to error correction coding, particularly for non-volatile flash memory applications. More precisely, the invention relates to a method for error-correction coding of data to be stored in a storage device, a corresponding method for decoding a codeword matrix resulting from the coding method, a coding device set up to carry out one or more of these methods , and a corresponding computer program for executing these methods on the coding device.

HINTERGRUNDBACKGROUND

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.Error correction coding (ECC) based on generalized concatenated codes (GC codes) has a high potential for various applications in the field of data communication and data storage systems, for example for digital magnetic storage systems, as in [ 1] (see list of literature sources given below [...]), for non-volatile flash memory (cf. [2]), and for two-dimensional barcodes (cf. [3]). In particular, GC codes can be used for error correction in flash memories, as suggested in [2] and [4].

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.In particular, such GCC codes can be constructed from inner nested binary Bose-Chaudhuri-Hocquenghem (BCH) codes and outer Reed-Solomon (RS) codes, such as generally described in [5], [6], and [7]. , and they are well suited for fast hardware-based decoder architectures (cf. [4]). In the theory of coding, the BCH codes form a class of linear cyclic error correction codes constructed using finite fields (Galois fields, GF), while the Reed-Solomon codes belong to the class of non-binary cyclic error correction codes belong and are based on univariant polynomials over finite fields (GF).

US 7,296,212 B1 beschreibt mehrdimensionale unregelmäßige Array-Codes und Verfahren zur Vorwärtsfehlerkorrektur, und Vorrichtungen und Systeme, die solche Codes und Verfahren verwenden. Speziell werden Verfahren, Vorrichtungen und Systeme offenbart zum Codieren von Informationssymbolen, umfassend das Laden von Informationssymbolen in ein Datenfeld mit n(1) Zeilen und n(2) Spalten, wobei jede Spalte k(1) Informationssymbole hat und wobei k(1) ein Feld ist, das mindestens zwei verschiedene Werte hat, Codieren jeder Spalte mit einem Code C(1) aus einer Familie von verschachtelten Codes C(1), wobei C(1) zwei verschiedene verschachtelte Codes enthält, und Codieren jeder Zeile mit einem Code C(2). U.S. 7,296,212 B1 describes multi-dimensional irregular array codes and methods for forward error correction, and apparatus and systems using such codes and methods. Specifically disclosed are methods, apparatus and systems for encoding information symbols comprising loading information symbols into a data array having n (1) rows and n (2) columns, each column having k (1) information symbols and where k (1) one field that has at least two different values, coding each column with a code C (1) from a family of nested codes C (1) , where C (1) contains two different nested codes, and coding each row with a code C (2) .

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.Flash memory, especially NAND flash memory, is an important component of embedded systems and consumer electronics. Flash memory requires ECC to ensure data integrity and reliability for the user data (see [8]). In many flash technologies, a binary symmetric channel (BSC) can be assumed as the statistical error model. Therefore, BCH codes are typically used for error correction, as described for example in [9], [10], [11], [12] and [13]. GC codes have lower decoding complexity than long BCH codes. Flash memory typically reserves an extra memory area that is used to store the redundancies needed for the ECC. This extra memory area determines the code rate for the error correction code.

ZUSAMMENFASSUNG DER ERFINDUNGSUMMARY OF THE INVENTION

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.It is an object of the present invention to provide methods and devices for further improving error correction coding, in particular for improving code rates. In particular, it is desirable that such methods and apparatus are capable of enhanced ECC encoding/decoding of data associated with storing/reading that data to/from a memory such as non-volatile memory.

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.A solution to this problem is achieved through the teaching of the independent claims. Various preferred embodiments of the present invention are subject of the dependent claims.

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-Codes (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-Code (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.A first aspect of the invention relates to a method for error correction coding of data to be stored in a storage device, the method being carried out by a coding device and error correction coding being applied to the data to generate coded data based on Generalized Concatenated Codes (GCC), based. Here (i) the GCC is constructed from L inner interleaved binary extended Bose-Chaudhuri-Hocquenghem codes (BCH codes) and L outer codes, preferably Reed-Solomon codes (RS codes), where L ≥ 2 a positive integer number is, (ii) the extended BCH code at the lowest nesting level of the inner nested BCH codes is a single parity check (SPC) code, and (iii) the extended BCH code of at least one higher nest level of the inner nested BCH codes has an error correction capability (in contrast to the SPC code, which can only detect certain errors) and is a subcode of the BCH code of the lowest nest level.

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.The term "extended BCH code" as used herein refers to a code whose codewords generally include both a BCH codeword and an additional simple parity check (SPC) symbol (i.e., a parity bit if the SPC symbol is only a single bit). However, a mere SPC code (without further BCH parity symbols) is already an extended BCH code and represents even its simplest form. While a BCH code (which is not just an SPC code) requires the correction of a certain number of Allowing for errors in a codeword during decoding, an SPC code only allows certain errors to be detected, especially when there is an odd number of errors in the codeword.

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) ⊆ B(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.The term "subcode" of a particular (parent) BCH code, as used herein, refers to a code that consists of a true subset of the codewords of the (parent) BCH code. So a BCH code B (n) is a subset of another BCH code B (m) if the set of code words of B (n) is a proper subset of the set of code words of B (m) . Specifically, the subcode may be the BCH code of a certain nesting level of the nested structure of the inner nested BCH codes, which subcode is a subset of a BCH code of a lower level of the nested structure. Accordingly, in the nested structure B (L-1) ⊆ B (L-2) ⊆ .... ⊆ B (0), the BCH code B (Lq) with L > q > 0 and the integer q is an a subcode at least the BCH code B (0) of the lowest nesting level 0 and, if q < L-1, also any higher nested BCH code defined between B (0) and B (Lq) in the nested structure. An interleaving of the BCH codes with different levels is described in particular in [2] and [4].

Vorzugsweise sind die äußeren Codes Blockcodes und besonders bevorzugt RS-Codes.Preferably the outer codes are block codes and most preferably RS codes.

Während die Codekonstruktionen, die in den Fundstellen [2] und [4] beschrieben 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.While the code constructions described in references [2] and [4] are limited to codes having an overall code rate less than or equal to 0.9, which is indicated by flash memory that only has a small extra storage area for storing the redundancy needed for the ECC is not applicable, the coding method according to the first aspect of the present invention enables high-rate GC codes with code rates above 0.9. Accordingly, such high-rate GC codes can be used to encode data to be stored in memories, such as flash memories, which provide only a small amount of extra storage space. Although in the lowest nesting level only SPC is used instead of higher BCH codes, comparable ECC error correction levels can be achieved and thus the efficiency (code rate) of the code can be increased. In other words, the efficiency of such memories in terms of their storage capacity for user data can be improved due to the increased code rate.

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.Preferred embodiments of the coding method according to the first aspect are described below, which can be combined with one another or with the other aspects of the invention as desired, unless such a combination is expressly excluded or technically impossible.

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.
According to a first preferred embodiment, applying error correction coding comprises:
  • (i) Arranging the data to be encoded in a two-dimensional data matrix with a first dimension na corresponding to the length of the outer RS codes and a second dimension n b corresponding to the length of the inner extended BCH codes, where a line the first dimension of a matrix is a row of the matrix and a line of its second dimension is a column of the matrix, or vice versa, and the outer RS codes are defined over a Galois field GF(2 m1 ) such that m 1 elements of each line of the second dimension represent a symbol of the Galois field GF(2 m1 );
  • (ii) Applying the L outer RS codes to the corresponding L * m 1 lines of the first dimension of the data matrix, such that each of the L outer RS codes yields a codeword from the corresponding m 1 lines of the second dimension, and a total of L * m 1 Lines of the resulting intermediate matrix are protected by the outer RS codes, where m 1 is a positive integer, with preferably m 1 >1; and
  • (iii) subsequently applying the inner interleaved extended BCH codes to the lines of the second dimension of the intermediate matrix to obtain a codeword matrix containing the encoded data such that n b - L * m 1 lines of the first dimension of the codeword matrix for the coding redundancy of the inner nested extended BCH codes are used, and each line of the second dimension of the codeword matrix is equal to the sum of the L codewords of the individual nested extended BCH codes for that line.

Diese Ausführungsform ermöglicht eine besonders effiziente und klar strukturierte Implementierung des Verfahrens gemäß dem ersten Aspekt der vorliegenden Erfindung.This embodiment enables a particularly efficient and clearly structured implementation of the method according to the first aspect of the present invention.

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: b j = i = 0 L 1 b j ( i )

Figure DE102017107431B4_0001
wobei die Codeworte b j ( i )
Figure DE102017107431B4_0002
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.According to a related further preferred embodiment, the code word b j of the jth line of the second dimension of the code word matrix is determined by the following formula: b j = i = 0 L 1 b j ( i )
Figure DE102017107431B4_0001
where the code words b j ( i )
Figure DE102017107431B4_0002
are formed by encoding the symbols a j,i with the extended BCH codes B (i) of the i-th nesting level, where a j,i is the j-th symbol from m 1 bits of the i-th outer RS code A (i) along the first direction of the intermediate matrix and for this coding (L - i -1)*m 1 zero bits are appended to the symbol a j,i before or after it. In particular, this embodiment enables a simple, efficient and clearly structured implementation of the method because the addition of the zero bits means that the code words of both the outer RS codes and the extended BCH codes based thereon have a constant length.

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.According to a further preferred embodiment, the code rate of the first RS code word defined along the direction of the second dimension of the intermediate matrix (which corresponds to i=0 in the above sum) is lower than the code rate of the Lth RS code word defined along this direction (which corresponds to i = L -1 in the above sum). Accordingly, this can be used to further increase the overall code rate of the code without sacrificing its security level. Such a reduction of the code rates of the RS code words along the direction of the second dimension of the matrix is possible because on the decoding side the structure of the overall GCC code as it results from the decoding allows reuse of the decoding results of a given level i to Next level i+1 decoding allowed.

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 der folgenden Tabelle sein: j k b,j d b,j k a,j d a,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 According to another preferred embodiment, the inner extended BCH codes are defined over a Galois field GF (2 m2 ) and m 1 is different from m 2 , where m 2 is a positive integer. In a first preferred variant thereof, m 1 = 8 and m 2 = 6. In a second preferred variant, m 1 = 9 and m 2 = 7. The number of nesting levels for the inner extended BCH codes is special in this second variant preferably 13, so that n a = 152 and n b = 118. Furthermore, for each of said nesting levels j, the corresponding code dimension of the inner extended BCH code k b,j and its minimum Hamming distance db ,j as well as the corresponding code dimension k a ,j of the outer RS code and its minimum Hamming distance d a,j must be those from the following table: j k b,j d b,j k a,j d a,j 0 117 2 84 69 1 108 4 130 23 2 99 6 136 17 3 90 8th 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 2KB-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.The GC code according to this embodiment is particularly suitable for error correction in data storage in flash memory. Specifically, this GC code is adapted for 2KB information blocks, i. H. for a code that can be used to store 2 KB of data and an additional 4 bytes of meta information. This applies in particular to the second variant mentioned, including when it is implemented according to the table mentioned above.

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-Code(s) gehörenden SPC involviert werden müssen.According to a further preferred embodiment, in the step of applying the inner nested extended BCH codes to the lines of the second dimension of the intermediate matrix, at least in one of the nesting levels, preferably in the lowest nesting level, the single parity bit of the corresponding extended BCH code of this nesting level is off a predefined real subset of the bits of the corresponding line of the second dimension. In particular, this can lead to increased performance of the coding because fewer bits have to be involved in the calculation of the parity symbols or parity bits of the SPC belonging to the corresponding extended BCH code(s).

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.According to a further preferred embodiment, the method further comprises transferring the obtained encoded data to one or more storage devices for storing the data therein. Especially when--as described in the preferred embodiments explained above--the data to be encoded are arranged in a two-dimensional data matrix and the resulting encoded data are thus arranged in a corresponding two-dimensional array Len code word matrix are arranged, the received encoded data to be stored contain this code word matrix, at least in part.

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-Codes (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-Code (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.A second aspect of the present invention relates to a method for iterative error correction decoding of a codeword matrix based on generalized concatenated codes (GCC), where: the GCC consists of L inner interleaved binary extended Bose-Chaudhuri-Hocquenghem codes (BCH codes) and L outer codes, preferably constructed from Reed-Solomon codes (RS codes), where L ≥ 2 is a positive integer; the extended BCH code at the lowest nest level of the inner nested BCH codes is only a single parity check (SPC) code; and the extended BCH code of at least one higher nest level of the inner nested BCH codes has an error correction capability and is a subcode of the BCH code of the lowest nest level.

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 Start 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.
The decoding process features:
  • (i) a first iteration, corresponding to the lowest nesting level of the inner extended BCH codes of the codeword matrix, comprising the following steps:
    • - Applying an SPC decoding to the lines of the second dimension of the codeword matrix with respect to the lowest nesting level of the inner nested extended BCH codes in which the lines of a second dimension of the codeword matrix are encoded to obtain a preliminary decoding data matrix of the first iteration and detect erasure information , which characterize the lines of the second dimension of the codeword matrix in which an erasure was detected based on the SPC decoding;
    • - extracting the information bits contained in the lines of the second dimension of the preliminary decoding data matrix of the first iteration in order to recover code symbols of the outer RS codes in which the lines of a first dimension of the codeword matrix are encoded;
    • - applying an RS decoding corresponding to the respective RS codes used to generate the original codeword matrix during encoding to the recovered RS symbols in the first dimension lines of the first iteration preliminary decoding data matrix to obtain a partial decoding result matrix the first iteration, wherein the erasure information is used during RS decoding to identify erroneous RS symbols in the preliminary first iteration decoding data matrix;
    • - recoding the partial decoding result matrix of the first iteration by applying an SPC coding to the second dimension of this matrix to obtain a recoded matrix of the first iteration; and
    • - subtracting the recoded matrix of the first iteration from the codeword matrix to obtain a starting matrix for a subsequent further iteration; and
  • (ii) for each of the further nesting levels of the inner extended BCH codes of the codeword matrix, a corresponding further iteration with the following steps:
    • - Applying extended BCH decoding to the lines of the second dimension of the current iteration's start matrix with respect to the current nesting level of the inner nested extended BCH codes in which the lines of a second dimension of the start matrix of the current iteration are encoded, by a preliminary decoding data matrix get the current iteration;
    • - extracting the information bits contained in the lines of the second dimension of the preliminary decoding data matrix of the current iteration in order to recover code symbols of the outer RS codes in which the lines of a first dimension of the codeword matrix are encoded;
    • - applying an RS decoding corresponding to the respective RS codes used to generate the original codeword matrix during encoding to the recovered code symbols in the first dimension lines of the current iteration's preliminary decoding data matrix to obtain a partial decoding result matrix of the get current iteration;
    • - if the current iteration corresponds to the highest nesting level of the inner nested extended BCH codes in the codeword matrix, outputting the partial decoding result matrix of the current iteration as a decoding-resultant data matrix, and
    • - otherwise, recoding the partial decoding result matrix of the current iteration by applying an extended BCH coding corresponding to the current nesting level to the second dimension of this matrix to obtain a recoded matrix of the current iteration; and subtracting the recoded matrix of the current iteration from the starting matrix of the current iteration to get a starting matrix for a subsequent further iteration.

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 BCHbasierten Iterationen.In this way, this method enables the decoding of ECC encoded data arranged in a codeword matrix, which is obtainable by applying the matrix-based preferred embodiments of the coding methods described herein. This method enables increased code rates, in particular even code rates above 0.9. This becomes achievable because due to the interaction of the SPC decoding and the BCH coding in the first iteration, the erasure information during the RS decoding is used to identify erroneous RS symbols in the preliminary decoding data matrix of the first iteration, the reduction of the parity symbols, which now only refer to an SPC coding instead of a BCH coding for the lowest interleaving level, creates additional space for data within the code without increasing the overall length of the GCC code or its security level, in particular its error correction ability, to affect. In addition, performance improvements are even made possible because the processing of the SPC-based first iteration is less complex than the other BCH-based iterations.

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.According to a preferred embodiment of this decoding method, for at least one of the further iterations: (i) the step of applying the extended BCH decoding further comprises detecting erasure information characterizing lines of the second dimension of the starting matrix of the current iteration in which based an erasure was detected on SPC decoding of an SPC parity bit contained in the extended BCH code of the current iteration; and (ii) in the step of applying RS decoding, said current iteration erasure information is used during RS decoding to identify erroneous RS symbols in the preliminary decoding data matrix of the current interaction. In this way, the concept of the interaction between the SPC decoding and the BCH decoding can be further expanded. In particular, this can lead to further improvements in performance and/or code rate by using extended BCH codes of a higher code dimension k, i. H. with less redundancy overhead.

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.A third aspect of the present invention relates to a coding device, in particular a semiconductor device having a memory controller. The coding device is set up to carry out the coding method according to the first aspect and/or the decoding method according to the second aspect, each preferably according to one or more of the preferred embodiments described herein.

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.According to a preferred embodiment thereof, the coding device has one or more processors, a memory and one or more programs stored in the memory which, when executed on the one or more processors, cause the coding device, said coding method and/or said perform the decoding process.

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.A fourth aspect of the present invention relates to a computer program which contains instructions which cause a coding device, preferably the coding device according to the third aspect, to carry out the coding method according to the first aspect and/or the decoding method according to the second aspect, the coding device and each of the said methods are preferably formed in accordance with one or more of their associated preferred embodiments described herein.

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.The computer program can be implemented in particular in the form of a data carrier on which one or more programs for executing the method or methods are stored. This is preferably a data carrier in the form of a CD, a DVD or a flash memory module. This may be advantageous when the program is intended to be traded as a distinct product independent of the processor platform on which the one or more programs are to be executed. In another implementation, the computer program is provided as a file on a data processing unit, preferably on a server, and can be downloaded via a data connection, for example via the Internet or a dedicated data connection, for example via a proprietary or local area network.

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.Accordingly, the properties and advantages described here of the methods according to the first and/or the second aspect of the invention also apply mutatis mutandis to the coding device according to the third aspect and the computer program according to the fourth aspect.

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 2t 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 decodiert werden (vgl. [4]). Des Weiteren können die GC-Codes Zuverlässigkeitsinformationen bezüglich des Kanals verwerten [17].In particular, the present invention enables high-rate codes. In addition, the use of extended BCH codes makes it possible to detect decoding errors in the inner codes. These errors can be using exploit the fact that the algebraic decoding methods for the relevant outer codes, especially for RS codes, can correct both errors and erasures. If outer RS decoding is configured to correct up to t errors, it can correct up to 2t erasures. Furthermore, these GC codes are basically able to correct burst errors. The proposed GC codes are well suited for error correction in flash memory for high reliability data storage because very low residual error probabilities can be achieved. The GC codes have a performance similar to that of pure BCH codes, but they can be decoded faster and with a lower decoder complexity (cf. [4]). Furthermore, the GC codes can use reliability information regarding the channel [17].

Figurenlistecharacter list

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.
Further advantages, features and possible applications of the present invention result from the following detailed description in connection with the attached figures, in which:
  • 1 Figure 12 schematically illustrates an encoding device in the form of a memory controller within a memory system, according to a preferred embodiment of the present invention;
  • 2 according to a preferred embodiment of the present invention, schematically illustrates a coding scheme for the transformation of a data matrix, which contains information to be coded, into a corresponding codeword matrix;
  • 3 according to a preferred embodiment of the invention, schematically shows a simplified version of the coding scheme 2 illustrated in greater detail;
  • 4 according to a preferred embodiment of the present invention schematically illustrates a decoding scheme for a codeword matrix coded according to the coding scheme from 2 is available; and
  • 5 Figure 12 is a graph showing code rate versus signal-to-noise ratio for exemplary GC codes versus long BCH codes when algebraically decoded, in accordance with a preferred embodiment of the present invention.

DETAILLIERTE BESCHREIBUNG BEVORZUGTER AUSFÜHRUNGSFORMENDETAILED DESCRIPTION OF PREFERRED EMBODIMENTS

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. 1 FIG. 1 shows an exemplary memory system 1, which has a memory controller 2 and a memory device 3, which in particular can be a flash memory device, for example of the NAND type. The storage system 1 is connected to a host 4, such as a computer owning the storage system 1, via a set of address lines A1, a set of data lines D1 and a set of control lines C1. The memory controller 2 comprises a processing unit 2a and an internal memory 2b, typically of the embedded type, and is connected to the memory 3 via an address bus A2, a data bus D2 and a control bus C2. Accordingly, the host 4 has indirect read and/or write access to the memory 3 via its connections A1, D1 and C1 to the memory controller 2, which in turn can access the memory 3 directly via the buses A2, D2 and C2. Each of the sets of lines or buses A1, B1, C1, A2, B2 and C2 can be implemented using one or more individual communication lines.

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.The memory controller 2 is also configured as a coding device and is therefore arranged to carry out the coding and decoding methods of the present invention, in particular as described below with reference to FIG 2 until 4 described. For this purpose, the memory controller 2 can have a computer program stored in its internal memory 2B, which is configured to carry out one or more of these coding methods when it is executed on the processor unit 2a of the memory controller 2. As an alternative to this, the program can, for example, be stored in whole or in part in the memory 3 or in an additional program memory (not shown), or even be implemented by means of a hard-wired circuit.

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].The in the 2 until 4 The coding methods illustrated are based on the use of GC codes for error correction in memories, such as flash memories, which require high-rate codes. The GC codes are constructed from inner nested binary Bose-Chaudhuri-Hocquenghem (BCH) codes and outer Reed-Solomon (RS) codes. Extended BCH codes are used for the inner codes, where simple parity check codes are used on the first level of the GC code (cf. 2 and 3 ). This construction enables high rate GC codes. A corresponding decoding method for the GC codes is in 4 illustrated. A detailed basic discussion of GC codes can be found 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.Below is on 2 1, which illustrates the encoding process of a GC code in accordance with a preferred embodiment of the present invention. The GC code word is arranged in an n b × n a matrix, where na and n b are the lengths of the outer and inner codes, respectively. Coding starts with the outer codes. The rows are protected by L Reed-Solomon codes of length na , ie L denotes the number of levels. m elements of each column represent a symbol of the Galois field GF(2 m ). Accordingly, m adjacent rows form a codeword of an outer code A (i) , i=0,...,L-1. Note that the code rate of the outer codes increases from level to level. The outer codes protect Lm rows of the matrix. The remaining n b - Lm rows are used for redundancy of the inner codes.

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 )

Figure DE102017107431B4_0003
The shaded area in 2 illustrates the redundancies of the code components that are filled by the outer and inner coding. After the outer coding, the columns of the codeword matrix are coded with binary inner codes of length nb . Each column of the codeword matrix is the sum of L codewords from interleaved linear BCH codes. B ( L 1 ) B ( L 2 ) ... B ( 0 )
Figure DE102017107431B4_0003

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.Thus, a higher level code is a subcode of its predecessor, with the higher levels having higher error correction capabilities, ie t b , L-1 ≥ t b,L-2 ≥ ... ≥, t b,0 , where t b,i is the level i error correction capability. The code dimensions are k (0) =Lm, k (1) =(L-1)m,..., k (L-1) =m.

Das Codewort bj derj-ten Spalte ist die Summe der L Codeworte. b j = i = 0 L 1 b j ( i )

Figure DE102017107431B4_0004
The codeword b j of the j-th column is the sum of the L codewords. b j = i = 0 L 1 b j ( i )
Figure DE102017107431B4_0004

Diese Codeworte b j ( i )

Figure DE102017107431B4_0005
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.Those code words b j ( i )
Figure DE102017107431B4_0005
are formed by encoding the symbols a j,i with the corresponding subcode B (i) , where a j,i is the jth symbol (m bits) of the outer code A (i) . For this encoding, the symbol a j,i is prefixed with (L - i - 1)m zero bits. Note that the jth column bj is a codeword of B (0) because of the linearity of the interleaved codes.

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. 3 Figure 1 illustrates this coding scheme in more detail based on a simple exemplary case (Example 1) where L=2, m=3 and na = nb =7 is chosen. So in this example there are only L = 2 levels and with m 1 = m = 3 bits per symbol the outer RS codes are constructed over the Galois field GF(2 3 ), while for the sake of simplicity the inner extended BCH- Codes are defined via GF(2 1 ), ie m 2 =1. In a first step S1, a data structure, which represents an n b × n a matrix (here 7 × 7 matrix) D, is filled with data to be encoded, which consist of 24 information bits i 0 to i 23 . The filling scheme corresponds to that of the data matrix D in 2 . Accordingly, in the first level (i=0) the number of information bits is lower than in the second level (i=1) and the remaining prefixed bits of both levels are reserved for the redundancy that is added in a subsequent step S2 by means of the outer coding becomes. Each symbol has three adjacent bits of the same column, so for example in the fifth column of D, bits i 0 , i 3 and i 6 form a first symbol of the column and bits i 11 , i 16 i 21 form another symbol. In addition, the last row of the matrix D is reserved for redundancy, which is added by means of the inner coding in a further step S3.

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.In step S2 for outer coding, the information is encoded in each of the two levels i=0 and i=1 using a corresponding RS code, the code dimension of the outer RS code for level 0 being only k a (0) = 3, while the level 1 code dimension is increased to k a (1) =5. The outer coding in step S2 results in an intermediate matrix A having the code symbols a i,j , each of these symbols a i,j having m 1 = 3 bits and the rows of the matrix A being code words of the outer code.

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 the inner coding step S3, each of the symbols a i,j of the intermediate matrix A is individually coded by means of a corresponding inner code in the form of an extended BCH code B (i) . In the first level i=0, the corresponding extended BCH code B (0) is just a single parity check (SPC) code. Accordingly, as in 3 for the symbol a 4,0 exemplifies each symbol a 0, j of level 0 (j = 0, ..., 6) by prefixing (L - i-1)* m 1 , ie (2 - 0 - 1) *3 = 3 zero bits (i.e. "0" symbol) encoded before the symbol and applying an SPC code to the two symbols, which is added in the last row of the column, giving a resulting codeword b j (0) for column j and level 0.

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.In the second level i=1, the corresponding extended BCH code B (1) which, unlike the SPC code, has an error correction capability of 1 bit, is applied in each column of the matrix A to the corresponding symbol a j,1 . Since this is already the last level in this simple example, there is no need to prepend "0" symbols. Again an SPC code is applied to the resulting BCH codeword and added to the last row of the corresponding column j.

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 order to obtain the final GC codeword matrix C, column by column all of the individual codewords b j (i) of all levels are the of column j according to formula (2) above to obtain the corresponding codeword b j , which then represents column j of the resulting GC codeword matrix C, as again exemplified in 3 illustrated for column j = 4.

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 2KB-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.In another example (Example 2) that goes to 2 Correspondingly, we consider a GC code suitable for error correction in flash memory. The GC code is designed for 2KB information blocks, ie it is a code that can be used to store 2KB of data and an additional 4 bytes of meta information. For this GC code we use L = 13 levels with inner nested BCH codes over GF(2 7 ), ie m 2 = 7, and outer RS codes over GF(2 9 ) (ie m 1 = 9). In the first level i = 0 we apply simple parity check codes SPC. Thus all inner codes are extended BCH codes of length n b = 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 I zusammengefasst, wobei wir in jeder der Ebenen 4 bis 12 dieselben RS-Codes verwenden. Der Code hat insgesamt die Codedimension k = m j = 0 L 1 k a , j = 16416

Figure DE102017107431B4_0006
und die Länge n = na · nb = 17936. TABELLE I j k b,j d b, j K a,j d a,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
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.The outer RS codes are constructed over the Galois field GF(2 9 ). Thus the code dimension of the inner codes is reduced by m 1 = 9 bits from level to level. The GC code is constructed from L=13 outer RS codes of length na =152. The parameters of the codes are summarized in Table I, where we use the same RS codes in each of levels 4 to 12. The code as a whole has the code dimension k = m j = 0 L 1 k a , j = 16416
Figure DE102017107431B4_0006
and the length n = n a n b = 17936. TABLE I j k b,j db , j K a,j d a,j 0 117 2 84 69 1 108 4 130 23 2 99 6 136 17 3 90 8th 142 11 4-12 81 12 148 5
Parameters of the example code. k b,j and db , j are the code dimension and minimum Hamming distance of the binary inner code of level j. k a,j and d a,j are the code dimension and minimum Hamming distance of the outer 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.This code has a code rate R = 0.915. It is also able to correct burst errors. The minimum distance of all outer RS codes is greater than or equal to 5. Consequently, each of the outer codes can correct at least two erroneous symbols, and thus two columns of the codeword matrix can be corrupted by any number of errors.

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. 4 FIG. 12 illustrates, according to a preferred embodiment of the present invention, a corresponding decoding scheme for a codeword matrix r, which in principle is produced by means of the coding scheme 2 is available. In fact, the codeword matrix r to be decoded may differ from the original codeword matrix C, as derived from the application of the coding scheme 2 may be different if the data to be encoded has previously been encoded (e.g. before being stored in a memory) by means of one or more erroneous symbols caused by an unintentional modification of the original codeword matrix C. Such a modification could be caused, for example, by one or more faulty memory cells within the memory device, by memory degradation, by write/read disturbs, or other influences on the data.

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 â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.The decoder, eg the coding device in the memory controller 2 1 , processes the received data matrix r level by level, starting with i = 0 up to the last level i = n, with n = L-1, where i is the index of the current level. 4 Figure 12 depicts the decoding steps Si-1 to Si-5. First, the columns of the data matrix r are decoded (Si-1) with respect to B (i) and information bits have to be extracted (de-mapping, Si -2) to form the code symbols a i ,j from A (i) , where j is the column index. When all symbols of code A (i) have been extracted, the RS code can be decoded (Si-3). At this point a partial decoding result â i is available. Finally, this result must be recoded (Si-4) using B (i ). The inner code B (i) estimated codewords are subtracted (Si-5) from the codeword matrix before the next level can be decoded.

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.A similar coding and decoding process is also described in detail in [14]. However, in deviation from this, according to the present invention, in the first level i=0 only error detection can be applied for the simple parity check codes (S0-1). The simple parity check code can detect any odd weight error. If an error is detected in column j, the corresponding symbol a 0,j is considered an erasure. After evaluating the error in the simple parity check code, erasure decoding can be applied to the RS code (cf. [15]). Starting with the second level, the structure of the interleaved BCH codes can be exploited, ie a BCH code can be decoded that can correct a single bit error per codeword due to the expansion of the BCH code any error of weight 2 can be detected . In this In this case, an inner code decoding error is declared, considering the inner code decoding errors as deleted symbols of the RS code. Accordingly, error and erasure decoding are used at all levels of the RS code.

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. 5 1 illustrates the error correction performance of an exemplary GC code according to the present invention. More specifically, it shows a plot of code rate versus noise-to-signal ratio SNR (“E b /N 0 ”) for the example GC code versus long BCH codes when algebraically decoded. The code rate required to guarantee a total block error rate of less than 10 -16 for a given error probability in the channel is used as a performance measure. The comparison clearly shows that the achievable code rate of the GC codes is higher than the code rate of the long BCH codes across almost all values of SNR.

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 / 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.All of the individual codes of this example GC code are constructed similar to the code presented in Example 2 above. In particular, the inner codes are chosen according to Table / above, while the error correction capability of the outer codes is adjusted to obtain the highest possible code rate for an error probability in the channel. It should be noted that in this example, due to the choice of the inner codes, the overall code rate of the GC code is at most R=0.99. In contrast, the codes described in [2], [4] only have a code rate of 0.9 or below.

LITERATURANGABENREFERENCES

  • [1] 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.[1] A. Fahrner, H. Griesser, R. Klarer, and V. Zyablov, "Low-complexity GEL codes for digital magnetic storage systems," IEEE Transactions on Magnetics, Vol. 40, No. 4, pp. 3093- 3095, July 2004.
  • [2] 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.[2] J. Freudenberger, U. Kaiser, and J. Spinner, "Concatenated code constructions for error correction in non-volatile memories," in Int. Symposium on Signals, Systems, and Electronics (ISSSE), Potsdam, October 2012, pp. 1-6.
  • [3] 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.[3] J. Freudenberger, J. Spinner, and 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, pp. 1-5.
  • [4] J. Spinner und J. Freudenberger, „Decoder architecture for generalized concatenated codes,“ IET Circuits, Devices & Systems, Bd. 9, Nr. 5, S. 328-335, 2015.[4] J. Spinner and J. Freudenberger, "Decoder architecture for generalized concatenated codes," IET Circuits, Devices & Systems, Vol. 9, No. 5, pp. 328-335, 2015.
  • [5] I. Dumer, Concatenated codes and their multilevel generalizations, in Handbook of Coding Theory, Bd. II, Elsevier, Amsterdam, 1998.[5] I. Dumer, Concatenated codes and their multilevel generalizations, in Handbook of Coding Theory, Vol. II, Elsevier, Amsterdam, 1998.
  • [6] M. Bossert, Channel coding for telecommunications, Wiley, 1999.[6] M. Bossert, Channel coding for telecommunications, Wiley, 1999.
  • [7] 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.[7] V Zyablov, S Shavgulidze, and M Bossert, "An introduction to generalized concatenated codes," European Transactions on Telecommunications, vol. 10, no. 6, pp. 609-622, 1999.
  • [8] R. Micheloni, A. Marelli, und R. Ravasio, Error Correction Codes for Non-Volatile Memories, Springer, 2008.[8] R Micheloni, A Marelli, and R Ravasio, Error Correction Codes for Non-Volatile Memories, Springer, 2008.
  • [9] 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.[9] Zhang X and Parhi KK, "High-speed architectures for parallel long BCH encoders," IEEE Transactions on Very Large Scale Integration (VLSI) Systems, Vol. 13, No. 7, pp. 872-877, 2005.
  • [10] 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.[10] F Sun, S Devarajan, K Rose, and T Zhang, "Design of on-chip error correction systems for multilevel NOR and NAND flash memories," IET Circuits, Devices Systems, Vol. 1, No. 3, pp. 241-249, June 2007.
  • [11] 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.[11] E Yaakobi, J Ma, L Grupp, P Siegel, S Swanson, and J Wolf, "Error characterization and coding schemes for flash memories," in IEEE GLOBECOM Workshops, Dec 2010, p. 1856-1860.
  • [12] E. Yaakobi, L. Grupp, P. Siegel, S. Swanson, und J. Wolf, „Characterization and errorcorrecting codes for TLC flash memories,“ in Computing, Networking and Communications (ICNC), 2012 International Conference on, Jan. 2012, S. 486-491.[12] E Yaakobi, L Grupp, P Siegel, S Swanson, and J Wolf, "Characterization and error-correcting codes for TLC flash memories," in Computing, Networking and Communications (ICNC), 2012 International Conference on, Jan 2012, pp. 486-491.
  • [13] 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.[13] J. Freudenberger and J. Spinner, "A configurable Bose-Chaudhuri-Hocquenghem codec architecture for flash controller applications," Journal of Circuits, Systems, and Computers, Vol. 23, No. 2, pp. 1-15, Feb 2014.
  • [14] 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.[14] J. Spinner and 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, p. 1-16
  • [15] 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.[15] L. Weiburn and 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, Vol. 3, May 1998, pp. 1930-1934 Vol.3.
  • [16] 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.[16] U. Wachsmann, R. Fischer, and J. Huber, "Multilevel codes: theoretical concepts and practical design rules," IEEE Transactions on Information Theory, Vol. 45, No. 5, pp. 1361-1391, July 1999 .
  • [17] J. Spinner und J. Freudenberger, „Soft input decoding of generalized concatenated codes using a stack decoding algorithm,“ in Proceedings of 2nd BW-CAR Symposium on Information and Communication Systems (SlnCom), Dez. 2015, S. 1-5.[17] J. Spinner and J. Freudenberger, "Soft input decoding of generalized concatenated codes using a stack decoding algorithm," in Proceedings of 2nd BW-CAR Symposium on Information and Communication Systems (SlnCom), Dec. 2015, p. 1 -5.

BezugszeichenlisteReference List

11
Speichersystemstorage system
22
Speichercontroller, einschließlich CodierungsvorrichtungMemory controller including encoding device
2a2a
Prozessoreinheitprocessor unit
2b2 B
eingebetteter (embedded) Speicher des Speichercontrollersembedded memory of the memory controller
33
nichtflüchtiger Speicher, insbesondere Flashspeichernon-volatile memory, in particular flash memory
44
Hosthost
A1A1
Adressleitung(en)address line(s)
D1D1
Datenleitung(en)data line(s)
C1C1
Steuerleitung(en)control line(s)
A2A2
Adressbusaddress bus
D2D2
Datenbusdata bus
C2C2
Steuerbuscontrol bus

Claims (14)

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 BCH-Codes und L äußeren Codes, vorzugsweise 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 SPC-Code ist; 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; und „BCH-Code“ einen Bose-Chaudhuri-Hocquenghem Code bezeichnet, „RS-Code“ einen Reed-Solomon-Code bezeichnet und „SPC-Code“ einen Einfachparitätsprüfungscode bezeichnet.Method for error correction coding of data to be stored in a storage device (3), the method being carried out by a coding device (2) and error correction coding being applied to the data to generate coded data which is based on generalized concatenated codes, GCC, whereby: the GCC is constructed from L inner interleaved binary extended BCH codes and L outer codes, preferably RS codes, where L ≥ 2 is a positive integer; the extended BCH code at the lowest nest level of the inner nested BCH codes is an SPC code; the extended BCH code of at least one higher nest level of the inner nested BCH codes has an error correction capability and is a subcode of the BCH code of the lowest nest level; and "BCH code" denotes a Bose-Chaudhuri-Hocquenghem code, "RS code" denotes a Reed-Solomon code, and "SPC code" denotes a single parity check code. 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.procedure according to claim 1 , wherein applying error correction coding comprises: arranging the data to be encoded in a two-dimensional data matrix (D) with a first dimension na corresponding to the length of the outer RS codes and a second dimension n b corresponding to the length of the inner extended ones Correspond to BCH codes where a line of the first dimension of a matrix (D) is a row of the matrix (D) and a line of its second dimension is a column of the matrix (D), or vice versa, and the outer RS codes over a Galois -field GF(2 m1 ) are defined such that m 1 elements of each line of the second dimension represent a symbol of the Galois field GF(2 m1 ); Applying the L outer RS codes to the corresponding L * m 1 lines of the first dimension of the data matrix (D) such that each of the L outer RS codes yields a codeword from the corresponding m 1 lines of the second dimension, and a total of L* m 1 lines of the resulting intermediate matrix (A) are protected by the outer RS codes, where m 1 is a positive integer; and subsequently applying the inner interleaved extended BCH codes to the second dimension lines of the intermediate matrix (A) to obtain a codeword matrix (C) containing the encoded data such that n b - L * m 1 first dimension lines of the codeword matrix (C) are used for the coding redundancy of the inner interleaved extended BCH codes, and each line of the second dimension of the codeword matrix is equal to the sum of the L codewords of the individual interleaved extended BCH codes for that line. Verfahren gemäß Anspruch 2, wobei das Codewort bj der j-ten Linie der zweiten Dimension der Codewortmatrix durch die folgende Formel bestimmt ist: b j = i = 0 L 1 b j ( i )
Figure DE102017107431B4_0007
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.
procedure according to claim 2 , where the codeword b j of the j-th line of the second dimension of the codeword matrix is determined by the following formula: b j = i = 0 L 1 b j ( i )
Figure DE102017107431B4_0007
where the codewords b j (i) are formed by encoding the symbols a j,i with the extended BCH codes B (i) of the i-th nesting level, where a j,i is the j-th symbol of m 1 bits of the i-th outer RS code A (i) along the first direction of the intermediate matrix and for this coding (L - i -1)*m 1 zero bits are appended to the symbol a j,i before or after it.
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.procedure according to claim 2 or 3 , wherein the code rate of the first RS codeword defined along the direction of the second dimension of the intermediate matrix (A) is lower than the code rate of the Lth RS codeword defined along this direction. 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.Method according to one of claims 2 until 4 , where the inner extended BCH codes are defined over a Galois field GF(2 m2 ) and m 1 of m 2 is different, where m 2 is a positive integer. Verfahren gemäß Anspruch 5, wobei m 1 = 8 u n d m 2 = 6,
Figure DE102017107431B4_0008
oder m 1 = 9 u n d m 2 = 7.
Figure DE102017107431B4_0009
procedure according to claim 5 , whereby m 1 = 8th and n i.e m 2 = 6,
Figure DE102017107431B4_0008
or m 1 = 9 and n i.e m 2 = 7.
Figure DE102017107431B4_0009
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 k b,j d b,j k a,j d a,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
procedure according to claim 6 , where m 1 = 9 and m 2 = 7 and the number of nesting levels for the inner extended BCH codes is 13, so n a = 152 and n b = 118; and for each of said nesting levels j the corresponding code dimension of the inner extended BCH code k b,j and its minimum Hamming distance db ,j and the corresponding code dimension k a,j of the outer RS code and its minimum Hamming distance d a,j those from the following table are: j k b,j d b,j k a,j d a,j 0 117 2 84 69 1 108 4 130 23 2 99 6 136 17 3 90 8th 142 11 4-12 81 12 148 5
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.Method according to one of claims 2 until 7 , wherein in the step of applying the inner interleaved extended BCH codes to the lines of the second dimension of the intermediate matrix (A), at least in one of the nesting levels, the single parity bit of the corresponding extended BCH code of that nesting level is selected from a predefined true subset of the bits of the corresponding line of the second dimension is calculated. 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.A method according to any one of the preceding claims, further comprising transferring the obtained encoded data to one or more storage devices for storing the data therein. Verfahren zum iterativen Fehlerkorrektur-Decodieren einer auf verallgemeinerten verketteten Codes, GCC, beruhenden Codewortmatrix (r) wobei: Der GCC aus L inneren verschachtelten binären erweiterten BCH-Codes und L äußeren Codes, vorzugsweise 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 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 „BCH-Code“ einen Bose-Chaudhuri-Hocquenghem Code bezeichnet, „RS-Code“ einen Reed-Solomon-Code bezeichnet und „SPC-Code“ einen Einfachparitätsprüfungscode bezeichnet; und 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 (aij) 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 Start 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.Method for iterative error correction decoding of a codeword matrix (r) based on generalized concatenated codes, GCC, where: The GCC is constructed from L inner interleaved binary extended BCH codes and L outer codes, preferably RS codes, where L ≥ 2 a is a positive integer; the extended BCH code at the lowest nest level of the inner nested BCH codes is only an SPC code; and the extended BCH code of at least one higher nest level of the inner nested BCH codes has an error correction capability and is a subcode of the BCH code of the lowest nest level; where “BCH code” denotes a Bose-Chaudhuri-Hocquenghem code, “RS code” denotes a Reed-Solomon code, and “SPC code” denotes a single parity check code; and wherein the decoding method comprises: a first iteration corresponding to the lowest nesting level of the inner extended BCH codes of the codeword matrix (r) and comprising the following steps: - applying an SPC decoding to the lines of the second dimension of the codeword matrix (r) regarding the lowest nesting level of the inner nested extended BCH codes in which the lines of a second dimension of the codeword matrix (r) are encoded, to obtain a preliminary decoding data matrix of the first iteration and to determine erasure information characterizing the lines of the second dimension of the codeword matrix, in which an erasure was detected based on SPC decoding; - extracting the information bits contained in the lines of the second dimension of the preliminary decoding data matrix of the first iteration in order to recover code symbols (aij) of the outer RS codes in which the lines of a first dimension of the codeword matrix (r) are encoded; - applying an RS decoding corresponding to the respective RS codes used to generate the original codeword matrix (C) during encoding to the recovered RS symbols in the first dimension lines of the preliminary decoding data matrix of the first iteration, to obtain a first iteration partial decoding result matrix, wherein the erasure information is used during RS decoding to identify erroneous RS symbols in the preliminary first iteration decoding data matrix; - recoding the partial decoding result matrix of the first iteration by applying an SPC coding to the second dimension of this matrix to obtain a recoded matrix of the first iteration; and - subtracting the recoded matrix of the first iteration from the codeword matrix (r) to obtain a starting matrix for a subsequent further iteration; and for each of the further nesting levels of the inner extended BCH codes of the codeword matrix (r), a corresponding further iteration with the following steps: - applying the extended BCH decoding to the lines of the second dimension of the start matrix of the current iteration with respect to the current nesting level the inner nested extended BCH codes in which the lines of a second dimension of the starting matrix of the current iteration are encoded to obtain a preliminary decoding data matrix of the current iteration; - extracting the information bits contained in the lines of the second dimension of the preliminary decoding data matrix of the current iteration in order to recover code symbols of the outer RS codes in which the lines of a first dimension of the codeword matrix are encoded; - applying an RS decoding, corresponding to the corresponding RS codes used to generate the original codeword matrix (C) during encoding, to the recovered code symbols in the first dimension lines of the current iteration's preliminary decoding data matrix, in order to obtain a partial decoding result matrix of the current iteration; - if the current iteration corresponds to the highest nesting level of the inner nested extended BCH codes in the codeword matrix (r), output the current iteration's partial decoding result matrix as a decoding-resultant data matrix, and - otherwise, re-encode the current iteration's partial decoding result matrix applying an extended BCH coding corresponding to the current nesting level to the second dimension of this matrix to obtain a back-coded matrix of the current iteration; and subtracting the recoded matrix of the current iteration from the starting matrix of the current iteration to obtain a starting matrix for a subsequent further iteration. 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.procedure according to claim 10 , wherein for at least one of the further iterations: the step of applying the extended BCH decoding further comprises detecting erasure information characterizing lines of the second dimension of the starting matrix of the current iteration in which based on the SPC decoding one in the extended BCH code of the current iteration contained SPC parity bits an erasure was detected; and in the step of applying RS decoding, said current iteration erasure information is used during RS decoding to identify erroneous RS symbols in the preliminary decoding data matrix of the current interaction. 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.Coding device (2), in particular a semiconductor device with a memory controller, wherein the coding device is set up, the coding method according to one of Claims 1 until 9 ; and/or the decoding method according to claim 10 or 11 to execute. 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.Coding device (2) according to claim 12 , comprising: one or more processors (2a); a memory (2b); and one or more programs stored in the memory (2b, 3) which, when executed on the one or more processors (2a), cause the coding device to use the coding method according to one of Claims 1 until 9 and/or the decoding method according to claim 10 or 11 to execute. 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.Computer program containing instructions that a coding device (2), in particular the coding device (2) according to claim 12 or 13 , cause the coding method according to one of Claims 1 until 9 and/or the decoding method according to claim 10 or 11 to execute.
DE102017107431.7A 2016-05-13 2017-04-06 Methods and devices for error correction coding based on high rate generalized concatenated codes Active DE102017107431B4 (en)

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 DE102017107431A1 (en) 2017-11-16
DE102017107431B4 true DE102017107431B4 (en) 2022-05-25

Family

ID=81452845

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017107431.7A Active DE102017107431B4 (en) 2016-05-13 2017-04-06 Methods and devices for error correction coding based on high rate generalized concatenated codes

Country Status (1)

Country Link
DE (1) DE102017107431B4 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017110389B4 (en) 2016-05-13 2020-02-13 Hyperstone Gmbh Method and decoder for soft input decoding of generalized chained codes

Citations (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

Patent Citations (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

Also Published As

Publication number Publication date
DE102017107431A1 (en) 2017-11-16

Similar Documents

Publication Publication Date Title
DE102017110389B4 (en) Method and decoder for soft input decoding of generalized chained codes
DE102015201384B4 (en) Apparatus and method for improving data storage by data inversion
DE112012000385B4 (en) Correct erasures in storage arrays
DE112011101116B4 (en) Two-level BCH codes for solid-state storage devices
DE102017103347B4 (en) PROCESSING OF DATA IN MEMORY CELLS OF A MEMORY
DE102011085602B4 (en) Apparatus and method for correcting at least one bit error in a coded bit sequence
DE102007038114A1 (en) Error correction circuit for correction of error in memory cell e.g. read only memory, has main control unit is formed for determining definite error location based on error type and output is determined by two error locating detectors
DE102007058828A1 (en) Memory element for error corection, has error examination and correction coder for producing syndrome data, which is based on information data and for display of coded data
DE102013215055A1 (en) Circuit arrangement and method with modified error syndrome for error detection of permanent errors in memories
DE3231956A1 (en) ARRANGEMENT FOR TRANSMITTING BINARY DATA ON A VARIETY OF CHANNELS WITH THE AID OF A FOLDING CODE
DE102013016681B4 (en) Encoding and decoding data to make adjustments for memory cells with stuck faults
EP0545498B1 (en) Method and circuit for decoding RS-coded data signals
DE112012006014T5 (en) Distributed code word parts
DE102005022107B4 (en) Apparatus and method for determining a position of a bit error in a bit string
DE102015215401A1 (en) A memory device and method for correcting a stored bit string
DE112011101852T5 (en) Decode LDPC code
DE102014215252A1 (en) EFFECTIVE ERROR CORRECTION OF MULTI-BIT ERRORS
DE4105860A1 (en) Recognition and correction circuitry for faults in RS coded data blocks - has data word forward counter transmitting target value in determining zero position
DE3702574A1 (en) MEMORY ARRANGEMENT WITH THREE MODULES, WITH SYMBOL-WIDTH MEMORY CHIPS AND WITH AN ERROR PROTECTION, WHICH EACH SYMBOL CONSISTS OF 2 (ARROW UP) I (ARROW UP) +1 BITS
DE102017107431B4 (en) Methods and devices for error correction coding based on high rate generalized concatenated codes
DE102020110787B3 (en) CIRCUIT AND PROCEDURE FOR ENCODING OR DECODING A DATA WORD
DE112019001968B4 (en) COMMON CORRECTION LOGIC FOR HIGH AND LOW RANDOM BIT ERROR RATES
DE102019119753A9 (en) Generalized chained error correction coding scheme with locality
DE102013219088B9 (en) Circuit arrangement and method for realizing check bit compaction for cross-parity codes
DE102016104012A1 (en) Processing a data word

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