Method and apparatus for managing an erase count block
First Claim
1. A method for initializing an erase count block in a system memory of a non-volatile memory system, the non-volatile memory system including a non-volatile memory arranged as a plurality of blocks, and also including the system memory, the method comprising:
- allocating a plurality of pages within the system memory, wherein each of the plurality of pages comprises a plurality of entries, each entry of the plurality of entries being associated with a corresponding block of the plurality of blocks in the non-volatile memory;
examining the plurality of blocks to identify-usable blocks that may be written to or read from, and to identify unusable blocks;
for each of the identified usable blocks, storing, in the associated entry of the plurality of entries for that block, a value indicating a number of times that the identified usable block has been erased;
for each of the identified unusable blocks, storing, in the associated entry of the plurality of entries for that block, an indicator indicating that the identified unusable block is unusable;
allocating a header within the system memory, the header being associated with the plurality of pages; and
storing a second value in the header, wherein the second value is arranged to indicate an average number of times each usable block of the plurality of blocks has been erased.
3 Assignments
0 Petitions
Accused Products
Abstract
Methods and apparatus for managing erase counts in a non-volatile memory system. According to one aspect of the present invention, a method for initializing an erase count block in a system memory of a non-volatile memory system, the non-volatile memory system which includes a non-volatile memory involves allocating a plurality of pages within the system memory that are divided into a plurality of entries. Each entry of the plurality of entries has an associated block in the non-volatile memory. The method also includes identifying usable blocks which are suitable for use in accepting user data, and storing values in each entry which is associated with a usable block. Storing the values in each entry which is associated with a usable block substantially identifies the usable block as being usable.
107 Citations
43 Claims
-
1. A method for initializing an erase count block in a system memory of a non-volatile memory system, the non-volatile memory system including a non-volatile memory arranged as a plurality of blocks, and also including the system memory, the method comprising:
-
allocating a plurality of pages within the system memory, wherein each of the plurality of pages comprises a plurality of entries, each entry of the plurality of entries being associated with a corresponding block of the plurality of blocks in the non-volatile memory; examining the plurality of blocks to identify-usable blocks that may be written to or read from, and to identify unusable blocks; for each of the identified usable blocks, storing, in the associated entry of the plurality of entries for that block, a value indicating a number of times that the identified usable block has been erased; for each of the identified unusable blocks, storing, in the associated entry of the plurality of entries for that block, an indicator indicating that the identified unusable block is unusable; allocating a header within the system memory, the header being associated with the plurality of pages; and storing a second value in the header, wherein the second value is arranged to indicate an average number of times each usable block of the plurality of blocks has been erased. - View Dependent Claims (2, 3)
-
-
4. A method for initializing an erase count block in a system memory of a non-volatile memory system, the non-volatile memory system including a non-volatile memory arranged as a plurality of blocks, and also including the system memory, the method comprising:
-
allocating a plurality of pages within the system memory, wherein each of the plurality of pages comprises a plurality of entries, each entry of the plurality of entries being associated with a corresponding block of the plurality of blocks in the non-volatile memory; examining the plurality of blocks to identify-usable blocks that may be written to or read from, and to identify unusable blocks; for each of the identified usable blocks, storing, in the associated entry of the plurality of entries for that block, an erase count associated with the identified usable block; for each of the identified unusable blocks, storing, in the associated entry of the plurality of entries for that block, an indicator indicating that the identified unusable block is unusable; determining an average value by substantially averaging the erase counts; and storing the average value in a first page, the first page being associated with the plurality of pages. - View Dependent Claims (5)
-
-
6. A memory system comprising:
-
a system memory; a non-volatile memory, arranged as a plurality of blocks; code devices for allocating a plurality of pages within the system memory, wherein each of the plurality of pages comprises a plurality of entries, each entry of the plurality of entries being associated with a corresponding block of the plurality of blocks in the non-volatile memory; code devices for examining the plurality of blocks to identify-usable blocks that may be written to or read from, and to identify unusable blocks; code devices for storing, for each of the identified usable blocks, in the associated entry of the plurality of entries for that block, a value indicating a number of times that the identified usable block has been erased, and for storing, for each of the identified unusable blocks and in the associated entry of the plurality of entries for that block, an indicator indicating that the identified unusable block is unusable; code devices for allocating a header within the system memory, the header being associated with the plurality of pages; code devices for storing a second value in the header, wherein the second value is arranged to indicate an average number of times each usable block of the plurality of blocks has been erased; and a memory area for storing the code devices. - View Dependent Claims (7, 8, 9, 10)
-
-
11. A memory system comprising:
-
a system memory; a non-volatile memory, arranged as a plurality of blocks; code devices for allocating a plurality of pages within the system memory, wherein each of the plurality of pages comprises a plurality of entries, each entry of the plurality of entries being associated with a corresponding block of the plurality of blocks in the non-volatile memory; code devices for examining the plurality of blocks to identify-usable blocks that may be written to or read from, and to identify unusable blocks; code devices for storing, for each of the identified usable blocks, in the associated entry of the plurality of entries for that block, a value indicating a number of times that the identified usable block has been erased, and for storing, for each of the identified unusable blocks and in the associated entry of the plurality of entries for that block, an indicator indicating that the identified unusable block is unusable; code devices for determining an average value by substantially averaging the erase counts; code devices storing the average value in a first page, the first page being associated with the plurality of pages; and a memory area for storing the code devices. - View Dependent Claims (12, 13, 14)
-
-
15. A method for processing an erased block associated with a non-volatile memory of a memory system, the non-volatile memory including a plurality of blocks, the method comprising:
-
obtaining the erased block; identifying a first entry in an erase count block that corresponds to the erased block, wherein the erase count block is stored in a system memory of the non-volatile memory; determining when the first entry is an indication of a number of times the erased block has been erased; and substantially copying the first entry into the erased block when it is determined that the first entry is an indication of a number of times the erased block has been erased. - View Dependent Claims (16, 17, 18)
-
-
19. A memory system comprising:
-
a non-volatile memory, the non-volatile including a plurality of blocks, wherein the plurality of blocks includes an erased block; a system memory; code devices for obtaining the erased block; code devices identifying a first entry in an erase count block that corresponds to the erased block, wherein the erase count block is stored in the system memory; code devices for determining when the first entry is an indication of a number of times the erased block has been erased; code devices for substantially copying the first entry into the erased block when it is determined that the first entry is an indication of a number of times the erased block has been erased; and a memory area that stores the code devices. - View Dependent Claims (20, 21, 22)
-
-
23. A method for updating a first entry within an erase count block of a system memory of a non-volatile memory, the erase count block including a plurality of pages, each page of the plurality of pages including a plurality of entries, wherein the first entry is included in the plurality of entries, the method comprising:
-
identifying a block, the block being stored in a non-volatile memory; determining when the block is usable; setting bits in the first entry to indicate that the block is not usable when it is determined that the block is unusable; determining when the block is unerased when it is determined that the block is usable; reading bits stored in the block when it is determined that the block is unerased, the bits being arranged to indicate a number of times the block has been erased; and setting the bits in the first entry to correspond to the bits stored in the block when it is determined that the block is unerased. - View Dependent Claims (24, 25)
-
-
26. A memory system comprising:
-
a system memory, the system memory including an erase count block, the erase count block including a plurality of pages, each page of the plurality of pages including a plurality of entries, wherein the first entry is included in the plurality of entries; a non-volatile memory; code devices for identifying a block, the block being stored in the non-volatile memory; code devices for determining when the block is usable; code devices for setting bits in the first entry to indicate that the block is not usable when it is determined that the block is unusable; code devices for determining when the block is unerased when it is determined that the block is usable; code devices for reading bits stored in the block when it is determined that the block is unerased, the bits being arranged to indicate a number of times the block has been erased; code devices for setting the bits in the first entry to correspond to the bits stored in the block when it is determined that the block is unerased; and a memory area that stores the code devices. - View Dependent Claims (27, 28)
-
-
29. A method for processing a first block associated with a non-volatile memory of a memory system, the non-volatile memory including a plurality of blocks, the method comprising:
-
determining when the first block is usable; reading bits of the first block when it is determined that the first block is usable, the bits being arranged to indicate a number of times the first block has been erased; identifying a first entry in an erase count block that corresponds to the first block, wherein the erase count block is stored in a system memory of the memory system; determining when the bits of the first block have a value that is less than a value of the first entry; and substantially copying the first entry into the bits of the first block when it is determined that bits of the first block have a value that is less than the value of the first entry. - View Dependent Claims (30, 31, 32, 33)
-
-
34. A memory system comprising:
-
a non-volatile memory including a plurality of blocks, the plurality of blocks including a first block; a system memory, the system memory including an erase count block, the erase count block including a plurality of pages, the plurality of pages being substantially divided into a plurality of entries; code devices for determining when the first block is usable; code devices for reading bits of the first block when it is determined that the first block is usable, the bits being arranged to indicate a number of times the first block has been erased; code devices for identifying a first entry in the erase count block that corresponds to the first block; code devices for determining when the bits of the first block have a value that is less than a value of the first entry; code devices for substantially copying the first entry into the bits of the first block when it is determined that bits of the first block have a value that is less than the value of the first entry; and a memory area that stores the code devices. - View Dependent Claims (35, 36)
-
-
37. A memory system comprising:
-
a system memory; a non-volatile memory, arranged as a plurality of blocks, means for allocating a plurality of pages within the system memory, wherein each of the plurality of pages comprises a plurality of entries, each entry of the plurality of entries being associated with a corresponding block of the plurality of blocks in the non-volatile memory; means for examining the plurality of blocks to identify usable blocks that may be written to or read from, and to identify unusable blocks; means for storing, for each of the identified usable blocks, in the associated entry of the plurality of entries for that block, a value indicating a number of times that the identified usable block has been erased, and for storing, for each of the identified unusable blocks, storing, in the associated entry of the plurality of entries for that block, an indicator indicating that the identified unusable block is unusable; means for allocating a header within the system memory, the header being associated with the plurality of pages; and means for storing a second value in the header, wherein the second value is arranged to indicate an average number of times each usable block of the plurality of blocks has been erased. - View Dependent Claims (38, 39, 40)
-
-
41. A memory system comprising:
-
a system memory; a non-volatile memory, arranged as a plurality of blocks; means for allocating a plurality of pages within the system memory, wherein each of the plurality of pages comprises a plurality of entries, each entry of the plurality of entries being associated with a corresponding block of the plurality of blocks in the non-volatile memory; means for examining the plurality of blocks to identify usable blocks that may be written to or read from, and to identify unusable blocks; and means for storing, for each of the identified usable blocks, in the associated entry of the plurality of entries for that block, an erase count associated with the identified usable block, and for storing, for each of the identified unusable blocks, storing, in the associated entry of the plurality of entries for that block, an indicator indicating that the identified unusable block is unusable; means for determining an average value by substantially averaging the erase counts; and means for storing the average value in a first page, the first page being associated with the plurality of pages. - View Dependent Claims (42, 43)
-
Specification