IP Library Granted Patent US 8,244,960
Granted Patent B2
US 8,244,960 · App. 12/348,899 · Granted Aug 14, 2012

Non-volatile memory and method with write cache partition management methods

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,244,960
App. No.
12/348,899
Granted
Aug 14, 2012
Kind
B2
Abstract

A portion of a nonvolatile memory is partitioned from a main multi-level memory array to operate as a cache. The cache memory is configured to store at less capacity per memory cell and finer granularity of write units compared to the main memory. In a block-oriented memory architecture, the cache has multiple functions, not merely to improve access speed, but is an integral part of a sequential update block system. The cache memory has a capacity dynamically increased by allocation of blocks from the main memory in response to a demand to increase the capacity. Preferably, a block with an endurance count higher than average is allocated. The logical addresses of data are partitioned into zones to limit the size of the indices for the cache.

Claims (43)

1. A nonvolatile memory, comprising:

an array of memory cells organized into a plurality of blocks, each block being a plurality of memory cells that are erasable together;

said array being partitioned into a first group of blocks and a second group of blocks;

a group of read/write circuits for reading or programming in the memory array a corresponding page of memory cells in parallel;

said first group of blocks having first-group pages that are each once programmable in between erasure, and the memory cells in the first-group page each storing one or more bit of data;

said second group of blocks having second-group pages that are each multi-time programmable with a partial page being once programmable each time, and the memory cells in the second-group page each storing one bit of data;

said second group of blocks having a capacity dynamically increased by allocation of blocks from said first group to said second group in response to a demand to increase the capacity;

a time stamp stored with each block, said time stamp having a value that is toggled when the block was programmed;

a free block list updated at predefined time intervals for listing blocks free for allocation and the time stamps of the blocks listed, such that a comparison between the time stamps of the block stored in the block and the free block list will indicate whether the block has old data or just been written with new data.

2. The nonvolatile memory as in claim 1 , wherein:

a hot count is used to track the endurance history of each block in the first group; and

the blocks being allocated from said first group to said second group have higher hot counts than the average block of said first group.

3. The nonvolatile memory as in claim 1 , wherein:

the data is addressable by assigned logical addresses;

a set of zones each defining an non-overlapping range of logical addresses; and

a set of indices for each zone to track the data stored in said second group with logical addresses of the zone.

4. The nonvolatile memory as in claim 3 , wherein:

said set of zones contains one zone.

5. The nonvolatile memory as in claim 3 , wherein:

said set of zones contains more than one zone.

6. The nonvolatile memory as in claim 3 , wherein:

said set of zones are each partitioned in a predefined range logical addresses such that each corresponding set of indices does not exceed a predetermined size.

7. In a nonvolatile memory having an array of memory cells organized into a plurality of blocks, each block being a plurality of memory cells that are erasable together; a method of operating the nonvolatile memory, comprising:

partitioning the array into a first group of blocks and a second group of blocks;

providing a group of read/write circuits for reading or programming in the memory array a corresponding page of memory cells in parallel;

said first group of blocks having first-group pages that are each once programmable in between erasure, and the memory cells in the first-group page each storing one or more bit of data;

said second group of blocks having second-group pages that are each multi-time programmable with a partial page being once programmable each time, and the memory cells in the second-group page each storing one bit of data; and

dynamically adjusting the capacity of the second group by allocating blocks from said first group to said second group in response to a demand to increase the capacity;

storing a time stamp with each block, the time stamp having a value that is toggled when the block was programmed;

updating a free block list at predefined time intervals for listing blocks free for allocation and the time stamps of the blocks listed, such that a comparison between the time stamps of the block stored in the block and the free block list will indicate whether the block has old data or just been written with new data.

8. The method as in claim 7 , wherein:

a hot count is used to track the endurance history of each block in the first group; and

the blocks being allocated from said first group to said second group have higher hot counts than the average block of said first group.

9. The method as in claim 7 , wherein:

the data is addressable by assigned logical addresses;

a set of zones each defining an non-overlapping range of logical addresses; and

a set of indices for each zone to track the data stored in said second group with logical addresses of the zone.

10. The method as in claim 9 , wherein:

said set of zones contains one zone.

11. The method as in claim 9 , wherein:

said set of zones contains more than one zone.

12. The method as in claim 9 , wherein:

said set of zones are each partitioned in a predefined range logical addresses such that each corresponding set of indices does not exceed a predetermined size.

Assignments (3)
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 16, 2011
From: SANDISK CORPORATION
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 026284/0550 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 18, 2009
From: PALEY, ALEXANDER; GOROBETS, SERGEY ANATOLIEVICH; ZILBERMAN, EUGENE; BENNETT, ALAN DAVID; TRAISTER, SHAI; TOMLIN, ANDREW; WU, WILLIAM S.; SO, BUM SUCK
To: SANDISK CORPORATION
Reel/Frame 022413/0564 →