IP Library Granted Patent US 46,348
Granted Patent E1
US 46,348 · App. 14/231,591 · Granted Mar 21, 2017

Program cycle skip

Inventors: Gopinath Balakrishnan (San Jose, CA); Luca Fasoli (Campbell, CA); Tz-Yi Liu (Palo Alto, CA); Yuheng Zhang (Saratoga, CA); Yan Li (Milpitas, CA)
Assignee: SANDISK TECHNOLOGIES LLC
G11C13/0069G11C5/02G11C13/0007G11C13/0061G11C17/165G11C17/18G11C2013/0076G11C2013/0085G11C2213/71
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 46,348
App. No.
14/231,591
Granted
Mar 21, 2017
Kind
E1
Abstract

A non-volatile storage system includes technology for skipping programming cycles while programming a page (or other unit) of data. While programming a current subset of the page (or other unit) of data, the system will evaluate whether the next subsets of the page (or other unit) of data should be programmed into non-volatile storage elements or skipped. Subsets of the page (or other unit) of data that should not be skipped are programmed into non-volatile storage elements. Some embodiments include transferring the appropriate data to temporary latches/registers, in preparation for programming, concurrently with the evaluation of whether to program or skip the programming.

Claims (117)

1. A method for programming non-volatile storage elements, comprising:

programming a current subset of data from an intermediate storage device into an associated subset of non-volatile storage elements;

while programming the current subset of data, evaluating whether two or more additional subsets of the data stored in the intermediate storage device should be programmed into respective subsets of the non-volatile storage elements; and

programming a particular subset of data of the two or more additional subsets of the data into a particular subset of the non-volatile storage elements if the evaluating determined that the particular subset of data should be programmed.

2. The method of claim 1 , further comprising:

receiving the data with a request to program the data; and

storing the data in the intermediate register;

wherein the programming of the current subset of data includes transferring the current subset of the data from the intermediate storage device to a set of temporary shadow storage devices, transferring the current subset of data from the set of temporary shadow storage devices to a set of temporary data storage devices, and transferring the data from the set of temporary data storage devices to the associated subset of non-volatile storage elements.

3. The method of claim 1 , wherein:

the method further includes receiving the data with a request to program the data and

storing the data in the intermediate register;

the non-volatile storage elements are arranged above a substrate;

the intermediate register is arranged on the substrate in an area that is not underneath the non-volatile storage elements;

the programming of the current subset of data includes transferring the current subset of data from the intermediate storage device to a set of temporary shadow storage devices, transferring the current subset of the data from the set of temporary shadow storage devices to a set of temporary data storage devices, and transferring the data from the set of temporary data storage devices to the associated subset of non-volatile storage elements; and

the set of temporary shadow storage devices and the set of temporary data storage devices are arranged on the substrate underneath the non-volatile storage elements.

4. The method of claim 1 , further comprising:

receiving the data with a request to program the data; and

storing the data in the intermediate register, the data stored in the intermediate register is a logical page of data to be programmed as a unit, the intermediate register is a page register.

5. The method of claim 1 , wherein:

the associated subset of non-volatile storage elements comprise one column of non-volatile storage elements in a plurality of non-volatile storage elements;

the particular subset of non-volatile storage elements comprise another column of non-volatile storage elements in the plurality of non-volatile storage elements;

each subset of data of the two or more additional subsets of the data are associated with different columns of non-volatile storage elements; and

the evaluating includes determining whether to skip programming for one or more of the columns of non-volatile storage elements.

6. The method of claim 1 , wherein:

the associated subset of non-volatile storage elements are part of one column of non-volatile storage elements in a plurality of non-volatile storage elements;

each subset of data of the two or more additional subsets of the data are associated with non-volatile storage elements in a particular column;

each subset of data of the two or more additional subsets of the data are associated with different subsets of sense amplifiers; and

the evaluating includes determining whether to skip programming for one or more of the subsets of sense amplifiers.

7. The method of claim 1 , wherein:

the evaluating whether two or more additional subsets of the data stored in the intermediate storage device should be programmed into respective subsets of the non-volatile storage elements includes determining whether the two or more additional subsets of the data stored in the intermediate storage device match information stored in the respective subsets of the non-volatile storage elements.

8. A method for programming non-volatile storage elements, comprising:

programming a current subset of data from an intermediate storage device into an associated subset of non-volatile storage elements;

without waiting for completion of the programming the current subset of data from the intermediate storage device into the associated subset of non-volatile storage elements, evaluating whether two or more additional subsets of the data stored in the intermediate storage device should be programmed into respective subsets of the non-volatile storage elements; and

programming a particular subset of data of the two or more additional subsets of the data into a particular subset of the non-volatile storage elements if the evaluating determined that the particular subset of data should be programmed.

9. The method of claim 8 , further comprising:

receiving the data with a request to program the data; and

storing the data in the intermediate register;

wherein the programming of the current subset of data includes transferring the current subset of the data from the intermediate storage device to a set of temporary shadow storage devices, transferring the current subset of data from the set of temporary shadow storage devices to a set of temporary data storage devices, and transferring the data from the set of temporary data storage devices to the associated subset of non-volatile storage elements.

10. The method of claim 8 , wherein:

the method further includes receiving the data with a request to program the data and storing the data in the intermediate register;

the non-volatile storage elements are arranged above a substrate;

the intermediate register is arranged on the substrate in an area that is not underneath the non-volatile storage elements;

the programming of the current subset of data includes transferring the current subset of data from the intermediate storage device to a set of temporary shadow storage devices, transferring the current subset of the data from the set of temporary shadow storage devices to a set of temporary data storage devices, and transferring the data from the set of temporary data storage devices to the associated subset of non-volatile storage elements; and

the set of temporary shadow storage devices and the set of temporary data storage devices are arranged on the substrate underneath the non-volatile storage elements.

11. The method of claim 8 , further comprising:

receiving the data with a request to program the data; and

storing the data in the intermediate register, the data stored in the intermediate register is a logical page of data to be programmed as a unit, the intermediate register is a page register.

12. The method of claim 8 , wherein:

the associated subset of non-volatile storage elements comprise one column of non-volatile storage elements in a plurality of non-volatile storage elements;

the particular subset of non-volatile storage elements comprise another column of non-volatile storage elements in the plurality of non-volatile storage elements;

each subset of data of the two or more additional subsets of the data are associated with different columns of non-volatile storage elements; and

the evaluating includes determining whether to skip programming for one or more of the columns of non-volatile storage elements.

13. The method of claim 8 , wherein:

the associated subset of non-volatile storage elements are part of one column of non-volatile storage elements in a plurality of non-volatile storage elements;

each subset of data of the two or more additional subsets of the data are associated with non-volatile storage elements in a particular column;

each subset of data of the two or more additional subsets of the data are associated with different subsets of sense amplifiers; and

the evaluating includes determining whether to skip programming for one or more of the subsets of sense amplifiers.

14. The method of claim 8 , wherein:

the evaluating whether two or more additional subsets of the data stored in the intermediate storage device should be programmed into respective subsets of the non-volatile storage elements includes determining whether the two or more additional subsets of the data stored in the intermediate storage device match information stored in the respective subsets of the non-volatile storage elements.

15. A non-volatile storage apparatus, comprising:

a plurality of non-volatile storage elements; and

one or more managing circuits in communication with the non-volatile storage elements, the one or more managing circuits program a first subset of data into a first subset of non-volatile storage elements, without waiting for completion of the programming of the first subset of data the one or more managing circuits evaluate whether two or more additional subsets of the data should be programmed into respective subsets of the non-volatile storage elements, the one or more managing circuits program a particular subset of data of the two or more additional subsets of the data into a particular subset of the non-volatile storage elements if the evaluation determined that the particular subset of data should be programmed.

16. The non-volatile storage apparatus of claim 15 , wherein:

the first subset of non-volatile storage elements comprise one column of non-volatile storage elements in the plurality of non-volatile storage elements;

each subset of the respective subsets of the non-volatile storage elements comprise different columns of the plurality of non-volatile storage elements; and

the evaluating includes determining whether to skip programming for one or more of the columns of non-volatile storage elements.

17. The non-volatile storage apparatus of claim 15 , wherein:

the first subset of non-volatile storage elements is part of one column of non-volatile storage elements in the plurality of non-volatile storage elements;

each subset of the respective subsets of the non-volatile storage elements are part of a particular column of non-volatile storage elements in the plurality of non-volatile storage elements;

the apparatus further comprises sense amplifiers;

each subset of the respective subsets of the non-volatile storage elements are associated with different subsets of sense amplifiers; and

the evaluating includes determining whether to skip programming for one or more of the subsets of sense amplifiers.

18. A non-volatile storage apparatus, comprising:

a substrate;

a plurality of non-volatile storage elements arranged above the substrate;

a plurality of sense amplifiers in communication with the non-volatile storage elements, the sense amplifiers are arranged on the substrate underneath the non-volatile storage elements;

a plurality of temporary storage devices in communication with the sense amplifiers, the temporary storage devices are arranged on the substrate underneath the non-volatile storage elements;

an intermediate register in communication with the temporary storage devices, the intermediate register is arranged on the substrate in an area that is not underneath the non-volatile storage devices; and

one or more control circuits in communication with the temporary storage devices and the sense amplifiers and the intermediate register, a set of data is stored in the intermediate register, a first subset of the data is transferred into a subset of the temporary registers and then stored in a first subset of the non-volatile storage elements, while programming the first subset of data two or more additional subsets of the data stored in the intermediate storage device are evaluated to determine whether they should be programmed into respective subsets of the non-volatile storage elements, a particular subset of data of the two or more additional subsets of the data is programmed into a particular subset of the non-volatile storage elements if the evaluating determined that the particular subset of data should be programmed.

19. The non-volatile storage apparatus of claim 18 , wherein:

the particular subset of data is transferred from the intermediate register to the subset of the temporary registers while evaluating whether to program the particular subset of data.

20. The non-volatile storage apparatus of claim 18 , wherein:

the additional subsets of the data stored in the intermediate storage device are evaluated by determining whether they match information stored in respective subsets of the non-volatile storage elements.

21. The non-volatile storage apparatus of claim 18 , wherein:

the first subset of non-volatile storage elements comprise one column of non-volatile storage elements in the plurality of non-volatile storage elements;

each subset of the respective subsets of the non-volatile storage elements comprise different columns of the plurality of non-volatile storage elements; and

the evaluating includes determining whether to skip programming for one or more of the columns of non-volatile storage elements.

22. The non-volatile storage apparatus of claim 18 , wherein:

each subset of the respective subsets of the non-volatile storage elements are associated with different subsets of sense amplifiers; and

the evaluating includes determining whether to skip programming for one or more of the subsets of sense amplifiers.

23. The non-volatile storage apparatus of claim 18 , wherein:

the intermediate register is a page register; and

the first subset of data and the additional subsets of the data are part of the same page of data stored in the page register.

24. The method of claim 1, wherein:

the non-volatile storage elements comprise a three-dimensional array of storage elements.

25. The method of claim 1, wherein:

the non-volatile storage elements comprise a three-dimensional array of memory cells.

26. The method of claim 1, wherein:

the non-volatile storage elements are arranged in a three-dimensional memory structure.

27. The method of claim 8, wherein:

the non-volatile storage elements comprise a three-dimensional array of storage elements.

28. The method of claim 8, wherein:

the non-volatile storage elements comprise a three-dimensional array of memory cells.

29. The method of claim 8, wherein:

the non-volatile storage elements are arranged in a three-dimensional memory structure.

30. The non-volatile storage apparatus of claim 15, wherein:

the plurality of non-volatile storage elements comprises a three-dimensional array of storage elements.

31. The non-volatile storage apparatus of claim 15, wherein:

the plurality of non-volatile storage elements comprises a three-dimensional array of memory cells.

32. The non-volatile storage apparatus of claim 15, wherein:

the plurality of non-volatile storage elements are arranged in a three-dimensional memory structure.

33. The non-volatile storage apparatus of claim 18, wherein:

the plurality of non-volatile storage elements comprises a three-dimensional array of storage elements.

34. The non-volatile storage apparatus of claim 18, wherein:

the plurality of non-volatile storage elements comprises a three-dimensional array of memory cells.

35. The non-volatile storage apparatus of claim 18, wherein:

the plurality of non-volatile storage elements are arranged in a three-dimensional memory structure.

Assignments (3)
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038807/0807 →
CORRECTIVE ASSIGNMENT TO CORRECT THE INCORRECT LISTED PATENT NUMBER 8853569 TO THE CORRECT PATENT NUMBER 8883569 PREVIOUSLY RECORDED ON REEL 038300 FRAME 0665. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Apr 25, 2016
From: SANDISK 3D LLC
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 038520/0552 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 30, 2016
From: SANDISK 3D LLC.
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 038300/0665 →
Continuity (1)
Reissue 12638729 · Dec 15, 2009