## Making Error Correcting Codes Work for Flash Memory

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook Making Error Correcting Codes Work for Flash M...
Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Making Error Correcting Codes Work for Flash Memory Part II: Algebraic and Graph-based Codes with Applications to Flash Memory Lara Dolecek Laboratory for Robust Information Systems (LORIS) Center on Development of Emerging Storage Systems (CoDESS) Department of Electrical Engineering, UCLA

Flash Memory Summit 2013 Flash Memory Summit 2013, Santa Clara, CA

1 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Outline 1 2

3

4

5

Preliminaries Algebraic codes Algebra review BCH codes Algebraic codes for Flash Graph-based codes LDPC code construction Iterative Decoding LDPC codes for Flash Advanced Coding Approaches Graded algebraic codes Non-binary LDPC codes Summary and Outlook Flash Memory Summit 2013, Santa Clara, CA

2 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Concepts of interest *"+,-(.&//01&(

#\$%&2\$'%(

!"#\$%&'( 4(5*-/(

'&-'*&3&%(2\$'%(

"(5*-/(

%&#\$%&%(.&//01&(

)&#\$%&'(

6\$*/7(890""&:( "(5*-/(

4(5*-/(

A channel code C maps a message m of length k into a codeword c of length n, with n > k (encoder) Total number of codewords: 2k Code rate: R = k/n. Structure of C is used to determine the stored message (decoder). Flash Memory Summit 2013, Santa Clara, CA

3 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Concepts of interest Linear block code C of dimension k and codeword length n can be represented by a k × n generator matrix G a (n − k) × n parity check matrix H G specifies the range space of C and H specifies the null space of C . The two representations are mathematically equivalent.

Flash Memory Summit 2013, Santa Clara, CA

4 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Concepts of interest Linear block code C of dimension k and codeword length n can be represented by a k × n generator matrix G

mG = c

a (n − k) × n parity check matrix H G specifies the range space of C and H specifies the null space of C . The two representations are mathematically equivalent.

Flash Memory Summit 2013, Santa Clara, CA

4 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Concepts of interest Linear block code C of dimension k and codeword length n can be represented by a k × n generator matrix G

mG = c

a (n − k) × n parity check matrix H

cH T = 0

G specifies the range space of C and H specifies the null space of C . The two representations are mathematically equivalent.

Flash Memory Summit 2013, Santa Clara, CA

4 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Concepts of interest

Linear block codes can be divided in two categories: algebraic codes (BCH codes, Hamming codes, Reed-Solomon codes) graph-based codes (LDPC codes, Turbo codes) A good practical channel code should be able to correct as many transmission errors as possible be equipped with a simple decoding algorithm

Flash Memory Summit 2013, Santa Clara, CA

5 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Algebra review BCH codes Algebraic codes for Flash

Algebraic Codes

Flash Memory Summit 2013, Santa Clara, CA

6 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Algebra review BCH codes Algebraic codes for Flash

Brief review of finite fields Suppose q is prime. GF (q) can be viewed as the set {0, 1, . . . , q − 1}. Operations are performed modulo q. Example: GF (5) has elements {0, 1, 2, 3, 4} such that product 0 1 2 3 4

0 0 0 0 0 0

1 0 1 2 3 4

2 0 2 4 1 3

3 0 3 1 4 2

4 0 4 3 2 1

sum 0 1 2 3 4

0 0 1 2 3 4

Flash Memory Summit 2013, Santa Clara, CA

1 1 2 3 4 0

2 2 3 4 0 1

3 3 4 0 1 2

4 4 0 1 2 3 7 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Algebra review BCH codes Algebraic codes for Flash

Brief review of finite fields GF (q) can also be expressed as {α−∞ = 0, α0 = 1, α, α2 , . . . , αq−1 }, for suitably chosen α. Example: In GF (5): 0 → α−∞ , 1 → α0 , 2 → α, 3 → α3 and 4 → α2 Consider an element α of GF (q) such that α �= 0 and α �= 1.

Let s be the smallest positive integer such that αs = 1. Then, s is the order of α. If s = q − 1, then α is called a primitive element of GF (q). GF (q) is thus generated by powers of a primitive element α. Flash Memory Summit 2013, Santa Clara, CA

8 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Algebra review BCH codes Algebraic codes for Flash

Brief review of finite fields We are often interested in the extension field GF (q m ) of GF (q), where q is prime and m is a positive integer. m GF (q m ) is then {α−∞ = 0, α0 = 1, α, α2 , . . . , αq −1 }, where α denotes a primitive element of GF (q m ) and is a root of so-called primitive polynomial. Example: GF (8) = GF (23 ). Here, α is a root of the polynomial x 3 + x + 1. We then have α0 α1 α2 α3

= 1 = α = α2 = α+1

α4 α5 α6 α−∞

Flash Memory Summit 2013, Santa Clara, CA

= α2 + α 2 = α +α+1 = α2 + 1 = 0

9 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Algebra review BCH codes Algebraic codes for Flash

BCH code construction BCH code C is a linear, cyclic code described by a (d − 1) × n parity check matrix H with elements from GF (q m ) with α having order n:   1 αb α2b ··· α(n−1)b  1 αb+1 α2(b+1) · · · α(n−1)(b+1)    H= .  .. .. ..  ..  . . ··· . 1 αb+d−2 α2(b+d−2) · · ·

α(n−1)(b+d−2)

b is any (positive) integer and d is integer 2 ≤ d ≤ n.

Minimum distance of C is at least d. The code corrects at least t = � d−1 2 � errors. Flash Memory Summit 2013, Santa Clara, CA

10 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Algebra review BCH codes Algebraic codes for Flash

BCH code construction

If α is a primitive element, then the blocklength is n = q m − 1 (largest possible). If b = 1, BCH code is called narrow-sense (simplifies some encoding and decoding operations). For m = 1, BCH codes are also known as Reed-Solomon codes.

Flash Memory Summit 2013, Santa Clara, CA

11 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Algebra review BCH codes Algebraic codes for Flash

BCH code properties A code C is called a cyclic code if all cyclic shifts of a codeword in C are also codewords. Example: Suppose (0, 1, 0, 1, 1) ↔ x 3 + x + 1 is a codeword in C . Then so are (1, 0, 1, 1, 0), (0, 1, 1, 0, 1), (1, 1, 0, 1, 0) and (1, 0, 1, 0, 1).

Flash Memory Summit 2013, Santa Clara, CA

12 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Algebra review BCH codes Algebraic codes for Flash

BCH code properties A code C is called a cyclic code if all cyclic shifts of a codeword in C are also codewords. Example: Suppose (0, 1, 0, 1, 1) ↔ x 3 + x + 1 is a codeword in C . Then so are (1, 0, 1, 1, 0), (0, 1, 1, 0, 1), (1, 1, 0, 1, 0) and (1, 0, 1, 0, 1). Cyclic code is generated by a generator polynomial g (x), such that each codeword c corresponds to a polynomial pc (x) = m(x)g (x). All rows of the generator matrix G are cyclic shifts of g (x). BCH code: Each codeword c corresponds to a polynomial pc (x) = m(x)g (x) where g (x) is LCM of (x − αb )(x − αb+1 ) · · · (x − αb+d−2 ). Flash Memory Summit 2013, Santa Clara, CA

12 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Algebra review BCH codes Algebraic codes for Flash

BCH code example

Let’s construct a narrow-sense BCH code over GF (8) correcting t = 1 error and of length n = 7. We consider a primitive element α that satisfies α3 + α + 1 = 0. Notice that α7 = 1. Then, H=

1 α α2 α3 α4 α5 α6 1 α2 α4 α6 α8 α10 α12

Flash Memory Summit 2013, Santa Clara, CA

13 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Algebra review BCH codes Algebraic codes for Flash

BCH code example

Let’s construct a narrow-sense BCH code over GF (8) correcting t = 1 error and of length n = 7. We consider a primitive element α that satisfies α3 + α + 1 = 0. Notice that α7 = 1. Then, H=

1 α α2 α3 α4 α5 α6 1 α2 α4 α6 α α3 α5

Flash Memory Summit 2013, Santa Clara, CA

13 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Algebra review BCH codes Algebraic codes for Flash

BCH code example We can interpret this code in the binary domain by substituting         1 0 0 1 1 →  0  α →  1  α2 →  0  α3 →  1  0 0 1 0 

 0 α4 →  1  1

 1 α5 →  1  1

 1 α6 →  0  1

Flash Memory Summit 2013, Santa Clara, CA

 0 0→ 0  0

14 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Algebra review BCH codes Algebraic codes for Flash

BCH code example We can then interpret this parity check matrix in the binary domain as   1 0 0 1 0 1 1  0 1 0 1 1 1 0     0 0 1 0 1 1 1   H=  1 0 0 1 0 1 1     0 0 1 0 1 1 1  0 1 1 1 0 0 1

Here H is 6 × 7 and has rank 3. This code can correct 1 error.

Flash Memory Summit 2013, Santa Clara, CA

15 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Algebra review BCH codes Algebraic codes for Flash

Decoding BCH codes Decoding algorithm heavily relies on the algebraic structure of the code: recall that each codeword polynomial c(x) must have as roots αb , αb+1 ,..,αb+d−2 . 1

Compute the syndromes of the received polynomial r (x)– tells us which of α’s are not the roots.

2

Based on the syndromes, compute the locations of the errors (system of linear equations).

3

Compute the error values at these location (system of non-linear equations that are in the Vandermode form)

4

Based on steps 2 and 3, build error polynomial e(x).

5

Add e(x) to r (x) to produce the estimate of c(x). Flash Memory Summit 2013, Santa Clara, CA

16 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Algebra review BCH codes Algebraic codes for Flash

Decoding BCH codes

If the system of equations cannot be solved, declare a decoding failure. This is a hard limit on the number of correctable errors. Implementation can be greatly reduced using the shift-registers viewpoint in the Berlekamp-Massey algorithm.

Flash Memory Summit 2013, Santa Clara, CA

17 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Algebra review BCH codes Algebraic codes for Flash

Performance evaluation Figure: Theoretical bound for length n = 1023 binary BCH code for diﬀerent error correction capability t (and diﬀerent code rate). 0

10

−1

FER

10

t=10, rate= 0.9022 t=11, rate= 0.8925 t=12, rate= 0.8827 t=13, rate= 0.8729 t=14, rate= 0.8631 t=15, rate= 0.8534 t=16, rate= 0.8436

−2

10

−3

10

4

4.2

4.4

4.6 4.8 SNR(dB)

5

Flash Memory Summit 2013, Santa Clara, CA

5.2 18 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Algebra review BCH codes Algebraic codes for Flash

Graph-Based Codes

Flash Memory Summit 2013, Santa Clara, CA

19 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Low Density Parity Check (LDPC) Codes Definition 1: LDPC code An LDPC block code C is a linear block code whose parity-check matrix H has a small number of ones in each row and column. Invented by Gallager in 1963 but were all but forgotten until late 1990’s. In the limit of very large block-lengths LDPC codes are known to approach the Shannon limit (i.e., the highest rate at which the code can be designed that guarantees reliable communication) LDPC codes are amenable to low-complexity iterative decoding. Flash Memory Summit 2013, Santa Clara, CA

20 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

An Example LDPC code described by  1  0   0 H=  1   0 0

the sparse parity check matrix H:  0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0   0 1 0 0 1 0 0 1   0 0 0 0 1 0 1 0   1 0 1 0 0 0 0 1  0 1 0 1 0 1 0 0

Matrix H has 9 columns and 6 rows.

Flash Memory Summit 2013, Santa Clara, CA

21 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

An Example LDPC code described by  1  0   0 H=  1   0 0

the sparse parity check matrix H:  0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0   0 1 0 0 1 0 0 1   0 0 0 0 1 0 1 0   1 0 1 0 0 0 0 1  0 1 0 1 0 1 0 0

Matrix H has 9 columns and 6 rows. There are 9 coded bits and 6 parity-check equations. Each coded bit participates �=2 parity-check equations and each parity-check equation contains r = 3 coded bits. Flash Memory Summit 2013, Santa Clara, CA

21 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

LDPC Preliminaries

Definition 3: Tanner graph A Tanner graph of a code C with a parity check matrix H is the bipartite graph such that: each coded symbol i is represented by a variable node vi , each parity-check equation j is represented by a check node cj , there exists an edge between a variable node and a check node if and only if H(j, i) = 1.

Flash Memory Summit 2013, Santa Clara, CA

22 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

An Example LDPC code: parity check matrix H and its Tanner graph 

   H=   

1 0 0 1 0 0

0 1 0 0 1 0

0 0 1 0 0 1

1 0 0 0 1 0

0 1 0 0 0 1

0 0 1 1 0 0

1 0 0 0 0 1

0 1 0 1 0 0

0 0 1 0 1 0

       

Flash Memory Summit 2013, Santa Clara, CA

23 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

An Example LDPC code: parity check matrix H and its Tanner graph 

   H=   

1 0 0 1 0 0

0 1 0 0 1 0

0 0 1 0 0 1

1 0 0 0 1 0

0 1 0 0 0 1

0 0 1 1 0 0

1 0 0 0 0 1

0 1 0 1 0 0

0 0 1 0 1 0

       

v1 v2 v3 v4 v5 v6 v7 v8 v9

Flash Memory Summit 2013, Santa Clara, CA

23 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

An Example LDPC code: parity check matrix H and its Tanner graph 

   H=   

1 0 0 1 0 0

0 1 0 0 1 0

0 0 1 0 0 1

1 0 0 0 1 0

0 1 0 0 0 1

0 0 1 1 0 0

1 0 0 0 0 1

0 1 0 1 0 0

0 0 1 0 1 0

       

c1 c2 c3 c4 c5 c6

v1 v2 v3 v4 v5 v6 v7 v8 v9

Flash Memory Summit 2013, Santa Clara, CA

23 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Message Passing Decoding Message-passing (belief propagation) is an iterative decoding algorithm that operates on the Tanner graph of the code. In each iteration of the algorithm:

Flash Memory Summit 2013, Santa Clara, CA

24 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Message Passing Decoding Message-passing (belief propagation) is an iterative decoding algorithm that operates on the Tanner graph of the code. In each iteration of the algorithm: 1

(bit-to-check) Each variable node sends a message to each check node it is connected to,

Flash Memory Summit 2013, Santa Clara, CA

24 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Message Passing Decoding Message-passing (belief propagation) is an iterative decoding algorithm that operates on the Tanner graph of the code. In each iteration of the algorithm: 1

(bit-to-check) Each variable node sends a message to each check node it is connected to,

2

(check processing) Each check node then computes the consistency of incoming messages,

Flash Memory Summit 2013, Santa Clara, CA

24 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Message Passing Decoding Message-passing (belief propagation) is an iterative decoding algorithm that operates on the Tanner graph of the code. In each iteration of the algorithm: 1

(bit-to-check) Each variable node sends a message to each check node it is connected to,

2

(check processing) Each check node then computes the consistency of incoming messages,

3

(check-to-bit) Each check node then sends a message to each variable node it is connected to,

Flash Memory Summit 2013, Santa Clara, CA

24 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Message Passing Decoding Message-passing (belief propagation) is an iterative decoding algorithm that operates on the Tanner graph of the code. In each iteration of the algorithm: 1

(bit-to-check) Each variable node sends a message to each check node it is connected to,

2

(check processing) Each check node then computes the consistency of incoming messages,

3

(check-to-bit) Each check node then sends a message to each variable node it is connected to,

4

(bit processing) Each variable node (coded symbol) updates its value. Flash Memory Summit 2013, Santa Clara, CA

24 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Message Passing Decoding

Passed messages can be either Hard decisions: 0 or 1 Soft decisions/likelihoods: real numbers

Flash Memory Summit 2013, Santa Clara, CA

25 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

An Example *"+,-(.&//01&( !"#\$%&'( 4(

'&-'*&3&%(2\$'%(

#\$%&2\$'%( 4464(

Message m Codeword y m1 y1y2y3y4 0 ! 0000 1 ! 1101

%&#\$%&%(.&//01&(

)&#\$%&'(

7\$*/8(9:0""&;( 4664(

y1

y1+y2+y3 = 0

5(

y2

y3

y1+y3+y4 = 0

Flash Memory Summit 2013, Santa Clara, CA

y4

y2+y3 + y4= 0

26 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Message Passing Decoding

Bit-flipping algorithm

Flash Memory Summit 2013, Santa Clara, CA

27 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

1

y1+y2+y3

0

0

y1+y3+y4

Flash Memory Summit 2013, Santa Clara, CA

1

y2+y3+y4

28 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Bit-to-Check Messages

1

1+y2+y3

0

0

1+y3+y4

Flash Memory Summit 2013, Santa Clara, CA

1

y2+y3+y4

29 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Bit-to-Check Messages

1

1+0+y3

0

0

1+y3+y4

Flash Memory Summit 2013, Santa Clara, CA

1

0+y3+y4

29 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Check Processing

1

0

1+0+0 =1 ??

0

1+0+y4

Flash Memory Summit 2013, Santa Clara, CA

1

0+0+y4

30 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Check Processing

1

0

1+0+0 =1 ??

0

1+0+1 = 0 ¥

1

0+0+1 = 1 ??

Flash Memory Summit 2013, Santa Clara, CA

30 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Check-to-Bit Messages 1 Flip,

0 Flip,

1+0+0 =1 ??

0

1

Flip,

1+0+1 = 0 ¥

0+0+1 = 1 ??

Flash Memory Summit 2013, Santa Clara, CA

31 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Check-to-Bit Messages 1 Flip, Stay

0 Flip,

1+0+0 =1 ??

0 Flip, Stay,

1+0+1 = 0 ¥

1 Stay,

0+0+1 = 1 ??

Flash Memory Summit 2013, Santa Clara, CA

31 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Check-to-Bit Messages 1 Flip, Stay

0 Flip, Flip

1+0+0 =1 ??

0 1 Flip, Stay, Flip Stay, Flip

1+0+1 = 0 ¥

0+0+1 = 1 ??

Flash Memory Summit 2013, Santa Clara, CA

31 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Bit Processing 1 Flip, Stay

0 Flip, Flip

1+0+0 =1 ??

0 1 Flip, Stay, Flip Stay, Flip

1+0+1 = 0 ¥

0+0+1 = 1 ??

Flash Memory Summit 2013, Santa Clara, CA

32 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Bit Processing 1

y1+y2+y3

0

1

y1+y3+y4

Flash Memory Summit 2013, Santa Clara, CA

1

y2+y3+y4

32 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Bit-to-Check Messages 1

1+y2+y3

1

0

1+y3+y4

Flash Memory Summit 2013, Santa Clara, CA

1

y2+y3+y4

33 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Bit-to-Check Messages 1

1+1+y3

1

0

1+y3+y4

Flash Memory Summit 2013, Santa Clara, CA

1

1+y3+y4

33 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Bit-to-Check Messages 1

1

1+1+0 = 0 ¥

0

1+0+y4

Flash Memory Summit 2013, Santa Clara, CA

1

1+0+y4

33 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Check Processing 1

1

1+1+0 = 0 ¥

0

1+0+1 = 0 ¥

Flash Memory Summit 2013, Santa Clara, CA

1

1+0+1 = 0 ¥

34 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Check-to-Bit Messages 1 Stay,

1 Stay,

1+1+0 = 0 ¥

0

1

Stay,

1+0+1 = 0 ¥

Flash Memory Summit 2013, Santa Clara, CA

1+0+1 = 0 ¥

35 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Check-to-Bit Messages 1 Stay,

1 Stay,

1+1+0 = 0 ¥

0

1

Stay,

1+0+1 = 0 ¥

Flash Memory Summit 2013, Santa Clara, CA

1+0+1 = 0 ¥

35 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Check-to-Bit Messages 1 Stay, Stay

1 0 1 Stay, Stay Stay, Stay, Stay Stay, Stay

1+1+0 = 0 ¥

1+0+1 = 0 ¥

Flash Memory Summit 2013, Santa Clara, CA

1+0+1 = 0 ¥

36 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Bit Processing Decoded Codeword 1

1

1+1+0 = 0 ¥

0

1+0+1 = 0 ¥

Flash Memory Summit 2013, Santa Clara, CA

1

1+0+1 = 0 ¥

37 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Soft Iterative Decoding Improved variants of message passing algorithm use soft i =0|yi ) information as messages, i.e., log-likelihood ratio L = log P(x P(xi =1|yi ) . Sum-product algorithm (SPA) [1,2]

Min-sum algorithm (MSA) [3]

[1] R. Gallager, MIT Press, 1963. [2] T. Richardson and R. Urbanke, IEEE Trans. on Info. Theory, 2001. [3] M. P. C. Fossorier, M. Mihaljevic, and H. Imai, IEEE Trans. on Comm., 1999. Flash Memory Summit 2013, Santa Clara, CA

38 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Soft Iterative Decoding Improved variants of message passing algorithm use soft i =0|yi ) information as messages, i.e., log-likelihood ratio L = log P(x P(xi =1|yi ) . Sum-product algorithm (SPA) [1,2] bit-to-check L(vi → cj ) = � � int L(c � j ∈N(i)\j j → vi ) + L (vi ) check-to-bit L(cj → vi ) = �� � � � � Φ−1 i � ∈N(j)\i Φ(|L(vi → cj )|) i � ∈N(j)\i sgn(L(vi → cj )) where Φ(x) = − log(tanh(x/2)) Min-sum algorithm (MSA) [3] check-to-bit L(cj → vi ) =� mini � ∈N(j)\i |L(vi� → cj )| i � ∈N(j)\i sgn(L(vi� → cj )) [1] R. Gallager, MIT Press, 1963. [2] T. Richardson and R. Urbanke, IEEE Trans. on Info. Theory, 2001. [3] M. P. C. Fossorier, M. Mihaljevic, and H. Imai, IEEE Trans. on Comm., 1999. Flash Memory Summit 2013, Santa Clara, CA

38 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Soft Decoding Bit  values

1

1

0

Flash Memory Summit 2013, Santa Clara, CA

1

39 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Soft Decoding Bit  values Values  using  BPSK

1

1

0

1

-­‐1

-­‐1

+1

-­‐1

Flash Memory Summit 2013, Santa Clara, CA

39 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Soft Decoding Bit  values Values  using  BPSK Values  from  channel

1

1

0

1

-­‐1

-­‐1

+1

-­‐1

-­‐1.1

0.1

1.2

-­‐0.9

Flash Memory Summit 2013, Santa Clara, CA

39 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Soft Decoding Bit  values

1

Values  using  BPSK Values  from  channel ሺ݅݊‫ ݐ‬ሻ

Beliefs (‫݅ݒܮ‬

)

1

0

1

-­‐1

-­‐1

+1

-­‐1

-­‐1.1

0.1

1.2

-­‐0.9

2.4

-­‐1.8

-­‐2.2

0.2

(݅݊‫) ݐ‬ ‫݅ݒܮ‬

= ݈‫ ݃݋‬ቆ

2 /2ߪ 2 ݊

݁ െሺ‫ ݅ ݕ‬െ1ሻ

2 2 ݁ െሺ‫ ݅ ݕ‬+1ሻ /2ߪ݊

ቇ=

2 ‫ ݅ݕ‬  ߪ݊2

We  assume  ߪ݊ = 1.   Flash Memory Summit 2013, Santa Clara, CA

39 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Soft Decoding Bit  values Values  using  BPSK

1

1

0

1

-­‐1

-­‐1

+1

-­‐1

Values  from  channel

-­‐1.1

0.1

1.2

-­‐0.9

Beliefs

-­‐2.2

2.4

-­‐1.8

0.1666

0.2

2.4 0.2

1 ‫ ݆ ܿܮ‬՜‫ = ݆ݒ‬2 tanhെ1 ‫ ۇ‬ෑ tanh ‫ ݈ݒܮ‬՜ܿ ݆ ‫ ۊ‬  2 ്݈݅ ‫ ݈ݒۉ‬՜ܿ ݆ ‫ی‬ Flash Memory Summit 2013, Santa Clara, CA

39 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Soft Decoding Bit  values Values  using  BPSK

1

1

0

1

-­‐1

-­‐1

+1

-­‐1

Values  from  channel

-­‐1.1

0.1

1.2

-­‐0.9

Beliefs

-­‐2.2

2.4

-­‐1.8

0.2

-­‐1.3774 0.1666

-­‐1.3774 -­‐1.6119

-­‐0.1430 1.3051

0.1666

-­‐0.1599 -­‐1.6119

1 ‫ ݆ ܿܮ‬՜‫ = ݆ݒ‬2 tanhെ1 ‫ ۇ‬ෑ tanh ‫ ݈ݒܮ‬՜ܿ ݆ ‫ ۊ‬  2 ്݈݅ ‫ ݈ݒۉ‬՜ܿ ݆ ‫ی‬ Flash Memory Summit 2013, Santa Clara, CA

39 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Soft Decoding Bit  values

1

Values  using  BPSK Values  from  channel

Beliefs

1

0

1

-­‐1

-­‐1

+1

-­‐1

-­‐1.1

0.1

1.2

-­‐0.9

2.4 3.5621

-­‐1.8 -­‐3.2453

-­‐2.2 -­‐3.4108

0.2 -­‐2.7893

-­‐1.3774

-­‐1.3774 -­‐1.6119

0.1666

-­‐0.1430 1.3051

0.1666

-­‐0.1599

-­‐1.6119

(݅݊‫) ݐ‬

‫݅ݒܮ = ݅ݒܮ‬

+ ෍ ‫ ݆ ܿܮ‬՜‫ ݆ݒ‬  ܿ ݆ ՜‫݅ݒ‬

Flash Memory Summit 2013, Santa Clara, CA

39 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Soft Decoding Bit  values Values  using  BPSK Values  from  channel

Beliefs

1

1

0

1

-­‐1

-­‐1

+1

-­‐1

-­‐1.1

0.1

1.2

-­‐0.9

2.4 3.5621 0

-­‐1.8 -­‐3.2453 1

-­‐2.2 -­‐3.4108 1 -­‐1.3774 0.1666

0.2 -­‐2.7893 1 -­‐1.3774 -­‐1.6119

-­‐0.1430 1.3051

0.1666

-­‐0.1599 -­‐1.6119

All  variable  nodes  are  decoded  to  correct  bit  value. Flash Memory Summit 2013, Santa Clara, CA

39 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Performance evaluation Figure: Bnary LDPC codes vs. BCH codes performance comparison for AWGN channel. Code rate is 0.9, block length is 1000 bits. BCH code corrects 13 errors. 1 1.0E−1

FER

1.0E−2 1.0E−3 1.0E−4 Binary LDPC BCH 3.5

4

4.5 SNR (dB)

Flash Memory Summit 2013, Santa Clara, CA

5

40 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Extracting soft information in SLC Flash 1

0

! െ! ܲଷ ! In Flash, are represented by distributions ܲଵ ! ܲlevels ଶ!

1

0

1 read compares against a single threshold െଵ !

ܲସ !

ଵ !

ܲଷ ! ܲଶ !

ܲଵ ! 1

0

ܲଶ !

ܲଵ !

Flash Memory Summit 2013, Santa Clara, CA

41 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Extracting soft information in SLC Flash Idea: multiple word line reads

Flash Memory Summit 2013, Santa Clara, CA

42 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Extracting soft information in SLC Flash Idea: multiple word line reads 2 reads compare against two thresholds

1

0

െ!

ܲଷ !

!

ܲଶ !

െଵ !

ܲସ !

ଵ !

ܲଷ ! ܲଶ !

0

ܲଵ !

1

0

ܲଵ ! 1

Flash Memory Summit 2013, Santa Clara, CA

42 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Extracting soft information in SLC Flash Idea: multiple word line reads 2 reads compare against two thresholds p1

0 p3

1

0

p2

0

0

e െ!

ܲଷ !

p3

!

ܲଶ !

ܲଵ !

1

0

1

p2 p1

1

1

െଵ !

ܲସ !

ଵ !

ܲଷ ! ܲଶ !

0

ܲଵ ! Fig. 3. Equivalent discrete memoryless channel models for SLC with (a) two rea 1

voltages.

Flash Memory Summit 2013, Santa Clara, CA

42 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Extracting soft information in SLC Flash Idea: multiple word line reads 2 reads compare against two thresholds p1

0 p3

1

0

p2

0

0

e െ!

ܲଷ !

p3

!

ܲଶ !

ܲଵ !

1

0

1

p2 p1

1

1

Maximize mutual information of the induced channel to െ ! the determine  ! best thresholds (here q and −q) ܲ! ܲ! ଵ

0

ܲଶ !

ܲଵ ! Fig. 3. Equivalent discrete memoryless channel models for SLC with (a) two rea 1

voltages.

Flash Memory Summit 2013, Santa Clara, CA

42 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Extracting soft information in SLC Flash Idea: multiple word line reads

Flash Memory Summit 2013, Santa Clara, CA

43 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

LDPC code construction Iterative Decoding LDPC codes for Flash

Extracting soft information in SLC Flash Idea: multiple word line reads 1

0 3 reads compare against three thresholds

െ!

ܲଷ !

!

ܲଶ !

ܲଵ !

1

0

0

0 p4

p1 p2 p3

00 01

e െଵ !

ܲସ !

ଵ !

ܲଷ ! ܲଶ !

0

11 ܲଵ ! 1

1

1

p4 p3 p2 p1

10

Maximize mutual information of the induced channel to determine the best thresholds (here q1 , −q1 and 0) ܲ! ܲ!

ଶ Fig. 3. Equivalent discrete ଵmemoryless channel models for SLC with (a) two reads and (b) three reads with

voltages.

Flash Memory Summit 2013, Santa Clara, CA

43 / 56

Chicago, IL, Oct. 2 [7] S. Li and T. Zhan LDPC code construction Storage Reliability U inIterative FigureDecoding 12 for SLC, where VLSI Systems, 18(1 codes forraw Flash anLDPC equivalent bit error rate [8] G. Dong, N. Xie, a Correcting Codes in 58(2):429–439, Feb Of course the BCH code will also benefit from the use [9] T. Tian, C. Jones, J. of soft information. However, we were unable to perform of Cycles in Irregu simulations of a BCH decoder utilizing soft information (such 52(8):1242–1247, A [10] X.-Y. Figure: Performance comparison of Hu, E. Elefth as erasures) for inclusionfor in 0.9-rate this paper. LDPC and BCH codes Tanner graphs. In length n = 9100. 2001. [11] T. Richardson. Er Frame Error Rate vs. SNR (BPSK) 0 10 Allerton Conf., Mon BCH theory [12] J. Wang, L. Dolecek LDPC soft −1 LDPC 2−bit (3 reads) via the Null Space 10 LDPC 1.6−bit (2 reads) Conf. on Comm. (IC LDPC 1−bit (1 read) [13] J. Wang, L. Dolece Capacity soft −2 10 Capacity 2−bit Space of the Cycle Capacity 1.6−bit Proc. Info. Theory Capacity 1−bit −3 [14] M. Ivkovic, S. K. C 10 in low-density parit Trans. Inform. Theo −4 10 [15] D. V. Nguyen, B. from Permutation M −5 10 Info. Theory Works [16] Q. Huang, Q. Diao cyclic LDPC codes: −6 10 2 3 4 5 6 7 8 Workshop, San Dieg E /N (dB) [17] A. Ramamoorthy an s 0 Irregular LDPC Cod France, June. 2004. Fig. 12: Simulation results for SLC. Outline Preliminaries Algebraic signal-to-noise ratio codes Es /N0 Graph-based codes each E /N corresponds Advanced Approaches to s Coding 0 Summary in Figure 10. and Outlook

Frame Error Rate

LDPC vs. BCH code performance

Flash Memory Summit 2013, Santa Clara, CA

44 / 56

Chicago, IL, Oct. 2 [7] S. Li and T. Zhan LDPC code construction Storage Reliability U inIterative FigureDecoding 12 for SLC, where VLSI Systems, 18(1 codes forraw Flash anLDPC equivalent bit error rate [8] G. Dong, N. Xie, a Correcting Codes in 58(2):429–439, Feb Of course the BCH code will also benefit from the use [9] T. Tian, C. Jones, J. of soft information. However, we were unable to perform of Cycles in Irregu simulations of a BCH decoder utilizing soft information (such 52(8):1242–1247, A [10] X.-Y. Figure: Performance comparison of Hu, E. Elefth as erasures) for inclusionfor in 0.9-rate this paper. LDPC and BCH codes Tanner graphs. In length n = 9100. 2001. [11] T. Richardson. Er Frame Error Rate vs. SNR (BPSK) 0 10 Allerton Conf., Mon BCH theory [12] J. Wang, L. Dolecek LDPC soft −1 LDPC 2−bit (3 reads) via the Null Space 10 LDPC 1.6−bit (2 reads) Conf. on Comm. (IC LDPC 1−bit (1 read) [13] J. Wang, L. Dolece Capacity soft −2 10 Capacity 2−bit Space of the Cycle Capacity 1.6−bit Proc. Info. Theory Capacity 1−bit −3 [14] M. Ivkovic, S. K. C 10 in low-density parit Trans. Inform. Theo −4 10 [15] D. V. Nguyen, B. from Permutation M −5 10 Info. Theory Works [16] Q. Huang, Q. Diao cyclic LDPC codes: −6 10 2 3 4 5 6 7 8 Workshop, San Dieg E /N (dB) [17] A. Ramamoorthy an s 0 Irregular LDPC Cod France, June. 2004. Fig. 12: Simulation results for SLC. Outline Preliminaries Algebraic signal-to-noise ratio codes Es /N0 Graph-based codes each E /N corresponds Advanced Approaches to s Coding 0 Summary in Figure 10. and Outlook

Frame Error Rate

LDPC vs. BCH code performance

Caution: AWGN-optimized LDPC codes may not be the best for the quantized Flash channel ! Flash Memory Summit 2013, Santa Clara, CA

44 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Graded algebraic codes Non-binary LDPC codes

Flash Memory Summit 2013, Santa Clara, CA

45 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Graded algebraic codes Non-binary LDPC codes

Graded algebraic codes Motivation: Raw error rate for TLC flash Error Rates for TLC Flash

−2

10

LSB: least significant bit CSB: center significant bit MSB: most significant bit

−3

Error Rate

10

Table: Mapping between Voltage Levels and Triple-bit Words

−4

10

LSB CSB MSB Symbol Error Rate

−5

10

0

500

1000

1500

2000

2500

3000

3500

4000

4500

5000

P/E Cycles

Flash Memory Summit 2013, Santa Clara, CA

Voltage Level 0 1 2 3 4 5 6 7

Triple-bit Word 111 110 100 101 001 000 010 011 46 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Graded algebraic codes Non-binary LDPC codes

Error patterns within a TLC cell Number of bits in symbol that err 1 2 3

Percentage of errors 0.9617 0.0314 0.0069

Standard error-correction codes are designed to correct all symbol–to–symbol errors and do not diﬀerentiate among these errors.

Flash Memory Summit 2013, Santa Clara, CA

47 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Graded algebraic codes Non-binary LDPC codes

Error patterns within a TLC cell Number of bits in symbol that err 1 2 3

Percentage of errors 0.9617 0.0314 0.0069

Standard error-correction codes are designed to correct all symbol–to–symbol errors and do not diﬀerentiate among these errors. Usage of standard codes: overkill in terms of redundancy, as certain symbol–to–symbol errors are not as important.

Flash Memory Summit 2013, Santa Clara, CA

47 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Graded algebraic codes Non-binary LDPC codes

Idea: Design codes for the observed intracell error patterns Approach: Algebraic codes that simultaneously control the number of symbols in error and the number of bits in error per erroneous symbol Construction: Tensor-product operations

Flash Memory Summit 2013, Santa Clara, CA

48 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Graded algebraic codes Non-binary LDPC codes

Performance evaluation Error Rates of Codes Applied to TLC Flash

ï1

10

ï2

Page Error Rate

10

ï3

10

ï4

10

Nonïbinary BCH [4095,3534,80]8 Binary BCH [4095,3531,47]2 TPC [81,7;1,3]8 Binary BCH [4096 , 3351, 62]2 (LSB), [4096 , 3339, 63]2 (MSB), [4096, 3915, 15]2 (CSB)

2800

3000

3200

3400

3600 P/E Cycles

3800

4000

4200

4400

All codes are of rate 0.86 and length 4000 bits. Flash Memory Summit 2013, Santa Clara, CA

49 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Graded algebraic codes Non-binary LDPC codes

Performance evaluation Error Rates of Codes Applied to TLC Flash

ï1

10

ï2

Page Error Rate

10

ï3

10

ï4

10

Nonïbinary BCH [4095,3534,80]8 Binary BCH [4095,3531,47]2 TPC [81,7;1,3]8 Binary BCH [4096 , 3351, 62]2 (LSB), [4096 , 3339, 63]2 (MSB), [4096, 3915, 15]2 (CSB)

2800

3000

3200

3400

3600 P/E Cycles

3800

4000

4200

4400

All codes are of rate 0.86 and length 4000 bits. Flash Memory Summit 2013, Santa Clara, CA

49 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Graded algebraic codes Non-binary LDPC codes

Non-binary LDPC codes Entries in the parity check matrix H are taken from GF (q). Example: GF (8) = 0, 1, 2, ..., 7. (with αk → k + 1 for 0 ≤ k ≤ 6) 

   H=   

1 0 0 1 0 0

0 2 0 0 3 0

0 0 3 0 0 6

3 0 0 0 2 0

0 6 0 0 0 7

0 0 1 5 0 0

5 0 0 0 0 1

0 2 0 7 0 0

0 0 1 0 4 0

       

c1 c2 c3 c4 c5 c6

v1 v2 v3 v4 v5 v6 v7 v8 v9

Parity check c3 : 3v3 + v6 + v9 ≡ 0 mod 8. Flash Memory Summit 2013, Santa Clara, CA

50 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Graded algebraic codes Non-binary LDPC codes

Non-binary LDPC codes

Decoding is more complex than in the binary case. Keep track of q − 1 likelihoods on each edge. Popular approaches:

Direct implementation has complexity on the order of O(q 2 ) FFT-based SPA has complexity on the order of O(q log q) Min-sum and its variants can further reduce the complexity

Flash Memory Summit 2013, Santa Clara, CA

51 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Graded algebraic codes Non-binary LDPC codes

Performance evaluation Figure: Non-binary LDPC codes vs. BCH codes performance comparison for AWGN channel. Code rate is 0.9, block length is 1000 bits. BCH code corrects 13 errors. 1

FER

1.0E−2 1.0E−4 1.0E−6

GF(2) GF(4) GF(8) GF(16) BCH

1.0E−8

3.5

4

4.5 SNR (dB)

5

Flash Memory Summit 2013, Santa Clara, CA

52 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Graph-based codes (LDPC)

Algebraic codes (BCH) – Performance is acceptable

+ Performance is excellent

+ Guaranteed error correction capability

– No guaranteed error correction capability (but we have ideas)

+ Structure allows for eﬃcient decoder implementation

– Decoder complexity is acceptable but now low

– Not amenable for soft decoding

+ Amenable for soft decoding

With the move to MLC/TLC technologies, advanced coding schemes will need to be considered!

Flash Memory Summit 2013, Santa Clara, CA

53 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Further information, papers, references etc. available at http://loris.ee.ucla.edu

Selected list: R. Gabrys, E. Yaakobi and L. Dolecek, ”Graded bit error correcting codes with applications to Flash memory,” IEEE Transactions on Information Theory, vol. 59(4), pp. 2315 – 2327, Apr. 2013. J. Wang, L. Dolecek and R. Wesel, ”The Cycle Consistency Matrix Approach to Absorbing Sets in Separable Circulant-Based LDPC Codes,” IEEE Transactions on Information Theory, vol. 59(4), pp. 2293 – 2314, Apr. 2013. B. Amiri, J. Kliewer, and L. Dolecek, ”Analysis and Enumeration of Absorbing Sets for Non-Binary Graph-Based Codes,” submitted to IEEE Transactions on Communications, 2013. (Conference version in ISIT 2013.)

Flash Memory Summit 2013, Santa Clara, CA

54 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

UCLA Coding talks and posters at 2013 Flash Summit R. Gabrys, “Coding for Unreliable Flash Memory Cells,” Session 301-A: Flash Controller Design Options - from 8:30 to 9:40 am on Thursday, August 15. B. Amiri, “Low Error Floor LDPC Codes and Their Practical Decoders for Flash Memory Applications,” Hall B, booths 916-920 – Exhibit Hours K. Vakilinia, “Non-Binary LDPC Code Design from Inter-Connected Cycles,” Hall B, booths 916-920 – Exhibit Hours

Flash Memory Summit 2013, Santa Clara, CA

55 / 56

Outline Preliminaries Algebraic codes Graph-based codes Advanced Coding Approaches Summary and Outlook

Announcement

New center on Coding for Storage at UCLA: http://www.loris.ee.ucla.edu/codess Kick-oﬀ day on Thursday 9/19/2013! Registration is free. Register early, space is limited.

Flash Memory Summit 2013, Santa Clara, CA

56 / 56