IP Library Granted Patent US 8,473,923
Granted Patent B2
US 8,473,923 · App. 12/026,472 · Granted Jun 25, 2013

Pointers for write abort handling

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 8,473,923
App. No.
12/026,472
Granted
Jun 25, 2013
Kind
B2
Abstract

A portion of a nonvolatile memory array that is likely to contain, partially programmed data may be identified from a high sensitivity read, by applying stricter than usual error correction code (ECC) requirements, or using pointers to programmed sectors. The last programmed data may be treated as likely to be partially programmed data. Data in the identified portion may be copied to another location, or left where it is with an indicator to prohibit further programming to the same cells. To avoid compromising previously stored data during subsequent programming, previously stored data may be backed up. Backing up may be done selectively, for example, only for nonsequential data, or only when the previously stored data contains an earlier version of data being programmed. If a backup copy already exists, another backup copy is not created. Sequential commands are treated as a single command if received within a predetermined time period.

Claims (29)

1. A method of identifying portions of a non-volatile memory that are likely to contain unreliable data, wherein the non-volatile memory and a controller are part of a non-volatile system, the method comprising:

the controller storing a first pointer that points to a first location of a first addressable unit of data that has been or is to be programmed first into the non-volatile memory, wherein the first addressable unit of data forms part of a plurality of addressable units of data of a command or command sequence for programming such addressable units of data;

if a power cycle or an abort does not occur prior to programming a last one of the addressable units of data of the command or command sequence, the controller storing a second pointer that is associated with a location of the last addressable unit of data; and

if the power cycle or the abort occurs prior to programming the last addressable unit of data of the command or command sequence, the controller searching for the first pointer and a second pointer that points to a second location of the last one of the addressable units or immediately after such last addressable unit to verify that the addressable units of data associated with the command or command sequence, including the first and second addressable units of data, were programmed, wherein verifying comprises identifying one or more blocks as partially programmed as a result of finding the first pointer and not finding the second pointer.

2. The method of claim 1 wherein the addressable units of data are associated with a command sequence that consists of a plurality of sequentially received commands that are identified as being a command sequence as a result of being received within a predetermined time as established by a timer.

3. The method of claim 2 wherein the plurality of sequentially received commands of the command sequence are treated as a single command for purposes of saving control data and copying vulnerable data to safe locations.

4. The method of claim 1 wherein the power cycle or the abort do not occur and the first pointer and the second pointer are stored in a block that does not contain any addressable unit of data associated with the command or command sequence.

5. The method of claim 1 further comprising identifying one or more blocks as partially programmed as a result of finding a pointer that points to a first addressable unit of data of a write operation, the pointer pointing to a portion of the non-volatile memory that is read as containing no programmed data.

6. The method of claim 1 , wherein an abort occurs after programming the last addressable unit of data for the command or command sequence and the second pointer is stored and wherein the second pointer points to the location of the last addressable unit of data that was last programmed into the non-volatile memory for the command or command sequence.

7. The method of claim 1 , wherein an abort occurs after programming the last addressable unit of data for the command or command sequence and a second pointer that is associated with a location of the last addressable unit of data is stored and wherein the second pointer points to a next available location that is immediately after a location of the last addressable unit of data that was last programmed into the non-volatile memory for the command or command sequence.

8. A method of identifying portions of a non-volatile memory that are likely to contain unreliable data, wherein the non-volatile memory and a controller are part of a non-volatile system, the method comprising:

the controller receiving a command or command sequence for programming a plurality of addressable units of data having a sequence of logical addresses, including a first logical address and a last logical address;

the controller storing in the non-volatile memory a first pointer for the first logical address corresponding to a first one of the addressable units of data for programming into the non-volatile memory;

if a power cycle or an abort has not occurred prior to programming into the non-volatile memory a second one of the addressable units of data that is associated with the last logical address, the controller storing a second pointer for the last logical address in the non-volatile memory; and

if the abort or the power cycle has occurred prior to programming the last addressable unit of data of the command or command sequence, the controller searching for the first pointer and a second pointer that points to a second location of the last one of the addressable units or immediately after such last addressable unit to verify that the addressable units of data associated with the command or command sequence, including the first and second addressable units of data, were programmed, wherein verifying comprises identifying one or more blocks as partially programmed as a result of finding the first pointer and not finding the second pointer.

9. The method of claim 8 , the power cycle or the abort do not occur and wherein the first pointer and the second pointer are stored in a block of the non-volatile memory that does not contain any addressable unit of data associated with the command or command sequence.

10. The method of claim 8 , wherein an abort occurs after programming the last addressable unit of data for the command or command sequence and a second pointer that is associated with a location of the last addressable unit of data is stored and wherein the second pointer points to a next available location that is immediately after a location of the last addressable unit of data that was last programmed into the non-volatile memory for the command or command sequence.

11. A non-volatile memory system, comprising:

a non-volatile memory array;

a controller configured for:

storing a first pointer that points to a first location of a first addressable unit of data that has been programmed first into the non-volatile memory array, wherein the first addressable unit of data forms part of a plurality of addressable units of data of a command or command sequence for programming such addressable units of data;

if a power cycle or an abort does not occur prior to programming a last one of the addressable units of data of the command or command sequence, storing a second pointer that is associated with a location of the last addressable unit of data; and

if the power cycle or the abort occurs prior to programming the last addressable unit of data of the command or command sequence, searching for the first pointer and a second pointer that points to a second location of the last one of the addressable units or immediately after such last addressable unit to verify that the addressable units of data associated with the command or command sequence, including the first and second addressable units of data, were programmed, wherein verifying comprises identifying one or more blocks as partially programmed as a result of finding the first pointer and not finding the second pointer.

12. The non-volatile memory system of claim 11 , wherein the addressable units of data are associated with a command sequence that consists of a plurality of sequentially received commands that are identified as being a command sequence as a result of being received within a predetermined time as established by a timer.

13. The non-volatile memory system of claim 12 wherein the plurality of sequentially received commands of the command sequence are treated as a single command for purposes of saving control data and copying vulnerable data to safe locations.

14. The non-volatile memory system of claim 11 , wherein the power cycle or the abort do not occur and the first pointer and the second pointer are stored in a block that does not contain any addressable unit of data associated with the command or command sequence.

15. The non-volatile memory system of claim 11 , the controller further configured for identifying one or more blocks as partially programmed as a result of finding a pointer that points to a first addressable unit of data of a write operation, the pointer pointing to a portion of the non-volatile memory array that is read as containing no programmed data.

16. The non-volatile memory system of claim 11 , wherein an abort occurs after programming the last addressable unit of data for the command or command sequence and the second pointer is stored and wherein the second pointer points to the location of the last addressable unit of data that was last programmed into the non-volatile memory for the command or command sequence.

17. The non-volatile memory system of claim 11 , wherein an abort occurs after programming the last addressable unit of data for the command or command sequence and a second pointer that is associated with a location of the last addressable unit of data is stored and wherein the second pointer points to a next available location that is immediately after a location of the last addressable unit of data that was last programmed into the non-volatile memory for the command or command sequence.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 17, 2025
From: SANDISK TECHNOLOGIES LLC
To: PALISADE TECHNOLOGIES, LLP
Reel/Frame 071435/0463 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038809/0600 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 13, 2011
From: SANDISK CORPORATION
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 026276/0613 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 13, 2011
From: SANDISK CORPORATION
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 026276/0657 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 5, 2008
From: LIN, JASON T.; TRAISTER, SHAI; GOROBETS, SERGEY A.
To: SANDISK CORPORATION
Reel/Frame 020603/0532 →