IP Library Granted Patent US 11,915,047
Granted Patent B2
US 11,915,047 · App. 16/917,544 · Granted Feb 27, 2024

Managing storage device compute operations

Inventor: Ramanathan Muthiah (Bangalore, IN)
Assignee: Western Digital Technologies, Inc.
G06F9/4887G06F3/0604G06F3/0659G06F3/0673G06F9/485
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,915,047
App. No.
16/917,544
Filed
Jun 30, 2020
Granted
Feb 27, 2024
Kind
B2
Art Unit
2196
USPC
718/100
Abstract

Example storage systems, storage devices, and methods provide novel management of storage device compute operations using intermediate results, such as approximate or partial results, to optimize processing flow. An example system has a storage medium and a storage controller coupled to the storage medium that is configured to evaluate a processing capability of a storage device and determine, based on the processing capability, that only a portion of a multi-stage compute operation is completable within a requested processing timeframe. The storage processor may further be configured to determine and provide an intermediate result, which may include an approximation or a partial result of the multi-stage compute operation. The intermediate result may be used by a client to manage its own processing while it awaits a final processing result.

Claims (86)

1. A system, comprising:

a storage medium; and

a storage controller coupled to the storage medium and configured to:

execute a state machine to monitor one or more operational parameters of a storage device;

evaluate, based on the one or more operational parameters from the state machine, a processing capability of the storage device;

determine, based on the processing capability and compute requirements of a compute operation, that only a portion of the compute operation is completable by the storage device within a requested processing timeframe;

execute, by the storage device, the portion of the compute operations;

determine, based on the executed portion of the compute operation within the requested processing timeframe, an intermediate result, wherein:

the compute operation is a multi-stage compute operation comprised of a plurality of stages; and

the executed portion of the multi-stage compute operation includes at least one stage of the plurality of stages of the multi-stage compute operation;

provide the intermediate result;

continue to process a remaining portion of the multi-stage compute operation within a timeframe that is longer than the requested processing timeframe;

determine a final processing result; and

provide the final processing result.

2. The system of claim 1 , wherein the intermediate result is an approximation of a final processing result.

3. The system of claim 1 , wherein the intermediate result is a partial result determined by processing some of the plurality of stages of the multi-stage compute operation.

4. The system of claim 1 , wherein:

the storage controller is further configured to receive, responsive to the intermediate result, a finish compute request; and

continuing to process the remaining portion of the multi-stage compute operation is responsive to receiving the finish compute request.

5. The system of claim 1 , further comprising the storage device including the storage medium and the storage controller, wherein:

the storage device is configured to couple via a network to a client; and

the client is a consumer computing device, a host system, or an embedded system.

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

receive a compute request from the client, wherein the compute request includes the requested processing timeframe.

7. The system of claim 6 , further comprising:

the client, wherein the client is the host system and is configured to tag the compute request with the requested processing timeframe.

8. The system of claim 1 , wherein determining that only a portion of the compute operation is completable within the requested processing timeframe uses at least one predetermined threshold to evaluate the one or more operational parameters.

9. The system of claim 1 , wherein the one or more operational parameters include:

a storage processing load;

a processing unit load;

a cache level;

a hardware capability;

a garbage collection load;

a memory state; and/or

a processing queue level.

10. The system of claim 1 , further comprising:

a compute manager in communication with the storage controller configured to:

determine, based on the intermediate result, to unroll the compute operation;

cancel the compute operation; and

unroll changes from executing the portion of the compute operation.

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

receive a wait request responsive to providing the intermediate result; and

pause the processing of the remaining portion of the compute operation until a subsequent request that instructs the storage controller to continue processing the compute operation is received.

12. A computer-implemented method, comprising:

executing a state machine to monitor one or more operational parameters of a storage device;

evaluating, based on the one or more operational parameters from the state machine, a processing capability of the storage device;

determining, based on the processing capability of the storage device and compute requirements of a compute operation, only a portion of the compute operation is completable by the storage device within a requested processing timeframe;

executing, by the storage device, the portion of the compute operations;

determining, based on the executed portion of the compute operation within the requested processing timeframe, an intermediate result;

providing the intermediate result;

receiving a wait request responsive to providing the intermediate result; and

pausing a processing of a remaining portion of the compute operation until a subsequent request that instructs to continue processing the compute operation is received.

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

the compute operation is a multi-stage compute operation comprised of a plurality of stages; and

the intermediate result is:

an approximation of a final processing result; or

a partial result determined by processing some of the plurality of stages of the multi-stage compute operation.

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

processing at least one stage of the plurality of stages of the multi-stage compute operation within the requested processing timeframe, wherein the intermediate result is the partial result determined based on the executed portion of the multi-stage compute operation.

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

continuing to process a remaining portion of the multi-stage compute operation within a timeframe that is longer than the requested processing timeframe;

determining a final processing result; and

providing the final processing result.

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

receiving a compute request from a client, wherein the compute request includes the requested processing timeframe.

17. The computer-implemented method of claim 16 , wherein the client is a consumer computing device, a host system, or an embedded system.

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

evaluating the one or more operational parameters using at least one predetermined threshold to determine that only a portion of the compute operation is completable within the requested processing timeframe.

19. The computer-implemented method of claim 12 , wherein the operational parameters include:

a storage processing load;

a processing unit load;

a cache level;

a hardware capability;

a garbage collection load;

a memory state; and/or

a processing queue level.

20. A system, comprising:

means for executing a state machine to monitor one or more operational parameters of a storage device;

means for evaluating, based on the one or more operational parameters from the state machine, a processing capability of the storage device;

means for determining, based on the processing capability of the storage device and compute requirements of a compute operation, only a portion of the compute operation is completable by the storage device within a requested processing timeframe;

means for executing, by the storage device, the portion of the compute operations;

means for determining, based on the executed portion of the compute operation within the requested processing timeframe, an intermediate result;

means for providing the intermediate result;

means for determining, based on the intermediate result, to unroll the compute operation;

means for cancelling the compute operation; and

means for unrolling changes from executing the executed portion of the compute operation.