Task readiness for queued storage tasks
AssigneeWestern Digital Technologies, Inc.
InventorDinesh Agarwal
Life of this patent
Estimating the term…
Abstract
One or more control circuits of a storage system are configured to intelligently set a task readiness indicator for tasks on a task command queue. A memory controller may divide each of the tasks into one or more chunks. The memory controller initiates processing of at least some of the chunks for at least two tasks and determines a task readiness factor each of the tasks based on how far respective chunks have progressed in the processing. The memory controller sets a ready indicator in a task status register for a selected task based on the task readiness factor of the tasks. Therefore, task latency may be reduced. In one aspect, the memory controller allocates a ring buffer to chunks of an executing task. This ring buffer may assure that there will always be memory for the chunks of the task.
Claims20
An apparatus comprising:
- non-volatile memory;
- a task command queue;
- a task status register;
- a data buffer;
- an interface configured to receive tasks from a host to access the non-volatile memory;
- and
- one or more control circuits in communication with the non-volatile memory, the task command queue, the task status register, the data buffer, and the interface, the one or more control circuits configured to:
- add, to the task command queue, a plurality of tasks from the host to access the non-volatile memory;
- divide the tasks into one or more chunks;
- initiate processing of at least two of the tasks, including initiate data access from the non-volatile memory for at least one chunk for each of the at least two tasks;
- determine a task readiness factor for respective tasks based on how far chunks in the respective task have progressed in the processing;
- and
- set a task ready indicator in the task status register for a selected task based on the task readiness factor of the respective tasks.
A method of operating a memory system, the method comprising:
- placing a plurality of tasks from a host to access non-volatile memory on a memory die in the memory system onto a task command queue;
- dividing each of the tasks into one or more chunks;
- initiating access of one or more chunks for at least two of the tasks from the non-volatile memory, including sending a command to the memory die to access data for at least one chunk for each of the at least two tasks;
- determining a task readiness factor for each of the plurality of tasks based on how far accessing of respective chunks has progressed from initiating access of the respective chunk to having the data for the respective chunk in a data buffer ready to transfer to the host;
- setting a task readiness indicator for a selected task in a task status register based on the task readiness factor of each of the plurality of tasks;
- and
- providing data for the selected task from the data buffer to the host in response to an execute command from the host.
A non-volatile memory system, comprising:
- a memory die having non-volatile memory;
- command processing means for:
- i) placing a plurality of tasks from a host to access the non-volatile memory onto a task command queue;
- and
- ii) dividing each of the tasks into one or more chunks;
- command sequencing means for initiating access of one or more chunks for at least two of the tasks from the non-volatile memory, including means for sending a command to the memory die to access data for at least one chunk for each of the at least two tasks;
- task metadata means for determining a task readiness factor for each of the plurality of tasks based on how far accessing of respective chunks has progressed from initiating access of the respective chunk to having the data for the respective chunk in a data buffer ready to transfer to the host;
- task status register setting means setting a task readiness indicator for a selected task in a task status register based on the task readiness factor of each of the plurality of tasks;
- and
- task execution means for providing data for the selected task from the data buffer to the host in response to a execute command from the host.
Dependencies are inferred from the claim text.