Garbage collection for heterogenous flash memory storage devices
Abstract
A system includes a solid-state storage array having a plurality of solid-state storage devices and a storage controller coupled to the solid-state storage array, the storage controller including a processing device, the processing device to determine that a first allocation unit has a first portion occupying a first plurality of erase blocks and a second portion sharing a second erase block with a portion of a second allocation unit. The processing device is further to relocate data of the portion of the second allocation unit sharing the second erase block with the second portion of the first allocation unit to another erase block and in response to relocating the data of the portion of the second allocation unit, reclaim the first plurality of erase blocks and the second erase block.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1 . A system comprising:
a plurality of heterogeneous solid-state storage devices; and a storage controller operatively coupled to the solid-state storage plurality of heterogeneous solid-state storage devices, the storage controller comprising a processing device, the processing device to:
determine that a first set of data blocks has a first portion occupying a first plurality of erase blocks and a second portion sharing a second erase block with a portion of a second set of data blocks; and
in response to the request to perform garbage collection, relocate data of the portion of the second set of data blocks sharing the second erase block with the second portion of the first set of data blocks to another erase block.
2 . The system of claim 1 , wherein the plurality of heterogeneous solid-state storage devices uses different erase block sizes.
3 . The system of claim 1 , wherein the first set of data blocks comprises a first allocation of blocks and the second set of data blocks comprises a second allocation of blocks.
4 . The system of claim 1 , wherein the processing devices is further to:
in response to relocating the data of the portion of the second set of data blocks, perform garbage collection of the first plurality of erase blocks and the second erase block.
5 . The system of claim 1 , wherein the processing device is further to:
relocate data of a portion of a third set of data blocks sharing a third erase block with a third portion of the first set of data blocks to the other erase block.
6 . The system of claim 1 , wherein the processing device is further to:
identify the first plurality of erase blocks and the second erase block associated with the first set of data blocks, wherein the processing device determines that the first set of data blocks has a first portion occupying the first plurality of erase blocks and the second portion sharing a second erase block with the portion of the second set of data blocks is in response to identifying the first plurality of erase blocks and the second erase block associated with the first set of data blocks.
7 . The system of claim 4 , wherein to perform garbage collection of the first plurality of erase blocks and the second erase block, the processing device is further to:
program metadata to obsolete the data stored at the first plurality of erase blocks and the second erase block.
8 . The system of claim 1 , wherein the first set of data blocks is assigned to one of a plurality of available sets of data blocks.
9 . The system of claim 8 , wherein the processing device is further to:
in response to receiving a request for sets of data blocks, identify one or more sets of data blocks of the plurality of available sets of data blocks, wherein the one or more sets of data blocks correspond to physical locations on a solid-state storage device of the plurality of solid-state storage devices that allow for performance of parallel programming operations.
10 . A method, comprising:
determining that a first set of data blocks has a first portion occupying a first plurality of erase blocks and a second portion sharing a second erase block with a portion of a second set of data blocks, wherein the first plurality of erase blocks and the second erase block are located on a plurality of heterogenous solid-state storage devices; and in response to the request to perform garbage collection, relocating data of the portion of the second set of data blocks sharing the second erase block with the second portion of the first set of data blocks to another erase block.
11 . The method of claim 10 , wherein the plurality of heterogeneous solid-state storage devices uses different erase block sizes.
12 . The method of claim 10 , wherein the first set of data blocks comprises a first allocation of blocks and the second set of data blocks comprises a second allocation of blocks.
13 . The method of claim 10 , further comprising:
in response to relocating the data of the portion of the second set of data blocks, performing garbage collection of the first plurality of erase blocks and the second erase block.
14 . The method of claim 10 , further comprising:
relocating data of a portion of a third set of data blocks sharing a third erase block with a third portion of the first set of data blocks to the other erase block.
15 . The method of claim 10 , further comprising:
identifying the first plurality of erase blocks and the second erase block associated with the first set of data blocks, wherein the processing device determines that the first set of data blocks has a first portion occupying the first plurality of erase blocks and the second portion sharing a second erase block with the portion of the second set of data blocks is in response to identifying the first plurality of erase blocks and the second erase block associated with the first set of data blocks.
16 . The method of claim 13 , wherein performing garbage collection of the first plurality of erase blocks and the second erase block comprises:
programing metadata to obsolete the data stored at the first plurality of erase blocks and the second erase block.
17 . The method of claim 10 , wherein the first set of data blocks is assigned to one of a plurality of available sets of data blocks.
18 . The method of claim 17 , further comprising:
in response to receiving a request for sets of data blocks, identifying one or more sets of data blocks of the plurality of available sets of data blocks, wherein the one or more sets of data blocks correspond to physical locations on a solid-state storage device of the plurality of solid-state storage devices that allow for performance of parallel programming operations.
19 . A non-transitory computer readable storage medium storing instructions, which when executed, cause a processing device to:
determine that a first set of data blocks has a first portion occupying a first plurality of erase blocks and a second portion sharing a second erase block with a portion of a second set of data blocks, wherein the first plurality of erase blocks and the second erase block are located on a plurality of heterogenous solid-state storage devices; and in response to the request to perform garbage collection, relocate data of the portion of the second set of data blocks sharing the second erase block with the second portion of the first set of data blocks to another erase block.
20 . The non-transitory computer readable storage medium, wherein the processing device is further to:
in response to relocating the data of the portion of the second set of data blocks, perform garbage collection of the first plurality of erase blocks and the second erase block.Join the waitlist — get patent alerts
Track US2023022758A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.