Systems and methods for reclaiming memory for solid-state memory
First Claim
Patent Images
1. An electronically-implemented method of reclaiming a flash block of a flash array, the method comprising:
- selecting a block grid for reclamation,wherein block grids comprise a plurality of page grids, wherein page grids comprise a plurality of page stripes, wherein page stripes comprise a plurality of pages or integer fractions thereof,wherein a block of pages comprises a smallest erasable unit of memory such that the plurality of page grids comprising a block grid are related by having pages belonging to the same blocks;
wherein a host accesses data using logical block addresses, wherein the logical blocks are stored in journaling cell slots, wherein valid data comprises data stored in journaling cell slots that the host expects to be able to access;
wherein a plurality of gears indicative of a journaling cell capacity and error correction coding scheme include at least a first gear, a second gear, and a gear zero, wherein page stripes associated with the first gear have a first non-zero integer journaling cell slot capacity and a first error correction coding scheme protective of data stored in the journaling cells of the first page stripe, wherein page stripes associated with the second gear have a second non-zero integer journaling cell slot capacity different from the first non-zero journaling slot capacity and a second error correction coding scheme protective of data stored in the journaling cells of the second page stripe, wherein page stripes associated with gear zero have a zero journaling cell slot capacity and no parity bits of the second error correction code;
wherein for valid data stored in the block grid, the method further comprises;
reading data from corresponding one or more journaling cell slots;
performing error correction on the read data to generate corrected data;
evaluating a condition of a page stripe based at least partly on the error correction decoding of the data within the journaling cell slots of the page stripe;
storing the corrected data into one or more journaling cell slots of page stripes of a different block grid;
updating one or more tables with new associations between logical block addresses and journaling cell slots;
erasing the blocks of the block grid;
updating gear settings for the page stripes of the block grid based at least partly on the evaluation conditions for the page stripes; and
making the page stripes of the block grid available for writing;
wherein at least selecting, reading, and storing are performed by 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 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.
-
Citations
24 Claims
-
1. An electronically-implemented method of reclaiming a flash block of a flash array, the method comprising:
-
selecting a block grid for reclamation, wherein block grids comprise a plurality of page grids, wherein page grids comprise a plurality of page stripes, wherein page stripes comprise a plurality of pages or integer fractions thereof, wherein a block of pages comprises a smallest erasable unit of memory such that the plurality of page grids comprising a block grid are related by having pages belonging to the same blocks; wherein a host accesses data using logical block addresses, wherein the logical blocks are stored in journaling cell slots, wherein valid data comprises data stored in journaling cell slots that the host expects to be able to access; wherein a plurality of gears indicative of a journaling cell capacity and error correction coding scheme include at least a first gear, a second gear, and a gear zero, wherein page stripes associated with the first gear have a first non-zero integer journaling cell slot capacity and a first error correction coding scheme protective of data stored in the journaling cells of the first page stripe, wherein page stripes associated with the second gear have a second non-zero integer journaling cell slot capacity different from the first non-zero journaling slot capacity and a second error correction coding scheme protective of data stored in the journaling cells of the second page stripe, wherein page stripes associated with gear zero have a zero journaling cell slot capacity and no parity bits of the second error correction code; wherein for valid data stored in the block grid, the method further comprises; reading data from corresponding one or more journaling cell slots; performing error correction on the read data to generate corrected data; evaluating a condition of a page stripe based at least partly on the error correction decoding of the data within the journaling cell slots of the page stripe; storing the corrected data into one or more journaling cell slots of page stripes of a different block grid; updating one or more tables with new associations between logical block addresses and journaling cell slots; erasing the blocks of the block grid; updating gear settings for the page stripes of the block grid based at least partly on the evaluation conditions for the page stripes; and making the page stripes of the block grid available for writing; wherein at least selecting, reading, and storing are performed by an integrated circuit. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. An apparatus for reclaiming a flash block of a flash array, the apparatus comprising:
-
a first circuit configured to select a block grid for reclamation, wherein block grids comprise a plurality of page grids, wherein page grids comprise a plurality of page stripes, wherein page stripes comprise a plurality of pages or integer fractions thereof, wherein a block of pages comprises a smallest erasable unit of memory such that the plurality of page grids comprising a block grid are related by having pages belonging to the same blocks; wherein a host accesses data using logical block addresses, wherein the logical blocks are stored in journaling cell slots, wherein valid data comprises data stored in journaling cell slots that the host expects to be able to access; wherein a plurality of gears indicative of a journaling cell capacity and error correction coding scheme include at least a first gear, a second gear, and a gear zero, wherein page stripes associated with the first gear have a first non-zero integer journaling cell slot capacity and a first error correction coding scheme protective of data stored in the journaling cells of the first page stripe, wherein page stripes associated with the second gear have a second non-zero integer journaling cell slot capacity different from the first non-zero journaling slot capacity and a second error correction coding scheme protective of data stored in the journaling cells of the second page stripe, wherein page stripes associated with gear zero have a zero journaling cell slot capacity and no parity bits of the second error correction code; a second circuit including an ECC encoder/decoder, wherein the second circuit is configured to, when valid data stored in the block grid; read data from corresponding one or more journaling cell slots; perform error correction on the read data to generate corrected data; evaluate a condition of a page stripe based at least partly on the error correction decoding of the data within the journaling cell slots of the page stripe; store the corrected data into one or more journaling cell slots of page stripes of a different block grid; update one or more tables with new associations between logical block addresses and journaling cell slots; erase the blocks of the block grid; update gear settings for the page stripes of the block grid based at least partly on the evaluation conditions for the page stripes; and make the page stripes of the block grid available for writing. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
-
Specification