MLCs with Bitfixing Coding Yue Li joint work with Anxiao Andrew Jiang and Jehoshua Bruck Flash memories have excellent performance Cells are programmed by injecting electrons Programming is fast ID: 249695
Download Presentation The PPT/PDF document "Correcting Errors in" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
Correcting Errors in MLCs with Bit-fixing Coding
Yue Lijoint work withAnxiao (Andrew) Jiang and Jehoshua BruckSlide2
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).
IntroductionSlide3
Number of Pulses
Voltage
7
6
5
4
3
2
1
0
Reprogram
Correct with ECC
Motivation: Cell
OverprogrammingSlide4
Correct
Overprogramming Errors
Number of Pulses
Voltage
Reduce reprogramming
Faster programmingSlide5
0
1
2
0
1
2
3
4
5
0
0
1
2
3
0
1
2
3
4
5
0
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
8
2
5
0
3
5
11
0Slide6
Asymmetric errors appear…
0
1
2
3
4
5
0
1
2
3
4
5
0
1
0
1
2
3
0
1
2
3
4
5
6
7
8
0
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
8
2
5
0
3
5
11
0
10
5
1
8
How to correct asymmetric errors
?
How to minimize redundancy in ECC
?Slide7
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0000
Binary Codes
0001
0011
0010
0110
0111
0101
0100
1
100
1101
1111
1110
1010
1011
1001
1000
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 errors
1
1
2
1
3
2
4
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
2
6
2
7
3
8
1Slide8
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. Slide9
Example of Bit-fixing Coding
0
1
2
0
1
2
3
4
5
0
0
1
2
3
0
1
2
3
4
5
0
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
7
2
5
0
3
5
11
0Slide10
B
it-wise ECC72
5
0
3
5
11
ECC
ECC
ECC
ECCSlide11
Assume
asymmetric errors
appear…
0
1
2
3
4
0
1
2
3
4
5
0
0
1
2
3
4
0
1
2
3
4
5
6
7
8
0
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
7
+1
2
+2
5
0
3
+1
5
+3
11
0Slide12
Binary Codes: there are
12 bit errors. Bit-fixing code: there are only 5 bit errors! It alternatively corrects bits
and cell levels
.
Gray Codes: there are
7
bit errors.
7
+1
2
+2
5
0
3
+1
5
+3
11Slide13
Decoding round 1: Correct bits
7+12+25
0
3
+1
5
+3
11
corrected
3
bit errors
A
B
C
DSlide14
Decoding round 1: Correct cell levels
7
2
+2
5
0
3
5
+2
11
(
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
1
st
bit = a magnitude-
2
error
2
nd
bit = a magnitude-
4
error
MSB = a magnitude-
8
error
corrected
3
bit errorsSlide15
Decoding round 1: Correct cell levels
7
2
+2
5
0
3
5
+2
11
corrected
3
bit errors
(
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 Slide16
7
Initial
Data
Receive Errors
Correct Bits
Correct Cells
7
7
+1
7
+1
(
7
+1
)
– 2^0 = 7
Corrected DataSlide17
Decoding round 2: Correct bits
72+25
0
3
5
+2
11
corrected
3 + 2
bit errors
A
B
C
DSlide18
Decoding round 2: Correct cell levels
72
5
0
3
5
11
corrected
3 + 2
bit errors
Updating rule: new level = current level –
e
* 2^i
(
2
+2
)
– 2^1 = 2
(
5
+2
)
– 2^1 = 5
A
B
C
DSlide19
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 isLet , the total number of iterations isCorrecting asymmetric errors
Computes Hamming weight
Computes binary representationSlide20
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
A downward error with magnitude
e
(less than 0)
An upward error with magnitude (
e
mod
q
)Slide21
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 isCorrecting bidirectional errors
Updating rule: new level = (current level –
e
* 2^i) mod
qSlide22
Suppose errors
are bidirectional 0
1
2
0
0
1
2
3
0
1
2
3
4
5
6
7
8
0
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
0
1
2
3
4
5
7
+1
2
5
-2
0
3
5
+3
11
-1
0Slide23
Decoding round 1: Correct bits
corrected 3 bit errors7
+1
2
5
-2
0
3
5
+3
11
-1
A
B
C
DSlide24
Decoding round 1: Correct cell levels
7
2
5
-2
0
3
5
+2
11
-2
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 levelsSlide25
Decoding round 2: Correct bits
corrected 3 + 3 bit errors7
2
5
-2
0
3
5
+2
11
-2
A
B
C
DSlide26
Decoding round 2: Correct cell levels
72
0
3
5
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
qSlide27
Decoding round 3: Correct bits
corrected 3 + 3 +2 bit errors7
2
0
3
5
5
-2-2
11
-2-2
A
B
C
DSlide28
corrected 3 + 3 +2 bit errors
72
0
3
5
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
D
A
Updating rule: new level = (current level –
e
* 2^i) mod
qSlide29
Decoding round 4: Correct bits
72
5
-2-2-4
0
3
5
11
-2-2-4
corrected
3 + 3 + 2 + 2
bit errors
B
C
D
ASlide30
corrected 3 + 3 + 2 + 2 bit errors
72
5
-2-2-4-8
0
3
5
11
-2-2-4-8
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
D
A
Updating rule: new level = (current level –
e
* 2^i) mod
qSlide31
...
…
…
…
…
Encoding
Redundancy
Allocation
Separate
Encoding
Compute Cell Levels
Program
Cells
ECC
ECC
ECC
ECC
ECCSlide32
Compare the rates with those ofBinary codesGray codes
ALM-ECC with hard decodingAn error of any magnitude is seen as a Hamming error in the inner code.ALM-ECC with soft decodingThe 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.Slide33
Cell levels: 16Maximum magnitude of asymmetric errors: 3
Error distribution mimics a Gaussian distribution.For , the probability of an error of size equals .Error ModelSlide34Slide35
EffectiveGood for correcting asymmetric errors.Efficient decoding and encoding methods.
FlexibleWorks with existing ECCs.Naturally handles bidirectional errors.GeneralSupports 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.Slide36
B
it-fixing code: there are 10 bit errors.
Gray Codes: there are
7
bit errors.
Binary Codes: there are
12
bit errors.
7
+1
2
5
-2
0
3
5
+3
11
-1Slide37
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0
Physical states
8
4
12
2
10
6
14
1
9
5
13
3
11
7
15
0
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0000
Binary Codes
Gray Codes
0001
0011
0010
0110
0111
0101
0100
1
100
1101
1111
1110
1010
1011
1001
1000
0000
0001
0011
0010
0110
0111
0101
0100
0
001
1001
0101
1101
0
011
1011
0
111
1111
0000
Relabeled BFC
1.7 bits/bidirectional cell error
0.93 bit/BCE
1.37 bits/BCE
2.50 bits/BCE
Original BFC