Method and apparatus for protecting data using variable size page stripes in a FLASH-based storage system
First Claim
1. A memory system comprising:
- a plurality of FLASH memory chips, each of the plurality of FLASH memory chips having substantially the same physical construction and being associated with a plurality of physical memory locations, each having a physical memory address, the physical memory locations of each FLASH memory chip being grouped together to form blocks and planes, wherein a block reflects a group of FLASH memory locations that are erased at the same time and a plane reflects a group of blocks that utilize common circuitry for the performance of memory access operations;
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 communications 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 to associate each physical memory address with status data indicating whether the data stored at the physical memory address is invalid data;
wherein the system controller is configured, for each WRITE request, to;
(1) determine whether the logical memory address associated with the received data item was previously associated with a physical memory address;
(2) if the logical memory address was previously associated with a physical memory address, change the status data for the previously associated physical memory address to indicate that the previously stored data is no longer valid;
(3) identify an available physical memory location where the received data can be stored that is different from the previously associated physical memory address, the controller identifying the available physical memory location from at least one free blocks buffer, the at least one free blocks buffer containing one or more free blocks entries, each entry identifying a group of free blocks that have been defined by the controller as a free blocks group, each free blocks group having been previously erased and ready for storage of data, each block within a free blocks group storing one data item within a group of associated data items such that the number of blocks in a free blocks group equals the number of data items within a group of associated data items;
(4) write the received data into the identified available physical memory address; and
(5) update a table to associate the received logical memory address with the identified available physical memory address so as 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;
wherein the system controller is further configured to;
(a) detect data errors that occur as a result of READ operations and maintain records of identified data errors and the plane associated with each data error;
(b) designate a plane within a given FLASH memory chip as bad whenever the number of detected data errors associated with that plane exceeds a predetermined number; 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 memory 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 such that each physical memory location of each data item within the group of data items is within a plane in the FLASH memory chip in which it is stored that physically corresponds to the planes in which the physical memory locations where the other data items in the group are stored; and
(iv) dynamically select the number of data items used to form each group to not use any memory locations within the plane of the given FLASH memory chip that are designated as bad, such that the number of data items in one group of received data items differs from the number of data items in a second group of received data items such that the one group has a data item stored in physical memory locations within corresponding planes of each of the FLASH memory chips and such that the second group has a data item stored in corresponding planes of each of the FLASH memory chips except for the corresponding plane of the given FLASH memory chip which was designated as bad.
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 using variable size page stripes in the memory system. The controller is configured to store data such that each page stripe comprises a plurality of data pages, with each data page in the page stripe being stored in a different FLASH memory chip. The controller is also configured to maintain one or more buffers containing information reflecting blocks of memory within the FLASH memory chips that have been erased and are available for information storage, and to dynamically determine the number of data pages to be included in a page stripe based on the information in the one or more buffers such that a first page stripe and a second page stripe can have different numbers of data pages.
80 Citations
11 Claims
-
1. A memory system comprising:
-
a plurality of FLASH memory chips, each of the plurality of FLASH memory chips having substantially the same physical construction and being associated with a plurality of physical memory locations, each having a physical memory address, the physical memory locations of each FLASH memory chip being grouped together to form blocks and planes, wherein a block reflects a group of FLASH memory locations that are erased at the same time and a plane reflects a group of blocks that utilize common circuitry for the performance of memory access operations; 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 communications 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 to associate each physical memory address with status data indicating whether the data stored at the physical memory address is invalid data; wherein the system controller is configured, for each WRITE request, to; (1) determine whether the logical memory address associated with the received data item was previously associated with a physical memory address; (2) if the logical memory address was previously associated with a physical memory address, change the status data for the previously associated physical memory address to indicate that the previously stored data is no longer valid; (3) identify an available physical memory location where the received data can be stored that is different from the previously associated physical memory address, the controller identifying the available physical memory location from at least one free blocks buffer, the at least one free blocks buffer containing one or more free blocks entries, each entry identifying a group of free blocks that have been defined by the controller as a free blocks group, each free blocks group having been previously erased and ready for storage of data, each block within a free blocks group storing one data item within a group of associated data items such that the number of blocks in a free blocks group equals the number of data items within a group of associated data items; (4) write the received data into the identified available physical memory address; and (5) update a table to associate the received logical memory address with the identified available physical memory address so as 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; wherein the system controller is further configured to; (a) detect data errors that occur as a result of READ operations and maintain records of identified data errors and the plane associated with each data error; (b) designate a plane within a given FLASH memory chip as bad whenever the number of detected data errors associated with that plane exceeds a predetermined number; 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 memory 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 such that each physical memory location of each data item within the group of data items is within a plane in the FLASH memory chip in which it is stored that physically corresponds to the planes in which the physical memory locations where the other data items in the group are stored; and (iv) dynamically select the number of data items used to form each group to not use any memory locations within the plane of the given FLASH memory chip that are designated as bad, such that the number of data items in one group of received data items differs from the number of data items in a second group of received data items such that the one group has a data item stored in physical memory locations within corresponding planes of each of the FLASH memory chips and such that the second group has a data item stored in corresponding planes of each of the FLASH memory chips except for the corresponding plane of the given FLASH memory chip which was designated as bad. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A memory system comprising:
-
a plurality of FLASH memory chips, each of the plurality of FLASH memory chips having substantially the same physical construction and being associated with a plurality of physical memory locations, each having a physical memory address, the physical memory locations of each FLASH memory chip being grouped together to form blocks and planes, wherein a block reflects a group of FLASH memory locations that are erased at the same time and a plane reflects a group of blocks that utilize common circuitry for the performance of memory access operations; 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 communications 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; wherein the system controller is further configured to; (a) detect data errors that occur as a result of READ operations and maintain records of identified data errors and the block associated with each data error; (b) designate a block within a given FLASH chip as bad whenever the number of detected data errors associated with that block exceeds a predetermined number; 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 memory 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 such that each physical memory location of each data item within the group of data items is within a plane in the FLASH memory chip in which it is stored that physically corresponds to the planes in which the physical memory locations where the other data items in the group are stored; (iv) dynamically select the number of data items used to form each group to not use any physical memory locations within the block of the given FLASH memory chip that are designated as bad, such that the number of data items in one group of received data items differs from the number of data items in a second group of received data items such that the one group has a data item stored in physical memory locations within blocks within corresponding planes of each of the FLASH memory chips and such that the second group has a data item stored in blocks of corresponding planes of each of the FLASH memory chips except for the corresponding plane of the given FLASH memory chip which contains the block designated as bad; and (v) identify an available physical memory location for the group of received data items, the controller identifying the available physical memory location from at least one free blocks buffer, the at least one free blocks buffer containing one or more free blocks entries, each entry identifying a group of free blocks that have been defined by the controller as a free blocks group, each free blocks group having been previously erased and ready for storage of data, each block within a free blocks group storing one data item within a group of associated data items such that the number of blocks in a free blocks group equals the number of data items within a group of associated data items. - View Dependent Claims (10, 11)
-
Specification