Yue Li joint work with Anxiao (Andrew) Jiang and Jehoshua Bruck

Preview:

DESCRIPTION

Number of Pulses Voltage Reprogram Correct with ECC

Citation preview

Correcting Errors in MLCs with Bit-fixing Coding

Yue Lijoint work with

Anxiao (Andrew) Jiang and Jehoshua Bruck

Flash memories have excellent performance.

Cells are programmed by injecting electrons.◦ Programming is fast.◦ Erasure is expensive.

The growth of storage density brings reliability issues.◦ Cells are more closely aligned ◦ More levels are programmed into each cell.

We propose a new coding scheme for correcting asymmetric errors in multi-level cells (MLCs).

Introduction

Number of Pulses

Voltage

76543210

Reprogram

Correct with ECC

Motivation: Cell Overprogramming

012

012345

0 0123

012345

01234567891011

12345678

8 2 5 0 3 5 110

Asymmetric errors appear…

012345

012345

01

0123

012345678

01234567891011

12345678910

8 2 5 0 3 5 110

10 5 1 8

How to correct asymmetric errors ?

How to minimize redundancy in ECC?

0123456789101112131415

000100100011010001010110011110001001101010111100110111101111

0000

Binary Codes

000100110010011001110101010011001101111111101010101110011000

0000

Gray Codes Our Codes

The number of bit errors equals the Hamming weight of the binary representation of a cell error.

Cell error # of bit errors1 12 13 24 1

The number of bit errors depends only on the size of the cell error.

The number of bit errors depends on the size of the error and the cell level

5 26 27 38 1

This work generalizes the code constructions in:

Codes Correcting Asymmetric Errors

[1] R. Ahlswede, H. Aydinian and L. Khachatrian, "Unidirectional error control codes and related combinational problems," in Proc. Eighth Int. Workshop Algebr. Combin. Coding Theory, pp. 6-9, 2002. [2] Y. Cassuto, M. Schwartz, V. Bohossian and J. Bruck, "Codes for asymmetric limited-magnitude errors with application to multilevel flash memories," in IEEE Trans. Information Theory, vol. 56, no. 4, pp. 1582-95, 2010.[3] E. Yaakobi, P. H. Siegel, A. Vardy, and J. K. Wolf, “On Codes that Correct Asymmetric Errors with Graded Magnitude Distribution,” in Proc. IEEE International Symposium on Information Theory, pp. 1021-1025, 2011.

Example of Bit-fixing Coding

012

012345

0 0123

012345

01234567891011

1234567

7 2 5 0 3 5 110

0111

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0010

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0000

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

1011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0000

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

Bit-wise ECC

7 2 5 0 3 5 11

ECC€

0111

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0010

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

1011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟ECCECCECC

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0010

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0111

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0000

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

1011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

Assume asymmetric errors appear…

01234

012345

0 01234

012345678

01234567891011

12345678

7+1 2+2 5 0 3+1 5+3 110

Binary Codes: there are 12 bit errors.

Bit-fixing code: there are only 5 bit errors! It alternatively corrects bits and cell levels.

0100

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0111

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0000

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0010

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0111

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

1110

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

Gray Codes: there are 7 bit errors.

7+1 2+2 5 0 3+1 5+3 11

0111

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0010

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0000

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

1011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

Decoding round 1: Correct bits

7+1 2+2 5 0 3+1 5+3 11

corrected 3 bit errors€

0111

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0010

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0000

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

1011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

A B C D

0111

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

Decoding round 1: Correct cell levels

7 2+2 5 0 3 5+2 11

0010

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0000

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

1011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

(7+1) – 2^0 = 7

(3+1) – 2^0 = 3

(5+3) – 2^0 = 7

A B C D

Updating rule: new level = current level – e * 2^i

Value of error Bit index An error in the LSB = a magnitude-1 error on level

1st bit = a magnitude-2 error 2nd bit = a magnitude-4 error

MSB = a magnitude-8 error corrected 3 bit errors

0111

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

Decoding round 1: Correct cell levels

7 2+2 5 0 3 5+2 11

corrected 3 bit errors

0010

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0000

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

1011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

(7+1) – 2^0 = 7

(3+1) – 2^0 = 3

(5+3) – 2^0 = 7

A B C D

Updating rule: new level = current level – e * 2^i

Value of error Bit index

7

Initial Data

Receive Errors

Correct Bits

Correct Cells

7 7+1 7+1(7+1) – 2^0

= 7

Corrected Data

Decoding round 2: Correct bits

7 2+2 5 0 3 5+2 11

corrected 3 + 2 bit errors€

0111

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0010

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0000

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

1011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

A B C D

0010

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

Decoding round 2: Correct cell levels

7 2 5 0 3 5 11

corrected 3 + 2 bit errors

0111

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0000

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

1011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

Updating rule: new level = current level – e * 2^i

(2+2) – 2^1 = 2

(5+2) – 2^1 = 5

A B C D

Let the total number of cell levels be . Assume the magnitudes of n errors are , where for

◦ The total number of errors need to be corrected is

◦ Let , the total number of iterations is

Correcting asymmetric errors

e1, e2, ..., en

0 < ei ≤ q

i =1, 2, ..., n

q

h(b(ei))i=1

n

e = max i∈{1,..,n}

ei

log2 e⎡ ⎤

Computes Hamming weight

Computes binary representation

0123456789101112131415

A downward error with magnitude e (less than 0)

An upward error with magnitude (e mod q)

Let the total number of cell levels be . Assume the magnitudes of errors are , where

for .◦ The total number of errors need to be corrected is

◦ Let , the total # of iterations is

Correcting bidirectional errors

e1, e2, ..., en

−q+1≤ ei ≤ q −1

i =1, 2, ..., n€

q

h(b(ei mod q))i=1

n

e = max i∈{1,..,n}

(ei mod q)

log2 e⎡ ⎤Updating rule: new level = (current level – e * 2^i)

mod q

Suppose errors are bidirectional

012

0 0123

012345678

012345678910

12345678

012345

7+1 2 5-2 0 3 5+3 11-10

Decoding round 1: Correct bits

corrected 3 bit errors

7+1 2 5-2 0 3 5+3 11-1

0111

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0010

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0000

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

1011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

A B C D

Decoding round 1: Correct cell levels

7 2 5-2 0 3 5+2 11-2

0111

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0010

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0000

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

1011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

corrected 3 bit errors

(7+1) – 2^0 = 7

(5+3) – 2^0 = 7

(11-1) – 2^0 = 9

Updating rule: new level = (current level – e * 2^i) mod q

A B C D

Total number of cell levels

Decoding round 2: Correct bits

corrected 3 + 3 bit errors

7 2 5-2 0 3 5+2 11-2

0111

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0010

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0000

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

1011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

A B C D

Decoding round 2: Correct cell levels

7 2 0 3 5

0111

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0010

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0000

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

1011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

corrected 3 + 3 bit errors

5-2-2 11-2-2

(5-2) – 2^1 = 1

(11-2) – 2^1 = 7

A B C D

(5+2) – 2^0 = 5

Updating rule: new level = (current level – e * 2^i) mod q

Decoding round 3: Correct bits

corrected 3 + 3 +2 bit errors

7 2 0 3 5

0111

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0010

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0000

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

1011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

5-2-2 11-2-2

A B C D

corrected 3 + 3 +2 bit errors

7 2 0 3 5

0111

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0010

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0000

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

1011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

Decoding round 3: Correct cell levels

5-2-2-4 11-2-2-4

((5-2-2) – 2^2) mod 16 = 13 (11-2-2) – 2^2 = 3

B C DA

Updating rule: new level = (current level – e * 2^i) mod q

Decoding round 4: Correct bits

7 2 5-2-2-4 0 3 5 11-2-2-4

0111

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0010

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0000

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

1011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

corrected 3 + 3 + 2 + 2 bit errors

B C DA

corrected 3 + 3 + 2 + 2 bit errors

7 2 5-2-2-4-8 0 3 5 11-2-2-4-8

0111

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0010

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0000

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

1011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

Decoding round 4: Correct cell levels((5-2-2-4) – 2^3) mod 16 = 5

((11-2-2-4) – 2^3) mod 16 = 11

B C DA

Updating rule: new level = (current level – e * 2^i) mod q

...…………

km

km−1

k2

k1€

...

l1

l2

l3

ln−2

ln−1

ln−1

...

Encoding

Redundancy

AllocationSeparateEncoding

Compute Cell Levels

ProgramCells

ECCECCECCECCECC

Compare the rates with those of◦ Binary codes

◦ Gray codes

◦ ALM-ECC with hard decoding An error of any magnitude is seen as a Hamming error in the

inner code.

◦ ALM-ECC with soft decoding The error distribution is used for optimal decoding. (But the

inner ECC is not binary if the maximum magnitude of errors is more than 1).

Evaluation

Y. Cassuto, M. Schwartz, V. Bohossian and J. Bruck, "Codes for asymmetric limited-magnitude errors with application to multilevel flash memories," in IEEE Trans. Information Theory, vol. 56, no. 4, pp. 1582-95, 2010.

Cell levels: 16

Maximum magnitude of asymmetric errors: 3

Error distribution mimics a Gaussian distribution.◦ For , the

probability of an error of size equals .

Error Model

i = 0, 1, 2, 3

i

Pi

Effective◦ Good for correcting asymmetric errors.◦ Efficient decoding and encoding methods.

Flexible◦ Works with existing ECCs.◦ Naturally handles bidirectional errors.

General◦ Supports arbitrary error distribution.◦ Supports arbitrary numeral systems.

Conclusions

A. Jiang, Y. Li and J. Bruck, ”Bit-fixing codes for multi-level cells," in Proc. IEEE Information Theory Workshop (ITW), 2012.

Recommended