SYSTEM AND METHOD FOR MANAGING GARBAGE COLLECTION IN SOLID-STATE MEMORY
First Claim
1. A storage subsystem, comprising:
- a non-volatile solid-state memory array; and
a controller comprising a garbage collection module and configured to receive and execute memory commands from a host system and the garbage collection module, the controller further configured to;
maintain, for a first memory block in the memory array, an invalid page counter for storing data related to a number of invalid pages within the first memory block, the first memory block assigned by the number of invalid pages into a first pool, wherein the garbage collection module is configured to select memory blocks from a plurality of pools based on the number of invalid pages;
upon executing a memory command from the host system that causes a change in a validity of a page within the first memory block,update an invalid page counter associated with the first memory block; and
reassign the first memory block to a second pool when the updated invalid page counter exceeds a threshold.
6 Assignments
0 Petitions
Accused Products
Abstract
Embodiments of the invention are directed to optimizing the selection of memory blocks for garbage collection to maximize the amount of memory freed by garbage collection operations. The systems and methods disclosed herein provide for the efficient selection of optimal or near-optimal garbage collection candidate blocks, with the most optimal selection defined as block(s) with the most invalid pages. In one embodiment, a controller classifies memory blocks into various invalid block pools by the amount of invalid pages each block contains. When garbage collection is performed, the controller selects a block from a non-empty pool of blocks with the highest minimum amount of invalid pages. The pools facilitate the optimal or near-optimal selection of garbage collection candidate blocks in an efficient manner and the data structure of the pools can be implemented with bitmasks, which take minimal space in memory.
236 Citations
25 Claims
-
1. A storage subsystem, comprising:
-
a non-volatile solid-state memory array; and a controller comprising a garbage collection module and configured to receive and execute memory commands from a host system and the garbage collection module, the controller further configured to; maintain, for a first memory block in the memory array, an invalid page counter for storing data related to a number of invalid pages within the first memory block, the first memory block assigned by the number of invalid pages into a first pool, wherein the garbage collection module is configured to select memory blocks from a plurality of pools based on the number of invalid pages; upon executing a memory command from the host system that causes a change in a validity of a page within the first memory block, update an invalid page counter associated with the first memory block; and reassign the first memory block to a second pool when the updated invalid page counter exceeds a threshold. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A method of managing memory operations in non-volatile solid-state memory, the method comprising:
-
maintaining, for a first memory block in the non-volatile solid-state memory, an invalid page counter for storing data related to a number of invalid pages within the first memory block, the first memory block classified by the number of invalid pages into a first pool; upon receipt of a write command from a host system that causes a change in a validity of a page within the first memory block, updating an invalid page counter for the first memory block; and reclassifying the first memory block to a second pool when the invalid page counter of the first memory block indicates that a number of invalid pages within the first memory block exceeds a threshold. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20, 21)
-
-
22. A method for selecting memory blocks in a non-volatile memory array of a storage subsystem for garbage collection memory commands, the method comprising:
-
maintaining data related to a number of invalid pages within the memory blocks; assigning the memory blocks to a plurality of pools, each of the pools configured to have a different minimum threshold of invalid pages in the individual memory blocks assigned to the pool; and selecting a memory block assigned to a pool with the highest minimum threshold for garbage collection. - View Dependent Claims (23, 24)
-
-
25. A method for selecting memory blocks in a non-volatile memory array of a storage subsystem for garbage collection memory commands, the method comprising:
-
maintaining statistical data regarding how many pages within the memory blocks are invalid; using the statistical data to maintain a plurality of pools of memory blocks based on the number of invalid pages; and selecting a first memory block for garbage collection from a first pool.
-
Specification