# US 2024/0201847 A1 · Write Completion Pacing For Unbalanced Command Length

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

- Number: US 2024/0201847 A1
- Document ID: US20240201847A1
- Status: Published application
- Kind: A1
- Application number: 18/218,843
- Filed: 2023-07-06
- Published: 2024-06-20
- Earliest claimed: 2022-12-19
- Assignees: Western Digital Technologies, Inc.
- Applicants: Western Digital Technologies, Inc.
- Inventors: Elkana RICHTER; Shay BENISTY; Amir SEGEV
- Web page: https://patentgrep.com/patent/US20240201847A1

## CPC

- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/061: {Improving I/O performance}
- 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: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A data storage device includes a memory device and a controller coupled to the memory device. When a command is received by the controller from a host device, the controller determines whether the command size is greater than a threshold size. If the command is not greater than the threshold size, the command is sent to a first queue, otherwise, the command is sent to a second queue. Commands are executed from the first queue until a command size tracker value, which increases by a size representative of each command executed from the first queue, equals or exceeds a threshold value. When the command size tracker value equals or exceeds the threshold value, a command from the second queue is executed and the command size tracker value decreases by a size representative of the command from the second queue. Completion messages are sent at specific intervals based on the executing.

## Claims

### Claim 1

A data storage device, comprising:
a memory device; and
a controller coupled to the memory device, wherein the controller is configured to:
receive a command from a host device, wherein the command has a first size;
determine that the first size is less than or equal to a threshold size;
store the command in a first queue responsive to determining that the first size is less than or equal to the threshold size;
increase a command size tracker value responsive to executing the command from the first queue; and
execute a command stored in a second queue when the command size tracker value is greater than or equal to a threshold value, wherein the command stored in the second queue has a second size that is greater than the threshold size.

### Claim 2 (depends on 1)

The data storage device of claim 1, wherein the controller is further configured to, responsive to executing the command stored in the second queue, decrease the command size tracker value by a value representative of the second size.

### Claim 3 (depends on 1)

The data storage device of claim 1, wherein the increasing is by a value representative of the first size.

### Claim 4 (depends on 1)

The data storage device of claim 1, wherein the threshold size and the threshold value are dynamically set.

### Claim 5 (depends on 1)

The data storage device of claim 1, wherein the threshold size and the threshold value are configured after a reset of the data storage device.

### Claim 6 (depends on 1)

The data storage device of claim 1, wherein the controller is further configured to send a completion message for each executed command.

### Claim 7 (depends on 6)

The data storage device of claim 6, wherein the completion message is sent based on a timed interval.

### Claim 8 (depends on 7)

The data storage device of claim 7, wherein the threshold size and the threshold value is based on the timed interval.

### Claim 9 (depends on 1)

The data storage device of claim 1, wherein the controller is further configured to execute commands out of order from an arrival order of the commands.

### Claim 10

A data storage device, comprising:
a memory device; and
a controller coupled to the memory device, wherein the controller comprises:
a completion manager configured to send completion messages to a host device for executed commands received from the host device; and
a scheduler, wherein the scheduler is configured to:
queue a command received from the host device having a size less than or equal to a threshold size in a first queue;
queue a command received from the host device having a size greater than the threshold size in a second queue;
determine to execute, based on a command size tracker value being less than or equal to a threshold value, a command from the first queue or, based on the command size tracker value being greater than the threshold value, a command from the second queue; and
execute the command from the first queue or the command from the second queue based on the determining.

### Claim 11 (depends on 10)

The data storage device of claim 10, wherein the scheduler is further configured to determine that the command size tracker value is greater than or equal to a threshold value, and wherein the command size tracker value is a total size of commands executed from the first queue minus a total size of commands executed from the second queue.

### Claim 12 (depends on 11)

The data storage device of claim 11, wherein the command size tracker value is increased by a value representative of a size of the command executed from the first queue and decreased by a value representative of a size of the command executed from the second queue.

### Claim 13 (depends on 11)

The data storage device of claim 11, wherein the scheduler is further configured to schedule the command from the second queue to execute responsive to determining that the command size tracker value is greater than or equal to the threshold value, wherein the command from the second queue is executed subsequent to executing the command from the first queue.

### Claim 14 (depends on 10)

The data storage device of claim 10, wherein the scheduler comprises a queue control module, and wherein the queue control module is configured to keep track of a total size of commands executed from the first queue minus a total size of commands executed from the second queue.

### Claim 15 (depends on 10)

The data storage device of claim 10, wherein the scheduler is further configured to schedule the command from the second queue to execute when a timeout threshold for the command from the second queue has been exceeded.

### Claim 16 (depends on 10)

The data storage device of claim 10, wherein the completion messages sent to the host device are sent based on a timed interval.

### Claim 17 (depends on 16)

The data storage device of claim 16, wherein the completion manager is configured to delay sending completion messages associated with commands of the first queue or the second queue to satisfy the timed interval.

### Claim 18

A data storage device, comprising:
memory means; and
a controller coupled to the memory means, wherein the controller is configured to:
determine that a command size tracker value exceeds a threshold value, wherein:
the command size tracker value is increased by a value representative of a size of a command executed from a first queue;
commands stored in the first queue have a size less than or equal to a threshold size;
the command size tracker value is decreased by a value representative of a size of a command executed from a second queue;
commands stored in the second queue have a size greater than the threshold size; and
the value representative of the size of the command executed from the first queue is less than the value representative of the size of the command executed from the second queue; and
execute a command from the second queue when the command size tracker value exceeds the threshold value.

### Claim 19 (depends on 18)

The data storage device of claim 18, wherein the controller comprises a reordering queue module, wherein the reordering queue module comprises the first queue and the second queue, and wherein one or more commands received by the controller are executed out of order from an arrival order.

### Claim 20 (depends on 18)

The data storage device of claim 18, wherein the controller is configured to send completion messages to a host device at constant intervals.
