IP Library Granted Patent US 7,173,852
Granted Patent B2
US 7,173,852 · App. 11/253,531 · Granted Feb 6, 2007

Corrected data storage and handling methods

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,173,852
App. No.
11/253,531
Granted
Feb 6, 2007
Kind
B2
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.

Claims (42)

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.

2. The method of claim 1 further comprising subsequently copying the corrected version of the portion of the data and the other portions of the data together to a third block.

3. The method of claim 1 wherein the read command requires a corresponding read operation be performed within a time limit, the time limit being less than the time to copy an entire block.

4. The method of claim 1 wherein subsequently a read command is received identifying a logical address of the portion of data that is replaced, and the corrected version of the portion of data in the second block is sent to the host.

5. The method of claim 1 wherein the first block and the second block are both metablocks comprised of multiple erase blocks linked to be erased and written together.

6. The method of claim 1 wherein the portion of data is a sector.

7. The method of claim 1 wherein the portion of data is a page.

8. The method of claim 1 wherein the determining if one or more portions of the data are to be corrected includes the use of error correction code and the corrected version of the portion of the data is derived using error correction code.

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.

10. The method of claim 9 further comprising correcting other sectors from the first block and writing the corrected other sectors to the second block with the individual sector within the time limit.

11. The method of claim 9 further comprising writing additional sectors to the second block, the additional sectors replacing sectors of data in one or more blocks of the memory array other than the first block; and

subsequently compacting data in the second block by copying sectors in the second block that are not obsolete to a fourth block, but not copying sectors in the second block that are not obsolete to the fourth block.

12. The method of claim 11 wherein compacting occurs in response to a threshold number of sectors being stored in the second block.

13. The method of claim 12 wherein the threshold number of sectors is determined by the maximum amount of data that can be copied within a time limit for a read command.

14. The method of claim 9 further comprising subsequently reading only corrected copies of sectors having both a corrected copy and an uncorrected copy in the non-volatile memory array.

15. The method of claim 14 wherein a corrected copy of a sector is identified from a list of corrected and replaced sectors.

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.

17. The method of claim 16 wherein the updated sectors are stored in update blocks and the first updated sector is stored in a first update block, an update block storing updated data within a logical address range corresponding to one or more original blocks.

18. The method of claim 17 wherein the first update block stores sectors in a logically non-sequential order.

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.

20. The method of claim 19 wherein the corrected version of the portion of the data and the other portions of the data are later consolidated to a third block.

21. The method of claim 19 wherein the reading, the determining and storing of corrected versions of the one or more portions of the data are completed within a time limit.

22. The method of claim 21 wherein the reading is in response to a host read command and the time limit is a time limit for a read operation.

23. The method of claim 19 wherein the determining and the storing are part of a scrub operation.

Assignments (11)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded May 27, 2016
From: SANDISK CORPORATION; SANDISK TECHNOLOGIES, INC.
To: SANDISK CORPORATION
Reel/Frame 038825/0137 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038809/0472 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2016
From: LONGITUDE FLASH MEMORY SYSTEMS SARL
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 038166/0445 →
CHANGE OF NAME Recorded Dec 12, 2013
From: PS2 LUXCO S.A.R.L.
To: LONGITUDE FLASH MEMORY SYSTEMS S.A.R.L.
Reel/Frame 031814/0068 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 6, 2013
From: PS3 LUXCO SARL
To: PS2 LUXCO SARL
Reel/Frame 031734/0555 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 5, 2013
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS LLC
To: PS3 LUXCO SARL
Reel/Frame 031723/0836 →
SECURITY AGREEMENT Recorded Aug 21, 2013
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS LLC
To: SANDISK CORPORATION
Reel/Frame 031074/0651 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ADDRESS OF THE ASSIGNOR IN THE ASSIGNMENT DOCUMENT PREVIOUSLY RECORDED ON REEL 030953 FRAME 0416. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Aug 8, 2013
From: SANDISK TECHNOLOGIES, INC.
To: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS LLC.
Reel/Frame 030994/0046 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 6, 2013
From: SANDISK TECHNOLOGIES, INC.
To: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS LLC.
Reel/Frame 030953/0416 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 26, 2011
From: SANDISK CORPORATION
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 026351/0010 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 7, 2006
From: GOROBETS, SERGEY ANATOLIEVICH; ELHAMIAS, REUVEN; GONZALEZ, CARLOS J.; CONLEY, KEVIN M.
To: SANDISK CORPORATION
Reel/Frame 017239/0995 →