IP Library Granted Patent US 8,898,546
Granted Patent B1
US 8,898,546 · App. 13/607,302 · Granted Nov 25, 2014

Error recovery using erasures for NAND flash

Inventors: Yu Kou (San Jose, CA); Xiangyu Tang (San Jose, CA)
Assignee: SK hynix memory solutions inc.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,898,546
App. No.
13/607,302
Granted
Nov 25, 2014
Kind
B1
Abstract

Data is processed by selecting one or more bits in a codeword to replace with an erasure. The selected bits in the codeword are replaced with the erasure and error correction decoding is performed on the codeword with the erasure in place for the selected bits.

Claims (88)

1. A system for processing data, comprising:

a processor; and

a memory coupled with the processor, wherein the memory is configured to provide the processor with instructions which when executed cause the processor to:

select one or more bits in a codeword to replace with an erasure, including by:

selecting the one or more bits in the codeword based at least in part on a

plurality of accumulated values corresponding to a plurality of bit lines; and

generating the plurality of accumulated values, including by accumulating, for a bit line being analyzed, a magnitude of a difference between a soft value after error correction decoding and a soft value before error correction decoding;

replace the selected bits in the codeword with the erasure; and

perform error correction decoding on the codeword with the erasure in place for the selected bits.

2. The system recited in claim 1 , wherein the plurality of accumulated values takes into consideration only magnitudes of differences associated with successfully decoded codewords.

3. The system recited in claim 1 , wherein the instructions for selecting further include instructions for:

identifying a largest accumulated value in the plurality of accumulated values; and

selecting at least a bit corresponding to the largest accumulated value.

4. The system recited in claim 1 , wherein the instructions for selecting further include instructions for:

identifying those accumulated values from the plurality of accumulated values which are greater than an accumulation threshold; and

selecting those bits in the codeword which correspond to the accumulated values which are greater than the accumulation threshold.

5. The system recited in claim 1 , wherein the instructions for selecting further include instructions for selecting the one or more bits in the codeword based at least in part on a record associated with previously selected bits.

6. The system recited in claim 5 , wherein the memory is further configured to provide the processor with instructions which when executed cause the processor to:

record, in the record associated with previously selected bits, a bit selected to be replaced with an erasure;

determine if a codeword containing an erasure in place of the recorded bit is successfully decoded; and

in the event the codeword containing an erasure in place of the recorded bit is not successfully decoded, remove the recorded bit from the record associated with previously selected bits.

7. The system recited in claim 1 , wherein the system includes a multi level cell (MLC) system.

8. The system recited in claim 7 , wherein the plurality of accumulated values takes into consideration only magnitudes of differences associated with a midpoint threshold in a voltage distribution.

9. A system for processing data, comprising:

a processor; and

a memory coupled with the processor, wherein the memory is configured to provide the processor with instructions which when executed cause the processor to:

select one or more bits in a codeword to replace with an erasure, including by:

writing a known bit pattern to at least a location on solid state storage media at which the codeword is located;

reading from the location on the solid state storage media at which the codeword is located to obtain a read bit pattern;

comparing the read bit pattern with the write bit pattern; and

selecting those bits which did not match when comparing the read bit pattern with the write bit pattern;

replace the selected bits in the codeword with the erasure; and

perform error correction decoding on the codeword with the erasure in place for the selected bits.

10. The system recited in claim 9 , wherein:

the write bit pattern is a first write bit pattern;

the read bit pattern is a first read bit pattern; and

the instructions for selecting include further instructions for:

writing a second known bit pattern to at least the location on the solid state storage media at which the codeword is located;

reading from the location on the solid state storage media at which the codeword is located to obtain a second read bit pattern; and

comparing the second read bit pattern with the second write bit pattern, wherein selecting includes selecting those bits which did not match during at least one of the following comparisons: the comparison of the first read bit pattern with the first write bit pattern or the comparison of the second read bit pattern with the second write bit pattern.

11. A method for processing data, comprising:

selecting one or more bits in a codeword to replace with an erasure, including by:

selecting the one or more bits in the codeword based at least in part on a plurality of accumulated values corresponding to a plurality of bit lines; and

generating the plurality of accumulated values, including by accumulating, for a bit line being analyzed, a magnitude of a difference between a soft value after error correction decoding and a soft value before error correction decoding;

replacing the selected bits in the codeword with the erasure; and

using a processor to perform error correction decoding on the codeword with the erasure in place for the selected bits.

12. The method recited in claim 11 , wherein the plurality of accumulated values takes into consideration only magnitudes of differences associated with successfully decoded codewords.

13. The method recited in claim 11 , wherein selecting further includes:

identifying a largest accumulated value in the plurality of accumulated values; and

selecting at least a bit corresponding to the largest accumulated value.

14. The method recited in claim 11 , wherein selecting further includes:

identifying those accumulated values from the plurality of accumulated values which are greater than an accumulation threshold; and

selecting those bits in the codeword which correspond to the accumulated values which are greater than the accumulation threshold.

15. The method recited in claim 11 , wherein selecting further includes selecting the one or more bits in the codeword based at least in part on a record associated with previously selected bits.

16. The method recited in claim 15 further comprising:

recording, in the record associated with previously selected bits, a bit selected to be replaced with an erasure;

determining if a codeword containing an erasure in place of the recorded bit is successfully decoded; and

in the event the codeword containing an erasure in place of the recorded bit is not successfully decoded, removing the recorded bit from the record associated with previously selected bits.

17. The method recited in claim 16 , wherein the plurality of accumulated values takes into consideration only magnitudes of differences associated with a midpoint threshold in a voltage distribution.

18. A method for processing data, comprising:

selecting one or more bits in a codeword to replace with an erasure, including by:

writing a known bit pattern to at least a location on solid state storage media at which the codeword is located;

reading from the location on the solid state storage media at which the codeword is located to obtain a read bit pattern;

comparing the read bit pattern with the write bit pattern; and

selecting those bits which did not match when comparing the read bit pattern with the write bit pattern;

replacing the selected bits in the codeword with the erasure; and

using a processor to perform error correction decoding on the codeword with the erasure in place for the selected bits.

19. The method recited in claim 18 , wherein:

the write bit pattern is a first write bit pattern;

the read bit pattern is a first read bit pattern; and

selecting further includes:

writing a second known bit pattern to at least the location on the solid state storage media at which the codeword is located;

reading from the location on the solid state storage media at which the codeword is located to obtain a second read bit pattern; and

comparing the second read bit pattern with the second write bit pattern, wherein selecting includes selecting those bits which did not match during at least one of the following comparisons: the comparison of the first read bit pattern with the first write bit pattern or the comparison of the second read bit pattern with the second write bit pattern.

20. A computer program product for processing data, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:

selecting one or more bits in a codeword to replace with an erasure, including by:

selecting the one or more bits in the codeword based at least in part on a plurality of accumulated values corresponding to a plurality of bit lines; and

generating the plurality of accumulated values, including by accumulating, for a bit line being analyzed, a magnitude of a difference between a soft value after error correction decoding and a soft value before error correction decoding;

replacing the selected bits in the codeword with the erasure; and

performing error correction decoding on the codeword with the erasure in place for the selected bits.

21. A computer program product for processing data, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:

selecting one or more bits in a codeword to replace with an erasure, including by:

writing a known bit pattern to at least a location on solid state storage media at which the codeword is located;

reading from the location on the solid state storage media at which the codeword is located to obtain a read bit pattern;

comparing the read bit pattern with the write bit pattern; and

selecting those bits which did not match when comparing the read bit pattern with the write bit pattern;

replacing the selected bits in the codeword with the erasure; and

performing error correction decoding on the codeword with the erasure in place for the selected bits.

Assignments (2)
CHANGE OF NAME Recorded Feb 26, 2013
From: LINK_A_MEDIA DEVICES CORPORATION
To: SK HYNIX MEMORY SOLUTIONS INC.
Reel/Frame 029881/0691 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 15, 2012
From: KOU, YU; TANG, XIANGYU
To: LINK_A_MEDIA DEVICES CORPORATION
Reel/Frame 029306/0610 →
Continuity (1)
Provisional Application 61539833 · Sep 27, 2011