Systems and methods for recovering data from failed portions of a flash drive
First Claim
Patent Images
1. A method of recovering data from a failed page of flash memory, the method comprising:
- reading contents of flash pages of a page grid containing the failed page, wherein tertiary parity symbols are distributed among the pages of a last page stripe of the page grid, wherein each of the pages of the page grid have ECC codewords stored therein;
(a) performing error correction on each page stripe of the page grid according to a gear with which the page stripe was encoded;
(b) arranging the data of the page grid to form tertiary codewords;
(c) marking symbols of the tertiary codewords that are associated with the failed page as erasures;
(d) performing error correction decoding using mixed error and erasure decoding on the tertiary codewords to update the tertiary codewords;
(e) arranging the updated tertiary codewords to generate corrected versions of the page stripes;
(f) performing error correction on page stripes of the page grid according to the gear with which each page stripe was encoded;
performing one or more iterations of (b) through (f) until a stopping criterion is reached or a determination that the recovered data has been recovered without error; and
releasing the recovered data to a requester based at least partly on the determination that the recovered data has been recovered without error;
wherein at least (a) is performed in an integrated circuit.
7 Assignments
0 Petitions
Accused Products
Abstract
Apparatus and methods provide relatively low uncorrectable bit error rates, low write amplification, long life, fast and efficient retrieval, and efficient storage density such that a solid-state drive (SSD) can be implemented using relatively inexpensive MLC Flash for an enterprise storage application.
135 Citations
21 Claims
-
1. A method of recovering data from a failed page of flash memory, the method comprising:
-
reading contents of flash pages of a page grid containing the failed page, wherein tertiary parity symbols are distributed among the pages of a last page stripe of the page grid, wherein each of the pages of the page grid have ECC codewords stored therein; (a) performing error correction on each page stripe of the page grid according to a gear with which the page stripe was encoded; (b) arranging the data of the page grid to form tertiary codewords; (c) marking symbols of the tertiary codewords that are associated with the failed page as erasures; (d) performing error correction decoding using mixed error and erasure decoding on the tertiary codewords to update the tertiary codewords; (e) arranging the updated tertiary codewords to generate corrected versions of the page stripes; (f) performing error correction on page stripes of the page grid according to the gear with which each page stripe was encoded; performing one or more iterations of (b) through (f) until a stopping criterion is reached or a determination that the recovered data has been recovered without error; and releasing the recovered data to a requester based at least partly on the determination that the recovered data has been recovered without error; wherein at least (a) is performed in an integrated circuit. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. An apparatus comprising:
-
a first circuit configured to read contents of flash pages of a page grid containing a failed page of flash memory, wherein tertiary parity symbols are distributed among the pages of a last page stripe of the page grid, wherein each of the pages of the page grid have ECC codewords stored therein; a second circuit configured to (a) perform error correction on each page stripe of the page grid according to a gear with which the page stripe was encoded; the first circuit configured to (b) arrange the data of the page grid to form tertiary codewords; the first circuit configured to (c) mark symbols of the tertiary codewords that are associated with the failed page as erasures; the second circuit configured to (d) perform error correction decoding with mixed error and erasure decoding on the tertiary codewords to update the tertiary codewords; the first circuit configured to (e) arrange the updated tertiary codewords to generate corrected versions of the page stripes; the second circuit configured to (f) perform error correction on page stripes of the page grid according to the gear with which each page stripe was encoded; wherein the first circuit and the second circuit are configured to iterate performance of (b) through (f) until a stopping criterion is reached or a determination that the recovered data has been recovered without error; and the first circuit configured to release the recovered data to a requester based at least partly on the determination that data has been recovered without error. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. An apparatus for recovering data from a failed page of flash memory, the apparatus comprising:
-
a means for reading contents of flash pages of a page grid containing the failed page, wherein tertiary parity symbols are distributed among the pages of a last page stripe of the page grid, wherein each of the pages of the page grid have ECC codewords stored therein; a means for recovering data, the recovering data means further; (a) performing error correction on each page stripe of the page grid according to a gear with which the page stripe was encoded; (b) arranging the data of the page grid to form tertiary codewords; (c) marking symbols of the tertiary codewords that are associated with the failed page as erasures; (d) performing error correction decoding using mixed error and erasure decoding on the tertiary codewords to update the tertiary codewords; (e) arranging the updated tertiary codewords to generate corrected versions of the page stripes; (f) performing error correction on page stripes of the page grid according to the gear with which each page stripe was encoded; wherein the recovering data means further performing one or more iterations of (b) through (f) above until a stopping criterion is reached or a determination that the recovered data has been recovered without error; and a means for releasing the recovered data to a requester based at least partly on the determination that the recovered data has been recovered without error. - View Dependent Claims (16, 17, 18, 19, 20, 21)
-
Specification