Dual-Mode Data Integrity Check in Non-Volatile Storage
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Non-volatile storage systems face challenges in efficiently detecting and correcting data integrity issues, particularly in closed blocks where excessive checks reduce performance and in open blocks where limited recovery is possible using XOR data.
Innovation Solution
Implementing a dual-mode data integrity check system where closed blocks are initially checked, and upon exceeding a threshold of failed word lines, the system switches to a rolling post-program data integrity check in open blocks, focusing on susceptible word lines and adapting the list of checked word lines based on program or read failures.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If data integrity checks are performed in closed blocks, then data reliability is improved, but system performance deteriorates due to excessive checks
Solution Approach 1:
The patent segments the memory structure into closed blocks (fully programmed) and open blocks (partially programmed), applying different integrity check strategies to each. Closed blocks undergo periodic checks while open blocks receive rolling checks after program completion, optimizing the balance between reliability and performance by checking only where necessary.
Solution Approach 2:
The system dynamically adapts its integrity checking behavior based on block state. The controller transitions between checking closed blocks and performing rolling checks on open blocks, adjusting the checking strategy in real-time based on whether blocks are fully programmed or still being written to, thereby optimizing performance while maintaining reliability.
2Reliability
If rolling post-program data integrity checks are performed in open blocks, then early detection of data integrity issues is improved, but device complexity increases
Solution Approach 1:
The patent implements preliminary rolling integrity checks immediately after programming open blocks before data integrity issues can manifest as read failures. This early detection action is performed automatically by the controller as part of the normal programming sequence, adding reliability without requiring complex external monitoring systems.
Solution Approach 2:
The memory system performs its own integrity checking using built-in controllers and test circuits. The rolling integrity checks are executed automatically by the system's internal resources after programming, eliminating the need for external testing equipment or complex additional hardware while ensuring early detection of data integrity issues.
3Measurement precision
If the list of checked word lines is adapted based on failures, then detection precision is improved, but measurement time increases
Solution Approach 1:
The patent implements feedback-based adaptation where the controller monitors the results of integrity checks and uses this information to adjust the list of word lines to be checked in subsequent operations. When failures are detected, the system updates its checking strategy to focus on affected areas, improving detection precision while managing time through targeted rather than exhaustive checking.
Data Source
AI summary
Technology is disclosed herein for checking data integrity in a non-volatile storage system. The storage system may operate in a first mode in which a data integrity check is performed in closed blocks until more than an allowed number of word lines fail the data integrity check. After a closed block has more than the allowed number of the word lines fail the data integrity check, then the storage system may operate in a second mode in which a data integrity check is performed in open blocks. The allowed number of word lines may be equal to the number of word lines that can be recovered by XOR data in the event data is uncorrectable by an ECC engine. The data integrity check of a target word line in an open block may be performed after programming a word line adjacent to the target word line in the open block.


