Non-volatile semiconductor memory with large erase blocks storing cycle counts
First Claim
1. A method of operating a non-volatile memory having an array of memory cells organized into blocks of cells that are erasable together as a unit and which individually store a plurality of pages of user data, comprising:
- (a) storing overhead data within the individual blocks of information relating to the operation of the block in which the overhead data are stored, (b) an erase operation, including, addressing one or more of the blocks for erase, reading the overhead data from said one or more blocks and temporarily storing the read overhead data, erasing the memory cells within said one or more blocks, updating the read overhead data, and programming the updated overhead data back into respective ones of said one or more blocks, thereby to leave the pages within the one or more blocks available for programming user data therein, wherein the updated overhead data are programmed into spare cells of a single page of the respective ones of said one or more blocks, (c) thereafter programming user data into pages of said one or more blocks.
6 Assignments
0 Petitions
Accused Products
Abstract
In a flash EEPROM system that is divided into separately erasable blocks of memory cells with multiple pages of user data being stored in each block, a count of the number of erase cycles that each block has endured is stored in one location within the block, such as in spare cells of only one page or distributed among header regions of multiple pages. The page or pages containing the block cycle count are initially read from each block that is being erased, the cycle count temporarily stored, the block erased and an updated cycle count is then written back into the block location. User data is then programmed into individual pages of the block as necessary. The user data is preferably stored in more than two states per memory cell storage element, in which case the cycle count can be stored in binary in a manner to speed up the erase process and reduce disturbing effects on the erased state that writing the updated cycle count can cause. An error correction code calculated from the cycle count may be stored with it, thereby allowing validation of the stored cycle count.
-
Citations
20 Claims
-
1. A method of operating a non-volatile memory having an array of memory cells organized into blocks of cells that are erasable together as a unit and which individually store a plurality of pages of user data, comprising:
-
(a) storing overhead data within the individual blocks of information relating to the operation of the block in which the overhead data are stored, (b) an erase operation, including, addressing one or more of the blocks for erase, reading the overhead data from said one or more blocks and temporarily storing the read overhead data, erasing the memory cells within said one or more blocks, updating the read overhead data, and programming the updated overhead data back into respective ones of said one or more blocks, thereby to leave the pages within the one or more blocks available for programming user data therein, wherein the updated overhead data are programmed into spare cells of a single page of the respective ones of said one or more blocks, (c) thereafter programming user data into pages of said one or more blocks. - View Dependent Claims (2)
-
-
3. A method of operating a non-volatile memory having an array of memory cells organized into blocks of cells that are erasable together as a unit and which individually store a plurality of pages of user data, comprising:
-
(a) storing overhead data within the individual blocks of information relating to the operation of the block in which the overhead data are stored, (b) an erase operation, including, addressing one or more of the blocks for erase, reading the overhead data from said one or more blocks and temporarily storing the read overhead data, erasing the memory cells within said one or more blocks, updating the read overhead data, and programming the updated overhead data back into respective ones of said one or more blocks, thereby to leave the pages within the one or more blocks available for programming user data therein, and (c) thereafter programming user data into pages of said one or more blocks, wherein programming user data includes programming header data in designated regions of the individual pages with information of the user data programmed in respective ones of the pages, and wherein the updated overhead data are programmed into spare cells of the header regions of more than one page within each of said one or more blocks. - View Dependent Claims (4, 5, 6)
-
-
7. A method of operating a non-volatile memory having an array of memory cells organized into blocks of cells that are erasable together as a unit and which individually store a plurality of pages of user data, comprising:
-
(a) storing overhead data within the individual blocks of information relating to the operation of the block in which the overhead data are stored, (b) an erase operation, including, addressing one or more of the blocks for erase, reading the overhead data from said one or more blocks and temporarily storing the read overhead data, erasing the memory cells within said one or more blocks, updating the read overhead data, and programming the updated overhead data back into respective ones of said one or more blocks, thereby to leave the pages within the one or more blocks available for programming user data therein, (c) thereafter programming user data into pages of said one or more blocks, and (d) calculating a redundancy code from the overhead data that is stored within the individual blocks, and further storing the redundancy code within the individual blocks that contain the overhead data from which they were calculated, wherein reading the overhead data includes reading the redundancy code calculated from and stored with the overhead data and checking the read overhead data against the read redundancy code, and wherein programming the updated overhead data includes calculating a redundancy code from the updated overhead data and storing the calculated redundancy code in the same block as the overhead data. - View Dependent Claims (8, 9)
-
-
10. A method of operating a non-volatile memory having an array of memory cells organized into blocks of cells that are erasable together as a unit and which individually store a plurality of pages of user data, comprising:
-
(a) storing overhead data within the individual blocks of information relating to the operation of the block in which the overhead data are stored, (b) an erase operation, including, addressing one or more of the blocks for erase, reading the overhead data from said one or more blocks and temporarily storing the read overhead data, erasing the memory cells within said one or more blocks, updating the read overhead data, and programming the updated overhead data back into respective ones of said one or more blocks, thereby to leave the pages within the one or more blocks available for programming user data therein, wherein programming the updated overhead data includes programming individual memory cell storage elements into one of exactly two storage states, thereby to store one bit of overhead data per storage element, and (c) thereafter programming user data into pages of said one or more blocks, wherein programming user data includes programming individual memory cell storage elements into one of two or more states, thereby to store more than one bit of user data per storage element. - View Dependent Claims (11, 12, 13)
-
-
14. A method of operating a non-volatile memory having an array of memory cells organized into blocks of cells that are erasable together as a unit and which individually store a plurality of pages that individually contain at least 512 bytes of user data, comprising:
-
(a) storing page overhead data within the individual pages of information relating to the user data stored therein, (b) storing block overhead data within at least one page of the individual blocks of information relating to the block in which the overhead data are stored, (c) an erase operation, including, addressing one or more of the blocks for erase, reading the block overhead data from said one or more blocks and temporarily storing the read block overhead data, erasing the memory cells within said one or more blocks, updating the read block overhead data, and programming the updated block overhead data back into respective ones of said one or more blocks, thereby to leave the pages within the one or more blocks available for programming user data therein, wherein the updated block overhead data are programmed in more than one of the plurality of pages of the individual blocks, and (d) thereafter programming user data into pages of said one or more blocks. - View Dependent Claims (15, 16, 17, 18, 19, 20)
-
Specification