# US 12,223,210 B2 · Virtual computational storage devices

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

- Number: US 12,223,210 B2
- Document ID: US12223210B2
- Status: Granted
- Kind: B2
- Application number: 18/229,902
- Filed: 2023-08-03
- Published: 2023-11-30
- Granted: 2025-02-11
- Earliest claimed: 2021-06-02
- Assignees: Samsung Electronics Co., Ltd.
- Applicants: Samsung Electronics Co., Ltd.
- Inventors: Gayathiri Venkataraman; Vishwanath Maram; Matthew Shaun Bryson
- Web page: https://patentgrep.com/patent/US12223210B2

## CPC

- G06F 3/0664: {at device level, e.g. emulation of a storage device or system}
- G06F 9/45533: {Hypervisors; Virtual machine monitors}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0635: {by changing the path, e.g. traffic rerouting, path reconfiguration}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F 2009/45579: {I/O management, e.g. providing access to device drivers or storage}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A system includes a virtual computational storage emulation module configured to provide a virtual computational storage device. The system further includes a storage element, where the virtual computational storage emulation module is configured to store data associated with the virtual computational storage device at the storage element. The system further includes a compute element. The virtual computational storage emulation module is configured to send a compute request associated with the virtual computational storage device to the compute element.

## Claims

### Claim 1

A system comprising:
a first storage element configured to store first data;
a first compute element;
a second compute element; and
a processor configured to execute instructions for providing a virtual computational storage device, the instructions further causing the processor to:
receive a first compute request associated with the virtual computational storage device;
determine that the first compute request is directed to the first data stored in the first storage element;
based on the instructions that cause the processor to determine that the first compute request is directed to the first data, send the first compute request to the first compute element for generating a first output based on the first compute request, wherein the first compute request is associated with the first data;
receive a second compute request associated with the virtual computational storage device; and
send the second compute request to the second compute element for generating a second output based on the second compute request.

### Claim 2 (depends on 1)

The system of claim 1, wherein the first storage element comprises a solid state drive, and wherein the first storage element, the first compute element, and the second compute element correspond to components of a computational storage device.

### Claim 3 (depends on 1)

The system of claim 1, wherein the first storage element, the first compute element, and the second compute element correspond to components of a server device.

### Claim 4 (depends on 1)

The system of claim 1, wherein the first storage element corresponds to a component of a storage device, and wherein one of the first compute element or the second compute element corresponds to a component of a device distinct from the storage device.

### Claim 5 (depends on 1)

The system of claim 1, wherein the instructions further cause the processor to advertise availability of the virtual computational storage device.

### Claim 6 (depends on 1)

The system of claim 1, wherein the system further includes a second storage element, wherein the instructions further cause the processor to store second data associated with the virtual computational storage device at the second storage element.

### Claim 7 (depends on 6)

The system of claim 6, wherein a first address range of the virtual computational storage device is associated with the first storage element, wherein a second address range of the virtual computational storage device is associated with the second storage element, and wherein the instructions further cause the processor to:
store the first data at the first storage element in response to a first request to store the first data for the first address range; and
store the second data at the second storage element in response to a second request to store the second data for the second address range.

### Claim 8 (depends on 6)

The system of claim 6, wherein the instructions further cause the processor to select the second storage element to store the second data based on a load balancing algorithm.

### Claim 9 (depends on 1)

The system of claim 1, wherein the instructions further cause the processor to:
translate the first compute request to generate a translated first compute request, wherein the translated first compute request is configured to be sent to the first compute element for generating the first output.

### Claim 10 (depends on 1)

The system of claim 1, wherein the instructions further cause the processor to select the second compute element for the second compute request based on an address of second data associated with the second compute request.

### Claim 11 (depends on 1)

The system of claim 1, wherein the instructions further cause the processor to select the second compute element for the second compute request based on a load balancing algorithm.

### Claim 12 (depends on 1)

The system of claim 1, wherein the instructions further cause the processor to provide a second virtual computational storage device.

### Claim 13 (depends on 12)

The system of claim 12, wherein the instructions further cause the processor to store second data associated with the second virtual computational storage device at the first storage element.

### Claim 14 (depends on 12)

The system of claim 12, wherein the instructions further cause the processor to send a third compute request associated with the second virtual computational storage device to the first compute element.

### Claim 15

A method comprising:
providing, by a processor, a virtual computational storage device, wherein first data associated with the virtual computational storage device is stored at a first storage element;
receiving, by the processor, a first compute request associated with the virtual computational storage device;
determining, by the processor, that the first compute request is directed to the first data stored in the first storage element;
based on the determining that the first compute request is directed to the first data, sending the first compute request to a first compute element for generating a first output based on the first compute request, wherein the first compute request is associated with the first data;
receiving, by the processor, a second compute request associated with the virtual computational storage device; and
sending, by the processor, the second compute request to a second compute element for generating a second output based on the second compute request.

### Claim 16 (depends on 15)

The method of claim 15, wherein second data associated with the virtual computational storage device is stored at a second storage element.

### Claim 17 (depends on 16)

The method of claim 16, wherein a first address range of the virtual computational storage device is associated with the first storage element, wherein a second address range of the virtual computational storage device is associated with the second storage element, the method further comprising:
storing the first data at the first storage element in response to a first request to store the first data for the first address range; and
storing the second data at the second storage element in response to a second request to store the second data for the second address range.

### Claim 18 (depends on 15)

The method of claim 15, further comprising:
receiving a storage request identifying a first address of the virtual computational storage device; and
sending a translated storage request to the first storage element, the translated storage request identifying a translated address of the first storage element.

### Claim 19 (depends on 15)

The method of claim 15 further comprising:
translating, by the processor, the first compute request to generate a translated first compute request, wherein the translated first compute request is sent to the first compute element for generating the first output.

### Claim 20 (depends on 15)

The method of claim 15 further comprising:
selecting the second compute element for the second compute request based on an address of second data associated with the second compute request.
