IP Library Granted Patent US 9,117,530
Granted Patent B2
US 9,117,530 · App. 13/831,420 · Granted Aug 25, 2015

Preserving data from adjacent word lines while programming binary non-volatile storage elements

Inventors: Tosha Pandya (San Jose, CA); Mrinal Kochar (San Jose, CA); Yee Koh (Fremont, CA)
Assignee: SANDISK TECHNOLOGIES INC.
G11C16/10G11C16/0483G11C16/06G11C16/3427G11C29/82G11C11/5642
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 9,117,530
App. No.
13/831,420
Granted
Aug 25, 2015
Kind
B2
Abstract

A system and methods for programming non-volatile memory elements by using latches to transfer data. Upon discovering errors in previously programmed non-volatile memory elements, the system recovers the corresponding data from the latches and programming the recovered data to other non-volatile memory elements.

Claims (101)

1. A non-volatile storage system, the non-volatile storage system capable of storing first data, second data and third data, the non-volatile storage system comprising:

a plurality of non-volatile storage elements;

multiple sets of word lines connected to the non-volatile storage elements, the sets of word lines include a first set of word lines, the first set of word lines includes a first word line, a second word line and a third word line;

bit lines connected to the non-volatile storage elements;

a set of latches connected to the bit lines; and

one or more managing circuits in communication with the sets of word lines and the set of latches, the one or more managing circuits load the first data into the set of latches, the one or more managing circuits program the first data from the set of latches into non-volatile storage elements connected to the first word line, the one or more managing circuits load the second data into the set of latches and program the second data from the set of latches into non-volatile storage elements connected to the second word line, the one or more managing circuits load the third data into the set of latches for purposes of programming the third data into non-volatile storage elements connected to the third word line, the one or more managing circuits determine whether the second data is correctly stored in the plurality of non-volatile storage elements connected to the second word line while the first data and the second data and the third data are stored in the set of latches, if the second data is not correctly stored in the plurality of non-volatile storage elements connected to the second word line then the one or more managing circuits access the first data, the second data and the third data from the set of latches and program the accessed first data, the second data and the third data into non-volatile storage elements connected a second set of word lines that are different than the first set of word lines.

2. The non-volatile storage system of claim 1 , wherein:

the non-volatile storage elements, multiple sets of word lines, the bit lines and the latches comprise a memory circuit;

the one or more managing circuits comprise a managing circuit that is part of the memory circuit;

the one or more managing circuits further comprise a controller that is a separate circuit from and in communication with the memory circuit;

the controller issues a command to the memory circuit to program the first data from the set of latches into non-volatile storage elements connected to the first word line;

the controller issues a command to the memory circuit to load the second data into the set of latches and program the second data from the set of latches into non-volatile storage elements connected to the second word line;

the controller issues a command to the memory circuit to load the third data into the set of latches for purposes of programming the third data into non-volatile storage elements connected to the third word line;

the controller issues a command to the memory circuit to determine whether the second data is correctly stored in the plurality of non-volatile storage elements connected to the second word line; and

if the second data is not correctly stored in the plurality of non-volatile storage elements connected to the second word line then the controller issues one or more commands to the memory circuit to program the accessed first data, the second data and the third data into non-volatile storage elements connected the second set of word lines that are different than the first set of word lines.

3. The non-volatile storage system of claim 1 , wherein:

the first set of latches comprises a first latch, a second latch and a third latch;

the one or more managing circuits load the first data into the set of latches by loading the first data into the first latch;

the one or more managing circuits load the second data into the set of latches by loading the second data into the first latch;

the one or more managing circuits load the third data into the set of latches by loading the third data into the first latch, the one or more managing circuits determine whether the second data is correctly stored while the third data is in the first latch;

the one or more managing circuits program the first data from the second latch;

the one or more managing circuits program the second data from the first second latch; and

the one or more managing circuits move the first data from the first latch to the second latch prior to programming the second data, move the first data from the second latch to the third latch prior to programming the second data, and move the second data from the first latch to the second latch prior to programming the second data and prior to the determining whether the second data is correctly stored.

4. The non-volatile storage system of claim 1 , wherein:

the first set of latches comprises a first latch, a second latch and a third latch;

the one or more managing circuits load the second data into the set of latches by loading the second data from the non-volatile storage elements connected to the second word line into the first latch;

the one or more managing circuits move the second data from the first latch to the second latch;

the one or more managing circuits load the third data into the set of latches by loading the third data into the first latch, the one or more managing circuits determine whether the second data is correctly stored while the third data is in the first latch; and

the one or more managing circuits program the second data from the second latch while the third data is in the first latch.

5. The non-volatile storage system of claim 1 , wherein:

the first set of latches comprises a first latch, a second latch and a third latch;

the one or more managing circuits load the second data into the set of latches by loading the second data from the non-volatile storage elements connected to the second word line into the first latch;

the one or more managing circuits move the second data from the first latch to the second latch;

the one or more managing circuits move the second data from the first latch to the third latch;

the one or more managing circuits load the third data into the set of latches by loading the third data into the first latch; and

the one or more managing circuits program the first data by programming the first data from the first latch while the second data is in the third latch.

6. A method for programming a non-volatile memory system, the non-volatile memory system includes a first set of word lines, the first set of word lines include a first word line, a second word line and a third word line, the non-volatile memory system capable of storing first data, second data and third data, the method comprising:

loading the second data into a first latch for the non-volatile memory system;

storing the first data in a third latch for the non-volatile memory system, the first data has already been programmed into a plurality of non-volatile storage elements connected to the first word line;

moving the second data from the first latch to a second latch for the non-volatile memory system;

programming the second data from into a plurality of non-volatile storage elements connected to the second word line;

loading the third data into the first latch for programming the third data into a plurality of non-volatile storage elements connected to the third word line;

determining whether the second data is correctly stored in the non-volatile storage elements connected to the second word line; and

if the second data is not correctly stored in the non-volatile storage elements connected to the second word line, then:

accessing the first data from the third latch and programming the accessed first data into non-volatile storage elements connected one or more word lines of a second set of word lines that are different than the first set of word lines,

accessing the second data from the second latch and programming the accessed second data into non-volatile storage elements connected one or more word lines of the second set of word lines, and

accessing the third data from the first latch and programming the access third data into non-volatile storage elements connected one or more word lines of the second set of word lines.

7. The method of claim 6 , wherein:

the storing the first data in the third latch comprises moving the first data from the second latch to the third latch prior to moving the second data from the first latch to the second latch.

8. The method of claim 7 , further comprising:

loading the first data into the first latch;

programming the first data from the first latch into the non-volatile storage elements connected to the first word line; and

moving the first data from the first latch to the second latch prior to loading the second data into the first latch.

9. The method of claim 7 , further comprising:

reading the first data from the non-volatile storage elements connected to the first word line and loading the first data read from the non-volatile storage elements connected to the first word line into the first latch.

10. The method of claim 6 , further comprising:

reading the first data from the non-volatile storage elements connected to the first word line, the storing the first data in the third latch comprises loading the first data read from the non-volatile storage elements connected to the first word line into the third latch.

11. The method of claim 6 , further comprising:

commencing programming of the third data from the second latch into the non-volatile storage elements connected to the third word line after determining that the second data is correctly stored in the non-volatile storage elements connected to the second word line.

12. The method of claim 6 , further comprising:

completing programming of the second data from the second latch into the non-volatile storage elements connected to the second word line after loading the third data into the first latch.

13. The method of claim 6 , wherein the first set of word lines comprise a first block, the method further comprises:

reading the first data from the non-volatile storage elements connected to the first word line, combining the first data with data from two other blocks and storing the combined data as three bits per memory cell in a set of non-volatile storage elements connected to a word line in a fourth block;

reading the second data from the non-volatile storage elements connected to the second word line, combining the second data with data from two other blocks and storing the combined data as three bits per memory cell in a different set of non-volatile storage elements connected to a word line in the fourth block; and

reading the third data from the non-volatile storage elements connected to the third word line, combining the third data with data from two other blocks and storing the combined data as three bits per memory cell in a another set of non-volatile storage elements connected to a word line in the fourth block.

14. The method of claim 6 , wherein:

the non-volatile storage elements connected to the first word line, the non-volatile storage elements connected to the second word line and the non-volatile storage elements connected to the third word line are single programming level NAND flash memory cells.

15. The method of claim 6 , wherein:

the first latch, the second latch and the third latch are connected to bit lines for the non-volatile storage elements connected to the first word line, the non-volatile storage elements connected to the second word line and the non-volatile storage elements connected to the third word line.

16. A method for programming a non-volatile memory system, the non-volatile memory system includes a first set of word lines, the first set of word lines include a first word line, a second word line and a third word line, the non-volatile memory system capable of storing first data, second data and third data, the method comprising:

loading the first data into a set of latches for the first set of word lines;

programming the first data from the set of latches into non-volatile storage elements connected to the first word line;

loading the second data into the set of latches;

programming the second data from the set of latches into non-volatile storage elements connected to the second word line;

loading the third data into the set of latches for purposes of programming the third data into non-volatile storage elements connected to the third word line;

determining whether the second data is correctly stored in the plurality of non-volatile storage elements connected to the second word line while the first data, the second data and the third data are stored in the set of latches; and

if the second data is not correctly stored in the non-volatile storage elements connected to the second word line, then accessing the first data, the second data and the third data from the set of latches and programming the accessed first data, the accessed second data and the accessed third data into non-volatile storage elements connected a second set of word lines that are different than the first set of word lines.

17. The method of claim 16 , wherein:

the latches are connected to bit lines for the non-volatile storage elements connected to the first word line, the non-volatile storage elements connected to the second word line and the non-volatile storage elements connected to the third word line.

18. The method of claim 16 , wherein:

the first set of latches comprises a first latch, a second latch and a third latch;

the loading the first data into the set of latches comprises loading the first data into the first latch;

the loading of the second data into the set of latches comprises loading the second data into the first latch;

the loading of the third data into the set of latches comprises loading the third data into the first latch, the determining whether the second data is correctly stored is performed while the third data is in the first latch;

the programming the first data comprises programming the first data from the second latch;

the programming the second data comprises programming the second data from the first second latch; and

the method further comprises moving the first data from the first latch to the second latch prior to programming the second data, moving the first data from the second latch to the third latch after programming the second data, and moving the second data from the first latch to the second latch after programming the second data and prior to the determining whether the second data is correctly stored.

19. The method of claim 16 , wherein:

the first set of latches comprises a first latch, a second latch and a third latch;

the loading the second data into the set of latches comprises loading the second data into the first latch;

the loading the first data into the set of latches comprises reading the first data from the non-volatile storage elements connected to the first word line and loading the first data read from the non-volatile storage elements connected to the first word line into the second latch;

the loading of the third data into the set of latches comprises loading the third data into the first latch, the determining whether the second data is correctly stored is performed while the third data is in the first latch;

the programming the second data comprises programming the second data from the first latch while the first data is in the second latch; and

the method further comprises moving the first data from the second latch to the third latch after programming the second data and moving the second data from the first latch to the second latch after programming the second data and prior to the determining whether the second data is correctly stored.

20. The method of claim 16 , wherein:

the first set of latches comprises a first latch, a second latch and a third latch;

the loading the second data into the set of latches comprises loading the second data into the first latch;

the loading the first data into the set of latches comprises reading the first data from the non-volatile storage elements connected to the first word line and loading the first data read from the non-volatile storage elements connected to the first word line into the third latch;

the loading of the third data into the set of latches comprises loading the third data into the first latch, the determining whether the second data is correctly stored is performed while the third data is in the first latch;

the programming the second data comprises programming the second data from the first latch while the first data is in the third latch; and

the method further comprises moving the second data from the first latch to the second latch after programming the second data and prior to loading the third data into the third latch.

Assignments (5)
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 038807/0898 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 20, 2013
From: PANDYA, TOSHA; KOCHAR, MRINAL; KOH, YEE
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 030052/0515 →
Continuity (1)
Related Publication 20140269071A1 · Sep 18, 2014