Corrected data storage and handling methods
First Claim
1. A method of managing data in a non-volatile memory array having multiple blocks of non-volatile memory cells, a block being the minimum unit of erase, a block containing multiple sectors of data, comprising:
- receiving a read command from a host specifying data to be read from a first block;
reading the data from the first block;
determining if one or more portions of the data are to be corrected and replaced in the non-volatile memory; and
when a portion of the data is to be corrected and replaced, storing a corrected version of the portion of the data in a second block but not replacing other portions of the data and not storing the other portions of the data in the second block.
11 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. Data is rewritten when severe errors are found during read operations. Portions of data are corrected and copied within the time limit for read operation. Corrected portions are written to dedicated blocks.
417 Citations
23 Claims
-
1. A method of managing data in a non-volatile memory array having multiple blocks of non-volatile memory cells, a block being the minimum unit of erase, a block containing multiple sectors of data, comprising:
-
receiving a read command from a host specifying data to be read from a first block; reading the data from the first block; determining if one or more portions of the data are to be corrected and replaced in the non-volatile memory; and when a portion of the data is to be corrected and replaced, storing a corrected version of the portion of the data in a second block but not replacing other portions of the data and not storing the other portions of the data in the second block. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method of managing data in a memory system having a non-volatile memory array that includes multiple blocks, a block being the minimum unit of erase, comprising:
-
receiving a read command from a host identifying a plurality of sectors in a first block to be read within a predetermined time limit that is less than the time required to copy one block of the memory array; reading the plurality of sectors from the first block and determining whether ones of the plurality of sectors are to be corrected and replaced; if an individual sector is to be corrected and replaced, then correcting the individual sector and writing the corrected sector to a second block within the predetermined time limit; maintaining sectors that are not to be corrected and replaced in the first block in uncorrected form without writing them to the second block; sending the individual sector and the sectors that are not to be corrected and replaced to the host; and subsequently copying the individual sector and the sectors that are not to be corrected and replaced to a third block. - View Dependent Claims (10, 11, 12, 13, 14, 15)
-
-
16. A method of managing data in a memory system having a non-volatile memory array that includes multiple blocks, a block being the minimum unit of erase, comprising:
-
identifying sectors of data to be corrected and replaced and writing corrected replacement sectors for only the identified sectors to a dedicated block, while leaving uncorrected sectors in original blocks with the identified sectors; receiving updated sectors from a host, the updated sectors replacing sectors stored in the non-volatile memory array; storing the updated sectors in the non-volatile memory; subsequently receiving a read command from a host identifying a sector having a logical address for which a first corrected replacement sector exists in the dedicated block and for which a first updated sector exists in the non-volatile memory; and sending the most recently written one of the first corrected replacement sector and the first updated sector to the host. - View Dependent Claims (17, 18)
-
-
19. A method of managing data in a non-volatile memory array having multiple blocks of non-volatile memory cells, a block being the minimum unit of erase, a block containing multiple addressable units of data, comprising:
-
reading data from a first block; determining if one or more portions of the data are to be corrected and replaced in the non-volatile memory; and when a portion of the data is to be corrected and replaced, storing a corrected version of the portion of the data in a second block but not replacing other portions of the data and not storing the other portions of the data in the second block. - View Dependent Claims (20, 21, 22, 23)
-
Specification