IP Library Granted Patent US 10,719,462
Granted Patent B2
US 10,719,462 · App. 16/141,411 · Granted Jul 21, 2020

Technologies for computational storage via offload kernel extensions

Inventor: Sanjeev Trika (Portland, OR)
Assignee: Intel Corporation
G06F13/28G06F12/10G06F13/1668G06F2212/1024G06F2212/657
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 10,719,462
App. No.
16/141,411
Granted
Jul 21, 2020
Kind
B2
Abstract

Technologies for data processing or computation on data storage devices include a data storage controller. The data storage controller is configured to receive a data request from a compute device, determine an input data range specified by the compute device to be processed in the data storage device without sending data located at the input data to the compute device, read input data from the input data range, perform a data operation on the input data specified by the compute device to generate output data, and write the output data to an output data range specified by the compute device.

Claims (50)

1. A data storage device comprising a data storage controller to:

receive a data request from a compute device, wherein the data request includes codes that are executable to instantiate one or more offload kernels;

execute, in response to receipt of the data request, an application program interface to instantiate the one or more offload kernels inside the data storage device using the codes;

determine an input data range specified in the data request by the compute device to be processed in the data storage device without sending the input data located at the data storage to the compute device;

read input data from the input data range;

perform a data operation on the input data specified by the compute device to generate output data; and

write the output data to an output data range specified by the compute device.

2. The data storage device of claim 1 , wherein the input data range is specified by a logical block address, an offset within the logical block address, and a number of bytes of input data to be processed, and the output data range is specified by a logical block address, an offset within the logical block address, and a number of bytes where the output data is to be written.

3. The data storage device of claim 1 , wherein the codes are specified in a heterogeneous-programming language.

4. The data storage device of claim 3 , wherein to instantiate the one or more offload kernels comprises to execute the one or more offload kernels on one or more available unused processors of the data storage device.

5. The data storage device of claim 3 , wherein to instantiate the one or more offload kernels comprises to execute the one or more offload kernels on a dedicated controller of the data storage device.

6. The data storage device of claim 3 , wherein to instantiate the one or more offload kernels comprises to execute the one or more offload kernels on one or more processors of the data storage device that also perform other operations of the data storage device.

7. The data storage device of claim 3 , wherein to perform the data operation comprises to perform a data operation by the one or more offload kernels inside the data storage device.

8. The data storage device of claim 1 , wherein:

to read the input data range comprises to read an input data range using an in-built read-kernel of the data storage device specified in the data request; and

to perform the data operation comprises to perform a data operation by an in-built kernel of the data storage device.

9. The data storage device of claim 1 , wherein to read the input data range comprises to:

unlock, in response to a determination that the input data range is on a locked region of the data storage device and by the data storage device, the input data range;

decrypt, in response to a determination that the input data range is encrypted and by the data storage device, the input data range; and

decompress, in response to a determination that the input data range is compressed and by the data storage device, the input data range.

10. One or more non-transitory, computer-readable storage media comprising a plurality of instructions stored thereon that, in response to being executed, cause a data storage device to:

receive a data request from a compute device, wherein the data request includes codes that are executable to instantiate one or more offload kernels;

execute, in response to receipt of the data request, an application program interface to instantiate the one or more offload kernels inside the data storage device using the codes;

determine an input data range specified by the compute device to be processed in the data storage device without sending data located at the input data to the compute device;

read input data from the input data range;

perform a data operation on the input data specified by the compute device to generate output data; and

write the output data to an output data range specified by the compute device.

11. The one or more non-transitory, computer-readable storage media of claim 10 , wherein the input data range is specified by a logical block address, an offset within the logical block address, and a number of bytes of input data to be processed, and the output data range is specified by a logical block address, an offset within the logical block address, and a number of bytes where the output data is to be written.

12. The one or more non-transitory, computer-readable storage media of claim 10 , wherein the codes are specified in a heterogeneous-programming language.

13. The one or more non-transitory, computer-readable storage media of claim 12 , wherein to instantiate the one or more offload kernels comprises to execute the one or more offload kernels on one or more available unused processors of the data storage device.

14. The one or more non-transitory, computer-readable storage media of claim 12 , wherein to perform the data operation comprises to perform a data operation by the one or more offload kernels inside the data storage device.

15. The one or more non-transitory, computer-readable storage media of claim 10 , wherein:

to read the input data range comprises to read an input data range using an in-built read-kernel of the data storage device; and

to perform the data operation comprises to perform a data operation by an in-built kernel of the data storage device.

16. The one or more non-transitory, computer-readable storage media of claim 12 , wherein to read the input data range comprises to:

unlock, in response to a determination that the input data range is on a locked region of the data storage device and by the data storage device, the input data range;

decrypt, in response to a determination that the input data range is encrypted and by the data storage device, the input data range; and

decompress, in response to a determination that the input data range is compressed and by the data storage device, the input data range.

17. A method comprising:

receiving, by a data storage device, a data request from a compute device, wherein the data request includes codes that are executable to instantiate one or more offload kernels;

executing, in response to receipt of the data request, an application program interface to instantiate the one or more offload kernels inside the data storage device using the codes;

determining, by the data storage device, an input data range specified by the compute device to be processed in the data storage device without sending data located at the input data to the compute device;

reading, by a data storage device, input data from the input data range;

performing, by the data storage device, a data operation on the input data specified by the compute device to generate output data; and

writing, by the data storage device, the output data to an output data range specified by the compute device.

18. The method of claim 17 , wherein the input data range is specified by a logical block address, an offset within the logical block address, and a number of bytes of input data to be processed, and the output data range is specified by a logical block address, an offset within the logical block address, and a number of bytes where the output data is to be written.

19. The method of claim 17 , wherein the codes are specified in a heterogeneous-programming language.

20. The method of claim 17 , wherein:

reading the input data range comprises reading an input data range using an in-built read-kernel of the data storage device; and

performing the data operation comprises performing a data operation by an in-built kernel of the data storage device.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 17, 2025
From: INTEL CORPORATION
To: SK HYNIX NAND PRODUCT SOLUTIONS CORP. (DBA SOLIDIGM)
Reel/Frame 072850/0834 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 29, 2018
From: TRIKA, SANJEEV
To: INTEL CORPORATION
Reel/Frame 047338/0974 →
Continuity (1)
Related Publication 20190042501A1 · Feb 7, 2019