Storage Device Controller Execution Condition Embedded in Command Header
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
In storage devices, particularly those using Universal Flash Storage (UFS) protocols, there is a need for improved processes to ensure that commands are executed only when the storage device is in a specific state, as executing tasks while in certain states can lead to poor data-path pipeline utilization and task blocking.
Innovation Solution
The implementation of an execution condition embedded in a command or request, using an extra header segment (EHS) within a UFS protocol information unit (UPIU), which specifies the required state or completion of tasks before execution, allowing the storage device controller to parse and execute tasks based on these conditions, thereby preventing task blocking and optimizing pipeline utilization.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Speed
If tasks are executed without checking execution conditions, then execution speed is improved, but task blocking and poor pipeline utilization occur
Solution Approach 1:
The execution condition is checked in advance before task execution is initiated. The storage device controller parses the execution condition from the command header segment before sending the task to execution, ensuring that tasks are only executed when the storage device is in the required state, thereby preventing task blocking while maintaining efficient pipeline utilization
Solution Approach 2:
The system implements a feedback mechanism where the storage device controller continuously monitors the internal state of the storage device and compares it against the execution conditions specified in incoming commands. This feedback loop ensures that tasks are executed only when conditions are met, optimizing both execution speed and pipeline utilization by avoiding premature execution that would cause blocking
2Reliability
If execution conditions are checked for every task, then task execution accuracy is improved, but processing overhead increases
Solution Approach 1:
The execution condition checking functionality is extracted as an optional feature embedded in the command header segment rather than being a mandatory part of every task command. Commands can include or exclude the execution condition field based on their specific requirements, allowing the system to check conditions only when necessary, thereby maintaining execution accuracy for tasks that need it while minimizing processing overhead for tasks that don't require condition checking
3Productivity
If multiple tasks are queued without state checking, then queue throughput is improved, but task execution reliability deteriorates
Solution Approach 1:
Tasks are queued with their execution conditions attached in advance. Before execution, the controller parses and evaluates the execution condition for each queued task against the current storage device state. This preliminary condition checking ensures that only tasks with met execution conditions proceed to execution, maintaining execution reliability while allowing multiple tasks to be queued for efficient throughput
Solution Approach 2:
Each task in the queue carries its own execution condition information embedded in its command structure. The storage device controller autonomously evaluates these self-contained execution conditions without requiring external intervention or additional signaling, enabling reliable task execution while maintaining high queue throughput through automated condition assessment
Data Source
AI summary
A storage device includes a non-volatile memory (NVM) and a storage device controller. The storage device controller includes a NVM interface coupled to the NVM and one or more task queues. The storage device controller is operable to pick a task from one or more queues of the storage device. The task is parsed based upon presence of an extra header segment with an execution condition. The task without the extra header segment is sent to execution. Whether the execution condition of the extra header segment of the task is met is determined. The task with the execution condition met is sent to execution. The task with the execution condition unmet is postponed.


