Storage Controller Flush Optimization via Delayed Acknowledgment

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Storage systems face inefficiencies in flush operations due to high latency and reduced throughput when sending a 'flush command' to move data from volatile to non-volatile memory, as they often acknowledge command completion before actual execution, leading to suboptimal pipeline performance and reduced capacity utilization.

Innovation Solution

Implementing a controller that delays the execution of the flush command after sending a confirmation to the host, allowing additional data to be stored in the cache before writing to non-volatile memory, thereby increasing the chances of a full page write and optimizing system throughput.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If the storage system sends command completion signal immediately after receiving write command, then the response speed to host is improved, but data integrity cannot be guaranteed as data may still be stored in volatile memory

Engineering Contradiction:
Improveresponse speedVSAvoiddata integrity
Core Design Contradiction:
SpeedVSReliability

Solution Approach 1:

The storage system performs preliminary actions by storing data in volatile write cache and sending command completion signal before actual data is written to non-volatile memory. This allows the system to maintain high response speed while ensuring data integrity through subsequent flush operations that commit data to persistent storage.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If the storage system executes flush command immediately when received, then data integrity is ensured, but system throughput is reduced due to high latency

Engineering Contradiction:
Improvedata integrityVSAvoidsystem throughput
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The system performs preliminary flushing operations by identifying candidate data in volatile cache that can be safely flushed to non-volatile memory. By proactively flushing data before host requests and using delayed acknowledgment mechanisms, the system ensures data integrity while minimizing the impact on throughput through optimized timing and batch operations.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The flush execution timing is made dynamic rather than static. The system adjusts when to execute flush operations based on cache state, host behavior patterns, and system workload conditions. This dynamic approach allows the system to balance between data integrity requirements and throughput optimization by flushing data at opportune moments rather than immediately upon receiving flush commands.

Inventive Principle:
Principle #15Dynamics

3Productivity

If the storage system delays flush command execution, then throughput is improved by allowing more data accumulation, but latency increases and pipeline performance deteriorates

Engineering Contradiction:
ImprovethroughputVSAvoidflush latency
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The system performs preliminary flush operations proactively before the host needs the data, using delayed acknowledgment to mask the latency. By flushing data in advance and telling the host later, the system accumulates more data for efficient batch writes to non-volatile memory, improving throughput while the delayed acknowledgment hides the time penalty from the host perspective.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The delayed acknowledgment mechanism acts as an intermediary between the actual flush execution and the host's perception of flush completion. This intermediary allows the system to decouple the timing of flush execution from host expectations, enabling throughput optimization through delayed flush operations while maintaining the illusion of immediate response for the host.

Inventive Principle:
Principle #24Intermediary (Mediator)

4Productivity

If the storage system acknowledges flush command before execution, then pipeline performance is optimized, but the risk of data loss increases in case of power failure

Engineering Contradiction:
Improvepipeline performanceVSAvoiddata safety
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The system performs preliminary flush operations and uses delayed acknowledgment to optimize pipeline performance. By proactively flushing data and acknowledging completion after a delay, the system improves throughput while the delayed acknowledgment provides a safety window where the system can detect power failures and trigger recovery procedures before committing to the acknowledgment.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The delayed acknowledgment mechanism introduces feedback timing that allows the system to monitor system state between flush execution and acknowledgment. This feedback loop enables the system to detect power failures or errors during the delay period and take corrective actions, such as re-flushing data or notifying the host of potential data loss, thereby maintaining data safety while preserving pipeline performance benefits.

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS10289552B2Storage system and method for flush optimization
Publication Date: 2019.05.14 SANDISK TECHNOLOGIES LLC
  • US10289552B2 patent drawing
  • US10289552B2 patent drawing
  • US10289552B2 patent drawing

AI summary

A storage system and method are provided for flush optimization. In one embodiment, a storage system is provided comprising a cache, a non-volatile memory, and a controller. The controller is configured to: store, in the cache, data received from a host and to be written in the non-volatile memory; receive a command from the host to move the data stored in the cache into the non-volatile memory; without having executed the command, send a confirmation to the host that the command was executed; and execute the command after sending the continuation to the host.