IP Library Granted Patent US 12,282,683
Granted Patent B2
US 12,282,683 · App. 17/430,693 · Granted Apr 22, 2025

Computational data storage systems

Inventors: Michael P. Mesnier (Scappoose, OR); John S. Keys (Beaverton, OR); Ian F. Adams (Astoria, OR); Yi Zou (Portland, OR); Luis Carlos Maria Remis (Hillsboro, OR); Daniel Robert McLeran (Loveland, CO); Mariusz Barczak (woj. Pomorskie, PL); Arun Raghunath (Portland, OR); Lay Wai Kong (Phoenix, AZ)
Assignee: Intel Corporation
G06F3/0659G06F3/0604G06F3/0679
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 12,282,683
App. No.
17/430,693
Granted
Apr 22, 2025
Kind
B2
Abstract

In one embodiment, a system comprises a host processor and a storage system. The storage system comprises one or more storage devices, and each storage device comprises a non-volatile memory and a compute offload controller. The non-volatile memory stores data, and the compute offload controller performs compute tasks on the data based on compute offload commands from the host processor.

Claims (106)

1. A storage device, comprising:

a non-volatile storage medium; and

processing circuitry to:

receive, via interface circuitry, a chained compute offload command from a host computing device, wherein the chained compute offload command instructs the storage device to perform a plurality of chained compute operations on an input data object stored on the non-volatile storage medium, wherein the chained compute operations include different types of compute operations;

read the input data object from the non-volatile storage medium;

perform the plurality of chained compute operations on the input data object, wherein an output data object is computed based on performing the plurality of chained compute operations; and

return the output data object as an output of the chained compute offload command.

2. The storage device of claim 1 , wherein the chained compute offload command comprises:

an input parameter indicating a first location of the input data object on the non-volatile storage medium;

an operation chain parameter indicating the chained compute operations to be performed on the input data object and an order in which the chained compute operations are to be performed; and

an operation arguments parameter indicating one or more arguments for the respective chained compute operations.

3. The storage device of claim 2 , wherein the chained compute offload command further comprises:

an output parameter indicating how the output data object is to be returned.

4. The storage device of claim 3 , wherein:

the output parameter indicates that the output data object is to be written to the non-volatile storage medium; and

the processing circuitry to return the output data object as the output of the chained compute offload command is further to:

write the output data object to a second location on the non-volatile storage medium; and

send, via the interface circuitry, an address of the second location to the host computing device.

5. The storage device of claim 4 , wherein the second location comprises a pre-allocated output buffer on the non-volatile storage medium.

6. The storage device of claim 3 , wherein:

the output parameter indicates that the output data object is to be written to a second location on the non-volatile storage medium; and

the processing circuitry to return the output data object as the output of the chained compute offload command is further to:

write the output data object to the second location on the non-volatile storage medium.

7. The storage device of claim 3 , wherein:

the output parameter indicates that the output data object is to be sent to the host computing device; and

the processing circuitry to return the output data object as the output of the chained compute offload command is further to:

send, via the interface circuitry, the output data object to the host computing device.

8. The storage device of claim 2 , wherein the processing circuitry to perform the plurality of chained compute operations on the input data object is further to:

perform the plurality of chained compute operations based on the order indicated by the operation chain parameter and the one or more arguments indicated by the operation arguments parameter;

compute a plurality of intermediate outputs of the plurality of chained compute operations, wherein each intermediate output of a particular chained compute operation is input to a corresponding subsequent chained compute operation based on the order indicated by the operation chain parameter; and

compute the output data object based on the plurality of intermediate outputs.

9. The storage device of claim 8 , wherein the processing circuitry to compute the plurality of intermediate outputs of the plurality of chained compute operations is further to:

write at least a subset of the plurality of intermediate outputs to a buffer pool on the non-volatile storage medium; and

return an address of each intermediate output in the buffer pool to the corresponding subsequent chained compute operation.

10. The storage device of claim 1 , wherein:

the non-volatile storage medium comprises a non-volatile memory; and

the storage device is a block storage device, wherein the block storage device is to provide block-based storage on the non-volatile memory.

11. At least one non-transitory machine-readable medium having instructions stored thereon, wherein the instructions, when executed on processing circuitry of a storage device, cause the processing circuitry to:

receive, via interface circuitry, a chained compute offload command from a host computing device, wherein the chained compute offload command instructs the storage device to perform a plurality of chained compute operations on input data stored on a non-volatile storage medium of the storage device, wherein the chained compute operations include different types of compute operations;

read the input data from the non-volatile storage medium;

perform the plurality of chained compute operations on the input data, wherein output data is computed based on performing the plurality of chained compute operations; and

return the output data as an output of the chained compute offload command.

12. The at least one non-transitory machine-readable medium of claim 11 , wherein the chained compute offload command comprises:

an input parameter indicating a first location of the input data on the non-volatile storage medium;

an operation chain parameter indicating the chained compute operations to be performed on the input data and an order in which the chained compute operations are to be performed; and

an operation arguments parameter indicating one or more arguments for the respective chained compute operations.

13. The at least one non-transitory machine-readable medium of claim 12 , wherein the chained compute offload command further comprises:

an output parameter indicating how the output data is to be returned.

14. The at least one non-transitory machine-readable medium of claim 13 , wherein:

the output parameter indicates that the output data is to be written to the non-volatile storage medium; and

the instructions that cause the processing circuitry to return the output data as the output of the chained compute offload command further cause the processing circuitry to:

write the output data to a second location on the non-volatile storage medium; and

send, via the interface circuitry, an address of the second location to the host computing device.

15. The at least one non-transitory machine-readable medium of claim 14 , wherein the second location comprises a pre-allocated output buffer on the non-volatile storage medium.

16. The at least one non-transitory machine-readable medium of claim 13 , wherein:

the output parameter indicates that the output data is to be written to a second location on the non-volatile storage medium; and

the instructions that cause the processing circuitry to return the output data as the output of the chained compute offload command further cause the processing circuitry to:

write the output data to the second location on the non-volatile storage medium.

17. The at least one non-transitory machine-readable medium of claim 13 , wherein:

the output parameter indicates that the output data is to be sent to the host computing device; and

the instructions that cause the processing circuitry to return the output data as the output of the chained compute offload command further cause the processing circuitry to:

send, via the interface circuitry, the output data to the host computing device.

18. The at least one non-transitory machine-readable medium of claim 12 , wherein the instructions that cause the processing circuitry to perform the plurality of chained compute operations on the input data further cause the processing circuitry to:

perform the plurality of chained compute operations based on the order indicated by the operation chain parameter and the one or more arguments indicated by the operation arguments parameter;

compute a plurality of intermediate outputs of the plurality of chained compute operations, wherein each intermediate output of a particular chained compute operation is input to a corresponding subsequent chained compute operation based on the order indicated by the operation chain parameter; and

compute the output data based on the plurality of intermediate outputs.

19. The at least one non-transitory machine-readable medium of claim 18 , wherein the instructions that cause the processing circuitry to compute the plurality of intermediate outputs of the plurality of chained compute operations further cause the processing circuitry to:

write at least a subset of the plurality of intermediate outputs to a buffer pool on the non-volatile storage medium; and

return an address of each intermediate output in the buffer pool to the corresponding subsequent chained compute operation.

20. A method performed by processing circuitry of a storage device, the method comprising:

receiving a chained compute offload command from a host computing device, wherein the chained compute offload command instructs the storage device to perform a plurality of chained compute operations on an input data object stored on a non-volatile storage medium of the storage device, wherein the chained compute operations include different types of compute operations;

reading the input data object from the non-volatile storage medium;

performing the plurality of chained compute operations on the input data object, wherein an output data object is computed based on performing the plurality of chained compute operations; and

returning the output data object as an output of the chained compute offload command.

21. The method of claim 20 , wherein the chained compute offload command comprises:

an input parameter indicating a first location of the input data object on the non-volatile storage medium;

an operation chain parameter indicating the chained compute operations to be performed on the input data object and an order in which the chained compute operations are to be performed; and

an operation arguments parameter indicating one or more arguments for the respective chained compute operations.

22. The method of claim 21 , wherein performing the plurality of chained compute operations on the input data object comprises:

performing the plurality of chained compute operations based on the order indicated by the operation chain parameter and the one or more arguments indicated by the operation arguments parameter;

computing a plurality of intermediate outputs of the plurality of chained compute operations, wherein each intermediate output of a particular chained compute operation is input to a corresponding subsequent chained compute operation based on the order indicated by the operation chain parameter; and

computing the output data object based on the plurality of intermediate outputs.

23. A system, comprising:

interface circuitry to communicatively couple a host processor and a storage device;

the host processor, wherein the host processor is to send, via the interface circuitry, a chained compute offload command to the storage device, wherein the chained compute offload command instructs the storage device to perform a plurality of chained compute operations on an input data object stored on the storage device, wherein the chained compute operations include different types of compute operations; and

the storage device, wherein the storage device comprises a non-volatile storage medium and compute offload circuitry, wherein the compute offload circuitry is to:

receive, via the interface circuitry, the chained compute offload command from the host processor;

read the input data object from the non-volatile storage medium;

perform the plurality of chained compute operations on the input data object, wherein an output data object is computed based on performing the plurality of chained compute operations; and

return the output data object as an output of the chained compute offload command.

24. The system of claim 23 , wherein the chained compute offload command comprises:

an input parameter indicating a first location of the input data object on the non-volatile storage medium;

an operation chain parameter indicating the chained compute operations to be performed on the input data object and an order in which the chained compute operations are to be performed; and

an operation arguments parameter indicating one or more arguments for the respective chained compute operations.

25. The system of claim 24 , wherein the compute offload circuitry to perform the plurality of chained compute operations on the input data object is further to:

perform the plurality of chained compute operations based on the order indicated by the operation chain parameter and the one or more arguments indicated by the operation arguments parameter;

compute a plurality of intermediate outputs of the plurality of chained compute operations, wherein each intermediate output of a particular chained compute operation is input to a corresponding subsequent chained compute operation based on the order indicated by the operation chain parameter; and

compute the output data object based on the plurality of intermediate outputs.

26. The at least one non-transitory machine-readable medium of claim 11 , wherein:

the input data comprises an input data object; and

the output data comprises an output data object.

27. The storage device of claim 1 , wherein the chained compute offload command comprises one or more parameters, wherein the one or more parameters indicate:

a location of the input data object on the non-volatile storage medium;

the chained compute operations to be performed on the input data object; and

an order in which the chained compute operations are to be performed.

28. The storage device of claim 1 , wherein the plurality of chained compute operations are to transform the input data object into the output data object.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 11, 2025
From: INTEL CORPORATION
To: SK HYNIX NAND PRODUCT SOLUTIONS CORP. (DBA SOLIDIGM)
Reel/Frame 072549/0289 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 4, 2022
From: MESNIER, MICHAEL P.; KEYS, JOHN S.; ADAMS, IAN F.; ZOU, YI; MARIA REMIS, LUIS CARLOS; MCLERAN, DANIEL ROBERT; BARCZAK, MARIUSZ; RAGHUNATH, ARUN; KONG, LAY WAI
To: INTEL CORPORATION
Reel/Frame 059172/0396 →
Continuity (2)
Provisional Application 62817510 · Mar 12, 2019
Related Publication 20220188028A1 · Jun 16, 2022
References Cited (32)
US 5546558A · Jacobson et al. · 1996 [cited by applicant]
US 6701316B1 · Li et al. · 2004 [cited by applicant]
US 20060047897A1 · Thiessen et al. · 2006 [cited by applicant]
US 20120079190A1 · Colgrove et al. · 2012 [cited by applicant]
US 20170277432A1 · Yun · 2017 [cited by examiner]
US 20180341548A1 · Bolkhovitin et al. · 2018 [cited by applicant]
US 20180341606A1 · Bolkhovitin et al. · 2018 [cited by applicant]
US 20190042093A1 · Adams et al. · 2019 [cited by applicant]
US 20190042591A1 · Dayan et al. · 2019 [cited by applicant]
US 20190266062A1 · Borlick et al. · 2019 [cited by applicant]
US 20200167098A1 · Shah et al. · 2020 [cited by applicant]
JP 2006277583A · 2006 [cited by applicant]
JP 2010146549A · 2010 [cited by applicant]
JP 2019028572A · 2019 [cited by applicant]
KR 20070024670A · 2007 [cited by applicant]
WO 2018217273A1 · 2018 [cited by applicant]
WO 2020186081A1 · 2020 [cited by applicant]
PCT International Search Report and Written Opinion in PCT International Application Serial No. PCT/US2020/022432 mail on Jul. 6, 2020 (9 pages). [cited by applicant]
EPO; Extended European Search Report issued in EP Patent Application No. 20769555.2, dated Nov. 7, 2022; 7 pages. [cited by applicant]
Adams, et al., “Respecting the block interface—computational storage using virtual objects,” Intel Labs (7 pgs.). [cited by applicant]
Barbalance, Antonio, et al., “blockNDP: Block-storage Near Data Processing,” Middleware '20 Industrial Track, Dec. 7-11, 2020, Delft, Netherlands. (8 pages). [cited by applicant]
LeFevre, Jeff, et al., “Skyhook: Programmable Storage for Databases,” USENIX, Feb. 26, 2019. (3 pages). [cited by applicant]
Mehra, Pankaj, “Scaling Smart: East-West & North-South Scaling of Computation With Data,” Samsung Electronics, Nov. 5, 2020. (29 pages). [cited by applicant]
Mellor, Chris, “At exabyte levels, data gravity exerts an enormous pull. This sucks,” Blocks & Files, Jan. 12, 2021. (4 pages). [cited by applicant]
EPO; Extended European Search Report issued in EP Patent Application No. 22164358.8, dated Jul. 18, 2022; 7 pages. [cited by applicant]
PCT International Preliminary Report on Patentability issued in PCT/US2020/022432, dated Sep. 23, 2021; 7 pages. [cited by applicant]
EPO; Office Action issued in European Patent Application No. EP 22164358.8, dated Feb. 21, 2024; 7 pages. [cited by applicant]
USPTO Non-Final OA for U.S. Appl. No. 17/132,974 received on Feb. 27, 2024 entitled, Technologies for Storage and Processing for Distributed File Systems (6 pages). [cited by applicant]
Japan Patent Office, Final Rejection issued in JP Patent Application No. 2021-546735, dated Aug. 13, 2024; 6 pages including English translation. [cited by applicant]
USPTO Final OA for U.S. Appl. No. 17/132,974 received on Aug. 26, 2024 entitled, Technologies for Storage and Processing for Distributed File Systems (9 pages). [cited by applicant]
Do, Jaeyoung, et al. “Query Processing on Smart SSDs: Opportunities and Challenges.” Proceedings of the 2013 ACM SIGMOD International Conference on Management of Data, Association for Computing Machinery, 2013, pp. 1221… [cited by applicant]
Japan Patent Office; Office Action issued for JP Patent Application No. 2021-546735, dated Apr. 2, 2024; 9 pages including English translation. [cited by applicant]