Systems and methods for mapping for solid-state memory
First Claim
Patent Images
1. An electronically-implemented method of organizing memory for a mass-storage device for redundancy, the method comprising:
- organizing the memory into a plurality of block grids, wherein a block grid comprises a plurality of page grids, wherein a page grid comprises a plurality of page stripes, wherein a page stripe comprises a plurality of pages or integer fractions thereof;
distributing a first plurality of N journaling cell slots among the page stripes of a first page grid,wherein a journaling cell slot comprises an area of memory for a journaling cell;
wherein the N journaling cell slots further comprise N1 journaling cell slots for user data and N2 journaling cell slots for grid parity data, wherein both N1 and N2 are integers,wherein the page stripes of the first page grid comprise at least a first page stripe associated with a first gear such that the first page stripe has a first non-zero integer journaling cell slot capacity for data and a first capacity for parity bits of a first error correction code protective of data stored within the first page stripe, a second page stripe associated with a second gear such that the second page stripe has a second non-zero integer journaling cell slot capacity different from the first non-zero journaling slot capacity and a second capacity for parity bits of the first error correction code protective of data stored within the second page stripe, at least a third page stripe associated with a gear zero such that the third page stripe has a zero journaling cell slot capacity and has no parity bits;
wherein grid parity data comprises a set of parity bits of a second error correction code protective over the first page grid, wherein the second error correction code is of an erasure code type such that decoding of the grid parity data is capable of rebuilding data of at least one failed page stripe of the first page grid; and
mapping a logical block address to a journaling packet, which is mapped to one or more journaling cell slots of the N1 journaling cell slots.
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 reliably implemented using various types of memory cells, including relatively inexpensive multi-level cell flash. One embodiment intelligently coordinates remapping of bad blocks with error correction code control, which eliminates the tables used to avoid bad blocks.
182 Citations
46 Claims
-
1. An electronically-implemented method of organizing memory for a mass-storage device for redundancy, the method comprising:
-
organizing the memory into a plurality of block grids, wherein a block grid comprises a plurality of page grids, wherein a page grid comprises a plurality of page stripes, wherein a page stripe comprises a plurality of pages or integer fractions thereof; distributing a first plurality of N journaling cell slots among the page stripes of a first page grid, wherein a journaling cell slot comprises an area of memory for a journaling cell; wherein the N journaling cell slots further comprise N1 journaling cell slots for user data and N2 journaling cell slots for grid parity data, wherein both N1 and N2 are integers, wherein the page stripes of the first page grid comprise at least a first page stripe associated with a first gear such that the first page stripe has a first non-zero integer journaling cell slot capacity for data and a first capacity for parity bits of a first error correction code protective of data stored within the first page stripe, a second page stripe associated with a second gear such that the second page stripe has a second non-zero integer journaling cell slot capacity different from the first non-zero journaling slot capacity and a second capacity for parity bits of the first error correction code protective of data stored within the second page stripe, at least a third page stripe associated with a gear zero such that the third page stripe has a zero journaling cell slot capacity and has no parity bits; wherein grid parity data comprises a set of parity bits of a second error correction code protective over the first page grid, wherein the second error correction code is of an erasure code type such that decoding of the grid parity data is capable of rebuilding data of at least one failed page stripe of the first page grid; and mapping a logical block address to a journaling packet, which is mapped to one or more journaling cell slots of the N1 journaling cell slots. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. An electronically-implemented method of mapping memory for a mass-storage device, the method comprising:
-
grouping flash pages into page grids, wherein pages of a page grid have the same block and page address, wherein the page grid spans one or more planes and 3 or more dice; subgrouping the page grid into page stripes, wherein a page stripe of the page grid comprises at least two pages from different planes of a first die; adaptively selecting a data storage capacity of the page stripe corresponding to an integer multiple of journaling cell slots and a characteristic of a first error correction code stored within the page stripe, wherein the first error correction code is protective of data and stored within the page stripe, wherein a journaling cell slot comprises an area of memory for a journaling cell; and reserving a pre-determined number of journaling cell slots of the page grid for storage of a second error correction code protective of data stored within journaling cell slots and the corresponding first error correction code across the page grid. - View Dependent Claims (19, 20, 21, 22, 23)
-
-
24. An apparatus for organizing memory for a mass-storage device for redundancy, the apparatus comprising:
-
an ECC encoder/decoder; and a circuit configured to; organize the memory into a plurality of block grids, wherein a block grid comprises a plurality of page grids, wherein a page grid comprises a plurality of page stripes, wherein a page stripe comprises a plurality of pages or integer fractions thereof; distribute a first plurality of N journaling cell slots among the page stripes of a first page grid, wherein a journaling cell slot comprises an area of memory for a journaling cell; wherein the N journaling cell slots further comprise N1 journaling cell slots for user data and N2 journaling cell slots for grid parity data, wherein both N1 and N2 are integers, wherein the page stripes of the first page grid comprise at least a first page stripe associated with a first gear such that the first page stripe has a first non-zero integer journaling cell slot capacity for data and a first capacity for parity bits of a first error correction code protective of data stored within the first page stripe, a second page stripe associated with a second gear such that the second page stripe has a second non-zero integer journaling cell slot capacity different from the first non-zero journaling slot capacity and a second capacity for parity bits of the first error correction code protective of data stored within the second page stripe, at least a third page stripe associated with a gear zero such that the third page stripe has a zero journaling cell slot capacity and has no parity bits; wherein grid parity data comprises a set of parity bits of a second error correction code protective over the first page grid, wherein the second error correction code is of an erasure code type such that decoding of the grid parity data is capable of rebuilding data of at least one failed page stripe of the first page grid; wherein the circuit is configured to map a logical block address to a journaling packet, which is mapped to one or more journaling cell slots of the N1 journaling cell slots. - View Dependent Claims (25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40)
-
-
41. An apparatus for mapping memory for a mass-storage device, the apparatus comprising:
-
an ECC encoder/decoder; and a management processor configured to; group flash pages into page grids, wherein pages of a page grid have the same block and page address, wherein the page grid spans one or more planes and 3 or more dice; subgroup the page grid into page stripes, wherein a page stripe of the page grid comprises at least two pages from different planes of a first die; adaptively select a data storage capacity of the page stripe corresponding to an integer multiple of journaling cell slots and a characteristic of a first error correction code stored within the page stripe, wherein the first error correction code is protective of data and stored within the page stripe, wherein a journaling cell slot comprises an area of memory for a journaling cell; and reserve a pre-determined number of journaling cell slots of the page grid for storage of a second error correction code protective of data stored within journaling cell slots and the corresponding first error correction code across the page grid. - View Dependent Claims (42, 43, 44, 45, 46)
-
Specification