# US 12,216,942 B2 · Controller and control method

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

- Number: US 12,216,942 B2
- Document ID: US12216942B2
- Status: Granted
- Kind: B2
- Application number: 18/483,468
- Filed: 2023-10-09
- Published: 2024-04-18
- Granted: 2025-02-04
- Earliest claimed: 2022-10-12
- Assignees: Kioxia Corporation
- Applicants: Kioxia Corporation
- Inventors: Yoshihiro Ohba; Tomoya Sanuki; Takeshi Ishihara
- Web page: https://patentgrep.com/patent/US12216942B2

## CPC

- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0634: {by changing the state or mode of one or more devices}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F 9/30032: {Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE}
- G06F 9/3004: {to perform operations on memory}
- G06F 9/30076: {to perform miscellaneous control operations, e.g. NOP}
- G06F 9/30185: {according to one or more bits in the instruction, e.g. prefix, sub-opcode}
- G06F 12/1009: using page tables, e.g. page table structures
- G06F 3/0658: {Controller construction arrangements}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

According to one embodiment, a controller includes a first interface, a second interface, a virtual register table, a memory management unit and a calculation processing unit. The first interface receives an I/O command from a host. The second interface transmits and receives first host data to and from a storage. The virtual register table has a virtual address specified by a page number assigned to a page in which data to be used to process a calculation instruction is stored and a page offset, and a data size of the data. The memory management unit stores, into a memory, the copy of the first host data, and updates the virtual register table. The calculation processing unit processes the calculation instruction by referring to the virtual register table.

## Claims

### Claim 1

A controller for controlling a computing storage device that is connectable to a host and includes a storage, the controller comprising:
a first interface configured to receive an I/O command from the host, the I/O command being designating first host data;
a second interface configured to transmit and receive the first host data to and from the storage;
a memory for storing a copy of the first host data designated in the I/O command;
a virtual register table having a virtual address specified by a page number assigned to a page in which data to be used to process a calculation instruction in accordance with a calculation option accompanying the first host data is stored and a page offset, and a data size of the data, the virtual address and the data size being associated with each virtual register number identified based on the calculation option;
a memory management unit configured to store, into the memory, the copy of the first host data designated in the I/O command, and update the virtual register table; and
a calculation processing unit configured to process the calculation instruction using the first host data designated in the I/O command, by referring to the virtual register table.

### Claim 2 (depends on 1)

The controller according to claim 1, further comprising a page table having a flag indicating a storage destination of data and a real address of the storage destination, the flag and the real address being associated with each page number, wherein
the storage includes a first area for storing the first host data, and a second area for temporarily storing the copy of the first host data stored in the memory, and
when a free space in the memory for storing the copy of the first host data designated in the I/O command is insufficient, the memory management unit is configured to store, into the second area, a copy of second host data stored in a third area in the memory by referring to the page table, store the copy of the first host data into the third area, and update the page table.

### Claim 3 (depends on 1)

The controller according to claim 1, wherein
the I/O command includes a read command for reading the first host data from the storage,
the calculation option designates an operation mode of the computing storage device, and
when the designated operation mode is a copy-with-read (CwR) mode, the memory management unit is configured to copy, into the memory, the first host data read from the storage based on the read command, and set a virtual address of a destination of the copying and a data size of the first host data in the virtual register table, the virtual address of the destination and the data size of the first host data being associated with the virtual register number identified based on the calculation option.

### Claim 4 (depends on 1)

The controller according to claim 1, wherein
the I/O command includes a write command for writing the first host data into the storage,
the calculation option designates an operation mode of the computing storage device, and
when the designated operation mode is a copy-with-write (CwW) mode, the memory management unit is configured to copy, into the memory, the first host data to be written into the storage based on the write command, and set a virtual address of a destination of the copying and a data size of the first host data in the virtual register table, the virtual address of the destination and the data size of the first host data being associated with the virtual register number identified based on the calculation option.

### Claim 5 (depends on 1)

The controller according to claim 1, wherein
the I/O command includes a read command for reading the first host data from the storage,
the calculation option designates an operation mode of the computing storage device,
when the designated operation mode is a compute-on-read (CoR) mode, the memory management unit is configured to copy, into the memory, the first host data read from the storage based on the read command, and set a virtual address of a destination of the copying and a data size of the first host data in the virtual register table, the virtual address of the destination and the data size of the first host data being associated with the virtual register number identified based on the calculation option,
the calculation processing unit is configured to process the calculation instruction using the first host data copied into the memory by executing a program that is set beforehand, and
the first interface is configured to transmit a result of the processing to the host.

### Claim 6 (depends on 1)

The controller according to claim 1, wherein
the I/O command includes a write command for writing the first host data into the storage,
the calculation option designates an operation mode of the computing storage device,
when the designated operation mode is a compute-on-write (CoW) mode, the memory management unit is configured to copy, into the memory, the first host data to be written into the storage based on the write command, and set a virtual address of a destination of the copying and a data size of the first host data in the virtual register table, the virtual address of the destination and the data size of the first host data being associated with the virtual register number identified based on the calculation option,
the calculation processing unit is configured to process the calculation instruction using the first host data copied into the memory by executing a program that is set beforehand, and
the second interface is configured to transmit a result of the processing to the storage.

### Claim 7 (depends on 1)

The controller according to claim 1, wherein the calculation instruction includes a secret calculation instruction.

### Claim 8 (depends on 1)

The controller according to claim 1, wherein
a copy of first host data which is not accompanied by the calculation option is not stored into the memory, and
processing of the calculation instruction using the first host data which is not accompanied by the calculation option is not performed.

### Claim 9 (depends on 1)

The controller according to claim 1, wherein
the first interface is connectable to the host, based on an NVMe standard, and
the I/O command is a command conforming to the NVMe standard.

### Claim 10 (depends on 9)

The controller according to claim 9, wherein the calculation option accompanying the first host data is included in metadata attached to the first host data.

### Claim 11 (depends on 9)

The controller according to claim 9, wherein the calculation option accompanying the first host data is designated as second host data different from the first host data.

### Claim 12 (depends on 11)

The controller according to claim 11, wherein
a read command and a write command conforming to the NVMe standard each include a logical address to be used to access the storage,
a logical address space based on the logical address includes a first space for the first host data and a second space for the second host data, and
the first and second host data are distinguished based on the logical addresses included in the read command and the write command.

### Claim 13 (depends on 1)

The controller according to claim 1, wherein
the storage is a nonvolatile memory, and
the controller is connected to the nonvolatile memory, and is configured to control the nonvolatile memory.

### Claim 14 (depends on 13)

The controller according to claim 13, wherein the computing storage device is a solid state drive (SSD).

### Claim 15 (depends on 1)

The controller according to claim 1, wherein the controller is connectable to the host via a network in conformity with an NVMe-oF standard.

### Claim 16 (depends on 15)

The controller according to claim 15, wherein
the computing storage device includes an NVMe-oF target module, and
the controller is disposed inside the NVMe-oF target module.

### Claim 17 (depends on 1)

The controller according to claim 1, further comprising
a state table, wherein
the first interface includes a first queue being configured to store I/O commands received from the host in order of reception, and a second queue being configured to store completion notifications for the I/O commands received from the storage in order of reception,
when the free space in the memory for storing the copy of the first host data is insufficient, the memory management unit is configured to store, into the state table, a command ID assigned to the I/O command designating the first host data and queue information indicating the first queue storing the I/O command or the second queue storing the completion notification for the I/O command, and suspend processing for the first queue or the second queue indicated by the queue information, and
the memory management unit is configured to issue, to the storage, a swapping command for swapping on the second host data stored in the memory, using the command ID stored in the state table.

### Claim 18

A control method for controlling a computing storage device that is connectable to a host and includes a storage, the control method comprising:
receiving an I/O command from the host, the I/O command being designating first host data;
storing a copy of the first host data designated in the I/O command into a memory, and updating a virtual register table; and
processing a calculation instruction using the first host data designated in the I/O command, by referring to the virtual register table, wherein
the virtual register table has a virtual address represented by a page number assigned to a page in which data to be used to process the calculation instruction in accordance with a calculation option accompanying the first host data is stored and a page offset, and a data size of the data, the virtual address and the data size being associated with each virtual register number identified based on the calculation option.
