Non-Volatile Memory Management via Data Sector Merging
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Flash memory devices, such as SD/eMMC cards, face inefficiencies in write operations due to the need to rewrite entire erase blocks, leading to degraded write speed and increased program/erase cycling, which is problematic given the limited number of cycles these devices can handle.
Innovation Solution
A method is introduced that involves managing non-volatile memory by selecting and merging data sectors based on a target ratio between to-be-merged and to-be-cleaned memory space portions, optimizing the buffer usage to prevent overflow and maintain performance.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If entire erase blocks are rewritten to update small portions of data, then data integrity is maintained, but write speed degrades and program/erase cycling increases
Solution Approach 1:
The logical memory space is divided into multiple memory space portions, each independently manageable. This segmentation allows the system to identify and update only the specific portions containing modified data sectors, rather than rewriting entire erase blocks. The buffer is also segmented into multiple buffer blocks for finer-grained control of data movement operations.
Solution Approach 2:
Data sectors are pre-buffered in volatile memory before being committed to non-volatile storage. This preliminary action allows the system to accumulate multiple small writes and consolidate them into larger, more efficient programming operations, reducing the frequency of erase cycles while maintaining data integrity.
2Reliability
If entire erase blocks are rewritten to update small portions of data, then data consistency is preserved, but program/erase cycling increases
Solution Approach 1:
By segmenting the logical memory space into multiple portions and tracking which portions contain modified data, the system can selectively update only the necessary segments. This reduces the total number of program/erase cycles applied to the memory device, extending its operational lifespan while maintaining data consistency through targeted updates.
Solution Approach 2:
The system changes the management parameter from erase-block-level operations to memory-space-portion-level operations. This parameter change enables finer control over when and where programming operations occur, reducing unnecessary cycles and extending memory device lifespan while preserving data consistency.
3Device complexity
If memory is managed at erase block level, then simplicity is maintained, but buffer efficiency decreases
Solution Approach 1:
The logical memory space is segmented into multiple portions that can be independently managed and mapped to buffer blocks. This segmentation enables the buffer to be used more efficiently by allowing selective copying of only those memory space portions containing modified data, rather than requiring entire erase blocks to be buffered and rewritten.
Solution Approach 2:
The system introduces dynamic management of memory space portions, where the granularity of management adapts between erase block level and memory space portion level. This dynamic approach allows the buffer to operate at optimal efficiency for small updates while maintaining the simplicity of erase block management for larger operations.
Data Source
AI summary
A method of managing a non-volatile memory module, the method may include: receiving data sectors during a set of at least one write transactions; selecting, out of the currently buffered portions, to-be-merged memory space portions and to-be-cleaned memory space portions; merging, for each to-be-merged memory space portion and before the buffer becomes full, data sectors that belong to the to-be-merged memory space portion into a sequential portion of the non-volatile memory module, wherein the sequential portion differs from the buffer; and copying, for each to-be-cleaned memory space and before the buffer becomes full, data sectors that belong to the to-be-cleaned memory space portion into a buffer block of the buffer.


