Hardware self-sorting scheduling queue
OwnerXinming Allen Lininventor
Life of this patent
Estimating the term…
Abstract
The scheduling queue of the present invention is configured as a systolic array utilizing self-sorting scheduling cells to sort information packets based upon previously assigned priorities, while at the same time yielding a small constant latency independent of the length of the queue. The scheduling queue of the present invention is effective in supporting various Quality of Service (QoS) policies and algorithms, including both Differentiated Services (DiffServ) and Integrated Services (IntServ) having an arbitrary number of flows.
Claims21
In a queue having a plurality of cells, a method comprising:
- receiving a first tag identifying a first storage location of a first information packet, and a corresponding second tag identifying a relative priority for the first information packet;
- storing said first tag and said second tag in a first stage of a first queue cell;
- receiving a third tag identifying a second storage location of a second information packet, and a corresponding fourth tag identifying a relative priority for the second information packet;
- receiving by said first queue cell, a first control signal representing one of at least a pop operation and a push operation, wherein said pop operation causes said first and second tags to be passed to a previous one of said plurality of cells, and wherein said push operation causes said second tag to be compared to said fourth tag to determine a relative order of precedence between said first and second information packets, wherein said third and fourth tags are stored in a second stage of said first cell if said first information packet is awarded precedence based at least in part upon said comparison, and wherein said first and second tags are stored in said second stage of said first cell while said third and fourth tags are stored in said first stage of said first cell if said second information packet is awarded precedence based at least in part upon said comparison;
- and
- propagating said first control signal representing one said pop and push operation to a subsequent one of said plurality of cells.
A scheduling queue comprising:
- a plurality of sequentially coupled storage cells including at least a first storage cell having first sequential logic to store either a first pointer indicating a storage location of a newly received information packet and a corresponding first identifier indicating a priority level for the newly received information packet, or a second pointer indicating a storage location of a previously received information packet and corresponding second identifier indicating a priority level for the previously received information packet;
- a first selector pair coupled to said first sequential logic to selectively pass to said first sequential logic, either said first pointer and corresponding first identifier, or said second pointer and corresponding second identifier based at least in part upon a control signal received from a previous one of said plurality of sequentially coupled storage cells;
- a comparator coupled to said first sequential logic to perform a comparison between contents of said first sequential logic and the first identifier, based at least in part upon said control signal;
- a second selector pair coupled between the first sequential logic and second sequential logic to pass either the contents of said first sequential logic, or the first pointer and corresponding first identifier to the second sequential logic for forwarding to a subsequent cell based at least in part upon said comparison;
- and
- control logic to propagate said control signal to said subsequent cell.
An integrated circuit comprising:
- a plurality of sequentially coupled storage cells including at least a first storage cell having first storage means to store either a first pointer indicating a storage location of a newly received information packet and a corresponding first identifier indicating a priority level for the newly received information packet, or a second pointer indicating a storage location of a previously received information packet and corresponding second identifier indicating a priority level for the previously received information packet;
- a first selection means coupled to said first storage means to selectively pass to said first storage means, either said first pointer and corresponding first identifier, or said second pointer and corresponding second identifier based at least in part upon a control signal received from a previous one of said plurality of sequentially coupled storage cells;
- first comparison means coupled to said first storage means to perform a comparison between contents of said first storage means and the first identifier, based at least in part upon said control signal;
- second selection means coupled between the first storage means and second storage means to pass either the contents of said first storage means, or the first pointer and corresponding first identifier to the second sequential logic for forwarding to a subsequent cell based at least in part upon said comparison;
- and
- control means to propagate said control signal to said subsequent cell.
A hardware based scheduling queue comprising:
- a plurality of sequentially connected cells each equipped with a plurality sequential logic and selectors to receive a pointer to a storage location of an information packet and a corresponding identifier indicating a priority level for the information packet from either a previous or a subsequent cell within the scheduling queue based at least in part upon a control signal propagated through the scheduling queue;
- said control signal indicating one of a pop signal and a push signal, wherein said pop signal causes a first pointer and first identifier stored in a first cell to be copied into a previous cell, and wherein said push signal causes said first identifier to be compared with a second identifier corresponding to a second newly received information packet to determine a relative order of precedence between said first and second information packets;
- said second identifier and corresponding second pointer being temporarily stored for presentation to said second cell if said second information packet is assigned a greater precedence than said first information packet;
- and
- said first pointer and said first identifier being temporarily stored for presentation to said second cell, and said second identifier and corresponding second pointer being temporarily stored in the first cell in place of said first pointer and first identifier, if said first information packet is assigned a greater precedence than said second information packet.
Dependencies are inferred from the claim text.