Patent ID: 7990989

Claim:
A switch, comprising: a network; and a plurality of ports, each coupled to receive transactions from others of said plurality of ports via said network, each of said ports comprising: a port interface, configured to transmit said transactions to a device coupled to said port; N transaction queues configured to receive said transactions from said network, wherein each of the N transaction queues belongs to one of G groups, each of the G groups having a group priority for transmitting transactions relative to other groups, the group priority being one of P group priorities; and a transaction selector, coupled to said port interface and to said N transaction queues, configured to select a particular transaction queue of the N transaction queues, for transmitting a transaction out of the port interface, the transaction selector comprising: G round-robin generators, corresponding to the respective ones of the G groups, each round robin generator having N bits corresponding to the N transaction queues, configured to receive an indication corresponding to a last one of the N transaction queues selected for transmitting out the port at a corresponding one of the G groups, and configured to generate an N bit vector based on round robin logic and the received indication; N G-input muxes, each coupled to receive a corresponding one of the generated N bits from each of the G round-robin generators, each mux configured to select for output one of the received G bits based on the corresponding transaction queue group priority; and selection logic, configured to receive a transaction from each of the N transaction queues and to select for transmitting out of the port interface one of said N transactions based on a determined transmit value for each transaction queue, wherein the transmit value of each respective transaction queue is based on the output of the N G-input muxes, a value corresponding to whether the transaction corresponding to each transaction queue is transmittable, and the group priority of the group to which each respective transaction queue belongs.