Program Buffer Threshold Management for QLC Memory Write Amplification
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing memory sub-systems face challenges in balancing the need to maintain data in a program buffer for as long as possible before initiating programming passes, while also maximizing the time between coarse and fine programming passes, which affects data retention and write amplification.
Innovation Solution
Implementing a program buffer management policy that sets a threshold for the program buffer fill level, allowing data to remain in the buffer until it reaches this threshold before initiating the coarse programming pass, and delaying the fine programming pass until just before the data is evicted from the buffer, with the threshold being configurable based on the measured overwrite rate.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Loss of energy
If data is programmed to QLC memory immediately when program buffer is full, then write amplification is reduced, but data retention and quick charge loss correction time is insufficient
Solution Approach 1:
The system dynamically adjusts the program buffer threshold based on measured overwrite rates. When overwrite rate is high, the threshold is increased to allow more data to accumulate in the program buffer before triggering programming passes, thereby extending the time interval between passes and improving data retention without significantly increasing write amplification.
Solution Approach 2:
The patent changes the operational parameters of the memory system by introducing a configurable threshold parameter that controls when programming passes are initiated. This parameter can be adjusted based on system conditions (overwrite rate) to optimize the balance between write amplification and data retention requirements.
2Duration of action of stationary object
If program buffer threshold is set low, then programming passes are initiated frequently reducing data retention needs, but quick charge loss correction time is reduced
Solution Approach 1:
The threshold is made dynamic rather than fixed, adjusting based on the measured overwrite rate of the program buffer. This allows the system to adapt to varying workload conditions and optimize the balance between data retention time and the time available for quick charge loss correction.
Solution Approach 2:
The system implements feedback by measuring the overwrite rate of the program buffer and using this information to adjust the threshold parameter. This closed-loop control ensures that the threshold setting is continuously optimized based on actual system behavior and conditions.
3Loss of energy
If data is kept in program buffer longer, then likelihood of overwrite increases reducing writes to QLC memory, but data retention requirements become more stringent
Solution Approach 1:
The system uses dynamic threshold adjustment based on overwrite rate to optimize the balance between allowing data to remain in the program buffer (increasing overwrite likelihood) and maintaining data retention requirements. When overwrite rates are high, the threshold increases, allowing longer buffer residence time.
Solution Approach 2:
The threshold parameter is changed based on system conditions, specifically the measured overwrite rate. This allows the system to flexibly adjust how long data remains in the program buffer, optimizing both write amplification and data retention trade-offs under different operating conditions.
Data Source
AI summary
A processing device in a memory sub-system determines that an amount of host data in a first portion of a memory device configured as a program buffer satisfies a buffer threshold criterion and initiates an initial program pass of first host data from the program buffer to a second portion of the memory device configured as a primary memory. The processing device further determines that the first host data is to be evicted from the program buffer, and initiating a final program pass of the first host data from the program buffer to the primary memory.


