Non-blocking flush mechanism for SSD data persistence
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing data storage systems face challenges in efficiently and non-disruptively transferring data from volatile memory to non-volatile memory, particularly in ensuring data persistence without interrupting ongoing operations or requiring explicit flush commands.
Innovation Solution
Implementing a non-blocking 'virtual flush' mechanism that guarantees only a predefined amount of recent data remains uncommitted in volatile memory, allowing hosts to continue issuing commands without explicit flush instructions, and enabling read operations during write flush operations by separating data into portions or streams.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If data is transferred immediately from volatile memory to non-volatile storage using traditional flush commands, then data persistence is guaranteed, but ongoing storage operations are blocked and system performance deteriorates
Solution Approach 1:
The patent segments the data buffer into multiple portions and processes flush operations on individual portions rather than blocking the entire buffer. This allows different segments to be flushed independently while other segments continue to accept writes, resolving the contradiction between data persistence and operational throughput by enabling partial flush completion without system-wide blocking
Solution Approach 2:
The patent implements preliminary data placement in volatile memory with pre-allocation of buffer portions before flush operations are needed. By pre-organizing data into flushable portions and maintaining a ready-state buffer structure, the system can immediately begin flush operations without waiting for data accumulation or reorganization, thus maintaining both persistence guarantees and operational performance
2Reliability
If explicit flush commands are issued to commit data to non-volatile memory, then data commitment is ensured, but the host must wait for flush completion before issuing subsequent commands
Solution Approach 1:
The patent introduces an intermediary acknowledgment mechanism where the storage device confirms to the host that data has been placed in the volatile buffer, without requiring the host to wait for actual non-volatile memory completion. This intermediary state allows the host to continue operations while the storage device handles async flush operations, eliminating host waiting time while maintaining data commitment through buffer guarantees
Solution Approach 2:
The patent enables continuous host operations by decoupling the host's command issuance from the actual flush completion timeline. The storage device maintains continuous data acceptance in volatile memory while performing non-blocking flush operations in the background, ensuring that useful actions (data commitment and host processing) continue simultaneously without interruption or waiting
3Productivity
If data is buffered in volatile memory before writing to non-volatile storage, then write performance is improved, but data loss risk increases in case of power failure
Solution Approach 1:
The patent segments the volatile buffer into multiple independent portions with individual flush tracking. By flushing portions independently and maintaining metadata about which portions are committed, the system can survive power failures more gracefully - only unflushed portions are at risk, while flushed portions are protected. This segmentation reduces overall data loss risk while maintaining high write performance through continued buffering
Solution Approach 2:
The patent implements feedback mechanisms where the storage device continuously tracks and reports the state of buffered data (committed vs. uncommitted portions) to the host. This feedback enables the host to make informed decisions about data safety and can trigger selective flush operations based on risk assessment, thereby reducing data loss risk while preserving write performance through intelligent buffer management
Data Source
AI summary
A computing system includes a storage device and a host. The storage device includes a volatile memory and a non-volatile memory, and is configured to receive data for storage in the non-volatile memory, to buffer at least some of the received data temporarily in the volatile memory, and to guarantee that any data, which is not part of a predefined amount of data that was most recently received, has been committed to the non-volatile memory. The host is configured to send the data for storage in the storage device, and, in response to a need to commit given data to the non-volatile memory, to send the given data to the storage device followed by at least the predefined amount of additional data.

