IP Library Granted Patent US 8,316,177
Granted Patent B2
US 8,316,177 · App. 13/168,756 · Granted Nov 20, 2012

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 8,316,177
App. No.
13/168,756
Granted
Nov 20, 2012
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 (26)

1. A re-programmable non-volatile memory system, comprising:

an array of storage elements organized into a plurality of blocks, each block having storage elements that are erasable together and organized into a plurality of pages, each page having storage elements that are accessed together and each page is programmable in a preset order in a block at a specified offset position,

a memory controller for controlling the operations of the non-volatile memory system, the operations including:

(a) in response to a host command for programming and one or more pages of original user data addressable by logical addresses and received from the host, programming the one or more pages of original user data into a first one or more pages of storage elements in the preset order in at least a first one of the blocks,

(b) in response to a host command for updating and one or more pages of updated user data received from the host, programming the received one or more pages of updated user data into a second one or more pages of storage elements in the preset order in at least a second one of the blocks without necessarily in the same offset positions as in the at least a first one of the blocks, and

(c) in response to a host command for reading user data of specified logical addresses, reading at least the one or more pages of updated data from the at least the second one of the blocks with some of the specified logical addresses in common with that of original user data and reading pages of original user data that have not been updated from the at least the first one of the blocks with others of the specified logical addresses are associated.

2. The memory system of claim 1 , wherein as part of operation (c), the memory controller is further characterized by controlling operation of the memory system to assemble the read pages of updated data and read pages of original data not updated in an order of the logical addresses associated therewith.

3. The memory system of claim 1 , wherein as part of operation (b), the memory controller is further characterized by causing the one or more logical addresses that are common with the logical addresses associated with the individual pages of original data previously programmed to also be programmed into those of the second one or more pages of storage elements along with the pages of updated data with which the logical addresses are associated.

4. The memory system of claim 3 , wherein as part of operation (a), the memory controller is further characterized by causing the logical addresses associated with the individual pages of original data programmed into the first plurality of pages of storage elements to also be programmed into those of the first plurality of pages of storage elements along with the pages of original user data with which the logical addresses are associated.

5. The memory system of any one of claims 3 - 4 , wherein the logical addresses that are programmed into the pages of storage elements individually include a logical block number and a logical page offset.

6. The memory system of claim 1 , wherein the memory controller is further characterized by performing at least the following additional operation:

(d) in response to a host command for updating and one or more pages of further updated user data, further programming the received one or more pages of further updated data into a third one or more pages of storage elements.

7. The memory system of any one of claims 1 - 2 wherein the memory controller is additionally characterized by operating the individual storage elements with more than two storage states in order to store more than one bit of data per storage element.

8. The memory system of claim 1 , wherein the storage elements comprise electrically conductive floating gates.

9. The memory system of any one of claims 1 - 4 , wherein the memory system is enclosed in a portable card and wherein the interface includes a plurality of external electrical contacts.

10. In a re-programmable non-volatile semiconductor memory system having an array of storage elements organized into a plurality of blocks, each block having storage elements that are erasable together and organized into a plurality of pages, each page having storage elements that are accessed together and each page is programmable in a preset order in a block at a specified offset position, a method of operating the memory system, comprising:

programming original data into individual ones of a first plurality of pages in at least a first block, the original data having logical addresses associated therewith,

thereafter programming an updated version of the original data into individual ones of a second plurality of pages in a second block, the updated version having logical addresses associated therewith and being less than the given number of pages of the original data programmed into the first plurality of pages, wherein the logical addresses associated with the updated version of the original data are the same as the logical addresses associated with the original data,

wherein programming the second plurality of pages additionally comprises programming the updated version of the original data in those of the second plurality of pages that have different offset positions within the second block than the offset positions of the first plurality of pages within said at least the first block that contain original data with the same associated logical addresses,

maintaining updatable address information that links physical addresses of the first and second blocks storing original and updated data with the logical addresses associated with the stored data, wherein the address information includes physical addresses of multiple blocks for individual logical addresses of original data having updated versions thereof, and

thereafter reading data from the first and second plurality of pages by a process that includes accessing the updatable address information.

11. The method of claim 10 , wherein the logical addresses are programmed into the first and second blocks along with the data with which the logical addresses are associated.

12. The method of claim 11 , wherein the logical addresses associated with the data individually includes a logical block number and a logical page offset.

13. The method of claim 11 , wherein maintaining the updatable address information includes constructing a form thereof by reading the logical addresses from the first and second blocks.

14. The method of claim 10 , additionally comprising organizing pages of read data by their associated logical addresses, and further wherein reading data and organizing pages of the read data by their associated logical addresses comprises, for the pages of read data having the same logical addresses associated therewith, utilizing the pages of the updated version of the original data and omitting use of the pages of original data, and, for the pages of read data that are original data that have not been updated, utilizing said pages of original data that have not been updated.

15. The method of any one of claims 10 - 14 , additionally comprising operating the individual memory system charge storage elements with more than two storage states in order to store more than one bit of data per charge storage element.

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 →