Partial block data programming and reading operations in a non-volatile memory
DCFirst Claim
1. A method of operating a memory system of reprogrammable non-volatile charge storage elements organized in blocks of a minimum number of storage elements that are erasable together as a unit and in pages of storage elements within the blocks that have specified offset positions within their respective blocks and which are individually programmable as a unit, comprising:
- as part of writing data into pages, recording an indication of a time from a clock source that data are written into individual pages,updating data previously written into one or more pages of one of original data blocks by writing the updated data into one or more update pages of an update data block and logically linking data of the corresponding previously written pages and update data pages, wherein the updated data are caused to be writable into pages of the update data block having different offset positions than the pages of the original data block into which the logically linked data being updated was previously written, andwhen reading data of two or more logically linked data pages, read the indications of the times that the data have been stored in the two or more pages and use the data in the two or more pages having more recent time indications without using data in the two or more pages having older time indications.
8 Assignments
Litigations
3 Petitions
Accused Products
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.
74 Citations
106 Claims
-
1. A method of operating a memory system of reprogrammable non-volatile charge storage elements organized in blocks of a minimum number of storage elements that are erasable together as a unit and in pages of storage elements within the blocks that have specified offset positions within their respective blocks and which are individually programmable as a unit, comprising:
-
as part of writing data into pages, recording an indication of a time from a clock source that data are written into individual pages, updating data previously written into one or more pages of one of original data blocks by writing the updated data into one or more update pages of an update data block and logically linking data of the corresponding previously written pages and update data pages, wherein the updated data are caused to be writable into pages of the update data block having different offset positions than the pages of the original data block into which the logically linked data being updated was previously written, and when reading data of two or more logically linked data pages, read the indications of the times that the data have been stored in the two or more pages and use the data in the two or more pages having more recent time indications without using data in the two or more pages having older time indications. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. A method of operating a memory system of reprogrammable non-volatile charge storage elements organized in blocks of a minimum number of storage elements that are erasable together as a unit and in pages of storage elements within the blocks that have specified offset positions within their respective blocks and which are individually programmable as a unit, comprising:
-
as part of writing data into pages, data are written into the pages of individual blocks in sequence, updating data previously written into one or more initial pages of one of original data blocks by writing the updated data into one or more update pages of an update data block and logically linking data of previously written pages with corresponding update data pages, wherein the updated data are caused to be writable into pages of the update data block having different offset positions as the pages of the original data block into which the logically linked data being updated was previously written, and reading data from the pages of the original data block and update data block in an order that is a reverse of the sequence in which they where written and ignore data in any page that is logically linked with a page from which data have already been read. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33)
-
-
34. In a re-programmable non-volatile semiconductor memory system having a plurality of blocks of a minimum number of memory charge storage elements that are erasable together as a unit, the plurality of blocks individually being divided into a plurality of a given number of pages of memory storage elements that are individually programmable as a unit and which have specified offset positions within their respective blocks, 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 pages of original data having logical addresses associated therewith, thereafter programming, into individual ones of a second plurality of pages in a second block, an updated version of less than the given number of pages of the original data programmed into the first plurality of pages, the pages of the updated version of the original data having logical addresses associated therewith, wherein the logical addresses associated with the pages of the updated version of the original data are the same as the logical addresses associated with the pages of 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 pages of original data with the same associated logical addresses, thereafter reading data from the first and second plurality of pages, and organizing pages of the read data by their associated logical addresses. - View Dependent Claims (35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51)
-
-
52. In a re-programmable non-volatile semiconductor memory system having a plurality of blocks of memory charge storage elements that are erasable together as a unit, the plurality of blocks individually being divided into a plurality of a given number of pages of memory storage elements that are programmable together, a method of operating the memory system, comprising:
-
programming individual ones of a first plurality of pages in at least a first block with original data, the pages of original data having logical addresses associated therewith, thereafter programming individual ones of a second plurality of a total number of pages less than said given number in a second block with updated data and a logical address associated with the page of updated data, wherein the logical addresses associated with the pages of updated data programmed into the second plurality of pages are the same as those associated with the pages of original data programmed into the first plurality of pages, 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 pages of original data with the same logical addresses associated therewith, thereafter reading data from the first and second plurality of pages, and organizing pages of the read data by the logical addresses associated therewith. - View Dependent Claims (53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64)
-
-
65. A method of operating a memory system having an array of reprogrammable non-volatile charge storage elements organized in blocks of storage elements that are erasable together and in pages of storage elements within the blocks that are individually programmable as a unit, comprising:
-
maintaining an indication of a time separately for individual blocks, as part of writing data into any one or more of the pages of one of the blocks, updating the indication of a time maintained for the one block to a current time, when updating data previously written into one or more initial pages, writing the updated data into one or more update pages and identifying the data written into the initial and update pages by common logical addresses, and as part of reading data having common logical addresses from two or more pages of two or more blocks, reading the indications of the times from the two or more blocks and using the data in the two or more blocks having more recent indications of time without using data in the two or more blocks having older indications of time, and reading data from pages within each of the two or more blocks according to a reverse order in physical address to that by which the pages were written, and ignoring data from any page having the same logical address as data of a page from which data have already been read.
-
-
66. A method of operating a non-volatile memory system having a plurality of blocks of memory storage elements that are individually erasable together, wherein the individual blocks are divided into a plurality of pages of storage elements that are programmable together, the blocks being organized in at least two separate units in which programming may be performed independently, comprising:
-
linking at least one block from individual ones of said at least two units to form a metablock wherein the storage elements of its component blocks are erased together, and updating one or more pages of original data within any of the metablock component blocks less than all the pages within the block by programming replacement data into another at least one block in only a designated one of the units regardless of which unit the data being updated are stored. - View Dependent Claims (67, 68, 69, 70, 71, 72)
-
-
73. In a re-programmable non-volatile memory system having a plurality of blocks of memory storage elements that are erasable together as a unit, the plurality of blocks individually being divided into a plurality of a given number of pages of memory storage elements that are programmable together, a method of operating the memory system, comprising:
-
in response to receiving pages of original user data and logical addresses associated therewith, programming individual ones of a first plurality of pages of memory storage elements in at least a first block with the received pages of original user data, in response to subsequently receiving one or more pages of updated user data and logical addresses associated therewith that are common with the logical addresses associated with at least some of the programmed pages of original user data, programming the one or more pages of updated user data into a second plurality of a total number of pages of memory storage elements less than said given number in at least a second block of memory storage elements, wherein the one or more pages of updated user data are programmable into pages of said at least the second block of memory storage elements having different offset positions therein than the offset positions of pages within said at least the first block of memory storage elements in which pages of original user data were programmed that have logical addresses associated therewith that are common with the logical addresses associated with the pages of updated user data, and thereafter reading at least pages of original user data that have not been updated from the first plurality of pages of memory storage elements and pages of updated user data from the second plurality of pages of memory storage elements. - View Dependent Claims (74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93)
-
-
94. In a re-programmable non-volatile semiconductor memory system having a plurality of sub-arrays of memory storage elements in which programming operations may be performed independently, the sub-arrays individually being divided into a plurality of blocks of memory storage elements that are erasable together as a unit, the plurality of blocks individually being divided into a plurality of pages of memory storage elements that are programmable together, a method of operating the memory system, comprising:
-
linking together blocks within the plurality of sub-arrays to form a plurality of metablocks whose memory storage elements are erasable together and whose pages of memory storage elements within the linked blocks are programmable together in parallel, programming pages of original data of a file into individual ones of an erased first plurality of pages in a first plurality of blocks forming a first metablock, the pages of original data having logical addresses associated therewith, thereafter programming one or more pages of updated data of the file into individual ones of an erased second plurality of pages in at least a second block, the pages of updated data having logical addresses associated therewith, wherein the logical addresses associated with the pages of updated data programmed into the second plurality of pages are common with those associated with the pages of original data programmed into the first plurality of pages, wherein programming the second plurality of pages additionally allows programming the updated version of the original data in those of the second plurality of pages of memory storage elements that have different offset positions within the at least the second block than the offset positions of the first plurality of pages within the first plurality of blocks that contain pages of original data with common logical addresses associated therewith, and thereafter reading data of the file from the first and second plurality of pages. - View Dependent Claims (95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106)
-
Specification