IP Library Granted Patent US 11,914,894
Granted Patent B2
US 11,914,894 · App. 17/176,833 · Granted Feb 27, 2024

Using scheduling tags in host compute commands to manage host compute task execution by a storage device in a storage system

Inventor: Ramanathan Muthiah (Bangalore, IN)
Assignee: Western Digital Technologies, Inc.
G06F3/0659G06F3/0625G06F3/0631G06F3/0653G06F3/0673
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,914,894
App. No.
17/176,833
Granted
Feb 27, 2024
Kind
B2
Abstract

Example storage systems, storage devices, and methods provide management of idle time compute tasks from host systems. Storage devices may receive host storage commands for reading and writing host data and host compute commands for executing host compute tasks. Some host compute commands may include a scheduling tag. The storage device may operate in a storage processing state and an idle state and may selectively execute delayed host compute tasks during the idle state.

Claims (132)

1. A storage system comprising:

a storage device comprising:

a storage medium configured to store host data; and

a storage controller, comprising a processor and a memory, configured to:

receive, from a host system, host storage commands for reading and writing the host data in the storage medium;

direct, responsive to receiving host storage commands, host storage commands to a host storage command path configured to parse storage input/output operations;

receive, from the host system, host compute commands for executing, using the processor, host compute tasks, wherein:

the host compute commands each:

 target a set of host data in the storage medium;

 define a host compute operation for that host compute command; and

 include a scheduling tag as a parameter received from the host system in that host compute command; and

the host compute operation is configured to create derivative data from the set of host data;

direct, responsive to receiving host compute commands, host compute commands to a host compute command path that is distinct from the host storage command path and configured to execute host compute operations;

determine, independent of the host storage command path and the host compute command path, background task trigger conditions for background tasks configured for execution during an idle state;

determine a storage processing state for executing host storage commands;

determine the idle state for executing background tasks in an absence of pending host storage commands; and

selectively execute, based on the scheduling tag of a first host compute command, a first host compute task during the idle state.

2. The storage system of claim 1 , wherein the storage controller is further configured to:

selectively execute, based on the scheduling tag of a second host compute command, a second host compute task during the storage processing state.

3. The storage system of claim 2 , wherein:

the scheduling tag of the first host compute command indicates a delayed compute task; and

the scheduling tag of the second host compute command indicates a real-time compute task.

4. The storage system of claim 2 , wherein the storage controller is further configured to:

allocate host storage tasks from the host storage commands to a storage processing queue;

allocate background tasks to an idle state processing queue;

allocate, based on the scheduling tag of the first host compute command, the first host compute task to the idle state processing queue; and

allocate, based on the scheduling tag of the second host compute command, the second host compute task to the storage processing queue.

5. The storage system of claim 4 , wherein the storage controller is further configured to:

selectively execute, before the background tasks in the idle state processing queue, the first host compute task.

6. The storage system of claim 4 , wherein:

the idle state processing queue include a plurality of background tasks;

each background task of the plurality of background tasks includes a background task priority value;

the idle state processing queue has a queue order based on the background task priority values;

the scheduling tag of the first host compute command includes a compute task priority value; and

the storage controller is further configured to insert, based on a comparison of the compute task priority value and adjacent background task priority values of adjacent background tasks in the queue order of the idle state processing queue, the first host compute task between the adjacent background tasks in the queue order of the idle state processing queue.

7. The storage system of claim 4 , wherein the background tasks are selected from:

garbage collection tasks;

media scan tasks;

wear levelling tasks;

internal data migration tasks; and

storage device health tracking tasks.

8. The storage system of claim 4 , wherein the storage controller is further configured to:

selectively execute, responsive to the storage processing queue being empty, a portion of the first host compute task during the storage processing state.

9. The storage system of claim 2 , further comprising the host system, wherein the host system comprises:

a host processor;

a host memory;

a request handler configured to:

determine compute requests for at least one host application; and

generate, based on the compute requests, host compute commands, wherein the host compute commands include the first host compute command and the second host compute command; and

a task segregation engine configured to:

determine the first host compute task; and

add, to the first host compute command, the scheduling tag of the first host compute command.

10. The storage system of claim 9 , wherein:

the request handler is further configured to generate a plurality of delayed host compute tasks;

the plurality of delayed host compute tasks includes the first host compute task;

the task segregation engine is further configured to add a delayed scheduling tag to each host compute command for each delayed compute task of the plurality of delayed host compute tasks; and

the storage controller is further configured to:

accumulate, during the storage processing state, background tasks in an idle state processing queue; and

accumulate, during the storage processing state, the plurality of delayed host compute tasks in the idle state processing queue.

11. The storage system of claim 10 , wherein:

the storage controller is further configured to:

receive control commands for changing among:

the storage processing state;

the idle state; and

a power saving state;

determine, based on the accumulated background tasks and the accumulated plurality of delayed host compute tasks in the idle state processing queue, an idle processing time; and

send the idle processing time to the host system;

the host system further comprises a time manager; and

the time manager is configured to:

monitor an idle state elapsed time during the idle state; and

delay a control command for the power saving state until the idle state elapsed time meets the idle processing time.

12. A computer-implemented method comprising:

receiving, by a storage device and from a host system, host storage commands for reading and writing host data in a storage medium of the storage device;

directing, responsive to receiving host storage commands, host storage commands to a host storage command path configured to parse storage input/output commands;

receiving, by the storage device and from the host system, host compute commands for executing host compute tasks, wherein:

the host compute commands each:

target a set of host data in the storage medium;

define a host compute operation for that host compute command; and

include a scheduling tag as a parameter received from the host system in that host compute command; and

the host compute operation is configured to create derivative data from the set of host data;

directing, responsive to receiving host compute commands, host compute commands to a host compute command path that is distinct from the host storage command path and configured to execute host compute operations;

determining, independent of the host storage command path and the host compute command path, background task trigger conditions for background tasks configured for execution during an idle state;

determining, by the storage device, a storage processing state for executing host storage commands;

determining, by the storage device, the idle state for executing background tasks in an absence of pending host storage commands;

selectively executing, by the storage device and based on the scheduling tag of a first host compute command, a first host compute task during the idle state; and

selectively executing, by the storage device and based on the scheduling tag of a second host compute command, a second host compute task during the storage processing state.

13. The computer-implemented method of claim 12 , further comprising:

allocating, by the storage device, host storage tasks from the host storage commands to a storage processing queue;

allocating, by the storage device, background tasks to an idle state processing queue;

allocating, by the storage device and based on the scheduling tag of the first host compute command, the first host compute task to the idle state processing queue; and

allocating, by the storage device and based on the scheduling tag of the second host compute command, the second host compute task to the storage processing queue.

14. The computer-implemented method of claim 13 , further comprising:

selectively executing, by the storage device and before executing the background tasks in the idle state processing queue, the first host compute task.

15. The computer-implemented method of claim 13 , further comprising:

ordering, by the storage device and based on a background task priority value for each background task of a plurality of background tasks, the idle state processing queue in a queue order; and

inserting, by the storage device and based on a comparison of a compute task priority value and adjacent background task priority values of adjacent background tasks in the queue order of the idle task processing queue, the first host compute task between the adjacent background tasks in the queue order of the idle task processing queue, wherein the scheduling tag of the first host compute command includes the compute task priority value.

16. The computer-implemented method of claim 13 , further comprising:

selectively executing, by the storage device and responsive to the storage processing queue being empty, a portion of the first host compute task during the storage processing state.

17. The computer-implemented method of claim 12 , further comprising:

determining, by the host system, compute requests for at least one host application;

generating, by the host system and based on the compute requests, host compute commands, wherein the host compute commands include the first host compute command and the second host compute command;

adding, by the host system and to the first host compute command, the scheduling tag of the first host compute command;

adding, by the host system and to the second host compute command, the scheduling tag of the second host compute command; and

sending, by the host system, the host compute commands to the storage device.

18. The computer-implemented method of claim 17 , further comprising:

generating, by the host system, a plurality of delayed host compute tasks, wherein the plurality of delayed host compute tasks includes the first host compute task;

adding, by the host system, a delayed scheduling tag to each host compute command for each delayed compute task of the plurality of delayed host compute tasks;

accumulating, by the storage device and during the storage processing state, background tasks in an idle state processing queue; and

accumulating, by the storage device and during the storage processing state, the plurality of delayed host compute tasks, in the idle state processing queue.

19. The computer-implemented method of claim 18 , further comprising:

receiving, by the storage device and from the host system, control commands for changing among:

the storage processing state;

the idle state; and

a power saving state;

determining, based on the accumulated background tasks and the accumulated plurality of delayed host compute tasks in the idle state processing queue, an idle processing time;

monitoring, by the host system, an idle state elapsed time for the storage device during the idle state; and

delaying, by the host system, a control command for the power saving mode until the idle state elapsed time meets the idle processing time.

20. A system comprising:

a storage device comprising a storage medium configured to store host data;

means for receiving, from a host system, host storage commands for reading and writing the host data in the storage medium;

means for directing, responsive to receiving host storage commands, host storage commands to a host storage command path configured to parse storage input/output commands;

means for receiving, from a host system, host compute commands for executing host compute tasks, wherein:

the host compute commands each:

target a set of host data in the storage medium;

define a host compute operation for that host compute command; and

include a scheduling tag as a parameter received from the host system in that host compute command; and

the host compute operation is configured to create derivative data from the set of host data;

means for directing, responsive to receiving host compute commands, host compute commands to a host compute command path that is distinct from the host storage command path and configured to execute host compute operations;

means for determining, independent of the host storage command path and the host compute command path, background task trigger conditions for background tasks configured for execution during an idle state;

means for determining a storage processing state for executing host storage commands;

means for determining the idle state for executing background tasks in an absence of pending host storage commands; and

means for selectively executing, based on the scheduling tag of a first host compute command, a first host compute task during the idle state.

Assignments (10)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
RELEASE OF SECURITY INTEREST AT REEL 056285 FRAME 0292 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058982/0001 →
SECURITY INTEREST Recorded May 19, 2021
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 056285/0292 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2021
From: MUTHIAH, RAMANATHAN
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 055296/0344 →
Continuity (2)
Provisional Application 63122541 · Dec 8, 2020
Related Publication 20220179585A1 · Jun 9, 2022