IP Library Granted Patent US 7,970,987
Granted Patent B2
US 7,970,987 · App. 12/900,397 · Granted Jun 28, 2011

Partial block data programming and reading operations in a non-volatile memory

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,970,987
App. No.
12/900,397
Granted
Jun 28, 2011
Kind
B2
Abstract

Data in less than all of the pages of a non-volatile memory block are updated by programming the new data in unused pages of either the same or another block. In order to prevent having to copy unchanged pages of data into the new block, or to program flags into superceded pages of data, the pages of new data are identified by the same logical address as the pages of data which they superceded and a time stamp is added to note when each page was written. When reading the data, the most recent pages of data are used and the older superceded pages of data are ignored. This technique is also applied to metablocks that include one block from each of several different units of a memory array, by directing all page updates to a single unused block in one of the units.

Claims (39)

1. A method of operating a non-volatile memory system, comprising:

providing a plurality of blocks of memory storage elements that are individually erasable as a unit and which are individually organized into a plurality of pages of memory storage elements that are individually programmable together,

programming at least one page of data in one of the plurality of blocks;

programming at least one page of new data in one of said one or another of the plurality of blocks, the at least one page of new data rendering the at least one page of data to become at least one page of superceded data

identifying the at least one page of superceded data and the at least one page of new data by a common logical address,

recording an indication of a relative time of programming the at least one page of new data and the at least one page of superceded data; and

wherein the at least one page of superceded data is less than all the data contained in said one block.

2. The method of claim 1 , wherein the indication of a relative time of programming is recorded for the individual pages in which the new and superceded data are programmed, whereby the at least one page of new data is distinguishable from the at least one page of superceded data by their recorded indications of relative time of programming.

3. A method of operating a non-volatile memory system, comprising:

providing a plurality of blocks of memory storage elements that are individually erasable as a unit and which are individually organized into a plurality of pages of memory storage elements that are individually programmable together,

programming at least one page of data in one of the plurality of blocks;

programming at least one page of new data in one of said one or another of the plurality of blocks, the at least one page of new data rendering the at least one page of data to become at least one page of superceded data,

identifying the at least one page of superceded data and the at least one page of new data by a common logical address,

recording an indication of a relative time of programming the at least one page of new data and the at least one page of superceded data; and

wherein the data in at least another page of said one block that is not replaced are not copied into said one or another block as part of substituting the new data for the superceded data.

4. The method of claim 1 , wherein nothing is written into the at least one page of superceded data as part of substituting the new data for the superceded data.

5. The method of claim 1 , wherein recording an indication of a relative time of programming the new and superceded data includes storing a value of a clock at each of the times that the new and superceded data are programmed.

6. The method of claim 1 , wherein recording an indication of a relative time of programming the new and superceded data includes storing a different value of a sequence of numbers at each of the times that the new and superceded data are programmed.

7. The method of either of claim 5 or 6 , wherein storing the value indicating a relative time of programming the new and superceded data includes storing the individual values within the same pages as the new and superceded data to which the values relate.

8. The method of claim 1 , wherein programming the new data into at least one page of another said one or another of the plurality of blocks includes programming the new data into a first available unused pages within said one or another block in a predefined order.

9. The method of claim 1 , wherein identifying the at least one page of superceded data and the at least one page of new data by a common logical address includes recording at least part of the common logical address in the individual pages as overhead data.

10. The method of claim 9 , including building a table in volatile memory including multiple physical block addresses for the common logical address.

11. A method of reading data that has been updated according to claim 2 , comprising:

reading pages of data from said one block and, if new data has been programmed thereinto, said another block,

identifying any multiple pages of data that have the same logical address,

utilizing the recorded relative time of programming the new and superceded data to identify a most current of any pages having the same logical address, and

assembling data in the most current of any pages having the same logical address along with pages in said at least another page of said one block that have not been updated.

12. A method of operating a non-volatile memory system, comprising:

providing a plurality of blocks of memory storage elements that are individually erasable as a unit and which are individually organized into a plurality of pages of memory storage elements that are individually programmable together,

programming at least one page of data in one of the plurality of blocks;

programming at least one page of new data in one of said one or another of the plurality of blocks, the at least one page of new data rendering the at least one page of data to become at least one page of superceded data, wherein pages within the individual blocks are programmed in a designated order,

identifying the at least one page of superceded data and the at least one page of new data by a common logical address,

reading pages of data within said one and, if new data has been programmed thereinto, another block in a reverse order from which they were programmed, and

passing over any pages of data so read which have the same logical page address as a page whose data has already been read; and

wherein the at least one page of superceded data is less than all the data contained in said one block.

13. The method of either one of claim 11 or 12 , additionally comprising operating the individual memory storage elements with more than two storage states, thereby storing more than one bit of data in each storage element, and reading pages of data includes reading the more than two storage states from the individual memory storage elements.

14. The method of claim 1 , additionally comprising operating storage elements of the individual memory cells with more than two storage states, thereby storing more than one bit of data in each storage element.

15. The method of claim 14 , wherein the storage elements include individual floating gates.

16. The method of claim 1 , wherein the non-volatile memory system is formed within an enclosed card having an electrical connector along one edge thereof that operably connects with a host system.

Assignments (8)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded May 27, 2016
From: SANDISK CORPORATION; SANDISK TECHNOLOGIES, INC.
To: SANDISK CORPORATION
Reel/Frame 038825/0137 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038807/0850 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2016
From: LONGITUDE FLASH MEMORY SYSTEMS SARL
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 038166/0445 →
CHANGE OF NAME Recorded Dec 12, 2013
From: PS2 LUXCO S.A.R.L.
To: LONGITUDE FLASH MEMORY SYSTEMS S.A.R.L.
Reel/Frame 031814/0068 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 6, 2013
From: PS3 LUXCO SARL
To: PS2 LUXCO SARL
Reel/Frame 031734/0555 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 5, 2013
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS LLC
To: PS3 LUXCO SARL
Reel/Frame 031723/0836 →
SECURITY AGREEMENT Recorded Aug 21, 2013
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS LLC
To: SANDISK CORPORATION
Reel/Frame 031074/0651 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 6, 2013
From: SANDISK CORPORATION
To: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS LLC.
Reel/Frame 030953/0253 →