# US 12,182,445 B2 · NVMe command completion management for host system memory

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

- Number: US 12,182,445 B2
- Document ID: US12182445B2
- Status: Granted
- Kind: B2
- Application number: 17/886,369
- Filed: 2022-08-11
- Published: 2023-07-06
- Granted: 2024-12-31
- Earliest claimed: 2021-12-30
- Assignees: Micron Technology, Inc.
- Applicants: Micron Technology, Inc.
- Inventors: Sahil Soi; Dhananjayan Athiyappan
- Web page: https://patentgrep.com/patent/US12182445B2

## CPC

- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0611: {in relation to response time}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- 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

A processing device in a memory sub-system identifies an indication of a completion of a memory access command directed to a memory device and determines whether there are other memory access commands directed to the memory device that are pending. Responsive to determining that there are other memory access commands pending, the processing device coalesces additional indications of completions of the other memory access commands that are available within a threshold period of time with the indication of the completion into a completion data chunk and sends the completion data chunk to a host system. The host system is to store the completion data chunk as one or more completion queue entries in a completion queue in a host memory of the host system via a single host memory write operation.

## Claims

### Claim 1

A system comprising:
a memory device; and
a processing device, operatively coupled with the memory device, to perform operations comprising:
identifying an indication of a completion of a memory access command directed to the memory device;
determining whether there are other memory access commands directed to the memory device that are pending;
responsive to determining that there are other memory access commands that are pending and have not yet been completed, waiting for a threshold period of time to expire before sending the indication of the completion to a host system;
responsive to determining that the threshold period of time has expired, coalescing additional indications of completions of the other memory access commands that have since completed and are available with the indication of the completion into a completion data chunk; and
sending the completion data chunk to the host system, the host system to store the completion data chunk as one or more completion queue entries in a completion queue in a host memory of the host system via a single host memory write operation.

### Claim 2 (depends on 1)

The system of claim 1, wherein the processing device is to perform operations further comprising:
responsive to determining that there are no other memory access commands pending, sending the indication of the completion to the host system as a partial completion data chunk, wherein the partial completion data chunk has a smaller size than a host memory write size granularity.

### Claim 3 (depends on 1)

The system of claim 1, wherein the processing device is to perform operations further comprising:
responsive to determining that there are no other memory access commands pending, appending dummy data to the indication of the completion to form a full completion data chunk equal to a host memory write size granularity; and
sending the full completion data chunk comprising the indication of the completion and the dummy data to the host system.

### Claim 4 (depends on 1)

The system of claim 1, wherein the processing device is to perform operations further comprising:
determining whether the indication of the completion of the memory access command or any of the additional indications of the completions of the other memory access commands indicate an error of a corresponding memory access operation; and
responsive to there being an indication of an error, sending the indication of the error to the host system without waiting for the threshold period of time to expire.

### Claim 5 (depends on 1)

The system of claim 1, wherein coalescing the additional indications of completions of the other memory access commands that are available within the threshold period of time into the completion data chunk comprises:
determining whether the threshold period of time has expired; and
responsive to the threshold period of time having expired, sending the completion data chunk to the host system, wherein the completion data chunk comprises a partial completion data chunk having a smaller size than a host memory write size granularity.

### Claim 6 (depends on 1)

The system of claim 1, wherein coalescing the additional indications of completions of the other memory access commands that are available within the threshold period of time into the completion data chunk comprises:
determining whether the threshold period of time has expired;
responsive to the threshold period of time having expired, appending dummy data to the additional indications of completions to form a full completion data chunk equal to a host memory write size granularity; and
sending the full completion data chunk comprising the indications of the completions and the dummy data to the host system.

### Claim 7 (depends on 5)

The system of claim 5, wherein coalescing the additional indications of completions of the other memory access commands that are available within the threshold period of time into the completion data chunk comprises:
responsive to the threshold period of time not having expired, determining whether a size of the coalesced indications has reached the host memory write size granularity; and
responsive to determining that the size of the coalesced indications has reached the host memory write size granularity, sending the completion data chunk to the host system, wherein the completion data chunk comprises a full completion data chunk equal to the host memory write size granularity.

### Claim 8 (depends on 7)

The system of claim 7, wherein coalescing the additional indications of completions of the other memory access commands that are available within the threshold period of time into the completion data chunk comprises:
responsive to determining that the size of the coalesced indications has not reached the host memory write size granularity, continuing to coalesce additional indications of completions of the other memory access commands.

### Claim 9

A method comprising:
identifying an indication of a completion of a memory access command directed to a memory device;
determining whether there are other memory access commands directed to the memory device that are pending;
responsive to determining that there are other memory access commands that are pending and have not yet been completed, waiting for a threshold period of time to expire before sending the indication of the completion to a host system;
responsive to determining that the threshold period of time has expired, coalescing additional indications of completions of the other memory access commands that have since completed and are available with the indication of the completion into a completion data chunk; and
sending the completion data chunk to the host system, the host system to store the completion data chunk as one or more completion queue entries in a completion queue in a host memory of the host system via a single host memory write operation.

### Claim 10 (depends on 9)

The method of claim 9, further comprising:
responsive to determining that there are no other memory access commands pending, sending the indication of the completion to the host system as a partial completion data chunk, wherein the partial completion data chunk has a smaller size than a host memory write size granularity.

### Claim 11 (depends on 9)

The method of claim 9, further comprising:
responsive to determining that there are no other memory access commands pending, appending dummy data to the indication of the completion to form a full completion data chunk equal to a host memory write size granularity; and
sending the full completion data chunk comprising the indication of the completion and the dummy data to the host system.

### Claim 12 (depends on 9)

The method of claim 9, further comprising:
determining whether the indication of the completion of the memory access command or any of the additional indications of the completions of the other memory access commands indicate an error of a corresponding memory access operation; and
responsive to there being an indication of an error, sending the indication of the error to the host system without waiting for the threshold period of time to expire.

### Claim 13 (depends on 9)

The method of claim 9, wherein coalescing the additional indications of completions of the other memory access commands that are available within the threshold period of time into the completion data chunk comprises:
determining whether the threshold period of time has expired; and
responsive to the threshold period of time having expired, sending the completion data chunk to the host system, wherein the completion data chunk comprises a partial completion data chunk having a smaller size than a host memory write size granularity.

### Claim 14 (depends on 9)

The method of claim 9, wherein coalescing the additional indications of completions of the other memory access commands that are available within the threshold period of time into the completion data chunk comprises:
determining whether the threshold period of time has expired;
responsive to the threshold period of time having expired, appending dummy data to the additional indications of completions to form a full completion data chunk equal to a host memory write size granularity; and
sending the full completion data chunk comprising the indications of the completions and the dummy data to the host system.

### Claim 15 (depends on 13)

The method of claim 13, wherein coalescing the additional indications of completions of the other memory access commands that are available within the threshold period of time into the completion data chunk comprises:
responsive to the threshold period of time not having expired, determining whether a size of the coalesced indications has reached the host memory write size granularity; and
responsive to determining that the size of the coalesced indications has reached the host memory write size granularity, sending the completion data chunk to the host system, wherein the completion data chunk comprises a full completion data chunk equal to the host memory write size granularity.

### Claim 16 (depends on 15)

The method of claim 15, wherein coalescing the additional indications of completions of the other memory access commands that are available within the threshold period of time into the completion data chunk comprises:
responsive to determining that the size of the coalesced indications has not reached the host memory write size granularity, continuing to coalesce additional indications of completions of the other memory access commands.

### Claim 17

A system comprising:
a memory device; and
a processing device, operatively coupled with the memory device, to perform operations comprising:
identifying an indication of a completion of a memory access command directed to the memory device;
determining whether there are other memory access commands directed to the memory device that are pending;
responsive to determining that there are other memory access commands pending, determining whether a size of the indication of the completion is smaller than a host memory write size granularity;
responsive to determining that the size of the indication of the completion is smaller than the host memory write size granularity, appending dummy data to the indication of the completion to form a full completion data chunk; and
sending the full completion data chunk comprising the indication of the completion and the dummy data to a host system.

### Claim 18 (depends on 17)

The system of claim 17, wherein the host system is to store the full completion data chunk as one or more completion queue entries in a completion queue in a host memory of the host system via a single host memory write operation.

### Claim 19 (depends on 18)

The system of claim 18, where the full completion data chunk is equal to a host memory write size granularity of the host memory.

### Claim 20 (depends on 19)

The system of claim 19, wherein the processing device is to perform operations further comprising:
responsive to determining that the size of the indication of the completion is not smaller than the host memory write size granularity, sending the indication of the completion to the host system as a full completion data chunk equal to the host memory write size granularity.
