IP Library Granted Patent US 9,021,333
Granted Patent B1
US 9,021,333 · App. 13/477,601 · Granted Apr 28, 2015

Systems and methods for recovering data from failed portions of a flash drive

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,021,333
App. No.
13/477,601
Granted
Apr 28, 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.

Claims (71)

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.

2. The method of claim 1 , wherein the determination that the recovered data has been recovered without error is determined probabilistically to a high confidence.

3. The method of claim 1 , wherein (a) and (f) include performing error correction on the primary on tertiary parity codewords of each page of a last page stripe.

4. The method of claim 1 , wherein the tertiary ECC is a Reed-Solomon code.

5. The method of claim 1 , further comprising, prior to (c):

(g) performing error correction decoding on tertiary codewords of the page grid to update the tertiary codewords;

(h) arranging the updated tertiary codewords to generate corrected versions of the page stripes;

(i) performing error correction on page stripes of the page grid according to the gear with which each stripe was encoded;

performing one or more iterations of (g), (h), (i) until a stopping criterion is reached or a determination is made that the recovered data has been recovered without error; and

releasing the recovered data to the requestor based at least partly on the determination that the recovered data has been recovered without error.

6. The method of claim 1 , further comprising identifying the failed page by:

retrieving fingerprints from among the pages of the page grid, wherein the fingerprints are based at least partly on physical addresses for the pages; and

calculating and selecting a page having the largest magnitude difference between the stored fingerprint and an expected fingerprint as the failed page, so long as that difference exceeds a predetermined threshold.

7. The method of claim 1 , further comprising identifying the failed page by counting the number of uncorrectable primary codewords associated with each page, and selecting a page having the most uncorrectable primary codewords as the failed page.

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.

9. The apparatus of claim 8 , wherein the determination that the recovered data has been recovered without error is determined probabilistically to a high confidence.

10. The apparatus of claim 8 , wherein the second circuit is further configured to perform error correction on the primary on tertiary parity codewords of each page of a last page stripe.

11. The apparatus of claim 8 , wherein the tertiary ECC is a Reed-Solomon code.

12. The apparatus of claim 8 :

the second circuit is configured to (g) perform error correction decoding on tertiary codewords of the page grid to update the tertiary codewords prior to (c);

the first circuit is configured to (h) arrange the updated tertiary codewords to generate corrected versions of the page stripes prior to (c);

the second circuit is configured to (i) perform error correction on page stripes of the page grid according to the gear with which each stripe was encoded prior to (c);

wherein the first circuit and the second circuit are configured to iterate performance of (g), (h), and (i) until a stopping criterion is reached or a determination is made that the recovered data has been recovered without error; and

releasing the recovered data to the requestor based at least partly on the determination that the recovered data has been recovered without error.

13. The apparatus of claim 8 , wherein the first circuit is further configured to:

retrieve fingerprints from among the pages of the page grid, wherein the fingerprints are based at least partly on physical addresses for the pages; and

calculate and select a page having the largest magnitude difference between the stored fingerprint and an expected fingerprint as the failed page, so long as that difference exceeds a predetermined threshold.

14. The apparatus of claim 8 , wherein the first circuit is further configured to count the number of uncorrectable primary codewords associated with each page, and select a page having the most uncorrectable primary codewords as the failed page.

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.

16. The apparatus of claim 15 , wherein the determination that the recovered data has been recovered without error is determined probabilistically to a high confidence.

17. The apparatus of claim 15 , wherein the recovering data means is further configured to perform error correction on the primary on tertiary parity codewords of each page of a last page stripe.

18. The apparatus of claim 15 , wherein the tertiary ECC is a Reed-Solomon code.

19. The apparatus of claim 15 , the recovering data means further:

(g) performing error correction decoding on tertiary codewords of the page grid to update the tertiary codewords prior to (c);

(h) arranging the updated tertiary codewords to generate corrected versions of the page stripes prior to (c);

(i) performing error correction on page stripes of the page grid according to the gear with which each stripe was encoded prior to (c);

the recovering data means further performing one or more iterations of (g), (h), (i) until a stopping criterion is reached or a determination that the recovered data has been recovered without error; and

the releasing means further releasing the recovered data to the requestor based at least partly on the determination that the recovered data has been recovered without error.

20. The apparatus of claim 15 , further comprising a means for identifying the failed page, the identifying means further:

retrieving fingerprints from among the pages of the page grid, wherein the fingerprints are based at least partly on physical addresses for the pages; and

calculating and selecting a page having the largest magnitude difference between the stored fingerprint and an expected fingerprint as the failed page, so long as that difference exceeds a predetermined threshold.

21. The apparatus of claim 15 , further comprising a means for identifying the failed page, the identifying means further counting the number of uncorrectable primary codewords associated with each page, and selecting a page having the most uncorrectable primary codewords as the failed page.

Assignments (7)
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 →