A method and arrangement for queuing data in a prioritized manner has a queue with a single queue write side in which data entries are input to the queue. The queue also has a plurality of queue read sides, with each read side having a different priority level. An entry exiting from the queue write side is examined to determine the priority level of the entry, and then placed into the queue read side with the matching priority level as the entry. The queue read sides form the output of the queue, and are polled and emptied so that the higher priority queues are emptied completely before emptying lower priority queues.
Legal claims defining the scope of protection, as filed with the USPTO.
1. A queue that queues and prioritizes entries, comprising: a single queue write side forming a queue input at which entries to the queue are received, each entry having a priority level; a plurality of queue read sides forming a queue output at which entries from the single queue write side are received, queued and output from the queue, each of the plurality of queue read sides corresponding to a different level of queuing priority from a highest priority queue read side to a lowest priority queue read side; and control logic configured to examine entries to the single write side to determine the priority level of the entries and to direct the entries from the single queue write side to one of the queue read sides based on the priority levels of the entries.
2. The queue of claim 1 , wherein the number of priority levels of the entries is equal to the number of queue read sides with different priority levels.
3. The queue of claim 2 , wherein each entry has priority bits in which the priority of that entry is encoded, the control logic being configured to examine the priority bits of each entry to the queue.
4. The queue of claim 3 , wherein the queue write side has at least twice the queuing capacity of any of the individual queue read sides.
5. The queue of claim 4 , wherein the queuing capacity of the highest priority queue read side is less than the queuing capacity of the lowest priority queue read side.
6. The queue of claim 5 , wherein the output queue read sides are configured to permit detection of presence of entries in the output queue read sides and control of emptying of the individual output queue read sides such that the output queue read sides are emptied so that a higher priority output queue read side has no queued entries before entries in a lower priority queue read side are output.
7. The queue of claim 6 , further comprising an overflow area for storing the entries, the overflow area coupled to receive the entries from the queue write side and return the entries to one of the queue read sides.
8. The queue of claim 7 , wherein the control logic is configured to direct entries having a priority level below a first specific priority level from the queue write side to the overflow area when the queue read sides with priority levels matching the priority levels of the entries have no available queuing capacity, and to direct entries from the overflow area to the matching priority level queue read sides when the matching priority level queue read sides regain available queuing capacity.
9. The queue of claim 8 , wherein the control logic is further configured to discard entries from the output queue write side having a priority level above a second specific priority level when the queue read sides with priority levels matching the priority levels of the entries have no available queuing capacity.
10. The queue of claim 9 , wherein the entries are frame pointers that point to locations in memory where frames of data are located.
11. A multiport network switch for a packet switched network, comprising: a plurality of ports through which packets from the network are received and from which packets to the networks are transmitted; a plurality of queues corresponding to the plurality of ports, at least one of the queues having a single queue write side forming a queue input at which entries to the queue are received, each entry having a priority level, and a plurality of queue read sides forming a queue output at which entries from the single queue write side are received, queued and output from the queue, each of the plurality of queue read sides corresponding to a different level of queuing priority from a highest priority queue read side to a lowest priority queue read side; and control logic configured to examine entries to the single write side to determine the priority level of the entries and to direct the entries from the single queue write side to one of the queue read sides based on the priority levels of the entries.
12. The switch of claim 11 , wherein the number of priority levels of the entries is equal to the number of queue read sides with different priority levels.
13. The switch of claim 12 , wherein each entry has priority bits in which the priority of that entry is encoded, the control logic being configured to examine the priority bits of each entry to the queue.
14. The switch of claim 13 , wherein the queue write side has at least twice the queuing capacity of any of the individual queue read sides.
15. The switch of claim 14 , wherein the queuing capacity of the highest priority queue read side is less than the queuing capacity of the lowest priority queue read side.
16. The switch of claim 15 , wherein the output queue read sides are configured to permit detection of presence of entries in the output queue read sides and control of emptying of the individual output queue read sides such that the output queue read sides are emptied so that a higher priority output queue read side has no queued entries before entries in a lower priority queue read side are output.
17. The switch of claim 16 , further comprising an interface to an overflow area for storing the entries, the interface providing the overflow area with entries from the queue write side and return the entries from the overflow area to one of the queue read sides.
18. The switch of claim 17 , wherein the control logic is configured to direct entries having a priority level below a first specific priority level from the queue write side through the interface to the overflow area when the queue read sides with priority levels matching the priority levels of the entries have no available queuing capacity, and to direct entries through the interface from the overflow area to the matching priority level queue read sides when the matching priority level queue read sides regain available queuing capacity.
19. The switch of claim 18 , wherein the control logic is further configured to discard entries from the output queue write side having a priority level above a second specific priority level when the queue read sides with priority levels matching the priority levels of the entries have no available queuing capacity.
20. The switch of claim 19 , wherein the entries are frame pointers that point to locations in memory where frames of data are located.
21. A method of queuing and prioritizing entries in a queue, comprising the steps of: receiving entries to the queue in a single queue write side that forms an input of the queue; determining a level of priority of the entries to the single queue write side; and directing entries exiting the single queue write side to one of a plurality of queue read sides of the queue, the queue read sides having different levels of queuing priority, from a highest priority queue read side to a lowest priority queue read side.
22. The method of claim 21 , further comprising determining the available capacity of the queue read sides and directing an entry from the queue write side to an overflow area when the queue read side having the same level of priority as the priority level of the entry has no available capacity, and directing the entry from the overflow area to that queue read side when that queue read side regains available capacity.
23. The method of claim 22 , further comprising discarding an entry exiting from the queue write side when the queue read side having the same level of priority as the priority level of the entry has no available capacity, if the level of priority is above a threshold level of priority.
24. The method of claim 23 , further comprising the steps of polling the queue read sides to detect presence of entries in the queue read sides and emptying the individual queue read sides in the order of highest to lowest queue read side priority, so that a higher priority queue read side has no queued entries before entries in a lower priority queue read side are output.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
December 18, 1997
November 26, 2002
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.