Adaptive wear levelling
First Claim
1. A device comprising:
- at least one processor configured to;
utilize sets of blocks of flash memory circuits for data storage operations, each of the sets of blocks including at least one block from each of the flash memory circuits and at least some of the blocks of at least some of the sets of blocks being marked active, wherein the at least some of the blocks of the at least some of the sets of blocks that are marked as active are utilized for the data storage operations;
monitor quality metrics of each block of each of the sets of blocks while the at least some of the blocks of the at least some of the sets of blocks that are marked as active are utilized for the data storage operations;
determine when the quality metric of one of the blocks of one of the sets of blocks falls below a minimum quality level;
mark the one of the blocks of the one of the sets of blocks as temporarily inactive, wherein the one of the blocks of the one of the sets of blocks is not utilized for the data storage operations while marked temporarily inactive;
determine that at least one criterion is satisfied when a number of the blocks of the one of the sets of blocks that are marked as active falls below a minimum number of active blocks for a code rate associated with the one of the sets of blocks, wherein each of the sets of blocks is associated with the code rate; and
when the at least one criterion is satisfied, mark the one of the blocks of the one of the sets of blocks as active, wherein the one of the blocks of the one of the sets of blocks is again utilized for the data storage operations while marked as active.
7 Assignments
0 Petitions
Accused Products
Abstract
A device that provides for adaptive wear levelling includes at least one processor. The at least one processor utilizes sets of blocks of flash memory circuits for data storage operations, each set of blocks including a block from each flash memory circuit and at least some of the blocks being marked active for the data storage operations. The at least one processor monitors a quality metric of each block while the blocks marked active are utilized for data storage operations. The at least one processor determines when the quality metric of a block falls below a minimum level and marks the block as temporarily inactive, where the block is not utilized for the data storage operations while marked temporarily inactive. The at least one processor, when a criterion is satisfied, marks the block as active so that the block can again be utilized for the data storage operations.
-
Citations
21 Claims
-
1. A device comprising:
at least one processor configured to; utilize sets of blocks of flash memory circuits for data storage operations, each of the sets of blocks including at least one block from each of the flash memory circuits and at least some of the blocks of at least some of the sets of blocks being marked active, wherein the at least some of the blocks of the at least some of the sets of blocks that are marked as active are utilized for the data storage operations; monitor quality metrics of each block of each of the sets of blocks while the at least some of the blocks of the at least some of the sets of blocks that are marked as active are utilized for the data storage operations; determine when the quality metric of one of the blocks of one of the sets of blocks falls below a minimum quality level; mark the one of the blocks of the one of the sets of blocks as temporarily inactive, wherein the one of the blocks of the one of the sets of blocks is not utilized for the data storage operations while marked temporarily inactive; determine that at least one criterion is satisfied when a number of the blocks of the one of the sets of blocks that are marked as active falls below a minimum number of active blocks for a code rate associated with the one of the sets of blocks, wherein each of the sets of blocks is associated with the code rate; and when the at least one criterion is satisfied, mark the one of the blocks of the one of the sets of blocks as active, wherein the one of the blocks of the one of the sets of blocks is again utilized for the data storage operations while marked as active. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
12. A method comprising:
-
utilizing sets of blocks of a plurality of flash memory circuits for data storage operations, each of the sets of blocks including at least one block from each of the plurality of flash memory circuits and at least some of the blocks of at least some of the sets of blocks being marked active, wherein the at least some of the blocks of the at least some of the sets of blocks that are marked as active are utilized for the data storage operations; monitoring a remaining cycle count of each of the blocks of each of the sets of blocks while the at least some of the blocks of the at least some of the sets of blocks that are marked as active are utilized for the data storage operations, wherein the remaining cycle count of each of the blocks of each of the sets of blocks is based at least in part on an expected cycle count associated with each of the plurality of flash memory circuits containing each of the blocks of each of the sets of blocks; when the remaining cycle count of one of the blocks of one of the sets of blocks satisfies at least one first criterion, marking the one of the blocks of the one of the sets of blocks as temporarily inactive, wherein the one of the blocks of the one of the sets of blocks is not utilized for the data storage operations while marked temporarily inactive; determine that at least one second criterion is satisfied when a number of the blocks of one of the sets of blocks that are marked as active falls below a minimum number of active blocks for a code rate associated with the one of the sets of blocks, wherein each of the sets of blocks is associated with the code rate; and when the at least one second criterion is satisfied, mark the one of the blocks of the one of the sets of blocks as active, wherein the one of the blocks of the one of the sets of blocks is again utilized for the data storage operations while marked as active. - View Dependent Claims (13, 14, 15, 16, 17, 18)
-
-
19. A computer program product comprising code stored in a non-transitory computer-readable storage medium, the code comprising:
-
code to utilize sets of blocks of flash memory circuits for data storage operations, each of the sets of blocks including at least one block from each of the flash memory circuits and at least some of the blocks of at least some of the sets of blocks being marked active, wherein the at least some of the blocks of the at least some of the sets of blocks that are marked as active are utilized for the data storage operations; code to monitor quality metrics of each block of each of the sets of blocks while the at least some of the blocks of the at least some of the sets of blocks that are marked as active are utilized for the data storage operations; code to determine when the quality metric of one of the blocks of one of the sets of blocks falls below a minimum quality level; code to mark the one of the blocks of the one of the sets of blocks as temporarily inactive, wherein the one of the blocks of the one of the sets of blocks is not utilized for the data storage operations while marked temporarily inactive; code to determine that at least one criterion is satisfied when a number of the blocks of the one of the sets of blocks that are marked as active falls below a minimum number of active blocks for a code rate associated with the one of the sets of blocks, wherein each of the sets of blocks is associated with the code rate; and code to mark the one of the blocks of the one of the sets of blocks as active, when the at least one criterion is satisfied, wherein the one of the blocks of the one of the sets of blocks is again utilized for the data storage operations while marked as active. - View Dependent Claims (20)
-
-
21. A system comprising:
-
a plurality of flash memory circuits each comprising blocks; a random access memory (RAM) configured to store a data structure that comprises a status of each of the blocks of each of the plurality of flash memory circuits, the status of each of the blocks of each of the plurality of flash memory circuits indicating at least if each of the blocks of each of the plurality of flash memory circuits is marked active or is marked temporarily inactive; an interface communicatively coupled to a host device; and a controller configured to; utilize sets of the blocks of the plurality of flash memory circuits for data storage operations indicated by the host device, each of the sets of the blocks including at least one block from each of the plurality of flash memory circuits and at least some of the blocks of at least some of the sets of the blocks being marked active in the data structure, wherein the at least some of the blocks of the at least some of the sets of the blocks that are marked as active in the data structure are utilized for the data storage operations; monitor a quality metric of each of the blocks of each of the sets of the blocks while the at least some of the blocks of the at least some of the sets of the blocks that are marked as active in the data structure are utilized for the data storage operations; determine when the quality metric of one of the blocks of one of the sets of the blocks falls below a minimum quality level; mark the one of the blocks of the one of the sets of the blocks as temporarily inactive the data structure, wherein the one of the blocks of the one of the sets of the blocks is not utilized for the data storage operations while marked temporarily inactive in the data structure; determine that at least one criterion is satisfied when a number of the blocks of the one of the sets of the blocks that are marked as active falls below a minimum number of active blocks for a code rate associated with the one of the sets of the blocks, wherein each of the sets of the blocks is associated with the code rate; and when the at least one criterion is satisfied, mark the one of the blocks of the one of the sets of the blocks as active in the data structure, wherein the one of the blocks of the one of the sets of the blocks is again utilized for the data storage operations while marked as active in the data structure.
-
Specification