Systems and methods for transparently varying error correction code strength in a flash drive
First Claim
Patent Images
1. A method of reading data from an array of flash memory devices, the method comprising:
- receiving a request for data stored in the flash array, the requested data being identified by a virtual address;
looking up the following, which are associated with the virtual address;
a physical address or addresses of one or more page stripes;
a starting location for the data within the first page stripe of the one or more page stripes of the flash array; and
one or more gear settings for the one or more page stripes, wherein the gear settings are indicative of a strength of error correction assigned to a page stripe of the one or more page stripes;
requesting one or more portions of the payload of the one or more page stripes associated with the virtual address, and providing the one or more gear settings of the one or more page stripes along with the request;
receiving, from an ECC decoder, corrected retrieved portions of the one or more page stripes, and an indication of whether each portion was successfully corrected; and
if all portions of the requested data were successfully corrected by the ECC decoder, reassembling the corrected portions into the requested data and returning the same;
wherein the method is performed by 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.
140 Citations
9 Claims
-
1. A method of reading data from an array of flash memory devices, the method comprising:
-
receiving a request for data stored in the flash array, the requested data being identified by a virtual address; looking up the following, which are associated with the virtual address; a physical address or addresses of one or more page stripes; a starting location for the data within the first page stripe of the one or more page stripes of the flash array; and one or more gear settings for the one or more page stripes, wherein the gear settings are indicative of a strength of error correction assigned to a page stripe of the one or more page stripes; requesting one or more portions of the payload of the one or more page stripes associated with the virtual address, and providing the one or more gear settings of the one or more page stripes along with the request; receiving, from an ECC decoder, corrected retrieved portions of the one or more page stripes, and an indication of whether each portion was successfully corrected; and if all portions of the requested data were successfully corrected by the ECC decoder, reassembling the corrected portions into the requested data and returning the same; wherein the method is performed by an integrated circuit. - View Dependent Claims (2, 3)
-
-
4. An apparatus comprising:
-
a first circuit configured to receive a request for data stored in a flash array, the requested data being identified by a virtual address; a second circuit configured to look up the following, which are associated with the virtual address; a physical address or addresses of one or more page stripes; a starting location for the data within the first page stripe of the one or more page stripes of the flash array; and one or more gear settings for the one or more page stripes, wherein the gear settings are indicative of a strength of error correction assigned to a page stripe of the one or more page stripes; the second circuit further configured to request one or more portions of the payload of the one or more page stripes associated with the virtual address, and providing the one or more gear settings of the one or more page stripes along with the request; the second circuit further configured to receive, from an ECC decoder, corrected retrieved portions of the one or more page stripes, and an indication of whether each portion was successfully corrected; and if all portions of the requested data were successfully corrected by the ECC decoder, the second circuit is further configured to reassemble the corrected portions into the requested data and return the same. - View Dependent Claims (5, 6)
-
-
7. An apparatus for reading data from an array of flash memory devices, the apparatus comprising:
-
a means for receiving a request for data stored in a flash array, the requested data being identified by a virtual address; a means for looking up the following, which are associated with the virtual address; a physical address or addresses of one or more page stripes; a starting location for the data within the first page stripe of the one or more page stripes of the flash array; and one or more gear settings for the one or more page stripes, wherein the gear settings are indicative of a strength of error correction assigned to a page stripe of the one or more page stripes; a means for requesting one or more portions of the payload of the one or more page stripes associated with the virtual address; a means for providing the one or more gear settings of the one or more page stripes along with the request; a means for receiving, from an ECC decoder, corrected retrieved portions of the one or more page stripes, and an indication of whether each portion was successfully corrected; and a means for reassembling; wherein if all portions of the requested data were successfully corrected by the ECC decoder, the reassembling means further reassembling the corrected portions into the requested data and returning the same. - View Dependent Claims (8, 9)
-
Specification