Flash memory data correction and scrub techniques
First Claim
1. A non-volatile memory system, comprising:
- an arrangement of flash memory cells organized into blocks of a minimum number of memory cells that are erasable together, the blocks individually storing a plurality of units of data and error correction codes calculated from the units of data, anda controller coupled with the memory cell array and that operates to;
identify when a scrub trigger event has occurred for individual units of data stored in the blocks of memory cells,read the data stored in the identified units,correct errors in the read data of the identified units by use of their associated error correction codes,write the corrected first block data into a designated block of memory cells regardless of the blocks from which the data of the identified units were read, andthereafter consolidating data of the blocks in which scrub trigger events have been identified by;
read the individual corrected units of data from the designated block,thereafter write the individual read units of data into destination blocks other than those from which the data of the identified units were read and other than the designated block,copy into the destination blocks uncorrected data units of the blocks from which the data of the identified units were read, thereby to consolidate corrected and uncorrected units of data into other blocks.
10 Assignments
0 Petitions
Accused Products
Abstract
In order to maintain the integrity of data stored in a flash memory that are susceptible to being disturbed by operations in adjacent regions of the memory, disturb events cause the data to be read, corrected and re-written before becoming so corrupted that valid data cannot be recovered. The sometimes conflicting needs to maintain data integrity and system performance are balanced by deferring execution of some of the corrective action when the memory system has other high priority operations to perform. In a memory system utilizing very large units of erase, the corrective process is executed in a manner that is consistent with efficiently rewriting an amount of data much less than the capacity of a unit of erase.
-
Citations
17 Claims
-
1. A non-volatile memory system, comprising:
-
an arrangement of flash memory cells organized into blocks of a minimum number of memory cells that are erasable together, the blocks individually storing a plurality of units of data and error correction codes calculated from the units of data, and a controller coupled with the memory cell array and that operates to; identify when a scrub trigger event has occurred for individual units of data stored in the blocks of memory cells, read the data stored in the identified units, correct errors in the read data of the identified units by use of their associated error correction codes, write the corrected first block data into a designated block of memory cells regardless of the blocks from which the data of the identified units were read, and thereafter consolidating data of the blocks in which scrub trigger events have been identified by; read the individual corrected units of data from the designated block, thereafter write the individual read units of data into destination blocks other than those from which the data of the identified units were read and other than the designated block, copy into the destination blocks uncorrected data units of the blocks from which the data of the identified units were read, thereby to consolidate corrected and uncorrected units of data into other blocks. - View Dependent Claims (2, 3, 4, 5, 10)
-
-
6. A method of operating a flash memory cell array that is organized into blocks of a minimum number of memory cells that are erasable together, wherein the blocks store a number of units of data and error correction codes calculated from the units of data, comprising:
-
identifying when a scrub trigger event has occurred for data stored in at least one of the units of data in a first one of the blocks, reading the identified at least one unit of data from the first block, correcting any errors in the data read from the first block by use of its associated error correction code to provide corrected first block data, temporarily storing the corrected first block data in a second one of the blocks, identifying when a disturbing event has occurred for at least one of the units of data stored in a third one of the blocks, reading the identified at least one unit of data from the third block, correcting any errors in the data read from the third block by use of its associated error correction code to provide corrected third block data, temporarily storing the corrected third block data in the second block, consolidating data of the first block into a fourth one of the blocks by reading the corrected first block data from the second block, thereafter writing the read corrected first block data as at least one unit of data to the fourth block, and thereafter copying uncorrected data units of the first block into the fourth block, and consolidating data of the third block into a fifth one of the blocks by reading the corrected third block data from the second block, thereafter writing the corrected third block data as at least one unit of data to the fifth block, and thereafter copying uncorrected data units of the third block into the fifth block. - View Dependent Claims (7, 8, 9, 11)
-
-
12. A method of operating a flash memory cell array that is organized into blocks of a minimum number of memory cells that are erasable together, wherein the blocks store a number of units of data and error correction codes calculated from the units of data, comprising the steps of:
-
identifying when scrub trigger events have occurred for individual units data stored in the blocks of memory cells, reading the data of the identified units, correcting errors in the read data of the identified units by use of their associated error correction codes, storing the corrected units of data in a designated block of memory cells regardless of the blocks from which the data of the identified units were read, and consolidating data of the blocks in which scrub trigger events have been identified by the steps of; individually reading the corrected units of data from the designated block, thereafter writing the individual read units of data into destination blocks other than those from which the data of the identified units were read or the designated block, and copying into the destination blocks uncorrected data units of the blocks from which the data of the identified units were read, thereby to consolidate corrected and uncorrected data of blocks into other blocks. - View Dependent Claims (13, 14, 15, 16, 17)
-
Specification