# US 2021/0342103 A1 · Method and apparatus for performing multi-object transformations on a storage device

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

- Number: US 2021/0342103 A1
- Document ID: US20210342103A1
- Status: Published application
- Kind: A1
- Application number: 17/234,157
- Filed: 2021-04-19
- Published: 2021-11-04
- Earliest claimed: 2017-06-30
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: Jawad Basit Khan; Peng Li; Sanjeev Trika
- Web page: https://patentgrep.com/patent/US20210342103A1

## CPC

- G06F 3/0661: {Format or protocol conversion arrangements}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F 9/34: Addressing or accessing the instruction operand or the result {; Formation of operand address; Addressing modes (address translation G06F12/00)}
- G06F 13/38: Information transfer, e.g. on bus (G06F13/14 takes precedence)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

In one embodiment, a storage device comprises non-volatile storage media; a controller to receive, from a host, an object definition command that identifies a first data object and a second data object and a transformation to apply to the first data object and the second data object to generate a first transformed object and store the first transformed object in the non-volatile storage media; and a transformation engine to apply the transformation to the first data object and the second data object.

## Claims

### Claim at position 1

1-20. (canceled)

### Claim 21

A storage device comprising:
non-volatile memory; and
circuitry to:
receive, from a host, a first command that indicates a first data input, a second data input, a third data input and a fourth data input, the first command to also indicate a first computational storage function (CSF) to apply to the first data input and the second data input and to indicate a second CSF to apply to the third data input and the fourth data input;
generate a first transformed object based on application of the first CSF to the first and second data inputs; and
generate a second transformed object based on application of the second CSF to the third and fourth data inputs.

### Claim 22 (depends on 21)

The storage device of claim 21, further comprising the circuitry to:
cause the first and second transformed objects to be stored in the non-volatile memory.

### Claim 23 (depends on 21)

The storage device of claim 21, comprising the first command to indicate the first and second CSFs via respective identifiers included in the command, wherein the circuitry is to select the first CSF or the second CSF from a plurality of CSFs performable by the circuitry based on the respective identifiers.

### Claim 24 (depends on 21)

The storage device of claim 21, wherein the first command is to also indicate a fifth data input and a third CSF to apply to the first transformed object and the fifth data input, the circuitry to:
generate a third transformed object based on application of the third CSF to the first transformed object and the fifth data input; and
cause the third transformed object to be stored in the non-volatile memory.

### Claim 25 (depends on 24)

The storage device of claim 24, further comprising:
a buffer; and
the circuitry to:
cause the first transformed object to be stored to the buffer; and
obtain the first transformed object from the buffer to apply the third CSF to the first transformed object and the fifth data input to generate the third transformed object.

### Claim 26 (depends on 21)

The storage device of claim 21, comprising the second CSF is a same type of CSF as the first CSF.

### Claim 27 (depends on 21)

The storage device of claim 21, further comprising the logic to:
receive, from the host, a second command to store the first, second, third and fourth data inputs, the second command received prior to receipt of the first command; and
cause the first, second, third and fourth data inputs to be stored in the non-volatile memory.

### Claim 28 (depends on 21)

The storage device of claim 21, further comprising:
the first command to include a pointer to at least one memory address of a system memory arranged to maintain the first, second, third and fourth data inputs, the system memory located at the host; and
the circuitry to:
obtain the first, second, third and fourth data inputs from the system memory based on the pointer.

### Claim 29 (depends on 28)

The storage device of claim 28, the first command comprising a video compression command, wherein the first and second CSFs are to include use of image frame difference algorithms, the first, second, third and fourth data inputs are respective first, second, third and fourth image frames, the video compression command to indicate a storage destination in the non-volatile memory for storing generated first and second transformed objects, the logic to:
apply the first CSF to the first and second image frames to determine a first image frame difference in order to generate the first transformed object;
apply the second CSF to the third and fourth image frames to determine a second image frame difference in order to generate the second transformed object; and
cause the first and second transformed objects to be stored in the non-volatile memory at the storage destination indicated in the video compression command.

### Claim 30 (depends on 28)

The storage device of claim 28, the first command comprising a compression command, wherein the first CSF is to include compression of the first and second data inputs and the second CSF is to include compression of the third and fourth data inputs, the compression command to indicate a storage destination in the non-volatile memory for storing generated first and second transformed objects, the circuitry to:
apply the first CSF to the first and second data inputs to compress the first and second data inputs in order to generate the first transformed object;
apply the second CSF to the third and fourth data inputs to compress the third and fourth data inputs in order to generate the second transformed object; and
cause the first and second transformed objects to be stored in the non-volatile memory at the storage destination indicated in the compression command.

### Claim 31 (depends on 28)

The storage device of claim 28, the first command comprising an encryption command, wherein the first and second CSFs are to include encryption of the first, second, third and fourth data inputs, the encryption command to indicate a storage destination in the non-volatile memory for storing generated first and second transformed inputs, the circuitry to:
apply the first CSF to the first and second data inputs to encrypt the first and second data inputs in order to generate the first transformed object;
apply the second CSF to the third and fourth data inputs to encrypt the third and fourth data inputs in order to generate the second transformed object; and
cause the first and second transformed object to be stored in the non-volatile memory at the storage destination indicated in the encryption command.

### Claim 32

A method comprising:
receiving, at a storage device, a first command from a host, the first command indicating a first data input, a second data input, a third data input and a fourth data input, the first command to also indicate a first computational storage function (CSF) to apply to the first data input and the second data input and to indicate a second CSF to apply to the third data input and the fourth data input;
generating a first transformed object based on applying the first CSF to the first and second data inputs; and
generating a second transformed object based on applying the second CSF to the third and fourth data inputs.

### Claim 33 (depends on 32)

The method of claim 32, further comprising:
storing the first and second transformed objects in non-volatile memory located at the storage device.

### Claim 34 (depends on 32)

The method of claim 32, comprising:
the first command to indicate the first and second CSFs via respective CSF identifiers included in the command; and
selecting the first CSF or the second CSF from a plurality of CSFs performable by logic of the storage device based on the respective identifiers.

### Claim 35 (depends on 32)

The method of claim 32, wherein the first command is to also indicate a fifth data input and a third CSF to apply to the first transformed object and the fifth data input, the method further comprising:
generating a third transformed object based on application of the third CSF to the first transformed object and the fifth data input; and
storing the third transformed object in non-volatile memory located at the storage device.

### Claim 36 (depends on 35)

The method of claim 35, further comprising:
causing the first transformed object to be stored to a buffer located at the storage device; and
obtaining the first transformed object from the buffer to apply the third CSF to the first transformed object and the fifth data input to generate the third transformed object.

### Claim 37 (depends on 32)

The method of claim 32, comprising the second CSF is a different type of CSF as the first CSF.

### Claim 38 (depends on 32)

The method of claim 32, further comprising:
receiving, from the host, a second command to store the first, second, third and fourth data inputs, the second command received prior to receipt of the first command; and
causing the first, second, third and fourth data inputs to be stored in non-volatile memory located at the storage device.

### Claim 39 (depends on 32)

The method of claim 32, further comprising:
the first command to include a pointer to at least one memory address of a system memory arranged to maintain the first, second, third and fourth data inputs, the system memory located at the host; and
obtaining the first, second, third and fourth data inputs from the system memory based on the pointer.

### Claim 40 (depends on 39)

The method of claim 39, the first command comprising a video compression command, wherein the first and second CSFs are to include use of image frame difference algorithms, the first, second, third and fourth data inputs are respective first, second, third and fourth image frames, the video compression command to indicate a storage destination in a non-volatile memory located at the storage device for storing generated first and second transformed objects, the method further comprising:
applying the first CSF to the first and second image frames to determine a first image frame difference in order to generate the first transformed object;
applying the second CSF to the third and fourth image frames to determine a second image frame difference in order to generate the second transformed object; and
causing the first and second transformed objects to be stored in the non-volatile memory at the storage destination indicated in the video compression command.

### Claim 41

A system comprising:
a host comprising a processor;
a system memory device arranged to store a first data input, a second data input, a third data input and a fourth data input; and
a storage device to include circuitry, the circuitry to:
receive, from the host, a first command that indicates the first, second, third and fourth data inputs, the first command to also indicate a first computational storage function (CSF) to apply to the first data input and the second data input and to indicate a second CSF to apply to the third data input and the fourth data input;
generate a first transformed object based on application of the first CSF to the first and second data inputs; and
generate a second transformed object based on application of the second CSF to the third and fourth data inputs.

### Claim 42 (depends on 41)

The system of claim 41, further comprising the logic to:
cause the first and second transformed objects to be stored in non-volatile memory located at the storage device.

### Claim 43 (depends on 41)

The system of claim 41, comprising the first command to indicate the first and second CSFs via respective CSF identifiers included in the command, wherein the circuitry is to select the first CSF or the second CSF from a plurality of CSFs performable by the logic based on the respective CSF identifiers.

### Claim 44 (depends on 41)

The system of claim 41, comprising the processor to receive the first, second, third and fourth data inputs from an input/output device and cause the first, second third and fourth data inputs to be stored to the system memory device prior to sending the first command to the storage device.

### Claim 45 (depends on 41)

The system of claim 41, further comprising the circuitry to:
receive, from the host, a second command to store the first, second, third and fourth data inputs, the second command received prior to receipt of the first command; and
cause the first, second, third and fourth data inputs to be written to a non-volatile memory located at the storage device responsive to the second command.

### Claim 46 (depends on 41)

The system of claim 41, comprising:
the first command to include a pointer to at least one memory address of the system memory device that is arranged to store the first, second, third and fourth data inputs; and
the circuitry to:
obtain the first, second, third and fourth data inputs from the system memory device based on the pointer.

### Claim 47 (depends on 46)

The system of claim 46, the first command comprising a video compression command, wherein the first and second CSFs are to include use of image frame difference algorithms, the first, second, third and fourth data inputs are respective first, second, third and fourth image frames, the video compression command to indicate a storage destination in non-volatile memory located at the storage device for storing generated first and second transformed objects, the circuitry to:
apply the first CSF to the first and second image frames to determine a first image frame difference in order to generate the first transformed object;
apply the second CSF to the third and fourth image frames to determine a second image frame difference in order to generate the second transformed object; and
cause the first and second transformed objects to be stored in the non-volatile memory at the storage destination indicated in the video compression command.
