# US 9,436,634 B2 · Enhanced queue management

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

- Number: US 9,436,634 B2
- Document ID: US9436634B2
- Status: Granted
- Kind: B2
- Application number: 14/209,028
- Filed: 2014-03-13
- Published: 2014-09-18
- Granted: 2016-09-06
- Earliest claimed: 2013-03-14
- Assignees: Seagate Technology LLC
- Applicants: Seagate Technology LLC
- Inventors: Timothy Lawrence Canepa; Earl T. Cohen
- Web page: https://patentgrep.com/patent/US9436634B2

## CPC

- G06F 13/362: with centralised access control
- G06F 3/0611: {in relation to response time}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0688: {Non-volatile semiconductor memory arrays}
- G06F 13/1642: {with request queuing}
- G06F 13/364: using independent requests or grants, e.g. using separated request and grant lines
- G06F 13/4282: {on a serial bus, e.g. I2C bus, SPI bus (on daisy chain buses G06F13/4247)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A paired queue apparatus and method comprising request and response queues wherein queue head and tail pointer update values are communicated through an enhanced pointer word data format providing pointer indicator information and optional auxiliary information in a single transfer, wherein auxiliary information provides additional system communication without consuming additional bandwidth. Auxiliary information is optionally contained in a response data entry written to a response queue or in a request entry written to a request queue.

## Claims

### Claim 1

A system, comprising:
means for exchanging data words via one or more predetermined storage locations to at least convey queue pointer update information between a host bus adapter and a host bus coupled mass storage device;
means for conveying mass storage device auxiliary control information between the host bus adapter and the mass storage device via the exchanged data words, at the same rate and latency employed to the convey the queue pointer update information, and without requiring additional data exchanges or storage locations beyond those already employed to convey the queue pointer update information; and
wherein each of the data words comprise a first number of bits that is a native data unit width of a host processing element, the queue pointer update information requires at most a second number of bits that is less than the first number of bits, and the auxiliary control information requires a third number of bits that is no more than the difference of the first number of bits less the second number of bits.

### Claim 2 (depends on 1)

The system of claim 1, wherein the one or more predetermined storage locations comprise at least one location in a main memory of a coupled host.

### Claim 3 (depends on 1)

The system of claim 1, wherein the one or more predetermined storage locations comprise at least one location in the mass storage device.

### Claim 4 (depends on 1)

The system of claim 1, wherein the mass storage device is a solid-state-drive (SSD) and the host bus is compatible with at least one version of the PCIe host bus standard.

### Claim 5 (depends on 1)

The system of claim 1, wherein the native data unit width is 32-bits, the queue pointer update information at least at times uses a 16-bit queue index, and the auxiliary control information at least at times uses 16-bits.

### Claim 6 (depends on 1)

The system of claim 1, wherein the auxiliary control information is used to abort a pending or executing task in a controller of the mass storage device.

### Claim 7 (depends on 1)

The system of claim 1, wherein the auxiliary control information is used to alter the arbitration policy for at least one request queue associated with tasks to be performed by a controller of the mass storage device.

### Claim 8 (depends on 1)

The system of claim 1, wherein the auxiliary control information is used to affect the servicing order of request queues associated with tasks to be performed by a controller of the mass storage device.

### Claim 9 (depends on 1)

The system of claim 1, wherein the auxiliary control information is used to affect the servicing frequency of request queues associated with tasks to be performed by a controller of the mass storage device.

### Claim 10 (depends on 1)

The system of claim 1, wherein the auxiliary control information is used to associatively group a series of operations in a request queue associated with tasks to be performed by a controller of the mass storage device.

### Claim 11 (depends on 1)

The system of claim 1, wherein the auxiliary control information is used to provide queue credit information as part of a credit based method of managing queue servicing by a controller of the mass storage device.

### Claim 12 (depends on 1)

The system of claim 1, further comprising:
request queue means for queuing tasks to the mass storage device;
means for parsing the exchanged data words to obtain a first portion having the queue pointer update information and a second portion having the auxiliary control information; and
wherein the queue pointer update information comprised in at least some of the exchanged data words is a request queue tail pointer update.

### Claim 13 (depends on 1)

The system of claim 1, further comprising:
means for altering the mass storage device processing of one or more tasks in response to the auxiliary control information comprised with a request queue tail pointer update in a same one of the exchanged data words.

### Claim 14

A computer program product embodied on a non-transitory computer readable medium having a set of instructions stored therein that when executed by a processing element cause the processing element to perform operations comprising:
exchanging data words via one or more predetermined storage locations to at least convey queue pointer update information between a host bus adapter and a host bus coupled mass storage device;
conveying mass storage device auxiliary control information between the host bus adapter and the mass storage device via the exchanged data words, at the same rate and latency employed to the convey the queue pointer update information, and without requiring additional data exchanges or storage locations beyond those already employed to convey the queue pointer update information; and
wherein each of the data words comprise a first number of bits that is a native data unit width of the processing element, the queue pointer update information requires at most a second number of bits that is less than the first number of bits, and the auxiliary control information requires a third number of bits that is no more than the difference of the first number of bits less the second number of bits.

### Claim 15 (depends on 14)

The computer program product of claim 14, wherein the one or more predetermined storage locations comprise at least one location in a main memory of a coupled host.

### Claim 16 (depends on 14)

The computer program product of claim 14, wherein the one or more predetermined storage locations comprise at least one location in the mass storage device.

### Claim 17 (depends on 14)

The computer program product of claim 14, wherein the mass storage device is a solid-state-drive (SSD) and the host bus is compatible with at least one version of the PCIe host bus standard.

### Claim 18 (depends on 14)

The computer program product of claim 14, wherein the native data unit width is 32-bits, the queue pointer update information at least at times uses a 16-bit queue index, and the auxiliary control information at least at times uses 16-bits.

### Claim 19 (depends on 14)

The computer program product of claim 14, wherein the auxiliary control information is used to abort a pending or executing task in a controller of the mass storage device.

### Claim 20 (depends on 14)

The computer program product of claim 14, wherein the auxiliary control information is used to alter the arbitration policy for at least one request queue associated with tasks to be performed by a controller of the mass storage device.
