correcting errors in mlcs with bit-fixing coding

34
Correcting Errors in MLCs with Bit-fixing Coding Yue Li joint work with Anxiao (Andrew) Jiang and Jehoshua Bruck

Upload: vernon

Post on 24-Feb-2016

43 views

Category:

Documents


0 download

DESCRIPTION

Correcting Errors in MLCs with Bit-fixing Coding. Yue Li joint work with Anxiao (Andrew) Jiang and Jehoshua Bruck. Introduction. Flash memories have excellent performance. Cells are programmed by injecting electrons. Programming is fast. Erasure is expensive. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Correcting Errors in  MLCs  with Bit-fixing Coding

Correcting Errors in MLCs with Bit-fixing Coding

Yue Lijoint work with

Anxiao (Andrew) Jiang and Jehoshua Bruck

Page 2: Correcting Errors in  MLCs  with Bit-fixing Coding

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

Page 3: Correcting Errors in  MLCs  with Bit-fixing Coding

Number of Pulses

Voltage

76543210

Reprogram

Correct with ECC

Motivation: Cell Overprogramming

Page 4: Correcting Errors in  MLCs  with Bit-fixing Coding

012

012345

0 0123

012345

01234567891011

12345678

8 2 5 0 3 5 110

Page 5: Correcting Errors in  MLCs  with Bit-fixing Coding

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?

Page 6: Correcting Errors in  MLCs  with Bit-fixing Coding

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

Page 7: Correcting Errors in  MLCs  with Bit-fixing Coding

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.

Page 8: Correcting Errors in  MLCs  with Bit-fixing Coding

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

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

Page 9: Correcting Errors in  MLCs  with Bit-fixing Coding

0000

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

Bit-wise ECC

7 2 5 0 3 5 11

ECC€

0111

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0010

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

0101

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

1011

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟ECCECCECC

Page 10: Correcting Errors in  MLCs  with Bit-fixing Coding

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

Page 11: Correcting Errors in  MLCs  with Bit-fixing Coding

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

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

Page 12: Correcting Errors in  MLCs  with Bit-fixing Coding

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

Page 13: Correcting Errors in  MLCs  with Bit-fixing Coding

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

Page 14: Correcting Errors in  MLCs  with Bit-fixing Coding

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

Page 15: Correcting Errors in  MLCs  with Bit-fixing Coding

7

Initial Data

Receive Errors

Correct Bits

Correct Cells

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

= 7

Corrected Data

Page 16: Correcting Errors in  MLCs  with Bit-fixing Coding

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

Page 17: Correcting Errors in  MLCs  with Bit-fixing Coding

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

Page 18: Correcting Errors in  MLCs  with Bit-fixing Coding

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

Page 19: Correcting Errors in  MLCs  with Bit-fixing Coding

0123456789101112131415

A downward error with magnitude e (less than 0)

An upward error with magnitude (e mod q)

Page 20: Correcting Errors in  MLCs  with Bit-fixing Coding

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

Page 21: Correcting Errors in  MLCs  with Bit-fixing Coding

Suppose errors are bidirectional

012

0 0123

012345678

012345678910

12345678

012345

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

Page 22: Correcting Errors in  MLCs  with Bit-fixing Coding

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

Page 23: Correcting Errors in  MLCs  with Bit-fixing Coding

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

Page 24: Correcting Errors in  MLCs  with Bit-fixing Coding

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

Page 25: Correcting Errors in  MLCs  with Bit-fixing Coding

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

Page 26: Correcting Errors in  MLCs  with Bit-fixing Coding

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

Page 27: Correcting Errors in  MLCs  with Bit-fixing Coding

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

Page 28: Correcting Errors in  MLCs  with Bit-fixing Coding

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

Page 29: Correcting Errors in  MLCs  with Bit-fixing Coding

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

Page 30: Correcting Errors in  MLCs  with Bit-fixing Coding

...…………

km

km−1

k2

k1€

...

l1

l2

l3

ln−2

ln−1

ln−1

...

Encoding

Redundancy

AllocationSeparateEncoding

Compute Cell Levels

ProgramCells

ECCECCECCECCECC

Page 31: Correcting Errors in  MLCs  with Bit-fixing Coding

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.

Page 32: Correcting Errors in  MLCs  with Bit-fixing Coding

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

Page 33: Correcting Errors in  MLCs  with Bit-fixing Coding
Page 34: Correcting Errors in  MLCs  with Bit-fixing Coding

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.