IP Library Granted Patent US 7,849,381
Granted Patent B2
US 7,849,381 · App. 11/022,350 · Granted Dec 7, 2010

Method for copying data in reprogrammable non-volatile memory

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,849,381
App. No.
11/022,350
Granted
Dec 7, 2010
Kind
B2
Abstract

Methods are presented for improving data relocation operations. Rather than check data quality based on its associated error correction code (ECC) in every relocation operation, it can determine whether to check ECC based on predetermined selection criteria: if ECC checking is not selected, the memory can perform an on-chip copy of the data from a first location to a second location. If ECC checking is selected, the data is transferred to the controller and checked; when an error is found, a correction operation is performed and when no error is found, an on-chip copy is performed. Predetermined selection criteria may comprise a sampling mechanism, which may be random based or deterministic. Additionally, data transfer flags can be introduced to indicate data has been corrected and should be transferred back to the memory. Header and user data can be considered separately if each has a distinct associated ECC.

Claims (29)

1. A method for copying data having an associated error correction code (ECC) from a first location to a second location of a reprogrammable non-volatile memory array of a system that includes a memory controller and a memory portion having said memory array, comprising:

reading the data from the first location into a cache on the memory portion;

determining whether to check the ECC based on predetermined selection criteria, and if ECC checking is not selected, causing the system to copy the data from the cache to the second location without transferring the data to the controller; and

if ECC checking is selected, checking the ECC on the read data in the controller, including:

if an ECC error is found, correcting the ECC error on the read data in the controller and causing the controller to write the corrected data to the second location of the memory array; and

if an ECC error is not found, causing the memory to copy the data from the cache to the second location without transferring the data to the controller.

2. The method of claim 1 , wherein the predetermined selection criteria comprises a sampling mechanism.

3. The method of claim 2 , wherein the sampling mechanism is random based.

4. The method of claim 2 , wherein the sampling mechanism is deterministic.

5. The method of claim 2 , wherein the sampling mechanism comprises:

comparing a plurality of bits associated with a the number of a logical sector in the reprogrammable non-volatile memory with a timestamp to produce a comparison result; and

selecting to check an ECC in accordance with the comparison result.

6. The method according to claim 2 , wherein said sampling mechanism is based on overhead data associated with said data.

7. The method of claim 6 , wherein said sampling mechanism comprises comparing a time stamp associated with the data to logical address information of the data.

8. The method of claim 2 , wherein said determining whether to check ECC is randomly or pseudo-randomly based.

9. The method of claim 1 , further comprising setting an error flag associated with the data if the error correction is not successfully completed.

10. The method of claim 9 , wherein the data comprises a header portion and a user data portion and said error flag is written into the header portion.

11. The method of claim 1 , wherein said determining whether to check ECC is a deterministic mechanism.

12. The method of claim 1 , further comprising:

setting a flag value based on whether the data has been corrected as part of said correcting the ECC error;

if the flag value is set to indicate that said data has been corrected, transferring the corrected data back to the cache and subsequently writing the contents of the cache to the second memory location.

13. The method of claim 12 , wherein the correcting the ECC error comprises correcting the copy of the read data using the associated ECC, wherein said flag value is set in response to a successfully completing said correcting.

14. The method of claim 12 , wherein the data comprises a user data portion and an overhead portion and wherein the user data has an associated ECC and the overhead portion has a distinct associated ECC wherein said transferring a copy of the data, said ECC checking and correcting comprises:

transferring a copy of the overhead portion of the data from the cache to the controller while maintaining said data in the cache; and

performing in the controller an error detection and correction operation on the overhead portion of the data based on the associated overhead ECC and, in response to completing a successful correction operation on the overhead portion of the data, transferring the corrected overhead portion back to the cache;

and in response to a successful error detection and correction operation on the overhead portion of the data;

transferring a copy of the user portion of the data from the cache to the controller while maintaining said data in the cache; and

performing in the controller an error detection and correction operation on the user portion of the data based on the associated user data ECC,

where said flag value is set based on whether the user data portion has been corrected.

Assignments (6)
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038813/0004 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 24, 2011
From: SANDISK CORPORATION
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 026333/0994 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 1, 2005
From: TOMLIN, ANDREW
To: SANDISK CORPORATION
Reel/Frame 015809/0265 →