IP Library Granted Patent US 8,793,556
Granted Patent B1
US 8,793,556 · App. 13/477,845 · Granted Jul 29, 2014

Systems and methods for reclaiming flash blocks 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 8,793,556
App. No.
13/477,845
Granted
Jul 29, 2014
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 (48)

1. A method of reclaiming flash blocks of a flash array, the method comprising:

selecting a block grid for reclamation, wherein block grids contain complete page grids;

for valid data stored in the block grid, reading, performing error correction, and journaling into available page stripes of the flash array, wherein valid data includes valid allocation blocks, wherein an ECC decoder used for performing error correction generates an indication as to whether or not correction for at least the valid data from the flash array has met criteria indicating that a different gear to be selected;

erasing the blocks of the block grid;

updating gear settings for the page stripes of the block grid based at least partly on corresponding indications from the ECC decoder; and

making the page stripes of the block grid available for writing;

wherein at least selecting and making are performed by an integrated circuit.

2. The method of claim 1 , further comprising reading page stripes of the selected block grid irrespective of whether the page stripes contain valid data, wherein the criteria for selecting a different gear are evaluated based on error correction decoding of a complete page stripe.

3. The method of claim 2 , further comprising:

journaling complete valid allocation blocks of page stripes of the selected block grid into available page stripes of the flash array;

discarding data of complete invalid allocation blocks of page stripes of the selected block grid; and

retaining in a buffer, a partial allocation block until the next page stripe is read.

4. The method of claim 3 , wherein the determination of the gear setting is also based on whether any previous read of the page stripe met criteria indicating that a different gear is to be selected.

5. The method of claim 3 , wherein the page stripes of a page grid are assigned to the highest gear setting of any page stripe in the page grid.

6. An apparatus comprising:

a first circuit configured to select a block grid for reclamation, wherein block grids contain complete page grids;

an ECC decoder;

for valid data stored in the block grid, the first circuit is further configured to read, the ECC decoder is configured to perform error correction, and the first circuit is further configured to journal into available page stripes of a flash array, wherein valid data includes valid allocation blocks, wherein the ECC decoder generates an indication as to whether or not correction for at least the valid data from the flash array has met criteria indicating that a different gear to be selected;

the first circuit further configured to erase the blocks of the block grid;

the first circuit further configured to update gear settings for the page stripes of the block grid based at least partly on corresponding indications from the ECC decoder; and

the first circuit further configured to make the page stripes of the block grid available for writing.

7. The apparatus of claim 6 , wherein the first circuit is further configured to:

read page stripes of the selected block grid irrespective of whether the page stripes contain valid data; and

evaluate criteria for selecting a different gear based on error correction decoding of a complete page stripe.

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

journal complete valid allocation blocks of page stripes of the selected block grid into available page stripes of the flash array;

discard data of complete invalid allocation blocks of page stripes of the selected block grid; and

retain in a buffer, a partial allocation block until the next page stripe is read.

9. The apparatus of claim 8 , wherein the determination of the gear setting is also based on whether any previous read of the page stripe met criteria indicating that a different gear is to be selected.

10. The apparatus of claim 8 , wherein the page stripes of a page grid are assigned to the highest gear setting of any page stripe in the page grid.

11. An apparatus for reclaiming flash blocks of a flash array, the apparatus comprising:

a means for selecting a block grid for reclamation, wherein block grids contain complete page grids;

a means for reading;

a means for ECC decoding;

a means for journaling;

for valid data stored in the block grid, the reading means further reading, the ECC decoding means further performing error correction, and the journaling means further journaling into available page stripes of the flash array, wherein valid data includes valid allocation blocks, wherein the ECC decoding means is configured to generate an indication as to whether or not correction for at least the valid data from the flash array has met criteria indicating that a different gear to be selected;

a means for erasing the blocks of the block grid;

a means for updating gear settings for the page stripes of the block grid based at least partly on corresponding indications from the ECC decoder; and

a means for making the page stripes of the block grid available for writing.

12. The apparatus of claim 11 , further comprising:

a means for reading page stripes of the selected block grid irrespective of whether the page stripes contain valid data; and

a means for evaluating criteria for selecting a different gear based on error correction decoding of a complete page stripe.

13. The apparatus of claim 12 , further comprising:

the journaling means further journaling complete valid allocation blocks of page stripes of the selected block grid into available page stripes of the flash array;

a means for discarding data of complete invalid allocation blocks of page stripes of the selected block grid; and

a means for retaining in a buffer, a partial allocation block until the next page stripe is read.

14. The apparatus of claim 13 , wherein the determination of the gear setting is also based on whether any previous read of the page stripe met criteria indicating that a different gear is to be selected.

15. The apparatus of claim 13 , wherein the page stripes of a page grid are assigned to the highest gear setting of any page stripe in the page grid.

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 Oct 1, 2014
From: NORTHCOTT, PHILIP L.; GEIGER, PETER DAU; SADOWSKY, JONATHAN
To: PMC-SIERRA, INC.
Reel/Frame 033863/0407 →
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 →