Storage Controller Queue Threshold Flow Control
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Flash storage devices face performance issues due to queue overflow when handling large sequential read commands, which prevents error handling requests from being processed, leading to command timeouts and the need for a power cycle.
Innovation Solution
The storage device controller dynamically divides large read commands into manageable chunks based on queue utilization and workload, refraining from processing additional read requests when the queue reaches a threshold to prevent overflow, allowing for simultaneous handling of short random commands.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Quantity of substance
If the queue size is increased to accommodate all read requests for large read commands, then the queue can handle more data, but error handling requests cannot be processed and the device requires power cycling
Solution Approach 1:
The patent segments the queue into multiple separate queues: a read request queue for data read operations and an error handling queue for error status reporting and parity information requests. This segmentation allows error handling requests to be processed independently without being blocked by the volume of read requests, resolving the contradiction between queue capacity and error handling capability.
2Productivity
If the queue is filled with read requests for large sequential commands, then read throughput is improved, but command timeout and blocked processing occur
Solution Approach 1:
The patent implements dynamic queue management where the controller monitors queue status and dynamically adjusts read request processing. When the read request queue reaches a threshold capacity, the controller pauses accepting new read requests and prioritizes error handling requests. This dynamic adjustment maintains high read throughput during normal operation while preventing command timeouts and blocked processing when the queue is full.
3Adaptability or versatility
If the queue is shared between read requests and error handling requests, then resource utilization is improved, but error handling requests are blocked when the queue is full
Solution Approach 1:
The patent segments the shared queue into separate dedicated queues: one for read requests and another for error handling requests. This segmentation maintains the adaptability of resource utilization while ensuring that error handling requests have dedicated queue space and are not blocked by the volume of read requests, thereby preserving error handling priority.
4Productivity
If large sequential read commands are processed continuously, then data transfer efficiency is improved, but the device stalls and requires reset
Solution Approach 1:
The patent implements periodic checks of the read request queue status during continuous processing of large sequential read commands. When the queue reaches a threshold capacity, the controller periodically pauses read request acceptance to allow error handling requests to be processed. This periodic action maintains high data transfer efficiency during normal operation while preventing device stalls and ensuring operational continuity.
Data Source
AI summary
Aspects of a storage device are provided which use flow control to prevent stalling during processing of read requests for a large read command. A controller of the storage device receives a read command for data from a host device, stores in a queue read requests for a portion of the data, and reads the portion of the data from a memory based on the read requests. The controller may store other read requests in the queue for other portions of the data when a number of read requests in the queue does not meet a threshold. Otherwise, the controller refrains from storing other read requests in the queue for other portions of the data when the number of read requests in the queue meets the threshold. The controller may operate similarly with subsequent sequential commands, but may continue to store read requests in the queue for subsequent random commands.


