Management of non-volatile memory systems having large erase blocks
First Claim
1. A method of programming data into a reprogrammable non-volatile memory system of a type having blocks of memory cells that are simultaneously erasable and which individually store a given number of host units of data, comprising responding to host programming commands by programming data in one of two designated blocks depending at least in part upon a number of host units of data specified by the host programming commands that have sequential logical addresses.
3 Assignments
0 Petitions
Accused Products
Abstract
A non-volatile memory system of a type having blocks of memory cells erased together and which are programmable from an erased state in units of a large number of pages per block. If the data of only a few pages of a block are to be updated, the updated pages are written into another block provided for this purpose. Updated pages from multiple blocks are programmed into this other block in an order that does not necessarily correspond with their original address offsets. The valid original and updated data are then combined at a later time, when doing so does not impact on the performance of the memory. If the data of a large number of pages of a block are to be updated, however, the updated pages are written into an unused erased block and the unchanged pages are also written to the same unused block. By handling the updating of a few pages differently, memory performance is improved when small updates are being made. The memory controller can dynamically create and operate these other blocks in response to usage by the host of the memory system.
313 Citations
25 Claims
-
1. A method of programming data into a reprogrammable non-volatile memory system of a type having blocks of memory cells that are simultaneously erasable and which individually store a given number of host units of data, comprising responding to host programming commands by programming data in one of two designated blocks depending at least in part upon a number of host units of data specified by the host programming commands that have sequential logical addresses.
-
2. A method of writing data into a non-volatile memory system of a type having blocks of memory cells that are simultaneously erasable and which individually store a given number of host units of data, comprising:
-
responding to host commands to write units of data having non-sequential logical addresses by writing the data with sequential physical addresses into a first designated block, and responding to host commands to write units of data having sequential logical addresses equal to or in excess of a given proportion of said given number by writing the data into a second designated block. - View Dependent Claims (3, 4)
-
-
5. In a non-volatile memory having memory cells organized in a plurality of groups of one or more blocks of a minimum number of cells that are simultaneously erasable and storing a given number of pages of data at specified page numbers, a method of updating data in less than the given number of pages of a first programmed group of blocks, comprising:
-
designating at least first and second blocks to receive updated data of less than the given number of pages of the first programmed group of blocks, writing data of one or more pages having a number of sequential logical addresses less than a predetermined number to pages of the first designated block, and writing data of a plurality of pages with a number of sequential logical addresses equal to or in excess of the predetermined number of pages to the second designated block. - View Dependent Claims (6, 7)
-
-
8. In a non-volatile memory having memory cells organized in groups of one or more blocks of a minimum number of cells that are simultaneously erasable and wherein a given number of pages of data are programmed into individual ones of the groups of blocks, a method of updating data in less than all pages of a given group of one or more blocks, comprising:
-
determining whether at least one predefined condition of the data update is satisfied, and if it is determined that the condition is satisfied, thereafter writing the updated pages of data into pages of a first other group of one or more blocks having page numbers selected independently of the page numbers of the pages of data within the given group of blocks that are being updated, or if it is determined that the condition is not satisfied, thereafter writing the updated pages of data into correspondingly numbered pages of a second other group of one or more blocks. - View Dependent Claims (9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
-
-
20. In a non-volatile memory having memory cells organized in groups of one or more blocks of a minimum number of cells that are simultaneously erasable and wherein a given number of host units of data are programmed into individual ones of the groups of one or more blocks, a method of updating less than all the data stored in a given group of one or more blocks in response to a host command, comprising:
-
designating at least a first group of one or more blocks to store in sequential physical block locations host units of data within a first range of logical addresses without regard to whether the logical addresses of such data are sequential or not, and designating at least a second group of one or more blocks to store host units of data within a second range of logical addresses with sequential logical addresses therein designated for sequential physical locations with an address offset of zero or more. - View Dependent Claims (21, 22, 23, 24)
-
-
25. A memory system, comprising:
-
an array of non-volatile memory cells organized into a plurality of sub-arrays that individually include addressing, programming and reading circuits, the sub-arrays being divided into units of memory cells that are erased together, the erase units further being divided into units of cells that are programmed together, the programming units being identified by programming unit offset addresses within their erase units, a controller that controls operation of the memory cell array, at least one erase unit within individual ones of the sub-arrays being designated by the controller to store updated data of sequentially addressed programming units of a first group of one or more others of the erase units within individual ones of the sub-arrays in programming units having the same address order as the programming units within said at least one other of the erase units and with an address offset of zero or more, and at least another erase unit within individual ones of the sub-arrays being designated by the controller to store updated data of programming units of a second group of one or more others of the erase units within individual ones of the sub-arrays in pages according to a predetermined sequence without regard to the address sequence or programming unit offset of the programming unit data being updated.
-
Specification