System and method for tolerating a failed page in a flash device
First Claim
1. A method of programming data to a plurality of flash memory devices, the method comprising:
- associating two or more flash memory pages or integer fractions of flash memory pages from one or more integrated circuits or planes with a page stripe, wherein a page is associated with a set of primary ECC codewords;
associating two or more page stripes from different integrated circuits or planes with a page grid, wherein the page grid is associated with a group of tertiary ECC codewords, wherein the tertiary ECC is usable as an erasure code, and wherein a last page stripe of the page grid has a reduced payload capacity;
receiving data to be programmed;
error correction encoding the received data to be stored within each page stripe to generate at least primary ECC codewords for the pages or integer fractions of pages of the page stripe, wherein the primary ECC codewords comprise both data and primary parity;
calculating tertiary ECC parity across the page grid, wherein a tertiary ECC codeword includes a number of symbols including both the data and the primary parity of the primary ECC codewords residing on every page no greater than the erasure capability of the tertiary ECC codeword;
arranging the tertiary parity data, wherein the tertiary parity data is broken up and spread for programming across the last page stripe of the page grid; and
programming the pages of the page grid to store at least the received data, the primary parity data, and the tertiary parity data, wherein each bit of the received data is protected by both primary parity and tertiary parity, wherein the data and the primary parity of primary ECC codewords are stored within the same page or same integer fraction of the page;
wherein at least performing error correction encoding is performed in 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. A page is associated with a set of primary ECC codewords, and a page stripe is associated with a set of secondary codewords and primary over secondary parity (PoSP) ECC codewords. Two or more page stripes can form a page grid, wherein the page grid is associated with a group of tertiary ECC codewords, wherein the last page stripe of the page grid has a reduced payload capacity.
260 Citations
27 Claims
-
1. A method of programming data to a plurality of flash memory devices, the method comprising:
-
associating two or more flash memory pages or integer fractions of flash memory pages from one or more integrated circuits or planes with a page stripe, wherein a page is associated with a set of primary ECC codewords; associating two or more page stripes from different integrated circuits or planes with a page grid, wherein the page grid is associated with a group of tertiary ECC codewords, wherein the tertiary ECC is usable as an erasure code, and wherein a last page stripe of the page grid has a reduced payload capacity; receiving data to be programmed; error correction encoding the received data to be stored within each page stripe to generate at least primary ECC codewords for the pages or integer fractions of pages of the page stripe, wherein the primary ECC codewords comprise both data and primary parity; calculating tertiary ECC parity across the page grid, wherein a tertiary ECC codeword includes a number of symbols including both the data and the primary parity of the primary ECC codewords residing on every page no greater than the erasure capability of the tertiary ECC codeword; arranging the tertiary parity data, wherein the tertiary parity data is broken up and spread for programming across the last page stripe of the page grid; and programming the pages of the page grid to store at least the received data, the primary parity data, and the tertiary parity data, wherein each bit of the received data is protected by both primary parity and tertiary parity, wherein the data and the primary parity of primary ECC codewords are stored within the same page or same integer fraction of the page; wherein at least performing error correction encoding is performed in an integrated circuit. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. An apparatus comprising:
-
a first circuit configured to associate two or more flash memory pages or integer fractions of flash memory pages from one or more integrated circuits or planes with a page stripe, wherein a page is associated with a set of primary ECC codewords; the first circuit is further configured to associate two or more page stripes from different integrated circuits or planes with a page grid, wherein the page grid is associated with a group of tertiary ECC codewords, wherein the tertiary ECC is usable as an erasure code, and wherein a last page stripe of the page grid has a reduced payload capacity; the first circuit is further configured to receive data to be programmed; a second circuit configured to error correction encode the received data to be stored within each page stripe to generate at least primary ECC codewords for the pages or integer fractions of pages of the page stripe, wherein the primary ECC codewords comprise both data and primary parity; the second circuit is further configured to calculate tertiary ECC parity across the page grid in a sequence, wherein a tertiary ECC codeword includes a number of symbols including both the data and parity of the primary ECC codewords residing on every page no greater than the erasure capability of the tertiary ECC codeword; the first circuit is further configured to arrange the tertiary parity data, wherein the tertiary parity data is broken up and spread for programming across the last page stripe of the page grid; and the first circuit is further configured to program the pages of the page grid to store at least the received data, the primary parity data, and the tertiary parity data wherein each bit of the received data is protected by both primary parity and tertiary parity, wherein the data and the primary parity of primary ECC codewords are stored within the same page or same integer fraction of the page, wherein data is programmed to a plurality of flash memory devices. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. An apparatus for programming data to a plurality of flash memory devices, the apparatus comprising:
-
a means for associating two or more flash memory pages or integer fractions of flash memory pages from one or more integrated circuits or planes with a page stripe, wherein a page is associated with a set of primary ECC codewords; a means for associating two or more page stripes from different integrated circuits or planes with a page grid, wherein the page grid is associated with a group of tertiary ECC codewords, wherein the tertiary ECC is usable as an erasure code, and wherein a last page stripe of the page grid has a reduced payload capacity; a means for receiving data to be programmed; a means for error correction encoding the received data to be stored within each page stripe to generate at least primary ECC codewords for the pages or integer fractions of pages of the page stripe, wherein the primary ECC codewords comprise both data and primary parity; a means for calculating tertiary ECC parity across the page grid in a sequence, wherein a tertiary ECC codeword includes a number of symbols including both the data and parity of the primary ECC codewords residing on every page no greater than the erasure capability of the tertiary ECC codeword; a means for arranging the tertiary parity data, wherein the tertiary parity data is broken up and spread for programming across the last page stripe of the page grid; and a means for programming the pages of the page grid to store at least the received data, the primary parity data, and the tertiary parity data, wherein each bit of the received data is protected by both primary parity and tertiary parity, wherein the data and the primary parity of primary ECC codewords are stored within the same page or same integer fraction of the page. - View Dependent Claims (20, 21, 22, 23, 24, 25, 26, 27)
-
Specification