Locality Grouping Garbage Collection Storage Controller

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The process of garbage collection in flash memory systems often degrades host read operations by blindly gathering and rewriting valid data, leading to inefficiencies and reduced performance due to the interleaving of data across multiple source blocks and destination blocks.

Innovation Solution

Implementing locality grouping during garbage collection by identifying sequences of valid data of predefined lengths and transferring them to respective queues, allowing for efficient writing to destination units while maintaining logical and physical adjacency, thereby optimizing data transfer and reducing inefficiencies.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If valid data is blindly gathered and rewritten during garbage collection, then garbage collection can be performed, but host read operation performance degrades due to data interleaving

Engineering Contradiction:
Improvegarbage collection throughputVSAvoidhost read operation performance
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent segments valid data into sequences based on their physical adjacency and transfers them to corresponding queues. This segmentation preserves the spatial locality of data, allowing garbage collection to proceed while maintaining read performance by avoiding interleaving of data from different source blocks.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs preliminary organization of valid data into sequences and queues before the actual rewrite operation. By pre-grouping data with physical adjacency relationships, the system prepares the data in an optimal state for rewriting, thereby preventing performance degradation during subsequent host read operations.

Inventive Principle:
Principle #10Preliminary action

2Productivity

If valid data from multiple source blocks is rewritten to destination blocks, then storage space is reclaimed, but data rearrangement overhead increases

Engineering Contradiction:
Improvestorage space reclamation efficiencyVSAvoiddata rearrangement overhead
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent divides valid data into sequences that maintain physical adjacency relationships and assigns them to different queues. This segmentation reduces the complexity of data rearrangement by organizing data in manageable units that can be processed independently, thereby reducing overhead while maintaining reclamation efficiency.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies different handling strategies to different sequences of valid data based on their characteristics (e.g., length, source block). By treating each sequence according to its specific properties, the system optimizes the rewrite process and minimizes unnecessary data movement, reducing rearrangement overhead.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS10901892B2Locality grouping during garbage collection with flush of buffered write data upon completion of garbage collection operation
Publication Date: 2021.01.26 SANDISK TECHNOLOGIES LLC
  • US10901892B2 patent drawing
  • US10901892B2 patent drawing
  • US10901892B2 patent drawing

AI summary

Systems, methods and/or devices are used to enable locality grouping during garbage collection of a storage device. In one aspect, the method includes, at a storage controller for the storage device: performing one or more operations for a garbage collection read, including: identifying one or more sequences of valid data in a source unit, wherein each identified sequence of valid data has a length selected from a set of predefined lengths; and for each respective sequence, transferring the respective sequence to a respective queue of a plurality of queues, in accordance with the length of the respective sequence; and setting a global flag to flush all open queues; and performing one or more operations for a garbage collection write, including: identifying open respective queues for writing to a destination unit; and writing from the open respective queues to the destination unit.