Systems and methods for low latency, high reliability error correction in a flash drive
First Claim
Patent Images
1. A method of decoding data with low latency, the method comprising:
- receiving a request for data stored in at least one of a plurality of flash memory devices;
identifying a page stripe that includes the requested data, wherein the page stripe comprises a grouping of one or more equally-sized flash pages or integer fractions of flash pages, wherein each page or each integer fraction of the page stripe contains primary parity symbols for error correction of data stored within the page or integer fraction, and wherein the pages or integer fractions of the page stripe contain secondary parity symbols for error correction of data stored throughout the page stripe;
determining a portion of the page stripe that contains an integer number of a first set of primary codewords containing the requested data and associated primary parity symbols such that retrieval and decoding of the requested data is performed with a first amount of latency;
retrieving from flash memory the first set of primary codewords containing the requested data;
performing error correction on the first set of primary codewords to determine if the raw requested data contains errors and if the errors, if any, are correctable, to generate first corrected requested data;
releasing the first corrected requested data based at least partly on a determination that the first corrected requested data has been decoded with a likelihood of error below a predetermined acceptable uncorrectable bit error rate (aUBER) when the first corrected requested data cannot be considered to be error free to within the aUBER, performing the following;
reading the page stripe containing the requested data such that a second set of primary codewords is retrieved, wherein reading of page stripe is performed with a second latency longer than the first latency;
performing error correction on the second set of primary codewords of the page stripe to generate an updated page stripe;
interleaving data from the updated page stripe to arrange secondary codewords;
performing error correction on the secondary codewords to generate corrected secondary codewords, wherein execution of error correction on the secondary codewords is not performed in parallel with execution of error correction on the primary codewords;
de-interleaving the corrected secondary codewords to generate a further updated page stripe having an updated second set of primary codewords;
performing error correction on at least a portion of the updated second set of primary codewords to generate updated corrected requested data; and
releasing the second corrected requested data based at least partly on a determination that the likelihood of the requested data containing an error is less than a predetermined acceptable failure rate;
wherein at least performing error correction is performed by an integrated circuit;
wherein at least performing error correction is performed concurrently with a read operation for an end user.
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.
140 Citations
69 Claims
-
1. A method of decoding data with low latency, the method comprising:
-
receiving a request for data stored in at least one of a plurality of flash memory devices; identifying a page stripe that includes the requested data, wherein the page stripe comprises a grouping of one or more equally-sized flash pages or integer fractions of flash pages, wherein each page or each integer fraction of the page stripe contains primary parity symbols for error correction of data stored within the page or integer fraction, and wherein the pages or integer fractions of the page stripe contain secondary parity symbols for error correction of data stored throughout the page stripe; determining a portion of the page stripe that contains an integer number of a first set of primary codewords containing the requested data and associated primary parity symbols such that retrieval and decoding of the requested data is performed with a first amount of latency; retrieving from flash memory the first set of primary codewords containing the requested data; performing error correction on the first set of primary codewords to determine if the raw requested data contains errors and if the errors, if any, are correctable, to generate first corrected requested data; releasing the first corrected requested data based at least partly on a determination that the first corrected requested data has been decoded with a likelihood of error below a predetermined acceptable uncorrectable bit error rate (aUBER) when the first corrected requested data cannot be considered to be error free to within the aUBER, performing the following; reading the page stripe containing the requested data such that a second set of primary codewords is retrieved, wherein reading of page stripe is performed with a second latency longer than the first latency; performing error correction on the second set of primary codewords of the page stripe to generate an updated page stripe; interleaving data from the updated page stripe to arrange secondary codewords; performing error correction on the secondary codewords to generate corrected secondary codewords, wherein execution of error correction on the secondary codewords is not performed in parallel with execution of error correction on the primary codewords; de-interleaving the corrected secondary codewords to generate a further updated page stripe having an updated second set of primary codewords; performing error correction on at least a portion of the updated second set of primary codewords to generate updated corrected requested data; and releasing the second corrected requested data based at least partly on a determination that the likelihood of the requested data containing an error is less than a predetermined acceptable failure rate; wherein at least performing error correction is performed by an integrated circuit; wherein at least performing error correction is performed concurrently with a read operation for an end user. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
-
-
23. An apparatus comprising:
-
a first circuit configured to receive a request for data stored in at least one of a plurality of flash memory devices; the first circuit configured to identify a page stripe that includes the requested data, wherein the page stripe comprises a grouping of one or more equally-sized flash pages or integer fractions of flash pages, wherein each page or each integer fraction of the page stripe contains primary parity symbols for error correction of data stored within the page or integer fraction, and wherein the pages or integer fractions of the page stripe contain secondary parity symbols for error correction of data stored throughout the page stripe; the first circuit configured to determine a portion of the page stripe that contains an integer number of a first set of primary codewords containing the requested data and associated primary parity symbols such that retrieval and decoding of the requested data is performed with a first amount of latency; the first circuit configured to retrieve from flash memory the first set of primary codewords containing the requested data; a second circuit configured to perform error correction on the first set of primary codewords to determine if the raw requested data contains errors and if the errors, if any, are correctable, to generate first corrected requested data; the first circuit configured to release the first corrected requested data based at least partly on a determination that the first corrected requested data has been decoded with a likelihood of error below a predetermined acceptable uncorrectable bit error rate (aUBER), and when the first corrected requested data cannot be considered to be error free to within the aUBER; the first circuit is configured to read the page stripe containing the requested data such that a second set of primary codewords is retrieved, wherein reading of page stripe is performed with a second latency longer than the first latency; the second circuit is configured to perform error correction on the second set of primary codewords of the page stripe to generate an updated page stripe; the first circuit is configured to interleave data from the updated page stripe to arrange secondary codewords; the second circuit is configured to perform error correction on the secondary codewords to generate corrected secondary codewords, wherein execution of error correction on the secondary codewords is not performed in parallel with execution of error correction on the primary codewords; the first circuit is configured to de-interleave the corrected secondary codewords to generate a further updated page stripe having an updated second set of primary codewords; the second circuit is configured to perform error correction on at least a portion of the updated second set of primary codewords to generate updated corrected requested data; and the first circuit is configured to release the second corrected requested data based at least partly on a determination that the likelihood of the requested data containing an error is less than a predetermined acceptable failure rate; wherein the second circuit is configured to perform error correction concurrently with a read operation for an end user. - View Dependent Claims (24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44)
-
-
45. An apparatus for decoding data with low latency, the apparatus comprising:
-
a means for receiving a request for data stored in at least one of a plurality of flash memory devices; a means for identifying a page stripe that includes the requested data, wherein the page stripe comprises a grouping of one or more equally-sized flash pages or integer fractions of flash pages, wherein each page or each integer fraction of the page stripe contains primary parity symbols for error correction of data stored within the page or integer fraction, and wherein the pages or integer fractions of the page stripe contain secondary parity symbols for error correction of data stored throughout the page stripe; a means for determining a portion of the page stripe that contains an integer number of a first set of primary codewords containing the requested data and associated primary parity symbols such that retrieval and decoding of the requested data is performed with a first amount of latency; a means for retrieving from flash memory the first set of primary codewords containing the requested data; a means for performing error correction on the first set of primary codewords to determine if the raw requested data contains errors and if the errors, if any, are correctable, to generate first corrected requested data; a means for interleaving; a means for de-interleaving; a means for releasing the first corrected requested data based at least partly on a determination that the first corrected requested data has been decoded with a likelihood of error below a predetermined acceptable uncorrectable bit error rate (aUBER) when the first corrected requested data cannot be considered to be error free to within the aUBER; the retrieving means is configured to read the page stripe containing the requested data such that a second set of primary codewords is retrieved, wherein reading of page stripe is performed with a second latency longer than the first latency; the error correction means is configured to perform error correction on the second set of primary codewords of the page stripe to generate an updated page stripe; the interleaving means is configured to interleave data from the updated page stripe to arrange secondary codewords; the error correction means configured to perform error correction on the secondary codewords to generate corrected secondary codewords, wherein execution of error correction on the secondary codewords is not performed in parallel with execution of error correction on the primary codewords; the de-interleaving means is configured to de-interleave the corrected secondary codewords to generate a further updated page stripe having an updated second set of primary codewords; the error correction means configured to perform error correction on at least a portion of the updated second set of primary codewords to generate updated corrected requested data; and the releasing means configured to release the second corrected requested data based at least partly on a determination that the likelihood of the requested data containing an error is less than a predetermined acceptable failure rate; wherein at least performing error correction is performed concurrently with a read operation for an end user. - View Dependent Claims (46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66)
-
-
67. A method of reading data, the method comprising:
-
receiving a request for data stored in at least one of a plurality of flash memory devices; identifying a page stripe that includes at least a portion of the requested data, wherein the page stripe comprises a grouping of one or more equally-sized flash pages or integer fractions of pages of flash pages, wherein each page or each integer fraction of the page stripe contains primary parity symbols for error correction of data stored within the page or integer fraction, and wherein the pages or integer fractions of the page stripe contain secondary parity symbols for error correction of data stored throughout the page stripe; retrieving contents of the page stripe in raw form; performing error correction on the primary codewords of the page stripe to generate an updated page stripe containing corrected requested data; determining whether or not at least the corrected requested data contains error; releasing the corrected requested data based at least partly on a determination that the likelihood of the requested data containing an error is less than a predetermined acceptable failure rate; when the first corrected requested data is not released, performing the following; interleaving data from the updated page stripe to arrange secondary codewords; performing error correction decoding on the secondary codewords to generate updated secondary codewords, wherein execution of error correction on the secondary codewords is not performed in parallel with execution of error correction on the primary codewords; de-interleaving the corrected secondary codewords to generate a further updated page stripe having an updated primary codewords; performing error correction on at least a portion of the updated primary codewords to generate updated corrected requested data; and releasing the updated corrected requested data based at least partly on the determination that the likelihood of the requested data containing an error is less than a predetermined acceptable failure rate; wherein at least performing error correction is performed by an integrated circuit; wherein at least performing error correction is performed concurrently with a read operation for an end user.
-
-
68. An apparatus comprising:
-
a first circuit configured to receive a request for data stored in at least one of a plurality of flash memory devices; the first circuit configured to identify a page stripe that includes at least a portion of the requested data, wherein the page stripe comprises a grouping of one or more equally-sized flash pages or integer fractions of pages of flash pages, wherein each page or each integer fraction of the page stripe contains primary parity symbols for error correction of data stored within the page or integer fraction, and wherein the pages or integer fractions of the page stripe contain secondary parity symbols for error correction of data stored throughout the page stripe; the first circuit configured to retrieve contents of the page stripe in raw form; a second circuit configured to perform error correction on the primary codewords of the page stripe to generate an updated page stripe containing corrected requested data; the first circuit configured to determine whether or not at least the corrected requested data contains error; the first circuit configured to release the corrected requested data based at least partly on a determination that the likelihood of the requested data containing an error is less than a predetermined acceptable failure rate; when the first corrected requested data is not released; the first circuit is configured to interleave data from the updated page stripe to arrange secondary codewords; the second circuit is configured to perform error correction decoding on the secondary codewords to generate updated secondary codewords, wherein execution of error correction on the secondary codewords is not performed in parallel with execution of error correction on the primary codewords; the first circuit is configured to de-interleave the corrected secondary codewords to generate a further updated page stripe having an updated primary codewords; the second circuit is configured to perform error correction on at least a portion of the updated primary codewords to generate updated corrected requested data; and the first circuit is configured to release the updated corrected requested data based at least partly on the determination that the likelihood of the requested data containing an error is less than a predetermined acceptable failure rate; wherein the second circuit is configured to perform error correction concurrently with a read operation for an end user.
-
-
69. An apparatus for reading data, the apparatus comprising:
-
a means for receiving a request for data stored in at least one of a plurality of flash memory devices; a means for identifying a page stripe that includes at least a portion of the requested data, wherein the page stripe comprises a grouping of one or more equally-sized flash pages or integer fractions of pages of flash pages, wherein each page or each integer fraction of the page stripe contains primary parity symbols for error correction of data stored within the page or integer fraction, and wherein the pages or integer fractions of the page stripe contain secondary parity symbols for error correction of data stored throughout the page stripe; a means for retrieving contents of the page stripe in raw form; a means for performing error correction on the primary codewords of the page stripe to generate an updated page stripe containing corrected requested data; a means for determining whether or not at least the corrected requested data contains error; a means for interleaving; a means for de-interleaving; a means for releasing the corrected requested data based at least partly on a determination that the likelihood of the requested data containing an error is less than a predetermined acceptable failure rate; when the first corrected requested data is not released; the interleaving means is configured to interleave data from the updated page stripe to arrange secondary codewords; the error correction means is configured to perform error correction decoding on the secondary codewords to generate updated secondary codewords, wherein execution of error correction on the secondary codewords is not performed in parallel with execution of error correction on the primary codewords; the de-interleaving means is configured to de-interleave the corrected secondary codewords to generate a further updated page stripe having an updated primary codewords; the error correction means is configured to perform error correction on at least a portion of the updated primary codewords to generate updated corrected requested data; and the releasing means is configured to release the updated corrected requested data based at least partly on the determination that the likelihood of the requested data containing an error is less than a predetermined acceptable failure rate; wherein the error correction means is configured to perform error correction concurrently with a read operation for an end user.
-
Specification