IP Library › Granted Patent US 7,412,560
Granted Patent B2
US 7,412,560 · App. 11/191,686 · Granted Aug 12, 2008

Non-volatile memory and method with multi-stream updating

Assignee: Sandisk Corporation
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,412,560
App. No.
11/191,686
Granted
Aug 12, 2008
Kind
B2
Abstract

In a memory that is programmable page by page and each page having multiple sectors that are once-programmable, even if successive writes are sequential, the data recorded to an update block may be fragmented and non-sequential. Instead of recording update data to an update block, the data is being recorded in at least two interleaving streams. When a full page of data is available, it is recorded to the update block. Otherwise, it is temporarily recorded to the scratch pad block until a full page of data becomes available to be transferred to the update block. Preferably, a pipeline operation allows the recording to the update block to be set up as soon as the host write command indicates a full page could be written. If the actual write data is incomplete due to interruptions, the setup will be canceled and recording is made to the scratch pad block instead.

Claims (140)

1. A method of recording data units from a host comprising:

providing first and second nonvolatile storages;

receiving a host write command that indicates the data units to be written;

setting up either the first or second storage for recording depending on whether or not a predetermined condition is satisfied based on the data units to be written;

sending the data units to the storage being set up as the data units are received from the host; and

recording the data units to the set up storage when the predetermined condition is confirmed based on the data units received, otherwise setting up the second storage if not already set up, and recording the data units received to the second storage.

2. A method as in claim 1 , wherein said setting up includes addressing the selected storage.

3. A method as in claim 1 , wherein said sending the data units to the storage includes sending the data units to a set of data latches for programming the selected storage.

4. A method as in claim 1 , further comprising:

organizing the data into data units having a predetermined order; and

organizing the first and second nonvolatile storages into pages, each page for programming together multiple data units having predetermined page offsets; and wherein:

said predetermined condition is when one of the data units has a page-end offset; and

said recording the data to the first storage includes recording to a page of the first storage said page-end data unit and any preceding data units in the page.

5. A method as in claim 4 , wherein each of the first and second storages is for storing a block of memory units that are erasable together.

6. A method as in claim 4 , wherein:

said data from the host is update data for a group of data units;

said first storage is for storing said update data; and

said second storage is for buffering said update data before being transferred to the first storage.

7. A method as in claim 4 , further comprising:

organizing the data into data units having a predetermined order; and

organizing the first and second nonvolatile storages into pages, each page for programming together multiple data units having predetermined page offsets.

8. A method as in claim 7 , wherein each page is once-programmable after an erase.

9. A method as in claim 7 , wherein:

said recording data to the second storage includes recording to a page thereof at least one index of the data stored in the second storage.

10. A method as in claim 9 , wherein said at least one index of the data stored in the second storage is recorded to a location of said page having a page-end offset.

11. A method as in claim 7 , wherein:

said recording data to the second storage includes recording to a page thereof at least one index of the data stored in the first and second storages.

12. A method as in claim 11 , wherein said at least one index of the data stored in the first and second storages is recorded to a location of said page having a page-end offset.

13. A method as in claim 7 , wherein:

said recording data to the second storage includes recording to a page thereof a pointer pointing to the next recording location of the first storage.

14. A method as in claim 13 , wherein said pointer is recorded to a location of a page having said page-end offset.

15. A method as in any one of claims 1 - 14 , wherein the first and second nonvolatile storages are constituted from memory cells that individually store one bit of data.

16. A method as in any one of claims 1 - 14 , wherein said first and second nonvolatile storages are constituted from memory cells that individually store more than one bit of data.

17. A nonvolatile memory comprising:

a memory organized into a plurality of blocks, each block being a plurality of memory units that are erasable together, each memory unit for storing a logical unit of data;

a controller for controlling operations of said blocks;

first and second blocks, each for recording data from a host;

a buffer for receiving the data from the host; and

said controller setting up either the first or second storage for recording depending on whether or not a predetermined condition is satisfied based on the data units to be written; and

sending the data units to the storage being set up as the data units are received from the host; and

recording the data units to the set up storage when the predetermined condition is confirmed based on the data units received, otherwise setting up the second storage if not already set up, and recording the data units received to the second storage.

18. A nonvolatile memory as in claim 17 , wherein said nonvolatile memory is in the form of a removable memory card.

19. A nonvolatile memory as in claim 17 , wherein:

said data from the host is update data for a group of data units;

said first block is for storing said update data; and

said second block is for buffering said update data before being transferred to the first block.

20. A nonvolatile memory as in claim 17 , wherein:

the data is organized into data units having a predetermined order; and

said first and second blocks are organized into pages, each page for programming together multiple data units having predetermined page offsets.

21. A nonvolatile memory as in claim 20 , wherein each page is once-programmable after an erase.

22. A nonvolatile memory as in claim 17 , wherein:

said predetermined condition is when one of the received data units has a page-end offset; and

said controller controlling recording the data to said first block includes recording to a page of said first block said page-end data unit and any preceding data units in the page.

23. A nonvolatile memory as in claim 17 , wherein:

said controller controlling recording the data to said second storage includes recording to a page thereof at least one index of the data stored in the second storage.

24. A nonvolatile memory as in claim 23 , wherein said at least one index of the data stored in the second storage is recorded to a location of said page having a page-end offset.

25. A nonvolatile memory as in claim 17 , wherein:

said controller controlling recording the data to said second storage includes recording to a page thereof at least one index of the data stored in the first and second storages.

26. A nonvolatile memory as in claim 25 , wherein said at least one index of the data stored in the first and second storages is recorded to a location of said page having a page-end offset.

27. A nonvolatile memory as in claim 17 , wherein:

said controller controlling recording the data to said second storage includes recording to a page thereof a pointer pointing to the next recording location of the first storage.

28. A nonvolatile memory as in claim 27 , wherein said pointer is recorded to a location of a page having said page-end offset.

29. A nonvolatile memory comprising:

a memory organized into a plurality of blocks, each block being a plurality of memory units that are erasable together, each memory unit for storing a logical unit of data;

a controller for controlling operations of said blocks;

first and second blocks, each for sequentially recording data from a host;

a buffer for receiving the data from the host; and

means for controlling either recording of the data to said first block when a predetermined condition is satisfied, or recording of the data to said second block when the predetermined condition is not satisfied.

30. A nonvolatile memory as in any one of claims 17 - 29 , wherein the first and second nonvolatile storages are constituted from memory cells that individually store one bit of data.

31. A nonvolatile memory as in any one of claims 17 - 29 , wherein said first and second nonvolatile storages are constituted from memory cells that individually store more than one bit of data.

32. A method of recording data from a host comprising:

providing first and second nonvolatile storages;

receiving the data from the host;

loading the data as it is being received to a set of data latches for programming the first storage and to a set of data latches for programming the second storage;

addressing either the first or second storage depending on whether or not a predetermined condition is satisfied based on the data received; and

recording the data to the addressed storage from its set of data latches.

33. A method as in claim 32 , wherein said set of data latches for programming the first storage is identical to that for programming the second storage.

34. A method as in claim 32 , further comprising:

organizing the data into data units having a predetermined order; and

organizing the first and second nonvolatile storages into pages, each page for programming together multiple data units having predetermined page offsets; and wherein:

said predetermined condition is when one of the data units has a page-end offset; and

said recording the data to the first storage includes recording to a page of the first storage said page-end data unit and any preceding data units in the page.

35. A method as in claim 34 , wherein each of the first and second storages is for storing a block of memory units that are erasable together.

36. A method as in claim 34 , wherein:

said data from the host is update data for a group of data units;

said first storage is for storing said update data; and

said second storage is for buffering said update data before being transferred to the first storage.

37. A method as in claim 34 , further comprising:

organizing the data into data units having a predetermined order; and

organizing the first and second nonvolatile storages into pages, each page for programming together multiple data units having predetermined page offsets.

38. A method as in claim 37 , wherein each page is once-programmable after an erase.

39. A method as in claim 37 , wherein:

said recording data to the second storage includes recording to a page thereof at least one index of the data stored in the second storage.

40. A method as in claim 39 , wherein said at least one index of the data stored in the second storage is recorded to a location of said page having a page-end offset.

41. A method as in claim 37 , wherein:

said recording data to the second storage includes recording to a page thereof at least one index of the data stored in the first and second storages.

42. A method as in claim 41 , wherein said at least one index of the data stored in the first and second storages is recorded to a location of said page having a page-end offset.

43. A method as in claim 37 , wherein:

said recording data to the second storage includes recording to a page thereof a pointer pointing to the next recording location of the first storage.

44. A method as in claim 43 , wherein said pointer is recorded to a location of a page having said page-end offset.

45. A method as in any one of claims 32 - 44 , wherein the first and second nonvolatile storages are constituted from memory cells that individually store one bit of data.

46. A method as in any one of claims 32 - 44 , wherein said first and second nonvolatile storages are constituted from memory cells that individually store more than one bit of data.

47. A nonvolatile memory comprising:

a memory organized into a plurality of blocks, each block being a plurality of memory units that are erasable together, each memory unit for storing a logical unit of data;

a controller for controlling operations of said blocks;

first and second blocks, each for recording data from a host;

a buffer for receiving the data from the host; and

said controller controlling loading the data as it is being received to a set of data latches for programming the first storage and to a set of data latches for programming the second storage;

addressing either the first or second storage depending on whether or not a predetermined condition is satisfied based on the data received; and

programming the data to the addressed storage from its set of data latches.

48. A nonvolatile memory as in claim 47 , wherein said nonvolatile memory is in the form of a removable memory card.

49. A nonvolatile memory as in claim 47 , wherein:

said data from the host is update data for a group of data units;

said first block is for storing said update data; and

said second block is for buffering said update data before being transferred to the first block.

50. A nonvolatile memory as in claim 47 , wherein:

the data is organized into data units having a predetermined order; and

said first and second blocks are organized into pages, each page for programming together multiple data units having predetermined page offsets.

51. A nonvolatile memory as in claim 49 , wherein each page is once-programmable after an erase.

52. A nonvolatile memory as in claim 47 , wherein:

said predetermined condition is when one of the received data units has a page-end offset; and

said controller controlling recording the data to said first block includes recording to a page of said first block said page-end data unit and any preceding data units in the page.

53. A nonvolatile memory as in claim 47 , wherein:

said controller controlling recording the data to said second storage includes recording to a page thereof at least one index of the data stored in the second storage.

54. A nonvolatile memory as in claim 52 , wherein said at least one index of the data stored in the second storage is recorded to a location of said page having a page-end offset.

55. A nonvolatile memory as in claim 47 , wherein:

said controller controlling recording the data to said second storage includes recording to a page thereof at least one index of the data stored in the first and second storages.

56. A nonvolatile memory as in claim 54 , wherein said at least one index of the data stored in the first and second storages is recorded to a location of said page having a page-end offset.

57. A nonvolatile memory as in claim 47 , wherein:

said controller controlling recording the data to said second storage includes recording to a page thereof a pointer pointing to the next recording location of the first storage.

58. A nonvolatile memory as in claim 56 , wherein said pointer is recorded to a location of a page having said page-end offset.

59. A nonvolatile memory comprising:

a memory organized into a plurality of blocks, each block being a plurality of memory units that are erasable together, each memory unit for storing a logical unit of data;

first and second blocks, each for sequentially recording data from a host;

a buffer for receiving the data from the host; and

means for loading the data as it is being received to a set of data latches for programming the first storage and to a set of data latches for programming the second storage;

means for addressing either the first or second storage depending on whether or not a predetermined condition is satisfied based on the data received; and

means for recording the data to the addressed storage from its set of data latches.

60. A nonvolatile memory as in any one of claims 47 - 59 , wherein the first and second nonvolatile storages are constituted from memory cells that individually store one bit of data.

61. A nonvolatile memory as in any one of claims 47 - 59 , wherein said first and second nonvolatile storages are constituted from memory cells that individually store more than one bit of data.

Assignments (6)
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 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/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 038809/0472 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2011
From: SANDISK CORPORATION
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 026370/0250 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 27, 2005
From: SMITH, PETER JOHN; GOROBETS, SERGEY ANATOLIEVICH; BENNETT, ALAN DAVID
To: SANDISK CORPORATION
Reel/Frame 016950/0698 →
Continuity (2)
Continuation In Part 1101628500 · Dec 16, 2004
Related Publication 20060155920A1 · Jul 13, 2006