Patent ID: 7161906

Claim:
A switch fabric for routing data from one or more sources towards one or more destinations, comprising a switching stage configured between an input stage and an output stage, wherein: the input stage is configured to receive the data transmitted from the one or more sources and forward the data to the switching stage; the switching stage is configured to route the data received from the input stage to the output stage; the output stage is configured to transmit the data received from the switching stage towards the one or more destinations; the input stage has one or more input ports, wherein each input port can be configured to receive data from a source; the output stage has one or more output ports, wherein each output port can be configured to transmit data towards a destination; the input stage comprises a plurality of input routing queues configured to store the data until the data is ready to be forwarded to the switching stage; the output stage comprises a plurality of output routing queues configured to store the data until the data is ready to be transmitted towards the one or more destinations; at least one input port can be programmably reconfigured to store data in different numbers of input routing queues that are associated with a single output port, such that: in a first programmable configuration of the at least one input port, the at least one input port is configured to store data in a first input routing queue associated with a first output port; and in a second programmable configuration of the at least one input port, the at least one input port is configured to store data in the first input routing queue associated with a second output port different from the first output port; and at least one output port can be programmably reconfigured to receive data from different numbers of output routing queues that are associated with a single input port, such that: in a first programmable configuration of the at least one output port, the at least one output port is configured to receive data from a first output routing queue associated with a first input port; and in a second programmable configuration of the at least one output port, the at least one output port is configured to receive data from the first output routing queue associated with a second input port different from the first input port.