System and method for correcting errors in data using a compound code
First Claim
1. A method of storing data, the method comprising:
- dividing a chunk of data into a plurality of segments;
computing redundant data for each of the plurality of segments using a first code type;
computing redundant data for the chunk of data using a second code type;
computing redundant data for the redundant data of the chunk of data using a third code type; and
,storing the plurality of segments, the redundant data of each of the plurality of segments, and the redundant data for the redundant data of the chunk of data,wherein the computed redundant data for the chunk of data is not stored.
11 Assignments
0 Petitions
Accused Products
Abstract
Storage of digital data in non-volatile media such as NAND FLASH needs to take account of the errors in data retrieved from the memory. The error rate tends to increase with the number of write/erase cycles of a cell of memory and with the time that the data has been stored. To achieve a very low uncorrected bit error rate (UBER) a substantial amount of redundancy data needs to be stored for error correction purposes. A method and apparatus is disclosed where a first redundancy data is represented by a second redundancy data computed from the first redundancy data. The first redundancy data may not be stored and is reconstructed from the stored data using a same generation procedure as previously used. The reconstructed estimate of the first redundancy data is corrected by the second redundancy data, and is used to correct the underlying data.
39 Citations
21 Claims
-
1. A method of storing data, the method comprising:
-
dividing a chunk of data into a plurality of segments; computing redundant data for each of the plurality of segments using a first code type; computing redundant data for the chunk of data using a second code type; computing redundant data for the redundant data of the chunk of data using a third code type; and
,storing the plurality of segments, the redundant data of each of the plurality of segments, and the redundant data for the redundant data of the chunk of data, wherein the computed redundant data for the chunk of data is not stored. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method of retrieving data, the method comprising:
-
receiving a chunk of data, the chunk of data comprising a plurality of segments of data, each segment of data having associated redundant data, and redundant data for redundant data for the chunk of data, but not including the redundant data for the chunk of data; correcting the segments of data using the associated redundant data for each segment; determining if all errors in the chunk of data have been corrected; and
;if all of the errors in the chunk of data have been corrected, output the data of the chunk of data; else; computing an estimate of the redundant data for the chunk of received data using a same procedure as was used to previously compute the redundant data for the chunk of data; correcting the estimate of the redundant data using the redundant data for the redundant data of the chunk of data; using the same procedure used to compute the redundant data of the chunk of data and the estimate of the redundant data to correct the chunk of data; correcting the segments of data using the associated redundant data for each segment; and
,repeating until no errors remain in the segments of data. - View Dependent Claims (7, 8)
-
-
9. A memory system, comprising:
-
a memory module having an interface and a memory circuit; a first data redundancy computation unit, configured to compute redundant data for each one of a plurality of data segments of a chunk of data; a second data redundancy computation unit, configured to compute redundant data for the chunk of data; and
,a third data redundancy computation unit configured to compute redundant data for the redundant data of the chunk of data, wherein the chunk of data, the redundant data for the data segments of the chunk of data and the redundant data for the redundant data of the chunk of data are stored in the memory circuit, and the redundant data for the chunk of data is not stored in the memory circuit. - View Dependent Claims (10, 11, 12, 13, 14)
-
-
15. A computer program product stored on a non-volatile computer readable medium, comprising:
-
instructions to be executed by a processor for; dividing a chunk of data into a plurality of segments; computing redundant data for each of the plurality of segments using a first code type; computing redundant data for the chunk of data using a second code type; computing redundant data for the redundant data of the chunk of data using a third code type; and
,storing or transmitting the plurality of segments, the redundant data of each of the plurality of segments, and the redundant data for the redundant data of the chunk of data, wherein the redundant data for the chunk of data is not stored or transmitted.
-
-
16. A computer program product stored on a non-volatile computer readable medium, comprising:
-
instructions to be executed by a processor for; receiving a chunk of data, the chunk of data comprising a plurality of segments of data, each segment of data having associated redundant data, and redundant data for redundant data for the chunk of data, but not including the redundant data for the chunk of data; correcting the segments of data using the associated redundant data for each segment; determining if all errors in the chunk of data have been corrected; and
;if all of the errors in the chunk of data have been corrected, output the data of the chunk of data; else; computing an estimate of the redundant data for the chunk of received data using a same procedure as was used to previously compute the redundant data for the chunk of data; correcting the estimate of the redundant data using the redundant data for the redundant data of the chunk of data; using the same procedure used to compute the redundant data of the chunk of data and the estimate of the redundant data to correct the chunk of data; correcting the segments of data using the associated redundant data for each segment; and
,repeating until no errors remain in the segments of data.
-
-
17. A method of storing data, the method comprising:
-
dividing a chunk of data into a plurality of segments; computing redundant data for each of the plurality of segments using a first code type; computing redundant data for the chunk of data using a second code type; computing redundant data for the redundant data of the chunk of data using a third code type; and
,transmitting the plurality of segments, the redundant data of each of the plurality of segments, and the redundant data for the redundant data of the chunk of data, wherein the computed redundant data for the chunk of data is not transmitted. - View Dependent Claims (18, 19, 20, 21)
-
Specification