WO2012120769A1 - 中継装置、中継装置の制御方法、およびプログラム - Google Patents
中継装置、中継装置の制御方法、およびプログラム Download PDFInfo
- Publication number
- WO2012120769A1 WO2012120769A1 PCT/JP2012/000574 JP2012000574W WO2012120769A1 WO 2012120769 A1 WO2012120769 A1 WO 2012120769A1 JP 2012000574 W JP2012000574 W JP 2012000574W WO 2012120769 A1 WO2012120769 A1 WO 2012120769A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- relay device
- data storage
- relay
- traffic
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/60—Software-defined switches
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/60—Router architectures
Definitions
- the present invention relates to a technique for adjusting a transmission schedule of traffic flowing between a plurality of relay apparatuses connected via a bus in a semiconductor integrated circuit including a distributed bus.
- FIG. 35 is a diagram illustrating an example of a transmission control method in a conventional semiconductor integrated circuit.
- FIG. 35A shows an example of centralized bus control.
- a conventional integrated circuit that performs centralized bus control a plurality of bus masters and a memory are mainly connected by a single bus, and an arbitrator arbitrates access from each bus master to the memory. With such a configuration, data can be transmitted while preventing traffic interference between the plurality of bus masters and the memory.
- an increase in the circuit scale due to higher functionality and multicore integration of the integrated circuit and a more complicated fluctuation of traffic flowing through the transmission path are progressing, making it difficult to design an integrated circuit by centralized bus control. .
- FIG. 35B shows an example of such distributed bus control.
- a semiconductor integrated circuit having a distributed bus has a configuration in which a plurality of relay devices (R) are connected by a plurality of buses.
- R relay devices
- NoC network on chip
- FIG. 36 is a diagram illustrating a configuration example of a relay device used in a NoC, a parallel computer, an ATM (Asynchronous Transfer Mode) network, and the like.
- Data to be transmitted (traffic data) is divided into units of packets and cells and transmitted to a destination node via a plurality of relay apparatuses.
- the relay apparatus shown in FIG. 36 includes input ports 0 and 1, two buffers respectively associated with the input ports, output ports 0 and 1, and crossbar switches that mutually connect the input buffers and the output ports. And.
- the illustrated relay device further includes an arbiter that performs control for switching the connection of the crossbar switch according to the destination of the data.
- Data input from the input ports 0 and 1 to the relay device is temporarily stored in a buffer.
- Each buffer includes a plurality of virtual channels (Virtual Channel: VC) that are parallelized, and can process different data in parallel for each input port.
- VC Virtual Channel
- the crossbar switch is a switch that determines exclusive connection between each input port and each output port.
- exclusive connection between an input port and an output port is defined as a state in which one output port is connected to at most one input port.
- the exclusive connection between the input port and output port by the crossbar switch is arbitrated by the arbiter.
- the relay device transmits the data stored in the buffer to the destination by switching the connection of the crossbar switch by the arbiter.
- FIG. 37 is a diagram for explaining an example of a packet flow when a packet is transmitted from the bus master to the memory via a plurality of relay devices.
- two bus masters B0, B1 and two memories M0, M1 are connected via a plurality of relay devices R0, R1, R2, R3 connected in a row.
- Each relay apparatus R0, R1, R2, R3 is provided with four virtual channels.
- T0 transmitted from the bus master B0 to the memory M0
- T1 transmitted from the bus master B1 to the memory M1.
- FIG. 37 for simplification of description, the distinction of the virtual channel for each input port is omitted.
- Each relay device can be connected to a larger number of relay devices, bus masters, or memories, but for the sake of simplicity, only four relay devices connected in series are illustrated.
- virtual channels are assigned to traffic T0 in order from the top of the figure, and virtual channels are assigned to traffic T1 in order from the bottom of the figure. It is supposed to be assigned.
- FIG. 37 shows an example of how to allocate virtual channels, and there are various modes for assigning virtual channels by distinguishing them for each packet.
- the bus master B0 transmits a packet to the memory M0, and the bus master B1 transmits a packet to the memory M1.
- Packets transmitted from each bus master are divided into units called flits that can be transmitted in one cycle, and transferred to the destination memory one flit at a time.
- the relay device processes the flit in the following procedure. (1) Store flits in the designated virtual channel. (2) The next relay device of the transfer destination is determined. (3) A virtual channel for storing flits is determined by the determined next relay apparatus. (4) A flit is transmitted to the next relay apparatus. By performing the above four types of processing by each relay apparatus, the flits are sent to the destination. The flits that arrive at the destination are combined and returned to one packet again.
- the relay device R0 adjacent to the bus master B0 and the bus master B1 stores the flits sent from each bus master in (1) the virtual channel designated by each bus master at the time of transmission. At this time, flits constituting different packets are distinguished and stored in different virtual channels.
- the relay device R0 specifies (2) the relay device to be transferred next for each virtual channel based on the destination information given to the stored flits. In the illustrated example, it is assumed that the relay device R1 is determined as the transfer destination for any virtual channel. Further, (3) for each virtual channel, a virtual channel for storing flits is determined in the next relay apparatus R1. When the next relay device R1 and the virtual channel in which data is stored in the relay device R1 are determined for each virtual channel, the relay device R0 transmits (4) a flit to the relay device R1.
- the other relay apparatuses R1, R2, and R3 store (1) the flit sent from the previous relay apparatus in the designated virtual channel, and (2) determine the relay apparatus to be transmitted next. (3) After determining the virtual channel to be stored in the next relay device, (4) transfer the flit to the next relay device or the destination memory. In this way, data is transmitted from a plurality of bus masters to a plurality of destination memories.
- contention occurs between the flits having different destinations in the above processing (3) and (4). There is a case.
- contention occurs the order of packets arriving at the destination is changed to an order different from that at the time of transmission, or a difference in delay time occurs due to traffic, resulting in a decrease in transmission quality.
- an evaluation value called Age is defined based on the time at which the packet is transmitted and the number of relay devices (number of hops) passed through, and the Age is transmitted in order from the packet with the largest (or smallest) Age.
- -Based method has been proposed (for example, Patent Document 1).
- FIG. 38 is a diagram for explaining a problem in the semiconductor system using the conventional relay device having the same configuration as that in FIG.
- traffic transmission rates fluctuate due to changes in bus master processing and memory processing, and the number of virtual channels used varies among relay devices on the traffic transmission path. There are things to do. For example, when the transmission rate of traffic transmitted from the bus master B0 to the memory M0 is relatively high, the transmission rate from the bus master B1 to the memory M1 is relatively low, or the transmission itself is stopped, each relay device If there is a vacancy in the virtual channel of the next relay device, the packet is unconditionally transmitted to the next relay device. Therefore, as shown in FIG.
- the traffic T0 shown in FIG. 38 has a long allowable delay time and the traffic T1 has a short allowable delay time.
- the traffic T0 occupies the virtual buffer of the relay device R3 on the transmission path even if the packet can be delivered to the destination within the requested time.
- a delay that is longer than the traffic T0 occurs for the traffic T1 having a short allowable delay time, and there is a problem that a packet cannot be transmitted within the delay time of the traffic T1.
- relay flow control such as the Age-Based method performed by a relay device in a general parallel computer or ATM. It is necessary to avoid that the input buffer is occupied by traffic of a specific destination in the relay apparatus on the transmission path.
- an object of the present invention is to prevent an input buffer from being occupied by traffic of a specific destination without increasing the size or number of data storage units in the input buffer in the relay apparatus.
- the relay device includes a first node that transmits data, a second node that receives the data transmitted from the first node, and the data transmitted between the first and second nodes.
- the relay device is used in a data transmission system including a plurality of relay devices that relay via a bus.
- the relay device includes a plurality of data storage units for storing input data, and the data storage unit related to data having at least a part of a transmission path stored in at least one of the plurality of data storage units And an arbiter that determines whether or not to output the data based on a comparison result of a usage status of a data storage unit in an adjacent relay device regarding data that is common to at least a part of the transmission path. .
- the output destination of the data is the adjacent relay device.
- the arbiter uses the data storage unit in the own relay device and the use of the data storage unit in the adjacent relay device for data having at least one of a transmission destination address and a transmission source address. Whether to output the data is determined based on the result of comparison with the situation.
- the arbiter stores the number of data storage units storing data in which at least a part of the transmission path is common and data having at least a part of the transmission path in the adjacent relay device. Whether to output the data is determined based on the comparison result with the number of data storage units.
- the arbiter stores data having at least a part of the transmission path in the adjacent relay device based on the number of data storage units storing data having at least a part of the transmission path in common. If the difference value obtained by subtracting the number of data storage units is equal to or greater than a preset threshold value, the data is output, and if the difference value is less than the threshold value, the data is not output.
- the threshold is zero.
- the arbiter stores a plurality of groups of data, which are data of a plurality of groups and at least a part of a data transmission path of each group is stored in the plurality of data storage units.
- a difference value obtained by subtracting the usage number of the data storage unit in the next adjacent relay device from the usage number of the data storage unit in the own relay device is obtained, and the difference value is equal to or greater than the threshold value Among the data, the data having the maximum difference value is output.
- the arbiter outputs data having the minimum number of uses of the data storage unit in the next adjacent relay device when there is a plurality of data having the maximum difference value.
- the data input to the plurality of data storage units includes a transmission time of the data, a time elapsed since the data was transmitted, a time when the data should reach the second node, and the data Has time information indicating any of the remaining time until the time to reach the second node, and the arbiter determines data to be output based on the value of the time information.
- the arbiter determines data to be output based on the value of the time information when there is a plurality of data with the minimum number of data storage units used in the next adjacent relay device.
- each of the plurality of data storage areas is a virtual channel configured with a virtual line.
- the arbiter transmits information indicating the number of data storage units in which data having at least a part of the transmission path is stored to at least one of the adjacent relay device and another adjacent relay device
- the information processing apparatus further includes a channel use information communication unit that acquires information indicating the number of data storage units in which data having at least a part of the transmission path is stored from the adjacent relay device.
- the control method of the present invention includes: a first node that transmits data; a second node that receives the data transmitted from the first node; and the data transmitted between the first and second nodes. It is a control method for a relay device used in a data transmission system including a plurality of relay devices that relay via a bus.
- the control method includes a step of storing input data in a plurality of data storage units, and the data storage unit related to data that is stored in at least one of the plurality of data storage units and has at least a part of a transmission path And determining whether or not to output the data based on a comparison result of the usage status of the data storage unit in the adjacent relay apparatus regarding data having at least a part of the transmission path.
- the control program of the present invention includes: a first node that transmits data; a second node that receives the data transmitted from the first node; and the data transmitted between the first and second nodes.
- a control program for a relay device used in a data transmission system including a plurality of relay devices that relay via a bus.
- the control program stores a step of storing input data in a plurality of data storage units for a computer installed in the relay apparatus, and a transmission path stored in at least one of the plurality of data storage units.
- the data is output based on a comparison result of the usage status of the data storage unit relating to data that is at least partially shared and the usage status of the data storage unit in the adjacent relay device relating to data that is shared by at least a part of the transmission path Determining whether or not to perform.
- the simulation program of the present invention includes: a first node that transmits data; a second node that receives the data transmitted from the first node; and the data transmitted between the first and second nodes. It is a simulation program for a relay device used in a data transmission system including a plurality of relay devices that relay via a bus.
- the simulation program stores data input to a computer in a plurality of data storage units and data stored in at least one of the plurality of data storage units and having at least a part of a transmission path. Whether to output the data based on the comparison result of the usage status of the data storage unit and the comparison status of the usage status of the data storage unit in the adjacent relay device regarding the data having at least a part of the transmission path Steps are executed.
- the present invention it is possible to avoid occupying the data storage unit in the input buffer due to the traffic of a specific destination without increasing the size or number of the data storage unit in the input buffer in the relay device.
- the transmission performance (throughput and delay time) of the entire NoC can be improved without greatly increasing the mounting area and power consumption of the integrated circuit.
- FIG. 3 is a flowchart illustrating an operation of the relay device according to the first embodiment. It is a figure which shows operation
- FIG. 6 is a flowchart illustrating a flit transmission operation of the relay apparatus according to the first embodiment.
- FIG. 10 is a flowchart illustrating channel assignment operation of the relay device according to the second embodiment. It is a figure which shows the structure of the relay apparatus of Embodiment 3.
- FIG. 10 is a diagram illustrating a configuration example of a packet in the third embodiment. It is a figure which shows the content of the virtual channel information in Embodiment 3.
- 10 is a flowchart illustrating a channel assignment operation of the relay device according to the third embodiment. It is a figure which shows operation
- FIG. 10 is a diagram illustrating an example of a usage state of a virtual channel of the relay device according to the fourth embodiment. It is a figure which shows the structure of the relay apparatus of Embodiment 4. 10 is a flowchart illustrating a channel assignment operation of the relay device according to the fourth embodiment. It is a figure which shows the example of a definition of a destination. It is a figure which shows the example of the network topology which can apply this invention. It is a figure which shows the example of application of this invention. It is a figure which shows the example of application of this invention. It is a figure which shows the example of application of this invention. It is a figure which shows the kind of semiconductor system using the conventional bus
- the relay apparatus includes a plurality of data storage units for storing input data, and an arbiter that arbitrates transmission of data stored in these data storage units.
- Data input to the relay device is temporarily stored in any of a plurality of data storage units.
- the arbiter stores the usage status of the data storage section related to data having at least a part of the transmission path stored in at least one of these data storage sections, and the usage status of the data storage section in the adjacent relay device related to the data. Compare Then, based on the comparison result, it is determined whether or not to output the data.
- “data having at least a part of a transmission path” means a set of data passing through a common point on the transmission path. For example, a group of data reaching the same destination, a group of data transmitted from the same source, a group of data passing through the same other relay device, via the same input port or output port in the own relay device It refers to a group of data that is transferred.
- the arbiter uses data stored in each data storage unit to have data having a common address attribute with the data storage unit. Information indicating how much is used is compared with adjacent relay apparatuses. Then, based on the comparison result, it is determined whether or not to output the data. For example, the arbiter collects information indicating the usage status of a plurality of data storage units for each destination address from the adjacent relay device, and allocates the data storage unit in cooperation with the adjacent relay device based on the information.
- the relay apparatus of the present invention will be described.
- FIG. 1 is a diagram for illustrating an outline of the operation of the relay apparatus of the present invention in a transmission system having the same configuration as FIG.
- each virtual channel in each relay apparatus functions as a data storage unit in the present invention.
- Each of the relay devices R0, R1, R2, and R3 on the transmission path transmits a traffic T0 from the bus master B0 to the memory M0, and a packet included in the traffic T0 is a virtual channel used by a destination adjacent relay device. Information indicating the number (adjacent channel usage information) is acquired.
- a preset threshold for example, 0
- the relay device newly secures a virtual channel in the next relay device and transmits the packet to the next relay device.
- a preset threshold value for example, 0
- a new virtual channel is not secured. For this reason, it is possible to avoid securing too many virtual channels.
- Whether or not to transmit a packet may be determined based on the ratio between the number of virtual channels used in the own relay device and the number of virtual channels used in the next adjacent relay device, instead of the difference.
- traffic T0 uses two virtual channels in each relay device R0, R1, R2, and R3.
- each relay device on the transmission path has a free virtual channel.
- a virtual channel can be reserved for traffic T1.
- the bus master B1 can immediately transmit the traffic T1 to the memory M1.
- the virtual channels used by the individual traffic are made to be uniformly close on the transmission path, and the lack of virtual channels in a specific relay apparatus Can be avoided. As a result, even if a sudden traffic transmission request occurs, it is possible to immediately transmit the traffic, and the transmission performance of the entire NoC can be improved.
- FIG. 1 shows an example of how to allocate virtual channels. The method is not limited to the method shown in FIG. 1 as long as a virtual channel is assigned for each packet. Further, FIG. 1 shows a system for transmitting traffic from two bus masters to two memories via four relay apparatuses, but the application of the present invention is not limited to such a system.
- the bus master is described as a transmission side node and the memory is a reception side node, the present invention is not limited to this combination.
- the memory may be a transmitting node and the bus master may be a receiving node as in the case of reading data from the memory.
- the partner node that transmits and receives to and from the bus master is not limited to the memory, and may be an input / output port (I / O) for connection to an external storage device such as an external HDD.
- An example of such an input / output port is a USB port.
- the present invention can be used in any system as long as data is transmitted from a transmission node to a reception node via a plurality of relay apparatuses.
- each relay device acquires adjacent channel usage information from the adjacent relay device of the transmission destination, but may acquire the information from the adjacent relay device of the transmission source, or the information from both of the adjacent relay devices. May be obtained. Also, the way of allocating virtual channels based on adjacent channel usage information is not limited to the above example, and various methods can be applied as described later.
- FIG. 2 is a diagram illustrating a configuration example of a distributed data transmission system using the relay device according to the first embodiment of the present invention.
- the illustrated system includes a plurality of bus masters (BM) 101 as transmission nodes and a plurality of memories 105 as reception nodes.
- the plurality of bus masters 101 and the plurality of memories 105 are connected in multiple stages by a bus via a plurality of relay devices 800.
- the transmission system shown in FIG. 2 constitutes a multistage connection network (MIN).
- MIN multistage connection network
- each bus master 101 functions as a first node in the present invention
- each memory 105 functions as a second node in the present invention.
- the bus master 101 in the present embodiment is a device capable of performing data transfer control using a bus, such as a CPU (Central Processor Unit) and a DSP (Digital Signal Processor).
- the memory 105 is a semiconductor memory such as DRAM or SRAM.
- the relay device 800 is configured by a semiconductor circuit, for example, and has a function of relaying data transmitted between the plurality of bus masters 101 and the plurality of memories 105.
- the twelve relay devices are classified into three groups.
- the first group includes four relay devices (R0, R1, R2, R3) connected to the eight bus masters 101.
- the second group (second G) includes four relay devices (R4, R5, R6, R7) connected to the subsequent stage of the first group.
- the third group includes four relay devices (R8, R9, R10, and R11) connected to the subsequent stage of the second group and connected to the eight memories 105.
- Each relay device constituting the multistage connection network shown in FIG. 2 has a 2-input / 2-output crossbar switch. Each relay device can change the combination of input and output by switching the crossbar switch, as shown in the balloon of FIG. Therefore, the traffic flow can be switched between the two transmission paths (transmission paths 1 and 2). If the output destination transmission paths are different, the relay apparatus can simultaneously output two traffic to each transmission path. According to such a multistage connection network, one or more transmission paths can always be constructed between all bus masters and all memories by switching the crossbar switch in each relay device.
- N ⁇ M switches are required.
- the switch refers to a switch that is provided at the intersection of a plurality of communication paths that are parallel to a certain direction and a plurality of communication paths that are parallel to the other direction, and that can dynamically build a communication path by switching ON / OFF. .
- the number of switches required increases rapidly as the number of bus masters and memories increases.
- the connection between the bus master and the memory can be switched with a small number of switches by hierarchically connecting crossbar switches with a small number of inputs and outputs.
- Data transmission from the bus master 101 to the memory 105 is performed by a packet switching method.
- Each bus master 101 divides a packet to be transmitted into minimum units called flits and then transmits the packet to an adjacent relay device.
- the flit transmitted first is called a header flit.
- flag information indicating the beginning of the packet, address information of the transmission destination of the packet, and the like are described.
- the data structure of the packet and flit in this embodiment will be described later.
- the BM 2 divides a packet in which the address (101) of the memory 5 is described as a transmission destination address into a plurality of flits and relays them. Transmit to device R1.
- the plurality of divided flits are transmitted to the memory 5 via the relay devices R1, R7, R10.
- the memory 5 receives a plurality of flits from the relay device R10 and reconstructs a packet from these flits.
- data is transmitted from the BM 2 to the memory 5.
- the data structure of the packet and flit will be described later.
- the relay device is not limited to an integrated circuit constituting a multistage connection network as shown in FIG. 2, and can be similarly applied to an integrated circuit having another topology.
- the data transmission from the bus master to the memory is described as being performed via a plurality of relay apparatuses by the packet switching method, but the data transmission method may be another method.
- the relay apparatus according to the present embodiment is not limited to data transmission from the bus master to the memory, but can be similarly applied to any system that transmits data between a plurality of nodes.
- each relay device (R0 to R3, R8 to R11) in the first and third groups is depicted as one functional block, like each relay device (R4 to R7) in the second group.
- other functional units such as NIC (Network Interface Controller) are connected between each relay device of the first group and the bus master and between each relay device of the third group and the memory. obtain.
- NIC Network Interface Controller
- FIG. 3 is a block diagram showing a part of the data transmission system in the present embodiment.
- a NIC 820a is connected between the bus master 101 and the first group of relay devices 800a.
- the NIC 820a has a function of notifying the bus master 101 of a bus protocol conversion process, selecting a memory 105 that can secure a memory size requested by the bus master 101 from a plurality of memories.
- a NIC 820c and a memory controller 830 are connected between the relay device 800c of the third group and the memory 105.
- the NIC 820c performs a bus protocol conversion process and correlates a forward path and a return path in data transmission, and returns a return path response to the forward path to the NIC 820a.
- the forward path means a transmission path in the direction from the bus master 101 to the memory 105
- the backward path means a transmission path in the direction from the memory 105 to the bus master 101.
- the memory controller 830 is connected to the NIC 820 c and controls the access order to the memory 105.
- the notation of the NICs 820a and 820c and the memory controller 830 is omitted as shown in FIG. That is, in the following description, it is assumed that the relay device directly connected to the transmission node such as the bus master 101 includes a NIC. Similarly, it is assumed that the relay device directly connected to the receiving node such as the memory 105 includes a NIC and a memory controller.
- FIG. 4 shows an example of the transmission format of the packet 700 and an example in which the packet 700 is divided into a plurality of flits.
- the packet 700 has a header field 701, a data field 702, and a control code field 703.
- header field 701 for example, flag information indicating the beginning of a packet, a transmission destination address, and a transmission source address are described. Information other than the above may be described in the header field 701. Based on the transmission destination address and the transmission source address in the data of the header field 701, the relay processing of the packet 700 and the reception processing on the reception side are performed.
- control code field 703 For example, video data or audio data is described.
- control code field 703 a predetermined end code is described. It can be determined from the end code that the packet 700 ends. Information other than the end code may be stored in the control code field 703.
- the bus master 101 disassembles and transmits the packet 700 into small packet units called flits.
- the size of one flit is a size that can be transmitted in one cycle using the bus, and is determined according to the bus width.
- the packet 700 is divided into a header flit 704, a plurality of data flits 705, and a tail flit 705.
- the header flit 704 includes flag information and destination address information stored in the header field 701.
- each flit (data flit 705 and tail flit 706) following the header flit 704 address information for specifying a transmission destination is not stored. This is because each flit following the header flit 704 is sent to the same destination as the header flit 704.
- the subsequent flits are transmitted to the destination indicated by the header flit 704 using the same output buffer as the header flit 704.
- the tail flit 706 is given flag information (end code stored in the control code field 703) indicating that the flit is the last flit constituting the packet.
- a plurality of data flits 705 other than the header flit 704 and the tail flit 706 are flits mainly for transmitting data, and correspond to the data field 702 of the packet 700.
- the memory 105 on the receiving side detects the flag information (end code) described in the tail flit 706, it reconstructs a plurality of transmitted flits into packets based on the end code.
- the size of one packet is, for example, 128 bytes, and the size of one flit is set to, for example, 32 bits or 64 bits. However, since the size of one packet and the size of one flit may vary depending on the application, the above size is merely an example.
- the length of one flit may be based on a length capable of describing control data such as a destination address and a source address.
- Each relay device has an input buffer for storing sent flits.
- the flits are once stored in the input buffer, and then transmitted to the relay device or the destination memory following the destination memory by switching the crossbar switch.
- a flit is transmitted from the bus master 101 to the memory 105, but this is an example.
- the destination of the frit is not limited to the memory, and may be, for example, another bus master or an input / output interface for connecting to a peripheral device.
- FIG. 5 is a block diagram showing the configuration of the relay device in this embodiment.
- the configuration of the second group of relay devices 800b will be described as an example, but the basic configurations of the first and third groups of relay devices are the same except that the transmission destination and the reception source are different.
- the relay device 800a in the first group may be referred to as a preceding relay device
- the relay device 800c in the third group may be referred to as a subsequent relay device.
- the relay devices of the first and third groups may be referred to as adjacent relay devices.
- the relay device 800b determines a route from the upstream relay device 800a to the downstream relay device 800c and relays the traffic.
- the relay device 800b includes an input port 801, an input buffer 802, a crossbar switch 803, an output buffer 804, an output port 805, and an arbiter 850.
- the arbiter 850 includes a virtual channel information management unit 806, an output port selection unit 807, a channel usage number measurement unit 808, a channel usage information communication unit 809, an adjacent channel usage information management unit 810, a virtual channel usage number comparison unit 811, and an output channel selection.
- the arbiter 850 can be configured by a logic circuit configured to be able to execute an operation described later.
- the input buffer 802 and the output buffer 804 are temporary storage areas such as SRAM or registers.
- the crossbar switch 803 is a known switch circuit.
- the input port 801 is an interface that receives a packet from the adjacent relay device 800a in the previous stage via a bus.
- two input ports 0 and 1 are provided, but the number of input ports is not limited to two.
- different adjacent relay devices 800 a are connected to the input ports 0 and 1.
- the output port 805 is an interface that transmits a packet to the adjacent relay device 800c in the subsequent stage via the bus.
- two output ports 0 and 1 are provided, but the number of output ports is not limited to two.
- different adjacent relay devices 800 c are connected to the output ports 0 and 1.
- the input buffer 802 stores flits sent from the adjacent relay device 800a (or the bus master 101).
- One temporary buffer that constitutes the input buffer 802 may be provided for each input port of the relay device 800b, or an input so that transmission schedule control can be performed using individual channels for packets of different destinations.
- a plurality of virtual channels 817 may be provided for each port. In the present embodiment, as shown in FIG. 5, four virtual channels 817 are prepared for each input buffer 802.
- the crossbar switch 803 is a switch for switching the connection between the input port 801 and the output port 805 of the relay device 800b. In the case of the illustrated configuration, the flit received by each input port is output from either one of the output ports 0 and 1 by the crossbar switch 803.
- the output buffer 804 is a buffer used when transmitting flits to the adjacent relay device 800c via the output port 805.
- the output buffer 804 is provided with a plurality of output channels 818.
- the same number of output channels 818 as the virtual channels in the input buffer of the adjacent relay device 800c are provided, and a one-to-one correspondence with these virtual channels is determined.
- the flit transmitted from the relay device 800b is stored in a virtual channel in the adjacent relay device 800c corresponding to the output channel 818 used for transmission. That is, by selecting the output channel 818, the relay device 800b can designate a virtual channel in the adjacent relay device 800c in which a flit to be transmitted is stored next.
- the input buffer 802 and the output buffer 804 are configured by channels composed of a plurality of virtual lines, but each buffer may be configured by a plurality of physical channels.
- the virtual channel information management unit 806 manages flit information stored in each virtual channel 817. Details of the information managed by the virtual channel information management unit 806 will be described later with reference to FIG.
- the output port selection unit 807 selects the relay device 800c that delivers the flit next based on the destination information (transmission destination address) described in the header flit.
- the relay device 800c is selected by selecting one of the output ports 0 and 1.
- the channel usage number measurement unit 808 measures the number of virtual channels used for each traffic in each input buffer 802.
- traffic means a set of flits having a common destination address.
- the channel usage number measurement unit 808 measures the number of virtual channels 817 in which flits having a common destination address are stored based on information managed by the virtual channel information management unit 806.
- the channel usage information communication unit 809 communicates information (channel usage information) indicating the number of virtual channels used by each traffic with the adjacent relay devices 800a and 800c. Specifically, the channel usage information communication unit 809 transmits the channel usage information measured by the channel usage number measuring unit 808 to the adjacent relay devices 800a and 800c, and from the adjacent relay devices 800a and 800c in the subsequent stage, Receive channel usage information. Thereby, each relay apparatus can grasp
- the adjacent channel usage information management unit 810 records the virtual channel information acquired from the adjacent relay devices 800a and 800c via the channel usage information communication unit 809. Details of information managed by the channel usage information management unit 810 will be described later with reference to FIG.
- the virtual channel usage number comparison unit 811 compares the number of virtual channels used by each traffic in the own relay apparatus 800b and the number of virtual channels used by each traffic in the adjacent relay apparatuses 800a and 800c. This makes it possible to quantitatively grasp the magnitude of the deviation in the number of virtual channels used for each traffic in each relay device on the transmission path.
- the output channel selection unit 812 determines the assignment of the output channel 818 to the virtual channel 817 based on the result of the quantitative comparison performed by the virtual channel usage number comparison unit 811. Details of the processing by the output channel selection unit 812 will be described later with reference to FIGS.
- the virtual channel selection unit 813 selects one virtual channel 817 candidate for transmitting a flit from a plurality of virtual channels 817 for each input buffer 802. A method for selecting candidates will be described later.
- the switch switching unit 814 determines an exclusive combination of the candidate virtual channel 817 selected one by one for each input buffer 802 by the virtual channel selection unit 813 and the output port 805, and the crossbar switch 803 is based on the result. Switch.
- FIG. 6 shows an example of the contents of the virtual channel information 901 recorded in the virtual channel information management unit 806.
- the virtual channel information 901 includes an input port number for identifying the input port 801 and a virtual channel number for identifying the virtual channel 817 in order to distinguish each virtual channel 817.
- destination address information for specifying the destination of the flit, the number of the output port 805 used for transmitting the flit to the destination, and the output channel used The number 818 is recorded.
- the relay apparatus 800b has two input ports and four virtual channels for each input port.
- Information on the virtual channels is managed.
- the virtual channel information shown in FIG. 6 indicates a situation where flits are stored in virtual channels 1 and 2 of input port 0 and virtual channels 0 and 2 of input port 1.
- the output channel is not set for virtual channel 1 of input port 0 and virtual channel 1 of output port 1.
- the destination address is unused, and the output port number and output channel number are not used.
- the setting is entered.
- the destination address in the virtual channel information 901 reflects the address information of the transmission destination described in the header flit when the header flit 704 reaches the virtual channel 817.
- the tail flit 703 including the end code is transmitted from the virtual channel 817, information on the destination address, output port number, and output channel number in the virtual channel is initialized. Next, the contents of adjacent channel usage information will be described.
- FIG. 7 shows the contents of the adjacent channel usage information 1001 recorded in the adjacent channel usage information management unit 810.
- the adjacent channel usage information 1001 it is used by the adjacent relay device specified by the identification number (connection port number) of the input port or output port connecting the own relay device and the adjacent relay device and the connection port number.
- the destination address of the flit stored in the virtual channel and the number of virtual channels used for each destination address are recorded.
- An identification number for distinguishing adjacent relay devices may be recorded instead of the connection port number. Since the relay device 800b shown in FIG. 5 is adjacent to four relay devices via two input ports 0 and 1 and two output ports 0 and 1, as shown in FIG. Usage information is managed.
- FIG. 8 is a flowchart showing a processing flow of the relay device 800b.
- the channel usage information communication unit 809 determines whether information about the usage status of each virtual channel has arrived from an adjacent relay device. If the adjacent channel usage information has arrived, the process proceeds to step S1102, and the adjacent channel usage information management unit 810 updates the adjacent channel usage information using the acquired information. If the adjacent channel usage information has not arrived, step S1102 is skipped and the process proceeds to step S1103.
- the relay device 800b enters a reception wait state for flits transmitted from the adjacent relay device 800a or the transmission node (bus master 101) via the input port 801.
- FIG. 9 shows the state of the virtual channel 817 at this time.
- FIG. 9A shows virtual channel information 901 related to the input port 0 in a state where the relay apparatus 800b has not yet received a flit.
- FIG. 9B shows the state of each buffer at this time.
- the virtual channel information 901 related to the input port 0 is illustrated.
- step S1103 shown in FIG. 8 the input port 801 determines whether or not a flit has been received. If a flit has been received, the process proceeds to step S1104. If a flit has not been received, the process proceeds to step S1105.
- step S1104 the input port 801 stores the received flit in the virtual channel 817.
- the storage destination virtual channel 817 is determined in advance by the adjacent relay device in the previous stage.
- step S1105 the virtual channel information management unit 806 determines whether or not a flit is stored in the input buffer 802 of the relay device 800. If a flit is stored in the input buffer 802, the process proceeds to step S1106; otherwise, the process returns to step S1101.
- step S1106 the virtual channel information management unit 806 determines whether or not the flit stored at the head of each virtual channel 817 is a header flit. If the first flit is a header flit, the process proceeds to step S1107. If it is not a header flit, the process proceeds to step S1112.
- step S 1107 the virtual channel information management unit 806 records the destination address recorded in the header frit stored at the head of the virtual channel 817 in the virtual channel information 901.
- FIG. 10 shows the state of the virtual channel 817 at this time.
- FIG. 10A shows virtual channel information 901 immediately after the header flit 704 arrives at the relay device 800 and is stored in the virtual channel 817.
- FIG. 10B shows the state of each buffer when the header flit 704 received at the input port 0 is stored in the virtual channel 0 in step S1104.
- the destination address described in the header flit 704 (the address “000” in the memory 0 in the example of FIG. 10) is recorded in the virtual channel information 901.
- the channel usage number measurement unit 808 refers to the virtual channel information management unit 806 and measures the number of virtual channels 817 being used for each destination address. Then, the channel usage information communication unit 809 notifies the adjacent relay apparatuses 800a and 800c of information indicating the usage number of the virtual channel 817 for each destination of the packet measured by the channel usage number measurement unit 808. For example, in the state shown in FIG. 10, since only one virtual channel 817 is used by a packet destined for the destination address 000, the information is notified to the adjacent relay apparatuses 800a and 800c.
- the output port selection unit 807 refers to the virtual channel information 901 and determines an output port 805 to be used for a virtual channel for which the number of the output port 805 is not set.
- the output port 805 is determined based on the transmission destination address of each packet. For example, in the configuration of the multistage connection network shown in FIG. 2, an address represented by a 3-digit binary number is assigned to each memory, and the address assigned to the destination memory is included in the header flit of each packet. Has been granted.
- the output port selection unit 807 of each relay device reads the same number of digits as the number of steps of the relay device from the right among the three-digit addresses assigned to the header flits. If the value is 0, a route is determined so that a flit is sent to the relay device on the output port 0 side, and if the value is 1, a flit is sent to the relay device on the output port 1 side.
- the first (1G) relay device R1 refers to the value of the third digit from the right of the address 101 to the memory 5, and since the value is 1, the flit is transmitted to the relay device R7 on the output port 1 side.
- the relay device R7 refers to the second digit from the right of the address 101 to the memory 5, and since the value is 0, the flit is transmitted to the relay device R10 on the output port 0 side.
- the relay device R10 refers to the first digit value from the right of the address to the memory 5, and since the value is 1, a flit is transmitted to the memory 5 on the output port 1 side. As a result, a transmission path from the bus master BM5 to the memory 2 is selected, and the flit is transmitted to the target destination.
- the output port selection method by the output port selection unit 807 may be a method other than the above as long as the route through which the packet is sent to the destination can be selected according to the topology of the distributed bus.
- FIG. 11A shows the contents of the virtual channel information 901 after the output port 805 of the virtual channel 817 is set in the relay device 800b.
- FIG. 11B shows a state of each virtual channel 817 of the relay device 800b.
- the virtual channel 0 of the input port 0 stores a flit to be transmitted to the memory 0 whose destination address is 000. Therefore, the output port selection unit 807 transfers the flit to the memory 0. In order to transmit from the outgoing output port 0, the value of the output port number is set to 0.
- the virtual channel usage number comparison unit 811 includes the adjacent channel usage information 1001 managed by the adjacent channel usage information management unit 810, and the channel usage number measurement unit 808. Reference is made to information indicating the number of virtual channels used by the relay device. Then, the number of use of its own virtual channel and the number of use of the virtual channel of the adjacent relay devices 800a and 800c are distinguished and compared for each packet destination, and a difference between them is obtained.
- step S ⁇ b> 1111 the output channel selection unit 812 determines virtual channel allocation for the virtual channel 817 in which the output channel 818 is not set, based on the comparison result by the virtual channel usage number comparison unit 811.
- FIG. 12A shows virtual channel information 901 after the output channel 818 is determined in the relay device 800b.
- FIG. 12B shows the state of each buffer at that time. As shown in FIG. 12B, the output channel 818 corresponding to the output port 0 is not used. In this embodiment, in order to cause the flit stored in the virtual channel 0 of the input port 0 to use the output channel 0, 0 is set to the output channel number as shown in FIG. Details of the assignment of the output channel 818 will be described later with reference to FIGS.
- the virtual channel selection unit 813 refers to the virtual channel information 901 and selects one virtual channel 817 for which the output channel 818 has been set for each input port 801.
- the switch switching unit 814 refers to the virtual channel information 901 and determines whether any of the virtual channels selected for each input port 801 by the virtual channel selection unit 813 uses the same output port 805. To do. If there is one that uses the same output port 805 (when a conflict occurs), one of the conflicting virtual channels 817 is selected. In this way, an exclusive connection is determined between one virtual channel 817 and the output port 805 of each input port. Based on the result, the switch switching unit 814 switches the connection of the crossbar switch 803.
- step S1113 the virtual channel 817 selected by the virtual channel selection unit 813 transmits a flit using the output channel 818 of the output port 805 recorded in the virtual channel information 901. .
- FIG. 13A shows virtual channel information 901 in a state where the relay apparatus 800b is transmitting flits.
- FIG. 13B shows the state of each buffer at that time.
- the flits in virtual channel 0 corresponding to input port 0 correspond to output port 0 recorded in virtual channel information 901 in order. Is transmitted through the output channel 0 to the memory 0 as a destination.
- the description of the adjacent relay device existing between the own relay device and the memory is omitted.
- step S1114 of FIG. 8 when the virtual channel 817 transmits a flit, the virtual channel 817 determines whether the transmitted flit is the last flit (tail flit) constituting the packet. If the transmitted flit is a tail flit, the process proceeds to step S1115; otherwise, the process returns to step S1101.
- step S1115 the virtual channel information management unit 806 initializes the virtual channel information and releases the virtual channel so that another packet can use the virtual channel.
- FIG. 14A shows virtual channel information 901 after the tail flit 706 has been transmitted.
- FIG. 14B shows the state of each channel at that time.
- the virtual channel information management unit 806 initializes information related to virtual channel 0 in the virtual channel information 901.
- the channel usage number measurement unit 808 refers to the virtual channel information 901 in the virtual channel information management unit 806 and measures the number of used virtual channels 817 for each destination address. . Then, the channel usage information communication unit 809 notifies the adjacent relay apparatuses 800a and 800b of information indicating the usage number of the virtual channel 817 for each destination of the packet measured by the channel usage number measurement unit 808. Thereby, the initialization of the virtual channel can be notified to the adjacent relay apparatuses 800a and 800c.
- each relay apparatus 800 can transmit the transmitted packet to the destination receiving node.
- step S1111 that is, the operation of assigning the output channel 818 to the virtual channel 817 when the header frit 704 is stored in the virtual channel 817 will be described with reference to FIGS.
- FIG. 15 is a flowchart showing a flow of processing for assigning the output channel 818 to the virtual channel 817 by the output channel selection unit 812.
- FIG. 16 is a diagram illustrating an example of the usage status of the virtual channel at a certain moment of each relay apparatus in the present embodiment.
- FIG. 16A shows a certain time when the two bus masters BM0 and BM1 are transmitting traffic to the two memories M0 and M1 via the three relay devices R0, R4, and R8. It shows how the virtual channel is used.
- FIG. 16A the display of other bus masters, relay devices, and memories not involved in transmission / reception is omitted.
- FIG. 16B shows virtual channel information of the relay device R0 at this time.
- the relay devices R0, R4, and R8 shown in FIG. 16A all have four virtual channels. In order to simplify the description, the virtual channels will be described here without distinguishing them for each input port.
- the traffic transmitted from the bus master BM0 to the memory M0 is represented as T0
- the traffic transmitted from the bus master BM1 to the memory M1 is represented as T1.
- a virtual channel is assigned to the traffic T0 in order from the top of the figure
- a virtual channel is sequentially assigned to the traffic T1 from the bottom of the figure. Shall be assigned.
- the virtual channel assignment method may be any method as long as the virtual channel is assigned separately for each packet, and is not limited to the assignment method shown in FIG.
- step S1801 illustrated in FIG. 15 the output channel selection unit 812 refers to the virtual channel information 901 in the virtual channel information management unit 806, and whether there is a virtual channel in which the output port 805 has been set and the output channel has not been set. Determine whether or not. If there is a virtual channel 817 in which the output port 805 has been set and the output channel 818 has not been set, the process proceeds to step 1802; otherwise, step 1801 is repeated.
- step S1802 the output channel selection unit 812 refers to the virtual channel information 901 and the output buffer 804 in the virtual channel information management unit 806, and there is an empty output channel 818 that is not used by any virtual channel 817. It is determined whether or not to do. If the output channel 818 has a vacancy, the process proceeds to step S1803. If there is no vacancy, step S1802 is repeated.
- the virtual channels 0, 1, and 3 of the relay device R4 are already used, and the second virtual channel is not used.
- the output channel 2 of the relay device R0 is also free. I understand. Therefore, for the relay device R0, the process proceeds to step S1803.
- step S1803 the output channel selection unit 812 obtains the number of virtual channels used for each traffic destination in the local relay device and the virtual channel for each traffic destination in the adjacent relay device, which is obtained by the virtual channel usage number comparison unit 811. Refer to the information of the difference with the number of uses. Then, based on the difference information, the difference value is compared for each traffic destination stored in the virtual channel 817 in which the output port 805 has been set and the output channel 818 has not been set.
- FIG. 17 shows the number of virtual channels used by the traffic addressed to the memory M0 and the traffic addressed to the memory M1, and the virtual channels between the relay devices of the transmission destinations for each of the relay devices R0, R4, and R8 of FIG. It is a figure which shows the difference of the usage number.
- the traffic addressed to the memory M0 uses one virtual channel
- the traffic addressed to the memory M1 uses one virtual channel
- the traffic addressed to the memory M0 uses two virtual channels
- the traffic addressed to the memory M1 uses one virtual channel.
- the traffic addressed to the memory M0 uses one virtual channel
- the traffic addressed to the memory M1 uses one virtual channel.
- the difference between the number of virtual channels used in the relay device R0 and the number of virtual channels used in the destination relay device R4 is “ ⁇ 1” for traffic destined for the memory M0 and “1” for traffic destined for the memory M1. 0 ".
- the difference between the number of virtual channels used in the relay device R4 and the number of virtual channels used in the destination relay device R8 is “1” for traffic addressed to the memory M0 and “0” for traffic addressed to the memory M1. It becomes.
- step S1804 shown in FIG. 15 the output channel selection unit 812 determines whether or not there is traffic having a difference in the virtual channel usage number of 0 or more. That is, it is determined whether the number of virtual channels used in the own relay device is greater than the number of virtual channels used in the adjacent relay device in the subsequent stage, or whether the same number of traffic exists. If such traffic exists, the process proceeds to step S1805. If there is no such traffic, step S1804 is repeated.
- the virtual channel selection unit 813 determines that the output channel is not set from the virtual channels storing the traffic packets destined for the destination whose difference value of the virtual channel usage number is 0 or more and becomes the maximum. Select one virtual channel.
- the determination is made based on whether the difference is 0 or more, but the value used for the determination criterion does not have to be 0, and the determination is made based on whether the difference is greater than or equal to a predetermined threshold. It can be carried out. Further, the same determination may be made based on the ratio of the number of channel usage in the own relay device and the number of channel usage in the next relay device instead of the difference.
- output channels may be allocated.
- the determination may be made based on whether or not a virtual channel is used (that is, whether or not one channel is used) instead of the number of virtual channels used in the next relay apparatus.
- a virtual channel that is, whether or not one channel is used
- the own relay device uses a virtual channel, data based on the result of comparing the use status of the virtual channel in the own relay device with the use status of the virtual channel in the adjacent relay device Whether or not to output is determined.
- step S1806 shown in FIG. 15 the output channel selection unit 812 assigns an unused output channel 818 to the selected virtual channel 817 and updates the contents of the virtual channel information 901.
- step S1801 to S1806 the assignment of the output channel to the virtual channel is completed. Thereafter, the processing proceeds to step S1112 shown in FIG.
- step S1112 a method for determining an exclusive connection between input and output ports in step S1112 will be described.
- FIG. 18 shows a procedure of a switching method of the crossbar switch 803 that exclusively connects the virtual channel 817 and each output port 805.
- step S2101 the virtual channel selection unit 813 selects one virtual channel 817 in which both the output port 805 and the output channel 818 have been set as candidates for transmitting flits for each input port 801. Note that when there are a plurality of virtual channels 817 in which both the output port 805 and the output channel 818 have been set, a method for selecting one virtual channel 817 is arbitrary.
- step S2102 the switch switching unit 814 determines whether there is a conflict in the set output port 805 between the virtual channels 817 selected by the virtual channel selection unit 813. For example, when the virtual channel associated with the input port 0 and the virtual channel associated with the input port 1 both use the same output port, contention occurs. If there is a conflict, the process proceeds to step S2103. If there is no conflict, the process proceeds to step S2104.
- the switch switching unit 814 selects one virtual channel from the plurality of virtual channels 817 selected by the virtual channel selection unit 813 and with which the output port 818 is competing. To do.
- the selection method may be any method. For example, the selection may be made according to the round robin method, or when priority information or time information (packet deadline time or the like) is described in the packet, the selection may be made based on the information.
- step S2104 the switch switching unit 814 switches the crossbar switch 803 so as to connect the virtual channel 817 selected in steps S2101 to S2103 and the set output port 805, and the flit in the virtual channel 817 is set. Send.
- the virtual channels are allocated so that the number of virtual channels used in each relay device on the transmission path is made uniform by distinguishing each packet destination. Can do. Thereby, it is possible to prevent the virtual channel of the relay device on the route from being occupied by a packet of a specific destination. As a result, a situation in which a packet transmitted to another destination cannot be transmitted can be avoided, and a reduction in delay time and an improvement in transmission performance (throughput) can be realized.
- the relay apparatus 800b in this embodiment compares a virtual channel utilization number only with the adjacent relay apparatus 800c of a back
- this invention is not limited to such a form.
- the comparison may be performed only with the adjacent relay device 800a in the preceding stage, or the result of comparison with both the adjacent relay devices 800a and 800c may be used.
- the output channel 818 may be preferentially assigned to the traffic in which the difference value is equal to or greater than a predetermined threshold and has the maximum value.
- the difference obtained by subtracting the virtual channel usage number in the own relay device 800b from the virtual channel usage number in the preceding relay device 800a and the virtual channel usage number in the subsequent relay device 800c are subtracted from the virtual channel usage number in the own relay device 800b. Similar processing may be performed based on the sum of the difference. In this case, the output channel 818 may be preferentially assigned to the traffic whose sum is equal to or greater than a predetermined threshold and has the maximum value.
- each relay device 800 includes the output buffer 804.
- the output buffer 804 may be omitted in order to reduce the amount of memory.
- the arbiter 850 may be configured to determine the correspondence between the virtual channel in the input buffer of the own relay apparatus and the virtual channel in the input buffer of the subsequent relay apparatus.
- the relay apparatus of this embodiment differs from the relay apparatus of Embodiment 1 only in the processing in the virtual channel usage number comparison unit 811, and the other components are the same.
- a different point from Embodiment 1 is demonstrated and the description about the overlapping matter is abbreviate
- traffic can be distinguished according to the difference in destination, and the number of virtual channels used by each relay apparatus on the transmission path can be made uniform for each traffic. As a result, it is possible to avoid a situation in which a virtual channel in a specific relay apparatus on the transmission path is occupied by specific traffic and transmission of traffic of other destinations is hindered.
- a virtual channel between traffics in the relay device that may occur due to a difference in transmission rate or a difference in packet arrival time Uniformity in the number of uses can be achieved.
- FIG. 19 is a diagram for explaining a problem that occurs in the same configuration as FIG.
- FIG. 19A shows a virtual channel at a certain time when traffic is transmitted from the two bus masters BM0 and BM1 to the two memories M0 and M1 via the relay devices R0, R4, and R8. It shows the state of use.
- FIG. 19B shows virtual channel information of the relay device R0 at this time.
- FIG. 20 illustrates the number of virtual channels used by the traffic T0 toward the memory M0 and the traffic T1 toward the memory M1 in each of the relay devices R0, R4, and R8 illustrated in FIG. It is a figure which shows the difference of the virtual channel utilization number between.
- the traffic T0 addressed to the memory M0 uses two virtual channels, and the traffic T1 addressed to the memory M1 uses one virtual channel.
- the traffic T0 uses one virtual channel, and the traffic T1 does not use the virtual channel.
- the traffic T0 uses one virtual channel, and the traffic T1 does not use the virtual channel.
- the difference ⁇ R0 in the number of virtual channels used with the destination adjacent relay device R4 is “1” for the traffic T0 and “1” for the traffic T1.
- the difference ⁇ R1 in the number of virtual channels used with the adjacent relay device R8 as the transmission destination is “0” for both the traffic T0 and the traffic T1.
- the traffic T0 uses two virtual channels, and the traffic T1 is Even one of them does not use a virtual channel.
- transmission quality (throughput) decreases and transmission delay increases.
- FIG. 21 is a flowchart for explaining the operation of the output channel selection unit 812 in the relay device 800 of the second embodiment.
- the same numbers are assigned to the operations common to the operations shown in FIG.
- differences from the process shown in FIG. 15 will be described.
- step S1804 if there is a destination whose difference is 0 or more, in subsequent step S2501, the output channel selection unit 815 determines the number of virtual channels used by the own relay device 800b and the number of virtual channels used by adjacent relay devices. Are determined, and it is determined whether or not there are a plurality of destinations having the maximum difference. If there are a plurality of destinations with the maximum difference, the process proceeds to step S2502. If there is only one destination with the maximum difference (0 or more), the process proceeds to step S1805.
- step S2501 when the relay device R0 is in the state of step S2501, the difference value ⁇ R0 is the same for both traffic T0 and T1, as shown in FIG. Moves to step S2502.
- the virtual channel usage number comparison unit 811 refers to the adjacent channel usage information management unit 810, and among the traffic determined to have the maximum difference, the destination having the smallest usage number of the output channel 818 in the subsequent relay device.
- One virtual channel 817 used by other traffic is selected, and an output channel 818 is assigned to the virtual channel 817. As a result, the number of virtual channels used for each traffic can be made uniform.
- the number of allocated virtual channels in the adjacent relay device is small.
- Output channels are preferentially assigned to traffic. This makes it possible to equalize the number of virtual channels used for a plurality of traffics with different destinations.
- the relay apparatus controls the output so that the number of virtual channels used in the adjacent relay apparatus as the transfer destination approaches evenly for any destination traffic. For this reason, transmission performance (throughput, delay time) should be equalized between traffic with different destinations, while suppressing the occupation of the virtual channel by specific traffic, regardless of the difference in transmission rate and packet arrival timing. Can do.
- the traffic is distinguished by the destination, and the virtual channel assignment control is performed so that the number of virtual channels used in the relay apparatus on the transmission path approaches uniformly. As a result, it is possible to suppress a decrease in transmission performance because all virtual channels in the relay apparatus are occupied by traffic directed to a specific destination.
- the transmission order of a plurality of packets set with the same destination and stored in a plurality of virtual channels in the relay apparatus is further adjusted based on time information given to the packets.
- the deadline (allowable delay time) until the packet transmitted by the bus master reaches the receiving node differs depending on the type of application and the content of processing. For this reason, it is necessary not only to avoid occupying all virtual channels of a specific relay device on a transmission path by traffic of a specific destination, but also to assign virtual channels preferentially to packets with a short deadline. There is. Otherwise, the packet will not arrive within the deadline, and the system cannot be operated correctly.
- the relay apparatus transmits a packet with a short deadline time in preference to a packet with a long deadline time within the traffic set with a common destination. As a result, more packets can be transmitted to the receiving node within the deadline.
- FIG. 22 is a diagram showing the configuration of the relay device of this embodiment.
- FIG. 23 is a diagram illustrating a data structure of a packet transmitted in the present embodiment. 22 and 23, the same components as those in the first and second embodiments are denoted by the same reference numerals.
- the relay apparatus 800b of this embodiment includes a time information comparison unit 840 that compares time information of a plurality of frits stored in a plurality of virtual channels 817 based on virtual channel information managed by the virtual channel information management unit 806. It has more.
- the header frit 704 of the transmitted packet 700 determines the packet transmission order, such as the packet transmission time and the deadline time until the packet reaches the receiving node. Time information used to do this is given.
- the virtual channel information management unit 806 in the present embodiment records this time information in the virtual channel information as well as other information.
- FIG. 24 is an example of virtual channel information 2701 in the present embodiment.
- the virtual channel information 2701 manages time information recorded in the header frit 704 of the packet stored in each virtual channel.
- the deadline until the packet reaches the receiving side node is used as the time information will be described.
- FIG. 25 is a flowchart showing the flow of the allocation operation of the virtual channel 817 and the output channel 818 in the relay device 800b in this embodiment.
- the same number is attached
- step S2501 the operations up to step S2501 are the same as those in the second embodiment. If it is determined in step S2501 that there are a plurality of destinations with the largest difference in the number of virtual channel usages, the process proceeds to step S2801.
- step S2801 the output channel selection unit 812 compares the number of virtual channels used by the adjacent relay device 800c as the transmission destination by comparing with the traffic destination, and selects one destination having the smallest number of usages as a candidate destination.
- step S2805 the destination determined to have the maximum difference in step S2501 is set as a candidate destination.
- FIG. 26 is a diagram illustrating an example of a virtual channel of each relay apparatus having the same configuration as that of FIG. FIG. 26 (a) shows how a virtual channel is used at a certain time when traffic is transmitted from the bus master BM0 to one memory M0 via the relay devices R0, R4, and R8. Yes.
- FIG. 26B shows virtual channel information of the relay device R0 at this time. Also in this example, it is assumed that each of the relay apparatuses R0, R4, R8 has four virtual channels. In FIG. 26, for simplification of description, the distinction of the virtual channel for each input port is omitted.
- FIG. 26A virtual channels are assigned to traffic transmitted from the bus master BM0 to the memory 0 in order from the upper side of the figure.
- FIG. 26A is an example of a virtual channel assignment method, and the assignment method shown in FIG. 26A is not limited to the assignment method shown in FIG.
- the output channel selection unit 812 determines whether or not there are a plurality of virtual channels 817 storing the packets in which the destination is set. If there are a plurality of virtual channels 817 in which the packet in which the destination is set is stored, the process proceeds to step S2803. Otherwise, the process proceeds to step S2804.
- step S2801 since there are a plurality of virtual channels in which the packet addressed to the memory M0 selected in step S2801 is stored in the relay device R0, the process proceeds to step S2803.
- step S2803 the time information comparison unit 840 refers to “time information” described in the virtual channel information 2701. Then, one virtual channel having the highest priority based on the time information is selected from the virtual channels storing the packets destined for the destination selected in step S2801.
- the time information comparison unit 2601 displays time information of virtual channel 1, virtual channel 2, and virtual channel 3 for which no output channel is set. Compare.
- the packet with the shortest deadline until the packet reaches the receiving node is preferentially transmitted.
- the virtual channel No. 2 with no output channel and the shortest deadline is selected.
- step S2802 determines whether there is only one virtual channel for which the output channel is not set for the candidate destination. If it is determined in step S2802 that there is only one virtual channel for which the output channel is not set for the candidate destination, the output channel selection unit 812 selects the virtual channel in step S2804.
- step S1805 the output channel selection unit 812 selects one free output channel 818 for the selected virtual channel. assign.
- the time information comparison unit 840 preferentially assigns the output channel 818 from a packet with a short deadline time, but the output channel assignment order is based on time information other than the deadline time as time information. You may decide.
- FIG. 27 shows an example of time information that can be used in the present embodiment, and an example of a reference for comparing the time information.
- the output channel may be assigned in order from the oldest transmission time using the time when the packet was transmitted. Thereby, the packet can be relayed to the receiving node while maintaining the order of transmission between the packets.
- the elapsed time after transmission may be used as time information, and the output channels may be allocated in order from the packet having the longer elapsed time.
- the time information When managing the transmission time, the time information requires a number of digits that can represent the period during which the semiconductor system is operating. Therefore, when the semiconductor system operates for a long time, the number of digits of the time information increases. On the other hand, when using the elapsed time since the packet was transmitted as the time information, it is sufficient if there is a number of digits to express the time taken from the transmission of the packet to the reception. There is an advantage that the number of digits of time information can be reduced. If the number of digits of the value handled as time information is small, the time information comparison circuit in the time information comparison unit 840 can be made small, which is effective in reducing the resources of the semiconductor system.
- the transmission time is used, for example, by using only the n-digit value from the smaller transmission time, the number of digits handled as time information can be reduced.
- the n-digit value for example, the number of digits only representing the time required from when a packet is transmitted until it is received may be used.
- output channels may be allocated in order from a packet close to the deadline time using a deadline time at which the packet should be delivered to the receiving node. Further, as in the above example, output channels may be allocated in order from the packet with the shortest remaining time, using the remaining time until the deadline time at which the packet should be delivered to the receiving node.
- the traffic transmission quality is maintained while suppressing the deviation of the number of virtual channels used in each relay device on the transmission path for traffic with different destinations. Transmission is possible. For this reason, for example, when the best effort type traffic with a long deadline time and the quality assurance type traffic with a short deadline time are mixed and transmitted, the quality with respect to the transmission time can be improved. Specifically, the quality assurance type traffic can be delivered to the receiving node within the deadline by preferentially transmitting the quality assurance type traffic. On the other hand, for best effort type traffic, packets can be distributed and stored in virtual channels of a plurality of relay apparatuses on the transmission path. As a result, it is possible to avoid the virtual channel of a specific relay device being occupied by specific traffic. As a result, even if quality assurance type traffic is transmitted later, it is possible to immediately transmit the traffic without waiting until a virtual channel becomes available on the route.
- the virtual channel in the NoC is effectively used for a plurality of types of traffic having different quality requirements while performing flow control according to those requirements. Can do.
- the virtual channel of a specific relay apparatus on the transmission path is specified by making the number of virtual channels used uniformly in each relay apparatus on the transmission path for each traffic with different destinations. To avoid being occupied by traffic.
- the relay device of this embodiment when the number of virtual channels used by specific traffic on the virtual channel on the transmission path exceeds a predetermined threshold, the flow control between the relay device and the bus master is performed.
- the amount of traffic transmitted from the bus master is limited by the adjustment. Thereby, it can be avoided that all virtual channels on the transmission path are occupied.
- limit the traffic transmission amount means, for example, (a) reducing the traffic transmission amount, (b) stopping the traffic transmission, and (c) the upper limit value and the lower limit value of the traffic transmission amount. This means that both are set or only the upper limit value is set, and traffic is transmitted with the transmission amount within the range.
- FIG. 28 shows a situation in which traffic T0 is transmitted from the bus master BM0 to the memory M0 via the relay devices R0, R4, and R8. If the transmission amount of traffic T0 from the relay device R8 to the memory M0 is smaller than the transmission amount of traffic T0 transmitted from the bus master MB0 to the relay device R0, if this state continues for a long time, the relay devices on the transmission path Thus, only the control for equalizing the number of virtual channels used results in uniformization in a state where all the virtual channels in the relay apparatus on the transmission path are used by the traffic T0. For this reason, traffic to other destinations cannot be transmitted (FIG. 40a).
- FIG. 29 is a diagram showing the configuration of the relay device of this embodiment.
- the relay device 800 in this embodiment is directly connected to the bus master 4101.
- the arbiter 850 further includes a flow control adjustment unit 4102 that adjusts the amount of traffic transmitted from the bus master 4101 in addition to the components in the first embodiment.
- Flow control between the bus master 4101 and the relay device 800 is performed as follows.
- a packet transmission request is output from the bus master 4101 to the relay device 800.
- a packet transmission from the bus master 4101 is executed by returning a permission signal from the relay device 800 to the bus master 4101.
- the flow control adjustment unit 4102 limits the amount of transmission from the bus master 4101 to the relay device 800 by adjusting the return timing of the permission signal in response to the transmission request from the bus master 4101.
- FIG. 30 is a flowchart showing an operation related to the flow control adjustment with the bus master 4101 executed by the relay device 800 in the present embodiment.
- the relay device 800 measures the number of virtual channels used for each input port.
- the flow control adjustment unit 4102 determines whether or not the number of virtual channels used for traffic transmitted to a specific destination is greater than a predetermined threshold value. If there is no traffic exceeding the threshold, the process returns to step S4201. If there is traffic exceeding the threshold, the process proceeds to step S4203, and the flow control is adjusted by instructing the bus master that is transmitting the traffic to limit the traffic transmission amount.
- the predetermined threshold is set to 1.
- the relay device R0 detects two or more virtual channels by the traffic T0
- the relay device R0 stops outputting the traffic transmission permission signal to the bus master BM0 until the number of virtual channels used is less than two, and the bus master BM0. Stop sending traffic by.
- FIG. 28 (B) while keeping the number of virtual channels used uniformly between relay devices on the transmission path, it is avoided that all virtual channels on the transmission path are occupied by traffic T0. it can.
- an advantageous effect is obtained as compared with the case where only the flow control is performed. Play.
- the relay device adjacent to the bus master cannot immediately grasp the congestion status. That is, the bus master that is transmitting traffic until the congestion sequentially propagates to the traffic transmission source and reaches the relay device adjacent to the bus master cannot specify the congestion state on the transmission path.
- the flow in the relay devices on the transmission path approaches uniformly. Therefore, it is possible to grasp the traffic congestion status based on only the channel usage status of the relay device connected to the bus master without measuring the channel usage status in each relay device. As a result, the bus master transmitting the traffic can grasp the congestion on the transmission path before the virtual channel is occupied by a specific relay device on the transmission path. According to the control in the present embodiment, it is possible to avoid a situation in which other traffic cannot be transmitted when the virtual channel of the relay device on the transmission path is occupied by the specific traffic transmitted by the bus master.
- the traffic that is subject to the flow control performed by the flow control adjustment unit 4102 is not limited to traffic having a common destination, but may be traffic having at least a part of the transmission path.
- the flow control in the present embodiment is not limited to the number of channels used by the relay device connected to the bus master, but may be based on the flow rate or delay time.
- the transmission control and the flow control in the first embodiment are combined, but the same effect can be obtained by combining the transmission control and the flow control in the second and third embodiments.
- the traffic is distinguished based on the difference in the packet destination.
- the traffic may be distinguished based on the difference in the packet transmission source, and the virtual channel may be allocated.
- the virtual channel of each relay device may be allocated by distinguishing the traffic based on the combination of the packet destination and the transmission source.
- destination (destination)” and “source” are used to refer to the node where the packet finally arrives and the node that originally sent the packet. May be interpreted as follows. That is, information specifying passage of a specific route, such as another relay device or an input / output port through which a packet passes, may be used as the “destination” or “transmission source”.
- 31A and 31B show various destination definitions and specific examples of destinations as viewed from the relay device R1. For example, in the configuration shown in FIG. 31A, a relay device that is in the process of passing on a transmission path until a packet reaches a receiving node (memory) may be defined as a “destination”.
- the destination is defined as a receiving node (memory)
- eight memories from the memory 0 to the memory 7 can be the destination.
- the destination is defined as the second relay device, four relay devices R8 to R11 can be the destinations. If the destination is defined as one relay device ahead, two relay devices R5 and R7 can be the destinations.
- the destination of the packet may not be a node such as a memory or a relay device, but the destination may be defined depending on the output port to be used.
- output port 0 and output port 1 that is, two relay devices R5 and R7 can be destinations.
- the relay device may set the destination again according to the definition in the relay device and send the packet.
- transmission sources can be defined for each relay device by applying the same concept to the transmission source. That is, not only the transmission source bus master but also the previous relay device, the previous relay device, the input port to be used, etc. may be defined as the transmission source.
- the relay apparatus of the present invention is not limited to use in a multistage connection network.
- a mesh topology in which relay devices are arranged in a grid may be configured.
- a torus type topology in which relay devices are connected in a ring shape vertically and horizontally may be used.
- a hierarchical topology in which buses are connected hierarchically as shown in FIG. If the topology is such that a plurality of bus masters are connected via a distributed bus, the relay device of the present invention can be similarly applied.
- each component of the relay device is represented as a separate functional unit that is made into a block.
- a program that defines the processing of these functional units is stored in a processor (computer) installed in the relay device.
- the operation of the relay device may be realized by executing.
- the processing procedure of such a program is as described in the flowcharts of FIGS. 8, 15, 18, 21, 25, for example.
- FIG. 33 shows an example in which a plurality of bus masters on a semiconductor circuit, a plurality of memories, and a shared input / output port (I / O port) for communicating data with the outside are connected using a distributed bus.
- a semiconductor circuit can be used in portable terminals such as mobile phones, PDAs (Personal Digital Assistants), electronic book readers, and devices such as TVs, video recorders, video cameras, and surveillance cameras.
- the bus master is, for example, a CUP, DSP, transmission processing unit, image processing unit, or the like.
- the memory may be a volatile DRAM or a non-volatile flash memory. Moreover, a volatile memory and a non-volatile memory may be mixed.
- the input / output port may be a communication interface such as USB or Ethernet (registered trademark) for connecting to a storage device such as an external HDD, SSD, or DVD.
- FIG. 34 shows a multi-core processor in which a plurality of core processors are arranged in a mesh shape and these are connected by a distributed bus in order to improve the processing capability of a core processor such as a CPU, GPU, or DSP.
- each core processor can function as the first node in the present invention, and can also function as the second node.
- each core processor On a multi-core processor, communication is performed between each core processor.
- each core processor is provided with a cache memory for storing data necessary for arithmetic processing, and information on each other's cache memory can be exchanged between the core processors. As a result, information can be shared, and the processing performance can be improved.
- the communication between core processors that occurs on a multi-core processor has a different positional relationship, distance (number of relay hops), and communication frequency. For this reason, if the relay is performed while simply maintaining the order of the data packets, a relay device is generated in which all the buffers are occupied by packets addressed to a specific core processor and the packet data does not easily flow. As a result, the performance of the multi-core processor is reduced and the processing time is increased.
- the relay device when the relay device according to the embodiment of the present invention is used, since the virtual channel is uniformly assigned to the packets having different destinations in the virtual channel of each relay device, it is suitable for a specific core processor. It can be avoided that the virtual channel of the relay apparatus is occupied by the packet. As a result, the performance of each core processor can be improved and the processing time can be shortened.
- the present invention can be implemented not only as a chip, but also as a simulation program that performs design and verification for mounting on a chip.
- a simulation program is executed by a computer.
- each component shown in FIGS. 2, 5, and 22 is implemented as an object class on the simulation program.
- Each class implements an operation corresponding to each component on the computer by reading a predetermined simulation scenario. In other words, the operation corresponding to each component is executed in series or in parallel as a processing step of the computer.
- the class implemented as a relay device determines conditions such as the destination address, source address, and time information by reading the simulation scenario defined by the simulator. Also, conditions such as the transmission timing of packets transmitted from other relay classes are determined.
- the class implemented as a relay device operates until the simulation end condition described in the simulation scenario is satisfied. It calculates the throughput and latency during operation, changes in bus flow rate, operating frequency, estimated power consumption, etc., and provides them to the program user. Based on these, the program user evaluates the topology and performance, and performs design and verification.
- each line of the simulation scenario for example, information such as the ID of the transmission source node, the ID of the destination node, the size of the packet to be transmitted, and the transmission timing is usually described. Further, by evaluating a plurality of simulation scenarios in a batch process, it is possible to efficiently verify whether or not desired performance can be guaranteed in all assumed scenarios.
- the network configuration most suitable for the simulation scenario can be identified by comparing the performance by changing the topology of the bus, the number of nodes, the arrangement of the transmission node, the relay device, and the destination node. Any of the above embodiments can be applied as the design and verification tool of this aspect. As described above, the present invention can also be applied when implemented as a design and verification tool.
- the present invention is a resource required for implementation when integrating a plurality of media processing DSPs, a CPU that performs high-speed file transfer, etc. on one SoC (System on Chip) using a distributed bus. This is useful for realizing both resource saving and low processing delay. It is also useful for saving power of the entire integrated circuit by saving resources and reducing processing delay.
- SoC System on Chip
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Small-Scale Networks (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
中継装置800bは、入力されたデータを格納するための複数のチャネル817を有する入力バッファ802と、複数のチャネル817の少なくとも1つに格納された、伝送経路の少なくとも一部が共通するデータに関する入力バッファ802の利用状況、および伝送経路の少なくとも一部が共通するデータに関する隣接中継装置800cにおける入力バッファの利用状況の比較結果に基づいて、データを出力するか否かを決定するアービター850とを備えている。
Description
本発明は、分散型のバスを備える半導体集積回路において、バスを介して接続された複数の中継装置間を流れるトラヒックの送信スケジュールを調整する技術に関する。
バスを備えた半導体集積回路におけるデータの伝送制御には種々の方式がある。図35は、従来の半導体集積回路における伝送制御方式の例を示す図である。図35(a)は、集中型のバス制御の例を示している。集中型のバス制御を行う従来の集積回路では、主に複数のバスマスタとメモリとの間は1つのバスによって接続され、アービターによって各バスマスタからメモリへのアクセスが調停される。このような構成により、複数のバスマスタとメモリとの間のトラヒック干渉を防ぎながらデータを伝送することができる。しかしながら、集積回路の高機能化およびマルチコア化による回路規模の増大、および伝送路を流れるトラヒックの変動の複雑化が進んでおり、集中型のバス制御による集積回路の設計が困難になってきている。
その一方で、近年、並列計算機における接続技術や、ネットワーク制御技術を取り入れた分散型のバスを有する半導体集積回路の開発が進んでいる。図35(b)は、そのような分散型のバス制御の例を示している。分散型のバスを有する半導体集積回路は、複数の中継装置(R)が複数のバスで接続された構成を有している。近年、図35(b)に示すような分散型のバス制御を用いることにより、大規模化した集積回路内のトラヒックを、複数のバスに分散して伝送する、ネットワークオンチップ(Network on Chip:NoC)の取り組みが広がっている。
図36は、NoC、並列計算機、およびATM(Asynchronous Transfer Mode)網などで利用される中継装置の構成例を示す図である。伝送されるデータ(トラヒックデータ)は、パケットやセルの単位に分割され、複数の中継装置を経由して宛先のノードまで伝送される。図36に示す中継装置は、入力ポート0、1と、各入力ポートにそれぞれ対応付けられた2つのバッファと、出力ポート0、1と、各入力バッファおよび各出力ポートを相互に接続するクロスバスイッチとを備えている。また、図示される中継装置は、データの宛先に応じてクロスバスイッチの接続を切り替える制御を行うアービターをさらに備えている。入力ポート0、1から中継装置に入力されたデータは、一旦バッファに蓄えられる。各バッファは、並列化された複数の仮想的なチャネル(Virtual Channel:VC)を備えており、異なるデータを入力ポート毎に並行して処理することができる。
クロスバスイッチは、各入力ポートと各出力ポートとの排他的な接続を決定するスイッチである。ここで、入力ポートと出力ポートとの「排他的な接続」とは、1つの出力ポートは最大でも1つの入力ポートとのみ接続している状態として定義する。
クロスバスイッチによる入力ポートと出力ポートとの排他的な接続は、アービターによって調停される。中継装置は、アービターによりクロスバスイッチの接続を切り替えることで、バッファ内に格納されたデータを宛先へと伝送する。
図37は、バスマスタからメモリに対して、複数の中継装置を介してパケットを送信した場合のパケットの流れの一例を説明するための図である。図37では、2個のバスマスタB0、B1と2個のメモリM0、M1とが、一列に接続された複数の中継装置R0、R1、R2、R3を介して接続されている。各中継装置R0、R1、R2、R3には仮想チャネルが4個ずつ設けられている。ここでは、バスマスタB0からメモリM0へと送信されるトラヒックT0と、バスマスタB1からメモリM1へと送信されるトラヒックT1とが存在する状態を想定する。
なお、図37では、説明の簡略化のため、入力ポート毎の仮想チャネルの区別は省略している。また、各中継装置は、さらに多数の中継装置、バスマスタ、またはメモリと接続され得るが、簡略化のため、直列に接続された4個の中継装置のみを図示している。トラヒックT0とトラヒックT1との区別を分かりやすくするために、各中継装置において、トラヒックT0については図の上側から順に仮想チャネルが割り当てられ、トラヒックT1に対しては図の下側から順に仮想チャネルが割当てられるものとしている。図37は、仮想チャネルの割り当て方の一例であり、パケット毎に区別して仮想チャネルを割り当てる方法には種々の形態がある。
バスマスタB0は、メモリM0へとパケットを送信し、バスマスタB1はメモリM1へとパケットを送信する。各バスマスタから送信されるパケットは、1サイクルで送信できるフリットと呼ばれる単位に分割され、1フリットずつ宛先のメモリへと転送される。中継装置にフリットが送られると、中継装置は、次の手順でフリットを処理する。(1)指定された仮想チャネルにフリットを格納する。(2)転送先の次の中継装置を決定する。(3)決定した次の中継装置でフリットを格納する仮想チャネルを決定する。(4)次の中継装置にフリットを送信する。以上の4種類の処理を各中継装置が行うことにより、フリットは宛先へと送られていく。宛先に届いたフリットは、結合されて再び一つのパケットに戻される。
図37に示す例では、バスマスタB0とバスマスタB1に隣接する中継装置R0は、各バスマスタから送られてきたフリットを、(1)各バスマスタが送信時に指定した仮想チャネルに格納する。この際、異なるパケットを構成するフリットを区別して、別々の仮想チャネルに格納する。次に、中継装置R0は、(2)仮想チャネル毎に、格納したフリットに付与された宛先情報を元に、次に転送すべき中継装置を特定する。図示される例では、いずれの仮想チャネルについても、中継装置R1を転送先として決定されたものとしている。さらに、(3)各仮想チャネルについて、次の中継装置R1内でフリットを格納するための仮想チャネルを決定する。仮想チャネルごとに、次の中継装置R1と当該中継装置R1でデータを格納する仮想チャネルとを決定すると、中継装置R0は、(4)フリットを中継装置R1へと送信する。
他の中継装置R1、R2、R3も同様に、1つ前の中継装置から送られてきたフリットを、(1)指定された仮想チャネルに格納し、(2)次に送信する中継装置を決定し、(3)次の中継装置で格納する仮想チャネルを決定した後、(4)フリットを次の中継装置または宛先のメモリへと転送する。このようにして、複数のバスマスタから複数の宛先のメモリへとデータが伝送される。
図37に示す従来の中継装置を用いた伝送システムでは、伝送負荷が大きい場合、各中継装置において、上記の処理(3)、(4)の際に、宛先の異なるフリットの間で競合が発生する場合がある。競合が発生すると、宛先に届くパケットの順番が送信時とは異なる順番に入れ替わったり、トラヒックによって遅延時間に差が生じたりし、伝送品質の低下を引き起こす。
このため、各トラヒックについて、パケットが送信された順番を維持し、また、遅延時間やジッターの増加を抑制することが必要となる。そのために、例えば、パケットが送信された時刻や経由した中継装置の数(ホップ数)に基づいてAgeと呼ばれる評価値を定義し、Ageが最も大きい(または小さい)パケットから順番に送信を行うAge-Based方式が提案されている(例えば、特許文献1)。
従来の中継装置を用いた伝送システムでは、特定のトラヒックが一部の中継装置の仮想チャネルを占有することにより、他のトラヒックの伝送に遅延が生じるという課題がある。以下、その課題を、具体的に説明する。
図38は、図37と同様の構成を有する従来の中継装置を用いた半導体システムにおける課題を説明するための図である。従来の半導体システムでは、バスマスタでの処理や、メモリでの処理の変化によって、トラヒックの送信レートに変動が生じたり、トラヒックの伝送経路上の中継装置間で、仮想チャネルの利用数に偏りが発生することがある。例えば、バスマスタB0からメモリM0へ送信されるトラヒックの送信レートが相対的に高く、バスマスタB1からメモリM1への送信レートが相対的に低い、または送信自体が停止している場合、各中継装置は、次の中継装置の仮想チャネルに空きがあれば、パケットを次の中継装置に無条件で送信してしまう。そのため、図38(a)に示すように、メモリ側の一部の中継装置R3の全ての仮想チャネルがバスマスタB0から送信されたパケットによって占有されてしまう事態が発生し得る。その結果、トラヒックの伝送経路上の中継装置間で、仮想チャネルの利用数に偏りが生じることになる。
メモリM0へと向かうトラヒックT0によって伝送経路上の中継装置R3の全ての仮想チャネルが占有された状態で、さらに別のバスマスタB1から別のメモリM1へとパケットを送信すると、トラヒック間で競合が発生する。例えば、図38(b)に示すように、メモリM1へと向かうパケットは、中継装置R3の仮想チャネルが全て利用されているため、中継装置R3の仮想チャネルに空きができるまで、メモリM1へパケットを届けることができなくなる。
一般に、メディア処理系のトラヒックは、アプリケーションの種類によって異なる許容遅延が設定される。例えば、図38に示すトラヒックT0は許容遅延時間が長く、トラヒックT1は許容遅延時間が短いと仮定する。この場合、トラヒックT0については要求された時間内にパケットを宛先に届けることができたとしても、伝送経路上の中継装置R3の仮想バッファを占有することになる。その結果、許容遅延時間が短いトラヒックT1について、トラヒックT0よりも長い遅延が生じ、トラヒックT1の遅延時間内にパケットを伝送することができないという問題が発生する。
上記のような、特定のトラヒックによって伝送経路上の一部の中継装置の仮想チャネルが占有される問題を回避する方法として、仮想チャネルの容量を大きくすることが考えられる。しかしながら、一般的な並列計算機やATMなどで利用される中継装置に比べて、集積回路上で実装される中継装置においては、実装面積やコストの制約により、多くの仮想チャネルを用意することは困難である。
また、集積回路では、パケットの伝送遅延に対する許容時間も比較的短いため、特定のトラヒックによって占有された仮想チャネルが解放されるまで待ち時間が発生することも好ましくない。
このように、集積回路上に実装された中継装置では、一般的な並列計算機やATMなどにおける中継装置で行われるAge-Based方式などの中継流量制御をそのまま適用するだけでは不十分である。伝送経路上の中継装置で入力バッファが特定の宛先のトラヒックによって占有されることを回避する必要がある。
本発明は、上記の課題に鑑み、中継装置内の入力バッファ内のデータ格納部のサイズや数を増やすことなく、入力バッファが特定の宛先のトラヒックによって占有されないようにすることを目的とする。
本発明の中継装置は、データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1および第2ノードの間で伝送される前記データをバスを介して中継する複数の中継装置とを備えたデータ伝送システムにおいて用いられる中継装置である。中継装置は、入力されたデータを格納するための複数のデータ格納部と、前記複数のデータ格納部の少なくとも1つに格納された、伝送経路の少なくとも一部が共通するデータに関する前記データ格納部の利用状況、および前記伝送経路の少なくとも一部が共通するデータに関する隣接中継装置におけるデータ格納部の利用状況の比較結果に基づいて、前記データを出力するか否かを決定するアービターと、を備える。
ある実施形態において、前記データの出力先は、前記隣接中継装置である。
ある実施形態において、前記アービターは、送信先アドレスおよび送信元アドレスの少なくとも一方が共通するデータについての、自中継装置における前記データ格納部の利用状況と、前記隣接中継装置における前記データ格納部の利用状況とを比較した結果に基づいて、前記データを出力するか否かを決定する。
ある実施形態において、前記アービターは、前記伝送経路の少なくとも一部が共通するデータが格納されたデータ格納部の数と、前記隣接中継装置における前記伝送経路の少なくとも一部が共通するデータが格納されたデータ格納部の数との比較結果に基づいて、前記データを出力するか否かを決定する。
ある実施形態において、前記アービターは、前記伝送経路の少なくとも一部が共通するデータが格納されたデータ格納部の数から、前記隣接中継装置における前記伝送経路の少なくとも一部が共通するデータが格納されたデータ格納部の数を引いた差分値が予め設定された閾値以上である場合には、前記データを出力し、前記差分値が前記閾値に満たない場合には、前記データを出力しない。
ある実施形態において、前記閾値は0である。
ある実施形態において、前記アービターは、複数のグループのデータであって各グループのデータの伝送経路の少なくとも一部が共通している複数のグループのデータが前記複数のデータ格納部に格納されている場合において、グループごとに、自中継装置における前記データ格納部の利用数から次の隣接中継装置における前記データ格納部の利用数を引いた差分値を求め、前記差分値が前記閾値以上であるグループのデータのうち、前記差分値が最大であるデータを出力する。
ある実施形態において、前記アービターは、前記差分値が最大であるデータが複数存在する場合に、次の隣接中継装置における前記データ格納部の利用数が最小であるデータを出力する。
ある実施形態において、前記複数のデータ格納部に入力されるデータは、前記データの送信時刻、前記データを送信してから経過した時間、前記データが前記第2ノードに届くべき時刻、および前記データが前記第2ノードに届くべき時刻までの残り時間のいずれかを示す時間情報を有しており、前記アービターは、前記時間情報の値に基づき、出力するデータを決定する。
ある実施形態において、前記アービターは、前記次の隣接中継装置におけるデータ格納部の利用数が最小であるデータが複数存在する場合に、前記時間情報の値に基づき、出力するデータを決定する。
ある実施形態において、前記複数のデータ格納領域の各々は、仮想的な回線で構成された仮想チャネルである。
ある実施形態において、前記アービターは、前記伝送経路の少なくとも一部が共通するデータが格納されたデータ格納部の数を示す情報を前記隣接中継装置および他の隣接中継装置の少なくとも一方に送信し、前記隣接中継装置から前記伝送経路の少なくとも一部が共通するデータが格納されたデータ格納部の数を示す情報を取得するチャネル利用情報通信部をさらに有している。
本発明の制御方法は、データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1および第2ノードの間で伝送される前記データをバスを介して中継する複数の中継装置とを備えたデータ伝送システムにおいて用いられる中継装置の制御方法である。制御方法は、入力されたデータを複数のデータ格納部に格納するステップと、前記複数のデータ格納部の少なくとも1つに格納された、伝送経路の少なくとも一部が共通するデータに関する前記データ格納部の利用状況、および前記伝送経路の少なくとも一部が共通するデータに関する隣接中継装置におけるデータ格納部の利用状況の比較結果に基づいて、前記データを出力するか否かを決定するステップとを含む。
本発明の制御プログラムは、データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1および第2ノードの間で伝送される前記データをバスを介して中継する複数の中継装置とを備えたデータ伝送システムにおいて用いられる中継装置の制御プログラムである。前記制御プログラムは、前記中継装置に実装されたコンピュータに対し、入力されたデータを複数のデータ格納部に格納するステップと、前記複数のデータ格納部の少なくとも1つに格納された、伝送経路の少なくとも一部が共通するデータに関する前記データ格納部の利用状況、および前記伝送経路の少なくとも一部が共通するデータに関する隣接中継装置におけるデータ格納部の利用状況の比較結果に基づいて、前記データを出力するか否かを決定するステップと、を実行させる。
本発明のシミュレーションプログラムは、データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1および第2ノードの間で伝送される前記データをバスを介して中継する複数の中継装置とを備えたデータ伝送システムにおいて用いられる中継装置のためのシミュレーションプログラムである。前記シミュレーションプログラムは、コンピュータに対し、入力されたデータを複数のデータ格納部に格納するステップと、前記複数のデータ格納部の少なくとも1つに格納された、伝送経路の少なくとも一部が共通するデータに関する前記データ格納部の利用状況、および前記伝送経路の少なくとも一部が共通するデータに関する隣接中継装置におけるデータ格納部の利用状況の比較結果に基づいて、前記データを出力するか否かを決定するステップと、を実行させる。
本発明によれば、中継装置内の入力バッファ内のデータ格納部のサイズや数を増やすことなく、特定の宛先のトラヒックによる入力バッファ内のデータ格納部の占有を回避できる。その結果、集積回路の実装面積や消費電力を大きく増やすことなく、NoC全体の伝送性能(スループットや遅延時間)を向上させることができる。
本発明の実施形態の説明に先立って、まず本発明による中継装置の動作原理を説明する。
本発明の中継装置は、入力されたデータを格納するための複数のデータ格納部と、これらのデータ格納部に格納されたデータの送信を調停するアービターとを備えている。中継装置に入力されたデータは、複数のデータ格納部のいずれかに一旦格納される。アービターは、これらのデータ格納部の少なくとも1つに格納された、伝送経路の少なくとも一部が共通するデータに関するデータ格納部の利用状況と、当該データに関する隣接中継装置におけるデータ格納部の利用状況とを比較する。そして、比較結果に基づいて、当該データを出力するか否かを決定する。ここで、「伝送経路の少なくとも一部が共通するデータ」とは、伝送経路上の共通する点を通過するデータの集合を意味するものとする。例えば、同一の宛先に到達する一群のデータ、同一の送信元から送信された一群のデータ、同一の他の中継装置を経由する一群のデータ、自中継装置における同一の入力ポートまたは出力ポートを経由して転送される一群のデータ等を指す。
一例として、データに宛先アドレスや送信元アドレス等のアドレス属性が規定されている場合、アービターは、各データ格納部に格納されたデータについて、そのデータと共通のアドレス属性を有するデータがデータ格納部をどの程度利用しているかを表す情報を、隣接する中継装置との間で比較する。そして、その比較結果に基づいて、当該データを出力するか否かを決定する。例えば、アービターは、隣接中継装置から、宛先アドレスごとの複数のデータ格納部の利用状況を示す情報を収集し、その情報に基づいてデータ格納部の割当を隣接中継装置と協調して行う。以下、本発明の中継装置の動作の例を説明する。
図1は、図35と同様の構成を備える伝送システムにおける本発明の中継装置の動作の概要を例示するための図である。図1に示す例では、各中継装置内の個々の仮想チャネルが本発明におけるデータ格納部として機能する。伝送経路上の各中継装置R0、R1、R2、R3は、バスマスタB0からメモリM0へと向かうトラヒックT0の伝送中、トラヒックT0に含まれるパケットが、送信先の隣接中継装置で利用する仮想チャネルの数を示す情報(隣接チャネル利用情報)を取得する。そして、トラヒックT0に関して、自中継装置における仮想チャネルの利用数から送信先の隣接中継装置における仮想チャネルの利用数を引いた差分が予め設定された閾値(例えば0)以上である場合には、各中継装置は、次の中継装置における仮想チャネルを新たに確保し、パケットを次の中継装置へ送信する。一方、上記差分が予め設定された閾値よりも小さい場合には、新たな仮想チャネルを確保しない。このため、仮想チャネルを確保しすぎることを回避できる。なお、差分ではなく、自中継装置における仮想チャネルの利用数と次の隣接中継装置における仮想チャネルの利用数との比率に基づいてパケットを送信するか否かを決定してもよい。
図1(a)に示すように、各中継装置R0、R1、R2、R3において、トラヒックT0が2個の仮想チャネルを利用している状況を想定する。このとき、図1(b)に示すように、バスマスタB1からメモリM1に向かうトラヒックT1の送信要求が発生した場合、伝送経路上の各中継装置に仮想チャネルの空きがあるため、各中継装置は、トラヒックT1のために仮想チャネルを確保することができる。その結果、バスマスタB1は、トラヒックT1をメモリM1まですぐに送信することが可能となる。
このように、本発明によれば、複数の中継装置を介してトラヒックを伝送する際に、個々のトラヒックが利用する仮想チャネルを伝送経路上で均一に近づけ、特定の中継装置における仮想チャネルの不足を回避することができる。これにより、急なトラヒック送信の要求が発生しても、すぐにトラヒックを送信することが可能となり、NoC全体の伝送性能を向上できる。
一般的な並列計算機やATMなどのシステムで利用される中継装置においては、NoCに比べて仮想チャネルの数およびサイズについての制約が少ないため、伝送経路上で仮想チャネルが不足するという問題については考慮されてこなかった。これらのシステムでは、一般に、中継装置自身が格納するパケットを、より多く次の中継装置や受信ノードに届けることに重点が置かれていた。
これに対し、本発明が主に対象とするNoCでは、仮想チャネルの数やサイズを増やすことは困難である。そこで、本発明では、各中継装置において個々のトラヒックが利用する仮想チャネルの数が均一になるように、伝送経路上の隣接する中継装置間で、利用する仮想チャネルの割当を連携して行う。これにより、一部のトラヒックによる仮想チャネルの利用の集中を回避し、仮想チャネルの不足を抑制することができる。
なお、図1では、トラヒックT0とトラヒックT1との区別を分かりやすくするために、中継装置R0、R1、R2、R3において、トラヒックT0については図の上から順に仮想チャネルを割り当て、トラヒックT1については図の下から順に仮想チャネルを割当てている。図1は、仮想チャネルの割当て方の一例であり、パケット毎に区別して仮想チャネルが割り当てられる方式であれば、図1の方式に限定されるものではない。また、図1は、2つのバスマスタから2つのメモリへ4つの中継装置を介してトラヒックを伝送するシステムを示しているが、本発明の利用用途はこのようなシステムに限定されるものではない。
また、バスマスタを送信側のノード、メモリを受信側のノードとして説明したが、本発明はこの組合せに限定されるものではない。例えばメモリからデータを読み出す場合のように、メモリが送信側のノード、バスマスタが受信側のノードであってもよい。また、バスマスタと送受信する相手のノードは、メモリに限定されず、例えば外付けHDDのような外部記憶装置と接続するための入出力ポート(I/O)であってもよい。そのような入出力ポートの例として、USBポートが挙げられる。本発明は、送信ノードから受信ノードへ複数の中継装置を介してデータが伝送されるシステムであればどのようなシステムにも利用され得る。
図1では、各中継装置は、送信先の隣接中継装置から隣接チャネル利用情報を取得するが、送信元の隣接中継装置から当該情報を取得してもよいし、両方の隣接中継装置から当該情報を取得してもよい。また、隣接チャネル利用情報に基づく仮想チャネルの割り当て方は上記の例に限らず、後述するように様々な方法が適用できる。
以下、本発明の実施形態を説明する。以下の説明において、重複する構成要素には同一の参照符号を付している。
(実施形態1)
図2は、本発明の第1の実施形態による中継装置を用いた分散型のデータ伝送システムの構成例を示す図である。図示されるシステムは、送信ノードとして複数のバスマスタ(BM)101を有し、受信ノードとして複数のメモリ105を有している。複数のバスマスタ101および複数のメモリ105は、複数の中継装置800を介してバスで多段に接続されている。このように、図2に示す伝送システムは、多段接続網(Multistage Interconnection Network:MIN)を構成している。本実施形態では、個々のバスマスタ101が本発明における第1ノードとして機能し、個々のメモリ105が本発明における第2ノードとして機能する。
図2は、本発明の第1の実施形態による中継装置を用いた分散型のデータ伝送システムの構成例を示す図である。図示されるシステムは、送信ノードとして複数のバスマスタ(BM)101を有し、受信ノードとして複数のメモリ105を有している。複数のバスマスタ101および複数のメモリ105は、複数の中継装置800を介してバスで多段に接続されている。このように、図2に示す伝送システムは、多段接続網(Multistage Interconnection Network:MIN)を構成している。本実施形態では、個々のバスマスタ101が本発明における第1ノードとして機能し、個々のメモリ105が本発明における第2ノードとして機能する。
本実施形態におけるバスマスタ101は、例えばCPU(Central Processor Unit)やDSP(Digital Signal Processor)などの、バスを用いてデータの転送制御を行うことができるデバイスである。メモリ105は、例えばDRAMやSRAM等の半導体メモリである。中継装置800は、例えば半導体回路で構成され、複数のバスマスタ101および複数のメモリ105の間で伝送されるデータを中継する機能を備えている。
図2に示す構成例では、8個のバスマスタ(BM0~BM7)と、12個の中継装置(R0~R11)と、8個のメモリ(メモリ0~7)とがバスで接続されている。12個の中継装置は、3つのグループに分類される。第1のグループ(第1G)は、8個のバスマスタ101に接続される4個の中継装置(R0、R1、R2、R3)を含んでいる。第2のグループ(第2G)は、第1のグループの後段に接続される4個の中継装置(R4、R5、R6、R7)を含んでいる。第3のグループは、第2のグループの後段に接続され、8個のメモリ105に接続される4個の中継装置(R8、R9、R10、R11)を含んでいる。
図2に示す多段接続網を構成する各中継装置は、2入力2出力のクロスバスイッチを備えている。各中継装置は、図2の吹き出しに示すように、クロスバスイッチを切り替えることによって入力と出力の組合せを変更することができる。このため、トラヒックの流れを2つの伝送経路(伝送経路1、2)の間で切り替えることができる。出力先の伝送経路が異なっていれば、中継装置は2つのトラヒックを各伝送経路に同時に出力することが可能である。このような多段接続網によれば、各中継装置内のクロスバスイッチの切り替えによって、全バスマスタと全メモリ間で、必ず1つ以上の伝送経路を構築することができる。
一般に、クロスバスイッチによってN個のバスマスタとM個のメモリの全てを接続するためには、N×M個のスイッチが必要となる。ここでスイッチとは、ある方向に並行する複数の通信路と他の方向に並行する複数の通信路との交点に設けられ、ON/OFFの切り替えによって通信路を動的に構築できるものをいう。一般に、必要なスイッチの数は、バスマスタやメモリの数が増えるにつれて急激に増加する。これに対し、多段接続網では、入出力数の少ないクロスバスイッチを階層的に接続することにより、少ないスイッチでバスマスタとメモリとの間の接続を切り替えることができる。
バスマスタ101からメモリ105へのデータ伝送は、パケット交換方式により行われる。各バスマスタ101は、送信すべきパケットをフリットと呼ばれる最小単位に分割してから隣接の中継装置に送信する。1つのパケットを分割した複数のフリットのうち、最初に送信されるフリットは、ヘッダフリットと呼ばれる。ヘッダフリットには、パケットの先頭であることを示すフラグ情報や、パケットの送信先のアドレス情報などが記述されている。本実施形態におけるパケットおよびフリットのデータ構造については後述する。
図2に示す構成において、例えば、BM2からメモリ5へとデータが伝送される場合、BM2は、メモリ5のアドレス(101)が送信先アドレスとして記述されたパケットを複数のフリットに分割し、中継装置R1に送信する。分割された複数のフリットは、中継装置R1、R7、R10を経由してメモリ5へと伝送される。メモリ5は、中継装置R10から複数のフリットを受け取り、これらのフリットからパケットを再構築する。以上の処理により、BM2からメモリ5へとデータが伝送される。パケットおよびフリットのデータ構造については後述する。
なお、本実施形態における中継装置は、図2に示すような多段接続網を構成する集積回路に限らず、他のトポロジーを有する集積回路であっても同様に適用することが可能である。また、本実施形態では、バスマスタからメモリへのデータ伝送は、パケット交換方式により複数の中継装置を介して行われるものとして説明するが、データ伝送方式は他の方式であってもよい。本実施形態の中継装置は、バスマスタからメモリへのデータ伝送に限らず、複数のノード間でデータを伝送するシステムであれば、同様に適用することができる。
図2に示す構成では、第1および第3グループの各中継装置(R0~R3、R8~R11)は、第2グループの各中継装置(R4~R7)と同様、1つの機能ブロックとして描かれている。しかし、実際には、第1グループの各中継装置とバスマスタとの間、および第3グループの各中継装置とメモリとの間には、NIC(Network Interface Controller)等の他の機能部が接続され得る。
図3は、本実施形態におけるデータ伝送システムの一部を示すブロック図である。図3では、簡単のため、1本の伝送経路上に接続された1組のバスマスタ101、第1グループの中継装置800a、第2グループの中継装置800b、第3グループの中継装置800c、およびメモリ105のみを示している。
図3(a)に示すように、バスマスタ101と第1グループの中継装置800aとの間には、NIC820aが接続される。NIC820aは、バスプロトコルの変換処理や、バスマスタ101が要求するメモリサイズを確保できるメモリ105を複数のメモリの中から選択し、選択したメモリ105をバスマスタ101に通知する機能を備えている。
一方、第3グループの中継装置800cとメモリ105との間には、NIC820cおよびメモリコントローラ830が接続される。NIC820cは、バスプロトコル変換処理や、データ伝送における往路と復路との対応関係付けを行い、往路に対する復路の応答をNIC820aへ返信する。ここで、往路とはバスマスタ101からメモリ105への方向の伝送経路を意味し、復路とはメモリ105からバスマスタ101への方向の伝送経路を意味する。メモリコントローラ830は、NIC820cに接続され、メモリ105へのアクセス順序の制御などを行う。
本明細書では、表記を簡略化するために、図3(b)に示すように、NIC820a、820c、およびメモリコントローラ830の表記を省略する。すなわち、以下の説明においては、バスマスタ101などの送信ノードに直接接続された中継装置は、NICを含んでいるものとする。同様に、メモリ105などの受信ノードに直接接続された中継装置は、NICおよびメモリコントローラを含んでいるものとする。
次に、本実施形態におけるパケットおよびフリットの構造を説明する。
図4は、パケット700の伝送フォーマットの一例と、パケット700を複数のフリットに分割した例とを示している。パケット700は、ヘッダフィールド701、データフィールド702、および制御コードフィールド703を有している。
ヘッダフィールド701には、例えば、パケットの先頭であることを示すフラグ情報、送信先のアドレス、送信元のアドレスが記述される。ヘッダフィールド701には、上記以外の情報が記述されていてもよい。ヘッダフィールド701のデータのうち、送信先のアドレスおよび送信元のアドレスに基づいて、パケット700の中継処理と、受信側での受信処理とが行われる。
データフィールド702には、例えば、映像データや音声データなどが記述される。制御コードフィールド703には、予め定められた終了コードが記述される。終了コードによってパケット700が終了することが判別できる。制御コードフィールド703には、終了コード以外の情報が格納されていてもよい。
バスマスタ101は、前述のように、パケット700を、フリットと呼ばれる小さなパケット単位に分解して伝送する。1フリットのサイズは、バスを使って1サイクルで伝送可能なサイズであり、バス幅に応じて決定される。パケット700は、ヘッダフリット704、複数のデータフリット705、およびテイルフリット705に分割される。ヘッダフリット704には、上記のヘッダフィールド701に格納されたフラグ情報や送信先アドレス情報などが含まれる。
ヘッダフリット704に続く各フリット(データフリット705、テイルフリット706)には、送信先を特定するアドレス情報は格納されていない。その理由は、ヘッダフリット704に続く各フリットは、ヘッダフリット704と同じ宛先に送られるためである。ヘッダフリット704によって宛先が決まり、そのトラヒックのフリットを出力する出力バッファが決まると、後に続くフリットは、ヘッダフリット704と同じ出力バッファを利用してヘッダフリット704が示す宛先に伝送される。
テイルフリット706には、そのフリットがパケットを構成する最後のフリットであることを示すフラグ情報(制御コードフィールド703に格納されている終了コード)が付与されている。また、ヘッダフリット704とテイルフリット706以外の複数のデータフリット705は、主にデータを伝送するフリットであり、パケット700のデータフィールド702に対応する。
受信側のメモリ105は、テイルフリット706に記述されたフラグ情報(終了コード)を検出すると、その終了コードに基づき、伝送された複数のフリットをパケットへ再構築する。
1パケットのサイズは、例えば128バイトであり、1フリットのサイズは、例えば32ビットまたは64ビットに設定される。ただし、1パケットのサイズおよび1フリットのサイズはアプリケーションによって異なり得るため、上記のサイズは一例に過ぎない。1フリットの長さは、送信先のアドレスや送信元のアドレスなどの制御データを記述できる長さを基準としてもよい。
各中継装置は、送られてきたフリットを蓄えるための入力バッファを備えている。フリットは、一旦入力バッファに蓄えられた後、クロスバスイッチの切り替えによって宛先のメモリへと続く中継装置または宛先のメモリへ送信される。なお、図2の構成例では、バスマスタ101からメモリ105にフリットが送信されることを想定しているが、これは一例である。図2とは異なる構成を採用した場合、フリットの宛先はメモリに限られず、たとえば他のバスマスタや、周辺機器と接続するための入出力インターフェイス等であり得る。
次に、本実施形態による中継装置の構成を説明する。
図5は、本実施形態における中継装置の構成を示すブロック図である。以下では、第2グループの中継装置800bの構成を例に説明するが、第1および第3グループの中継装置についても送信先および受信元が異なるだけで基本的な構成は同様である。以下、第1グループの中継装置800aを前段の中継装置と呼び、第3グループの中継装置800cを後段の中継装置と呼ぶことがある。また、第1および第3グループの中継装置を、隣接中継装置と呼ぶことがある。中継装置800bは、前段の中継装置800aから後段の中継装置800cへの経路を決定し、トラヒックを中継する。
中継装置800bは、入力ポート801と、入力バッファ802と、クロスバスイッチ803と、出力バッファ804と、出力ポート805と、アービター850とを備えている。アービター850は、仮想チャネル情報管理部806、出力ポート選択部807、チャネル利用数測定部808、チャネル利用情報通信部809、隣接チャネル利用情報管理部810、仮想チャネル利用数比較部811、出力チャネル選択部812、仮想チャネル選択部813、スイッチ切替部814を有している。アービター850は、後述する動作を実行可能に構成された論理回路によって構成され得る。入力バッファ802および出力バッファ804は、例えばSRAMまたはレジスタなどの一時記憶領域である。クロスバスイッチ803は、公知のスイッチ回路である。
以下、各構成要素の機能を説明する。
入力ポート801は、バスを介してパケットを前段の隣接中継装置800aから受信するインターフェイスである。図5の構成例では2つの入力ポート0、1が設けられているが、入力ポートの数は2つに限られない。本実施形態では、入力ポート0、1には、互いに異なる隣接中継装置800aが接続される。
出力ポート805は、バスを介してパケットを後段の隣接中継装置800cに送信するインターフェイスである。図5の構成例では、2つの出力ポート0、1が設けられているが、出力ポートの数は2つに限られない。本実施形態では、出力ポート0、1には、互いに異なる隣接中継装置800cが接続される。
入力バッファ802は、隣接中継装置800a(またはバスマスタ101)から送られてきたフリットを蓄える。入力バッファ802を構成する一時バッファは、中継装置800bの入力ポートごとに1つ設けられていてもよいし、異なる宛先のパケット毎に個別のチャネルを利用して送信スケジュール制御ができるように、入力ポートごとに複数の仮想チャネル817が設けられていてもよい。本実施形態では、図5に示すように、入力バッファ802ごとに仮想チャネル817が4個ずつ用意されている。
クロスバスイッチ803は、中継装置800bの入力ポート801と出力ポート805との間の接続を切り替えるスイッチである。図示される構成の場合、各入力ポートが受信したフリットは、クロスバスイッチ803によって出力ポート0、1のいずれかから出力される。
出力バッファ804は、出力ポート805を介して隣接する中継装置800cへフリットを送信する際に利用されるバッファである。出力バッファ804には、複数の出力チャネル818が設けられている。出力チャネル818は、隣接中継装置800cの入力バッファ内の仮想チャネルと同じ数だけ設けられており、それらの仮想チャネルと1対1の対応が決められている。
中継装置800bから送信されたフリットは、送信に利用した出力チャネル818に対応する隣接中継装置800c内の仮想チャネルに格納される。すなわち、中継装置800bは、出力チャネル818を選択することにより、送信するフリットが次に格納される隣接中継装置800c内の仮想チャネルを指定できる。
なお、本実施形態では、入力バッファ802および出力バッファ804は、複数の仮想回線からなるチャネルで構成されているが、各バッファは、複数の物理チャネルで構成されていてもよい。
仮想チャネル情報管理部806は、各仮想チャネル817に格納されるフリットの情報を管理する。仮想チャネル情報管理部806が管理する情報の詳細については、図6を用いて後述する。
出力ポート選択部807は、仮想チャネル817に新しくヘッダフリットが格納されると、ヘッダフリットに記述された宛先情報(送信先アドレス)に基づいて、次にフリットを受け渡す中継装置800cを選択する。中継装置800cの選択は、出力ポート0、1のいずれかを選択することによって行われる。
チャネル利用数測定部808は、各入力バッファ802において、トラヒック毎の仮想チャネルの利用数を測定する。ここで「トラヒック」とは、宛先のアドレスが共通するフリットの集合を意味するものとする。チャネル利用数測定部808は、仮想チャネル情報管理部806が管理する情報に基づいて、宛先のアドレスが共通するフリットが格納されている仮想チャネル817の数を測定する。
チャネル利用情報通信部809は、隣接する中継装置800a、800cとの間で、各トラヒックが利用する仮想チャネルの数を示す情報(チャネル利用情報)の通信を行う。具体的には、チャネル利用情報通信部809は、チャネル利用数測定部808によって測定されたチャネル利用情報を隣接中継装置800a、800cに送信するとともに、後段の隣接中継装置800a、800cから各装置のチャネル利用情報を受信する。これにより、各中継装置は、隣接する中継装置における仮想チャネルの利用状況を把握することができる。
隣接チャネル利用情報管理部810は、チャネル利用情報通信部809を介して、隣接する中継装置800a、800cから取得した仮想チャネル情報を記録する。なお、チャネル利用情報管理部810で管理される情報の詳細については、図6を用いて後述する。
仮想チャネル利用数比較部811は、自中継装置800bで各トラヒックが利用している仮想チャネルの数と、隣接中継装置800a、800cで各トラヒックが利用している仮想チャネルの数とを比較する。これにより、伝送経路上の各中継装置におけるトラヒックごとの仮想チャネルの利用数の偏りの大きさを定量的に把握することが可能となる。
出力チャネル選択部812は、仮想チャネル利用数比較部811で行われた定量的な比較の結果に基づき、仮想チャネル817に対する出力チャネル818の割り当てを決定する。出力チャネル選択部812による処理の詳細は、図15から図17を用いて後述する。
仮想チャネル選択部813は、入力バッファ802ごとに複数の仮想チャネル817の中から、フリットを送信する仮想チャネル817の候補を1つ選択する。候補の選択の仕方については後述する。
スイッチ切替部814は、仮想チャネル選択部813によって入力バッファ802ごとに1つずつ選択された仮想チャネル817の候補と、出力ポート805との排他的な組合せを決定し、その結果に基づきクロスバスイッチ803を切り替える。
次に、本実施形態における仮想チャネル情報の内容を説明する。
図6は、仮想チャネル情報管理部806に記録される仮想チャネル情報901の内容の例を示している。仮想チャネル情報901は、各仮想チャネル817を区別するために、入力ポート801を識別するための入力ポート番号と、仮想チャネル817を識別するための仮想チャネル番号とを含んでいる。いずれかの仮想チャネル817にフリットが格納されると、そのフリットの宛先を特定するための宛先アドレス情報、フリットを宛先まで送信するために利用される出力ポート805の番号、および利用される出力チャネル818の番号が記録される。
例えば、中継装置800bが図5に示す構成を備えている場合、中継装置800bは、入力ポートを2つ、仮想チャネルを入力ポートごとに4個有しているため、図6に示すように8個の仮想チャネルの情報が管理される。図6に示す仮想チャネル情報は、入力ポート0の仮想チャネル1、2、および入力ポート1の仮想チャネル0~2にフリットが格納されている状況を示している。この例では、入力ポート0の仮想チャネル1および出力ポート1の仮想チャネル1については出力チャネルが未設定の状態である。仮想チャネルが利用されていない状態(図6では入力ポート0の仮想チャネル0、3、および入力ポート1の仮想チャネル3)では、宛先アドレスは未使用の状態、出力ポート番号と出力チャネル番号は未設定の状態となる。
仮想チャネル情報901における宛先アドレスは、仮想チャネル817にヘッダフリット704が届いた際に、ヘッダフリットに記述された送信先のアドレス情報が反映される。また、終了コードを含むテイルフリット703が仮想チャネル817から送信されると、当該仮想チャネルにおける宛先アドレス、出力ポート番号、出力チャネル番号の情報は初期化される。
次に、隣接チャネル利用情報の内容を説明する。
次に、隣接チャネル利用情報の内容を説明する。
図7は、隣接チャネル利用情報管理部810に記録される隣接チャネル利用情報1001の内容を示している。隣接チャネル利用情報1001として、自中継装置と隣接中継装置とを接続している入力ポートまたは出力ポートの識別番号(接続ポート番号)と、接続ポート番号によって特定される隣接中継装置で利用されている仮想チャネルに格納されたフリットの宛先アドレスと、宛先アドレスごとの仮想チャネルの利用数とが記録される。なお、接続ポート番号の代わりに、隣接する中継装置を区別するための識別番号が記録されていてもよい。図5に示す中継装置800bは、2つの入力ポート0、1と、2つの出力ポート0、1とを介して4台の中継装置と隣接するため、図7に示すように、4つの隣接チャネル利用情報が管理される。
次に、図8から図14を参照しながら、中継装置800bの動作の概要を説明する。
図8は、中継装置800bの処理の流れを示すフローチャートである。まず、ステップS1101において、チャネル利用情報通信部809は、隣接する中継装置より、各々の仮想チャネルの利用状況に関する情報が届いたか否かを判断する。隣接チャネル利用情報が届いた場合には、ステップS1102に進み、隣接チャネル利用情報管理部810は、取得した情報を用いて隣接チャネル利用情報を更新する。隣接チャネル利用情報が届かなかった場合には、ステップS1102をスキップし、ステップS1103に進む。
中継装置800bは、入力ポート801を介して隣接する中継装置800aまたは送信ノード(バスマスタ101)から送信されるフリットの受信待ち状態となる。
このときの仮想チャネル817の状態を図9に示す。図9(a)は、中継装置800bが未だフリットを受信していない状態における入力ポート0に関する仮想チャネル情報901を示している。図9(b)は、このときの各バッファの様子を示している。以下、簡単のため、入力ポート0に関する仮想チャネル情報901のみを例示する。中継装置800bが起動した直後は、未だフリットが届いていないため、全ての仮想チャネルが未使用状態となる。
次に、図8に示すステップS1103において、入力ポート801は、フリットを受信したかどうかを判断する。フリットを受信した場合には処理はステップS1104に進み、フリットを受信していない場合には処理はステップS1105に進む。
ステップS1104において、入力ポート801は、仮想チャネル817に受信したフリットを格納する。なお、格納先の仮想チャネル817は、事前に前段の隣接中継装置で決定されている。
続いて、ステップS1105において、仮想チャネル情報管理部806は、中継装置800の入力バッファ802にフリットが格納されているか否かを判定する。入力バッファ802にフリットが格納されている場合には処理はステップS1106に進み、そうでない場合にはステップS1101へ戻る。
ステップS1106において、仮想チャネル情報管理部806は、各仮想チャネル817の先頭に格納されているフリットがヘッダフリットであるかどうかを判定する。先頭のフリットがヘッダフリットであった場合には処理はステップS1107に進み、ヘッダフリットではない場合にはステップS1112へ進む。
ステップS1107において、仮想チャネル情報管理部806は、仮想チャネル817の先頭に格納されたヘッダフリットに記録されている宛先のアドレスを仮想チャネル情報901に記録する。
このときの仮想チャネル817の状態を図10に示す。図10(a)は、中継装置800にヘッダフリット704が届き、仮想チャネル817に格納された直後の仮想チャネル情報901を示している。図10(b)は、入力ポート0で受信されたヘッダフリット704が、ステップS1104において、仮想チャネル0に格納されたときの各バッファの様子を示している。
ヘッダフリット704が仮想チャネルに届くと、ヘッダフリット704に記載されている宛先のアドレス(図10の例ではメモリ0のアドレス「000」)が仮想チャネル情報901に記録される。
続いて、図8に示すステップS1108において、チャネル利用数測定部808は、仮想チャネル情報管理部806を参照し、利用されている仮想チャネル817の数を宛先アドレスごとに測定する。そして、チャネル利用情報通信部809は、隣接する中継装置800a、800cに対し、チャネル利用数測定部808によって測定されたパケットの宛先ごとの仮想チャネル817の利用数を示す情報を通知する。例えば、図10に示す状態においては、宛先アドレス000へ向かうパケットによって仮想チャネル817が1つだけ利用されているため、その情報が隣接する中継装置800a、800cへ通知される。
続くステップS1109において、出力ポート選択部807は、仮想チャネル情報901を参照し、出力ポート805の番号が未設定の仮想チャネルに対し利用する出力ポート805を決定する。本実施形態では、出力ポート805は、各パケットの送信先アドレスに基づいて決定される。例えば、図2に示す多段接続網の構成においては、3桁の2進数で表されるアドレスが各メモリに割り当てられており、各パケットのヘッダフリットには、宛先のメモリに割り当てられたアドレスが付与されている。各中継装置の出力ポート選択部807は、ヘッダフリットに付与された3桁のアドレスのうち、右から中継装置の段数と同じ桁の数字を読み取る。そしてその値が0ならば出力ポート0側の中継装置へフリットを送り、値が1ならば出力ポート1側の中継装置へフリットを送るように経路を決定する。
例えば、図2に示す例では、バスマスタBM2から、メモリ5(アドレス:101)へデータを送る場合には、アドレスに記載された3桁の数字に基づいて、まず宛先のメモリから見て3段目(第1G)の中継装置R1ではメモリ5へのアドレス101の右から3桁目の値を参照し、その値が1であるため、出力ポート1側の中継装置R7へフリットを送信する。次に、中継装置R7では、メモリ5へのアドレス101の右から2桁目を参照し、その値が0であるため、出力ポート0側の中継装置R10へフリットを送信する。最後に、中継装置R10は、メモリ5へのアドレスの右から1桁目の値を参照し、その値が1であるため、出力ポート1側のメモリ5へフリットが送信する。これにより、バスマスタBM5からメモリ2への伝送経路が選択され、フリットが目的の宛先へと伝送される。
なお、出力ポート選択部807による出力ポートの選択方法は、分散バスのトポロジーに応じて、目的地までパケットが送られる経路を選択できれば、上記以外の方法であってもよい。
図11(a)は、中継装置800bにおいて仮想チャネル817の出力ポート805が設定された後の仮想チャネル情報901の内容を示している。図11(b)は中継装置800bの各仮想チャネル817の様子を示している。図11(a)では、入力ポート0の仮想チャネル0には、宛先のアドレスが000のメモリ0へ送信されるフリットが格納されているため、出力ポート選択部807は、フリットをメモリ0へと向う出力ポート0から送信するために、出力ポート番号の値を0に設定する。
次に、図8に示すステップS1110において、仮想チャネル利用数比較部811は、隣接チャネル利用情報管理部810で管理されている隣接チャネル利用情報1001と、チャネル利用数測定部808で測定された自中継装置の仮想チャネル利用数を示す情報とを参照する。そして、自身の仮想チャネルの利用数と、隣接中継装置800a、800cの仮想チャネルの利用数とを、パケットの宛先毎に区別して比較し、それらの差分を求める。
続いて、ステップS1111において、出力チャネル選択部812は、仮想チャネル利用数比較部811による比較結果に基づいて、出力チャネル818が未設定の仮想チャネル817に対して、仮想チャネルの割当を決定する。
図12(a)は、中継装置800bにおいて、出力チャネル818が決定された後の仮想チャネル情報901を示している。図12(b)は、そのときの各バッファの様子を示している。図12(b)に示すように、出力ポート0に対応する出力チャネル818はいずれも未使用である。本実施形態では、入力ポート0の仮想チャネル0に格納されたフリットに出力チャネル0を利用させるために、図12(a)に示すように、出力チャネル番号に0が設定される。なお、出力チャネル818の割り当ての詳細については、図15、図16を用いて後述する。
次に、図8に示すステップS1112において、仮想チャネル選択部813は、仮想チャネル情報901を参照し、入力ポート801ごとに出力チャネル818が設定済みの仮想チャネル817を1つ選択する。また、スイッチ切替部814は、仮想チャネル情報901を参照し、仮想チャネル選択部813によって入力ポート801ごとに選択された仮想チャネルの中に、同一の出力ポート805を利用するものがないかを判定する。同一の出力ポート805を利用するものがある場合(競合が発生した場合)、競合している複数の仮想チャネル817の中から、いずれか1つを選択する。このようにして、各入力ポートの1つの仮想チャネル817と出力ポート805との間で排他的な接続が決定される。その結果に基づき、スイッチ切替部814は、クロスバスイッチ803の接続を切り替える。
クロスバスイッチ803の切替が完了すると、ステップS1113において、仮想チャネル選択部813により選択された仮想チャネル817は、仮想チャネル情報901に記録された出力ポート805の出力チャネル818を利用してフリットを送信する。
図13(a)は、中継装置800bがフリットを送信している状態における仮想チャネル情報901を示している。また、図13(b)は、そのときの各バッファの様子を示している。図13に示す例では、中継装置800b内でパケットが1種類しかないため、入力ポート0に対応する仮想チャネル0内のフリットが順番に、仮想チャネル情報901に記録されている出力ポート0に対応する出力チャネル0を通してメモリ0を宛先として送信される。なお、図13(b)では自中継装置とメモリとの間に存在する隣接中継装置の記載は省略している。
続いて、図8のステップS1114において、仮想チャネル817は、フリットを送信する際に、送信したフリットがパケットを構成する最後のフリット(テイルフリット)であるか否かを判定する。送信したフリットがテイルフリットであった場合には、処理はステップS1115に進み、そうでない場合にはステップS1101に戻る。ステップS1115において、仮想チャネル情報管理部806は、別のパケットがその仮想チャネルを利用できるように、当該仮想チャネルの情報を初期化し、当該仮想チャネルを解放する。
図14(a)は、テイルフリット706が送信された後の仮想チャネル情報901を示している。また、図14(b)は、そのときの各チャネルの様子を示している。図14では、テイルフリット706が送信されたことにより、入力ポート0に対応する仮想チャネル0内のフリットが全て送信され、未使用状態となる。よって、仮想チャネル情報管理部806は、仮想チャネル情報901における仮想チャネル0に関する情報を初期化する。
続いて、図8に示すステップS1116において、チャネル利用数測定部808は、仮想チャネル情報管理部806における仮想チャネル情報901を参照し、利用されている仮想チャネル817の数を宛先アドレスごとに測定する。そして、チャネル利用情報通信部809は、隣接する中継装置800a、800bに対し、チャネル利用数測定部808によって測定されたパケットの宛先ごとの仮想チャネル817の利用数を示す情報を通知する。これにより、仮想チャネルの初期化を隣接中継装置800a、800cに通知することができる。
以上のステップS1101からステップS1116の処理を繰り返すことにより、各中継装置800は、送られてきたパケットを宛先の受信ノードに向けて送信することができる。
以下、図15、図16を参照しながら、ステップS1111における処理、すなわちヘッダフリット704が仮想チャネル817に格納された場合に仮想チャネル817に出力チャネル818を割り当てる動作を説明する。
図15は、出力チャネル選択部812により、仮想チャネル817に出力チャネル818を割り当てる処理の流れを示すフローチャートである。また、図16は、本実施形態における各中継装置の、ある瞬間における仮想チャネルの利用状況の例を示す図である。図16(a)は、2個のバスマスタBM0、BM1が、3台の中継装置R0、R4、R8を介して、2個のメモリM0、M1へとトラヒックを送信している時の、ある時刻における仮想チャネルの利用の様子を示している。なお、図16(a)では、送受信に関与しない他のバスマスタ、中継装置、メモリの表示は省略している。図16(b)は、このときの中継装置R0の仮想チャネル情報を示している。
図16(a)に示す中継装置R0、R4、R8は、いずれも4つの仮想チャネルを持つ。なお、説明を簡略化するために、ここでは仮想チャネルを入力ポート毎に区別せずに説明する。図16(a)では、図1、33と同様、バスマスタBM0からメモリM0へと送信されるトラヒックをT0と表し、バスマスタBM1からメモリM1へと送信されるトラヒックをT1と表している。トラヒックT0とトラヒックT1との区別を分かりやすくするために、各中継装置R0、R4、R8において、トラヒックT0については図の上から順に仮想チャネルを割り当て、トラヒックT1については図の下から順に仮想チャネルを割当てるものとする。なお、仮想チャネルの割り当て方は、パケット毎に区別して仮想チャネルが割り当てられる方法であればどのような方法でもよく、図16(a)に示す割り当て方に限定されるものではない。
図15に示すステップS1801において、出力チャネル選択部812は、仮想チャネル情報管理部806における仮想チャネル情報901を参照し、出力ポート805が設定済みで、出力チャネルが未設定の仮想チャネルが存在するか否かを判定する。出力ポート805が設定済みで、出力チャネル818が未設定の仮想チャネル817が存在する場合、処理はステップ1802へ進み、そうでなければステップ1801を繰り返す。
例えば、図16に示す中継装置R0は、仮想チャネルの0番と3番において出力ポート805が設定済みであるが、出力チャネル818が未設定であるため、処理はステップS1802へ進む。
ステップS1802において、出力チャネル選択部812は、仮想チャネル情報管理部806における仮想チャネル情報901と出力バッファ804とを参照し、いずれの仮想チャネル817にも利用されていない空き状態の出力チャネル818が存在するか否かを判定する。出力チャネル818に空きがあれば処理はステップS1803に進み、空きがなければステップS1802を繰り返す。
図16に示す例では、中継装置R4の仮想チャネルの0番、1番、3番がすでに利用されており、2番の仮想チャネルが利用されていない。本実施形態においては、中継装置R0の出力チャネル818の識別番号と中継装置R4の仮想チャネルの識別番号とが1対1に対応するため、中継装置R0の出力チャネル2もまた空き状態であることがわかる。このため、中継装置R0について、処理はステップS1803に進む。
ステップS1803において、出力チャネル選択部812は、仮想チャネル利用数比較部811によって求められた、自中継装置におけるトラヒックの宛先ごとの仮想チャネルの利用数と隣接中継装置におけるトラヒックの宛先ごとの仮想チャネルの利用数との差分の情報を参照する。そして、当該差分情報に基づき、出力ポート805が設定済みで、かつ出力チャネル818が未設定の仮想チャネル817に格納されたトラヒックの宛先ごとに、差分値の比較を行う。
図17は、図16(a)の中継装置R0、R4、R8ごとの、メモリM0宛のトラヒックおよびメモリM1宛のトラヒックが利用する仮想チャネル数、および送信先の中継装置との間の仮想チャネル利用数の差分を示す図である。図16(a)に示す状況では、中継装置R0において、メモリM0宛のトラヒックは仮想チャネルを1つ利用し、メモリM1宛のトラヒックは仮想チャネルを1つ利用している。中継装置R4では、メモリM0宛のトラヒックは仮想チャネルを2つ利用し、メモリM1宛のトラヒックは仮想チャネルを1つ利用している。中継装置R8では、メモリM0宛のトラヒックは仮想チャネルを1つ利用し、メモリM1宛のトラヒックは仮想チャネルを1つ利用している。このため、中継装置R0における仮想チャネルの利用数と送信先の中継装置R4における仮想チャネルの利用数との差分は、メモリM0宛のトラヒックについては「-1」、メモリM1宛のトラヒックについては「0」となる。また、中継装置R4における仮想チャネルの利用数と送信先の中継装置R8における仮想チャネルの利用数との差分は、メモリM0宛のトラヒックについては「1」、メモリM1宛のトラヒックについては「0」となる。
続いて、図15に示すステップS1804において、出力チャネル選択部812は、仮想チャネルの利用数の差分が0以上となるトラヒックが存在するか否かを判定する。すなわち、自中継装置における仮想チャネルの利用数の方が後段の隣接中継装置における仮想チャネルの利用数よりも多いか、または同数であるトラヒックが存在するか否かを判定する。そのようなトラヒックが存在する場合、処理はステップS1805に進む。そのようなトラヒックが存在しない場合、ステップS1804を繰り返す。
図16、17に示す例では、中継装置R0については、メモリM1宛てのトラヒックT0がΔR0≧0を満たしているため、ステップS1805に進む。また、中継装置R4については、メモリM0宛ておよびメモリM1宛のいずれのトラヒックもΔR4≧0を満たしているため、ステップS1805に進む。
続くステップS1805では、仮想チャネル選択部813は、仮想チャネルの利用数の差分値が0以上かつ最大となる宛先に向かうトラヒックのパケットを格納している仮想チャネルの中から、出力チャネルが未設定の仮想チャネルを1つ選択する。
図16、17に示す例では、中継装置R0においては、メモリM0に向かうトラヒックT0についての差分値はΔR0=-1であるため、トラヒックT0が利用している仮想チャネル0は選択されない。一方、メモリM1に向かうトラヒックT1についての差分値はΔR0=0であるため、トラヒックT1を格納する仮想チャネル3が選択される。
中継装置R4においては、トラヒックT0についての差分値はΔR4=1であり、トラヒックT1についての差分値はΔR4=0である。両者とも差分値が0以上であるため、両者のうち、差分値が相対的に大きいトラヒックT0が利用する仮想チャネル0、1のうち、出力チャネルが未設定のものが1つ選択される。
なお、本実施形態では、上記差分が0以上であるか否かによって判定が行われるが、判定の基準に用いる値は0である必要はなく、所定の閾値以上であるか否かによって判定を行うことができる。また、差分ではなく、自中継装置におけるチャネル利用数と次の中継装置におけるチャネル利用数との比率に基づいて同様の判定を行ってもよい。
例えば、次の中継装置における仮想チャネルの利用数を、自中継装置での仮想チャネルの利用数で割った値が1以上の場合に、出力チャネルの割当を行うようにしてもよい。
また、例えば中継装置内の回路の占有面積を削減するために、各中継装置内の仮想チャネルの数を2個に抑えた場合、次の中継装置の仮想チャネルが全て利用されることを回避するために、次の中継装置における仮想チャネルの利用数ではなく、仮想チャネルが利用されているか否か(すなわちチャネルが1個利用されているか否か)に基づいて判定を行なってもよい。この場合も、自中継装置において仮想チャネルを利用していることが前提であるため、自中継装置における仮想チャネルの利用状況と隣接中継装置における仮想チャネルの利用状況とを比較した結果に基づいてデータを出力するか否かが決定される。
続いて、図15に示すステップS1806において、出力チャネル選択部812は、選択された仮想チャネル817に対して、利用されていない出力チャネル818を割り当て、仮想チャネル情報901の内容を更新する。
以上のステップS1801~S1806の処理により、仮想チャネルに対する出力チャネルの割り当てが完了する。その後、処理は、図8に示すステップS1112に進む。
以下、ステップS1112における入出力ポート間の排他接続の決定方法を説明する。
図18は、仮想チャネル817と各出力ポート805とを排他的に接続するクロスバスイッチ803の切り替え方法の手順を示している。
まず、ステップS2101において、仮想チャネル選択部813は、入力ポート801毎にフリットを送信する候補として、出力ポート805および出力チャネル818の両方が設定済みの仮想チャネル817を1つ選択する。なお、出力ポート805および出力チャネル818の両方が設定済みの仮想チャネル817が複数存在する場合に1つの仮想チャネル817を選択する方法は任意である。
続くステップS2102において、スイッチ切替部814は、仮想チャネル選択部813によって選択された仮想チャネル817間で、設定されている出力ポート805に競合が有るかどうかを判断する。例えば、入力ポート0に関連付けられた仮想チャネルと入力ポート1に関連付けられた仮想チャネルとが、ともに同じ出力ポートを使用する場合、競合が発生する。競合が発生している場合には処理はステップS2103に進み、競合がない場合にはステップS2104に進む。
競合が発生している場合、ステップS2103において、スイッチ切替部814は、仮想チャネル選択部813によって選択された、出力ポート818が競合している複数の仮想チャネル817の中から1つの仮想チャネルを選択する。なお、選択の方法はどのような方法であってもよい。例えば、ラウンドロビン方式に従って選択してもよいし、パケットに優先度情報や時間情報(パケットの締切時刻など)が記述されている場合は、その情報に基づいて選択してもよい。
次に、ステップS2104において、スイッチ切替部814は、ステップS2101~S2103で選択された仮想チャネル817と設定された出力ポート805とを接続するようにクロスバスイッチ803を切り替え、仮想チャネル817内のフリットを送信する。
以上のように、本実施形態の中継装置によれば、パケットの宛先毎に区別して、伝送経路上の各中継装置における仮想チャネルの利用数を均一化するように、仮想チャネルの割当を行うことができる。これにより、特定の宛先のパケットによって経路上の中継装置の仮想チャネルが占有されることを抑制することが可能となる。その結果、他の宛先へと送信されるパケットが送信できなくなる状況を回避し、遅延時間の減少および伝送性能(スループット)の向上を実現することができる。
なお、本実施形態における中継装置800bは、後段の隣接中継装置800cとのみ仮想チャネル利用数の比較を行うが、本発明はこのような形態に限られない。例えば、前段の隣接中継装置800aとのみ比較を行ってもよいし、隣接中継装置800a、800cの両方と比較した結果を利用してもよい。
例えば、前段の隣接中継装置800aと仮想チャネルの利用数を比較する場合、トラヒックの宛先ごとに、隣接中継装置800aにおける仮想チャネルの利用数から自中継装置800bにおける仮想チャネルの利用数を引いた差分値に基づいて同様の処理を行うことができる。この場合、当該差分値が所定の閾値以上であり、かつ、最大の値となるトラヒックに対して優先的に出力チャネル818の割り当てを行えばよい。
また、前段の中継装置800aにおける仮想チャネル利用数から自中継装置800bにおける仮想チャネル利用数を引いた差分と、自中継装置800bにおける仮想チャネル利用数から後段の中継装置800cにおける仮想チャネル利用数を引いた差分との和に基づいて同様の処理を行ってもよい。この場合、当該和の値が所定の閾値以上であり、かつ、最大の値となるトラヒックに対して優先的に出力チャネル818の割当を行えばよい。
以上の説明では、各中継装置800は、出力バッファ804を備えているが、メモリ量を抑えるために、出力バッファ804を設けない構成であってもよい。出力バッファ804を設けない場合、アービター850は、自中継装置の入力バッファにおける仮想チャネルと後段の中継装置の入力バッファにおける仮想チャネルとの対応付けを決定するように構成されていればよい。
(実施形態2)
次に、本発明の第2の実施形態を説明する。
次に、本発明の第2の実施形態を説明する。
本実施形態の中継装置は、実施形態1の中継装置と比べ、仮想チャネル利用数比較部811における処理のみが異なり、その他の構成要素は同一である。以下、実施形態1と異なる点を説明し、重複する事項についての説明は省略する。
実施形態1では、トラヒックを宛先の違いによって区別し、トラヒックごとに、伝送経路上の各中継装置で利用する仮想チャネルの利用数を均一にすることが可能となる。これにより、伝送経路上の特定の中継装置における仮想チャネルが特定のトラヒックによって占有され、他の宛先のトラヒックの伝送が妨げられる状態を回避できる。
これに対し、本実施形態の中継装置によれば、宛先が異なるトラヒックを中継する中継装置において、送信レートの違いやパケットの到着時間の違いによって発生し得る中継装置内でのトラヒック間の仮想チャネル利用数の偏りの均一化が可能となる。
まず、本実施形態で扱う課題を、図19、図20を用いて説明する。
図19は、図16と同様の構成において発生する課題を説明するための図である。図19(a)は、2個のバスマスタBM0、BM1から、中継装置R0、R4、R8を介して、2個のメモリM0、M1へとトラヒックを送信している時の、ある時刻における仮想チャネルの利用の様子を示している。図19(b)は、このときの中継装置R0の仮想チャネル情報を示している。
図20は、図19(a)に示す各中継装置R0、R4、R8における、メモリM0へ向かうトラヒックT0、およびメモリM1へ向かうトラヒックT1の仮想チャネルの利用数と、後段の隣接中継装置との間の仮想チャネル利用数の差分を示す図である。
図19(a)において、中継装置R0では、メモリM0宛のトラヒックT0は仮想チャネルを2つ利用し、メモリM1宛のトラヒックT1は仮想チャネルを1つ利用している。中継装置R4では、トラヒックT0は仮想チャネルを1つ利用し、トラヒックT1は仮想チャネルを利用していない。中継装置R8でも、トラヒックT0は仮想チャネルを1つ利用し、トラヒックT1は仮想チャネルを利用していない。このため、中継装置R0では、送信先の隣接中継装置R4との仮想チャネル利用数の差分ΔR0は、トラヒックT0については「1」、トラヒックT1については「1」となる。また、中継装置R1では、送信先の隣接中継装置R8との仮想チャネル利用数の差分ΔR1は、トラヒックT0、T1のいずれについても「0」となる。
中継装置R0、R4、R8における仮想チャネルが図19に示す状態にある場合、図20に示すとおり、トラヒックT0、T1のいずれについても、中継装置R0と中継装置R4との間の仮想チャネルの利用数の差分は「1」となり、両者は同数である。
このため、実施形態1の中継装置を用いた場合、メモリM0へ向うトラヒックT0と、メモリM1へ向うトラヒックT1には、どちらにも仮想チャネルが割当てられる可能性がある。
この時、中継装置R0の仮想チャネルの1番に対して出力チャネル(または中継装置R4の仮想チャネル)が割当てられると、中継装置R4において、トラヒックT0は2つの仮想チャネルを利用し、トラヒックT1は1つも仮想チャネルを利用していない状況となる。その結果、宛先の異なるトラヒックT0とT1との間で仮想チャネルの利用数に偏りが生じる。仮想チャネルが割り当てられなかったメモリM1へ向かうトラヒックT1では、伝送品質(スループット)の低下、伝送遅延の増大が生じる。
本実施形態では、自中継装置と隣接中継装置との間で、仮想チャネル利用数の差分値が等しいトラヒックが複数存在する場合、隣接中継装置における仮想チャネル利用数が相対的に少ないトラヒックに優先的に出力チャネル818が割り当てられる。これにより、1つの中継装置において、宛先の異なる複数のトラヒック間で仮想チャネルの利用数に偏りが生じることを回避できる。
以下、本実施形態における処理の流れを説明する。
図21は、実施形態2の中継装置800において、出力チャネル選択部812の動作を説明するフローチャートである。図21において、図15に示す動作と共通する動作については、同じ番号を付与している。以下、図15に示す処理と異なる点を説明する。
ステップS1804において、差分が0以上の宛先が存在した場合、続くステップS2501において、出力チャネル選択部815は、自中継装置800bの仮想チャネルの利用数と、隣接する中継装置の仮想チャネルの利用数とを比較し、その差分が最大となる宛先が複数存在するか否かを判定する。当該差分が最大となる宛先が複数存在する場合には、ステップS2502に移る。当該差分が最大(0以上)となる宛先が1つだけの場合はステップS1805に移る。
例えば、図19(a)に示す構成において、中継装置R0がステップS2501の状態にある場合、図20に示すように、トラヒックT0、T1のいずれに関しても、差分値ΔR0が同じであるため、処理はステップS2502に移る。
ステップS2502において、仮想チャネル利用数比較部811は、隣接チャネル利用情報管理部810を参照し、差分が最大と判定されたトラヒックのうち、後段の中継装置における出力チャネル818の利用数が最も少ない宛先のトラヒックが利用している仮想チャネル817を1つ選択し、その仮想チャネル817に出力チャネル818を割り当てる。これにより、各トラヒックの仮想チャネル利用数を均一に近づけることができる。
例えば、図20において、差分値ΔR0は、トラヒックT0、T1のいずれについてもΔR0=1であるが、次の中継装置R1における仮想チャネルの利用数は、トラヒックT0については1個、トラヒックT1については0個である。そのため、トラヒックT1のフリットを格納する3番の仮想チャネル(図19)が選択される。
このように、自中継装置における仮想チャネルの利用数と隣接中継装置における仮想チャネルの利用数との差分が同一となるトラヒックが複数存在する場合には、隣接中継装置における仮想チャネルの割当数が少ないトラヒックに優先的に出力チャネルが割り当てられる。これにより、宛先の異なる複数のトラヒックについて、仮想チャネルの利用数を均一化できる。
一般に、送信レートの高いトラヒックを中継する場合や、特定の宛先へ向かうパケットを短い時間で中継する場合には、これらのトラヒックが中継装置内の仮想チャネルをより多く占有しやすい。すると、送信レートの低いトラヒックや、遅れて届いたトラヒックが仮想チャネルをすぐに利用できない状況が発生する。
これに対し、実施形態2の中継装置は、転送先の隣接中継装置における仮想チャネルの利用数がどの宛先のトラヒックに関しても均一に近づくように出力を制御する。このため、送信レートの違いやパケットの到着のタイミングに依らず、特定のトラヒックによる仮想チャネルの占有を抑制しつつ、宛先の異なるトラヒック間で伝送性能(スループット、遅延時間)の均一化を図ることができる。
(実施形態3)
次に、本発明の第3の実施形態を説明する。
次に、本発明の第3の実施形態を説明する。
上記の実施形態1、2では、宛先でトラヒックを区別し、伝送経路上の中継装置内での仮想チャネルの利用数が均一に近づくように、仮想チャネルの割当制御が行われる。これにより、特定の宛先へ向かうトラヒックによって中継装置内の全ての仮想チャネルが占有され、伝送性能が低下することを抑制することができる。
本実施形態では、さらに、パケットに付与された時間情報に基づいて中継装置内の複数の仮想チャネルに保存されている、同一の宛先が設定された複数のパケットの送信順序の調整を行う。これにより、各トラヒックの遅延時間に対する品質を確保した伝送を実現することができる。
一般に、アプリケーションの種類や処理の内容によって、バスマスタが送信したパケットが受信側のノードに届くまでの締切時間(許容遅延時間)が異なる。このため、特定の宛先のトラヒックによって伝送経路上の特定の中継装置の全ての仮想チャネルが占有されることを回避するだけでなく、締切時間が短いパケットには、優先的に仮想チャネルを割当てる必要がある。そうでなければ、締切時間内にパケットが届かず、正しくシステムを動作させることができなくなる。
本実施形態の中継装置は、共通の宛先が設定されたトラヒック内で、締切時間が短いパケットを、締切時間が長いパケットよりも優先的に送信する。これにより、より多くのパケットを締切時間内に受信ノードに送信することができる。
以下、本実施形態における中継装置800bの構成および動作を説明する。実施形態1、2と共通する構成要素および動作については説明を省略する。
図22は、本実施形態の中継装置の構成を示す図である。図23は、本実施形態において伝送されるパケットのデータ構造を示す図である。図22、23において、実施形態1、2と同様の構成要素については、同じ参照符号を付している。
本実施形態の中継装置800bは、仮想チャネル情報管理部806で管理される仮想チャネル情報に基づいて、複数の仮想チャネル817に格納された複数のフリットの時間情報を比較する時間情報比較部840をさらに備えている。
本実施形態では、図23に示すように、伝送されるパケット700のヘッダフリット704には、パケットの送信時刻やパケットが受信側のノードに届くまでの締切時間などの、パケットの送信順序を決定するために利用される時間情報が付与されている。本実施形態における仮想チャネル情報管理部806は、この時間情報も他の情報と同様に仮想チャネル情報に記録する。
図24は、本実施形態における仮想チャネル情報2701の一例である。仮想チャネル情報2701には、各仮想チャネルに格納されているパケットのヘッダフリット704に記録されていた時間情報が管理されている。以下、時間情報として、パケットが受信側ノードに届くまでの締切時間を用いた場合の例を説明する。
図25は、本実施形態における中継装置800bにおける仮想チャネル817および出力チャネル818の割当動作の流れを示すフローチャートである。図25において、実施形態1、2と同様の動作については、同一の番号を付している。
本実施形態では、ステップS2501までの動作は実施形態2における動作と同様である。ステップS2501において、仮想チャネルの利用数の差分が最大となる宛先が複数存在すると判定された場合、処理はステップS2801に進む。
ステップS2801において、出力チャネル選択部812は、送信先の隣接中継装置800cの仮想チャネルの利用数をトラヒックの宛先で区別して比較し、利用数が最も少ない宛先を候補の宛先として1つ選択する。一方、ステップS2805では、ステップS2501で差分が最大であると判定された宛先を候補の宛先とする。
図26は、図19と同様の構成における各中継装置の仮想チャネルの例を示す図である。図26(a)は、中継装置R0、R4,R8を介して、バスマスタBM0から、1個のメモリM0へとトラヒックを送信している時の、ある時刻における仮想チャネルの利用の様子を示している。図26(b)は、このときの中継装置R0の仮想チャネル情報を示している。この例でも、各中継装置R0、R4、R8は、いずれも4つの仮想チャネルを持つものとする。図26では、説明の簡略化のため、入力ポート毎の仮想チャネルの区別は省略している。また、図26(a)では、バスマスタBM0からメモリ0へと送信されるトラヒックについて、図の上側から順に仮想チャネルを割り当てられるものとしている。なお、図26(a)は、仮想チャネルの割り当て方の一例であり、パケット毎に区別して仮想チャネルが割り当てられる方法であれば図26(a)に示す割り当て方に限定されるものではない。
図26に示す例では、中継装置R0の全ての仮想チャネルに宛先がメモリM0であるパケットが格納されているため、ステップS2801において、候補の宛先としてメモリM0が選択される。
候補の宛先が決定すると、続くステップS2802において、出力チャネル選択部812は、当該宛先が設定されたパケットが格納された仮想チャネル817が複数存在するか否かを判定する。当該宛先が設定されたパケットが格納された仮想チャネル817が複数存在する場合にはステップS2803に移り、そうでない場合にはステップS2804に移る。
図26の例では、中継装置R0において、ステップS2801で選択されたメモリM0宛のパケットが格納された仮想チャネルが複数存在するため、処理はステップS2803へ移る。
ステップS2803において、時間情報比較部840は、仮想チャネル情報2701に記載された「時間情報」を参照する。そして、ステップS2801で選択された宛先へ向かうパケットを格納する仮想チャネルの中から、時間情報に基づく優先度が最も高い仮想チャネルを1つ選択する。
図26に示す例では、中継装置R0がステップS2803の状態にあるとき、時間情報比較部2601は、出力チャネルが未設定の仮想チャネル1番、仮想チャネル2番、仮想チャネル3番の時間情報を比較する。ここではパケットが受信ノードに届くまでの締切時間が最も小さいパケットから優先的に送信するとする。その結果、出力チャネルが未設定で、締切時間が最も小さい仮想チャネル2番が選択される。
一方、ステップS2802において、候補の宛先について、出力チャネルが未設定の仮想チャネルが1つだけであると判定された場合、ステップS2804において、出力チャネル選択部812は、当該仮想チャネルを選択する。
ステップS2802またはS2803で送信すべきパケットが格納された仮想チャネルが選択されると、ステップS1805において、出力チャネル選択部812は、選択された仮想チャネルに対して、空いている出力チャネル818を1つ割り当てる。
以下、本実施形態における時間情報の例を説明する。
上記の説明では、時間情報比較部840は、パケットの締切時間が短いパケットから優先的に出力チャネル818の割当を行うが、時間情報として締切時間以外の時間情報を基準に出力チャネルの割当順序を決定してもよい。
図27は、本実施形態で用いられ得る時間情報の例、およびそれらの時間情報の比較基準の例を示している。時間情報として、例えば、パケットが送信された時刻を用いて、送信時刻の古いものから順に出力チャネルを割り当ててもよい。これにより、パケット間で送信時の順番を維持しつつ、受信ノードまでパケットを中継することができる。また、パケットの送信時刻の代わりに、送信してからの経過時間を時間情報として利用し、経過時間が長いパケットから順に出力チャネルの割当を行ってもよい。
送信時刻を管理する場合、時間情報は半導体システムが動作している期間を表現できるだけの桁数が必要となるため、半導体システムが長時間動作する場合には、時間情報の桁数が大きくなる。これに対し、時間情報としてパケットが送信されてからの経過時間を用いる場合には、パケットが送信されてから受信されるまでにかかる時間を表現するだけの桁数があればよいので、比較的、時間情報の桁数を小さくできるというメリットがある。時間情報として扱う値の桁数が小さければ、時間情報比較部840における時間情報の比較回路を小さくできるため、半導体システムのリソース削減において有効である。
また、送信時刻を用いる場合であっても、例えば、送信時刻の位の小さい方からn桁の値のみを用いることにより、時間情報として扱う桁数を小さくすることができる。n桁の値としては、例えばパケットが送信されてから受信されるまでに要する時間を表現するだけの桁数を用いればよい。
時間情報の他の例として、パケットを受信ノードに届けるべき締切時刻を用いて、締切時刻に近いパケットから順に出力チャネルの割当てを行ってもよい。また、上記の例のように、パケットを受信ノードに届けるべき締切時刻までの残り時間を用いて、残り時間の短いパケットから順に出力チャネルを割り当ててもよい。
以上のように、本実施形態の中継装置によれば、宛先の異なるトラヒックに対して、伝送経路上の各中継装置における仮想チャネルの利用数の偏りを抑制しながら、トラヒックの伝送品質を維持した伝送が可能となる。このため、例えば、締切時間が長いベストエフォート型のトラヒックと、締切時間が短い品質保証型のトラヒックとが混在して送信される場合に、送信時間に対する品質を高めることができる。具体的には、品質保証型のトラヒックを優先的に送信することにより、締切時間内に品質保証型のトラヒックを受信ノードまで届けることができる。一方、ベストエフォート型のトラヒックについては、伝送経路上の複数の中継装置の仮想チャネルに分散してパケットを格納することができる。これにより、特定の中継装置の仮想チャネルが特定のトラヒックで占有されることを回避できる。その結果、品質保証型のトラヒックが後から送信されても、経路上で仮想チャネルの空きができるまで待つことなく、すぐに当該トラヒックを送信することができる。
このように、本実施形態の中継装置によれば、品質についての要求が異なる複数種類のトラヒックに対し、それらの要求に合わせた流量制御をしながら、NoC内の仮想チャネルを有効に利用することができる。
(実施形態4)
次に、本発明の第4の実施形態を説明する。
次に、本発明の第4の実施形態を説明する。
実施形態1、2、3における中継装置は、宛先の異なるトラヒック毎に伝送経路上の各中継装置で仮想チャネルの利用数を均一に近づけることによって伝送経路上の特定の中継装置の仮想チャネルが特定のトラヒックによって占有されることを回避する。
これに対し、本実施形態の中継装置では、さらに伝送経路上の仮想チャネルにおいて特定のトラヒックによる仮想チャネルの利用数が所定の閾値を越えた場合に、中継装置とバスマスタとの間のフロー制御の調整によって、バスマスタからのトラヒックの送信量を制限する。これにより、伝送経路上の全ての仮想チャネルが占有されることを回避することができる。
なお、「トラヒックの送信量を制限する」とは、例えば(a)トラヒックの送信量を減らすこと、(b)トラヒックの送信を停止すること、(c)トラヒックの送信量の上限値と下限値の両方、または上限値のみを設定し、その範囲内の送信量でトラヒックを送信すること、などを意味している。
まず、本実施形態で扱う課題を、図28を用いて説明する。
図28は、バスマスタBM0からメモリM0に対して、中継装置R0、R4、R8を介してトラヒックT0を送信している状況を示している。バスマスタMB0から中継装置R0へ送信されるトラヒックT0の送信量に比べ、中継装置R8からメモリM0へのトラヒックT0の送信量が少ない場合、この状態が長時間続くと、伝送経路上の中継装置間で、仮想チャネルの利用数を均一化する制御だけでは、伝送経路上の中継装置内の仮想チャネルの全てがトラヒックT0によって利用されている状態で均一化されてしまう。このため、他の宛先へのトラヒックが送信できなくなる(図40a)。
このため、本実施形態では、バスマスタBM0に直接接続されている中継装置R0におけるトラヒックT0の仮想チャネルの利用数が所定の閾値よりも多い場合に、中継装置R0とバスマスタBM0との間でトラヒックT0の送信量を制限する制御が行われる。この制御により、伝送経路上の全ての中継装置で、トラヒックT0によって、全ての仮想チャネルが占有されることを回避することができる(図40b)。
以下、本実施形態においてバスマスタと隣接する中継装置800の構成および動作を説明する。以下、実施形態1と共通する構成要素および動作については説明を省略する。
図29は、本実施形態の中継装置の構成を示す図である。本実施形態における中継装置800は、バスマスタ4101と直接接続している。アービター850は、実施形態1における構成要素に加え、バスマスタ4101から送信されるトラヒックの送信量を調整するフロー制御調整部4102をさらに備える。
バスマスタ4101と中継装置800との間のフロー制御は、以下のようにして行われる。バスマスタ4101から中継装置800に対してパケットの送信要求が出力され、これに応答して中継装置800からバスマスタ4101に許可信号を返すことによってバスマスタ4101からのパケット送信が実行される。フロー制御調整部4102は、バスマスタ4101からの送信要求に対して、許可信号の返信のタイミングを調整することにより、バスマスタ4101から中継装置800への送信量の制限を行う。
図30は、本実施形態における中継装置800が実行するバスマスタ4101とのフロー制御の調整に関する動作を示すフローチャートである。中継装置800は、ステップS4201において、入力ポート毎の仮想チャネルの利用数を測定する。続くステップS4202において、フロー制御調整部4102は、特定の宛先へ送信されるトラヒックの仮想チャネルの利用数が所定の閾値よりも多いか否かを判定する。閾値を超えるトラヒックが存在しなければステップS4201に戻る。閾値を超えるトラヒックが存在した場合、ステップS4203に移り、そのトラヒックを送信しているバスマスタに対して、トラヒックの送信量の制限を行うように指示することによってフロー制御の調整を行う。
例えば図28(b)に示す例では、所定の閾値は1に設定されている。中継装置R0は、トラヒックT0による2個以上の仮想チャネルを検出すると、仮想チャネルの利用数が2個よりも少なくなるまで、バスマスタBM0に対してトラヒック送信の許可信号の出力を停止し、バスマスタBM0によるトラヒックの送信を停止させる。これにより、図28(B)に示すように、伝送経路上の中継装置間で仮想チャネルの利用数を均一に保ちつつ、伝送経路上の仮想チャネルの全てがトラヒックT0によって占有されることを回避できる。 本実施形態では、上記のフロー制御と、実施形態1における隣接中継装置同士の仮想チャネル利用数の均一化の制御とを組み合わせることにより、フロー制御だけを行った場合と比較して、有利な効果を奏する。
伝送経路上の中継装置間で、同じ宛先のトラヒックに対し、仮想チャネルの利用数の均一化の制御を行わない場合、伝送経路上の特定の中継装置で仮想チャネルの占有による混雑が発生しても、バスマスタに隣接する中継装置は、直ちにその混雑状況を把握できない。すなわち、その混雑がトラヒックの送信元に順次伝搬し、バスマスタに隣接する中継装置に至るまで、トラヒックを送信しているバスマスタは、伝送経路上の混雑の状態を特定できない。
これに対し、伝送経路上の中継装置間で、同じ宛先のトラヒックに対して仮想チャネルの利用数の均一化の制御を行った場合、伝送経路上の中継装置におけるフローが均一に近づく。このため、各中継装置におけるチャネル利用状況を測定することなく、バスマスタに接続された中継装置のチャネル利用状況のみに基づいて、トラヒックの混雑状況を把握することができる。その結果、トラヒックを送信しているバスマスタは、伝送経路上の特定の中継装置で仮想チャネルの占有が発生する前に、伝送経路上の混雑を把握することが可能である。本実施形態における制御によれば、バスマスタが送信する特定のトラヒックに伝送経路上の中継装置の仮想チャネルが占有されることによって他のトラヒックが伝送できなくなる状況の発生を回避できる。
なお、フロー制御調整部4102が上記のフロー制御を行う対象とするトラヒックは、宛先が共通するトラヒックに限らず、伝送経路の少なくとも一部が共通するトラヒックであればよい。また、また、本実施形態におけるフロー制御は、バスマスタに接続された中継装置のチャネル利用数に限らず、流量や遅延時間などに基づいていてもよい。
本実施形態では、実施形態1における伝送制御とフロー制御とを組み合わせたが、実施形態2、3における伝送制御とフロー制御とを組み合わせても同様の効果がある。
(他の実施形態)
上記の実施形態1から4では、パケットの宛先の違いに基づいてトラヒックの区別を行ったが、パケットの送信元の違いに基づいてトラヒックを区別し、仮想チャネルの割当てを行ってもよい。
上記の実施形態1から4では、パケットの宛先の違いに基づいてトラヒックの区別を行ったが、パケットの送信元の違いに基づいてトラヒックを区別し、仮想チャネルの割当てを行ってもよい。
例えば、複数のバスマスタから1つの宛先のノードにトラヒックが送信される場合、パケットの宛先だけに基づいてトラヒックを区別すると、特定のバスマスタから送信されたパケットが伝送経路上の中継装置の仮想チャネルを占有してしまう可能性がある。その場合、他のバスマスタから送信されたパケットをすぐに伝送できない状況が発生する。
これに対し、パケットの送信元の違いに基づいてトラヒックを区別した場合には、同じ宛先に送信されたトラヒックであっても、それらの送信元で区別することにより、各中継装置の仮想チャネルの利用数が均一になるように制御することができる。このため、各バスマスタからの伝送品質を維持したデータ伝送が可能となる。また、パケットの宛先および送信元の組み合せに基づいてトラヒックを区別し、仮想チャネルの割当てを行ってもよい。
上記の説明においては、「宛先(送信先)」および「送信元」の用語を、パケットが最終的に到達するノードおよびそのパケットを最初に送信したノードを指すものとして用いたが、これらの用語の意味を以下のように解釈してもよい。すなわち、「宛先」や「送信元」として、パケットが通過する他の中継装置や入出力ポート等の、特定の経路の通過を指定する情報を用いてもよい。図31(a)、(b)は、中継装置R1から見た種々の宛先の定義および宛先の具体例を示している。例えば、図31(a)に示す構成において、パケットが受信ノード(メモリ)に届くまでの伝送経路上で通過する途中の中継装置を「宛先」と定義してもよい。
図31(a)に示す中継装置R1について、宛先の定義を受信ノード(メモリ)とすると、メモリ0からメモリ7までの8個のメモリが宛先となり得る。一方、宛先の定義を2つ先の中継装置とすると、4つの中継装置R8~R11が宛先となり得る。また、宛先の定義を1つ先の中継装置とすると、2つの中継装置R5およびR7が宛先となり得る。
なお、パケットの宛先をメモリや中継装置などのノードとするのではなく、利用する出力ポートの違いにより宛先を定義してもよい。この場合、中継装置R1にとって、出力ポート0および出力ポート1、すなわち、2つの中継装置R5およびR7が宛先となり得る。
宛先とされた中継装置にパケットが到達した場合には、その中継装置は再び、その中継装置での定義に従って宛先を設定し、パケットを送出すればよい。
上記の例では、宛先にだけ着目したが、送信元についても同様の考え方を適用して中継装置ごとに種々の送信元を定義することができる。すなわち、送信元のバスマスタのみならず、1つ前の中継装置、2つ前の中継装置、利用する入力ポート等を送信元として定義してもよい。
実施形態1から4では、集積回路のトポロジーが多段接続網の場合を例に説明したが、本発明の中継装置は多段接続網での利用に限定されるものではない。例えば、図32(a)に示すように中継装置を格子状に並べたメッシュ型トポロジーを構成してもよい。また、図32(b)に示すように上下左右で中継装置をリング状に接続したトーラス型トポロジーであってもよい。さらに、図32(c)に示すようにバスを階層的に接続した階層型トポロジーなどを構成してもよい。複数のバスマスタを分散型のバスを介して接続したトポロジーであれば、同様に本発明の中継装置の適用が可能である。
以上の説明では、中継装置の各構成要素は、ブロック化された個別の機能部として表されているが、これらの機能部の処理を規定するプログラムを中継装置に実装されたプロセッサ(コンピュータ)に実行させることによって中継装置の動作が実現されていてもよい。そのようなプログラムの処理手順は、例えば図8、15、18、21、25のフローチャートに記載されているとおりである。
(利用例1)
以下、本発明による中継装置の実際の機器への利用例を説明する。図33は、半導体回路上の複数のバスマスタと複数のメモリおよび外部とデータを通信するための共用の入出力ポート(I/Oポート)とを分散型のバスを利用して接続した例を示している。このような半導体回路は、例えば、携帯電話、PDA(Personal Digital Assistants)、電子書籍リーダーなどの携帯端末や、TV、ビデオレコーダ、ビデオカメラ、監視カメラ等の機器で用いられ得る。バスマスタは、例えば、CUP、DSP、伝送処理部、画像処理部などである。メモリは、揮発性のDRAMであってもよいし、不揮発性のフラッシュメモリであってもよい。また、揮発性メモリおよび不揮発性メモリが混在していてもよい。また、入出力ポートは、外付けのHDDやSSD、DVDなどの記憶装置と接続するためのUSBやイーサネット(登録商標)などの通信インターフェイスであり得る。
以下、本発明による中継装置の実際の機器への利用例を説明する。図33は、半導体回路上の複数のバスマスタと複数のメモリおよび外部とデータを通信するための共用の入出力ポート(I/Oポート)とを分散型のバスを利用して接続した例を示している。このような半導体回路は、例えば、携帯電話、PDA(Personal Digital Assistants)、電子書籍リーダーなどの携帯端末や、TV、ビデオレコーダ、ビデオカメラ、監視カメラ等の機器で用いられ得る。バスマスタは、例えば、CUP、DSP、伝送処理部、画像処理部などである。メモリは、揮発性のDRAMであってもよいし、不揮発性のフラッシュメモリであってもよい。また、揮発性メモリおよび不揮発性メモリが混在していてもよい。また、入出力ポートは、外付けのHDDやSSD、DVDなどの記憶装置と接続するためのUSBやイーサネット(登録商標)などの通信インターフェイスであり得る。
複数の映像や音楽などの再生、記録、トランスコード、および書籍、写真、地図データ等の閲覧や編集、ゲームのプレイなど、複数のアプリケーションやサービスを同時に利用する場合、各バスマスタからメモリへのアクセスが増える。このため、メモリの数が1つしかない場合、アクセスが1箇所に集中してしまう。これを解決するためには、メモリ側の入出力の伝送帯域を広げる必要があり、コストが高くなってしまう。
メモリアクセスの集中を回避する方法として、アプリケーションやサービス等の種類によってバスマスタが利用するメモリを物理的に分ける方法や、外付けのHDDドライブなど外部の記憶装置を利用する方法などを適用することにより、これらのバスマスタとメモリとを分散型のバスで接続させることが有効である。
しかし、例えば、あるバスマスタが、映像データを保存するためにメモリAに対して高いレートでデータパケットを送信した場合、伝送経路上のバッファが全てメモリA宛のパケットで占有される頻度が多くなる。その結果、他のメモリへデータが流れにくくなり、他のアプリケーションやサービスの性能が低下したり、処理時間が増加してしまう。
これに対し、本発明の中継装置を用いた場合には、各中継装置の仮想チャネルにおいて、宛先などが異なるパケットに対して、均一に仮想チャネルが割り当てられるため、特定のメモリに向うパケットによる仮想チャネルの占有を回避できる。その結果、半導体回路上の全てのアプリケーションやサービスの性能の向上や、処理時間の短縮化を図ることができる。
(利用例2)
次に、本発明の中継装置のマルチコアプロセッサ(multi-core processor)への利用例を説明する。
次に、本発明の中継装置のマルチコアプロセッサ(multi-core processor)への利用例を説明する。
図34は、CPUやGPU,DSP等のコアプロセッサの処理能力を向上させるために、複数のコアプロセッサをメッシュ状に配列し、これらを分散バスで接続したマルチコアプロセッサを示している。この構成では、各コアプロセッサが本発明における第1ノードとして機能し得るし、第2ノードとしても機能し得る。
マルチコアプロセッサ上では、各コアプロセッサ間で通信が行われる。例えば、各コアプロセッサには、演算処理に必要なデータを記憶しておくキャッシュメモリが備えられており、コアプロセッサ間で互いのキャッシュメモリの情報をやり取りすることができる。これによって情報の共有が可能となり、処理性能を向上させることができる。
しかし、マルチコアプロセッサ上で発生するコアプロセッサ間の通信は、それぞれ位置関係や距離(中継ホップ数)、通信頻度が異なる。このため、データパケットの順序を単純に維持したまま中継すると、バッファが全て特定のコアプロセッサ宛のパケットにより占有されパケットデータが流れにくい中継装置が発生する。その結果、マルチコアプロセッサの性能の低下や、処理時間の増加を引き起こす。
これに対し、本発明の実施形態による中継装置を用いた場合には、各中継装置の仮想チャネルにおいて、宛先の異なるパケットに対して、均一に仮想チャネルが割り当てられるため、特定のコアプロセッサに向うパケットによって中継装置の仮想チャネルが占有されることを回避できる。その結果、各コアプロセッサの性能の向上や、処理時間の短縮化を図ることができる。
(利用例3)
上述の実施形態および利用例では、本願発明がチップ上で実装された際の構成を説明した。本願発明は、チップ上に実装されるだけでなく、チップ上に実装するための設計及び検証を行うシミュレーションプログラムとしても実施され得る。そのようなシミュレーションプログラムは、コンピュータによって実行される。例えば図2、5、22に示される各構成要素は、シミュレーションプログラム上のオブジェクト化されたクラスとして実装される。各クラスは、予め定められたシミュレーションシナリオを読み込むことにより、各構成要素に対応する動作をコンピュータ上で実現する。言い換えると、各構成要素に対応する動作は、コンピュータの処理ステップとして直列的または並列的に実行される。
上述の実施形態および利用例では、本願発明がチップ上で実装された際の構成を説明した。本願発明は、チップ上に実装されるだけでなく、チップ上に実装するための設計及び検証を行うシミュレーションプログラムとしても実施され得る。そのようなシミュレーションプログラムは、コンピュータによって実行される。例えば図2、5、22に示される各構成要素は、シミュレーションプログラム上のオブジェクト化されたクラスとして実装される。各クラスは、予め定められたシミュレーションシナリオを読み込むことにより、各構成要素に対応する動作をコンピュータ上で実現する。言い換えると、各構成要素に対応する動作は、コンピュータの処理ステップとして直列的または並列的に実行される。
中継装置として実装されたクラスは、シミュレータで定義されたシミュレーションシナリオを読み込むことにより、送信先アドレス、送信元アドレス、時間情報等の条件を決定する。また、他の中継のクラスから送信されるパケットの送信タイミング等の条件を決定する。
中継装置として実装されたクラスは、シミュレーションシナリオに記述されたシミュレーションの終了条件が成立する迄の間、動作を行う。動作中のスループットやレイテンシ、バスの流量の変動の様子、動作周波数、消費電力の見積値等を算出しプログラムの利用者に提供する。これらに基づき、プログラムの利用者はトポロジや性能の評価を行い、設計及び検証を行う。
シミュレーションシナリオの各行には、例えば、送信元ノードのID、宛先ノードのID、送信するパケットのサイズ、送信するタイミング等の情報が記述されるのが普通である。また複数のシミュレーションシナリオをバッチ処理的に評価することで、想定した全てのシナリオで所望の性能が保証できているか否かを効率的に検証できる。またバスのトポロジやノード数、送信ノード、中継装置、宛先ノードの配置を変化させて性能比較することにより、シミュレーションシナリオに最も適したネットワーク構成を特定することもできる。上記の実施形態のいずれもが本態様の設計及び検証ツールとしても適用可能である。このように、本願発明は、設計及び検証ツールとして実施される際にも適用可能である。
本発明は、例えば複数のメディア処理用のDSPや、高速なファイル転送を行うCPUなどを、分散バスを用いて1つのSoC(System on Chip)上に集積化する際に、実装に必要なリソースの省資源化と、処理の低遅延化の双方を実現する上で有用である。また、リソースの省資源化と処理の低遅延化による集積回路全体の省電化に対しても有用である。
700 パケット
701 ヘッダフィールド
702 データフィールド
703 制御コードフィールド704 ヘッダフリット
705 データフリット
706 テイルフリット
800、800a、800b、800c 中継装置
801 入力ポート
802 入力バッファ
803 クロスバスイッチ
804 出力バッファ
805 出力ポート
806 仮想チャネル情報管理部
807 出力ポート選択部
808 チャネル利用数測定部
809 チャネル利用情報通信部
810 隣接チャネル利用情報管理部
811 仮想チャネル利用数比較部
812 出力チャネル選択部
813 仮想チャネル選択部
814 スイッチ切替部
817 仮想チャネル
818 出力チャネル
840 時間情報比較部
850 アービター
901 仮想チャネル情報
1001 隣接チャネル利用情報
4102 フロー制御調整部
701 ヘッダフィールド
702 データフィールド
703 制御コードフィールド704 ヘッダフリット
705 データフリット
706 テイルフリット
800、800a、800b、800c 中継装置
801 入力ポート
802 入力バッファ
803 クロスバスイッチ
804 出力バッファ
805 出力ポート
806 仮想チャネル情報管理部
807 出力ポート選択部
808 チャネル利用数測定部
809 チャネル利用情報通信部
810 隣接チャネル利用情報管理部
811 仮想チャネル利用数比較部
812 出力チャネル選択部
813 仮想チャネル選択部
814 スイッチ切替部
817 仮想チャネル
818 出力チャネル
840 時間情報比較部
850 アービター
901 仮想チャネル情報
1001 隣接チャネル利用情報
4102 フロー制御調整部
Claims (16)
- データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1および第2ノードの間で伝送される前記データをバスを介して中継する複数の中継装置とを備えたデータ伝送システムにおいて用いられる中継装置であって、
入力されたデータを格納するための複数のデータ格納部と、
前記複数のデータ格納部の少なくとも1つに格納された、伝送経路の少なくとも一部が共通するデータに関する前記データ格納部の利用状況、および前記伝送経路の少なくとも一部が共通するデータに関する隣接中継装置におけるデータ格納部の利用状況の比較結果に基づいて、前記データを出力するか否かを決定するアービターと、
を備える中継装置。 - 前記データの出力先は、前記隣接中継装置である、請求項1に記載の中継装置。
- 前記アービターは、送信先アドレスおよび送信元アドレスの少なくとも一方が共通するデータについての、自中継装置における前記データ格納部の利用状況と、前記隣接中継装置における前記データ格納部の利用状況とを比較した結果に基づいて、前記データを出力するか否かを決定する、請求項1または2に記載の中継装置。
- 前記アービターは、前記伝送経路の少なくとも一部が共通するデータが格納されたデータ格納部の数と、前記隣接中継装置における前記伝送経路の少なくとも一部が共通するデータが格納されたデータ格納部の数との比較結果に基づいて、前記データを出力するか否かを決定する、請求項1から3のいずれかに記載の中継装置。
- 前記アービターは、前記伝送経路の少なくとも一部が共通するデータが格納されたデータ格納部の数から、前記隣接中継装置における前記伝送経路の少なくとも一部が共通するデータが格納されたデータ格納部の数を引いた差分値が予め設定された閾値以上である場合には、前記データを出力し、前記差分値が前記閾値に満たない場合には、前記データを出力しない、請求項4に記載の中継装置。
- 前記閾値は0である、請求項5に記載の中継装置。
- 前記アービターは、複数のグループのデータであって、各グループのデータの伝送経路の少なくとも一部は共通している複数のグループのデータが前記複数のデータ格納部に格納されている場合において、各グループごとに、自中継装置における前記データ格納部の利用数から次の隣接中継装置における前記データ格納部の利用数を引いた差分値を求め、前記差分値が前記閾値以上であるグループのデータのうち、前記差分値が最大であるデータを出力する、請求項5または6に記載の中継装置。
- 前記アービターは、前記差分値が最大であるデータが複数存在する場合に、次の隣接中継装置における前記データ格納部の利用数が最小であるデータを出力する、前記請求項7に記載の中継装置。
- 前記複数のデータ格納部に入力されるデータは、前記データの送信時刻、前記データを送信してから経過した時間、前記データが前記第2ノードに届くべき時刻、および前記データが前記第2ノードに届くべき時刻までの残り時間のいずれかを示す時間情報を有しており、前記アービターは、前記時間情報の値に基づき、出力するデータを決定する、請求項8に記載の中継装置。
- 前記アービターは、前記次の隣接中継装置におけるデータ格納部の利用数が最小であるデータが複数存在する場合に、前記時間情報の値に基づき、出力するデータを決定する、請求項9に記載の中継装置。
- 前記複数のデータ格納領域の各々は、仮想的な回線で構成された仮想チャネルである、請求項1から10のいずれかに記載の中継装置。
- 前記アービターは、前記伝送経路の少なくとも一部が共通するデータが格納されたデータ格納部の数を示す情報を前記隣接中継装置および他の隣接中継装置の少なくとも一方に送信し、前記隣接中継装置から前記伝送経路の少なくとも一部が共通するデータが格納されたデータ格納部の数を示す情報を取得するチャネル利用情報通信部をさらに有している、請求項1から11のいずれかに記載の中継装置。
- 自中継装置は、前記第1ノードに隣接して配置されており、
前記アービターは、前記伝送経路の少なくとも一部が共通するデータが格納されたデータ格納部の利用数が所定の閾値よりも多い場合に、前記第1ノードに対して送信量の制限を指示するフロー制御調整部をさらに有している、請求項1から12のいずれかに記載の中継装置。 - データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1および第2ノードの間で伝送される前記データをバスを介して中継する複数の中継装置とを備えたデータ伝送システムにおいて用いられる中継装置の制御方法であって、
入力されたデータを複数のデータ格納部に格納するステップと、
前記複数のデータ格納部の少なくとも1つに格納された、伝送経路の少なくとも一部が共通するデータに関する前記データ格納部の利用状況、および前記伝送経路の少なくとも一部が共通するデータに関する隣接中継装置におけるデータ格納部の利用状況の比較結果に基づいて、前記データを出力するか否かを決定するステップと、
を含む、中継装置の制御方法。 - データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1および第2ノードの間で伝送される前記データをバスを介して中継する複数の中継装置とを備えたデータ伝送システムにおいて用いられる中継装置の制御プログラムであって、
前記制御プログラムは、前記中継装置に実装されたコンピュータに対し、
入力されたデータを複数のデータ格納部に格納するステップと、
前記複数のデータ格納部の少なくとも1つに格納された、伝送経路の少なくとも一部が共通するデータに関する前記データ格納部の利用状況、および前記伝送経路の少なくとも一部が共通するデータに関する隣接中継装置におけるデータ格納部の利用状況の比較結果に基づいて、前記データを出力するか否かを決定するステップと、
を実行させる、中継装置の制御プログラム。 - データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1および第2ノードの間で伝送される前記データを、バスを介して中継する複数の中継装置とを備えたデータ伝送システムにおいて用いられる中継装置のためのシミュレーションプログラムであって、
前記シミュレーションプログラムは、コンピュータに対し、
入力されたデータを複数のデータ格納部に格納するステップと、
前記複数のデータ格納部の少なくとも1つに格納された、伝送経路の少なくとも一部が共通するデータに関する前記データ格納部の利用状況、および前記伝送経路の少なくとも一部が共通するデータに関する隣接中継装置におけるデータ格納部の利用状況の比較結果に基づいて、前記データを出力するか否かを決定するステップと、
を実行させる、中継装置のためのシミュレーションプログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201280003420.4A CN103181127B (zh) | 2011-03-09 | 2012-01-30 | 中继装置、中继装置的控制方法及程序 |
JP2012518659A JP5036920B1 (ja) | 2011-03-09 | 2012-01-30 | 中継装置、中継装置の制御方法、およびプログラム |
US13/628,142 US9426099B2 (en) | 2011-03-09 | 2012-09-27 | Router, method for controlling router, and program |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011-052077 | 2011-03-09 | ||
JP2011052077 | 2011-03-09 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/628,142 Continuation US9426099B2 (en) | 2011-03-09 | 2012-09-27 | Router, method for controlling router, and program |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2012120769A1 true WO2012120769A1 (ja) | 2012-09-13 |
Family
ID=46797749
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2012/000574 WO2012120769A1 (ja) | 2011-03-09 | 2012-01-30 | 中継装置、中継装置の制御方法、およびプログラム |
Country Status (4)
Country | Link |
---|---|
US (1) | US9426099B2 (ja) |
JP (1) | JP5036920B1 (ja) |
CN (1) | CN103181127B (ja) |
WO (1) | WO2012120769A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016503594A (ja) * | 2012-10-09 | 2016-02-04 | ネットスピード システムズ | インターコネクトにおける不均一なチャネル容量 |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8787379B2 (en) * | 2011-02-02 | 2014-07-22 | Futurewei Technologies, Inc. | Destination-based virtual channel assignment in on-chip ring networks |
WO2013054497A1 (ja) * | 2011-10-14 | 2013-04-18 | パナソニック株式会社 | 中継器、中継器の制御方法、およびコンピュータプログラム |
WO2014128802A1 (ja) | 2013-02-19 | 2014-08-28 | パナソニック株式会社 | インタフェース装置およびバスシステム |
US9106391B2 (en) * | 2013-05-28 | 2015-08-11 | International Business Machines Corporation | Elastic auto-parallelization for stream processing applications based on a measured throughput and congestion |
US10027433B2 (en) * | 2013-06-19 | 2018-07-17 | Netspeed Systems | Multiple clock domains in NoC |
US9781043B2 (en) * | 2013-07-15 | 2017-10-03 | Netspeed Systems | Identification of internal dependencies within system components for evaluating potential protocol level deadlocks |
US9473388B2 (en) | 2013-08-07 | 2016-10-18 | Netspeed Systems | Supporting multicast in NOC interconnect |
US9699079B2 (en) | 2013-12-30 | 2017-07-04 | Netspeed Systems | Streaming bridge design with host interfaces and network on chip (NoC) layers |
US9742630B2 (en) | 2014-09-22 | 2017-08-22 | Netspeed Systems | Configurable router for a network on chip (NoC) |
JP6421626B2 (ja) * | 2015-02-02 | 2018-11-14 | 富士通株式会社 | データ転送制御方法、データ転送制御プログラムおよびデータ転送制御装置 |
US9660942B2 (en) * | 2015-02-03 | 2017-05-23 | Netspeed Systems | Automatic buffer sizing for optimal network-on-chip design |
US10348563B2 (en) | 2015-02-18 | 2019-07-09 | Netspeed Systems, Inc. | System-on-chip (SoC) optimization through transformation and generation of a network-on-chip (NoC) topology |
US10218580B2 (en) | 2015-06-18 | 2019-02-26 | Netspeed Systems | Generating physically aware network-on-chip design from a physical system-on-chip specification |
US10452124B2 (en) | 2016-09-12 | 2019-10-22 | Netspeed Systems, Inc. | Systems and methods for facilitating low power on a network-on-chip |
US20180159786A1 (en) | 2016-12-02 | 2018-06-07 | Netspeed Systems, Inc. | Interface virtualization and fast path for network on chip |
US10063496B2 (en) | 2017-01-10 | 2018-08-28 | Netspeed Systems Inc. | Buffer sizing of a NoC through machine learning |
US10469337B2 (en) | 2017-02-01 | 2019-11-05 | Netspeed Systems, Inc. | Cost management against requirements for the generation of a NoC |
US10298485B2 (en) | 2017-02-06 | 2019-05-21 | Netspeed Systems, Inc. | Systems and methods for NoC construction |
CN110710172A (zh) | 2017-03-29 | 2020-01-17 | 芬基波尔有限责任公司 | 在接入节点组内多路复用分组喷射的无阻塞的任意到任意数据中心网络 |
CN110710139A (zh) | 2017-03-29 | 2020-01-17 | 芬基波尔有限责任公司 | 具有光置换器的无阻塞全网状数据中心网络 |
CN110731070A (zh) | 2017-03-29 | 2020-01-24 | 芬基波尔有限责任公司 | 通过多个交替数据路径进行分组喷射的无阻塞的任意到任意数据中心网络 |
US10565112B2 (en) | 2017-04-10 | 2020-02-18 | Fungible, Inc. | Relay consistent memory management in a multiple processor system |
CN117348976A (zh) | 2017-07-10 | 2024-01-05 | 微软技术许可有限责任公司 | 用于流处理的数据处理单元 |
US10659254B2 (en) | 2017-07-10 | 2020-05-19 | Fungible, Inc. | Access node integrated circuit for data centers which includes a networking unit, a plurality of host units, processing clusters, a data network fabric, and a control network fabric |
WO2019068017A1 (en) | 2017-09-29 | 2019-04-04 | Fungible, Inc. | RESILIENT NETWORK COMMUNICATION USING SELECTIVE PULVER FLOW SPRAY BY MULTIPATH PATH |
US10904367B2 (en) | 2017-09-29 | 2021-01-26 | Fungible, Inc. | Network access node virtual fabrics configured dynamically over an underlay network |
US10841245B2 (en) | 2017-11-21 | 2020-11-17 | Fungible, Inc. | Work unit stack data structures in multiple core processor system for stream data processing |
US10540288B2 (en) | 2018-02-02 | 2020-01-21 | Fungible, Inc. | Efficient work unit processing in a multicore system |
US10983910B2 (en) | 2018-02-22 | 2021-04-20 | Netspeed Systems, Inc. | Bandwidth weighting mechanism based network-on-chip (NoC) configuration |
US10896476B2 (en) | 2018-02-22 | 2021-01-19 | Netspeed Systems, Inc. | Repository of integration description of hardware intellectual property for NoC construction and SoC integration |
US10547514B2 (en) | 2018-02-22 | 2020-01-28 | Netspeed Systems, Inc. | Automatic crossbar generation and router connections for network-on-chip (NOC) topology generation |
US11144457B2 (en) | 2018-02-22 | 2021-10-12 | Netspeed Systems, Inc. | Enhanced page locality in network-on-chip (NoC) architectures |
US11176302B2 (en) | 2018-02-23 | 2021-11-16 | Netspeed Systems, Inc. | System on chip (SoC) builder |
US11023377B2 (en) | 2018-02-23 | 2021-06-01 | Netspeed Systems, Inc. | Application mapping on hardened network-on-chip (NoC) of field-programmable gate array (FPGA) |
US10820057B2 (en) | 2018-11-07 | 2020-10-27 | Nvidia Corp. | Scalable light-weight protocols for wire-speed packet ordering |
US10929175B2 (en) | 2018-11-21 | 2021-02-23 | Fungible, Inc. | Service chaining hardware accelerators within a data stream processing integrated circuit |
US11108704B2 (en) | 2018-12-04 | 2021-08-31 | Nvidia Corp. | Use of stashing buffers to improve the efficiency of crossbar switches |
US11455268B2 (en) * | 2020-02-13 | 2022-09-27 | Arm Limited | Method, system and device for electronic interconnect delay bound determination |
US11469988B1 (en) | 2021-04-30 | 2022-10-11 | Bank Of America Corporation | Communication analysis for dynamic auto-routing and load balancing |
US11784930B2 (en) | 2021-04-30 | 2023-10-10 | Bank Of America Corporation | Communication system with auto-routing and load balancing |
US11792108B2 (en) | 2021-04-30 | 2023-10-17 | Bank Of America Corporation | Dynamic auto-routing and load balancing for communication systems |
US11770215B2 (en) | 2022-02-17 | 2023-09-26 | Nvidia Corp. | Transceiver system with end-to-end reliability and ordering protocols |
CN116782334A (zh) * | 2022-03-07 | 2023-09-19 | 华为技术有限公司 | 通信方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04168835A (ja) * | 1990-11-01 | 1992-06-17 | Oki Electric Ind Co Ltd | Atm交換機のルーティング方式及びatm交換網のルーティング方式 |
JPH05235988A (ja) * | 1992-02-21 | 1993-09-10 | Matsushita Electric Ind Co Ltd | 多段構成セルスイッチ |
JP2004078713A (ja) * | 2002-08-21 | 2004-03-11 | Nec Computertechno Ltd | クロスバスイッチの調停制御方法及びクロスバスイッチの調停制御方式 |
JP2007115252A (ja) * | 2005-10-17 | 2007-05-10 | Samsung Electronics Co Ltd | AXIが適用されたNoCルータとNI、NoCシステム、及びそのインターリーブ方法 |
US20080084893A1 (en) * | 2006-10-10 | 2008-04-10 | Samsung Electronics Co., Ltd. | Network-on-chip apparatus, and method for controlling dynamic frequency for the same |
JP2010050903A (ja) * | 2008-08-25 | 2010-03-04 | Fujitsu Ltd | 伝送装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6674720B1 (en) | 1999-09-29 | 2004-01-06 | Silicon Graphics, Inc. | Age-based network arbitration system and method |
US7372814B1 (en) * | 2003-02-27 | 2008-05-13 | Alcatel-Lucent | Network system with color-aware upstream switch transmission rate control in response to downstream switch traffic buffering |
CN101438541B (zh) * | 2006-09-20 | 2011-12-07 | 松下电器产业株式会社 | 中继传输设备以及中继传输方法 |
JP2008294586A (ja) | 2007-05-22 | 2008-12-04 | Research Organization Of Information & Systems | ルータおよび並列分散システム |
US8223650B2 (en) * | 2008-04-02 | 2012-07-17 | Intel Corporation | Express virtual channels in a packet switched on-chip interconnection network |
-
2012
- 2012-01-30 WO PCT/JP2012/000574 patent/WO2012120769A1/ja active Application Filing
- 2012-01-30 CN CN201280003420.4A patent/CN103181127B/zh active Active
- 2012-01-30 JP JP2012518659A patent/JP5036920B1/ja active Active
- 2012-09-27 US US13/628,142 patent/US9426099B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04168835A (ja) * | 1990-11-01 | 1992-06-17 | Oki Electric Ind Co Ltd | Atm交換機のルーティング方式及びatm交換網のルーティング方式 |
JPH05235988A (ja) * | 1992-02-21 | 1993-09-10 | Matsushita Electric Ind Co Ltd | 多段構成セルスイッチ |
JP2004078713A (ja) * | 2002-08-21 | 2004-03-11 | Nec Computertechno Ltd | クロスバスイッチの調停制御方法及びクロスバスイッチの調停制御方式 |
JP2007115252A (ja) * | 2005-10-17 | 2007-05-10 | Samsung Electronics Co Ltd | AXIが適用されたNoCルータとNI、NoCシステム、及びそのインターリーブ方法 |
US20080084893A1 (en) * | 2006-10-10 | 2008-04-10 | Samsung Electronics Co., Ltd. | Network-on-chip apparatus, and method for controlling dynamic frequency for the same |
JP2010050903A (ja) * | 2008-08-25 | 2010-03-04 | Fujitsu Ltd | 伝送装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016503594A (ja) * | 2012-10-09 | 2016-02-04 | ネットスピード システムズ | インターコネクトにおける不均一なチャネル容量 |
Also Published As
Publication number | Publication date |
---|---|
CN103181127A (zh) | 2013-06-26 |
CN103181127B (zh) | 2016-05-25 |
JP5036920B1 (ja) | 2012-09-26 |
US9426099B2 (en) | 2016-08-23 |
JPWO2012120769A1 (ja) | 2014-07-07 |
US20130028083A1 (en) | 2013-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5036920B1 (ja) | 中継装置、中継装置の制御方法、およびプログラム | |
JP5603481B2 (ja) | 中継装置 | |
JP5320512B2 (ja) | 中継器、中継器の制御方法、およびプログラム | |
JP4880802B1 (ja) | 中継装置 | |
JP5335892B2 (ja) | パケット交換オンチップ相互接続ネットワークの高速仮想チャネル | |
US10735335B2 (en) | Interface virtualization and fast path for network on chip | |
JP2008536391A (ja) | 待ち時間の削減のためのネットワークオンチップ環境及び方法 | |
JP5552196B2 (ja) | 中継装置、中継装置の制御方法、およびコンピュータプログラム | |
US9606945B2 (en) | Access controller, router, access controlling method, and computer program | |
JP2008234659A (ja) | 通信チャネルを介して送られるメッセージ間の調停を行うデータ処理装置および方法 | |
US10983910B2 (en) | Bandwidth weighting mechanism based network-on-chip (NoC) configuration | |
JP5834178B2 (ja) | 半導体回路のバスシステム | |
US11256634B2 (en) | System and method for serial interface memory using switched architecture | |
CN101527686A (zh) | 一种数据交换方法和设备 | |
US10289598B2 (en) | Non-blocking network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
ENP | Entry into the national phase |
Ref document number: 2012518659 Country of ref document: JP Kind code of ref document: A |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 12755418 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 12755418 Country of ref document: EP Kind code of ref document: A1 |