Flash EEprom system
First Claim
1. A method of operating a memory that includes an array of non-volatile EEprom memory cells partitioned into a plurality of blocks that individually include a distinct group of memory cells that are erasable together as a unit, comprising:
- maintaining a link between addresses of any unusable memory cell blocks and addresses of substitute usable memory cell blocks, in response to a write request from a host system, initially writing new data intended for the EEprom memory cell array into a cache memory instead of the EEprom memory cell array, thereafter, in response to additional space for new data being required in the cache memory, directing at least a portion of the data stored in the cache memory to be written into the EEprom memory cell array with an address including at least one of said memory cell blocks, and writing said at least a portion of the data stored in the cache memory into the EEprom memory cell array by a method including;
if said at least one of said memory cell blocks is usable, writing said at least a portion of the data stored in the cache memory into said at least one of said memory cell blocks, and if said at least one of said memory cell blocks is unusable, writing said at least a portion of the data stored in the cache memory into at least one of the substitute usable memory cell blocks that is linked with said at least one of said memory cell blocks.
2 Assignments
0 Petitions
Accused Products
Abstract
A system of Flash EEprom memory chips with controlling circuits serves as non-volatile memory such as that provided by magnetic disk drives. Improvements include selective multiple sector erase, in which any combinations of Flash sectors may be erased together. Selective sectors among the selected combination may also be de-selected during the erase operation. Another improvement is the ability to remap and replace defective cells with substitute cells. The remapping is performed automatically as soon as a defective cell is detected. When the number of defects in a Flash sector becomes large, the whole sector is remapped. Yet another improvement is the use of a write cache to reduce the number of writes to the Flash EEprom memory, thereby minimizing the stress to the device from undergoing too many write/erase cycling.
297 Citations
27 Claims
-
1. A method of operating a memory that includes an array of non-volatile EEprom memory cells partitioned into a plurality of blocks that individually include a distinct group of memory cells that are erasable together as a unit, comprising:
-
maintaining a link between addresses of any unusable memory cell blocks and addresses of substitute usable memory cell blocks, in response to a write request from a host system, initially writing new data intended for the EEprom memory cell array into a cache memory instead of the EEprom memory cell array, thereafter, in response to additional space for new data being required in the cache memory, directing at least a portion of the data stored in the cache memory to be written into the EEprom memory cell array with an address including at least one of said memory cell blocks, and writing said at least a portion of the data stored in the cache memory into the EEprom memory cell array by a method including;
if said at least one of said memory cell blocks is usable, writing said at least a portion of the data stored in the cache memory into said at least one of said memory cell blocks, and if said at least one of said memory cell blocks is unusable, writing said at least a portion of the data stored in the cache memory into at least one of the substitute usable memory cell blocks that is linked with said at least one of said memory cell blocks. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method of a host system utilizing a mass data storage system to store data files, said mass data storage system including an array of non-volatile EEprom memory cells partitioned into a plurality of blocks that individually include a distinct group of memory cells that are erasable together as a unit, comprising:
-
writing individual new data files from the host to a cache memory provided as part of the mass data storage system without writing the new data files to the memory cell array, when written into the cache memory, reading a data file requested by the host system from the cache memory rather than from the memory cell array, thereafter writing a selected data file from the cache memory into the memory cell array, said writing including selecting at least one usable memory cell block into which the data file is written that includes either (a) the memory cell block whose address is mapped from a mass storage system address received from the host system, or (b) if the memory cell block whose address is mapped from the received mass storage system address is not usable, another memory cell block that is usable, when written into the memory cell array, reading a data file requested by the host system from the memory cell array rather than from the cache memory. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. A bulk storage memory system that is connectable to a host system, said memory system comprising:
-
an array of non-volatile memory cells arranged to store in designated blocks thereof a given amount of user data and associated overhead data, a cache memory separate from said non-volatile memory cell array, and a controller connectable to said host system for controlling operation of the non-volatile memory cell array and the cache memory, said controller including;
an erasing circuit that causes all of the memory cells of one or more designated blocks of the array to be erased together, an addressing circuit responsive to receipt of a mass memory storage block address from the host system to generate an address of at least one corresponding array block, the addressing circuit being responsive to a list of array blocks that have other array blocks substituted therefore to substitute at least one address of such other array blocks for the generated address of said at least one array block, a first data transfer circuit responsive to the addressing circuit to execute an instruction from the host system to perform a designated one of (1) a data write operation by writing user data to the cache memory, or (2) a data read operation by reading addressed user data first from the cache memory, if stored therein, or from the array, if not stored in the cache memory, and a second data transfer circuit that removes data from the cache by writing the data so removed into the array of non-volatile memory cells. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25, 26, 27)
-
Specification