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. ◦ 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).
Number of Pulses Voltage Reprogram Correct with ECC
Correct Overprogramming Errors Number of Pulses Voltage Reduce reprogramming Faster programming
Asymmetric errors appear… How to correct asymmetric errors ? ? How to minimize redundancy in ECC ?
Binary Codes 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 The number of bit errors depends only on the size of the cell error. 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 The number of bit errors depends on the size of the error and the cell level
This work generalizes the code constructions in: [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, [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 , [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 , 2011.
Example of Bit-fixing Coding
Bit-wise ECC
Assume asymmetric errors appear…
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
Decoding round 1: Correct bits corrected 3 bit errors A B C D
Decoding round 1: Correct cell levels (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 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 errors
Decoding round 1: Correct cell levels 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
7 Initial Data Receive Errors Correct Bits Correct Cells (7+1) – 2^0 = 7 Corrected Data
Decoding round 2: Correct bits corrected bit errors A B C D
Decoding round 2: Correct cell levels corrected bit errors Updating rule: new level = current level – e * 2^i (2+2) – 2^1 = 2 (5+2) – 2^1 = 5 A BC 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 Computes Hamming weight Computes binary representation
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 Updating rule: new level = (current level – e * 2^i) mod q
Suppose errors are bidirectional
Decoding round 1: Correct bits corrected 3 bit errors A B CD
Decoding round 1: Correct cell levels 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 CD Total number of cell levels
Decoding round 2: Correct bits corrected bit errors A B CD
Decoding round 2: Correct cell levels corrected bit errors (5-2) – 2^1 = 1 (11-2) – 2^1 = 7 A B CD (5+2) – 2^0 = 5 Updating rule: new level = (current level – e * 2^i) mod q
Decoding round 3: Correct bits corrected bit errors A B CD
corrected bit errors Decoding round 3: Correct cell levels ((5-2-2) – 2^2) mod 16 = 13 (11-2-2) – 2^2 = 3 B CD A Updating rule: new level = (current level – e * 2^i) mod q
Decoding round 4: Correct bits corrected bit errors B CD A
Decoding round 4: Correct cell levels (( ) – 2^3) mod 16 = 5 (( ) – 2^3) mod 16 = 11 B CD A Updating rule: new level = (current level – e * 2^i) mod q
... … … … … Redundancy Allocation Separate Encoding Compute Cell Levels Program Cells
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). 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 , 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.
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. A. Jiang, Y. Li and J. Bruck, ”Bit-fixing codes for multi-level cells," in Proc. IEEE Information Theory Workshop (ITW), 2012.
Bit-fixing code: there are 10 bit errors. Gray Codes: there are 7 bit errors. Binary Codes: there are 12 bit errors
Physical states Binary Codes Gray Codes Relabeled BFC 1.7 bits/bidirectional cell error 0.93 bit/BCE 1.37 bits/BCE 2.50 bits/BCE Original BFC