Method and apparatus for addressing actual or predicted failures in a FLASH-based storage system
First Claim
1. A FLASH memory based solid state storage system capable of adapting to the failure of one or more FLASH memory chips comprising:
- a printed circuit board;
a plurality of FLASH memory chips mounted to the printed circuit board, each FLASH memory chip including a plurality of FLASH memory cells arranged to store a plurality of pages of digital data and a chip-level communications bus interface capable of receiving and sending digital data to be stored in, and retrieved from, FLASH memory cells within the FLASH memory chip; and
a system controller including a plurality of system communication bus interfaces, each system communication bus interface being coupled by a system communications bus to one or more chip-level communication bus interfaces such that the system controller can provide digital data to and retrieve digital data from memory cells within the one or more FLASH memory chips, the system controller further including an external communications bus interface capable of receiving digital data to be stored within the storage system;
wherein the system controller is configured to store data received over the external communications bus in the plurality of FLASH memory chips in the form of page stripes, each page stripe comprising a plurality of pages of data stored in the FLASH memory chips, each of the plurality of pages being stored in a FLASH memory chip that is different from each of the FLASH memory chips in which the other pages of data within the page stripe are stored, the plurality of pages making up the page stripe including a plurality of data pages, each data page storing data initially received over the external communications bus, and further including at least one data protection page containing data that may be used to reconstruct data stored in a data page within the page stripe that becomes corrupted or unavailable; and
wherein the system controller is further configured to;
detect the failure of at least a portion of a FLASH memory chip in which a data page of a particular page stripe is stored;
reconstruct data that was stored within a data page of the particular page stripe using data in the data protection page for the particular page stripe; and
store the reconstructed data page as a data page within a new page stripe, wherein the number of data pages within the new page stripe is less than the number of data pages that were in the particular page stripe, and wherein no page of the new page stripe is stored in a memory location within the failed portion of the FLASH memory chip, such that each FLASH memory chip used by the system controller for a given page stripe stores either a page of data or data that may be used to reconstruct data stored in a data page for that given page 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 adapting to the failure of one or more FLASH memory devices in the memory system. The controller stores data in the form of page stripes, each page stripe composed of data pages, and each data page stored in a different FLASH memory device. The controller also detects failure of a FLASH memory device in which a data page of a particular page stripe is stored, reconstructs the data page, and stores the reconstructed data page in a new page stripe, where the number of data pages in the new page stripe is less than the number of data pages in the particular page stripe, and where no page of the new page stripe is stored in a memory location within the failed FLASH memory device.
306 Citations
20 Claims
-
1. A FLASH memory based solid state storage system capable of adapting to the failure of one or more FLASH memory chips comprising:
-
a printed circuit board; a plurality of FLASH memory chips mounted to the printed circuit board, each FLASH memory chip including a plurality of FLASH memory cells arranged to store a plurality of pages of digital data and a chip-level communications bus interface capable of receiving and sending digital data to be stored in, and retrieved from, FLASH memory cells within the FLASH memory chip; and a system controller including a plurality of system communication bus interfaces, each system communication bus interface being coupled by a system communications bus to one or more chip-level communication bus interfaces such that the system controller can provide digital data to and retrieve digital data from memory cells within the one or more FLASH memory chips, the system controller further including an external communications bus interface capable of receiving digital data to be stored within the storage system; wherein the system controller is configured to store data received over the external communications bus in the plurality of FLASH memory chips in the form of page stripes, each page stripe comprising a plurality of pages of data stored in the FLASH memory chips, each of the plurality of pages being stored in a FLASH memory chip that is different from each of the FLASH memory chips in which the other pages of data within the page stripe are stored, the plurality of pages making up the page stripe including a plurality of data pages, each data page storing data initially received over the external communications bus, and further including at least one data protection page containing data that may be used to reconstruct data stored in a data page within the page stripe that becomes corrupted or unavailable; and wherein the system controller is further configured to;
detect the failure of at least a portion of a FLASH memory chip in which a data page of a particular page stripe is stored;
reconstruct data that was stored within a data page of the particular page stripe using data in the data protection page for the particular page stripe; and
store the reconstructed data page as a data page within a new page stripe, wherein the number of data pages within the new page stripe is less than the number of data pages that were in the particular page stripe, and wherein no page of the new page stripe is stored in a memory location within the failed portion of the FLASH memory chip, such that each FLASH memory chip used by the system controller for a given page stripe stores either a page of data or data that may be used to reconstruct data stored in a data page for that given page stripe. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A board-mounted FLASH-based memory storage system comprising:
-
a printed circuit board; a plurality of FLASH memory devices, each mounted to the printed circuit board; a controller mounted to the printed circuit board; and a plurality of communications buses, each configured to allow the controller to write a data collection to one or more FLASH memory devices; wherein the controller is configured to write data to the FLASH memory devices in a striped fashion using data stripes, where each data stripe includes a group of data collections and an associated set of data protection information such that (a) each data collection within a group of data collections is written into a FLASH memory device that differs from (i) the FLASH memory devices into which the other data collections within the group of data collections are written and (ii) the FLASH memory device to which the data protection information associated with the group of data collections is written; (b) the communications bus used to write each data collection into a FLASH memory device differs from the communication buses used to write the other data collections within the group of data collections into their respective FLASH memory devices; and (c) the number of data collections used to form each data stripe is based, at least in part, on failure information associated with the FLASH memory devices such that the controller can adjust the number of data collections used for one or more data stripes in response to information indicating that all or part of one or more FLASH memory devices has failed, and such that each FLASH memory device used by the controller for a given data stripe contains either a data collection or a set of data protection information for that given data stripe stored in a physical memory location within the FLASH memory device. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A memory system comprising:
-
a plurality of FLASH memory chips, each of the plurality of FLASH memory chips being associated with a plurality of physical memory address locations; a system controller that includes an external communication bus interface for receiving WRITE requests from an external host device, wherein each WRITE request includes a data item and a logical memory address associated with the data item, the system controller further comprising a plurality of internal communication bus interfaces, each allowing the system controller to write data into physical memory locations associated with one or more of the FLASH memory chips; and a plurality of internal data communication buses, each internal data communication bus coupling one or more of the FLASH memory chips to an internal communication bus interface of the system controller; wherein the system controller is configured, for each WRITE request, to translate the logical memory address provided by the external host to a physical memory address and to write the data item provided as part of the WRITE request to the physical memory location corresponding to the physical memory address; and wherein the system controller is further configured to;
(i) associate a number of data items received through a plurality of WRITE requests with each other to form a group of received data items;
(ii) generate data protection information for each group and write the data protection information to a physical memory location;
(iii) perform the translation of the received logical addresses for the data items in the group and select the physical memory location for storage of the data protection information such that each of the data items is stored in a physical memory location within a FLASH memory chip that is different from the FLASH memory chips in which the other data items and the data protection information for the group of received data items are stored; and
(iv) adjust the number of data items used to form each group in response to information indicating the actual or predicted failure of all or part of one or more FLASH memory chips, such that the number of data items in one group of received data items stored during a time when all of the FLASH memory chips are operable can differ from the number of data items in a second group of received data items stored at a time after the predicted or actual failure of all or part of one or more FLASH memory chips, and such that each physical memory location addressed by the system controller for a given group of received data items stores either a data item associated with the given group of received data items or data protection information for the given group of received data items. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification