Achieving uniform bandwidth using blended memory blocks for relocation operations
A data storage device includes a bandwidth balancing system operable to reduce or eliminate bandwidth availability fluctuations that occur as a result of the performance of various internal operations and host operations. The bandwidth balancing system reduces or eliminates bandwidth availability fluctuations using a randomness factor. The randomness factor is a value that indicates a probability that an entire memory block will be invalidated by a single operation, which would cause the validity count of the memory block to significantly drop, thereby causing bandwidth availability fluctuations. The bandwidth balancing system ensures the memory blocks have a desired randomness factor by enabling the memory blocks to store both random data and sequential data. Specifically, the bandwidth balancing system intelligently mixes random data and sequential data within a memory block to achieve the desired randomness factor.
1 . A method, comprising:
logically dividing a memory block of a memory device into a plurality of sub-blocks, a first number of the plurality of sub-blocks allocated to store sequential data and a second number of the plurality of sub-blocks allocated to store random data;
determining a randomness factor associated with the memory block, the randomness factor indicating a probability of the sequential data and the random data being invalidated using a single operation; and
selecting the memory block for a relocation operation based, at least in part, on the randomness factor.
2 . The method of claim 1 , further comprising changing the allocation of at least one of the first number and the second number based, at least in part, on an amount of sequential data received by the memory device.
3 . The method of claim 1 , wherein the relocation operation is a folding operation.
4 . The method of claim 3 , further comprising:
selecting an additional memory block as part of the folding operation, wherein the additional memory block is selected based, at least in part, on a randomness factor associated with the additional memory block; and
performing the folding operation using the memory block and the additional memory block.
5 . The method of claim 4 , wherein the randomness factor associated with the additional memory block is different than the randomness factor of the memory block.
6 . The method of claim 4 , wherein the randomness factor associated with the memory block and the randomness factor associated with the additional memory block indicate the memory block and the additional memory block include sequential data, wherein:
the sequential data of the memory block is associated with a first set of data; and
the sequential data of the additional memory block is associated with a second set of data.
7 . The method of claim 1 , wherein the relocation operation is a compaction operation.
8 . The method of claim 7 , further comprising:
selecting a destination memory block for the compaction operation, the destination memory block having a first predetermined number of sub-blocks allocated to store sequential data and a second predetermined number of sub-blocks allocated to store random data;
moving at least a portion of data associated with the memory block to the destination memory block; and
moving at least a portion of data associated with another memory block to the destination memory block, the another memory block being associated with a randomness factor.
9 . The method of claim 8 , further comprising identifying another destination memory block for the compaction operation based, at least in part, on determining at least one of the first predetermined number of sub-blocks allocated to store sequential data and the second predetermined number of sub-blocks allocated to store random data are full.
10 . A data storage device, comprising:
a controller; and
a bandwidth balancing system operable to:
determine a randomness factor associated with each of a plurality of memory blocks of the data storage device, the randomness factor of each of the plurality of memory blocks being based, at least in part, on an amount of sequential data stored in each of the plurality of memory blocks;
determine a target randomness factor threshold associated with a destination memory block; and
select one or more of the plurality of memory blocks for a relocation operation based, at least in part, on the randomness factor associated with the selected one or more of the plurality of memory blocks and the target randomness factor threshold associated with the destination memory block.
11 . The data storage device of claim 10 , wherein the relocation operation is a folding operation.
12 . The data storage device of claim 11 , wherein the bandwidth balancing system is further operable to:
identify an additional memory block, based at least in part, on a randomness factor associated with the additional memory block; and
initiate the folding operation using the selected one or more of the plurality of memory blocks and the additional memory block.
13 . The data storage device of claim 12 , wherein the randomness factor associated with the additional memory block is different than the randomness factor associated with the selected one or more of the plurality of memory blocks.
14 . The data storage device of claim 13 , wherein the randomness factor associated with the selected one or more of the plurality of memory blocks and the randomness factor associated with the additional memory block indicate the selected one or more of the plurality of memory blocks and the additional memory block include sequential data, wherein:
the sequential data of the selected one or more of the plurality of memory blocks is associated with a first set of data; and
the sequential data of the additional memory block is associated with a second set of data that is different than the first set of data.
15 . The data storage device of claim 10 , wherein the relocation operation is a compaction operation.
16 . The data storage device of claim 15 , wherein the bandwidth balancing system is further operable to:
identify a destination memory block for the compaction operation, the destination memory block having a first predetermined number of sub-blocks allocated to store sequential data and a second predetermined number of sub-blocks allocated to store random data;
move at least a portion of data associated with the selected one or more of the plurality of memory blocks to the destination memory block; and
move at least a portion of data associated with another memory block to the destination memory block, the another memory block being associated with a randomness factor.
17 . A data storage device, comprising:
means for determining a randomness factor associated with a memory block of the data storage device, the randomness factor being based, at least in part, on an amount of random data being stored in the memory block;
means for determining a target randomness factor threshold associated with a destination memory block; and
means for selecting the memory block for a relocation operation based, at least in part, on the randomness factor associated with the memory block and the target randomness factor threshold associated with the destination memory block.
18 . The data storage device of claim 17 , wherein the relocation operation is a folding operation.
19 . The data storage device of claim 18 , further comprising:
means for identifying an additional memory block, based at least in part, on a randomness factor associated with the additional memory block; and
means for initiating the folding operation using the memory block and the additional memory block.
20 . The data storage device of claim 17 , wherein the relocation operation is a compaction operation and wherein the data storage device further comprises:
means for identifying a destination memory block for the compaction operation, the destination memory block having a first predetermined number of sub-blocks allocated to store sequential data and a second predetermined number of sub-blocks allocated to store random data;
means for moving at least a portion of data associated with memory block to the destination memory block; and
means for moving at least a portion of data associated with another memory block to the destination memory block, the another memory block being associated with a randomness factor.