IP Library Granted Patent US 9,183,085
Granted Patent B1
US 9,183,085 · App. 13/477,600 · Granted Nov 10, 2015

Systems and methods for adaptively selecting from among a plurality of error correction coding schemes in a flash drive for robustness and low latency

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 9,183,085
App. No.
13/477,600
Granted
Nov 10, 2015
Kind
B1
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. Predefined gears correspond to different predefined ECC schemes. Based on an observed bit error rate, a gear from a set of predefined gears is selected for use for a particular region of memory. Each gear of the set of predefined gears includes a lower-latency ECC decode option and one or more higher-latency ECC decode options.

Claims (55)

1. A method of selecting an error correction coding (ECC) scheme, the method comprising:

determining a bit error rate associated with a region comprising a fixed number of two or more flash memory pages or integer fractions thereof, wherein the two or more flash memory pages of a region can be read simultaneously, wherein the region stores at least data payload and primary and secondary ECC parity symbols corresponding to the data payload of the region;

comparing the determined bit error rate to one or more predetermined thresholds corresponding to a set of predefined gears comprising at least a first gear and a second gear, wherein the predefined gears correspond to different predefined ECC schemes, wherein the first gear has a different data payload size and correction capability than the second gear, wherein the amount of memory space allocated for the storage of data payload within the region varies between the first gear and the second gear to accommodate a varying number of parity symbols between the first gear and the second gear; and

selecting a gear from the set for the region based at least partly on the comparisons to the one or more predetermined thresholds;

wherein determining, comparing, and selecting are performed by an integrated circuit.

2. The method of claim 1 , further comprising repeatedly determining the bit error rate and comparing the determined bit error rate to one or more predetermined thresholds such that the bit error rate is actively monitored.

3. The method of claim 1 , further comprising determining the bit error rate and comparing the determined bit error rate to one or more predetermined thresholds at least once every 4 program/erase cycles.

4. The method of claim 1 , wherein determining, comparing, and selecting are performed in connection with at least one of flash initialization, read, or write operations for an end user.

5. The method of claim 1 , further comprising reading data from the region of flash memory, wherein determining the bit error rate further comprises estimating the bit error rate based at least partly on a number of errors corrected by ECC in connection with reading the data from the region.

6. The method of claim 1 , wherein selecting further comprises selecting the gear that has the highest data payload size and sufficient correction capability for the determined bit error rate such that memory reads from the region can be corrected with no more than a predetermined acceptable uncorrectable bit error rate (aUBER).

7. The method of claim 6 , wherein the aUBER is 1E-16.

8. The method of claim 1 , wherein selecting further comprises selecting a gear having a smaller data payload size and a higher amount of correction capability based at least partly a number of decoding iterations used to correct the requested user data.

9. The method of claim 1 , further comprising:

receiving a command to perform formatting;

performing a memory test to determine raw bit error rates among the regions of the flash drive; and

allocating a region to one of at least the first gear or the second gear based at least partly on the raw bit error rate for the region.

10. The method of claim 1 , wherein a threshold Gx of the one or more predetermined thresholds is less than or equal to a raw bit error rate ECC_CAP for which the corresponding strength of ECC provides sufficient error correction such that memory reads can be corrected with no more than a predetermined acceptable uncorrectable bit error rate (aUBER) divided by a safety factor SFx, wherein the safety factor SFx is a product of an excursion factor Ex and a retention factor RETx, such that the following expression holds:

Gx≦ECC — CAPx/SFx.

11. The method of claim 10 , wherein the aUBER corresponds to about 1 E-16 and the safety factor SFx is in a range from 1.5 to 4.

12. The method of claim 10 , wherein the safety factor SFx is a product of an excursion factor Ex and a retention factor RETx, such that the following expression holds:

Gx≦ECC — CAPx/SFx=ECC — CAPx /( Ex*RETx ).

13. The method of claim 12 , wherein the aUBER corresponds to about 1 E-16 and the excursion factor is in a range of about 1-4, and a retention factor is in a range of 1.2 to 2.2.

14. The method of claim 1 , wherein the gear includes a lower-latency ECC decode option and one or more higher-latency ECC decode options, wherein the gear is selected such that performing ECC decoding using the lower-latency ECC decode option alone is sufficient to provide corrected data at least 90% of the time.

15. An apparatus comprising:

a first circuit configured to determine a bit error rate associated with a region comprising a fixed number of two or more flash memory pages or integer fractions thereof, wherein the two or more flash memory pages of a region can be read simultaneously, wherein the region stores at least data payload and primary and secondary ECC parity symbols corresponding to the data payload of the region and configured to compare the determined bit error rate to one or more predetermined thresholds corresponding to a set of predefined gears comprising at least a first gear and a second gear, wherein the predefined gears correspond to different error correction coding (ECC) schemes, wherein the first gear has a different data payload size and correction capability than the second gear, wherein the amount of memory space allocated for the storage of data payload within the region varies between the first gear and the second gear to accommodate a varying number of parity symbols between the first gear and the second gear; and

a second circuit configured to select a gear from the set for the region based at least partly on the comparisons to the one or more predetermined thresholds.

16. The apparatus of claim 15 , wherein the ECC encoder is configured to determine the bit error rate and the processor is configured to compare and to select in connection with at least one of flash initialization, read, or write operations for an end user.

17. The apparatus of claim 15 , wherein the first circuit is further configured to read data from the region of flash memory, wherein the ECC decoder is further configured to determine the bit error rate based at least partly on a number of errors corrected by ECC in connection with a read of data from the region.

18. The apparatus of claim 15 , wherein the processor is further configured to select a gear that has the highest data payload size and sufficient correction capability for the determined bit error rate such that memory reads from the region can be corrected with no more than a predetermined acceptable uncorrectable bit error rate (aUBER).

19. The apparatus of claim 15 , wherein the processor is further configured to select a gear that has a smaller data payload size and a higher amount of correction capability based at least partly a number of decoding iterations performed to correct the requested user data.

20. The apparatus of claim 15 , wherein the processor is further configured to:

receive a command to perform formatting;

perform a memory test to determine raw bit error rates among the regions of the flash drive; and

allocate a region to one of at least the first gear or the second gear based at least partly on the raw bit error rate for the region.

21. The apparatus of claim 15 , wherein a threshold Gx of the one or more predetermined thresholds is less than or equal to a raw bit error rate ECC_CAP for which the corresponding strength of ECC provides sufficient error correction such that memory reads can be corrected with no more than a predetermined acceptable uncorrectable bit error rate (aUBER) divided by a safety factor SFx, wherein the safety factor SFx is a product of an excursion factor Ex and a retention factor RETx, such that the following expression holds:

Gx≦ECC — CAPx/SFx.

22. The apparatus of claim 15 , wherein the gear includes a lower-latency ECC decode option and one or more higher-latency ECC decode options, wherein the gear is selected such that performance of ECC decoding with the lower-latency ECC decode option alone is sufficient to provide corrected data at least 90% of the time.

23. The apparatus of claim 15 , further comprising a plurality of flash memory devices, wherein the apparatus comprises a flash drive.

24. An apparatus for selecting an error correction coding (ECC) scheme, the apparatus comprising:

a means for determining a bit error rate associated with a region comprising a fixed number of two or more flash memory pages or integer fractions thereof, wherein the two or more flash memory pages of a region can be read simultaneously, wherein the region stores at least data payload and primary and secondary ECC parity symbols corresponding to the data payload of the region;

a means for comparing the determined bit error rate to one or more predetermined thresholds corresponding to a set of predefined gears comprising at least a first gear and a second gear, wherein the predefined gears correspond to different predefined ECC schemes, wherein the first gear has a different data payload size and correction capability than the second gear, wherein the amount of memory space allocated for the storage of data payload within the region varies between the first gear and the second gear to accommodate a varying number of parity symbols between the first gear and the second gear; and

a means for selecting a gear from the set for the region based at least partly on the comparisons to the one or more predetermined thresholds.

25. The apparatus of claim 24 , further comprising means for reading data from the region of flash memory, wherein the determining means further comprises means for estimating the bit error rate based at least partly on a number of errors corrected by ECC in connection with reading the data from the region.

26. The apparatus of claim 24 , wherein the selecting means further comprises means for selecting a gear having a smaller data payload size and a higher amount of correction capability based at least partly a number of decoding iterations used to correct the requested user data.

27. The apparatus of claim 24 , further comprising:

means for receiving a command to perform formatting;

means for performing a memory test to determine raw bit error rates among the regions of the flash drive; and

means for allocating a region to one of at least the first gear or the second gear based at least partly on the raw bit error rate for the region.

28. The apparatus of claim 24 , wherein a threshold Gx of the one or more predetermined thresholds is less than or equal to a raw bit error rate ECC_CAP for which the corresponding strength of ECC provides sufficient error correction such that memory reads can be corrected with no more than a predetermined acceptable uncorrectable bit error rate (aUBER) divided by a safety factor SFx, wherein the safety factor SFx is a product of an excursion factor Ex and a retention factor RETx, such that the following expression holds:

Gx≦ECC — CAPx/SFx.

29. The apparatus of claim 24 , wherein the gear includes a lower-latency ECC decode option and one or more higher-latency ECC decode options, wherein the gear is selected such that performing ECC decoding using the lower-latency ECC decode option alone is sufficient to provide corrected data at least 90% of the time.

30. The apparatus of claim 24 , further comprising a plurality of flash memory devices, wherein the apparatus comprises a flash drive.

31. The method of claim 1 , wherein the data payload and corresponding primary ECC parity symbols comprise primary codewords, wherein the data payload and corresponding secondary ECC parity symbols comprise secondary codewords, wherein the secondary ECC parity symbols of each secondary codeword are programmed across the region, wherein each of the two or more flash memory pages of a region reside on separate dies.

32. The apparatus of claim 15 , wherein the data payload and corresponding primary ECC parity symbols comprise primary codewords, wherein the data payload and corresponding secondary ECC parity symbols comprise secondary codewords, wherein the secondary ECC parity symbols of each secondary codeword are programmed across the region, wherein each of the two or more flash memory pages of a region reside on separate dies.

33. The apparatus of claim 24 , wherein the data payload and corresponding primary ECC parity symbols comprise primary codewords, wherein the data payload and corresponding secondary ECC parity symbols comprise secondary codewords, wherein the secondary ECC parity symbols of each secondary codeword are programmed across the region, wherein each of the two or more flash memory pages of a region reside on separate dies.

Assignments (8)
CONFIRMATORY ASSIGNMENT Recorded Sep 7, 2022
From: IP GEM GROUP, LLC
To: POLARIS POWERLED TECHNOLOGIES, LLC
Reel/Frame 061372/0947 →
RELEASE OF SECURITY INTEREST Recorded May 29, 2018
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: MICROSEMI STORAGE SOLUTIONS, INC.; MICROSEMI STORAGE SOLUTIONS (U.S.), INC.
Reel/Frame 046251/0271 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 7, 2017
From: MICROSEMI STORAGE SOLUTIONS, INC.
To: IP GEM GROUP, LLC
Reel/Frame 043212/0221 →
CHANGE OF NAME Recorded Apr 7, 2016
From: PMC-SIERRA, INC.
To: MICROSEMI STORAGE SOLUTIONS, INC.
Reel/Frame 038381/0753 →
PATENT SECURITY AGREEMENT Recorded Feb 3, 2016
From: MICROSEMI STORAGE SOLUTIONS, INC. (F/K/A PMC-SIERRA, INC.); MICROSEMI STORAGE SOLUTIONS (U.S.), INC. (F/K/A PMC-SIERRA US, INC.)
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037689/0719 →
RELEASE OF SECURITY INTEREST Recorded Feb 1, 2016
From: BANK OF AMERICA, N.A.
To: PMC-SIERRA, INC.; PMC-SIERRA US, INC.; WINTEGRA, INC.
Reel/Frame 037675/0129 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 30, 2014
From: NORTHCOTT, PHILIP L.
To: PMC-SIERRA, INC.
Reel/Frame 033856/0298 →
SECURITY INTEREST IN PATENTS Recorded Aug 6, 2013
From: PMC-SIERRA, INC.; PMC-SIERRA US, INC.; WINTEGRA, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 030947/0710 →