# US 11,307,806 B2 · Controlling SSD performance by queue depth

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

- Number: US 11,307,806 B2
- Document ID: US11307806B2
- Status: Granted
- Kind: B2
- Application number: 16/936,348
- Filed: 2020-07-22
- Published: 2022-01-27
- Granted: 2022-04-19
- Earliest claimed: 2020-07-22
- Assignees: Seagate Technology LLC
- Applicants: Seagate Technology LLC
- Inventors: Shuhei Tanakamaru; Ryan James Goss; Dana Lynn Simonson; Erich Franz Haratsch
- Web page: https://patentgrep.com/patent/US11307806B2

## CPC

- G06F 3/061: {Improving I/O performance}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0614: {Improving the reliability of storage systems}
- G06F 3/0629: {Configuration or reconfiguration of storage systems}
- G06F 3/0653: {Monitoring storage devices or systems}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F 2212/7202: Allocation control and policies
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Improving performance in solid state devices (SSDs) by controlling or throttling the depth of the request queue. In one implementation, a method includes monitoring a request queue in a solid state device (an SSD), the request queue comprising a first request and a second request having an actual time interval therebetween, determining a queue depth for the request queue, determining a target interval based on the queue depth and a target queue depth, and responsive to the actual time interval being less than the target interval, delaying acting on the second request until after the target interval.

## Claims

### Claim 1

A method comprising:
monitoring a request queue in a solid state device (an SSD), the request queue comprising a first request and a second request having an actual time interval therebetween;
determining a queue depth for the request queue;
determining a target interval by calculating a normalized difference in queue depth based on the queue depth and a target queue depth;
modifying the target interval based on the normalized difference in queue depth to a modified target interval; and
responsive to the actual time interval being less than the modified target interval, delaying acting on the second request until after the modified target interval.

### Claim 2 (depends on 1)

The method of claim 1, wherein:
determining the queue depth for the request queue comprises determining an average queue depth for the request queue; and
determining the target interval based on the queue depth and the target queue depth comprises determining the target interval based on the average queue depth and the target queue depth.

### Claim 3 (depends on 2)

The method of claim 2, wherein the average queue depth is an arithmetic mean, moving average, or exponential moving average based on the queue depth.

### Claim 4 (depends on 1)

The method of claim 1, wherein the target interval is adaptive based on an adaptive queue depth.

### Claim 5 (depends on 1)

The method of claim 1, wherein the queue depth is an adaptive average queue depth and the target interval is adaptive based on the adaptive average queue depth.

### Claim 6 (depends on 1)

The method of claim 1, wherein modifying the target interval includes modifying the target interval based on the normalized difference in queue depth and a coefficient.

### Claim 7

A method comprising:
monitoring a request queue to a semiconductor storage device (an SSD), the request queue having a depth and comprising at least a first request, a second request, and an outgoing interval between the requests; and
responsive to the outgoing interval being less than a target interval based on a normalized difference of a target queue depth and the queue depth, setting an actual outgoing interval to be no less than the target interval and acting on the second request after expiration of the target interval.

### Claim 8 (depends on 7)

The method of claim 7, wherein the target interval is based on the normalized difference of the target queue depth and an average queue depth over time.

### Claim 9 (depends on 8)

The method of claim 8, wherein the average queue depth is an arithmetic mean, moving average, or exponential moving average based on the queue depth.

### Claim 10 (depends on 7)

The method of claim 7, wherein the queue depth is an adaptive average queue depth and the target interval is adaptive based on the adaptive average queue depth.

### Claim 11

A system comprising:
a solid state device (SSD) and a host; and
an interval throttling module stored in memory and implemented by a processor, the interval throttling module located in a data request completion path of the system and comprising a queue memory unit, a delay unit configured to delay acting on a second request if an outgoing interval between a first request and the second request is less than a target interval, and a calculator unit configured to dynamically adjust the target interval based on a normalized difference of a queue depth and a throttle queue depth.

### Claim 12 (depends on 11)

The system of claim 11, wherein the interval throttling module is located in the SSD.

### Claim 13 (depends on 12)

The system of claim 12, wherein the interval throttling module is located between a back-end controller and a front-end controller.

### Claim 14 (depends on 12)

The system of claim 12, wherein the interval throttling module is located between a back-end controller and Flash memory.

### Claim 15 (depends on 11)

The system of claim 11, wherein the interval throttling module is located between the SSD and the host.
