System and method for improving wear-leveling performance in solid-state memory
First Claim
1. A method of performing wear leveling operations in a non-volatile data storage subsystem that comprises blocks of memory, the method comprising:
- receiving a command that specifies an erase operation on a superblock of a plurality of superblocks in the storage subsystem, said superblock comprising a plurality of blocks, each block residing in one of a plurality of dies in the storage subsystem, wherein each of the dies is associated with an individual wear leveling threshold that is based on (1) a position of the die within the plurality of dies and (2) an interval threshold denoting a minimum frequency at which a wear leveling operation is to be performed on a block;
incrementing an erase counter associated with each block in said superblock to reflect said erase operation on the superblock; and
using said erase counters to control a timing with which wear leveling operations are performed on specific blocks in the superblock, the timing being determined by comparing at least one of said erase counters to at least one of the individual wear leveling thresholds associated with the dies to determine whether an individual wear leveling threshold has been reached.
8 Assignments
0 Petitions
Accused Products
Abstract
Embodiments of the invention are directed to systems and methods for improving wear leveling performance in solid-state memory. The embodiments described herein make more consistent the number of wear leveling operations that needs to be performed, so that sudden spikes in the number wear leveling operations may be reduced in solid-state memory. In one embodiment, a staggered threshold-based wear leveling approach is used to spread out the execution of wear leveling operations that otherwise would have been triggered in clusters. Under the staggered threshold-based approach, wear leveling is periodically triggered by different wear leveling thresholds that are associated with various units of solid-state memory such as a group of blocks, so that only a certain amount of units are wear leveled at any given time.
176 Citations
21 Claims
-
1. A method of performing wear leveling operations in a non-volatile data storage subsystem that comprises blocks of memory, the method comprising:
-
receiving a command that specifies an erase operation on a superblock of a plurality of superblocks in the storage subsystem, said superblock comprising a plurality of blocks, each block residing in one of a plurality of dies in the storage subsystem, wherein each of the dies is associated with an individual wear leveling threshold that is based on (1) a position of the die within the plurality of dies and (2) an interval threshold denoting a minimum frequency at which a wear leveling operation is to be performed on a block; incrementing an erase counter associated with each block in said superblock to reflect said erase operation on the superblock; and using said erase counters to control a timing with which wear leveling operations are performed on specific blocks in the superblock, the timing being determined by comparing at least one of said erase counters to at least one of the individual wear leveling thresholds associated with the dies to determine whether an individual wear leveling threshold has been reached. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A data storage subsystem capable of regulating a maximum number of wear leveling operations triggered by an erase operation, the data storage subsystem comprising:
-
a non-volatile solid-state memory array comprising a plurality of groups of blocks, the blocks within each group of blocks distributed across different ones of a plurality of memory units in the non-volatile solid-state memory array; and a controller configured to; receive an erase command directed to a group of the plurality of groups of blocks; and determine whether to perform a wear leveling operation on at least one block in the group of blocks to which the erase command is directed, the determining based at least on (1) a number of erase commands already performed on individual blocks within the group, and (2) one or more individual wear leveling thresholds associated with memory units to which the blocks in the group are distributed, wherein an individual wear leveling threshold associated with at least some memory units differs from an individual wear leveling threshold associated with at least some other memory units, and wherein each of the individual wear leveling thresholds is based on (1) a position of the memory unit within the plurality of memory units and (2) an interval threshold denoting a minimum frequency at which a wear leveling operation is to be performed on a block. - View Dependent Claims (7, 8, 9)
-
-
10. A data storage subsystem capable of regulating a maximum number of wear leveling operations triggered by an erase operation, the data storage subsystem comprising:
-
a non-volatile solid-state memory array comprising a plurality of groups of blocks, the blocks within each group of blocks distributed across different ones of a plurality of memory units in the non-volatile solid-state memory array; and a controller configured to; receive an erase command directed to a group of the plurality of groups of blocks; and determine whether to perform a wear leveling operation on at least one block in the group of blocks to which the erase command is directed, the determining based at least on (1) a number of erase commands already performed on individual blocks within the group, and (2) one or more individual wear leveling thresholds associated with memory units to which the blocks in the group are distributed, wherein an individual wear leveling threshold associated with at least some memory units differs from an individual wear leveling threshold associated with at least some other memory units, and wherein the individual wear leveling threshold associated with a memory unit is a sum of (1) a position number of the associated memory unit within the plurality of memory units and (2) an interval threshold denoting a minimum frequency at which a wear leveling operation is to be performed on a block. - View Dependent Claims (11, 12)
-
-
13. A data storage subsystem capable of regulating a maximum number of wear leveling operations triggered by an erase operation, the data storage subsystem comprising:
-
a non-volatile solid-state memory array comprising a plurality of groups of blocks, the blocks within each group of blocks distributed across different ones of a plurality of memory units in the non-volatile solid-state memory array; and a controller configured to; receive an erase command directed to a group of the plurality of groups of blocks; determine whether to perform a wear leveling operation on at least one block in the group of blocks to which the erase command is directed, the determining based at least on (1) a number of erase commands already performed on individual blocks within the group, and (2) one or more individual wear leveling thresholds associated with memory units to which the blocks in the group are distributed; for each of the blocks in group, perform a modulo operation with (1) a difference between the number of erase commands already on the block and the individual wear leveling threshold associated with the memory unit to which the block is assigned and (2) an interval threshold denoting a minimum frequency at which a wear leveling operation is to be performed on a block; and select the block for a wear leveling operation when the modulo operation results in a zero remainder, wherein an individual wear leveling threshold associated with at least some memory units differs from an individual wear leveling threshold associated with at least some other memory units.
-
-
14. A method for regulating a maximum number of wear leveling operations triggered by an erase operation in a non-volatile data storage subsystem comprising a plurality of groups of blocks, the blocks within each group of blocks distributed across different ones of a plurality of memory units in the non-volatile data storage subsystem, the method comprising:
-
receiving an erase command directed to a group of the plurality of groups of blocks; and determining whether to perform a wear leveling operation on at least one block in the group of blocks to which the erase command is directed, the determining based at least on (1) a number of erase commands already performed on individual blocks within the group, and (2) one or more individual wear leveling thresholds associated with memory units to which the blocks in the group are distributed, wherein an individual wear leveling threshold associated with at least some memory units differs from an individual wear leveling threshold associated with at least some other memory units, and wherein each of the individual wear leveling thresholds is based on (1) a position of the memory unit within the plurality of memory units and (2) an interval threshold denoting a minimum frequency at which a wear leveling operation is to be performed on a block. - View Dependent Claims (15, 16, 17)
-
-
18. A method for regulating a maximum number of wear leveling operations triggered by an erase operation in a non-volatile data storage subsystem comprising a plurality of groups of blocks, the blocks within each group of blocks distributed across different ones of a plurality of memory units in the non-volatile data storage subsystem, the method comprising:
-
receiving an erase command directed to a group of the plurality of groups of blocks; and determining whether to perform a wear leveling operation on at least one block in the group of blocks to which the erase command is directed, the determining based at least on (1) a number of erase commands already performed on individual blocks within the group, and (2) one or more individual wear leveling thresholds associated with memory units to which the blocks in the group are distributed, wherein an individual wear leveling threshold associated with at least some memory units differs from an individual wear leveling threshold associated with at least some other memory units, and wherein the individual wear leveling threshold associated with a memory unit is a sum of (1) a position number of the associated memory unit within the plurality of memory units and (2) an interval threshold denoting a minimum frequency at which a wear leveling operation is to be performed on a block. - View Dependent Claims (19, 20)
-
-
21. A method for regulating a maximum number of wear leveling operations triggered by an erase operation in a non-volatile data storage subsystem comprising a plurality of groups of blocks, the blocks within each group of blocks distributed across different ones of a plurality of memory units in the non-volatile data storage subsystem, the method comprising:
-
receiving an erase command directed to a group of the plurality of groups of blocks; determining whether to perform a wear leveling operation on at least one block in the group of blocks to which the erase command is directed, the determining based at least on (1) a number of erase commands already performed on individual blocks within the group, and (2) one or more individual wear leveling thresholds associated with memory units to which the blocks in the group are distributed; for each of the blocks in group, performing a modulo operation with (1) a difference between the number of erase commands already on the block and the individual wear leveling threshold associated with the memory unit to which the block is assigned and (2) an interval threshold denoting a minimum frequency at which a wear leveling operation is to be performed on a block; and selecting the block for a wear leveling operation when the modulo operation results in a zero remainder, wherein an individual wear leveling threshold associated with at least some memory units differs from an individual wear leveling threshold associated with at least some other memory units.
-
Specification