IP Library Granted Patent US 11,625,192
Granted Patent B2
US 11,625,192 · App. 16/908,035 · Granted Apr 11, 2023

Peer storage compute sharing using memory buffer

Inventor: Ramanathan Muthiah (Bangalore, IN)
Assignee: Western Digital Technologies, Inc.
G06F3/0659G06F3/0604G06F3/067G06F3/0656G06F9/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,625,192
App. No.
16/908,035
Granted
Apr 11, 2023
Kind
B2
Abstract

Example storage systems, storage devices, and methods provide sharing of data function processing using a memory buffer to coordinate between peer storage devices. A peer storage device acts as master to determine a plurality of compute tasks associated with a host function, determine peer storage devices and assign them compute tasks, and store the task compute configuration for each compute task in the buffer memory for access by the peer storage devices. Results of the peer compute tasks may be returned to the host.

Claims (136)

1. A storage device, comprising:

a storage medium;

a remotely accessible buffer memory configured for direct memory access by a plurality of peer storage devices over a network fabric; and

a processor coupled to the storage medium and the remotely accessible buffer memory, the processor configured to:

determine a plurality of compute tasks associated with a remotely issued host function;

determine a target peer storage device from the plurality of peer storage devices;

assign a peer compute task from the plurality of compute tasks to the target peer storage device;

store a first task compute configuration in the remotely accessible buffer memory for access by the target peer storage device, wherein the target peer storage device is configured to:

process first task input data using the first task compute configuration; and

return first task output data;

execute a master compute task from the plurality of compute tasks using a second task compute configuration to process second task input data and return second task output data;

store the second task output data;

receive, from the target peer storage device, the first task output data; and

determine, based on the first task output data and the second task output data, a host function result.

2. The storage device of claim 1 , wherein the processor is further configured to store the first task input data in the remotely accessible buffer memory for access by the target peer storage device.

3. The storage device of claim 1 , wherein the processor is further configured to receive, from the target peer storage device, the first task output data in the remotely accessible buffer memory.

4. The storage device of claim 1 , wherein:

the target peer storage device is a first target peer storage device from the plurality of peer storage devices;

the peer compute task is a first peer compute task in a first set of parallel tasks from the plurality of compute tasks associated with the remotely issued host function;

the processor is further configured to:

determine the first set of parallel tasks;

determine a second set of parallel tasks from the plurality of compute tasks associated with the remotely issued host function;

determine a second target peer storage device from the plurality of peer storage devices;

assign a second peer compute task in the second set of parallel tasks to the second target peer storage device; and

store a third task compute configuration associated with the second peer compute task in the remotely accessible buffer memory for access by the second target peer storage device; and

the second target peer storage device is configured to:

process third task input data using the third task compute configuration;

execute the second set of parallel tasks in parallel with the first target peer storage device executing the first set of parallel tasks; and

return third task output data.

5. The storage device of claim 4 , wherein:

the processor is further configured to:

receive, from the first target peer storage device, the first task output data in the remotely accessible buffer memory; and

receive, from the second target peer storage device, the third task output data in the remotely accessible buffer memory; and

determining the host function result is further based on the third task output data.

6. The storage device of claim 1 , wherein

the processor is further configured to:

determine a first set of parallel tasks that includes the peer compute task;

determine a second set of parallel tasks that includes the master compute task; and

execute the second set of parallel tasks in parallel with the target peer storage device executing the first set of parallel tasks.

7. The storage device of claim 1 , wherein:

the peer compute task is a first peer compute task in a first set of sequential tasks from the plurality of compute tasks associated with the remotely issued host function;

the processor is further configured to:

determine the first set of sequential tasks;

determine a second set of sequential tasks from the plurality of compute tasks associated with the remotely issued host function;

receive, from the target peer storage device, the first task output data in the remotely accessible buffer memory;

assign a second peer compute task in the second set of sequential tasks to the target peer storage device;

store a third task compute configuration associated with the second peer compute task in the remotely accessible buffer memory for access by the target peer storage device; and

receive, from the target peer storage device, third task output data in the remotely accessible buffer memory;

determining the host function result is further based on the third task output data; and

the target peer storage device is further configured to:

process, after returning the first task output data, third task input data using the third task compute configuration; and

return third task output data.

8. The storage device of claim 1 , wherein the processor is further configured to:

assign at least one peer compute task of the plurality of compute tasks to each peer storage device of a number of peer storage devices in the plurality of peer storage devices; and

allocate, in the remotely accessible buffer memory, a peer compute task space for each peer storage device of the number of peer storage devices, wherein each peer compute task space is configured to include at least one compute task configuration space.

9. The storage device of claim 8 , wherein each peer compute task space is further configured to include:

at least one input data space; and

at least one output data space.

10. The storage device of claim 1 , wherein:

the storage medium comprises a non-volatile memory device for a first solid-state drive;

the remotely accessible buffer memory is at least a portion of a command memory buffer that is not allocated for host storage data transfer;

the target peer storage device:

includes a non-volatile memory device for a second solid-state drive; and

is further configured to store intermediate results of the peer compute task on the non-volatile memory device for the second solid-state drive; and

the storage device is configured to return, to a host system, the host function result.

11. A computer-based method, comprising:

receiving, by a master peer storage device and from a host system, a remotely issued host function request, wherein the master peer storage device is from a plurality of peer storage devices configured for peer communication over a network fabric;

determining, by the master peer storage device, a plurality of compute tasks associated with the remotely issued host function request;

determining, by the master peer storage device, a target peer storage device from the plurality of peer storage devices;

assigning, by the master peer storage device, a peer compute task from the plurality of compute tasks to the target peer storage device;

storage device, wherein the peer compute task space includes an assigned memory block in the remotely accessible buffer memory;

storing, by the master peer storage device, a first task compute configuration in a remotely accessible buffer memory for processing, by the target peer storage device, first task input data using the first task compute configuration;

executing, by the master peer storage device, a master compute task from the plurality of compute tasks using a second task compute configuration to process second task input data and return second task output data;

storing, by the master peer storage device, the second task output data;

receiving, by the master peer storage device and from the target peer storage device, first task output data;

determining, by the master peer storage device and based on the first task output data and the second task output data, a host function result; and

returning, by the master peer storage device and to the host system, the host function result.

12. The computer-based method of claim 11 , further comprising:

storing the first task input data in the remotely accessible buffer memory for access by the target peer storage device.

13. The computer-based method of claim 11 , further comprising:

storing, by the target peer storage device, the first task output data in the remotely accessible buffer memory.

14. The computer-based method of claim 11 :

wherein:

the target peer storage device is a first target peer storage device from the plurality of peer storage devices;

the peer compute task is a first peer compute task in a first set of parallel tasks from the plurality of compute tasks associated with the remotely issued host function request; and

determining the host function result is further based on third task output data; and

further comprising:

determining, by the master peer storage device, the first set of parallel tasks;

determining, by the master peer storage device, a second set of parallel tasks from the plurality of compute tasks associated with the remotely issued host function request;

determining, by the master peer storage device, a second target peer storage device from the plurality of peer storage devices;

assigning, by the master peer storage device, a second peer compute task in the second set of parallel tasks to the second target peer storage device;

storing, by the master peer storage device, a third task compute configuration associated with the second peer compute task in the remotely accessible buffer memory for access by the second target peer storage device;

processing, by the second target peer storage device, third task input data using the third task compute configuration; and

receiving, by the master peer storage device and from the second target peer storage device, the third task output data.

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

storing, in the remotely accessible buffer memory for access by the first target peer storage device, the first task input data;

storing, in the remotely accessible buffer memory for access by the second target peer storage device, the third task input data;

receiving, from the first target peer storage device, the first task output data in the remotely accessible buffer memory; and

receiving, from the second target peer storage device, the third task output data in the remotely accessible buffer memory.

16. The computer-based method of claim 11 , further comprising:

determining, by the master peer storage device, a first set of parallel tasks that includes the peer compute task;

determining, by the master peer storage device, a second set of parallel tasks that includes the master compute task; and

executing, by the master peer storage device, the second set of parallel tasks in parallel with the target peer storage device executing the first set of parallel tasks.

17. The computer-based method of claim 11 :

wherein:

the peer compute task is a first peer compute task in a first set of sequential tasks from the plurality of compute tasks associated with the remotely issued host function request; and

determining the host function result is further based on third task output data; and

further comprising:

determining, by the master peer storage device, the first set of sequential tasks;

determining, by the master peer storage device, a second set of sequential tasks from the plurality of compute tasks associated with the remotely issued host function request;

assigning, by the master peer storage device, a second peer compute task in the second set of sequential tasks to the target peer storage device;

storing, by the master peer storage device, a third task compute configuration associated with the second peer compute task in the remotely accessible buffer memory for access by the target peer storage device;

processing, by the target peer storage device and after returning the first task output data, third task input data using the third task compute configuration; and

receiving, by the master peer storage device and from the target peer storage device, third task output data.

18. The computer-based method of claim 11 , further comprising:

assigning at least one peer compute task of the plurality of compute tasks to each peer storage device of a number of peer storage devices in the plurality of peer storage devices; and

allocating, in the remotely accessible buffer memory, a peer compute task space for each peer storage device of the number of peer storage devices, wherein each peer compute task space is configured to include at least one compute task configuration space.

19. The computer-based method of claim 18 , wherein each peer compute task space is further configured to include:

at least one input data space; and

at least one output data space.

20. A system, comprising:

a first storage device comprising:

a remotely accessible buffer memory configured for direct memory access by a plurality of peer storage devices over a network fabric;

means for receiving, from a host system, a remotely issued host function request;

means for determining a plurality of compute tasks associated with the remotely issued host function request;

means for determining a target peer storage device from the plurality of peer storage devices;

means for assigning a peer compute task from the plurality of compute tasks to the target peer storage device;

means for storing a first task compute configuration in the remotely accessible buffer memory for access by the target peer storage device;

means for executing a master compute task from the plurality of compute tasks using a second task compute configuration to process second task input data and return second task output data;

means for storing the second task output data;

means for receiving, from the target peer storage device, first task output data;

means for determining, based on the first task output data and the second task output data, a host function result; and

means for returning, to the host system, the host function result; and

the target peer storage device comprising:

means for accessing the first task compute configuration from the remotely accessible buffer memory using direct memory access over the network fabric; and

means for processing first task input data using the first task compute configuration.

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 053926 FRAME 0446 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058966/0321 →
SECURITY INTEREST Recorded Sep 29, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 053926/0446 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 23, 2020
From: MUTHIAH, RAMANATHAN
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 053290/0054 →