In a system, it is often necessary to share a resource. In its simplest form, round robin arbitration is a standard method of selecting among multiple items that are competing for the same shared resource. For example,
This arbitration scheme fairly and efficiently distributes access to the destination port provided that each data source port constantly has data ready to send to the destination port.
The present invention is directed toward a device that transfers data, the device includes a destination, a first data source, a second data source, a connector, and a device control system. The first data source can have first data to send to the destination. The second data source can have second data to send to the destination. The connector electrically connects the data sources to the destination. The device control system is electrically connected to the sources and the destination. The device control system utilizes an arbitration progression that sequentially offers access to the destination to only the data sources that have data to send to the destination. This can enhance the efficiency of the device with minimal, if any, increase in size or complexity.
In one embodiment, the device is a data switch, the first data source is a first A port, the second data source is a second A port, and the destination can include a first B port and a second B port.
Additionally, the device can include a third data source and a fourth data source. The third data source can have third data to send to the destination and the fourth data source can have fourth data to send to the destination. In this embodiment, the arbitration progression again sequentially offers access to the destination to only the data sources that have data to send to the destination.
In one embodiment, the device control system evaluates a first data rate of the first data and a second data rate of the second data, and grants access to the data sources that have data to send to the destination. Further, the device control system utilizes digital hysteresis to grant access to the data sources that have data to send to the destination. In one embodiment, if one of the data source goes silent for longer than the time between data words, the device control system removes that data source from the arbitration progression. Additionally, the removed data source is added to the arbitration progression when the data source has data to send.
The present invention is also directed to a method for transferring a data from a plurality of source ports to one or more destinations.
The novel features of this invention, as well as the invention itself, both as to its structure and its operation, will be best understood from the accompanying drawings, taken in conjunction with the accompanying description, in which similar reference characters refer to similar parts, and in which:
In one embodiment, the switch 212 also includes a plurality of ports 216, a plurality of interfaces 218, and a plurality of electrical connectors 220. In this embodiment, the switch 212 takes advantage of the parallel nature of the mesh architecture while reducing the number of electrical connectors 220 to reduce the overall size of the switch 212. More specifically, in this embodiment, instead of using dedicated electrical connectors (not shown) from every port 216 to every other port 216, the present invention groups a number of ports 216 together into separate port groups 222. These port groups 222 are then connected with electrical connectors 220 in a mesh architecture, with every port group 222 being connected to every other port group 222.
In one embodiment, the switch 212 is supported by the integrated circuit 210.
Each of the ports 216 provides a connection point for connecting to the integrated circuit 210. The number of ports 216 in the switch 212 can be changed to achieve the design requirements of the switch 212. In
In one embodiment, each of the ports 216 includes (i) an output buffer 216A that provides temporary storage of data that is leaving the respective port 216; and (ii) an input buffer 216B that provides temporary storage of data arriving at the respective port. In one embodiment, there is a separate memory for each priority data packet. Alternatively, portions of the same memory can be used for each priority data packet.
Further, each port 216 can include a packet tracker 216C that tracks a certain number of packets. For example, the packet tracker 216C can track four packets per priority. Alternatively, the packet tracker 216C can be designed to track more than four or fewer than four packets per priority.
The number of interfaces 218 used in the switch 212 can be varied according to the number of port groups 222A-222D. In certain embodiments, each port group 222A-222D includes an interface 218. Thus, the number of interfaces 218 is equal to the number of port groups 222A-222D. Alternatively, the switch 212 can be designed with more than four or fewer than four interfaces 218.
In
The number of connectors 220 used in the switch 212 can be varied according to the number of interfaces 218. In
In one embodiment, the connectors 220 between interfaces 218 have enough bandwidth to support the aggregate bandwidth of the ports 216 in the port group 222. For example, the bandwidth of the connectors 220 can be time-sliced so that all ports 216 in each port group 222 have a dedicated portion of the connector 220 bandwidth, each portion of which is large enough to support the maximum bandwidth that the port 216 can provide. In this way, the parallel data transfer advantage in bandwidth that is achieved in the traditional mesh architecture is maintained while the number of connectors 220 required can be reduced to make this hybrid architecture more size-efficient.
As one non-exclusive example, each connector 220 can have a bandwidth of approximately 10 gigabits/second. In this example, if all of the ports 216 of a particular interface 218 have data to transmit, each of the ports 216 would get 2.5 gigabits/second for a 10 gigabit/second system. Alternatively, (i) if only three ports 216 have data to transmit, each of the ports 216 would get 3.3 gigabits/second for a 10 gigabit/second system, (ii) if only two ports 216 have data to transmit, each of the ports 216 would get 5 gigabits/second for a 10 gigabit/second system, or (iii) if only one port 216 has data to transmit, this port 216 would get 10 gigabits/second for a 10 gigabit/second system.
The switch control system 214 controls the transfer of data in the switch 212. In one embodiment, the switch control system 214 uses a unique arbitration scheme that fairly and efficiently transfers data in the switch 212. More specifically, the switch control system 214 utilizes a modified round-robin arbitration progression that grants access to ports 216 that have data to send for a predetermined interval, and removes ports 216 that are no longer providing data. With this design, the control system 214 improves the utilization of the shared resource by granting access to only the ports 216 that have data to transfer. Thus, the goal of the control system 214 is to remove data sources that are silent (have no available data) from the round robin arbitration progression.
In certain embodiments, the control system 214 uses a predictive arbitration with pipelined decision-making, among others to remove silent data sources. In one embodiment, the switch 210 includes one or more configuration registers 245 (only one is illustrated in
With information regarding the data rate of data coming in to the data sources, the control system 214 can make intelligent decisions on removing and adding data sources from the round robin progression. In one embodiment, this knowledge is used to implement digital hysteresis on the removal of a data source from the arbitration. For example, if a data source is silent (has no data) for a preselected hysteresis time, then the source is removed from the arbitration progression. In alternative, non-exclusive embodiments, the preselected hysteresis time can be the time between one or more data words, a single clock period, multiple clock periods, or on a packet basis (allowing an entire packet to be granted access). This hysteresis time could be adjustable either by an internal state machine or user intervention. Whenever the source has data again it is put back into the progression immediately. With this design, because of the hysteresis, the data source is removed only when the data source is silent for a time at least as long as the hysteresis time. This simplistic scheme improves the overall efficiency of the shared resource without any complicated overhead. Further, with this design, the data sources are only removed when silent for a sufficient time. This reduces the overhead to the switch caused by immediately removing a data source if the data flow rate is just slow. The benefits and operation of the arbitration progression are described in more detail below.
In one embodiment, the switch control system 214 is a distributed, decentralized control system with each port 216 including a separate port control system 214A. In this embodiment, each port control system 214A can independently make decisions regarding its port 216, in parallel with the other port control systems 214A. Additionally, each of the interfaces 218 can also include an interface control system 214B that controls the flow of data to and from that interface 218. In this example, each of the control systems 214A, 214B is merely a place where control and logic can occur.
Alternatively, for example, the control of data can occur in just the ports 216 with the separate port control systems 214A, or just the interfaces 218 with the separate interface control systems 214B. Still alternatively, the switch control system 214 can include a single, centralized control system that controls the operation of the switch 212.
In one embodiment, the control system 214 uses a switching algorithm in which all data packets stored in the buffer 216B of each port 216 of a given priority are read out sequentially without waiting to see if a particular packet is accepted or rejected at the intended destination port. Stated in another fashion, each data packet in the buffer 216B of the port 216 of a given priority is sent sequentially without waiting for acknowledgements or aborts. In this embodiment, the data packets in each port 216 are read out sequentially with the highest priority data packets granted transmission before the lower priority data packets. For example, data packets with priority 1 in the port will be transmitted before data packets with priority 0 in the port. In this example, if the port only has two data packets with priority 1 and three data packets with priority 0, the two priority 1 data packets will be sequentially sent and then the three priority 0 data packets will be sequentially sent without waiting to see if a particular packet is accepted or rejected at the intended destination port.
In this design, the acceptance or rejection of a particular data packet is determined later when the source port receives either an acknowledgment or abort signal from the intended destination port for each packet that had been read out. This architecture is a simple, space-efficient solution to head-of-line blocking for packets within the input buffer of a particular priority. This type of system can provide a significant performance increase in randomized traffic as it allows packets to be transmitted when otherwise those packets could be blocked by a packet at the front of the queue that is waiting for a congestion at its intended destination port to be resolved.
It should be noted that a response (not shown) is sent from each destination port to its corresponding source port. The response can be in the form of an acknowledgement if the data packet was successfully transferred to the respective destination port, or an abort if the data packet was not successfully transferred to the respective destination port. An abort can occur if the destination port has no ability to receive the data packet due to output buffer being filled, or some other reason.
In this example, the AC connector 234 is a shared resource that is shared by source ports 0-3 trying to send data to destination ports 8-11. Further, in this example, each of the source ports 0-3 has data 360-366 to send to the destination ports 8-11.
As described above, the control system 214 (illustrated in
Referring to
In this example, if the AC connector 234 has a bandwidth of approximately 10 gigabits/second, ports 0-3 would get 2.5 gigabits/second each for transmitting the data over the AC connector 234.
The length of the predetermined interval can be varied to achieve the performance requirements of the switch. In alternative, non-exclusive embodiments, the predetermined interval can be on a word basis, a single clock period, multiple clock periods, or on a packet basis (allowing an entire packet to be granted access).
In this example, the AC connector 234 is the resource that is shared by source ports 0, 2, 3 trying to send data to destination ports 8, 10, 11. Further, in this example, only three of the source ports 0, 2, 3 have data 360, 364, 366 to send to the destination ports 8, 10, 11.
As described above, the control system 214 (illustrated in
In this example, if the AC connector 234 has a bandwidth of approximately 10 gigabits/second, ports 0, 2, 3 would get 3.3 gigabits/second for transmitting the data over the AC connector 234. As a result thereof, the control system 214 improves the utilization of the shared resource and the efficiency of the switch by granting access to only the ports that have data to transfer. This arbitration progression fairly and efficiently distributes access to the destination provided that each data source constantly has data ready to send to the destination. Further, the arbitration progression is relatively simple and has a cost effective implementation.
It should be noted that if only two ports have data to transmit, each of the ports would get 5 gigabits/second for a 10 gigabit/second system, or if only one port has data to transmit, this port would get 10 gigabits/second for a 10 gigabit/second system.
While the particular invention as herein shown and disclosed in detail are fully capable of obtaining the objectives and providing the advantages herein before stated, it is to be understood that they are merely illustrative of one or more embodiments and that no limitations are intended to the details of construction or design herein shown other than as described in the appended claims.