Methods and apparatus for writing data to non-volatile memory
First Claim
Patent Images
1. A memory system comprising:
- a non-volatile memory arranged in blocks, each block containing a plurality of sectors of memory cell locations; and
a controller coupled to the non-volatile memory, the controller configured to permit a maximum number of obsolete blocks for each of one or more write pointers used to define physical locations for writing data received from an external device, and in response to a write operation that would result in a number of obsolete blocks exceeding the maximum number for one of the one or more write pointers, performing a block erase operation on one of a plurality of existing obsolete blocks of the one of the one or more write pointers;
wherein the maximum number of obsolete blocks for the one of the one or more write pointers is two or more blocks.
8 Assignments
0 Petitions
Accused Products
Abstract
Methods and apparatus for writing data to non-volatile memory include maintaining one or more lists of obsolete blocks of the non-volatile memory and limiting the lists to a predetermined value. If a write operation would result in a list exceeding its predetermined value, a block erase operation is performed on one of the obsolete blocks. Valid data contained in an obsolete block selected for erasure is relocated prior to erasure.
272 Citations
22 Claims
-
1. A memory system comprising:
-
a non-volatile memory arranged in blocks, each block containing a plurality of sectors of memory cell locations; and a controller coupled to the non-volatile memory, the controller configured to permit a maximum number of obsolete blocks for each of one or more write pointers used to define physical locations for writing data received from an external device, and in response to a write operation that would result in a number of obsolete blocks exceeding the maximum number for one of the one or more write pointers, performing a block erase operation on one of a plurality of existing obsolete blocks of the one of the one or more write pointers; wherein the maximum number of obsolete blocks for the one of the one or more write pointers is two or more blocks. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A memory system comprising:
-
a non-volatile memory arranged in blocks, each block containing a plurality of sectors of memory cell locations; and a controller coupled to the non-volatile memory, the controller configured to permit a maximum number of obsolete blocks for each of one or more write pointers used to define physical locations for writing data received from an external device, and in response to a write operation that would result in a number of obsolete blocks exceeding the maximum number for one of the one or more write pointers, performing a block erase operation on one of a plurality of existing obsolete blocks of the one of the one or more write pointers; wherein the maximum number of obsolete blocks is two blocks for each write pointer.
-
-
13. A memory system comprising:
-
a non-volatile memory arranged in blocks, each block containing a plurality of sectors of memory cell locations; a controller coupled to the non-volatile memory, the controller configured to permit a maximum number of obsolete blocks for one or more write pointers used to define physical locations for writing data received from an external device, and in response to a write operation that would result in a number of obsolete blocks exceeding the maximum number, performing a block erase operation on one of the existing obsolete blocks; and a volatile memory coupled to the controller; wherein the controller is further configured to maintain, in the volatile memory, a list of addresses of blocks of the non-volatile memory upon which a block erase operation has been performed; wherein the list of addresses of blocks of the non-volatile memory upon which a block erase operation has been performed is limited to a maximum number of erased blocks regardless of a total number of erased blocks; and wherein the controller is further configured to transfer the list of addresses of blocks of the non-volatile memory upon which a block erase operation has been performed to the non-volatile memory in response to the list containing its maximum number of erased blocks.
-
-
14. A memory system comprising:
-
a non-volatile memory arranged in blocks, each block containing a plurality of sectors of memory cell locations; a controller coupled to the non-volatile memory, the controller configured to permit a maximum number of obsolete blocks for one or more write pointers used to define physical locations for writing data received from an external device, and in response to a write operation that would result in a number of obsolete blocks exceeding the maximum number, performing a block erase operation on one of the existing obsolete blocks; and a volatile memory coupled to the controller; wherein the controller is further configured to maintain, in the volatile memory, a list of addresses of erased blocks currently available for assignment to a write pointer or for rewriting a control structure of the non-volatile memory device wherein the list of addresses of erased blocks currently available for assignment is limited to a maximum number of erased blocks regardless of a total number of erased blocks; and wherein the controller is further configured to transfer the list of addresses of erased blocks currently available for assignment to the non-volatile memory in response to the list containing the maximum number of erased blocks.
-
-
15. A method of operating a memory system, comprising:
-
maintaining a list, in a volatile memory, of obsolete blocks of a non-volatile memory; in response to receiving a write operation for a data sector to the non-volatile memory, determining whether the list of obsolete blocks of memory locations contains a number of block addresses equal to a predetermined value; if the number of block addresses is equal to the predetermined value, selecting one of the blocks in the list of obsolete blocks for erasure; determining if the block selected for erasure contains valid data and relocating any valid data to another block of memory locations; erasing the selected block after relocating any valid data; and adding an address of the selected block to a list of erased blocks maintained in the volatile memory. - View Dependent Claims (16, 17, 18, 19, 20, 21)
-
-
22. A method of operating a memory system, comprising:
-
maintaining a list, in a volatile memory, of obsolete blocks of a non-volatile memory; in response to receiving a write operation for a data sector to the non-volatile memory, determining whether the list of obsolete blocks of memory locations contains a number of addresses equal to a predetermined value; if the number of addresses is equal to the predetermined value, selecting one of the blocks in the list of obsolete blocks for erasure; determining if the block selected for erasure contains valid data and relocating any valid data to another block of memory locations; erasing the selected block after relocating any valid data; adding an address of the selected block to a list of erased blocks maintained in the volatile memory; determining if the list of erased blocks maintained in the volatile memory contains a number of addresses equal to a second predetermined value; transferring the list to the non-volatile memory if the list contains a number of addresses equal to the second predetermined value; and clearing the list after transfer to the non-volatile memory.
-
Specification