Dynamic Memory Compaction via I/O Command Size Adaptation
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing memory devices face inefficiencies in garbage collection and folding processes due to fixed compaction times that do not account for the size of host write commands, leading to unnecessary waiting for host writes, especially when dealing with varying data chunk sizes.
Innovation Solution
Implementing a dynamic memory compaction system where a controller generates I/O commands and compacts valid data based on the size of data chunks, allowing for concurrent garbage collection and folding operations that adapt to the size of write commands, thereby optimizing performance.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Loss of time
If a fixed compaction time is used for garbage collection regardless of write command size, then the garbage collection process is simple to implement, but host write operations experience unnecessary waiting time
Solution Approach 1:
The compaction time is changed from a fixed value to a dynamic value that adjusts based on the size of the write command. The controller determines compaction time proportionally to the write command size, allowing the system to adapt to varying data chunk sizes and reduce unnecessary waiting time for host writes.
2Reliability
If compaction is performed for every host write command, then valid data is continuously compacted, but the processing overhead and time consumption increase
Solution Approach 1:
Instead of performing full compaction for every write command, the system performs partial compaction proportional to the write command size. This partial action is sufficient to maintain data validity while avoiding the excessive processing time and overhead of complete compaction operations.
Data Source
AI summary
Apparatus, systems, methods, and computer program products for dynamic memory compaction are disclosed. A memory device comprises a plurality of memory blocks and a controller for the memory device. A controller is configured to generate an input/output command to write a data chunk to a first memory block of a plurality of memory blocks. A controller is configured to compact an amount of valid data in a second memory block of a plurality of memory blocks based on a size of an I/O command.


