METHOD AND DEVICE FOR ERROR CORRECTION CODING BASED ON HIGH-RATE GENERALIZED CONCATENATED CODES
20170331498 · 2017-11-16
Inventors
Cpc classification
G11C29/52
PHYSICS
International classification
H03M13/25
ELECTRICITY
Abstract
Field error correction coding is particularly suitable for applications in non-volatile flash memories. We describe a method for error correction encoding of data to be stored in a memory device, a corresponding method for decoding a codeword matrix resulting from the encoding method, a coding device, and a computer program for performing the methods on the coding device, using a new construction for high-rate generalized concatenated (GC) codes. The codes, which are well suited for error correction in flash memories for high reliability data storage, are constructed from inner nested binary Bose-Chaudhuri-Hocquenghem (BCH) codes and outer codes, preferably Reed-Solomon (RS) codes. For the inner codes extended BCH codes are used, where only single parity-check codes are applied in the first level of the GC code. This enables high-rate codes.
Claims
1. A method of error correction encoding of data to be stored in a memory device, the method comprising: providing a coding device; using the coding device to subject the data to error correction encoding based on generalized concatenated coding (GCC) to obtain encoded data; wherein: the GCC is constructed from L inner nested binary extended Bose-Chaudhuri-Hocquenghem (BCH) codes and L outer codes, where L≧2 and L is a positive integer; an extended BCH code in a lowest nesting level of the inner nested BCH codes is a mere single parity-check (SPC) code; and an extended BCH code in at least one higher nesting level of the inner nested BCH codes has an error correction capability and is a sub-code of the BCH code of the lowest nesting level.
2. The method according to claim 1, wherein the outer codes are Reed-Solomon (RS) codes.
3. The method according to claim 2, wherein the step of applying the error correction encoding comprises: arranging the data to be encoded into a two-dimensional data matrix having a first dimension n.sub.a equal to a length of the outer RS codes and a second dimension n.sub.b equal to a length of the inner extended BCH codes, wherein a line of a first dimension of a matrix is a row of the matrix and a line of a second dimension thereof is a column of the matrix, or vice versa, and the outer RS codes are defined over a Galois-Field GF(2.sup.m1) with m.sub.1 elements of each line of the second dimension representing one symbol of the Galois-Field GF(2.sup.m1), wherein m.sub.1 is a positive integer; applying the L outer RS codes to respective L*m.sub.1 lines of the first dimension of the data matrix such that each of the L outer RS codes yields a codeword from respective m.sub.1 lines of the second dimension and in total L*m.sub.1 lines of the resulting intermediate matrix are protected by the outer RS codes; and thereafter applying the inner nested extended BCH codes to the lines of the second dimension of the intermediate matrix to obtain a codeword matrix comprising the encoded data, with n.sub.b−L*m.sub.1 lines of the first dimension of the codeword matrix being used for a coding redundancy of the inner nested extended BCH codes and each line of the second dimension of the codeword matrix being a sum of the L codewords of the individual nested extended BCH codes for the respective line.
4. The method according to claim 3, wherein a codeword b.sub.j of a j-th line of the second dimension of the codeword matrix is determined by the following formula:
5. The method according to claim 3, wherein the code rate of the first RS codeword defined along the direction of the second dimension of the intermediate matrix is lower than the code rate of the L.sup.th RS codeword defined along that direction.
6. The method according to claim 3, wherein the inner extended BCH codes are defined over a Galois-Field GF(2.sup.m2) and m.sub.1 is different from m.sub.2, and wherein m.sub.2 is a positive integer.
7. The method according to claim 6, wherein one of the following pairs is true: m.sub.1=8 and m.sub.2=6; or m.sub.1=9 and m.sub.2=7.
8. The method according to claim 6, wherein m.sub.1=9 and m.sub.2=7 and a number of nesting-levels for the inner extended BCH codes is 13, with n.sub.a=152 and n.sub.b=118; and for each of the nesting-levels j a corresponding code dimension of the inner extended BCH code k.sub.b,j and a minimum Hamming distance d.sub.b,j thereof as well as a corresponding code dimension k.sub.a,j of the outer RS code and a minimum Hamming distance d.sub.a,j thereof are provided by the following table: TABLE-US-00003 j k.sub.b,j d.sub.b,j k.sub.a,j d.sub.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
9. The method according to claim 3, wherein, in the step of applying the inner nested extended BCH codes to the lines of the second dimension of the intermediate matrix, calculating at least in one of the nesting levels the single parity bit of the respective extended BCH code of the one nesting level from a predefined strict subset of the bits of the respective line of the second dimension.
10. The method according to claim 1, which further comprises transmitting the encoded data to one or more memory devices and storing the encoded data in the one or more memory devices.
11. A method of iterative error correction decoding of a codeword matrix based on generalized concatenated coding (GCC), wherein: the GCC is constructed from L inner nested binary extended Bose-Chaudhuri-Hocquenghem (BCH) codes and L outer codes, where the outer codes are Reed-Solomon (RS) codes, L is a positive integer, and L≧2; the extended BCH code in a lowest nesting-level of the inner nested BCH codes is a mere single parity-check (SPC) code; and the extended BCH code in at least one higher nesting-level of the inner nested BCH codes has an error correction capability and is a sub-code of the BCH code of the lowest nesting level; the decoding method comprising: a first iteration corresponding to the lowest nesting level of the inner extended BCH codes of the codeword matrix and having the following steps: applying 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 in order to obtain an intermediate decoding data matrix of the first iteration and to determine erasure information characterizing lines of the second dimension of the codeword matrix in which an erasure has been detected based on the SPC-decoding; inferring the information bits contained in the lines of the second dimension of the intermediate decoding data matrix of the first iteration in order to retrieve code symbols of the outer RS codes in which the lines of a first dimension of the codeword matrix are encoded; applying RS-decoding corresponding to the respective RS codes used for obtaining the original codeword matrix during encoding, to the retrieved code symbols in the lines of the first dimension of the intermediate decoding data matrix of the first iteration in order to obtain a partial decoding result matrix of the first iteration, wherein the erasure information is used during RS-decoding to identify erroneous RS-symbols in the intermediate decoding data matrix of the first iteration; re-encoding said partial decoding result matrix of the first iteration by applying SPC-encoding to the second dimension of this matrix to obtain a re-encoded matrix of the first iteration; and subtracting the re-encoded matrix of the first iteration from the codeword matrix in order to obtain a start matrix for a subsequent further iteration; and for each of the further nesting levels of the inner extended BCH codes of the codeword matrix, a respective further iteration having the following steps: applying extended BCH-decoding to the lines of the second dimension of the start matrix of the present iteration with respect to the present nesting level of the inner nested extended BCH codes in which the lines of a second dimension of the start matrix of the present iteration are encoded in order to obtain an intermediate decoding data matrix of the present iteration; inferring the information bits contained in the lines of the second dimension of the intermediate decoding data matrix of the present iteration in order to retrieve code symbols of the outer RS codes in which the lines of a first dimension of the codeword matrix are encoded; applying RS-decoding corresponding to the respective RS codes used for obtaining the original codeword matrix during encoding, to the retrieved code symbols in the lines of the first dimension of the intermediate decoding data matrix of the present iteration in order to obtain a partial decoding result matrix of the present iteration; if the present 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 present iteration as a data matrix resulting from the decoding, and otherwise, re-encoding the partial decoding result matrix of the present iteration by applying extended BCH-encoding corresponding to the present nesting level to the second dimension of this matrix to obtain a re-encoded matrix of the present iteration, and subtracting the re-encoded matrix of the present iteration from the start matrix of the present iteration in order to obtain a start matrix for a subsequent further iteration.
12. The method according to claim 11, wherein in at least one of the further iterations: the step of applying extended BCH-decoding further comprises determining erasure information characterizing lines of the second dimension of the start matrix of the present iteration in which an erasure has been detected based on SPC-decoding a SPC-parity bit contained in the extended BCH code of the present iteration; and the step of applying RS-decoding comprises using the erasure information of the present iteration during RS-decoding to identify erroneous RS-symbols in the intermediate decoding data matrix of the present iteration.
13. A coding device, comprising a memory controller configured to perform the encoding method according to claim 1 or a corresponding decoding method.
14. The coding device according to claim 13, comprising: one or more processors; a memory connected to said one or more processors; and program code of one or more programs stored in said memory, said program code, when executed on said one or more processors, causing the coding device to perform the encoding method according to claim 1 or a corresponding decoding method.
15. A computer program product, comprising a non-transitory computer-readable medium storing computer-readable program code instructions configured to cause a coding device to perform the encoding method according to claim 1 or a corresponding decoding method.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0055]
[0056]
[0057]
[0058]
[0059]
DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS
[0060] Referring now to the figures of the drawing in detail and first, particularly, to
[0061] The memory controller 2 is also configured as a coding device and thus adapted to perform the encoding and decoding methods of the present invention, particularly as described below with reference to
[0062] The coding methods illustrated by
[0063] Reference is now made to
[0064] The shaded area in
B.sup.(L-1)⊂B.sup.(L-2)⊂ . . . ⊂B.sup.(0) (1)
[0065] Hence, a higher level code is a sub-code of its predecessor, where the higher levels have higher error correcting capabilities, i.e., t.sub.b,L-1≧t.sub.b,L-2≧ . . . ≧, t.sub.b,0, where t.sub.b,i is the error correcting capability of level i. The code dimensions are k.sup.(0)=Lm, k.sup.(1)=(L−1)m, . . . , k.sup.(L-1)=m.
[0066] The codeword b.sub.j of the j-th column is the sum of L codewords.
[0067] These codewords b.sub.j.sup.(i) are formed by encoding the symbols a.sub.j,i with the corresponding sub-code B.sup.(i), where a.sub.j,i is the j-th symbol (m bits) of the outer code A.sup.(i). For this encoding (L−i−1)m zero bits are prefixed onto the symbol a.sub.j,i. Note that the j-th column b.sub.j is a codeword of B.sup.(0), because of the linearity of the nested codes.
[0068]
[0069] In the outer encoding step S2, the information in each of the two levels i=0 and i=1 is encoded by a respective RS code, wherein the code dimension of the outer RS code for level 0 is only k.sub.a.sup.(0)=3 while the code dimension of level 1 is increased to k.sub.a.sup.(1)=5. Performing the outer encoding step S2 results in an intermediate matrix A comprising the code symbols a.sub.i,j, wherein each of these symbols a.sub.i,j comprises m.sub.1=3 bits and the rows of the matrix A are codewords of the outer code.
[0070] In the second level i=1, the respective extended BCH code B.sup.(1), which unlike the SPC code does have an error correction capability of 1 Bit, is applied in each column of the matrix A to the respective symbol a.sub.j,1. As in this simple example this is already the final level, no prefixing of “0” symbols is necessary. Again, an SPC code is applied to the resulting BCH codeword and added in the final row of the respective column j.
[0071] In order to arrive at the final GC codeword matrix C, on a column by column basis all of the individual codewords b.sub.j.sup.(i) of all levels i of column j are added according to formula (2) above in order to receive the corresponding codeword b.sub.j which then forms column j of the resulting GC codeword matrix C, as again exemplarily illustrated in
[0072] In a further example (Example 2) corresponding to
[0073] The outer RS codes are constructed over the Galois field GF (2.sup.9). Hence, the code dimension of the inner codes is reduced by m.sub.1=9 bits with each level. The GC code is constructed from L=13 outer RS codes of length n.sub.a=152. The parameters of the codes are summarized in Table I, where we use the same RS code in each of levels 4 to 12. The code has overall code dimension k=m Σ.sub.f=0.sup.L-1k.sub.a,j=16416 and length n=n.sub.a.Math.n.sub.b=17936.
[0074] In the inner encoding step S3 each of the symbols a.sub.i,j of the intermediate matrix A is individually encoded by a corresponding inner code in the form of an extended BCH code B.sup.(i). In the first level i=0, the respective extended BCH code B.sup.(0) is a mere Single Parity Check (SPC) code. Accordingly, as exemplarily illustrated in
TABLE-US-00002 TABLE I j k.sub.b,j d.sub.b,j k.sub.a,j d.sub.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
[0075] Table I shows parameters of the example code. In the table, k.sub.b,j and d.sub.b,j are the code dimension and minimum Hamming Distance of the binary inner code of level j. The terms k.sub.a,j and d.sub.a,j are the code dimension and minimum Hamming Distance of the outer RS codes.
[0076] This code has a code rate R=0.915. It is also able to correct burst errors. The minimum distance of all outer RS code is greater than or equal to five. Hence, each outer code can correct at least two erroneous symbols and consequently two columns of the codeword matrix may be corrupted by an arbitrary number of errors.
[0077]
[0078] The decoder, e.g. of the coding device in memory controller 2 of
[0079] A similar encoding and decoding process is also described in detail in [14]. However, in deviation thereof, according to the present invention in the first level i=0, only error detection for the single parity-check codes can be applied (S0-1). The single parity-check code can detect any error of odd weight. If an error is detected in column j, the corresponding symbol a.sub.0,j is considered an erasure. After the evaluation of the single parity-check codes error and erasure decoding for the RS code can be applied (cf. [15]). Starting with the second level, the structure of the nested-BCH codes can be exploited, i.e. a BCH code can be decoded that can correct a single bit error per codeword. Due to the extension of the BCH code any error of weight two can be detected. In this case, a decoding failure is declared for the inner code, where the decoding failures of the inner codes are regarded as erased symbols of the RS code. Hence, error and erasure decoding is used in all levels of the RS code.
[0080]
[0081] All individual codes of this exemplary GC code are constructed similar to the code presented in Example 2 above. In particular, the inner codes are chosen according to Table I above, whereas the error correcting capability of the outer codes is adapted to obtain the highest possible code rate for a channel error probability. Note that in this example, the overall code rate of the GC code is at most R=0.99, because of the choice of the inner code. In contrast, the codes presented in [2], [4] only have a code rate less than or equal to 0.9.
[0082] While above at least one exemplary embodiment of the present invention has been described, it has to be noted that a great number of variations thereto exists. Furthermore, it is appreciated that the described exemplary embodiments only illustrate non-limiting examples of how the present invention can be implemented and that it is not intended to limit the scope, the application or the configuration of the herein-described apparatus' and methods. Rather, the preceding description will provide the person skilled in the art with constructions for implementing at least one exemplary embodiment of the invention, wherein it is understood that various changes of functionality and the arrangement of the elements of the exemplary embodiment can be made, without deviating from the subject-matter defined by the appended claims and their legal equivalents.
REFERENCES
[0083] [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. [0084] [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. [0085] [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, February 2014, pp. 1-5. [0086] [4] J. Spinner and J. Freudenberger, “Decoder architecture for generalized concatenated codes,” IET Circuits, Devices & Systems, vol. 9, no. 5, pp. 328-335, 2015. [0087] [5] I. Dumer, Concatenated codes and their multilevel generalizations, in Handbook of Coding Theory, Vol. II, Elsevier, Amsterdam, 1998. [0088] [6] M. Bossert, Channel coding for telecommunications, Wiley, 1999. [0089] [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. [0090] [8] R. Micheloni, A. Marelli, and R. Ravasio, Error Correction Codes for Non-Volatile Memories, Springer, 2008. [0091] [9] X. Zhang and K. K. Parhi, “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. [0092] [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. [0093] [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, December 2010, pp. 1856-1860. [0094] [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, January 2012, pp. 486-491. [0095] [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, February 2014. [0096] [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, September 2014, pp. 1-16. [0097] [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. [0098] [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. [0099] [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), December 2015, pp. 1-5.
[0100] The following is a summary list of reference numerals and the corresponding structure used in the above description of the invention: [0101] 1 memory system [0102] 2 memory controller, including coding device [0103] 2a processing unit [0104] 2b embedded memory of memory controller [0105] 3 nonvolatile memory, particularly flash memory [0106] 4 host [0107] A1 address line(s) [0108] D1 data line(s) [0109] C1 control line(s) [0110] A2 address bus [0111] D2 data bus [0112] C2 control bus