Partially-Bad SLC Block Read Cache for MLC Storage
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Partially-bad blocks in storage systems, which have unreliable data storage due to faulty word lines, are often marked as unavailable but can still store data with error correction, leading to performance issues and reliability concerns, especially in client and enterprise applications where reliability is critical.
Innovation Solution
Repurpose partially-bad single-level cell (SLC) blocks as a non-volatile read cache for data stored in multi-level cell (MLC) blocks, copying data from MLC blocks to SLC blocks for faster read access, allowing data to be read from the SLC blocks while maintaining the original data in MLC blocks for reliability.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Quantity of substance
If partially-bad blocks are used to store data with error correction, then data storage capacity is improved, but reliability and performance deteriorate due to extensive error-handling requirements
Solution Approach 1:
The storage system is segmented into multiple blocks with different reliability characteristics. Good blocks store primary data while partially-bad blocks store redundant copies. This segmentation allows the system to utilize previously unusable capacity while maintaining reliability through the good blocks.
Solution Approach 2:
The system changes the operational parameters of partially-bad blocks by using them exclusively for redundant storage rather than primary data storage. This parameter change (from primary to redundant storage) allows utilization of blocks that would otherwise be discarded, improving overall storage capacity without compromising reliability.
2Quantity of substance
If data is stored in partially-bad blocks with extensive error-correction handling, then storage capacity is improved, but access speed and performance deteriorate
Solution Approach 1:
The system performs preliminary actions by pre-copying data from good blocks to partially-bad blocks before read requests arrive. This preliminary positioning of data in faster-access partially-bad blocks ensures that when read requests occur, data can be retrieved quickly without real-time error correction overhead.
Solution Approach 2:
Data is copied from good blocks to partially-bad blocks, creating redundant copies. This copying strategy allows the system to serve read requests from the partially-bad blocks (which have faster access characteristics) while the original data remains safely stored in good blocks, thus improving read performance without sacrificing reliability.
3Reliability
If partially-bad blocks are marked as unavailable, then data reliability is maintained, but storage capacity is reduced
Solution Approach 1:
Partially-bad blocks are assigned a specific universal function: storing redundant copies of data. This multi-functionality approach allows these blocks to serve a useful purpose (redundancy storage) rather than being completely discarded, thereby increasing usable storage capacity while maintaining reliability through the primary-good blocks.
Solution Approach 2:
The previously harmful characteristic of partially-bad blocks (their unreliability for primary storage) is converted into a benefit by using them specifically for redundant storage. This conversion transforms blocks that would have been discarded into valuable resources for improving overall storage capacity and reliability through redundancy.
Data Source
AI summary
A storage system has a memory with a multi-level cell (MLC) block and a partially-bad single-level cell (SLC) block. The storage system repurposes the partially-bad SLC block as a non-volatile read cache for data stored in the MLC block (e.g., cold data that is read relatively frequently) to improve performance of host reads. Because the original version of the data is still stored in the MLC block, the original version of the data can be read if there is an error in the copy of the data stored in the partially-bad SLC block, thus avoiding the need for extensive error-correction handling to account for the poor reliability of the partially-bad SLC block.


