# US 2019/0171485 A1 · Data Processing Offload Using In-Storage Code Execution

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2019/0171485 A1
- Document ID: US20190171485A1
- Status: Published application
- Kind: A1
- Application number: 15/832,728
- Filed: 2017-12-05
- Published: 2019-06-06
- Earliest claimed: 2017-12-05
- Assignees: Western Digital Technologies, Inc.
- Applicants: Western Digital Technologies, Inc.
- Inventors: Vladislav Bolkhovitin; Siva Munnangi; Adam Roberts
- Web page: https://patentgrep.com/patent/US20190171485A1

## CPC

- G06F 9/50: Allocation of resources, e.g. of the central processing unit [CPU]
- G06F 8/41: Compilation
- G06F 8/52: Binary to binary
- G06F 2209/509: Offload
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## 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

### Claim 1

A data storage system, comprising:
one or more processors;
a non-transitory storage medium; and
a storage logic executable by the one or more processors to perform operations comprising:
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.

### Claim 2 (depends on 1)

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, machine-agnostic instructions of the portable code using an interpreter in the translation and execution engine.

### Claim 3 (depends on 2)

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

### Claim 4 (depends on 2)

The data storage system of claim 2, wherein:
the one or more translatable, machine-agnostic instructions of the portable code comprise bytecode instructions; and
the bytecode instructions are specifically configured to perform data processing offload tasks.

### Claim 5 (depends on 1)

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, machine-agnostic instructions of the portable code into machine code native to the data storage system using a compiler in the translation and execution engine; and
executing the machine code.

### Claim 6 (depends on 1)

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

### Claim 7 (depends on 1)

The data storage system of claim 1, wherein the operations performed by the storage 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.

### Claim 8 (depends on 1)

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 data storage system;
determining whether to perform a certain action during translating and executing based on the determined present operating condition of the data storage system; 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 data storage system.

### Claim 9 (depends on 1)

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

### Claim 10 (depends on 1)

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.

### Claim 11 (depends on 1)

The data storage system of claim 1, wherein the one or more processors comprise one or more programmable integrated circuits that execute one or more of the operations of the storage logic.

### Claim 12 (depends on 1)

The data storage system of claim 1, further comprising:
a storage device comprising the one or more processors, the non-transitory storage medium, and the storage logic; and
a host system coupled to the storage device, the host system 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.

### Claim 13

A method of operation in a data storage system, comprising:
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 a 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 using a translation and execution engine disposed on the data storage system;
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.

### Claim 14 (depends on 13)

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, machine-agnostic instructions of the portable code using an interpreter in the translation and execution engine.

### Claim 15 (depends on 13)

The method of claim 13, wherein translating and executing the one or more translatable, hardware-agnostic instructions comprises:
compiling the one or more translatable, machine-agnostic instructions of the portable code into machine code native to the data storage system using a compiler in the translation and execution engine; and
executing the machine code.

### Claim 16 (depends on 13)

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.

### Claim 17 (depends on 13)

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 data storage system;
determining whether to perform a certain action during translating and executing based on the determined present operating condition of the data storage system; 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 data storage system.

### Claim 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, the portable code comprising one or more translatable, hardware-agnostic instructions for processing data stored on the 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;
means for determining that use of the portable code has concluded; and
means for releasing the portable code responsive to determining that use of the portable code has concluded.

### Claim 19 (depends on 18)

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, machine-agnostic instructions of the portable code using an interpreter.

### Claim 20 (depends on 18)

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, machine-agnostic instructions of the portable code into machine code native to the data storage system; and
means for executing the machine code.

### Claim 21

A data storage system, comprising:
one or more processors;
a non-transitory storage medium; and
a storage logic executable by the one or more processors to perform operations comprising:
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; and
saving the portable code for future execution.
