IP Library Granted Patent US 10,565,014
Granted Patent B2
US 10,565,014 · App. 15/832,728 · Granted Feb 18, 2020

Data processing offload using in-storage code execution

Inventors: Vladislav Bolkhovitin (San Jose, CA); Siva Munnangi (San Jose, CA); Adam Roberts (Moncure, NC)
Assignee: Western Digital Technologies, Inc.
G06F9/50G06F8/41
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,565,014
App. No.
15/832,728
Granted
Feb 18, 2020
Kind
B2
Abstract

Systems and methods for offloading data processing tasks using in-storage code execution are disclosed. For example, a data storage system including one or more processors, a non-transitory storage medium, and a storage logic executable by the one or more processors to perform operations including: receiving portable code configured to perform a data processing offload task, the portable code comprising one or more translatable, hardware-agnostic instructions for processing data stored on the storage medium; translating and executing the one or more translatable, hardware-agnostic instructions of the portable code to perform the data processing offload task using a translation and execution engine disposed in the storage logic; determining that use of the portable code has concluded; and responsive to determining that use of the portable code has concluded, releasing the portable code.

Claims (75)

1. A data storage system, comprising:

a storage device comprising one or more processors, a non-transitory storage medium, and a storage controller logic,

wherein the storage controller logic is executable by the one or more processors to perform operations comprising:

receiving, from a host device configured to be coupled to the storage device, portable code configured to perform a data processing offload task in the storage device, the portable code comprising one or more translatable, hardware-agnostic instructions for processing data stored on the non-transitory storage medium;

translating and executing the one or more translatable, hardware-agnostic instructions of the portable code to perform the data processing offload task in the storage device using a translation and execution engine disposed in the storage controller logic;

sending to the host device an indication of a status of the data processing offload task in the storage device;

determining whether use of the portable code has concluded; and

responsive to determining that use of the portable code has concluded, releasing the portable code from the storage device.

2. The data storage system of claim 1 , wherein translating and executing the one or more translatable, hardware-agnostic instructions comprises:

individually and sequentially executing each of the one or more translatable, hardware-agnostic instructions of the portable code using an interpreter in the translation and execution engine.

3. The data storage system of claim 2 , wherein the one or more translatable, hardware-agnostic instructions of the portable code comprise source code instructions.

4. The data storage system of claim 2 , wherein:

the one or more translatable, hardware-agnostic instructions of the portable code comprise bytecode instructions; and

the bytecode instructions are specifically configured to perform data processing offload tasks.

5. The data storage system of claim 2 , wherein the interpreter in the translation and execution engine is configured to verify whether the one or more translatable, hardware-agnostic instructions of the portable code satisfy defined security rules.

6. The data storage system of claim 1 , wherein translating and executing the one or more translatable, hardware-agnostic instructions comprises:

compiling the one or more translatable, hardware-agnostic instructions of the portable code into machine code native to the storage device using a compiler in the translation and execution engine; and

executing the machine code.

7. The data storage system of claim 1 , wherein the portable code comprises a procedure configured to perform the data processing offload task.

8. The data storage system of claim 1 , wherein the operations performed by the storage controller logic further comprise:

determining a portable code type;

selecting a translator in the translation and execution engine based on the determined portable code type; and

translating the translatable, hardware-agnostic instructions of the portable code using the selected translator.

9. The data storage system of claim 1 , wherein translating and executing the one or more translatable, hardware-agnostic instructions comprises:

determining a present operating condition of the storage device;

determining whether to perform a certain action during translating and executing based on the determined present operating condition of the storage system device; and

translating and executing the one or more translatable, hardware-agnostic instructions in a corresponding manner that optimizes a performance of the data processing offload task by the storage device.

10. The data storage system of claim 1 , wherein the portable code for performing the data processing offload task is stored on the storage device in a precompiled format.

11. The data storage system of claim 1 , wherein the data processing offload task comprises:

performing one of a MapReduce, counting, filtering, compaction, and encryption type of operation on one or more items of the data stored on the non-transitory storage medium.

12. The data storage system of claim 1 , further comprising:

the host device comprising one or more second processors and second logic executable by the one or more second processors to perform operations comprising:

loading the portable code into the storage device for translation and execution by the storage device;

detecting completion of the translation and execution of the portable code by the storage device; and

unloading the portable code from the storage device.

13. A method of operation in a data storage system, comprising:

receiving, by a storage controller logic of a storage device, portable code from a host device configured to be coupled to the storage device, the portable code configured to perform a data processing offload task in the storage device and comprising one or more translatable, hardware-agnostic instructions for processing data stored on a non-transitory storage medium;

translating and executing, by the storage controller logic of the storage device, the one or more translatable, hardware-agnostic instructions of the portable code to perform the data processing offload task in the storage device using a translation and execution engine disposed in the storage controller logic;

sending, by the storage controller logic of the storage device, to the host device an indication of a status of the data processing offload task in the storage device;

determining, by the storage controller logic of the storage device, whether use of the portable code has concluded; and

responsive to determining that use of the portable code has concluded, releasing, by the storage controller logic of the storage device, the portable code from the storage device.

14. The method of claim 13 , wherein translating and executing the one or more translatable, hardware-agnostic instructions comprises:

individually and sequentially executing each of the one or more translatable, hardware-agnostic instructions of the portable code using an interpreter in the translation and execution engine.

15. The method of claim 13 , wherein translating and executing the one or more translatable, hardware-agnostic instructions comprises:

compiling the one or more translatable, hardware-agnostic instructions of the portable code into machine code native to the storage device using a compiler in the translation and execution engine; and

executing the machine code.

16. The method of claim 13 , further comprising:

determining a portable code type;

selecting a translator in the translation and execution engine based on the determined portable code type; and

translating the translatable, hardware-agnostic instructions of the portable code using the selected translator.

17. The method of claim 13 , wherein translating and executing the one or more translatable, hardware-agnostic instructions comprises:

determining a present operating condition of the storage device;

determining whether to perform a certain action during translating and executing based on the determined present operating condition of the storage device; and

translating and executing the one or more translatable, hardware-agnostic instructions of the portable code in a corresponding manner that optimizes a performance of the data processing offload task by the storage device.

18. A data storage system, comprising:

one or more processors;

a non-transitory storage medium;

means for receiving portable code configured to perform a data processing offload task in a storage device from a host device configured to be coupled to the storage device, the portable code comprising one or more translatable, hardware-agnostic instructions for processing data stored on the non-transitory storage medium;

means for translating and executing the one or more translatable, hardware-agnostic instructions of the portable code to perform the data processing offload task in the storage device;

means for sending to the host device an indication of a status of the data processing offload task in the storage device;

means for determining whether use of the portable code has concluded; and

means for releasing the portable code from the storage device responsive to determining that use of the portable code has concluded.

19. The data storage system of claim 18 , wherein the means for translating and executing the one or more translatable, hardware-agnostic instructions comprises:

means for individually and sequentially executing each of the one or more translatable, hardware-agnostic instructions of the portable code using an interpreter.

20. The data storage system of claim 18 , wherein the means for translating and executing the one or more translatable, hardware-agnostic instructions comprises:

means for compiling the one or more translatable, hardware-agnostic instructions of the portable code into machine code native to the storage device; and

means for executing the machine code.

21. A data storage system, comprising:

a storage device comprising one or more processors, a non-transitory storage medium, and a storage controller logic,

wherein the storage controller logic is executable by the one or more processors to perform operations comprising:

receiving, from a host device configured to be coupled to the storage device, portable code configured to perform a data processing offload task in the storage device, the portable code comprising one or more translatable, hardware-agnostic instructions for processing data stored on the non-transitory storage medium;

translating and executing the one or more translatable, hardware-agnostic instructions of the portable code to perform the data processing offload task in the storage device using a translation and execution engine disposed in the storage controller logic;

sending to the host device an indication of a status of the data processing offload task in the storage device;

determining whether use of portable code is to be continued; and

responsive to determining that use of portable code is to be continued, saving the portable code for future execution.

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 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2018
From: BOLKHOVITIN, VLADISLAV; MUNNANGI, SIVA; ROBERTS, ADAM
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 044797/0695 →
Continuity (1)
Related Publication 20190171485A1 · Jun 6, 2019
Cited By (1)
US 12,657,191