# US 2021/0278985 A1 · Command batching for a memory sub-system

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

- Number: US 2021/0278985 A1
- Document ID: US20210278985A1
- Status: Published application
- Kind: A1
- Application number: 16/809,360
- Filed: 2020-03-04
- Published: 2021-09-09
- Earliest claimed: 2020-03-04
- Assignees: Micron Technology, Inc.
- Applicants: Micron Technology, Inc.
- Inventors: John Paul Traver; Yun Li; Scheheresade Virani; Ning Zhao; Tom Victor Maria Geukens
- Web page: https://patentgrep.com/patent/US20210278985A1

## CPC

- G06F 3/061: {Improving I/O performance}
- G06F 3/0647: {Migration mechanisms}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0673: {Single storage device}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Methods, systems, and devices for command batching for a memory sub-system are described. A memory sub-system can receive a plurality of commands for a plurality of transfer units of a memory sub-system and generate a list of the plurality of transfer units that includes pointers between the plurality of transfer units. The memory sub-system can store at least one pointer of the list in a shared memory that is shared by a plurality of cores, the at least one pointer indicating a next transfer unit of the list. The memory sub-system can send an indicator of a first transfer unit of the list based on storing the at least one pointer in the shared memory and retrieve the plurality of transfer units from the shared memory based on sending the indicator of the first transfer unit and storing the at least one pointer in the shared memory.

## Claims

### Claim 1

A method comprising:
receiving a plurality of commands for a plurality of transfer units of a memory sub-system;
generating a list of the plurality of transfer units that includes pointers between the plurality of transfer units;
storing at least one pointer of the list in a shared memory that is shared by a plurality of cores, the at least one pointer indicating a next transfer unit of the list;
sending, from an input/output core to a processing core, an indicator of a first transfer unit of the list based at least in part on storing the at least one pointer in the shared memory; and
retrieving the plurality of transfer units from the shared memory based at least in part on sending the indicator of the first transfer unit and storing the at least one pointer in the shared memory.

### Claim 2 (depends on 1)

The method of claim 1, wherein retrieving the plurality of transfer units further comprises:
retrieving the first transfer unit from the shared memory based at least in part on sending the indicator;
retrieving the at least one pointer from the shared memory based at least in part on retrieving the first transfer unit from the shared memory; and
retrieving the next transfer unit from the shared memory based at least in part on retrieving the at least one pointer.

### Claim 3 (depends on 2)

The method of claim 2, further comprising:
retrieving a second pointer from the shared memory based at least in part on retrieving the next transfer unit from the shared memory; and
identifying a second next transfer unit based at least in part on the second pointer.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
storing, in the shared memory of the memory sub-system, the plurality of transfer units based at least in part on receiving the plurality of commands.

### Claim 5 (depends on 1)

The method of claim 1, wherein retrieving the plurality of transfer units is based at least in part on sending a single indicator of the first transfer unit of the plurality of transfer units, wherein the indicator comprises the single indicator.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
identifying that a second pointer associated with a second transfer unit of the plurality of transfer units is stored in the shared memory based at least in part on retrieving the transfer unit from the shared memory.

### Claim 7 (depends on 6)

The method of claim 6, further comprising:
retrieving, from the shared memory, the second transfer unit based at least in part on identifying that the second pointer is stored in the shared memory.

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
assigning the plurality of transfer units in the list to at least one internal command to write data to a memory device of the memory sub-system based at least in part on retrieving the plurality of transfer units.

### Claim 9 (depends on 8)

The method of claim 8, further comprising:
determining that a plurality of fields of the at least one internal command are occupied based at least in part on assigning the plurality of transfer units to the at least one internal command.

### Claim 10 (depends on 9)

The method of claim 9, further comprising:
sending, to the memory device, the at least one internal command based at least in part on determining that the plurality of fields of the at least one internal command are occupied.

### Claim 11 (depends on 1)

The method of claim 1, wherein links between the plurality of transfer units in the list are independent of a host command.

### Claim 12 (depends on 1)

The method of claim 1, further comprising:
performing a write process to write the plurality of transfer units to a memory device of the memory sub-system based at least in part on retrieving the plurality of transfer units from the shared memory.

### Claim 13

A system comprising:
a plurality of memory devices; and
a processing device, operatively coupled with the plurality of memory devices, to:
receive a plurality of commands for a plurality of transfer units of a memory sub-system;
generate a list of the plurality of transfer units that includes pointers between the plurality of transfer units;
store at least one pointer of the list in a shared memory that is shared by a plurality of cores, the at least one pointer indicating a next transfer unit of the list;
send, from an input/output core to a processing core, an indicator of a first transfer unit of the list based at least in part on storing the at least one pointer in the shared memory; and
retrieve the plurality of transfer units from the shared memory based at least in part on sending the indicator of the first transfer unit and storing the at least one pointer in the shared memory.

### Claim 14 (depends on 13)

The system of claim 13, further comprising:
the processing device to:
retrieve the first transfer unit from the shared memory based at least in part on sending the indicator;
retrieve the at least one pointer from the shared memory based at least in part on retrieving the first transfer unit from the shared memory; and
retrieve the next transfer unit from the shared memory based at least in part on retrieving the at least one pointer.

### Claim 15 (depends on 14)

The system of claim 14, further comprising:
the processing device to:
retrieve a second pointer from the shared memory based at least in part on retrieving the next transfer unit from the shared memory; and
identify a second next transfer unit based at least in part on the second pointer.

### Claim 16 (depends on 13)

The system of claim 13, further comprising:
the processing device to:
store, in the shared memory of the memory sub-system, the plurality of transfer units based at least in part on receiving the plurality of commands.

### Claim 17 (depends on 13)

The system of claim 13, further comprising:
the processing device to:
retrieve, from the shared memory, the second transfer unit based at least in part on identifying that a second pointer is stored in the shared memory.

### Claim 18

A non-transitory computer-readable storage medium comprising instructions that, when executed by a processing device, cause the processing device to:
receive a plurality of commands for a plurality of transfer units of a memory sub-system;
generate a list of the plurality of transfer units that includes pointers between the plurality of transfer units;
store at least one pointer of the list in a shared memory that is shared by a plurality of cores, the at least one pointer indicating a next transfer unit of the list;
send, from an input/output core to a processing core, an indicator of a first transfer unit of the list based at least in part on storing the at least one pointer in the shared memory; and
retrieve the plurality of transfer units from the shared memory based at least in part on sending the indicator of the first transfer unit and storing the at least one pointer in the shared memory.

### Claim 19 (depends on 18)

The non-transitory computer-readable storage medium of claim 18, wherein the processing device is further to:
retrieve the first transfer unit from the shared memory based at least in part on sending the indicator;
retrieve the at least one pointer from the shared memory based at least in part on retrieving the first transfer unit from the shared memory; and
retrieve the next transfer unit from the shared memory based at least in part on retrieving the at least one pointer.

### Claim 20 (depends on 19)

The non-transitory computer-readable storage medium of claim 19, wherein the processing device is further to:
retrieve a second pointer from the shared memory based at least in part on retrieving the next transfer unit from the shared memory; and
identify a second next transfer unit based at least in part on the second pointer.
