Command Queue Order Adjustment in Data Storage Devices
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Host system firmware designs often degrade performance in data storage devices by transitioning sequentially executed commands to random execution modes, such as from read look ahead (RLA) to normal or fast read, due to internal reordering algorithms, leading to decreased performance.
Innovation Solution
Implementing a completion order adjustment module that stores command queue IDs in an array to maintain sequential execution order, searching for and waiting until all sequential commands are processed before transferring them, and transferring non-sequential commands immediately.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If the host system firmware uses internal reordering algorithms to manage command queue workload patterns, then command queue management becomes more flexible, but sequential command execution is degraded and performance decreases
Solution Approach 1:
The invention segments the command processing into distinct phases: command reception with queue ID storage, command execution, and completion order adjustment. The completion order adjustment module separately handles sequential command reordering, allowing the execution phase to be optimized independently while maintaining sequential integrity for RLA commands.
Solution Approach 2:
The completion order adjustment module acts as an intermediary between the command execution phase and the host system. It receives processed commands, reorders sequential commands based on queue ID sequence, and presents them to the host in the correct order, thereby mediating between execution flexibility and sequential requirements.
2Speed
If commands are executed in random pattern (normal read or fast read), then execution speed increases, but sequential command patterns are lost and performance degrades over time
Solution Approach 1:
The system performs preliminary action by storing queue IDs in an array when commands are received, before execution occurs. This pre-stored queue ID sequence information is then used during the completion order adjustment phase to ensure sequential commands are returned in the correct order, maintaining reliability while allowing flexible execution.
Solution Approach 2:
The completion order adjustment module uses feedback from the processed commands to determine their sequence order. By examining the queue IDs of completed commands and comparing them against the stored sequence, the module adjusts the completion order to maintain sequential integrity for RLA commands while allowing random execution patterns for other command types.
3Measurement precision
If the host system maintains application command workload pattern tracking, then command completion tracking becomes more accurate, but command reordering causes workload pattern degradation
Solution Approach 1:
The completion order adjustment module serves as an intermediary that preserves the workload pattern information. It uses the queue ID sequence stored in the array to maintain the application command workload pattern while allowing the execution phase to optimize command processing independently.
Solution Approach 2:
The system changes the parameter of command completion ordering by using queue ID sequence information. Instead of returning commands in execution completion order, the system reorders them based on the stored queue ID sequence, thereby maintaining the workload pattern parameters while allowing flexible execution.
Data Source
AI summary
A method and system for maintaining command queue order are disclosed. According to certain embodiments, commands are read from a host, storing command queue IDs in an array that will keep the queue IDs in order. After having the queue IDs stored in the array, the commands are processed in the data storage device (DSD). After processing, the commands are provided to a completion order adjustment module that will order the commands in queue ID order for sequential commands to be returned to the host. In certain embodiments, for a sequential command, other commands of the same sequence are searched for the array and ordered with the sequential command. If a particular command of the sequence is not found, the completion order adjustment module will wait to transfer the sequence until each command of the sequence is found. For commands not part of a sequence, these commands are transferred to the host.


