IP Library Granted Patent US 8,554,976
Granted Patent B2
US 8,554,976 · App. 13/179,074 · Granted Oct 8, 2013

Single pipe non-blocking architecture

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,554,976
App. No.
13/179,074
Granted
Oct 8, 2013
Kind
B2
Abstract

A method for processing an incoming command destined for a target is provided, comprising: determining if the incoming command is a data command or a management command; forwarding the incoming command to a storage management component of the target when the incoming command is a management command; when the incoming command is a data command: determining if a disk command queue on the target is full; sending the incoming command to the disk command queue when the disk command queue is not full; when the disk command queue is full: starting a timer, the timer having a predetermined length; sending the incoming command to the disk command queue when the disk command queue becomes not full prior to the expiration of the timer; and sending a rejection of the incoming command to the host only if, upon expiration of the timer, if the disk command queue is still full.

Claims (67)

1. A method for processing an incoming command from a host at a bridge, the incoming command destined for a target, the target having a storage management component and a separately accessible disk command queue, the method comprising:

determining, at the bridge, if the incoming command is a data command or a management command;

processing management commands separately from data commands, including:

forwarding, by the bridge, the incoming command to the storage management component of the target when the incoming command is a management command; and

when the incoming command is a data command, the bridge:

determining if the disk command queue on the target is full;

sending the incoming command to the disk command queue when the disk command queue is not full;

when the disk command queue is full, the bridge:

starting a timer, the timer having a predetermined length;

sending the incoming command to the disk command queue when the disk command queue becomes not full prior to the expiration of the timer; and

sending a rejection of the incoming command to the host only if, upon expiration of the timer, if the disk command queue is still full;

wherein the predetermined length of the time is selected to reduce a performance penalty for the host to process rejections of incoming data commands when there is a temporary disk command queue full state.

2. The method of claim 1 , wherein the predetermined length is less than it would take the host to reset itself and send a new data command upon receiving a rejection of a data command.

3. The method of claim 1 , wherein the predetermined length is longer than a worst-case target delay for processing a single data command.

4. The method of claim 1 , wherein the predetermined length is less than it would take the host to reset itself and send a new data command upon receiving a rejection of a data command and longer than a worst-case target delay for processing a single data command.

5. The method of claim 1 , wherein the predetermined length is dynamically determined by measuring performance of the host and basing the predetermined length at least partially upon the measured performance.

6. The method of claim 1 , wherein the predetermined length is dynamically determined by measuring performance of the target and basing the predetermined length at least partially upon the measured performance.

7. The method of claim 1 , wherein the predetermined length is selected to provide a guaranteed number of data or management commands processed per second.

8. The method of claim 1 , wherein the predetermined length is selected to prevent overloading the bridge command processing function with command rejections.

9. The method of claim 1 , wherein the incoming command is stored temporarily in a command FIFO on the bridge.

10. The method of claim 1 , wherein the host implements a USB Attached SCSI (UAS) protocol in which a target device cannot stall commands.

11. A bridge coupled between a host and a target, the target having a storage management component and a separately accessible disk command queue, the bridge comprising:

a command FIFO used to temporarily store incoming commands from the host;

a timer; and

a processor configured to:

determine if the incoming command is a data command or a management command;

processing management commands separately from data commands, including:

forward the incoming command to the storage management component of the target when the incoming command is a management command;

when the incoming command is a data:

determine if a disk command queue on the target is full;

send the incoming command to the disk command queue when the disk command queue is not full;

when the disk command queue is full:

start a timer, the timer having a predetermined length;

send the incoming command to the disk command queue when the disk command queue becomes not full prior to the expiration of the timer; and

send a rejection of the incoming command to the host only if, upon expiration of the timer, if the disk command queue is still full;

wherein the predetermined length of the time is selected to reduce a performance penalty for the host to process rejections of incoming data commands when there is a temporary disk command queue full state.

12. The bridge of claim 11 , wherein the bridge is a USB to SATA bridge.

13. The bridge of claim 11 , wherein the rejection indicates that the disk command queue on the target is full.

14. The bridge of claim 11 , wherein the management command is a command that cannot be head of line blocked by a data command.

15. The bridge of claim 11 , wherein the disk command queue has a limit of 32 commands.

16. The bridge of claim 11 , wherein the host implements a USB Attached SCSI (UAS) protocol in which a target device cannot stall commands.

17. An apparatus for processing an incoming command from a host at a bridge, the incoming command destined for a target, the target having a storage management component and a separately accessible disk command queue, the apparatus comprising:

means for determining if the incoming command is a data command or a management command;

means for processing management commands separately than data commands, including:

means for forwarding the incoming command to the storage management component of the target when the incoming command is a management command;

means for, when the incoming command is a data command:

determining if a disk command queue on the target is full;

sending the incoming command to the disk command queue when the disk command queue is not full;

when the disk command queue is full:

starting a timer, the timer having a predetermined length;

sending the incoming command to the disk command queue when the disk command queue becomes not full prior to the expiration of the timer; and

sending a rejection of the incoming command to the host only if, upon expiration of the timer, if the disk command queue is still full;

wherein the predetermined length of the time is selected to reduce a performance penalty for the host to process rejections of incoming data commands when there is a temporary disk command queue full state.

18. The apparatus of claim 17 , wherein the host implements a USB Attached SCSI (UAS) protocol in which a target device cannot stall commands.

19. A non-transitory program storage device readable by a machine tangibly embodying a program of instructions executable by the machine to perform a method for processing an incoming command from a host at a bridge, the incoming command destined for a target, the method comprising:

determining if the incoming command is a data command or a management command;

processing management commands separately than data commands, including:

forwarding the incoming command to a storage management component of the target when the incoming command is a management command;

when the incoming command is a data command:

determining if a disk command queue on the target is full;

sending the incoming command to the disk command queue when the disk command queue is not full;

when the disk command queue is full:

starting a timer, the timer having a predetermined length;

sending the incoming command to the disk command queue when the disk command queue becomes not full prior to the expiration of the timer; and

sending a rejection of the incoming command to the host only if, upon expiration of the timer, if the disk command queue is still full;

wherein the predetermined length of the time is selected to reduce a performance penalty for the host to process rejections of incoming data commands when there is a temporary disk command queue full state.

20. The non-transitory program storage device of claim 19 , wherein the host implements a USB Attached SCSI (UAS) protocol in which a target device cannot stall commands.

Assignments (8)
CORRECTIVE ASSIGNMENT TO CORRECT THE ERROR IN RECORDING THE MERGER IN THE INCORRECT US PATENT NO. 8,876,094 PREVIOUSLY RECORDED ON REEL 047351 FRAME 0384. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Mar 8, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 049248/0558 →
CORRECTIVE ASSIGNMENT TO CORRECT THE EFFECTIVE DATE OF THE MERGER PREVIOUSLY RECORDED AT REEL: 047230 FRAME: 0910. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Oct 29, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047351/0384 →
MERGER Recorded Oct 4, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047230/0910 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041710/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037808/0001 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 034069-0494) Recorded Feb 2, 2016
From: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
To: PLX TECHNOLOGY, INC.
Reel/Frame 037682/0802 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 7, 2015
From: PLX TECHNOLOGY, INC.
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 035615/0767 →
PATENT SECURITY AGREEMENT Recorded Oct 28, 2014
From: PLX TECHNOLOGY, INC.
To: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
Reel/Frame 034069/0494 →