Scheduling of Housekeeping Operations in Flash Memory Systems
First Claim
1. A method of operating an erasable and re-programmable non-volatile memory system, which comprises, in response to receiving a command from outside the memory system having a time budget for its execution:
- perform any function necessary to execute the command, assert a busy signal outside of the memory system for a time extending beyond that utilized to perform said any necessary function while remaining within the time budget, and perform during the extended busy signal time at least a portion of one housekeeping operation within the memory system that is unnecessary to execute the received command.
2 Assignments
0 Petitions
Accused Products
Abstract
A re-programmable non-volatile memory system, such as a flash EEPROM system, having its memory cells grouped into blocks of cells that are simultaneously erasable is operated to perform memory system housekeeping operations in the foreground during execution of a host command, wherein the housekeeping operations are unrelated to execution of the host command. Both one or more such housekeeping operations and execution of the host command are performed within a time budget established for executing that particular command. One such command is to write data being received to the memory. One such housekeeping operation is to level out the wear of the individual blocks that accumulates through repetitive erasing and re-programming.
-
Citations
27 Claims
-
1. A method of operating an erasable and re-programmable non-volatile memory system, which comprises, in response to receiving a command from outside the memory system having a time budget for its execution:
-
perform any function necessary to execute the command, assert a busy signal outside of the memory system for a time extending beyond that utilized to perform said any necessary function while remaining within the time budget, and perform during the extended busy signal time at least a portion of one housekeeping operation within the memory system that is unnecessary to execute the received command. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A method of operating an erasable and re-programmable non-volatile memory system, comprising, in response to receiving a command to transfer one or more units of data within a given time budget:
-
determining whether any housekeeping operation is necessary to be able to transfer the one or more units of data, if any housekeeping operation is necessary to be able to transfer the one or more units of data, performing at least the necessary housekeeping operation, determining whether a housekeeping operation unnecessary to the transfer of one or more units of data is pending, if a housekeeping operation unnecessary to the data transfer is pending, determining whether any remaining time within the time budget is sufficient for performing the pending housekeeping operation unnecessary to the data transfer, if sufficient time remains within the time budget, performing at least a portion of the pending housekeeping operation unnecessary to the data transfer during execution of the received command, and transferring the one or more units of data within the given time budget. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
-
-
25. A method of operating a system of erasable and re-programmable non-volatile memory cells organized into a plurality of physical blocks of a number of memory cells that are simultaneously erasable and wherein data within logical group addresses are mapped into the physical blocks, comprising in response to receiving a command to write data to one of the logical groups and the data to be written:
-
determining whether data within the logical group is mapped to more than one of the physical blocks, determining whether there is a wear leveling exchange pending between two of the plurality of blocks, and (a) if data within the logical group are mapped to more than one of the physical blocks, consolidating the data of the more than one of the physical blocks into a single block, and writing the received data to an update block associated with the logical group, or (b) if data within the logical group are not mapped to more than one of the physical blocks but there is a wear leveling exchange pending, performing a wear leveling exchange between said two of the physical blocks, and writing the received data to an update block associated with the logical group.
-
-
26. A method of operating a system of erasable and re-programmable non-volatile memory cells organized into a plurality of physical blocks of a number of memory cells that are simultaneously erasable and wherein incoming data within logical group addresses mapped to one of the physical blocks are programmed into an update physical block logically linked to said one block, comprising in response to receiving a write command and data to be written:
-
determining whether an update block is available to receive the data to be written, (a) if an update block is not available, consolidating data of one of a plurality of update blocks with data of a physical block to which data of the update block are logically linked, thereby making an update block available, and thereafter writing data to the available update block, or (b) if an update block is available, performing a wear leveling exchange of data between two of the physical blocks, and thereafter writing data to the available update block.
-
-
27. A method of operating a system of erasable and re-programmable non-volatile memory cells organized into a plurality of physical blocks of a number of memory cells that are simultaneously erasable and wherein incoming data within logical addresses mapped to one of the physical blocks are programmed into an update physical block logically linked to said one block, wherein a limited number of the plurality of blocks are specified to be update blocks and new update blocks are created by garbage collection that consolidates data from at least two blocks into one block, which comprises in response to receiving a write command and data to be written:
-
determining whether a housekeeping operation unnecessary to execution of the write command is pending and which includes the necessity to copy of a plurality of units of data from one of the plurality of blocks to an update block, if so, copying one or more of the plurality of units of data but less than one-quarter of the units from said one block into one of the update blocks during execution of the write command, identifying said one update block as the next in order to have its data consolidated, and after execution of the write command, perform garbage collection on said one update block, whereby the remaining of the plurality of units of data within said one block are placed together with the one or more copied units into a common block.
-
Specification