FLASH-based Memory System with Static or Variable Length Page Stripes Including Data Protection Information and Auxiliary Protection Stripes
First Claim
1. A controller for use in a solid state storage system including a plurality of FLASH memory devices, the controller comprising:
- (a) a buffer adapted to store information reflecting blocks of memory within the FLASH memory devices that were previously used to store data and that are available for storage of different data;
(b) block stripe assembly circuitry for assembling block stripes using the information contained in the buffer, each block stripe comprising three or more blocks, each block corresponding to a group of memory locations within a given FLASH memory device, each block within a given block stripe being located within a FLASH memory device different from the FLASH memory devices in which the other blocks in the block stripe are located, wherein the block stripe assembly circuitry determines the number of blocks to be included in each assembled block stripe based on the information in the buffer;
(c) data protection circuitry for generating data protection information using a first group of data items;
(d) circuitry for associating each data item in the first group of data items with a memory location in a block of a first block stripe, each data item being associated with a memory location in a different block of the first block stripe from other data items, and for associating the data protection information generated using the first group of data items with a memory location in a block within the first block stripe that is different from the blocks used in storing the first group of data items; and
(e) auxiliary data protection circuitry for generating auxiliary data protection information using data items associated with memory locations in the same block for each block within the first block stripe.
2 Assignments
0 Petitions
Accused Products
Abstract
Methods and apparatuses for enhanced protection of data stored in a FLASH memory system involve a controller capable of protecting data using page stripes and auxiliary protection stripes. The controller stores the data in a manner such that the pages making up each page stripe include a plurality of data pages and at least one data protection page and the pages making up each auxiliary protection stripe include a plurality of data pages and an auxiliary protection page. At least a plurality of data pages are within one page stripe and one auxiliary protection stripe such that each data page is protected both by a data protection page in the page stripe and an auxiliary protection page in the auxiliary protection stripe.
-
Citations
20 Claims
-
1. A controller for use in a solid state storage system including a plurality of FLASH memory devices, the controller comprising:
-
(a) a buffer adapted to store information reflecting blocks of memory within the FLASH memory devices that were previously used to store data and that are available for storage of different data; (b) block stripe assembly circuitry for assembling block stripes using the information contained in the buffer, each block stripe comprising three or more blocks, each block corresponding to a group of memory locations within a given FLASH memory device, each block within a given block stripe being located within a FLASH memory device different from the FLASH memory devices in which the other blocks in the block stripe are located, wherein the block stripe assembly circuitry determines the number of blocks to be included in each assembled block stripe based on the information in the buffer; (c) data protection circuitry for generating data protection information using a first group of data items; (d) circuitry for associating each data item in the first group of data items with a memory location in a block of a first block stripe, each data item being associated with a memory location in a different block of the first block stripe from other data items, and for associating the data protection information generated using the first group of data items with a memory location in a block within the first block stripe that is different from the blocks used in storing the first group of data items; and (e) auxiliary data protection circuitry for generating auxiliary data protection information using data items associated with memory locations in the same block for each block within the first block stripe. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method of controlling a solid state storage system having a plurality of FLASH memory devices, the method comprising:
-
(a) buffering information reflecting blocks of memory within the FLASH memory devices that were previously used to store data and that are available for storage of different data; (b) assembling block stripes using the buffered information, each block stripe comprising three or more blocks, each block corresponding to a group of memory locations within a given FLASH memory device, each block within a given block stripe being located within a FLASH memory device different from the FLASH memory devices in which the other blocks in the block stripe are located; (c) determining the number of blocks to be included in each assembled block stripe based on the buffered information; (d) generating data protection information using a first group of data items; (e) associating each data item in the first group of data items with a memory location in a block of a first block stripe, each data item in the first group of data items being associated with a memory location in a different block of the first block stripe from other data items in the first group of data items; (f) associating the data protection information generated using the first group of data items with a memory location in a block within the first block stripe that is different from the blocks associated with the first group of data items; and (g) generating auxiliary data protection information using data items associated with memory locations in the same block for each block within the first block stripe. - View Dependent Claims (8, 9, 10, 11, 12, 13)
-
-
14. A solid state storage system, comprising:
-
a printed circuit board; a plurality of FLASH memory devices mounted on the printed circuit board; communication buses connected to the FLASH memory devices; and a controller connected to the communication buses for controlling the FLASH memory devices, the controller configured to; (a) buffer information reflecting blocks of memory within the FLASH memory devices that were previously used to store data and that are available for storage of different data; (b) assemble block stripes using the buffered information, each block stripe comprising three or more blocks, each block corresponding to a group of memory locations within a given FLASH memory device, each block within a given block stripe being located within a FLASH memory device different from the FLASH memory devices in which the other blocks in the block stripe are located; (c) determine the number of blocks to be included in each assembled block stripe based on the buffered information; (d) generate data protection information using a first group of data items; (e) associate each data item in the first group of data items with a memory location in a block of a first block stripe, each data item in the first group of data items being associated with a memory location in a different block of the first block stripe from other data items in the first group of data items; (f) associate the data protection information generated using the first group of data items with a memory location in a block within the first block stripe that is different from the blocks associated with the first group of data items; and (g) generate auxiliary data protection information using data items associated with memory locations in the same block for each block within the first block stripe. - View Dependent Claims (15, 16, 17, 18, 19, 20)
-
Specification