Queue

Predict queue lengths & waiting time

Quick Explanation

  • Use to define a register, linked-list, hardware queue, stack, ingress and egress network queue
  • Supports priority and non-priority queues
  • Supports Last In, First Out and First In, First Out
  • Auto queue reordering based on arriving priority
  • Rejection mechanisms based on position and priority
  • Support 'take' and 'pop' from anywhere in the Queue
  • Define custom scheduling and arbitrataion algorithm

Protocol

  • Linear, Circular, priority
  • First In, First Out
  • Priority based scheduling
  • Round-robin scheduling
  • Multilevel Queue scheduling

Queue

Queues represent an M/M/N queue that has an input, pop and output.  The queue can be used at the system-level to define a hardware, network or software queue. This block represents a linked List, FIFO or a transmitter/receiver or buffer on an FPGA.

A queue is an ordered collection of items where the addition of new items happens at one end, called the “rear,” and the removal of existing items occurs at the other end, commonly called the “front.” As an element enters the queue it starts at the rear and makes its way toward the front, waiting until that time when it is the next element to be removed.

This library is used to describe functional models of protocols, flow control algorithms, schedulers and custom hardware components such as arbiters.  This Resource is a multi-dimensional event queue that reorders the incoming data structures based on priority.  The block has a name that is used to track statistics information.  The block has an associated Controller that defines the scheduling and dequeuing of the data structures.  The Controller block describes the algorithm using the C-like scripting language.

The Queue is a single block that simulates multiple parallel priority queues.  All queues are independent and each queue is reordered based on the priority of the incoming task.  Tokens are rejected either for the lowest priority or the latest arrival.  The queues are en queued either as a First Come-First Server (traditional queues) or a Last In-First Out (Linked List in software).

The single input port can accept tokens for all the queues.  Similarly the single output can send the token down the respective flows. The time is variable and determined externally. The pop can queue the first or any index in the queue and send it on the output port. Statistics, copy and take can be performed on the Queue content using the getBlockStatus RegEx function.  This function can access this queue by using the name

Queues are used in the design of telecommunication, traffic engineering, computing and, industrial engineering, factories, shops, offices and hospitals, and project management.  Each queue is described using Kendall’s notation in the form A/S/C where A describes the time between arrivals to the queue, S the size of jobs and C the number of servers at the node.  Theorems in queueing theory can be proved by reducing queues to mathematical systems known as Markov chains.

Usage and Application Differences between Queue and Server:

Queue Server
Delay is not predictable in advance Delay is known apriori
Link of registers that store tokens Link of registers that store token and delay the head of the queue
Reorder the queue based on the priority of the incoming token. Rejects the lowest priority token Reorder the queue based on the priority of the incoming token. Rejects the lowest priority token
No power state Supports Active and Standby power state
Supports First-Come First-Serve and Last-In First-Serve Supports First-Come First-Serve and Last-In First-Serve
Can destroy elements anywhere in the queue without sending them to the output port Tokens cannot be destroyed.
Detailed statistics for delay, buffer occupancy, dropped tokens and entry-exit Detailed statistics for delay, buffer occupancy, dropped tokens, entry-exit and utilization
Expression to select the queue and priority of a Token Expression to select the queue, delay and priority.  The delay can be a delay value, number of cycles (Clock Speed for hardware) or packet delay (speed for networks)
Usage:

  1. Store and forward with external event
  2. FIFO
  3. Bank teller
  4. Software linked list
Usage:

  1. Store and delay with no external event
  2. Processors, buses, Network
  3. Active traffic light

 

Packets generated and stored in queue, till they are sent out