IP Library Granted Patent US 7,120,051
Granted Patent B2
US 7,120,051 · App. 11/013,125 · Granted Oct 10, 2006

Pipelined programming of non-volatile memories using early data

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,120,051
App. No.
11/013,125
Granted
Oct 10, 2006
Kind
B2
Abstract

The present invention presents techniques whereby a memory system interrupts a programming process and restarts it including additional data. More specifically, when a memory system programs data into a group of cells together as programming unit, programming can begin with less than the full data content which the group can hold. In one embodiment, the present invention allows overlapped programming of upper and lower data pages, where once the memory begins programming the lower logical data page, if data is received for the upper page assigned to the same physical page, programming is interrupted and recommenced with the concurrent programming of both the upper and the loser pages. In a complimentary embodiment, when a page contains multiple sectors of data, programming of the physical page can begin when one or more, but less than all, of the sectors forming the corresponding logical page have been received, stopped and restarted to include additional sectors of the page.

Claims (68)

1. A method of programming a non-volatile memory, wherein during a programming operation data is written into a plurality of multi-state storage units formed into a physical page, the method comprising:

receiving first data content assigned to a physical page, wherein the first data content specifies less than all of the data content storable for storage units of the physical page;

beginning a programming operation of the first data content to the physical page;

subsequent to said receiving the first data content and prior to completing said programming operation of the first data content, receiving additional data content for said storage units of the physical page;

subsequent to said receiving additional data content and prior to completing said programming operation of the first data content, interrupting the programming operation of the first data content; and

beginning a concurrent programming operation of the first data content and the additional data content to the physical page.

2. The method of claim 1 , wherein the first data content is a lower data page and the additional content is an upper data page.

3. The method of claim 1 , further comprising:

prior to interrupting the programming operation of the first data content, determining that the additional data content is assigned to the same physical page as the first data content.

4. The method of claim 1 , further comprising:

subsequent to interrupting the programming operation of the first data content and prior to beginning the concurrent programming operation of the first data content and the additional data content, verifying the state of the storage units of the physical page.

5. The method of claim 4 , further comprising:

subsequent to interrupting the programming operation of the first data content and prior to beginning the concurrent programming operation of the first data content and the additional data content, resetting one or more programming parameters.

6. The method of claim 5 , wherein said programming operations use a programming waveform comprising a series of pulses of increasing magnitude.

7. The method of claim 6 , wherein said one or more programming parameters include amplitude of the programming waveform.

8. The method of claim 6 , wherein said one or more programming parameters include the maximum number of pulses.

9. The method of claim 6 , further comprising:

subsequent to interrupting the programming operation of the first data content and prior to beginning the concurrent programming operation of the first data content and the additional data content, verifying the state of the storage units of the physical page, wherein said programming parameters are set based upon said state of the storage units.

10. The method of claim 1 , wherein said programming operation of the first data content to the physical page includes writing blank data for the non-specified data content of the physical page.

11. The method of claim 1 , further comprising:

subsequent to said receiving the first data content and prior to completing the concurrent programming operation of the first data content and the additional data content to the physical page, starting another programming operation in a portion of the memory outside of said physical page.

12. A method of programming a non-volatile memory, wherein during a programming operation data is written into a physical page having a plurality of storage units, the method comprising:

receiving first data content assigned to a physical page, wherein the first data content specifies data content for less than all of the storage units forming the physical page;

beginning a programming operation of the first data content to the physical page;

subsequent to said receiving first data content and prior to completing said programming operation of the first data content, receiving additional data content for one or more additional storage units of the physical page for which data is not specified by the first data content;

subsequent to said receiving additional data content and prior to completing programming operation of the first data content, interrupting the said programming operation of the first data content; and

subsequently beginning a concurrent programming operation of the first data content and the additional data content to the physical page.

13. The method of claim 12 , wherein said page comprises multiple sectors, wherein said first data content comprises one or more, but less than all, sectors of the page, and the additional data content comprises one or more sectors of the page.

14. The method of claim 12 , wherein said physical page is distributed across multiple planes of said non-volatile memory.

15. The method of claim 12 , further comprising:

prior to interrupting the programming operation of the first data content, determining that the additional data content is assigned to the same physical page as the first data content.

16. The method of claim 12 , further comprising:

subsequent to interrupting the programming operation of the first data content and prior to beginning the concurrent programming operation of the first data content and the additional data content, verifying the state of the storage units of the physical page.

17. The method of claim 16 , further comprising:

subsequent to verifying the state of the storage units of the physical page and prior to beginning the concurrent programming operation of the first data content and the additional data content, resetting one or more programming parameters.

18. The method of claim 17 , wherein said programming operations use a programming waveform comprising a series of pulses of increasing magnitude.

19. The method of claim 18 , wherein said one or more programming parameters includes amplitude of the programming waveform.

20. The method of claim 18 , wherein said one or more programming parameters includes the maximum number of pulses.

21. The method of claim 12 , wherein said programming operation of the first data content to the physical page includes writing blank data for the storage units of the physical page for which data is not specified.

22. The method of claim 12 , further comprising:

subsequent to said receiving the first data content and prior to completing the concurrent programming operation of the first data content and the additional data content to the physical page, starting another programming operation in a portion of the memory outside of said physical page.

23. A method of programming a non-volatile memory, wherein during a programming operation data is written into a plurality of storage units, the method comprising:

receiving first data content assigned to said plurality of storage units, wherein the first data content specifies data content for less than all of the data content that said storage units can contain;

beginning a programming operation of the first data content to said plurality of storage units;

subsequent to said receiving first data content and prior to completing said programming operation of the first data content, receiving additional data content that can be contained by said plurality of storage units;

subsequent to said receiving additional data content and prior to completing programming operation of the first data content, interrupting the said programming operation of the first data content; and

subsequently beginning a concurrent programming operation of the first data content and the additional data content to said plurality of storage units.

24. The method of claim 23 , wherein said plurality of storage units are multi-state storage units and are formed into a physical page storing a plurality of logical pages and wherein the first data content specifies data content for less than all of said plurality of pages.

25. The method of claim 23 , wherein said first data content specifies data content for less than all of said storage units and said additional data content specifies data content for one or more additional ones of said storage units for which data is not specified by the first data content.

26. The method of claim 23 , further comprising:

subsequent to interrupting the programming operation of the first data content and prior to beginning the concurrent programming operation of the first data content and the additional data content, verifying the state of the plurality of storage units.

27. The method of claim 26 , further comprising:

subsequent to verifying the state of plurality of storage units and prior to beginning the concurrent programming operation of the first data content and the additional data content, resetting one or more programming parameters.

28. The method of claim 27 , wherein said programming operations use a programming waveform comprising a series of pulses of increasing magnitude.

29. The method of claim 28 , wherein said one or more programming parameters includes amplitude of the programming waveform.

30. The method of claim 28 , wherein said one or more programming parameters includes the maximum number of pulses.

31. The method of claim 23 , wherein said programming operation of the first data content to said plurality of storage units includes writing blank data for the non-specified data content of said storage units.

32. The method of claim 23 , further comprising:

subsequent to said receiving the first data content and prior to completing the concurrent programming operation of the first data content and the additional data content to said plurality of storage units, starting another programming operation in a portion of the memory not containing of said plurality of storage units.

33. A method of operating a non-volatile memory, wherein data is concurrently programmable from multiple data buffers into a plurality of storage units formed into a physical page, the method comprising:

performing a programming operation where data is written from a plurality of said buffers into said physical page;

verifying that the data content of storage units corresponding to one or more, but less than all, of said plurality of buffers is successfully written;

continuing said programming operation for the storage units corresponding to ones of said plurality of buffers other than those corresponding to storage units whose content is verified as successfully written; and

concurrently with said continuing said programming operation, receiving new data content into the buffers corresponding to storage units whose content is verified as successfully written.

34. The method of claim 33 , wherein said storage units store binary data.

35. The method of claim 33 , wherein said storage units store multi-state data.

36. The method of claim 33 , wherein said physical page is distributed across multiple planes of said non-volatile memory.

37. The method of claim 33 , wherein each of said buffers stores one or more sectors of data.

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 25, 2011
From: SANDISK CORPORATION
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 026339/0090 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 14, 2005
From: GOROBETS, SERGEY ANATOLIEVICH; LI, YAN
To: SANDISK CORPORATION
Reel/Frame 015899/0998 →