Sub block based storage device and method for managing sub block thereof
A storage device includes: memory device including a plurality of memory blocks, each of the plurality of memory blocks comprising a plurality of sub-blocks, wherein at least two sub-blocks of the plurality of sub-blocks have different sizes; and a memory controller configured to manage the plurality of memory blocks and the plurality of sub-blocks, wherein the memory controller is further configured to: based on a predetermined sub-block attribute criteria, select at least one sub-block from the plurality of sub-blocks, add the selected at least one sub-block to at least one sub-block pool, and based on the predetermined sub-block attribute criteria, allocate the selected at least one sub-block in the at least one sub-block pool to a virtual memory block.
1 . A storage device comprising:
a memory device comprising a plurality of memory blocks, each of the plurality of memory blocks comprising a plurality of sub-blocks, wherein at least two sub-blocks of the plurality of sub-blocks have different sizes; and
a memory controller configured to manage the plurality of memory blocks and the plurality of sub-blocks,
wherein the memory controller is further configured to:
based on a predetermined sub-block attribute criteria, select at least one sub-block from the plurality of sub-blocks,
add the selected at least one sub-block to at least one sub-block pool, and
based on the predetermined sub-block attribute criteria, allocate the selected at least one sub-block in the at least one sub-block pool to a virtual memory block,
wherein the predetermined sub-block attribute criteria includes at least one of an erase count or a data access frequency of the at least one sub-block.
2 . The storage device of claim 1 , wherein the plurality of sub-blocks comprise:
a first sub-block with a first capacity being the smallest capacity;
a second sub-block with a second capacity that is larger than the first capacity of the first sub-block; and
a third sub-block with a third capacity that is larger than the second capacity of the second sub-block,
wherein the memory controller is further configured to:
based on the first capacity, the second capacity, and the third capacity, select one of the first sub-block, the second sub-block and the third sub-block,
add the first sub-block to a first sub-block pool,
add the second sub-block to a second sub-block pool, and
add the third sub-block to a third sub-block pool.
3 . The storage device of claim 2 , wherein the memory controller is further configured to:
sequentially or randomly select sub-blocks from the first sub-block pool, the second sub-block pool or the third sub-block pool, and
add the sequentially or randomly selected sub-blocks to the virtual memory block.
4 . The storage device of claim 1 , wherein the memory controller is further configured to:
select, from the at least one sub-block pool, a set of sub-blocks having the same capacities, and
add the selected set of sub-blocks to the virtual memory block.
5 . The storage device of claim 1 , wherein the memory controller is further configured to:
select, from the at least one sub-block pool, a set of sub-blocks having different capacities each other, and
add the selected set of sub-blocks to the virtual memory block.
6 . The storage device of claim 1 , wherein the plurality of sub-blocks comprises:
a first sub-block with a first erase count being the lowest erase count;
a second sub-block with a second erase count that is higher than the first erase count of the first sub-block; and
a third sub-block with a third erase count that is higher than the second erase count of the second sub-block,
wherein the memory controller is further configured to:
based on the first erase count, the second erase count, and the third erase count, select one of the first sub-block, the second sub-block and the third sub-block,
add the first sub-block to a first sub-block pool,
add the second sub-block to a second sub-block pool, and
add the third sub-block to a third sub-block pool.
7 . The storage device of claim 1 , wherein the memory controller is further configured to:
select, from the at least one sub-block pool, a set of sub-blocks having the same erase count, and
add the selected set of sub-blocks to the virtual memory block.
8 . The storage device of claim 1 , wherein the memory controller is further configured to:
obtain, from the at least one sub-block pool, the selected at least one sub-block, and
add the obtained at least one sub-block to a sub-block pool in a sub-block group.
9 . The storage device of claim 8 , wherein the memory controller is further configured to obtain the selected at least one sub-block, based on at least one of a capacity, the erase count, or the data access frequency.
10 . The storage device of claim 8 , wherein the sub-block group comprises at least one of a minimum erase count sub-block pool, a hot data sub-block pool, or a cold data sub-block pool.
11 . A method performed by a storage device comprising a plurality of memory blocks, the method comprising:
based on a predetermined sub-block attribute criteria, selecting at least one sub-block from a plurality of sub-blocks in the plurality of memory blocks;
adding the selected at least one sub-block to a sub-block pool; and
based on the predetermined sub-block attribute criteria, allocating the selected at least one sub-block in the sub-block pool to a virtual memory block,
wherein at least two sub-blocks of the plurality of sub-blocks have different sizes, and
wherein the predetermined sub-block attribute criteria includes at least one of an erase count or a data access frequency of at least one sub-block.
12 . The method of claim 11 , wherein the selecting the at least one sub-block from the plurality of sub-blocks comprises:
adding the selected at least one sub-block to a first sub-block pool when a capacity of the selected at least one sub-block is the smallest in one of the plurality of memory blocks;
adding the selected at least one sub-block to a second sub-block pool when the capacity of the selected at least one sub-block is the largest among the plurality of memory blocks; and
adding the selected at least one sub-block to a third sub-block pool when the capacity of the selected at least one sub-block is an average among the plurality of memory blocks.
13 . The method of claim 11 , wherein the selecting the at least one sub-block from the plurality of sub-blocks comprises:
adding the selected at least one sub-block to a first sub-block pool when an erase count of the selected at least one sub-block is less than a first reference value;
adding the selected at least one sub-block to a second sub-block pool when the erase count of the selected at least one sub-block is greater than a second reference value; and
adding the selected at least one sub-block to a third sub-block pool when the erase count of the selected at least one sub-block is greater than the first reference value and less than the second reference value.
14 . The method of claim 11 , wherein the selecting the at least one sub-block from the plurality of sub-blocks comprises:
determining that a workload is high when a data access frequency is higher than a first threshold, data write commands are more frequent than a second threshold, or write commands are performed; and
adding, to a hot data sub-block pool, a sub-block having an erase count being smaller than a third threshold.
15 . The method of claim 14 , wherein the selecting the at least one sub-block from the plurality of sub-blocks comprises:
determining that the workload is low when the data access frequency or a data write frequency is lower than a fourth threshold, and
based on a determination that the workload is low, adding the selected at least one sub-block to a cold data sub-block pool.
16 . A method performed by a storage device, the method comprising:
receiving, from a host, a virtual memory block allocation requirement;
confirming the virtual memory block allocation requirement;
based on the virtual memory block allocation requirement, selecting at least one sub-block;
selecting a sub-block pool and adding the selected at least one sub-block to the selected sub-block pool;
combining a virtual memory block using the selected at least one sub-block of the selected sub-block pool;
comparing the combined virtual memory block and the virtual memory block allocation requirement and checking whether the virtual memory block allocation requirement is satisfied; and
based on a determination that the virtual memory block allocation requirement is satisfied, allocating the virtual memory block.
17 . The method of claim 16 , wherein the virtual memory block allocation requirement comprises a request for a data size.
18 . The method of claim 17 , wherein the selecting the at least one sub-block comprises selecting the at least one sub-block with the least surplus space when the virtual memory block allocation requirement comprises the request for the data size.
19 . The method of claim 16 , wherein the selecting the at least one sub-block comprises selecting the at least one sub-block based on a capacity of the at least one sub-block or an erase count of the at least one sub-block.
20 . The method of claim 17 , wherein the combining the virtual memory block comprises combining the virtual memory block based on at least one of a capacity of the at least one sub-block, an erase count of the at least one sub-block and a data access frequency.