WO2010052753A1 - 制御装置、データ転送装置、情報処理装置、演算処理装置および情報処理装置の制御方法 - Google Patents

制御装置、データ転送装置、情報処理装置、演算処理装置および情報処理装置の制御方法 Download PDF

Info

Publication number
WO2010052753A1
WO2010052753A1 PCT/JP2008/003216 JP2008003216W WO2010052753A1 WO 2010052753 A1 WO2010052753 A1 WO 2010052753A1 JP 2008003216 W JP2008003216 W JP 2008003216W WO 2010052753 A1 WO2010052753 A1 WO 2010052753A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
unit
output
packet
data packet
Prior art date
Application number
PCT/JP2008/003216
Other languages
English (en)
French (fr)
Inventor
北原義博
Original Assignee
富士通株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 富士通株式会社 filed Critical 富士通株式会社
Priority to EP08877949.1A priority Critical patent/EP2357571A4/en
Priority to PCT/JP2008/003216 priority patent/WO2010052753A1/ja
Priority to JP2010536593A priority patent/JP5212478B2/ja
Publication of WO2010052753A1 publication Critical patent/WO2010052753A1/ja
Priority to US13/097,500 priority patent/US8375152B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17337Direct connection machines, e.g. completely connected computers, point to point communication networks

Definitions

  • the present invention relates to information processing technology using a plurality of arithmetic processing devices.
  • a multi-CPU Central Processing Unit
  • NUMA Non-Uniform Memory Access
  • Each node in the NUMA computer system may be the same.
  • Each node is coupled between a processing unit coupled to the local interconnect and a node interconnect switch.
  • the node controller transmits the received selection command on the local interconnect by transmitting the selection command received on the local interconnect to other nodes via the node interconnect switch, Acts as a local agent for the node.
  • An object of the present invention is to reduce the capacity required for storing data by paying attention to the case where a plurality of data having the same data body is output.
  • a control device that controls data transfer between the arithmetic processing device and the data transfer device, and includes a storage unit, a determination unit, a management unit, and a control unit.
  • the storage means stores the first data output from the arithmetic processing unit.
  • the determination unit compares the control information of the first data with the control information of the second data received from the arithmetic processing device after the first data, thereby comparing the first data with the first data. It is determined whether or not the second data is the first case having the same data body.
  • the management means stores a part of the control information of the second data as duplicate information associated with the first data.
  • the management unit causes the storage unit to store the second data.
  • the control unit controls output of data stored in the storage unit to the data transfer apparatus.
  • a data transfer device that is connected to a plurality of devices including a first device and a second device, and that transfers data between the plurality of devices.
  • the data transfer apparatus includes a transmission unit, a storage unit, a determination unit, a management unit, and a control unit.
  • the transmission means transmits data output from one of the plurality of devices to another one of the plurality of devices.
  • the storage unit stores the first data received from the first device and transmitted to the second device before being output to the second device.
  • the determination unit receives control information of second data to be transmitted to the second device, which is received from the first device and transmitted by the transmission unit after the first data, of the first data. Compare with control information. Based on the comparison, the determination unit determines whether the first data and the second data are the first case having the same data body.
  • the management means stores a part of the control information of the second data as duplicate information associated with the first data.
  • the management unit causes the storage unit to store the second data.
  • the control means controls output of data stored in the storage means to the second device.
  • an information processing apparatus including a plurality of control devices and a data transfer device that transfers data between the plurality of control devices.
  • the plurality of control devices include a first control device similar to the first aspect further including the following generation unit.
  • the generation unit generates third data from the first data stored by the storage unit and the copy information stored by the management unit in the first case described with respect to the first mode.
  • control means of the first control device controls to output the third data generated by the generation means to the data transfer device in the first case.
  • the control means of the first control device controls to output both the first data and the second data stored in the storage device to the data transfer device in the second case. .
  • the data transfer device is the first case or the second case described in relation to the first aspect based on the control information of the data received from the first control device.
  • the data transfer device further includes a restoring means for restoring the first data and the second data from the third data in the first case. Then, the data transfer device transmits the third data, or transmits the first data and the second data restored by the restoration means, based on the judgment by the second judgment means Transmitting means.
  • an arithmetic processing device including a storage unit, an arithmetic processing unit, a storage unit, a determination unit, a management unit, a generation unit, and a control unit.
  • the storage means, the determination means, the management means, and the control means in the fourth aspect are similar to those of the control device in the first aspect.
  • the generation means in the fourth aspect is similar to that of the control device in the third aspect.
  • a method for controlling the information processing apparatus according to the third aspect is provided. Therefore, according to the disclosed technology, it is not necessary to store the second data in the first case in any aspect, and thus it is possible to reduce the storage capacity required for the storage unit.
  • a write-back operation is performed to write back data stored in the cache memory to the main storage device.
  • the following technologies are disclosed as techniques for improving system performance when a write-back operation is performed.
  • the host bridge includes an address holding circuit that holds a read access address to the main memory, and an address hit determination circuit that detects a match between the address held in the address holding circuit and the line address in the write back operation by the CPU.
  • the host bridge includes a memory access control circuit that takes in write data in the write back operation and cancels access to the main memory when both addresses match.
  • the following technology in a computer system in which a CPU local bus and an IO (Input / Output) bus are connected by a bus bridge is also disclosed. That is, when there is a read request that is an access operation to the main storage device via the IO bus from the bus master device connected to the IO bus, the cache checking unit notifies that a write back to the cache is necessary The main memory access operation is speeded up as follows.
  • the write-back control unit transfers the write-back data to the data bypass unit simultaneously with writing back the write-back data to the main storage device via the main memory control unit. Then, the target data corresponding to the read request address is directly taken into the IO bus control unit via the data bypass unit and transferred from the IO bus to the bus master device. Thus, there is no need to wait for the end of the write-back processing for the main storage device and perform the data read processing from the main storage device.
  • FIG. 1 is a configuration diagram illustrating an example of a system including a plurality of CPUs.
  • a server system 100 that is an information processing apparatus includes a plurality of nodes 101a, 101c, 101e, and 101g, and a crossbar switch (hereinafter abbreviated as “XB”) 102 that is a data transfer apparatus.
  • the plurality of nodes 101a, 101c, 101e, and 101g are connected to each other via the XB102.
  • a configuration in which nodes are expanded like the server system 100 of FIG. 1 is suitable for a server system.
  • the node 101a includes a system controller (hereinafter abbreviated as “SC”) 103a connected to the XB 102 via a bus 108a.
  • the node 101a further includes a CPU 104a, a CPU 104b, a main memory 105a, a directory 106a, and an IOC (Input / Output Component) 107a connected to the SC 103a via an internal bus.
  • Each unit in the node 101a may be mounted on, for example, a single motherboard called a system board.
  • the other nodes 101c, 101e, and 101g are configured similarly to the node 101a.
  • the components in the server system 100 will be described in detail as follows.
  • the XB 102 is a switching mechanism that performs data transmission between the SCs 103a to 103g. As will be described later, data exchange between components in the server system 100 is performed by packet transmission.
  • the XB 102 is an example of a data transfer apparatus that performs packet routing between the nodes 101a to 101g.
  • the SC 103a is a control device that controls data transmission between components in the node 101a and controls data transmission between each component in the node 101a and the other SCs 103c to 103g.
  • the SC 103a also controls the reference and update of the directory 106a.
  • the SCs 103a to 103g are the same as the SC 103a.
  • Each of the CPUs 104a to 104h executes calculation, control, and the like, and includes a cache memory (not shown).
  • the cache memory may be hierarchized.
  • the main memory 105a is, for example, a RAM (Random Access Memory). Access to the main memory 105a is performed from components in the same node 101a, and is also performed from components in other nodes 101c to 101g. Similarly to the main memory 105a, the main memories 105c to 105g are RAMs that can be accessed from components in any node.
  • the directory 106a stores in which CPU cache data the data stored in the main memory 105a in the same node 101a is cached in a table format, for example. That is, the SC 103a that references and updates the directory 106a not only controls data transmission, but also manages cache consistency, which is data consistency between the main memory 105a and the cache memory in the CPU. Similarly to the directory 106a, the directories 106c to 106g manage data stored in the main memories 105c to 105g in the same node.
  • the IOC 107a is a chipset component that connects various I / O devices such as a PCI (Peripheral Component) Interconnect (not shown) and a system bus between the IOC 107a and the SC 103a.
  • the IOCs 107c to 107g are the same as the IOC 107a.
  • Packets are sent for data requests, data notifications, responses to data requests, data transfers, and the like.
  • the packet has at least a packet header, and further has a data payload depending on the type (type) of the packet.
  • the packet may further include a trailer for error detection.
  • the packet header includes the following fields (a1) to (a3).
  • A1 A destination ID (identifier) for identifying the destination component of the packet.
  • (A2) Request source ID for identifying the request source component of the packet For example, the request source ID of the request packet transmitted when the CPU 104a requests something from another component is the ID of the CPU 104a.
  • the request source ID of the packet transmitted to the CPU 104a as a response to the request packet from the CPU 104a is also the ID of the CPU 104a.
  • a request ID (hereinafter abbreviated as “ReqID”) for identifying a plurality of different requests (requests) from one request source.
  • ReqID request ID
  • the cache memory included in each of the CPUs 104a to 104h is a write-back type cache memory. Then, when the data read from any of the main memories 105a to 105g and stored in the cache memory is rewritten, a write back operation is necessary.
  • the specific timing at which the write-back operation is performed varies depending on the cache protocol for maintaining the cache consistency.
  • the cache protocol is called “MESI protocol”, “MOSI protocol”, “MOESI protocol”, etc. using the initials of the state of the cache line.
  • the states include the following (b1) to (b5).
  • the M (Modified) state is a state in which the cache line is stored only in the cache memory of one CPU, and at least a part of the data in the cache line is rewritten after being stored in the cache memory. It is. That is, the M-state cache line is dirty.
  • the E (Exclusive) state is a state in which the cache line is stored only in the cache memory of one CPU and is not rewritten after the cache line is stored in the cache memory. That is, the E-state cache line is clean.
  • the S (Shared) state is a state in which the same cache line is also stored in the cache memory of another CPU.
  • the I (Invalid) state is a state in which the cache line is invalidated.
  • the O (Owned) state is a state having a responsibility to write back to the main memory.
  • the O-state cache line is dirty, and the same cache line is also stored in the cache memory of another CPU.
  • the state to be used and the way of transition between states are different, and the way of write back is also different. Then, it is determined which cache protocol is adopted according to the specifications of the CPU.
  • the operation of the CPU 104c when a shared / data transfer request arrives for the dirty cache line data held in the M state by the CPU 104c depends on the specifications of the CPU and the cache protocol.
  • the three types of operations (c3) can be taken.
  • the CPU 104c outputs only the write-back data packet. Transmission of the shared / transfer data packet to the requester that requested the data is performed by the SC that receives the write-back data packet and writes back the data to the main memory. In the CPU 104c, the cache line requested by the shared / data transfer request transits to the I or S state according to the cache protocol.
  • the CPU 104c outputs only the shared / forwarded data packet destined for the request source that requested the data.
  • the cache line requested by the shared / data transfer request transits to the O state. For example, in the MOESI protocol, the operation (c2) is performed, and the write back is not performed immediately.
  • the CPU 104c outputs both the write-back data packet and the shared / transfer data packet.
  • the cache line requested by the shared / data transfer request transits to the I or S state according to the cache protocol.
  • (D1) There is a “memory access request packet” used when the CPU requests data stored in any of the main memories in the server system 100. Depending on the cache protocol, there are types of memory access request packets such as exclusive type and shared type.
  • D2 There is a “data transfer request packet” that is used to request data transfer to a request source that has requested memory access when a certain CPU caches target data for which memory access is requested. .
  • a data transfer request packet For example, as in the example of FIG. 4 described later, an SC other than the request source outputs a data transfer request packet.
  • data transfer request packets such as an exclusive type and a shared type.
  • a shared data transfer request packet is a packet for requesting transfer of data cached in a cache memory in a certain CPU to another CPU.
  • (D4) There is a “transfer data packet” used to transfer the requested data to the requester that requested the data.
  • transfer data packets such as exclusive, shared, and shared with write-back responsibility.
  • FIG. 2 is a diagram illustrating an operation example of the server system 100 according to the first cache protocol.
  • step S101 the CPU 104a outputs a shared memory access request packet destined for the SC 103e in order to request the data stored in the main memory 105e.
  • ReqID for identifying the shared memory access request packet output in step S101 is 5.
  • the shared memory access request packet output by the CPU 104a is transmitted to the SC 103e in the same node 101e as the main memory 105e via the SC 103a and the XB 102.
  • step S102 the SC 103e that has received the shared / memory access request packet refers to the directory 106e, and searches for the CPU that holds the cache line including the requested data in the cache memory.
  • step S103 the SC 103e outputs a shared data transfer request packet destined for the CPU 104c.
  • the shared / data transfer request packet output by the SC 103e is transmitted to the CPU 104c via the XB 102 and the SC 103c.
  • the requested data is data in a dirty cache line held in the M state by the CPU 104c. Therefore, in step S104, the CPU 104c outputs a write-back data packet destined for the SC 103e in the same node 101e as the main memory 105e in order to write back the data in the M-state cache line to the main memory 105e.
  • the output write-back data packet is transmitted to the SC 103e via the SC 103c and the XB 102.
  • the CPU 104c updates the state of the cache line including the requested data to the I or S state according to the cache protocol.
  • step S105 the SC 103e that has received the write-back data packet outputs a shared-type transfer data packet destined for the CPU 104a that has requested the data in step S101.
  • the data payload of the shared / transfer data packet is copied from the data payload of the write-back data packet by the SC 103e.
  • the shared / transfer data packet is transmitted to the CPU 104a via the XB 102 and the SC 103a.
  • the SC 103e writes back the cache line data held in the M state by the CPU 104c to the main memory 105e based on the received write back data packet.
  • FIG. 3 is a diagram illustrating an operation example of the server system 100 according to the second cache protocol.
  • Steps S201 and S202 in FIG. 3 are the same as steps S101 and S102 in FIG.
  • Step S203 is also substantially the same as step S103 in FIG. 2, but differs from step S103 in the following points. That is, as described in (c2) above, the CPU 104c changes the state of the cache line including the requested data to the O state.
  • the CPU 104c outputs a shared / transfer data packet destined for the CPU 104a, which is the request source that requested the data.
  • the output shared / transfer data packet is transmitted from the CPU 104c to the CPU 104a via the SC 103c, XB 102, and SC 103a.
  • the write back is performed later in the example of FIG. Specifically, when a replacement (refill) that drives out the cache line changed to the O state in step S203 occurs later, the CPU 104c outputs a write-back data packet and performs a write-back to the main memory 105e.
  • FIG. 4 is a diagram illustrating an operation example of the server system 100 according to the third cache protocol.
  • Steps S301 to S304 in FIG. 4 are the same as steps S101 to S104 in FIG.
  • the CPU 104 c in step S ⁇ b> 305 following step S ⁇ b> 304 for outputting a write-back data packet, the CPU 104 c outputs a shared-type transfer data packet destined for the CPU 104 a that requested the data in step S ⁇ b> 301.
  • the shared / transfer data packet is transmitted via the SC 103c, XB 102, and SC 103a and received by the CPU 104a.
  • steps S304 and S305 is arbitrary, and both may be executed in parallel.
  • the CPU 104c updates the state of the cache line including the requested data to the I or S state according to the cache protocol.
  • step S306 the SC 103e writes back the cache line data held in the M state by the CPU 104c to the main memory 105e based on the received write back data packet, as in step S106 of FIG.
  • each of the XB 102 and the SCs 103a to 103g control data transmission between components in the server system 100, and specifically perform packet routing. Therefore, each of the XB 102 and the SCs 103a to 103g includes an input port that receives a packet, a switching mechanism that routes the input packet, and an output port that outputs the packet to a routing destination component. Further, in order to avoid packet overflow in the routing destination component, each SC 103a to 103g has a buffer before the output port to the XB 102, and the XB 102 has a buffer before the output port to each SC 103a to 103g.
  • the SC 103a temporarily stores the packet to be output to the XB 102 in the buffer, and when the output permission is obtained from the XB 102, outputs the packet in the buffer from the output port to the XB 102. Therefore, the required buffer capacity varies depending on how many packets at most can stay in the buffer.
  • the maximum outstanding number which is the maximum number of packets that can be issued without waiting for a response, is set as P.
  • the buffer capacity is described as follows.
  • step S103 the SC 103c outputs one shared data transfer request packet to the CPU 104c. That is, the SC 103c routes the shared / data transfer request packet received from the XB 102 to the CPU 104c.
  • the SC 103c needs to include a buffer having a capacity capable of storing at least P write-back data packets.
  • the SC 103c when the SC 103c outputs one shared type / data transfer request packet to the CPU 104c in step S203, the CPU 104c outputs one shared type / transfer data packet in step S204. Therefore, the SC 103c needs to include a buffer having a capacity capable of storing at least P shared-type transfer data packets.
  • both the write-back data packet and the data payload of the shared / transfer data packet may be data of one requested cache line. Therefore, the required buffer capacity is the same in the examples of FIGS.
  • step S303 when the SC 103c outputs one shared type / data transfer request packet to the CPU 104c in Step S303, the CPU 104c outputs one write-back data packet to the SC 103c in Step S304.
  • step S305 which is performed almost simultaneously with step S304, the CPU 104c outputs one shared / transfer data packet to the SC 103c.
  • the SC 103c needs to include a buffer having a capacity capable of storing at least P write-back data packets and P shared / transfer data packets. That is, the number of data packets output from the CPU 104c to the SC 103c in response to one shared type / data transfer request packet is only one in the examples of FIGS. 2 and 3, whereas the example of FIG. Since there are two, the required buffer capacity is large in the example of FIG.
  • the capacity of the buffer provided in the SC 103c depends on other factors such as the maximum number of outstanding packets received from the IOC 107c.
  • the buffer capacity required in the example of FIG. 4 is larger than the examples of FIGS. 2 and 3 if the various maximum outstanding numbers defined by the specifications are the same. It is.
  • the capacity of the buffer required for the XB 102 is larger in the example of FIG. 4 than in the examples of FIGS.
  • the comparative example described in FIGS. 5 to 13 shows an operation in which the CPU shown in FIG. 4 outputs both the write-back data packet and the shared / transfer data packet in the server system 100 of FIG. 1 described above. This is an example of performing.
  • FIG. 5 is a configuration diagram of the comparative example of the XB 102 shown in FIG.
  • the XB 102 is connected to the SCs 103a to 103g by buses 108a to 108g, and performs data transmission between the SCs 103a to 103g.
  • each of the buses 108a to 108g represented by one arrow pointing in both directions is represented by two arrows in FIG.
  • the XB 102 includes an input port 201a that receives a packet output from the SC 103a and an output port 202a that outputs the packet to the SC 103a.
  • the XB 102 includes input ports 201c, 201e, and 201g, and output ports 202c, 202e, and 202g.
  • each of the input ports 201a to 201g and each of the output ports 202a to 202g is a frequency called “frequency change”. The conversion is also performed.
  • the XB 102 further includes a routing unit 203 and four routing table units 204a to 204g corresponding to the four input ports 201a to 201g.
  • the routing unit 203 is connected to the input ports 201a to 201g and receives packets from the input ports 201a to 201g. Further, the routing table sections 204a to 204g have a table (table 305 in FIG. 6 described later) for determining which output port 202a to 202g the packet received by the input ports 201a to 201g is distributed to.
  • the routing unit 203 distributes the packets received from the input ports 201a to 201g according to the determination of the routing table units 204a to 204g. Details of packet distribution will be described later with reference to FIG.
  • the XB 102 has four sets of circuits corresponding to the four output ports 202a to 202g.
  • a circuit provided in front of the output port 202a corresponding to the output port 202a includes an inter-port arbiter unit 205a, an inter-port selector 206a, and three output buffer control units 207ca, 207ea, and 207ga.
  • Each output buffer control unit 207ca, 207ea, 207ga is connected to the routing unit 203, the interport arbiter unit 205a, and the interport selector 206a.
  • the inter-port selector 206a is connected to the inter-port arbiter unit 205a and the output port 202a.
  • the output buffer control unit 207ca corresponds to transmission from the SC 103c to the SC 103a (that is, transmission from the input port 201c to the output port 202a) as indicated by the subscript “ca”.
  • the output buffer control units 207ea and 207ga correspond to transmission from the SC 103e to the SC 103a and transmission from the SC 103g to the SC 103a, respectively.
  • the three output buffer control units 207ca, 207ea, and 207ga have buffers that store packets to be output to the SC 103a via the output port 202a.
  • the capacity required for the buffer is larger in the example of FIG. 4 than in the examples of FIGS. 2 and 3, but the buffer is specifically the 12 output buffers shown in FIG. It is included in the control unit.
  • the output buffer control unit 207ca issues an output request to the inter-port arbiter unit 205a.
  • the “output request” is a request for requesting that the packet input to the output buffer control unit 207 ca be output to the output port 202 a via the inter-port selector 206 a.
  • the output buffer control unit 207ea issues an output request to the inter-port arbiter unit 205a. To do.
  • the output buffer control unit 207ga issues an output request to the inter-port arbiter unit 205a when a packet is input.
  • the inter-port arbiter unit 205a arbitrates a plurality of output requests issued from the output buffer control units 207ca, 207ea, and 207ga. That is, “between ports” of the interport arbiter unit 205a represents arbitration between the input ports 201c, 201e, and 201g to which a packet whose output destination is the output port 202a is input.
  • the inter-port arbiter unit 205a may perform arbitration using an LRU (Least Recently Used) algorithm, a round robin algorithm, or a FIFO (First In First Out) algorithm.
  • LRU Local Recently Used
  • a round robin algorithm a round robin algorithm
  • a FIFO First In First Out
  • the inter-port arbiter unit 205a selects one output buffer control unit. For example, it is assumed that the output buffer control unit 207ca is selected as a result of the arbitration. Then, the inter-port arbiter unit 205a notifies the output buffer control unit 207ca of output permission, and notifies the inter-port selector 206a that the output buffer control unit 207ca has been selected. The inter-port selector 206a receives a packet from the buffer in the selected output buffer control unit 207ca according to the selection result notified from the inter-port arbiter unit 205a, and outputs the packet to the output port 202a.
  • the buffers in the output buffer control units 207ca, 207ea, and 207ga temporarily store packets until output permission is notified from the inter-port arbiter unit 205a (that is, while waiting for routing to the SC 103a). It is an area for saving.
  • FIG. 6 is a configuration diagram showing details extracted from a part of XB102.
  • FIG. 6 illustrates an input port 201c, a part of the routing unit 203, a routing table unit 204c, and three output buffer control units 207ca, 207ce, and 207cg.
  • a packet input from the input port 201c is output to one of the three output buffer control units 207ca, 207ce, and 207cg via the routing unit 203.
  • routing table units 204a, 204e, and 204g in the XB 102 and the other input ports 201a, 201e, and 201g and the routing unit 203 is the same as that in FIG.
  • a signal representing a packet received by the input port 201c from the SC 103c is output to the signal line 301.
  • it is simply expressed as “a packet is output to the signal line 301”.
  • the signal line 301 is branched into a signal line 302 and a signal line 303.
  • the signal line 302 is connected to the routing table unit 204 c, and the signal line 303 is connected to the routing unit 203.
  • What is sent to the routing table unit 204 c via the branched signal line 302 is the destination ID included in the header of the packet output to the signal line 301.
  • the whole packet output to the signal line 301 is sent to the routing unit 203 via the branched signal line 303.
  • the routing table unit 204 c is connected to the routing unit 203 through a signal line 304.
  • a certain signal line (for example, signal line 301) is branched into a plurality of signal lines (for example, signal line 302 and signal line 303) as described above, and is output to each of the plurality of signal lines.
  • a branch point is indicated by a diagonally branched line as shown in FIG.
  • a black circle is used to indicate a branch as in a signal line branch point in FIG. 8 described later.
  • the branches illustrated by the diagonally branched lines can be implemented in various ways including, for example, the following (e1) to (e3).
  • the first and second circuit elements are connected by a signal line (that is, a transmission line having a bit width of A bit) realized by a set of A conductive wires. Further, B wires out of A wires are branched and connected to the third circuit element (A> B).
  • the first to third circuit elements are the input port 201c, the routing unit 203, and the routing table unit 204c, respectively
  • the bit width of the signal line 301 and the signal line 303 is A bit
  • the bit of the signal line 302 The width may be B bits.
  • an A-bit signal is output to a signal line realized by a set of A conductors.
  • the first and fourth circuit elements are connected by a set of A wires.
  • the fourth circuit element is connected to the second circuit element by a set of B wires, and is connected to the third circuit element by a set of C wires (A ⁇ B and A ⁇ C). .
  • the fourth circuit element outputs B bit of the A bit signal input from the first circuit element to the second circuit element, and C bit of the A bit to the third circuit element. Output.
  • the fourth circuit element may delay the B-bit output or delay the C-bit output as necessary.
  • FIG. 6 there may be a fourth circuit element (not shown) at a portion where the signal line 302 and the signal line 303 are branched. Then, the fourth circuit element outputs the destination ID to the routing table unit 204c via the signal line 302 without delaying the input, and outputs the packet to the routing unit 203 via the signal line 303. May be.
  • the branch illustrated by the diagonally branched lines can be implemented in various ways. However, a part or all of the data output to a certain signal line is plural. The function of branching and outputting to the signal line is common to (e1) to (e3). The same applies to three or more branches.
  • the routing table unit 204 c includes a table 305.
  • the routing unit 203 includes a branching unit 306 corresponding to the input port 201c, and further includes three branching units (not shown) corresponding to the other three input ports 201a, 201e, and 201g, respectively.
  • the routing table unit 204 c refers to the table 305, and determines the routing destination of the packet received by the input port 201 c based on the destination ID input via the signal line 302. That is, the routing table unit 204c determines to which of the output ports 202a, 202e, and 202g the packet received by the input port 201c is to be output. Then, the routing table unit 204 c outputs the output port information for identifying the determined output port to the branch unit 306 via the signal line 304 and notifies it.
  • the signal line 303 is specifically connected to the branching unit 306 in the routing unit 203.
  • the branching unit 306 may be a multiplexer, for example.
  • the branching unit 306 receives a packet input via the signal line 303, and switches the output destination of the received packet as follows based on the notified output port information.
  • the branching unit 306 When the output port information indicates the output port 202a, the branching unit 306 outputs the packet to the output buffer control unit 207ca provided in the preceding stage of the output port 202a corresponding to the output port 202a.
  • the branching unit 306 When the output port information indicates the output port 202e, the branching unit 306 outputs the packet to the output buffer control unit 207ce provided in the preceding stage of the output port 202e corresponding to the output port 202e.
  • the branching unit 306 When the output port information indicates the output port 202g, the branching unit 306 outputs the packet to the output buffer control unit 207cg provided in the preceding stage of the output port 202g corresponding to the output port 202g.
  • the routing unit 203 is a switching mechanism for distributing the packets received by the input ports 201a to 201g to the appropriate output ports 202a to 202g.
  • the table 305 is realized by a rewritable storage element.
  • the table 305 is realized by FF (flip-flop).
  • the table 305 stores a destination ID and routing destination output port information in association with each other.
  • the ID for identifying each of the SC 103a, the CPU 104a, the CPU 104b, and the IOC 107a in the node 101a is associated with output port information for identifying the output port 202a connected to the SC 103a of the node 101a.
  • the IDs of the SC 103e, the CPU 104e, the CPU 104f, and the IOC 107e in the node 101e are associated with output port information that identifies the output port 202e.
  • the IDs of the SC 103g, the CPU 104g, the CPU 104h, and the IOC 107g in the node 101g are associated with output port information that identifies the output port 202g.
  • the routing table unit 204c further includes comparators 308a to 308l, OR circuits 309a to 309c that perform an OR operation, and a selector 310.
  • the FFs configuring the table 305 specifically include the 12 sets of FFs 307 a to 307 l for storing the 12 destination IDs described above, and 3 pieces of output port information, respectively. It includes three sets of FFs 311a to 311c for storing. Note that the number of FFs constituting one set of FFs (for example, FF307a and FF311a) is determined in accordance with the number of bits used to represent the destination ID and the output port information.
  • 12 comparators 308a to 308l are provided corresponding to each of the 12 sets of FFs 307a to 307l corresponding to the left column of the table 305 and storing each destination ID.
  • three OR circuits 309a to 309c are provided corresponding to each of the three sets of FFs 311a to 311c corresponding to the right column of the table 305 and storing the output port information of the routing destination.
  • the destination ID input from the signal line 302 to the routing table unit 204c is input to each of the comparators 308a to 308l.
  • the comparator 308a compares the destination ID held by the FF 307a corresponding to the comparator 308a with the input destination ID.
  • the comparator 308a outputs a logical value 1 to the OR circuit 309a if the two destination IDs match, and outputs a logical value 0 to the OR circuit 309a if the two destination IDs do not match.
  • the OR circuit 309a outputs a logical sum of inputs from the comparators 308a to 308d to the selector 310.
  • the OR circuit 309b outputs the logical sum of the inputs from the comparators 308e to 308h to the selector 310
  • the OR circuit 309c outputs the logical sum of the inputs from the comparators 308i to 308l to the selector 310.
  • This 3-bit control signal is a one-hot signal in which only 1 bit has a logical value of 1.
  • the selector 310 selects any of the output port information held by the FFs 311 a to 311 c according to the bit position of the logical value 1 and outputs the selected information to the branch unit 306 via the signal line 304. That is, the selector 310 operates as follows.
  • the selector 310 When the logical value 1 is output from the OR circuit 309a and the logical value 0 is output from the OR circuits 309b and 309c, the selector 310 outputs the output port information held by the FF 311a corresponding to the OR circuit 309a to the branch unit 306. To do.
  • the selector 310 When the logical value 1 is output from the OR circuit 309b and the logical value 0 is output from the OR circuits 309a and 309c, the selector 310 outputs the output port information held by the FF 311b corresponding to the OR circuit 309b to the branching unit 306. To do.
  • the selector 310 When the logical value 1 is output from the OR circuit 309c and the logical value 0 is output from the OR circuits 309a and 309b, the selector 310 outputs the output port information held by the FF 311c corresponding to the OR circuit 309c to the branch unit 306. To do.
  • the packet received by the input port 201c is appropriately sent to one of the output buffer control units 207ca, 207ce, and 207cg according to the destination ID specified in the header. It is distributed to.
  • FIG. 7 is a configuration diagram of the output buffer control unit 207ca, but the other 11 output buffer control units shown in FIG. 5 have the same configuration.
  • the output buffer control unit 207ca includes a control unit 400, a data packet storage unit 410, a request packet storage unit 420, and an inter-packet selector 430. As described with reference to FIG. 5, the output buffer control unit 207ca is connected to the routing unit 203, the interport arbiter unit 205a, and the interport selector 206a.
  • the control unit 400 controls the entire output buffer control unit 207ca, and performs the following operations (f1) to (f4), for example, as will be described in detail later.
  • (F1) Control of packet writing to data packet storage unit 410 and request packet storage unit 420
  • (f2) Control of packet output from data packet storage unit 410 and request packet storage unit 420 to inter-packet selector 430
  • (f3) Arbitration of which packet is output to the inter-packet selector 430 when the packet is stored in both the data packet storage unit 410 and the request packet storage unit 420 (f4)
  • the control unit 400 includes an inter-packet arbiter unit 401 that performs the control (f3).
  • the inter-packet arbiter unit 401 includes an inter-packet arbiter 402, a comparator 403, and a comparator 404. Further, the control unit 400 includes an encoder 405 that outputs a VALID signal corresponding to the packet type. Specifically, the encoder 405 determines a data packet and a request packet and outputs a VALID signal.
  • a “data packet” is a packet having a data payload
  • a “request packet” is a packet having no data payload.
  • the write back data packet (d3) and the transfer data packet (d4) are examples of data packets.
  • the memory access request packet (d1) and the data transfer request packet (d2) are examples of request packets.
  • control unit 400 includes a write pointer control unit 406 and a read pointer control unit 407 for data packets, and includes a write pointer control unit 408 and a read pointer control unit 409 for request packets.
  • Read pointer and “write pointer” are pointers indicating addresses in the data packet storage unit 410 and the request packet storage unit 420.
  • the write pointer represents the address where the next packet is stored
  • the read pointer represents the address where the next packet to be read is stored.
  • the data packet storage unit 410 is a buffer that temporarily stores data packets
  • the request packet storage unit 420 is a buffer that temporarily stores request packets. That is, the “buffer” in the description of each of the above drawings is the data packet storage unit 410 and the request packet storage unit 420.
  • the buffer capacity noted in the above description is a capacity for storing the data payload. Is the capacity of the data packet storage unit 410 required. For example, a RAM is used for the data packet storage unit 410 and the request packet storage unit 420.
  • packet read control and write control in the data packet storage unit 410 and the request packet storage unit 420 are in accordance with the FIFO algorithm. Therefore, as will be described in detail later with reference to FIG. 8, the write pointer control units 406 and 408 can manage the write pointer by a counter using FF (Flip-Flop). Similarly, as will be described in detail later with reference to FIG. 9, the read pointer control units 407 and 409 can also manage the read pointer by a counter using FF.
  • FF Flip-Flop
  • the inter-packet selector 430 selects either the data packet storage unit 410 or the request packet storage unit 420 according to the control of the control unit 400, and outputs the packet to the inter-port selector 206a.
  • the data packet storage unit 410 and the request packet storage unit 420 are defined as shown in the following (g1) to (g4).
  • the capacity required to store one data packet is a maximum of D bytes. That is, the specification determines that a data packet has a fixed length of D bytes or a maximum variable length of D bytes.
  • the address in the data packet storage unit 410 is managed by the block number with the D byte as one block. That is, the value of the write pointer controlled by the write pointer control unit 406 and the value of the read pointer controlled by the read pointer control unit 407 are the block numbers in the data packet storage unit 410.
  • the capacity required to store one request packet is a maximum of R bytes (R ⁇ D). That is, the specification determines that the request packet has a fixed length of R bytes or a maximum variable length of R bytes.
  • the address in the request packet storage unit 420 is managed by the block number, with the R byte as one block. That is, the value of the write pointer controlled by the write pointer control unit 408 and the value of the read pointer controlled by the read pointer control unit 409 are block numbers in the request packet storage unit 420.
  • the configuration of the output buffer control unit 207ca has been described above. Next, an operation from when a packet is output from the routing unit 203 to the output buffer control unit 207ca until the output buffer control unit 207ca outputs the packet to the inter-port selector 206a will be described.
  • the routing unit 203 outputs the packet to the output buffer control unit 207ca via the signal line 441.
  • the signal line 441 branches into a signal line 442 and a signal line 443, and a packet is output to the signal line 442.
  • step S401 the packet type field in the packet header is output to the signal line 443. Then, the encoder 405 to which the signal line 443 is connected determines whether the packet input from the routing unit 203 is a data packet or a request packet based on the value of the packet type field.
  • step S402d The operation when the packet is determined to be a data packet in step S401 is as shown in steps S402d to S406d below.
  • the encoder 405 outputs a VALID signal to the write pointer controller 406 for data packets.
  • the encoder 405 outputs a signal of logical value 1 to the write pointer control unit 406 in step S402d.
  • the encoder 405 outputs a logical value 0 indicating invalidity to the write pointer control unit 408 for request packets.
  • step S403d the write pointer control unit 406 that has received the VALID signal outputs a write instruction and a write pointer value to the data packet storage unit 410, and updates the write pointer value.
  • the write pointer control unit 408 to which the logical value 0 is input does not update the write pointer value and holds the previous write pointer value.
  • the “write instruction” to the data packet storage unit 410 is an instruction to write a packet input via the signal line 442 to an address in the data packet storage unit 410 indicated by the write pointer value.
  • the write instruction is also positive logic. That is, a logical value 1 indicates that the write instruction is asserted, and a logical value 0 indicates that the write instruction is negated.
  • FIG. 8 is a configuration diagram of the write pointer control unit 406.
  • the write pointer control unit 406 includes an FF 451 that stores a write pointer value.
  • the FF 451 is a counter circuit that uses the VALID signal input from the encoder 405 as a count enable signal.
  • the number of bits of the FF 451 depends on the maximum value of the block number of the data packet storage unit 410 described in (g2) above.
  • the write pointer control unit 406 outputs the signal itself input from the encoder 405 to the data packet storage unit 410.
  • the write pointer control unit 406 when a logical value 1 is input as a VALID signal from the encoder 405 in step S402d, the write pointer control unit 406 outputs the input logical value 1 as it is to the data packet storage unit 410 as a write instruction in step S403d. Further, the write pointer control unit 406 outputs the write pointer value held by the FF 451 to the data packet storage unit 410. Thereafter, the write pointer control unit 406 increases the value held by the FF 451 by 1 in accordance with the VALID signal as the count enable signal.
  • the write pointer control unit 406 outputs the logical value 0 as it is to the data packet storage unit 410, and the FF 451 does not perform a count-up operation.
  • the data packet storage unit 410 operates as follows in step S404d. That is, the data packet storage unit 410 stores the data packet input via the signal line 442 in the address indicated by the write pointer value input in step S403d according to the write instruction received in step S403d.
  • step S405d the write pointer control unit 406 outputs the write pointer value updated in step S403d to the comparator 403 in the inter-packet arbiter unit 401. Note that steps S404d and S405d may be performed in parallel at the same time.
  • the read pointer control unit 407 is also connected to the comparator 403, and the read pointer value is input to the comparator 403 when the read pointer held by the read pointer control unit 407 was updated last time. Has been.
  • step S406d the comparator 403 compares the write pointer value input from the write pointer control unit 406 with the read pointer value input from the read pointer control unit 407.
  • the comparator 403 does not output an output request to the inter-packet arbiter 402. In other words, the comparator 403 negates the output request.
  • the comparator 403 outputs (that is, asserts) an output request to the inter-packet arbiter 402.
  • Steps S402d to S406d described above are operations performed when it is determined in step S401 that the packet is a data packet having a data payload. Conversely, the operation when it is determined in step S401 that the packet is a request packet having no data payload is as follows in steps S402r to S406r. Steps S402r to S406r are similar to steps S402d to S406d and will be described briefly.
  • step S401 When it is determined in step S401 that the packet is a request packet, the encoder 405 outputs a VALID signal to the write packet control unit 408 for request packets and a write pointer control unit 406 for data packets as shown in step S402r. Is output a logical value 0 indicating invalidity.
  • step S403r the write pointer control unit 408 that has received the VALID signal outputs a write instruction and a write pointer value to the request packet storage unit 420, and updates the write pointer value.
  • the write pointer control unit 408 is configured similarly to the write pointer control unit 406 in FIG.
  • the request packet storage unit 420 indicates the request packet input via the signal line 442 by the write pointer value input in step S403r in accordance with the write instruction received in step S403r. Save to the street address.
  • step S405r the write pointer control unit 408 outputs the updated write pointer value to the comparator 404.
  • Steps S404r and S405r may be performed in parallel.
  • step S406r the comparator 404 compares the write pointer value input from the write pointer control unit 408 with the read pointer value input from the read pointer control unit 409. When the two match, the comparator 404 does not output an output request to the inter-packet arbiter 402. When the two do not match, the comparator 404 issues an output request to the inter-packet arbiter 402.
  • the inter-packet arbiter 402 When the inter-packet arbiter 402 receives the output request in step S406d or S406r, the inter-packet arbiter 402 outputs the output request to the inter-port arbiter unit 205a in the subsequent step S407.
  • the inter-packet arbiter 402 When output requests are output from both the comparator 403 and the comparator 404, the inter-packet arbiter 402 performs arbitration using the LRU algorithm, the round robin algorithm, or the like. As a result of the arbitration, the inter-packet arbiter 402 determines which output request is first output to the inter-port arbiter unit 205a, and outputs the output request to the inter-port arbiter unit 205a.
  • the inter-port arbiter unit 205a arbitrates output requests from the output buffer control units 207ca, 207ea, and 207ga. As a result of the arbitration, the interport arbiter unit 205a notifies the output buffer control unit 207ca of output permission in step S408.
  • the output buffer control unit 207ca operates as in steps S409d to S412d below.
  • the output buffer control unit 207ca operates as in steps S409r to S412r below.
  • the inter-packet arbiter 402 outputs an output packet type selection signal that instructs to output the data packet to the inter-packet selector 430.
  • the output packet type selection signal is represented by 2 bits, and when the 2 bits are decoded, “10” indicates that a data packet is output, “01” indicates that a request packet is output, “00” indicates that neither type of packet is output, and “11” is not used as don't care.
  • the output packet type selection signal may have another format.
  • step S409d the inter-packet arbiter 402 outputs a read pointer update instruction to the read pointer control unit 407 for data packets.
  • the read pointer update instruction is also positive logic.
  • FIG. 9 is a configuration diagram of the read pointer control unit 407.
  • the read pointer control unit 407 includes an FF 452 that stores a read pointer value.
  • the FF 452 is a counter circuit that uses a read pointer update instruction input from the inter-packet arbiter 402 as a count enable signal.
  • the number of bits of the FF 452 is also required to represent the maximum value of the block number of the data packet storage unit 410 described in (g2) above.
  • the read pointer control unit 407 outputs the signal itself input from the inter-packet arbiter 402 to the data packet storage unit 410.
  • steps S409d to S411d will be described with reference to both FIG. 9 and FIG.
  • the read pointer control unit 407 When a logical value 1 is input as a read pointer update instruction in step S409d, the read pointer control unit 407 outputs the input logical value 1 as it is to the data packet storage unit 410 as a read instruction in step S410d. Further, the read pointer control unit 407 outputs the read pointer value held by the FF 452 to the data packet storage unit 410. Thereafter, the read pointer control unit 407 increments the value held by the FF 452 by 1 in accordance with a read pointer update instruction as a count enable signal.
  • the read pointer control unit 407 outputs the logical value 0 as it is to the data packet storage unit 410, and the FF 452 does not perform a count-up operation.
  • the read pointer control unit 407 When the read pointer value is updated in step S410d, the read pointer control unit 407 outputs the updated read pointer value to the comparator 403 in the inter-packet arbiter unit 401 in subsequent step S411d. Further, in step S412d, the data packet storage unit 410 outputs the data packet stored at the address indicated by the read pointer value input in step S410d to the inter-packet selector 430 in accordance with the read instruction received in step S410d.
  • steps S411d and S412d may be performed in parallel. If the read pointer value has not been updated, the read instruction is not asserted, so step S412d is not performed.
  • Steps S409d to S412d described above are operations performed when an output request from the data packet comparator 403 is selected in step S407. Conversely, the operation when the output request from the request packet comparator 404 is selected in step S407 is as follows in steps S409r to S412r. Steps S409r to S412r are similar to steps S409d to S412d and will be described briefly.
  • step S409r the inter-packet arbiter 402 outputs to the inter-packet selector 430 an output packet type selection signal (“01” in the format illustrated above) instructing to output the request packet.
  • the inter-packet arbiter 402 outputs a read pointer update instruction to the read pointer control unit 409 for request packets.
  • the read pointer control unit 409 is configured similarly to the read pointer control unit 407 of FIG.
  • the read pointer control unit 409 When a logical value 1 is input as a read pointer update instruction in step S409r, the read pointer control unit 409 outputs the input logical value 1 as it is to the request packet storage unit 420 as a read instruction in step S410r. Further, the read pointer control unit 409 outputs the read pointer value to the request packet storage unit 420 and increments the read pointer value by one.
  • the read pointer control unit 409 outputs the logical value 0 to the request packet storage unit 420 as it is and does not update the read pointer.
  • the read pointer control unit 409 When the read pointer value is updated in step S410r, the read pointer control unit 409 outputs the updated read pointer value to the comparator 404 in the inter-packet arbiter unit 401 in the subsequent step S411r. Further, in step S412r, the request packet storage unit 420 outputs the request packet stored at the address indicated by the read pointer value input in step S410r to the inter-packet selector 430 in accordance with the read instruction received in step S410r.
  • steps S411r and S412r may be performed in parallel. If the read pointer value has not been updated, the read instruction is not asserted, so step S412r is not performed.
  • the inter-packet selector 430 operates as follows. That is, the inter-packet selector 430 selects the output from the data packet storage unit 410 or the request packet storage unit 420 according to the output packet type selection signal input in step S409d or S409r, and sends the packet to the inter-port selector 206a. Output.
  • the data packet storage unit 410 of FIG. 7 may store a write-back data packet and a shared / transfer data packet having the same data payload in the following cases, for example. That is, the CPU 104a in FIG. 1 requests the data stored in the main memory 105a, and therefore outputs a shared memory access request packet, and it is found that the requested data is cached in the CPU 104c.
  • both the write-back data packet and the shared / transfer data packet are output from the CPU 104c and routed to the CPU 104a and the SC 103a belonging to the same node 101a, respectively. Therefore, the data packet storage unit 410 in the output buffer control unit 207ca of FIG. 7 may store two packets having the same data payload.
  • FIG. 10 is a configuration diagram of a comparative example of the SC 103c shown in FIG. Although not shown, the other SCs 103a, 103e, and 103g have the same configuration as the SC 103c.
  • the SC 103c is connected to the XB 102 via the bus 108c. Further, the SC 103c is also connected to the CPU 104c, the CPU 104d, the main memory 105c, the directory 106c, and the IOC 107c in the node 101c via a bus in the node 101c.
  • the SC 103c controls transmission of data in a packet format between the components in the node 101c and the other SCs 103a, 103e, and 103g.
  • the SC 103c includes input ports 501x, 501c, 501d, 501m, 501r, and 501i that receive packets from the XB 102, the CPU 104c, the CPU 104d, the main memory 105c, the directory 106c, and the IOC 107c, respectively.
  • the SC 103c includes output ports 502x, 502c, 502d, 502m, 502r, and 502i that output packets to the XB 102, the CPU 104c, the CPU 104d, the main memory 105c, the directory 106c, and the IOC 107c, respectively.
  • the above input ports 501x to 501i and output ports 502x to 502i perform frequency conversion processing to absorb the difference in operating frequency of each component, as necessary.
  • the SC 103c includes a MAC (Memory Access Controller) 503 and an SC control circuit 504, which are memory access control devices connected to each other, and controls access to the main memory 105c.
  • the MAC 503 is further connected to an input port 501m and an output port 502m.
  • the intra-SC control circuit 504 is also connected to the input port 501r and the output port 502r.
  • the intra-SC control circuit 504 performs cache consistency control when a memory access request to the main memory 105c is received. Cache consistency control is performed according to a predetermined cache protocol such as the MESI protocol. The intra-SC control circuit 504 also controls reference and update of the directory 106c for cache consistency control.
  • the SC control circuit 504 may receive a memory access request from the CPU 104c, CPU 104d, or IOC 107c in the same node 101c. Further, the SC control circuit 504 may receive a memory access request from a component in another node 101a, 101e, or 101g via the XB102.
  • FIG. 11 is a diagram illustrating an example of the directory 106c in the comparative example.
  • the directory 106c has a data structure for managing the main memory 105c in the same node 101c, and is used when the SC control circuit 504 performs cache consistency control of the main memory 105c.
  • the directory 106c is represented in a table format. Each entry in the directory 106c is a set of an address, an owner, and a state. “Address” in the left column of FIG. 11 is an address in the main memory 105c.
  • the “owner” in the middle column of FIG. 11 is the ID of the CPU that holds the block data in the main memory 105c indicated by the address in the cache memory as a cache line.
  • State in the right column of FIG. 11 is a state of memory data held by the “owner”.
  • any of the various states exemplified in the above (b1) to (b5) is used to represent the “state”.
  • the MAC 503 performs control to actually write data to the main memory 105c and read data from the main memory 105c based on the memory access request output from the SC control circuit 504. I do.
  • the SC 103c includes a routing unit 505.
  • the routing unit 505 distributes packets in the same manner as the routing unit 203 of the XB 102 shown in FIGS. 5 and 6.
  • the routing unit 505 is connected to the input ports 501x, 501c, 501d, and 501i, and the intra-SC control circuit 504.
  • the SC 103c includes input ports 501x, 501c, 501d, and 501i, and routing table units 506x, 506c, 506d, 506i, and 506s connected to the SC control circuit 504, respectively.
  • Each of the routing table units 506x, 506c, 506d, 506i, and 506s is also connected to the routing unit 505. Details of the routing table units 506x, 506c, 506d, 506i, and 506s are the same as those of the routing table unit 204c of FIG.
  • the SC 103c includes five sets of circuits corresponding to the output ports 502x, 502c, 502d, and 502i and the SC control circuit 504, respectively.
  • the five sets of circuits are provided in front of the five components (that is, the output ports 502x, 502c, 502d, and 502i, and the intra-SC control circuit 504).
  • a set of circuits provided in the preceding stage of the output port 502x includes an inter-port arbiter unit 507x, an inter-port selector 508x, and output buffer control units 509cx, 509dx, 509ix, and 509sx.
  • the circuit provided in the preceding stage of the other four components is the same as the above-described circuit provided in the preceding stage of the output port 502x.
  • the inter-port arbiter unit 507x is the same as the inter-port arbiter unit 205a of FIG. That is, the inter-port arbiter unit 507x is connected to the output buffer control units 509cx, 509dx, 509ix, and 509sx, and arbitrates output requests from these output buffer control units 509cx, 509dx, 509ix, and 509sx.
  • the inter-port selector 508x is the same as the inter-port selector 206a shown in FIG. That is, the inter-port selector 508x outputs a packet output from the selected output buffer control unit 509cx, 509dx, 509ix, or 509sx to the output port 502x according to the arbitration result notified from the inter-port arbiter unit 507x. To do.
  • the packet received by the input port 501c from the CPU 104c is input to the output buffer control unit 509cx via the routing unit 505.
  • a packet received by the input port 501d from the CPU 104d is input to the output buffer control unit 509dx via the routing unit 505.
  • the packet received by the input port 501i from the IOC 107c is input to the output buffer control unit 509ix via the routing unit 505. Then, a packet arriving from the main memory 105c via the input port 501m, the MAC 503, the SC control circuit 504, and the routing unit 505 is input to the output buffer control unit 509sx.
  • the data packet storage unit 410 includes at least 2P D-byte blocks described in (g2) above. 12 and 13 illustrate that the data packet storage unit 410 needs to include at least 2P blocks.
  • FIG. 12 is a diagram for explaining the operation of the output buffer control unit 509cx in the SC 103c when the CPU 104c outputs the write-back data packet to the SC 103c in Step S304 of FIG. 4 in this comparative example.
  • FIG. 13 is a diagram for explaining the operation of the output buffer control unit 509cx in the SC 103c when the CPU 104c outputs the transfer data packet to the SC 103c in step S305 in FIG. 4 in this comparative example.
  • the output buffer control unit 509cx is configured in the same manner as the output buffer control unit 207ca of FIG. Therefore, in FIG. 12 and FIG. 13, only the components related to steps S304 and S305 are extracted from the components in the output buffer control unit 509cx, and other components are omitted.
  • steps S501 to S507 in FIG. 12 are the same as steps S401, S402d to S406d, and S407 described with reference to the output buffer control unit 207c in FIG.
  • step S304 in FIG. 4 the CPU 104c outputs a write-back data packet 601 destined for the SC 103e to the SC 103c. Then, the SC 103c receives the write-back data packet 601 at the input port 501c in FIG.
  • the destination of the write-back data packet 601 is the SC 103e, and the SC 103e is in a different node 101e from the SC 103c. Therefore, the routing table unit 506c in FIG. 10 notifies the routing unit 505 of output port information indicating the output port 502x corresponding to the XB102. According to the notification, the routing unit 505 outputs the write-back data packet 601 to the output buffer control unit 509cx at the preceding stage of the output port 502x.
  • step S501 of FIG. 12 the packet type field 602 of the write-back data packet 601 is output to the encoder 405 via the signal line 443. Since the write-back data packet 601 is a kind of data packet, the encoder 405 outputs a VALID signal to the data packet write pointer controller 406 in the subsequent step S502.
  • the value of the write pointer held by the FF 451 in the write pointer control unit 406 at the time when the write-back data packet 601 is output to the output buffer control unit 509cx is “0000”.
  • the value of the read pointer held by the FF 452 in the read pointer control unit 407 at the time when the write-back data packet 601 is output to the output buffer control unit 509cx is also “0000”.
  • step S503 the write pointer controller 406 that has received the VALID signal outputs a write instruction and a write pointer value “0000” to the data packet storage unit 410, and updates the write pointer value to “0001”.
  • step S504 the data packet storage unit 410 stores the write-back data packet 601 input via the signal line 442 at the address “0000” input in step S503 according to the write instruction.
  • step S 505 the write pointer control unit 406 outputs the new write pointer value “0001” updated in step S 503 to the comparator 403 in the inter-packet arbiter unit 401.
  • the read pointer value “0000” assumed above is also output to the comparator 403.
  • step S506 the comparator 403 compares the write pointer value “0001” for the data packet with the read pointer value “0000”. As a result of the comparison, since the two values do not match, the comparator 403 outputs an output request to the inter-packet arbiter 402.
  • step S507 the inter-packet arbiter 402 outputs an output request to the inter-port arbiter unit 507x.
  • output permission is not immediately dropped from the inter-port arbiter unit 507x, and the inter-packet arbiter 402 waits for output permission while outputting an output request to the inter-port arbiter unit 507x for a while.
  • steps 508 to S514 in FIG. 13 are the same as steps S401, S402d to S406d, and S407 in FIG. 7, respectively.
  • step S508 is executed after step S501, but is not necessarily executed after steps S502 to S507.
  • step S508 may be executed in parallel with the execution of step S502 by the encoder 405.
  • step S305 of FIG. 4 the CPU 104c outputs a shared / transfer data packet 603 destined for the CPU 104a to the SC 103c. Then, the SC 103c receives the shared / transfer data packet 603 at the input port 501c of FIG.
  • the destination of the shared / transfer data packet 603 is the CPU 104a, and the CPU 104a is in a different node 101a from the SC 103c. Therefore, the routing table unit 506c in FIG. 10 notifies the routing unit 505 of output port information indicating the output port 502x corresponding to the XB102. In accordance with the notification, the routing unit 505 outputs the shared-type transfer data packet 603 to the output buffer control unit 509cx at the preceding stage of the output port 502x.
  • step S508 of FIG. 13 the packet type field 604 of the shared / transfer data packet 603 is output to the encoder 405 via the signal line 443. Since the shared / transfer data packet 603 is a kind of data packet, the encoder 405 outputs a VALID signal to the write pointer control unit 406 for the data packet in the subsequent step S509.
  • the write pointer value managed by the write pointer control unit 406 at the time of step S509 is “0001”.
  • the read pointer value managed by the read pointer control unit 407 is “0000”.
  • step S510 the write pointer control unit 406 that has received the VALID signal outputs a write instruction and a write pointer value “0001” to the data packet storage unit 410, and updates the write pointer value to “0002”.
  • step S511 the data packet storage unit 410 stores the shared / transfer data packet 603 input via the signal line 442 at the address “0001” input in step S510 according to the write instruction.
  • step S 512 the write pointer control unit 406 outputs the new write pointer value “0002” updated in step S 510 to the comparator 403.
  • step S 513 the comparator 403 compares the write pointer value “0002” for the data packet with the read pointer value “0000”, and outputs a new output request to the inter-packet arbiter 402 because the two values do not match. .
  • the inter-packet arbiter 402 continues to output the output request signal to the inter-port arbiter unit 507x. Accordingly, even in step S514, the inter-packet arbiter 402 maintains the state where the output request is asserted.
  • the data packet storage unit 410 As described above with reference to FIGS. 12 and 13, in the comparative example, it is necessary for the data packet storage unit 410 to store both the write-back data packet 601 and the shared / transfer data packet 603. is there.
  • the data payloads of the write-back data packet 601 and the shared-type transfer data packet 603 are the same as is apparent from the description of FIG. In general, the data payload is longer than the packet header. That is, in the example of FIGS. 12 and 13, two packets that are mostly duplicated are stored at the addresses “0000” and “0001”, and the buffer usage efficiency is poor.
  • the data packet storage unit 410 of the output buffer control unit 509cx needs to have a capacity of at least D bytes ⁇ 2P blocks as described above.
  • the CPU 104a requests the data stored in the main memory 105e in step S301.
  • the CPU 104e may request the data stored in the main memory 105e.
  • the CPU 104c storing the data in the cache memory outputs both a write-back data packet destined for the SC 103e and a shared / transfer data packet destined for the CPU 104e.
  • both destinations of two packets having a common data payload are components in the node 101e. Therefore, both the write-back data packet and the shared / transfer data packet follow the same path from the CPU 104c to the SC 103e.
  • arbitration is performed in the inter-port arbiter unit 507x upstream of the output port 502x connected to the XB 102 in the SC 103c and the inter-port arbiter unit 205e upstream of the output port 202e connected to the SC 103e in the XB 102. .
  • the XB 102 may need to buffer the write-back data packet and the shared / transfer data packet at the same time.
  • the data packet storage unit 410 in the output buffer control unit 207ce in the previous stage of the output port 202e connected to the SC 103e may be necessary for the data packet storage unit 410 in the output buffer control unit 207ce in the previous stage of the output port 202e connected to the SC 103e to store both the write-back data packet and the shared / transfer data packet.
  • the mounting area and power consumption of the buffer (that is, the data packet storage unit 410) can be reduced. . As a result, the performance of the entire server system 100 is also improved.
  • FIG. 14 a first embodiment in which the buffer capacity required for the output buffer control unit provided in each of the SCs 103a to 103g and the XB 102 is reduced as compared with the comparative example will be described with reference to FIGS. 14 to 29.
  • FIG. 14 a first embodiment in which the buffer capacity required for the output buffer control unit provided in each of the SCs 103a to 103g and the XB 102 is reduced as compared with the comparative example will be described with reference to FIGS. 14 to 29.
  • the server system 100 of FIG. 1 will be described as an example as in the comparative example.
  • the description of the points in common with the comparative example will be omitted as appropriate.
  • the operation of the first embodiment will be described with reference to FIG. 14 and compared with FIG. 4, and then the components different from the comparative example will be described with reference to FIGS. 15 and 16. Then, details of the first embodiment will be described with reference to FIGS.
  • FIG. 14 is a diagram showing an outline of the operation of the server system 100 according to the first embodiment.
  • the server system 100 in FIG. 14 also operates according to the same cache protocol as in FIG. 4, and steps S601 to S603 in FIG. 14 are the same as steps S301 to S303 in FIG.
  • step S601 the CPU 104a issues a shared memory access request packet destined for the SC 103e in order to request data stored in the main memory 105e. Then, the shared memory access request packet is transmitted to the SC 103e via the SC 103a and the XB 102.
  • the SC 103e that has received the shared-type / memory access request packet refers to the directory 106e and searches for a CPU that holds a cache line including the requested data in the cache memory. As a result, it is assumed that the CPU 104c holds the requested data in the E state.
  • step S603 the SC 103e outputs a shared data transfer request packet destined for the CPU 104c.
  • the shared / data transfer request packet output by the SC 103e is transmitted to the CPU 104c via the XB 102 and the SC 103c.
  • step S604 the CPU 104c outputs a write-back data packet destined for the SC 103e in the same node 101e as the main memory 105e in order to write back the data in the M-state cache line to the main memory 105e.
  • the CPU 104c updates the state of the cache line including the requested data to the I or S state according to the cache protocol.
  • the SC 103c in the first embodiment is an output buffer control unit 702cx (not shown in FIG. 14) similar to the output buffer control unit 509cx shown in FIG. (Shown).
  • the SC 103c in the first embodiment includes the same inter-port arbiter unit 507x and the inter-port selector 508x as shown in FIG.
  • the write-back data packet output in step S604 is stored in the buffer in the output buffer control unit 702cx in the SC 103c, and the output buffer control unit 702cx issues an output request to the inter-port arbiter unit 507x.
  • step S605 the CPU 104c outputs a shared / transfer data packet destined for the CPU 104a that is the request source that requested the data in step S601.
  • the execution order of steps S604 and S605 is determined by the specifications of the CPU 104c and may be in the reverse order. However, for the sake of convenience of explanation, step S604 will be executed before step S605. Note that in FIG. 14, before the inter-port arbiter unit 507x allows the output of the write-back data packet to the XB 102, the shared / transfer data packet is output to the output buffer control unit 702cx of the SC 103c in step S605. FIG.
  • the output buffer control unit 702cx stores the write-back data packet. Also, as shown in step S607, the output buffer control unit 702cx merges the two packets by storing the information included in the header of the shared / transfer data packet in association with the write-back data packet. In other words, the output buffer control unit 702cx discards the shared type / transfer data packet which is received later from the two packets having the same data payload.
  • the output buffer control unit 702cx can reduce the storage capacity necessary for storing the packet. .
  • the output buffer control unit 702cx After the shared type / data transfer request packet is merged with the write-back data packet in step S607, when output permission is given from the inter-port arbiter unit 507x, the output buffer control unit 702cx sends the merged packet to the XB 102 in step S608. Output.
  • the merged packet is originally a write-back data packet destined for the SC 103e and a shared / transfer data packet destined for the CPU 104a, and the destinations are different. Therefore, in the next step S609, the XB 102 restores the original write-back data packet and the shared / transfer data packet from the merged packet.
  • step S610 the XB 102 outputs the shared / transfer data packet to the SC 103a in the same node 101a as the destination CPU 104a, and outputs the write-back data packet to the destination SC 103e in step S611.
  • steps S610 and S611 may be executed simultaneously.
  • step S610 may be executed first, and step S611 may be executed first.
  • the buffer capacity required for the output buffer control unit 702cx in the SC 103c is reduced.
  • the necessary buffer capacity is similarly reduced in each of the SCs 103a to 103g. Therefore, according to the first embodiment, it is possible to reduce the manufacturing cost and mounting area of the semiconductor chip that realizes SCs 103a to 103g, and it is possible to suppress the power consumption of SCs 103a to 103g.
  • the total length of the write-back data packet and the shared / transfer data packet is longer than the length of one merged packet. Therefore, as compared with the case where the SC 103c individually outputs the write-back data packet and the shared / transfer data packet to the XB 102 via the bus 108c as shown in FIG. 4, in the first embodiment, the occupation time of the bus 108c is increased. short. Therefore, compared with the comparative example, in the first embodiment, the time for which other packets wait for output permission is reduced, and the throughput of packet output from the SC 103c to the XB 102 is substantially improved. That is, the performance of the server system 100 as a whole is also improved.
  • FIG. 15 is a configuration diagram of the SC 103c in the first embodiment.
  • FIG. 15 is similar to FIG. 10 showing the configuration of the SC 103c in the comparative example, but differs in the following points (h1) to (h6).
  • a routing table unit 701x is provided instead of the routing table unit 506x.
  • the configuration of the routing table unit 701x will be described later with reference to FIG.
  • an output buffer control unit 702cx having a function of merging the packets described in FIG. 14 is provided.
  • the packet merging is mainly performed by the management table unit 801 and the header merge unit 804 in the output buffer control unit 702cx.
  • the management table unit 801 and the header merge unit 804 are not shown in FIG. 15 due to space limitations, but will be described in detail with reference to FIGS.
  • an output buffer control unit 702dx is provided instead of the output buffer control unit 509dx.
  • a routing unit 703 is provided instead of the routing unit 505. The difference between the routing unit 505 and the routing unit 703 will be described after the description of FIG.
  • a duplication check unit 1001 (not shown) is provided on the path from the input port 501x to the routing unit 703 via the routing table unit 701x. Details of the duplication check unit 1001 will be described later with reference to FIGS. 23, 24, and 26.
  • a data packet restoration unit 1002 (not shown) is provided on the path from the input port 501x to the routing unit 703. Details of the data packet restoration unit 1002 will be described later with reference to FIGS. 23, 24, and 26 to 29.
  • FIG. 16 is a configuration diagram of the XB 102 in the first embodiment.
  • FIG. 16 is similar to FIG. 5 showing the configuration of the XB 102 in the comparative example, but differs in the following points (i1) to (i9).
  • a routing table unit 711c is provided instead of the routing table unit 204c. The difference between the routing table unit 204c and the routing table unit 711c will be described later with reference to FIG.
  • routing table units 711a, 711e, and 711g are provided instead of the routing table units 204a, 204e, and 204g.
  • Output buffer control units 712ac, 712ec, and 712gc having a function of merging the packets described in FIG. 14 are provided in front of the output port 202c, instead of the output buffer control units 207ac, 207ec, and 207gc. It has been. Similar to (h2) above, the merging of packets is mainly performed by the management table unit 801 and the header merge unit 804 in each of the output buffer control units 712ac, 712ec, and 712gc. The management table unit 801 and the header merge unit 804 are not shown in FIG. 16 due to space limitations.
  • a routing unit 713 is provided instead of the routing unit 203. The difference between the routing unit 203 and the routing unit 713 will be described later with reference to FIG. (I6)
  • a duplication check unit 1001 (not shown) is provided on the path from the input port 201c to the routing unit 713 via the routing table unit 711c.
  • a duplicate check unit 1001 (not shown) is also provided in the path between the other input ports 201a, 201e, and 201g and the routing unit 713.
  • a data packet restoration unit 1002 (not shown) is provided on the path from the input port 201c to the routing unit 713.
  • a data packet restoration unit 1002 (not shown) is also provided.
  • summary of the component different from a comparative example in 1st Embodiment was shown.
  • the packets are merged in SC 103 c and the packets are restored in XB 102.
  • the server system 100 is configured so that the packets can be restored in the SCs 103 a to 103 g and the packets can be merged in the XB 102. The reason is that there may be the following case different from FIG.
  • the CPU 104e issues a shared memory access request packet destined for the SC 103e in order to request data stored in the main memory 105e in the same node 101e.
  • the SC 103e refers to the directory 106e and searches for a CPU that holds a cache line including the requested data in the cache memory. As a result, it is assumed that the CPU 104c holds the requested data in the E state.
  • the CPU 104c outputs a shared / transfer data packet destined for the CPU 104e and a write-back data packet destined for the SC 103e.
  • a shared data transfer request packet is output first will be described as an example.
  • the shared / transfer data packet destined for the CPU 104e is a packet output to the output port 202e connected to the SC 103e in the XB102.
  • a write-back data packet destined for the SC 103e is a packet output to the output port 202e in the XB102.
  • both the shared-type transfer data packet and the write-back data packet that are individually output from the SC 103c to the XB 102 without being merged are output from the output buffer control unit 712ce provided in the preceding stage of the output port 202e in the XB 102. Via.
  • a write-back data packet may be input to the output buffer control unit 712ce in a situation where the shared / transfer data packet is temporarily stored in the output buffer control unit 712ce. For example, when many packets destined for the component in the node 101e are concentrated, the write-back data packet is input to the output buffer control unit 712ce before the shared buffer / transfer data packet is output from the output buffer control unit 712ce. May be.
  • the output buffer control unit 712ce in the XB 102 merges and stores the two packets, outputs them to the SC 103e, and the SC 103e restores the packets.
  • the occupied time of the bus 108e is also reduced, and the throughput of the server system 100 is substantially improved.
  • each output buffer control unit in the XB 102 includes a management table unit 801, a header merge unit 804, and the like so that packets can be merged. Further, as shown in FIG. 15, in each SC 103a to 103g, a duplication check unit 1001 and a data packet restoration unit 1002 are provided between the input port 501x connected to the XB 102 and the routing unit 703 so that packets can be restored. It has been.
  • FIG. 17 is a configuration diagram of the output buffer control unit 702cx in the SC 103c in the first embodiment. As shown in FIG. 15, the output buffer control unit 702cx is connected to the routing unit 703, the interport arbiter unit 507x, and the interport selector 508x.
  • the output buffer control unit 712ce in the XB 102 has the same configuration as that in FIG. As shown in FIG. 16, the output buffer control unit 712ce is different from the output buffer control unit 702cx in that it is connected to the routing unit 713, the interport arbiter unit 205e, and the interport selector 206e. However, the internal configuration of the output buffer control unit 712ce is the same as that of the output buffer control unit 702cx in FIG.
  • the output buffer control unit 702cx in the SC 103c illustrated in FIG. 17 has a configuration similar to that of the output buffer control unit 207ca in the XB 102 illustrated in FIG. 7 in the comparative example, and thus the description of the common points is appropriately omitted below. .
  • the output buffer control unit 702cx includes a control unit 400, a data packet storage unit 410, a request packet storage unit 420, and an inter-packet selector 430, similarly to the output buffer control unit 207ca of the comparative example.
  • the internal structure of the control unit 400 and the capacity of the data packet storage unit 410 are different from the comparative example.
  • the control unit 400 includes an inter-packet arbiter unit 401.
  • the inter-packet arbiter unit 401 includes an inter-packet arbiter 402, a comparator 403, and a comparator 404, and is similar to the comparative example.
  • the control unit 400 includes an encoder 405 similar to that of the comparative example.
  • the control unit 400 includes a read pointer control unit 407 for data packets, and includes a write pointer control unit 408 and a read pointer control unit 409 for request packets.
  • the control unit 400 of the first embodiment is different from the comparative example in that it includes a management table unit 801, a comparison unit 802, and a write pointer control unit 803 instead of the write pointer control unit 406 in the comparative example. Is a point.
  • the output buffer control unit 702cx further includes a header merge unit 804 and a selector 805.
  • the management table unit 801 and the comparison unit 802 cooperate to determine a set of two packets having the same data payload.
  • the management table unit 801 manages header information included in the header of the packet stored in the data packet storage unit 410.
  • the comparison unit 802 notifies the write pointer control unit 803 whether or not a packet having the same data payload as the packet newly input to the output buffer control unit 702cx is stored in the data packet storage unit 410.
  • the write pointer control unit 803 controls the storage of the newly input packet in the data packet storage unit 410 or the discard of the newly input packet based on the result of the notification from the comparison unit 802. For this control, the write pointer control unit 803 not only outputs a write instruction and a write pointer value as in the comparative example, but also outputs a “duplicate write instruction”. Although details will be described later, the duplicate write instruction is for instructing the management table unit 801 to record the header information of a packet having the same data payload as the data packet already stored in the data packet storage unit 410. is there.
  • the header merge unit 804 generates a packet obtained by merging two packets having the same data payload.
  • the selector 805 selects either the packet merged by the header merge unit 804 or the data packet stored in the data packet storage unit 410.
  • the relationship between the components in the output buffer control unit 702cx as outlined above is as follows. First, a packet is output from the routing unit 703 to the output buffer control unit 702cx via the signal line 441.
  • the signal line 441 branches into a signal line 442 for outputting a packet and a signal line 811 for outputting header information included in the packet header.
  • the branch illustrated by the diagonally branched lines differs in the output data for each branch. It shows that.
  • a packet output to the data packet storage unit 410 via the signal line 442 is the same as the comparative example.
  • the header information output to the signal line 811 is a packet type, a destination ID, a request source ID, a ReqID, and a data state.
  • the packet type indicates the type (d1) to (d4) described above, and is input to the encoder 405 in the comparative example.
  • the destination ID, request source ID, and ReqID are as described above in (a1) to (a3).
  • the data state at least a part of the above (b1) to (b5) can be specified according to the cache protocol.
  • the value of the data state is “shared type” corresponding to the S state of (b3) and a case where the data state is not designated will be taken as an example.
  • the signal line 811 further branches into a signal line 443 and a signal line 812, and the signal line 812 branches into a signal line 813 and a signal line 814.
  • the signal line 443 is connected to the encoder 405 as in the comparative example, and the packet type of the header information is input to the encoder 405 via the signal line 443.
  • the signal line 813 is connected to the comparison unit 802, and the request source ID and ReqID in the header information are input to the comparison unit 802 via the signal line 813.
  • the signal line 814 is connected to the management table unit 801, and all of the packet type, destination ID, request source ID, ReqID, and data state are input to the management table unit 801 via the signal line 814.
  • the management table unit 801 further receives inputs from the write pointer control unit 803 and the read pointer control unit 407 and outputs “replication information” described later to the signal line 815. Based on the input from the write pointer control unit 803, the management table unit 801 stores a packet having the same data payload as the newly input packet in the data packet storage unit 410. Store header information. Further, the management table unit 801 searches for header information to be merged with the packet stored in the block indicated by the read pointer value based on the input from the read pointer control unit 407.
  • Duplicate information indicates whether there is header information to be merged with the packet to be output.
  • the duplicate information further includes the header information when there is header information to be merged with the packet to be output.
  • the signal line 815 branches to a signal line 816 and a signal line 817.
  • the signal line 816 is connected to the header merge unit 804, and the signal line 817 is connected to the selector 805.
  • the duplicate information output to the signal line 815 is output to the header merge unit 804 via the signal line 816.
  • only the “duplicate data VALID” field indicating whether or not there is header information to be merged in the packet to be output among the duplicate information is output to the selector 805 via the signal line 817.
  • management table unit 801 is also connected to the comparison unit 802. Data input / output between the management table unit 801 and the comparison unit 802 will be described later with reference to FIGS. 18A and 18B.
  • the comparison unit 802 compares the request source ID and ReqID input via the signal line 813 with the information input from the management table unit 801, and notifies the write pointer control unit 803 of the comparison result. This comparison is performed to determine whether or not a packet having the same data payload as the newly input packet is stored in the data packet storage unit 410.
  • the data packet write pointer control unit 803 is connected to the comparator 403 and the data packet storage unit 410 in the same manner as the write pointer control unit 406 of the comparative example.
  • the write pointer control unit 803 is further connected to the comparison unit 802 as described above, and is also connected to the management table unit 801.
  • the configuration of the output buffer control unit 702cx has been described above with reference to FIG. Next, details of the management table unit 801, the comparison unit 802, and the write pointer control unit 803 in the output buffer control unit 702cx will be described with reference to FIGS. 18A and 18B.
  • FIG. 18A is a configuration diagram of the management table unit 801 in the first embodiment
  • FIG. 18B is a configuration diagram of the comparison unit 802 and the write pointer control unit 803 in the first embodiment.
  • 18A and 18B are divided into two sheets for the convenience of the paper width, but as indicated by reference numerals “A” to “M”, the management table unit 801 in FIG. 18A includes the comparison unit 802 in FIG. A pointer control unit 803 is connected.
  • the management table unit 801 has a decoder 902 that is represented by a plurality of bits and decodes the read pointer value output from the read pointer control unit 407 into (N + 1) outputs of 1 bit each.
  • the management table unit 801 further includes (N + 1) AND circuits 903-0 to 903-N. For each j where 0 ⁇ j ⁇ N, the read instruction output from the read pointer control unit 407 and the (j + 1) th output of the decoder 902 are input to the AND circuit 903-j.
  • the management table unit 801 has FF904 and FF905.
  • the FF 904 holds outputs from the (N + 1) AND circuits 903-0 to 903-N each outputting 1 bit, that is, an output of (N + 1) bits.
  • FF905 is the same as FF904, and FF904 and FF905 hold the same data.
  • an embodiment in which only one FF 904 is used and the signal line is branched appropriately so that the output of the FF 904 is also supplied to the output destination of the FF 905 in FIG. 18A is possible.
  • the management table unit 801 includes a decoder 906 that is represented by a plurality of bits and decodes the write pointer value output from the write pointer control unit 803 for the data packet into (N + 1) outputs of 1 bit each.
  • the (N + 1) -bit data held by the FF 904 is input bit by bit to the entries 901-0 to 901-N.
  • the (N + 1) -bit data held by the FF 905 is also input bit by bit to the entries 901-0 to 901-N.
  • the (N + 1) -bit output of the decoder 906 is also input bit by bit to the entries 901-0 to 901-N.
  • a write instruction and a duplicate write instruction from the write pointer control unit 803 are input to the entries 901-0 to 901-N, respectively.
  • FIG. 18A shows only the entry 901-0 for the storage address 0000 in detail. That is, the entry 901-0 has the following seven fields corresponding to the seven AND circuits 907 to 913 and the AND circuits 907 to 913, respectively.
  • Each of the seven fields is realized using a storage element such as FF. Details of each field and its input / output will be described after the details of the comparison unit 802 and the write pointer control unit 803 are described. Note that the whole entries 901-0 to 901-N including the above fields correspond to one management table.
  • the data of the packet type, request source ID, ReqID, destination ID, and data state fields in the packet header is transferred from the routing unit 703 to the management table unit 801 via the signal line 814. Entered.
  • the signal line 814 branched from the signal line 812 as shown in FIGS. 17 and 18A is further branched as follows and connected to the entries 901-0 to 901-N as shown in FIG. 18A.
  • a signal line 932-0 for inputting the request source ID and ReqID to the entry 901-0 for the storage address 0000 ⁇ > A signal line 931-N in which a packet type, a destination ID, and a data state are input to the entry 901-N for the storage address xxx
  • the other branch from the signal line 812 is input to the comparison unit 802 in FIG. 18B as the signal line 813.
  • the request source ID and ReqID included in the header of the packet are input from the routing unit 703 to the comparison unit 802 via the signal line 813.
  • the comparison unit 802 includes (N + 1) comparators 941-0 to 941-N corresponding to (N + 1) storage addresses 0000 to xxx.
  • the configurations of the comparators 941-0 to 941-N are the same, and the outputs of the comparators 941-0 to 941-N are input to an OR circuit 951 provided in the write pointer control unit 803.
  • the comparator 941-0 corresponding to the storage address 0000 includes the request source ID and ReqID included in the header of the packet input from the routing unit 703 to the output buffer control unit 702cx of FIG. Is entered. Further, the requester ID and ReqID are input to the comparator 941-0 from the requester ID field 915 and the ReqID field 916 in the entry 901-0 for the storage address 0000, respectively. That is, two sets of request source ID and ReqID are input to the comparator 941-0.
  • the comparator 941-0 indicates, as a control signal, the value of the VALID field 914 in the storage address 0000 entry 901-0, that is, whether or not the block of the storage address 0000 in the data packet storage unit 410 is valid. A value is entered.
  • the comparator 941-0 When the value of the VALID field 914 input as the control signal is the logical value 0, the comparator 941-0 outputs the logical value 0 to the OR circuit 951 and the AND circuit 910 in the entry 901-0 for the storage address 0000. To do.
  • the comparator 941-0 compares the pair of the input request source ID and ReqID. If the two input request source IDs and ReqID match, the comparator 941-0 outputs a logical value 1 to the OR circuit 951 and the AND circuit 910 in the entry 901-0. On the other hand, when the two input request source IDs and the ReqID do not match, the comparator 941-0 outputs the logical value 0 to the OR circuit 951 and the AND circuit 910 in the entry 901-0.
  • the logical value 0 output from the comparator 941-0 indicates that a packet whose data payload matches the newly input data packet is not stored in the storage address 0000 of the data packet storage unit 410.
  • the logical value 1 output from the comparator 941-0 indicates that a packet whose data payload matches the newly input data packet is stored in the storage address 0000 of the data packet storage unit 410.
  • each of the comparators 941-0 to 941-N can determine whether the data payloads match or not by comparing appropriate header information according to the packet specifications.
  • the data packet write pointer control unit 803 includes a NOT circuit 952, an AND circuit 953, an AND circuit 954, and an FF 955 in addition to the OR circuit 951.
  • the OR circuit 951 is an (N + 1) -input OR circuit, and outputs a logical value 0 only when all the inputs from the comparators 941-0 to 941-N have a logical value 0, and otherwise, a logical value 1 Is output. That is, only when another data packet having the same data payload as the data packet newly input to the output buffer control unit 702cx is stored in any block in the data packet storage unit 410, the OR circuit 951 performs the logic operation. The value 1 is output.
  • the output of the OR circuit 951 is input to the NOT circuit 952 and the AND circuit 953, and the output of the NOT circuit 952 is input to the AND circuit 954.
  • the encoder 405 outputs a VALID signal indicating whether or not the input packet is a data packet.
  • the VALID signal output from the encoder 405 is input to AND circuits 953 and 954.
  • the AND circuit 953 can be used only when a data packet is input to the output buffer control unit 702cx and another packet having the same data payload as the input data packet is stored in the data packet storage unit 410. A logical value 1 is output. The output from the AND circuit 953 is input to each of the entries 901-0 to 901-N in FIG. 18A as a duplicate write instruction.
  • the AND circuit 954 receives the data packet to the output buffer control unit 702cx only when another packet having the same data payload as the input data packet is not stored in the data packet storage unit 410. A logical value 1 is output. The output from the AND circuit 954 is input to each of the entries 901-0 to 901-N in FIG. 18A as a write instruction.
  • the write pointer control unit 803 includes an FF 955 in the same manner as the write pointer control unit 406 of the comparative example illustrated in FIG.
  • the FF 955 holds the write pointer value in the same manner as the FF 451.
  • the output of the AND circuit 954 is input to the FF 955 as a count enable signal.
  • the write pointer value output from the FF 955 is not only input to the data packet storage unit 410 and the comparator 403 as in the comparative example, but is also input to the decoder 906 in FIG. 18A.
  • the VALID field 914 is a 1-bit field indicating whether or not the block at the storage address 0000 of the data packet storage unit 410 is valid. A logical value 1 indicates “valid” and a logical value 0 indicates “invalid”.
  • the value of the VALID field 914 becomes a logical value 1 when a new packet is stored at the storage address 0000.
  • the value of the VALID field 914 is set when the packet stored at the storage address 0000 is output to the selector 805 via the header merge unit 804 or not, and further output to the inter-packet selector 430.
  • the logical value is 0.
  • the VALID field 914 is configured as follows.
  • the VALID field 914 may be realized by, for example, an RS (Reset-Set) type FF.
  • the output of the AND circuit 907 is given to the S (set) terminal of the RS type FF, and bit 0 which is the first bit of the FF 904 holding (N + 1) bits is given to the R (reset) terminal. .
  • the input of the AND circuit 907 is bit 0 (that is, the bit corresponding to the storage address 0000 in the output of (N + 1) bits) which is the first bit of the output from the decoder 906, and the write pointer control unit 803. This is the output write instruction. Therefore, only when the write pointer control unit 803 designates the storage address 0000 and asserts the write instruction, the output of the AND circuit 907 becomes the logical value 1, and the value of the VALID field 914 is set to the logical value 1.
  • the read pointer control unit 407 outputs a read pointer value indicating the storage address 0000 and asserts a read instruction
  • the storage address 0000 of the first bit 0 (that is, (N + 1) bits of the FF 904).
  • Bit corresponding to has a logical value of 1.
  • bit 0 of FF 904 becomes logical value 1
  • the value of VALID field 914 is reset to logical value 0.
  • the request source ID field 915 stores the request source ID of the data packet stored at the storage address 0000 of the data packet storage unit 410. A value is set in the request source ID field 915 by the AND circuit 908.
  • the request source ID is represented by, for example, M 1 bit.
  • the input to the AND circuit 908 is via the write instruction output from the write pointer control unit 803, the bit 0 corresponding to the storage address 0000 in the output of the decoder 906, and the signal line branched from the signal line 932-0. Is a request source ID of M 1 bit input.
  • the AND circuit 908 overwrites the request source ID field 915 with the input M 1 bit request source ID value only when both the write instruction and the output of bit 0 of the decoder 906 are a logical value 1. When at least one of the write instruction and bit 0 of the output from the decoder 906 is a logical value 0, the AND circuit 908 does not overwrite the request source ID field 915 and the request source ID field 915 holds the current value. .
  • the AND circuit 908 includes an AND circuit that obtains a logical product of the write instruction and bit 0 of the output from the decoder 906, and passes the input request source ID of M 1 bit to the request source ID field 915. It may be configured.
  • the request source ID field 915 includes, for example, M 1 sets of storage elements for storing M 1 bits, and the output of the AND circuit is given as a write enable control signal to the control terminal of each storage element. .
  • the request source ID field 915 holds the current value, and when the output of the AND circuit is a logical value 1, the request source that has passed through the AND circuit 908 The ID is written in the request source ID field 915.
  • the request source ID field 915 may include M 1 RS-type FFs.
  • the output of the AND circuit in the AND circuit 908 (that is, the logical product of the write instruction and the bit 0 of the output from the decoder 906) is “X”, and the request source ID that has passed through the AND circuit 908 Let bit j of Y be “Y j ” (0 ⁇ j ⁇ M 1 ⁇ 1).
  • Requestor ID field 915 includes two AND circuits and one NOT circuit for each bit, X ⁇ Y j to the R terminal of the RS-type FF corresponding to the bit j is the S terminal X ⁇ Y j Are configured to be input respectively.
  • each RS type FF holds the current value, and when X is a logical value 1, the value of each RS type FF is Y j (that is, the value of bit j of the request source ID). It becomes. Therefore, the above-described operations of the AND circuit 908 and the request source ID field 915 are realized.
  • the specific configurations of the AND circuit 908 and the request source ID field 915 may be different from the above example.
  • the value in the request source ID field 915 is output to the comparator 941-0 in FIG. 18B corresponding to the storage address 0000.
  • the ReqID field 916 stores the ReqID of the data packet stored at the storage address 0000 of the data packet storage unit 410. A value is set in the ReqID field 916 by the AND circuit 909.
  • Input to the AND circuit 909 is via a write instruction output from the write pointer control unit 803, bit 0 corresponding to the storage address 0000 in the output from the decoder 906, and a signal line branched from the signal line 932-0.
  • the ReqID input Similar to the description of the AND circuit 908 and the request source ID field 915, the specific implementation of the AND circuit 909 and the ReqID field 916 is various.
  • the AND circuit 909 and the ReqID field 916 operate as follows. That is, the AND circuit 909 overwrites the ReqID field 916 with the input ReqID value only when both the write instruction and the bit 0 of the output from the decoder 906 are the logical value 1. On the other hand, when at least one of the write instruction and bit 0 of the output from the decoder 906 is a logical value 0, the AND circuit 909 does not overwrite the ReqID field 916, and the ReqID field 916 holds the current value.
  • the duplicate data VALID field 917 is a 1-bit field indicating whether the duplicate packet type field 918, the duplicate packet destination ID field 919, and the duplicate data state field 920 are valid. A logical value 1 indicates “valid” and a logical value 0 indicates “invalid”.
  • the value of the duplicate data VALID field 917 is the value when a second packet having the same data payload as the first packet is input to the output buffer control unit 702cx in a state where the first packet is stored at the storage address 0000. Has a logical value of 1. At this time, the packet type, destination ID, and data state included in the header of the second packet are stored in the duplicate packet type field 918, duplicate packet destination ID field 919, and duplicate data state field 920, respectively.
  • the value of the duplicate data VALID field 917 is set so that the first packet stored in the storage address 0000 is output to the inter-packet selector 430 via the header merge unit 804 and the selector 805 in FIG.
  • the logical value is zero.
  • the duplicate data VALID field 917 may be realized by, for example, an RS type FF.
  • the output of the AND circuit 910 is given to the S terminal, and the bit 0 which is the first bit of the FF 905 holding (N + 1) bits is given to the R terminal.
  • the inputs of the AND circuit 910 are the output of the comparator 941-0 provided in the comparator 802 in FIG. 18B corresponding to the storage address 0000 and the duplicate write instruction output from the write pointer controller 803. . Therefore, only when the first packet having the same data payload as the newly input second packet is already stored in the storage address 0000, the two inputs of the AND circuit 910 both have the logical value 1, and the duplicate data The value of the VALID field 917 is set to logical value 1.
  • the duplicate packet type field 918 will be described. Here, it is assumed that the first packet having the same data payload as the second packet newly input to the output buffer control unit 702cx in FIG. 17 has already been stored in the storage address 0000 of the data packet storage unit 410. At this time, the duplicate packet type field 918 stores the packet type included in the header of the second packet. Further, the AND circuit 911 sets a value in the duplicate packet type field 918.
  • Input to the AND circuit 911 is input via the output of the comparator 941-0 in FIG. 18B, the duplicate write instruction output from the write pointer control unit 803, and the signal line branched from the signal line 931-0. Packet type. Similar to the description of the AND circuit 908 and the request source ID field 915, the specific implementations of the AND circuit 911 and the duplicate packet type field 918 are various.
  • the AND circuit 911 and the duplicate packet type field 918 operate as follows. That is, the AND circuit 911 overwrites the duplicate packet type field 918 with the input packet type value only when both the output of the comparator 941-0 and the duplicate write instruction are logical values 1. On the other hand, when at least one of the output of the comparator 941-0 and the duplicate write instruction is a logical value 0, the AND circuit 911 does not overwrite the duplicate packet type field 918, and the duplicate packet type field 918 holds the current value. To do.
  • the duplicate packet destination ID field 919 stores a destination ID included in the header of the second packet. Also, the AND circuit 912 sets a value in the duplicate packet destination ID field 919.
  • the input to the AND circuit 912 is input via the output of the comparator 941-0 in FIG. 18B, the duplicate write instruction output from the write pointer control unit 803, and the signal line branched from the signal line 931-0. It is a destination ID.
  • the destination ID is represented by, for example, M 1 bit as with the request source ID. Similar to the description of the AND circuit 908 and the request source ID field 915, the specific implementations of the AND circuit 912 and the duplicate packet destination ID field 919 are various.
  • the AND circuit 912 and the duplicate packet destination ID field 919 operate as follows. That is, the AND circuit 912 overwrites the duplicate packet destination ID field 919 with the input destination ID value only when both the output of the comparator 941-0 and the duplicate write instruction are logical values 1. On the other hand, when at least one of the output of the comparator 941-0 and the duplicate write instruction is a logical value 0, the AND circuit 912 does not overwrite the duplicate packet destination ID field 919, and the duplicate packet destination ID field 919 is the current value. Hold.
  • the duplicate data state field 920 stores the data state included in the header of the second packet. Also, the AND circuit 913 sets a value in the duplicate data state field 920.
  • Input to the AND circuit 913 is input via the output of the comparator 941-0 in FIG. 18B, the duplicate write instruction output from the write pointer control unit 803, and the signal line branched from the signal line 931-0. Data state. Similar to the description of the AND circuit 908 and the request source ID field 915, the specific implementations of the AND circuit 913 and the duplicate data state field 920 are various.
  • the AND circuit 913 and the duplicate data state field 920 operate as follows. That is, the AND circuit 913 overwrites the input data state value in the duplicate data state field 920 only when both the output of the comparator 941-0 and the duplicate write instruction are logical values 1. On the other hand, when at least one of the output of the comparator 941-0 and the duplicate write instruction is a logical value 0, the AND circuit 913 does not overwrite the duplicate data state field 920, and the duplicate data state field 920 holds the current value. To do.
  • the values of the duplicate data VALID field 917, duplicate packet type field 918, duplicate packet destination ID field 919, and duplicate data state field 920 described above are output to the selector 921 in the management table unit 801. Similarly, sets of four values are output from the other entries 901-1 to 901-N to the selector 921.
  • the selector 921 receives an output from the AND circuits 903-0 to 903-N as a selection signal. Since the outputs of the AND circuits 903-0 to 903-N are each 1 bit, the selection signal of the selector 921 is (N + 1) bits. Obviously, a maximum of 1 bit has a logical value 1 among (N + 1) bits of the selection signal.
  • the selector 921 When all bits of the selection signal are logical values 0, the selector 921 negates the output (that is, does not output valid data). When the bit j (0 ⁇ j ⁇ N) of the selection signal is a logical value 1, the selector 921 selects a set of four values output from the entry 901-j and outputs it to the signal line 815. For example, when a read pointer value of “0” and a read instruction are output from the read pointer control unit 407, the output of the AND circuit 903-0 becomes a logical value 1, and the selector 921 receives from the entry 901-0 for the storage address 0000. Select an output.
  • the signal line 815 branches into a signal line 816 connected to the header merge unit 804 and a signal line 817 connected to the selector 805.
  • the value of the duplicate data VALID field 917 output by the selector 921 is output to the header merge unit 804 and the selector 805 via the signal line 815, the signal line 816, and the signal line 817, respectively.
  • the values of the duplicate packet type field 918, duplicate packet destination ID field 919, and duplicate data state field 920 output by the selector 921 are output to the header merge unit 804 via the signal line 815 and the signal line 816.
  • the header merge unit 804 receives the value of each field input from the entry (any one of 901-0 to 901-N) corresponding to the read pointer value via the selector 921, and the data packet storage unit 410 according to the read instruction. Merge into the packet output from Then, the header merge unit 804 outputs the packet obtained by merging to the selector 805.
  • the contents of the header of the second packet having the same data payload as the first packet stored in the data packet storage unit 410 are stored in the jth entry 901-j, and the storage of the first packet is performed.
  • a read instruction for designating the address is issued.
  • the header merge unit 804 outputs the content input from the entry 901-j via the selector 921 (that is, information corresponding to the header of the second packet) from the data packet storage unit 410. Merge into packets.
  • FIG. 19 is a diagram for explaining the operation of the output buffer control unit 702cx in the first embodiment.
  • the output buffer control unit 702cx operates in the same manner as the output buffer control unit 207ca of FIG.
  • a case where a data packet is input to the output buffer control unit 702cx will be described.
  • step S701 the data packet output from the CPU 104c is routed by the routing unit 703 and input to the output buffer control unit 702cx.
  • step S702 the packet type in the header of the data packet is output to the encoder 405 and the management table unit 801. Further, the request source ID and ReqID in the header are output to the management table unit 801 and the comparison unit 802. Further, the destination ID and data state in the header are output to the management table unit 801.
  • the encoder 405 determines from the packet type value that the data packet input from the routing unit 703 is a data packet. As a result, the encoder 405 outputs a VALID signal to the write pointer control unit 803 for the data packet.
  • step S704 the comparison unit 802 uses the request source ID and ReqID pair received in step S702 as the request source ID and ReqID output from the entries 901-0 to 901-N in the management table unit 801. Compare with the pair. As a result of the comparison, the comparison unit 802 outputs (N + 1) outputs from the entries 901-0 to 901-N in the management table unit 801 and the OR circuit 951 in the write pointer control unit 803 as described with reference to FIG. 18B. Output to. Step S704 may be performed in parallel with step S703.
  • the value of the VALID field 914 is output to the comparison unit 802 from each entry 901-0 to 901-N in the management table unit 801. Therefore, in step S704, the combination of the request source ID and ReqID in the entry whose logical value 1 indicates “valid” in the VALID field 914, and the combination of the request source ID and ReqID of the data packet input in step S701. Are compared.
  • step S705 the write pointer control unit 803 for the data packet calculates the logical sum of the (N + 1) outputs output from the comparison unit 802 in step S704 using the OR circuit 951. Then, based on the VALID signal output from the encoder 405 in step S703 and the obtained logical sum, the write pointer control unit 803 operates as follows.
  • the write pointer control unit 803 performs processing to store the data packet input in step S701 in a block in the data packet storage unit 410 that is not currently used. That is, the write pointer control unit 803 outputs the write pointer value held by the FF 955 in FIG. 18B and updates the write pointer value.
  • the output destination of the write pointer value is the management table unit 801, the data packet storage unit 410, and the comparator 403.
  • the write pointer control unit 803 outputs a write instruction to the management table unit 801 and the data packet storage unit 410.
  • the data packet storage unit 410 stores the packet, and the inter-packet arbiter 402 outputs an output request to the inter-port arbiter unit 507x as a result of the arbitration.
  • the operation is the same as that described as steps S404d to S407 in the comparative example of FIG.
  • step S705 when the VALID signal is output from the encoder 405 and the logical sum output from the OR circuit 951 is the logical value 1, the packet having the same data payload as the data packet input in step S701 Is saved.
  • the write pointer control unit 803 stores only the header information for use in later restoration in the data table input in step S701 in the management table unit 801 and discards the data packet itself. Do. That is, the write pointer control unit 803 outputs a duplicate write instruction to the management table unit 801.
  • step S706 the management table unit 801 stores the information input in step S702 in an appropriate entry.
  • the operation in step S706 of the management table unit 801 is based on the write instruction, duplicate write instruction, and write pointer value output from the write pointer control unit 803, and (N + 1) comparison results output from the comparison unit 802.
  • step S706 the operation of the management table unit 801 in step S706 is divided into two cases depending on which one of the write instruction and the duplicate write instruction is output (asserted) in step S705.
  • the write instruction and the duplicate write instruction are exclusive and do not become the logical value 1 at the same time.
  • the management table unit 801 When a write instruction is output in step S705, the management table unit 801 adds the request source ID and ReqID input in step S702 to the request source ID field 915 and the ReqID field 916 in the address entry indicated by the write pointer value. The value of is memorized. Also, the management table unit 801 sets the value of the VALID field 914 in the entry corresponding to the address indicated by the write pointer value to a logical value 1, and validates the entry corresponding to the address indicated by the write pointer value.
  • step S705 When the duplicate write instruction is output in step S705, it is a case where any one of the comparators 941-0 to 941-N outputs a logical value 1 indicating coincidence as a result of the comparison in step S704. That is, when the comparison unit 802 detects an address where a packet having the same data payload as the data packet input in step S701 is stored, a duplicate write instruction is output.
  • the management table unit 801 stores the values input in step S702 in the duplicate packet type field 918, duplicate packet destination ID field 919, and duplicate data state field 920 in the determined storage address entry. To do.
  • the management table unit 801 sets the duplicate data VALID field 917 in the entry determined by the comparison unit 802 to a logical value 1.
  • step S701 when the duplicate write instruction is output, the packet itself input in step S701 is not stored in the data packet storage unit 410 but is discarded.
  • the write pointer value is not updated as shown in FIG. 18B. Therefore, arbitration is not performed again in the inter-packet arbiter unit 401, and a new output request to the inter-port arbiter unit 507x is not output by the inter-packet arbiter 402.
  • step S705 a series of processes triggered by the input of the packet in step S701 ends in step S706.
  • step S705 when a write instruction is output in step S705, the same operation as in steps S404d to S407 in FIG. 7 is performed as described above, and thereafter, in step S707, the output permission of the data packet from the interport arbiter unit 507x is performed. Is output.
  • step S708 the inter-packet arbiter 402 outputs a selection signal to the inter-packet selector 430 so as to output the data packet in the same manner as in step S409d of FIG. 7, and the read pointer update instruction for the data packet read pointer controller 407 Is output.
  • step S709 the read pointer control unit 407 outputs the read instruction and the read pointer value to the management table unit 801 and the data packet storage unit 410, and updates the read pointer value. Further, the read pointer controller 407 outputs the updated read pointer value to the comparator 403.
  • step S710 the data packet storage unit 410 outputs the packet stored at the address indicated by the read pointer value to the header merge unit 804 and the selector 805 in accordance with the read instruction.
  • the management table unit 801 outputs the data in the entry corresponding to the address indicated by the read pointer value to the header merge unit 804 and the selector 805 in accordance with the read instruction.
  • the management table unit 801 outputs the values of the duplicate data VALID field 917, duplicate packet type field 918, duplicate packet destination ID field 919, and duplicate data state field 920 to the header merge unit 804. Further, the management table unit 801 outputs the value of the duplicate data VALID field 917 to the selector 805 as a selection signal.
  • the output value of the duplicate data VALID field 917 is a logical value of 0, it indicates that the selector 805 selects the packet itself read from the storage address in the data packet storage unit 410 indicated by the read pointer value. Conversely, when the value of the output duplicate data VALID field 917 is a logical value 1, it indicates that the selector 805 selects a packet having duplicate information generated by the header merge unit 804.
  • step S711 the management table unit 801 further resets the values of the VALID field 914 and the duplicated data VALID field 917 in the storage address entry indicated by the read pointer value to the logical value 0 using the FF 904 and FF 905 of FIG. 18A. To do.
  • step S712 the header merge unit 804 generates a packet in which the information of the four fields input in step S711 is added to the header of the data packet input in step S710, and outputs the packet to the selector 805.
  • the header merge unit 804 generates a packet by inserting information of four fields into a predetermined position of the header of the data packet input in step S710, for example.
  • step S713 the selector 805 selects one of the packet input from the data packet storage unit 410 and the packet input from the header merge unit 804 in accordance with the selection signal output from the management table unit 801 in step S711. . Then, the selector 805 outputs the selected packet to the inter-packet selector 430.
  • the inter-packet selector 430 receives a selection signal from the inter-packet arbiter 402 indicating which of the request packet and the data packet is to be selected as described with reference to steps S409r and S409d in FIG.
  • the inter-packet selector 430 selects the packet output from the selector 805 and outputs it to the inter-port selector 508x as shown in step S714.
  • the operation of the output buffer control unit 702cx has been described above with reference to FIG. 19 may be, for example, a write-back data packet or a shared / transfer data packet.
  • the output buffer control unit 712ce in the XB 102 shown in FIG. 16 has the same configuration as the output buffer control unit 702cx described with reference to FIGS.
  • FIG. 19 shows the output buffer control unit 712ce by replacing the routing unit 703, the interport arbiter unit 507x, and the interport selector 508x with the routing unit 713, the interport arbiter unit 205e, and the interport selector 206e, respectively.
  • the following drawings are also described with the output buffer control unit 702cx as the center, but the same applies to other output buffer control units.
  • FIG. 20 is a diagram illustrating a specific example of the operation of the output buffer control unit 702cx when the write-back data packet is input first in the first embodiment.
  • FIG. 20 shows details of the data packet storage unit 410. Further, in FIG. 20, the entries 901-0 to 901-N in the management table unit 801 are shown in a table format.
  • the initial values of the write pointer value of the write pointer control unit 803 and the read pointer value of the read pointer control unit 407 are both “0000”. Assume.
  • the initial value of the VALID field 914 is the logical value 0 indicating “invalid” in all the entries 901-0 to 901-N in the management table unit 801. Assume.
  • step S801 the write-back data packet 601 output by the CPU 104c is routed by the routing unit 703 in the SC 103c of FIG. 15 and input to the output buffer control unit 702cx in the preceding stage of the output port 502x connected to the XB102.
  • step S 802 the packet header information 605 of the write-back data packet 601 is output to the encoder 405, the management table unit 801, and the comparison unit 802.
  • the header of the write-back data packet 601 includes at least a packet type field, a request source ID field, a ReqID field, a destination ID field, and a data state field.
  • the value of the packet type is a value indicating that it is a write-back data packet.
  • FIG. 20 shows an example in which the CPU 104c caching the requested data outputs the write-back data packet 601 when the CPU 104a requests the data in the main memory 105e. Therefore, the value of the request source ID of the write-back data packet 601 is the ID of the CPU 104a.
  • the value of the destination ID is the ID of the SC 103e that is in the same node 101e as the main memory 105e and manages the main memory 105e.
  • the value of ReqID is “5” for convenience of explanation. Further, since the data state is not specified in the write-back data packet 601, the value of the data state is a value indicating “none”.
  • step S802 the packet type is output to the encoder 405 and the management table unit 801, the request source ID and ReqID are output to the management table unit 801 and the comparison unit 802, and the destination ID and data state are output to the management table unit 801. .
  • step S803 the encoder 405 determines that “the write-back data packet 601 is a data packet” based on the received packet type, and outputs a VALID signal to the write pointer control unit 803 for the data packet.
  • step S804 the comparison unit 802 outputs the received request source ID and ReqID values from the request source ID field 915 and the ReqID field 916 of each entry 901-0 to 901-N in the management table unit 801. Each value. Actually, as described with reference to FIGS. 18A to 19, only the entry of the logical value 1 in which the value of the VALID field 914 indicates “valid” is the comparison target.
  • the comparison unit 802 outputs the comparison result to the management table unit 801 and the write pointer control unit 803.
  • step S805 the data packet write pointer control unit 803 obtains a logical sum of (N + 1) outputs from the comparison unit 802.
  • the obtained logical sum indicates that there is no valid entry in the management table unit 801 that stores the request source ID and ReqID that match the request source ID and ReqID of the write-back data packet 601. Further, as in step S803, the encoder 405 outputs a VALID signal.
  • step S805 the write pointer control unit 803 outputs the write instruction and the write pointer value “0000” to the management table unit 801 and the data packet storage unit 410, and then updates the write pointer value to “0001”.
  • step S806 the management table unit 801 sets the values of the three fields in the entry 901-0 for the address “0000” indicated by the input write pointer value in accordance with the write instruction.
  • the management table unit 801 sets the VALID field 914 of the entry 901-0 to a logical value 1 indicating “valid”. Further, the management table unit 801 stores the ID of the CPU 104a input in step S802 in the request source ID field 915 of the entry 901-0. Furthermore, the management table unit 801 stores the ReqID value “5” input in step S802 in the ReqID field 916 of the entry 901-0.
  • step S807 the data packet storage unit 410 stores the write-back data packet 601 at the address “0000” indicated by the input write pointer value according to the write instruction.
  • the execution order of steps S806 and S807 is arbitrary, and steps S806 and S807 may be executed in parallel.
  • step S808 the comparator 403 of the inter-packet arbiter unit 401 compares the write pointer value for the data packet with the read pointer value.
  • the write pointer value is the updated value “0001” received from the write pointer control unit 803, and the read pointer value is the value “0000” received from the read pointer control unit 407. Therefore, the comparison result is “mismatch”, and the comparator 403 outputs an output request to the inter-packet arbiter unit 401.
  • the inter-packet arbiter unit 401 performs arbitration between the output request received in step S808 and the output request for the request packet as necessary, and then outputs the output request to the inter-port arbiter unit 507x in step S809. To do.
  • FIG. 21 is a diagram illustrating a specific example of the operation of the management table unit 801 in the output buffer control unit 702cx when a shared / transfer data packet is input after the write-back data packet in the first embodiment. .
  • FIG. 21 only components related to the steps described below are extracted from the components in the output buffer control unit 702cx.
  • the entries 901-0 to 901-N in the management table unit 801 are shown in a table format.
  • step S810 the shared / forwarded data packet 603 output by the CPU 104c in FIG. 15 is routed by the routing unit 703 in the SC 103c and input to the output buffer control unit 702cx in the preceding stage of the output port 502x connected to the XB102.
  • step S 811 the packet header information 606 of the shared / transfer data packet 603 is output to the encoder 405, the management table unit 801, and the comparison unit 802.
  • the shared / transfer data packet 603 is a packet output by the CPU 104c that caches the requested data when the CPU 104a requests the data in the main memory 105e. Therefore, in the packet header information 606, the value of the packet type is a value indicating that it is a transfer data packet, the values of the request source ID and the destination ID are the IDs of the CPU 104a, and the value of ReqID is the assumption in FIG. As shown in “5”. In the packet header information 606, the value of the data state is assumed to be a value indicating “shared type” in accordance with the cache protocol.
  • step S811 the packet type is output to the encoder 405 and the management table unit 801, the request source ID and ReqID are output to the management table unit 801 and the comparison unit 802, and the destination ID and data state are output to the management table unit 801. .
  • step S812 the encoder 405 determines that “the shared / transfer data packet 603 is a data packet” based on the received packet type, and outputs a VALID signal to the write pointer control unit 803 for the data packet. To do.
  • step S813 the comparison unit 802 outputs the received request source ID and ReqID values from the request source ID field 915 and the ReqID field 916 of each entry 901-0 to 901-N in the management table unit 801. Compare with each value. Actually, based on the assumption of FIG. 20 and the operation of FIG. 20, only the entry 901-0 whose value of the VALID field 914 is the logical value 1 is the comparison target.
  • step S806 in the entry 901-0, the ID of the CPU 104a is stored in the request source ID field 915, and the value “5” is stored in the ReqID field 916. Accordingly, in step S813, the comparison unit 802 outputs a logical value 1 indicating “match” from the comparator 941-0 corresponding to the entry 901-0, and performs comparisons corresponding to the other entries 901-1 to 901-N.
  • the devices 941-1 to 941-N output a logical value 0 indicating "mismatch".
  • the output destinations of these (N + 1) comparison results are the management table unit 801 and the write pointer control unit 803.
  • step S814 the write pointer control unit 803 for the data packet obtains a logical sum of (N + 1) outputs from the comparison unit 802.
  • the obtained logical sum indicates that there is a valid entry in the management table unit 801 that stores the request source ID and ReqID that match the request source ID and ReqID of the shared-type transfer data packet 603.
  • the encoder 405 outputs a VALID signal.
  • step S814 the write pointer control unit 803 outputs a duplicate write instruction to the management table unit 801. In other words, the write instruction is negated in step S814, and the write instruction is not output to the data packet storage unit 410. Therefore, the shared / transfer data packet 603 itself is not stored in the data packet storage unit 410 but is discarded.
  • step S815 the management table unit 801 determines that the entry 901-0 in which a match is detected based on the duplicate write instruction output from the write pointer control unit 803 and the (N + 1) outputs from the comparison unit 802. Set the values of the four fields.
  • the management table unit 801 sets the duplicate data VALID field 917 of the entry 901-0 to a logical value 1 indicating “valid”. Further, the management table unit 801 stores the value indicating the transfer data packet input in step S811 in the duplicate packet type field 918 of the entry 901-0.
  • management table unit 801 stores the ID of the CPU 104a input in step S811 in the duplicate packet destination ID field 919 of the entry 901-0. Further, the management table unit 801 stores the value indicating “shared type” input in step S811 in the duplicate data state field 920 of the entry 901-0.
  • the data packet Only one block in the storage unit 410 is used.
  • the first embodiment requires the data packet storage unit 410. The storage capacity is reduced by half.
  • the data packet storage unit 410 needs a capacity of 2P blocks in the comparative example.
  • the data packet storage unit 410 needs a capacity of P blocks.
  • a management table unit 801 that does not exist in the comparative example is provided, and the management table unit 801 includes entries 901-0 to 901-N realized by storage elements such as FFs. It is.
  • the packet header is sufficiently shorter than the data payload. Therefore, even if the storage capacity additionally required for the management table unit 801 is taken into consideration, the storage capacity required for the output buffer control unit in the first embodiment is significantly smaller than that in the comparative example. Therefore, even if a comparison is made with the storage capacity required not only for the data packet storage unit 410 but also for the entire output buffer control unit, the first embodiment requires only about half the capacity of the comparative example.
  • FIG. 22 shows the operation of the header merge unit 804 in the output buffer control unit 702cx when the output permission is dropped from the inter-port arbiter unit 507x after the shared type / transfer data packet is discarded by the processing of FIG. 21 in the first embodiment. It is a figure explaining the specific example of. In FIG. 22, only components related to the steps described below are extracted from the components in the output buffer control unit 702cx.
  • FIG. 22 includes a schematic diagram illustrating the operation of the header merge unit 804.
  • step S901 an output permission is output from the inter-port arbiter unit 507x to the inter-packet arbiter 402.
  • step S902 the inter-packet arbiter 402 outputs a selection signal to the inter-packet selector 430 that instructs to output the data packet, and outputs a read pointer update instruction to the read pointer control unit 407 for the data packet.
  • step S903 the read pointer control unit 407 first outputs a read instruction and a read pointer value “0000” to the management table unit 801 and the data packet storage unit 410 according to the read pointer update instruction, and then reads the read pointer value. Update. Then, the read pointer control unit 407 outputs the updated read pointer value “0001” to the comparator 403.
  • the write pointer value has been updated to “0001” in step S805 of FIG. 20
  • the read pointer value and the write pointer value coincide with each other in the execution of step S903. Therefore, the update of the read pointer causes the comparator 403 to negate an output request to the inter-packet arbiter 402. That is, no output request is output from the comparator 403 to the inter-packet arbiter 402.
  • step S904 the data packet storage unit 410 determines that the packet stored at the address “0000” indicated by the read pointer value is the header merge unit 804 and the selector 805 according to the read instruction and the read pointer value input in step S903. Output to. As described with reference to FIG. 20, the write-back data packet 601 is stored at the address “0000” “0000”.
  • step S905 the management table unit 801 performs header merging of the values of the four fields stored in the entry 901-0 for the address “0000” indicated by the read pointer value according to the read instruction input in step S903. Output to the unit 804.
  • the management table unit 801 outputs the values of the duplicate data VALID field 917, duplicate packet type field 918, duplicate packet destination ID field 919, and duplicate data state field 920 of the entry 901-0 to the header merge unit 804.
  • the values of these fields are a logical value 1 indicating “valid”, a value indicating a transfer data packet, an ID of the CPU 104a, and a value indicating “shared type”, respectively.
  • the values of the above four fields may be collectively referred to as copy information 607 below.
  • step S 905 the management table unit 801 further outputs the logical value 1 that is the value of the duplicate data VALID field 917 of the entry 901-0 for the address “0000” indicated by the read pointer value to the selector 805. Then, as illustrated in FIG. 18A, the management table unit 801 uses the output of the FF 905 as a reset signal to reset the duplicate data VALID field 917 of the entry 901-0 to a logical value 0 indicating “invalid”.
  • step S906 the header merge unit 804 adds the replication information 607 output from the management table unit 801 in step S905 to the header of the write-back data packet 601 output from the data packet storage unit 410 in step S904. .
  • the header merge unit 804 generates a write-back data packet 608 having duplicate information by adding the duplicate information 607, and outputs it to the selector 805.
  • the header of the write-back data packet 601 includes a packet type, a destination ID, a request source ID, a ReqID, a data state, an address, and other fields. There may also be one or more reserved fields at the end of the header.
  • the address field in the header indicates the address of the main memory where the data included in the data payload is stored.
  • the header merge unit 804 inserts the replication information 607 at a predetermined position in the header of the write-back data packet 601.
  • a predetermined position is a position immediately before the reserved field at the end of the header, but the “predetermined position” can be arbitrarily determined according to the embodiment.
  • the packet type, destination ID, request source ID, ReqID, data state, address, and the like originally included in the write-back data packet 601 The other fields are followed by four fields corresponding to the duplicate information 607. Finally, there is a reserved field originally included in the write-back data packet 601.
  • the data payload of the write-back data packet 608 having duplicate information is the data payload itself of the write-back data packet 601.
  • the write-back data packet 608 having replication information includes information on the header of the write-back data packet 601 and information on the header of the shared / transfer data packet 603. Further, the write-back data packet 608 having replication information includes a data payload common to the write-back data packet 601 and the shared / transfer data packet 603.
  • the write-back data packet 601 is input to the selector 805 from the data packet storage unit 410, and the write-back data packet 608 having replication information is input from the header merge unit 804.
  • the selector 805 selects the write-back data packet 608 having replication information according to the value of the replication data VALID field 917 as the selection signal output from the management table unit 801 in step S905, and selects the inter-packet selector. Output to 430.
  • step S908 the inter-packet selector 430 selects a data packet based on the selection signal input in step S902. That is, the inter-packet selector 430 selects the write-back data packet 608 having the duplicate information that is input from the selector 805 and outputs it to the inter-port selector 508x.
  • the inter-port arbiter unit 507x outputs a selection signal for instructing the selection of the output buffer control unit 702cx to the inter-port selector 508x when the output permission to the output buffer control unit 702cx is output in step S901. Accordingly, the write-back data packet 608 having the duplicate information output from the inter-packet selector 430 to the inter-port selector 508x in step S908 is selected by the inter-port selector 508x and output to the output port 502x in FIG. Then, the write-back data packet 608 having duplicate information is output from the output port 502x to the input port 201c of the XB 102 shown in FIG. 16 via the bus 108c.
  • the write-back data packet 601 and the shared / transfer data packet 603 individually stored in the data packet storage unit 410 are individually transferred from the SC 103c to the bus 108c. Is output to XB102.
  • the write-back data packet 608 having one copy information is only output from the SC 103c to the XB 102 via the bus 108c. Therefore, according to the first embodiment, the occupation time of the bus 108c due to the output of the data packet can be shortened to about one half of the comparative example.
  • the write-back data packet 608 having the replication information has a longer packet length than the write-back data packet 601 and the shared / transfer data packet 603, which is the added replication information 607.
  • the length of the write-back data packet 608 having replication information is about one-half of the sum of the length of the write-back data packet 601 and the length of the shared / transfer data packet 603.
  • the output buffer control units 702cx, 702dx, 509ix, and 509sx output a request to the inter-port arbiter unit 507x in the SC 103c of FIG. Time is shortened. Therefore, according to the first embodiment, the latency and throughput of the entire server system 100 are improved as compared with the comparative example. That is, according to the first embodiment, the performance of the server system 100 is improved.
  • FIG. 23 is a diagram illustrating a configuration of the duplication check unit 1001, the data packet restoration unit 1002, the selector 1003, and the routing unit 713 in the first embodiment.
  • FIG. 23 is a diagram showing an extracted portion corresponding to SC103c in XB102 shown in FIG.
  • FIG. 23 shows the duplication check unit 1001, the data packet restoration unit 1002, and the selector 1003 provided on the path from the input port 201c connected to the SC 103c in FIG. 16 to the routing unit 713.
  • FIG. 23 also shows a part of the routing unit 713 (specifically, a part related to routing of a packet received by the input port 201c).
  • the routing unit 713 is configured symmetrically with respect to the four SCs 103a to 103g.
  • duplication check unit 1001, data packet restoration unit 1002, and selector 1003 as those in FIG. 23 are provided on the path from the input port 501x to the routing unit 703 in FIG.
  • the detailed illustration of the routing unit 703 in the SC 103c is omitted, the configuration of the routing unit 703 as well as the configuration of the routing unit 713 will be described later.
  • a duplication check unit 1001 a data packet restoration unit 1002, and a selector 1003 are provided on a path from the input port 201c connected to the SC 103c to the routing unit 713. Further, the duplication check unit 1001 is connected to the routing table unit 711c. Details of the routing table unit 711c will be described later with reference to FIG.
  • the duplication check unit 1001 includes a packet type check unit 1004, a duplication check unit 1005, and a comparator 1006.
  • the data packet restoration unit 1002 includes a duplicate data packet modification unit 1007, a header restoration unit 1008, and a data packet generation unit 1009.
  • the routing unit 713 includes a branch unit 306 similar to the routing unit 203 of FIG. 6 in the comparative example, and further includes a branch unit 1010, an OR circuit 1011, an OR circuit 1012, and an OR circuit 1013. 6 is connected to the output buffer control units 207ca, 207ce, and 207cg, but the branch unit 306 is connected to the OR circuits 1011, 1012, and 1013.
  • the OR circuits 1011, 1012, and 1013 are connected to the corresponding output buffer controllers 712ca, 712ce, and 712cg, respectively.
  • All or part of the packet input from the input port 201c is input to each unit as follows.
  • a packet received by the input port 201c from the SC 103c is output to the signal line 1021 connected to the input port 201c.
  • the signal line 1021 is branched into a signal line 1022 and a signal line 1023.
  • the signal line 1022 branches and is connected to the selector 1003 and the duplicate data packet correction unit 1007, and the packet is output to the selector 1003 and the duplicate data packet correction unit 1007 via the signal line 1022.
  • the header information included in the packet is output to the duplication check unit 1001 via the signal line 1023 branched from the signal line 1021.
  • the signal line 1023 further branches into a signal line 1024 and a signal line 1025, and the signal line 1025 branches into a signal line 1026 and a signal line 1027.
  • the value of the packet type field in the header information is output to the packet type check unit 1004 via the signal line 1024.
  • the value of the duplicate data VALID field in the header information is output to the duplication check unit 1005 via the signal line 1026, and the value of the destination ID field and the duplicate destination field in the header information is indicated via the signal line 1027 in the routing table unit. Is output to 711c.
  • the packet received by the input port 201c does not have a duplicate data VALID field or a duplicate packet destination ID field, for example, when it is a request packet.
  • a logical value 0 is output as a dummy value to the duplication check unit 1005 via the signal line 1026.
  • a dummy value that does not exist as a destination ID may be output to the routing table unit 711c via the signal line 1027. For example, if it is predetermined that all bits do not use a logical value of 0 as the destination ID, all bits can use a logical value of 0 as a dummy value.
  • Such output of the dummy value can be appropriately realized according to the specification that defines the packet format. For example, a packet in a format in which an optional area that may be used for any purpose is included in the header may be used in the server system 100. Then, each field of the duplicate data VALID, duplicate packet type, duplicate packet destination ID, and duplicate data state shown in FIG. 22 may use an option area. For example, the specification may determine that the option area is filled with “0” when not used.
  • a packet having a format including a field indicating the header length is used.
  • a circuit element (not shown) at the point where the signal line 1023 branches from the signal line 1021.
  • the circuit element determines whether there is a duplicate data VALID field or duplicate packet destination ID field in the packet output from the input port 201c according to the value of the field indicating the header length. Data may be output.
  • the branched signal line 1022 is not only connected to the duplicate data packet correction unit 1007 as described above, but is further branched to the signal line 1028 and the signal line 1029 to the header restoration unit 1008 and the data packet generation unit 1009, respectively. Connected. Of the packets output via the signal line 1022, the header is output to the header restoration unit 1008 via the signal line 1028, and the data payload is output to the data packet generation unit 1009.
  • FIG. 24 is a diagram for explaining the operations of the duplication check unit, the data packet restoration unit, and the selector in the first embodiment.
  • a request packet that is, a packet having no data payload
  • a data transfer request packet is input to the input port 201c.
  • the flow of operations for processing a request packet is indicated by a solid arrow in FIG.
  • step S1001r the input port 201c outputs a request packet.
  • step S1002r the destination ID field in the header of the request packet is output to the routing table unit 711c, and the packet type field in the header is output to the packet type check unit 1004. Further, as described above, dummy values of the duplicate data VALID field and duplicate packet destination ID field may be output.
  • the packet type check unit 1004 includes a determination unit 1101 for determining whether or not the input packet type value is a value indicating a data packet.
  • the determination unit 1101 encodes the input packet type value to determine that the input packet is a data packet.
  • step S1004r the determination unit 1101 instructs the selector 1003 to output the packet input from the input port 201c via the signal line 1022 in FIG. 23 as it is, instead of the input from the duplicate data packet correction unit 1007. Outputs a selection signal.
  • the selector 1003 outputs the packet input from the input port 201c to the branching unit 306 of the routing unit 713.
  • the determination unit 1101 further negates the VALID signal to be output to the duplication check unit 1005 in step S1004r.
  • step S1005r the routing table unit 711c determines the routing destination of the input packet based on the destination ID input via the signal line 1027 in FIG. 23, and outputs the output port information to the branching unit of the routing unit 713.
  • Step S1005r may be executed in parallel with steps S1003r to S1004r.
  • the branching unit 306 outputs the input request packet to the OR circuit 1011, 1012, or 1013 based on the output port information. Details of routing of packets via the OR circuit 1011, 1012, or 1013 will be described later with reference to FIG. 26, but the outline is as follows.
  • the request packet whose output destination is the output port 202c in FIG. 16 is output to the OR circuit 1011 connected to the output buffer control unit 712ca in the preceding stage of the output port 202c according to the output port information determined in step S1005r. Is done.
  • the data padded with the logical value 0 is output from the branching unit 1010 to the OR circuit 1011 as described later. Therefore, the request packet output from the branching unit 306 is output to the output buffer control unit 712ca via the OR circuit 1011.
  • routing table unit 711c for acquiring the output port information from the destination ID is similar to the routing table unit 204c of FIG. Details of the configuration of the routing table unit 711c will be described later with reference to FIG.
  • step S1001d the input port 201c outputs a data packet.
  • step S1002d the destination ID field and the duplicate packet destination ID field in the header of the data packet are output to the routing table unit 711c. Further, the packet type field in the header is output to the packet type check unit 1004. Further, the duplicate data VALID field is output to the duplicate check unit 1005. As described above, when the input data packet does not have a duplicate data VALID field or a duplicate packet destination ID field, a dummy value may be used.
  • step S1003d the determination unit 1101 in the packet type check unit 1004 determines that the input packet is a data packet.
  • the determination unit 1101 outputs (asserts) a VALID signal indicating that the input packet is a data packet to the duplication check unit 1005.
  • a logical value 1 is output to the duplication check unit 1005 in step S1004d.
  • step S1004d when a data packet is input, the determination unit 1101 sets the selection signal to the selector 1003 to an invalid value. Thereby, the determination unit 1101 instructs the selector 1003 to operate only in accordance with a selection signal from the comparator 1006 described later.
  • step S1005d the duplication check unit 1005 determines whether or not the comparator 1006 needs to perform comparison for determining whether or not restoration from the input data packet is necessary.
  • the case where a data packet is input is divided into the following (j1) to (j3).
  • the input packet is a packet that does not have valid replication information.
  • output permission is output from the inter-port arbiter unit 507x after the processing of FIG. 20 and before the shared type / transfer data packet 603 similar to FIG. 21 is input.
  • the replication information 607 as shown in FIG. 22 is not added, the data packet input to the input port 201c in the XB 102 does not have valid replication information.
  • the input packet has valid copy information, and the output port corresponding to the destination ID field is equal to the output port corresponding to the copy destination ID field.
  • a data packet having replication information may be generated from a shared / transfer data packet destined for the CPU 104e and a write-back data packet destined for the SC 103e by processing similar to that shown in FIGS. .
  • the output port corresponding to the destination ID field and the output port corresponding to the duplicate destination ID field are both the output port 202e in FIG.
  • (J3) The input packet has valid copy information, and the output port corresponding to the destination ID field is different from the output port corresponding to the copy destination ID field.
  • (j3) includes the case where the write-back data packet 608 having the copy information of FIG. 22 generated by the processing of FIGS. 20 to 22 is input to the input port 201c.
  • the routing unit 713 routes the input packet itself. This is because (j1) does not need to be restored in the first place. Also, in the case of (j2), the restoration time at a later point in time indicates the occupied time of the internal bus of XB102 or the bus between XB102 and SC (bus 108e between SC103e in the above example). This is because it can be shortened.
  • the data packet restoration unit 1002 restores two packets from the input packet, and the routing unit 713 routes the restored two packets. That is, restoration is necessary only in the case of (j3).
  • the necessity of restoration differs depending on whether the value is (j2) or (j3).
  • the duplication check unit 1005 includes an AND circuit 1102 as shown in FIG.
  • the inputs to the AND circuit 1102 are the value of the duplicate VALID field input via the signal line 1026 in FIG. 23 and the VALID signal output from the determination unit 1101 of the packet type check unit 1004.
  • the comparison by the comparator 1006 is naturally unnecessary.
  • step S1005d the output of the AND circuit 1102 becomes a logical value 0 in the case of (j1), and becomes a logical value 1 in the case of (j2) or (j3).
  • the output of the AND circuit 1102 is input to the comparator 1006.
  • the AND circuit 1102 of the duplication check unit 1005 outputs a positive logic VALID signal to the comparator 1006. Also, as shown in step S1006d, the routing table unit 711c outputs output port information and duplicate data packet output port information based on the values of the destination ID field and duplicate destination ID field input in step S1002d.
  • the “output port information” is information for identifying an output port corresponding to the destination specified in the destination ID field, as in the comparative example.
  • the “duplicate data packet output port information” is information for identifying an output port corresponding to the destination designated in the duplicate packet destination ID field.
  • FIG. 25 is a configuration diagram of the routing table unit 711c in the first embodiment. As shown in FIGS. 16 and 23, the routing table unit 711c is a component for managing routing from the SC 103c to another SC.
  • the routing table unit 711c includes FFs 307a to 307l, comparators 308a to 308l, OR circuits 309a to 309c, a selector 310, and FFs 311a to 311c similar to the routing table unit 204c illustrated in FIG. 6 in the comparative example. Similar to the comparative example, the FFs 307a to 307l each store the ID of a component such as the CPU 104a that can be a packet destination, and the FFs 311a to 311c store information for identifying the output ports 202a, 202e, and 202g.
  • the routing table unit 711c outputs the output port information from the selector 310 in the same manner as the routing table unit 204c of the comparative example, according to the value of the input destination ID field.
  • the routing table unit 711c further includes twelve comparators 1201a to 1201l, three OR circuits 1202a to 1202c, and a selector 1203.
  • the values held by the 12 sets of FFs 307a to 307l are input to the 12 comparators 1201a to 1201l, respectively. Further, the value of the copy destination ID field is input to each of the 12 comparators 1201a to 1201l.
  • Each of the comparators 1201a to 1201l compares two inputs, and outputs a logical value 1 if the two inputs match, and outputs a logical value 0 if the two inputs do not match.
  • OR circuit 1202a outputs the logical sum of the outputs of comparators 1201a to 1201d to selector 1203.
  • the OR circuit 1202b outputs the logical sum of the outputs of the comparators 1201e to 1201h to the selector 1203.
  • the OR circuit 1202c outputs the logical sum of the outputs of the comparators 1201i to 1201l to the selector 1203.
  • a total of 3 bits of control signals in which a maximum of 1 bit is a logical value 1 are input to the selector 1203.
  • the selector 1203 selects any one of the output port information held by the FFs 311a to 311c according to the bit position of the logical value 1, and outputs it as duplicate data packet output port information.
  • the selector 1203 selects the value held by the FF 311a when the output of the OR circuit 1202a is the logical value 1.
  • the selector 1203 selects a value held by the FF 311b when the output of the OR circuit 1202b is a logical value 1, and selects a value held by the FF 311c when the output of the OR circuit 1202c is a logical value 1.
  • the routing table unit 711c of FIG. 25 includes a circuit that acquires output port information from a destination ID and a circuit that acquires duplicate data packet output port information from a replication destination ID, as in the comparative example.
  • the configuration of is the same as the former.
  • the former and latter circuits share a storage element such as FF 307a holding information for identifying a destination component and a storage element such as FF 311a holding information for identifying a port.
  • the routing table unit 701x in FIG. 15 is configured in the same manner as in FIG.
  • step S1006d the routing table unit 711c outputs the output port information to the comparator 1006 and the branch unit 306, and also outputs the duplicate data packet output port information to the comparator 1006 and the branch unit 1010. Output. Note that step S1006d may be executed in parallel with steps S1004d to S1005d.
  • step S1007d the comparator 1006 executes a comparison operation based on the VALID signal from the duplication check unit 1005, the output port information from the routing table unit 711c, and the duplicate data packet output port information.
  • the comparator 1006 outputs the comparison result as a selection signal to the selector 1003 and the branch unit 1010.
  • the comparator 1006 instructs to select the output from the data packet restoration unit 1002.
  • the selection signal to be output is output. In other cases, the comparator 1006 outputs a selection signal instructing not to select the output from the data packet restoration unit 1002.
  • the comparator 1006 outputs a selection signal instructing to select an output from the data packet restoration unit 1002 in the case of (j3). In the case of (j1) or (j2), the comparator 1006 outputs a selection signal instructing not to select the output from the data packet restoration unit 1002.
  • the selector 1003 When a data packet is input, the output from the packet type check unit 1004 to the selector 1003 is an invalid value as described above and is ignored by the selector 1003. Therefore, the selector 1003 receives a packet input from the input port 201c via the signal line 1022 in FIG. 23 or a duplicate data packet correction unit 1007 in the data packet restoration unit 1002 only in accordance with a selection signal from the comparator 1006. Select a packet. Then, the selector 1003 outputs the selected packet to the branching unit 306.
  • Steps S1008d to S1010d described below are operations in the case of (j3). Except for the case of (j3) above, the operation of the data packet restoration unit 1002 does not affect the operation of the selector 1003 and the routing unit 713 in the subsequent stage for the following reason.
  • the output from the data packet restoration unit 1002 is not selected by the selector 1003.
  • the comparator 1006 outputs a selection signal that instructs not to select the output from the data packet restoration unit 1002 to the branching unit 1010.
  • the data packet restoration unit 1002 performs restoration in the same manner as described below. However, since each bit of the output of the branch unit 1010 has a logical value 0 as described above, the output from the data packet restoration unit 1002 is transmitted to the OR circuits 1011, 1012, or 1013 via the branch unit 1010. There is no.
  • step S1008d the data packet output from the input port 201c is output to the duplicate data packet correction unit 1007. Further, the header of the data packet output from the input port 201c is output to the header restoration unit 1008.
  • the data packet generation unit 1009 outputs the data payload of the data packet output from the input port 201c.
  • the duplicate data packet correction unit 1007 generates a packet in which the duplicate information is deleted from the header of the input packet, and outputs the packet to the selector 1003. That is, the duplicate data packet correction unit 1007 is first stored in the data packet storage unit 410 of the output buffer control unit (for example, 702cx) out of the original two packets before being merged by the header merge unit 804 in FIG. Restore the packet that was on the way.
  • the output buffer control unit for example, 702cx
  • step S1010d the header restoration unit 1008 generates and restores the header of the original data packet to be restored from the input header.
  • the header restoration unit 1008 restores the header of the packet that is later input to the output buffer control unit (for example, 702cx) and discarded from the original two packets.
  • the header restoration unit 1008 outputs the restored header to the data packet generation unit 1009. Note that steps S1009d and S1010d may be executed in parallel.
  • step S1011d the data packet generation unit 1009 merges (that is, concatenates) the header input from the header restoration unit 1008 with the data payload input via the signal line 1029 in FIG. Generate. That is, the data packet generation unit 1009 restores the packet that was later input to the output buffer control unit (for example, 702cx) and discarded from the original two packets. The data packet generation unit 1009 outputs the restored packet to the branching unit 1010 of the routing unit 713.
  • the output from the duplicate data packet modification unit 1007 is routed through the selector 1003 and the branch unit 306, and the output from the data packet generation unit 1009 is routed through the branch unit 1010.
  • the routing destination in the branching unit 306 and the routing destination in the branching unit 1010 are different. Therefore, the two restored packets cannot be input to the same OR circuit (any one of 1011 to 1013). Therefore, in the first embodiment, it is possible to configure the routing unit 713 using an OR circuit having a simpler structure rather than a selector.
  • FIG. 26 is a diagram for explaining a specific example of the operation of restoring the original two packets from the write-back data packet 608 having duplicate information and routing the two packets in the first embodiment.
  • a write-back data packet 608 having duplication information generated by the processing of FIG. 22 is output from the input port 201c of the XB 102 in step S1101. Then, the entire write-back data packet 608 having duplicate information is output to the duplicate data packet modification unit 1007. Further, only the header of the write-back data packet 608 having duplicate information is output to the header restoration unit 1008. Then, the data payload of the write-back data packet 608 having replication information is output to the data packet generation unit 1009.
  • step S1102 the values of some fields in the header of the write-back data packet 608 having duplicate information are output as follows.
  • the value of the destination ID field and the value of the duplicate packet destination ID field are output to the routing table unit 711c.
  • the destination ID field indicates the ID of the SC 103e
  • the duplicate packet destination ID field indicates the ID of the CPU 104a.
  • the value of the packet type field is output to the packet type check unit 1004. As shown in FIG. 22, the packet type field indicates a write-back data packet.
  • the value of the duplicate data VALID field is output to the duplicate check unit 1005. As shown in FIG. 22, the value of the duplicate data VALID field is a logical value 1 indicating “valid”.
  • step S1103 the packet type check unit 1004 encodes the input packet type, and as a result, determines that the write-back data packet 608 having the copy information input in step S1101 is a data packet. Therefore, the packet type check unit 1004 outputs a VALID signal to the duplication check unit 1005.
  • step S1104 the duplication check unit 1005 obtains a logical product of the VALID signal input from the packet type check unit 1004 and the duplication data VALID input in step S1102, and outputs the logical product to the comparator 1006.
  • the duplication check unit 1005 outputs (asserts) the VALID signal to the comparator 1006.
  • the routing table unit 711c acquires information identifying the output port 202e as output port information from the input destination ID (that is, the ID of the SC 103e), and outputs the output port information to the branch unit 306. Output. Further, the routing table unit 711 c acquires information identifying the output port 202 a from the input duplicate packet destination ID (that is, the ID of the CPU 104 a) as duplicate data packet output port information, and outputs it to the branch unit 1010.
  • step S1106 the comparator 1006 compares the output port information output from the routing table unit 711c with the duplicate data packet output port information. As a result, since the output port information and the duplicate data packet output port information do not match, the comparator 1006 outputs a selection signal to the selector 1003 and the branch unit 1010 so as to select the packet output from the data packet restoration unit 1002. To do.
  • step S1107 the duplicate data packet correction unit 1007 deletes the added duplicate information 607 from the header of the write back data packet 608 having the duplicate information shown in FIG.
  • the packet 601 is restored.
  • the reference numeral of the restored write-back data packet is “609”.
  • the duplicate data packet correction unit 1007 outputs the restored write-back data packet 609 to the selector 1003. Details of step S1107 are shown in FIG. That is, FIG. 27 is a diagram illustrating a specific example of the operation of the duplicate data packet correction unit 1007 in the first embodiment.
  • a predetermined position (specifically, a position immediately before the reserved field at the end of the header) of the header of the write-back data packet 608 having the replication information includes the replication information 607.
  • the duplicate information 607 has four fields of duplicate data VALID, duplicate packet type, duplicate packet destination ID, and duplicate data state.
  • the duplicate data packet correction unit 1007 generates the write-back data packet 609 by deleting the duplicate information 607 in the header from the write-back data packet 608 having the duplicate information.
  • step S1108 the header restoring unit 1008 generates the header of the original shared / forwarded data packet 603 shown in FIG. 21 from the input header, and the data packet generating unit The header generated in 1009 is output.
  • FIG. 28 is a diagram illustrating a specific example of the operation of the header restoration unit 1008 in the first embodiment.
  • the header restoration unit 1008 takes out a part of the field in the header of the write-back data packet 608 having the duplicate information and rearranges it appropriately, so that the original shared type / transfer of FIG. The header of the data packet 603 is restored.
  • the header restoration unit 1008 extracts the following fields from the header of the write-back data packet 608 having duplicate information, and arranges them in the following list order, so that the original shared / transfer data packet 603 Generate and restore headers.
  • values are shown in parentheses.
  • Duplicate packet type (value that indicates a transfer data packet)
  • Duplicate packet destination ID (CPU 104a ID)
  • Requester ID (CPU 104a ID)
  • ReqID (5) -Replicated data state (value indicating "shared type") -Address and other fields (not shown)-Reserved field at the end
  • the duplicate packet type, duplicate packet destination ID, and duplicate data state of the write-back data packet 608 having the duplicate information are the original shared type / transfer data packet
  • the packet type, destination ID, and data state of 603 are duplicated.
  • the original write-back data packet 601 and the shared / transfer data packet 603 are output by the CPU 104c due to the same one transfer data request packet. Therefore, in both cases, the values of the three fields of request source ID, ReqID, and address are necessarily equal. In the first embodiment, it is assumed that values of other reserved fields and fields not shown are also common to the write-back data packet 601 and the shared / transfer data packet 603.
  • the header restoration unit 1008 extracts a part of the field in the header of the write-back data packet 608 having the duplicate information as described above and rearranges it as necessary, so that the shared-type transfer data packet 603 The header can be restored.
  • the header restoration unit 1008 outputs the restored header 611 to the data packet generation unit 1009.
  • the data packet generation unit 1009 merges the restored header 611 output from the header restoration unit 1008 and the data payload output from the input port 201c in step S1109. As a result, the data packet generation unit 1009 restores the original shared / transfer data packet 603. In the following, in order to distinguish the original packet from the restored packet, the reference numeral of the restored shared / forwarded data packet is “613”.
  • FIG. 29 is a diagram illustrating a specific example of the operation of the data packet generation unit 1009 in the first embodiment.
  • the restored header 611 and the data payload 612 are input to the data packet generator 1009.
  • the data packet generation unit 1009 generates the shared / transfer data packet 613 by connecting the data payload 612 after the restored header 611, and outputs the shared / transfer data packet 613 to the branch unit 1010.
  • the selector 1003 selects the write-back data packet 609 input from the duplicate data packet correction unit 1007 of the data packet restoration unit 1002 in step S1107 according to the selection signal input in step S1006.
  • the selector 1003 outputs the selected write-back data packet 609 to the branching unit 306 of the routing unit 713.
  • step S1111 the branching unit 306 outputs the input write-back data packet 609 to the OR circuit 1012 according to the output port information input in step S1105.
  • the output port information obtained from the ID of the SC 103e that is the destination ID of the write-back data packet 608 having the replication information is information for identifying the output port 202e connected to the SC 103e. Therefore, the branching unit 306 outputs the input write-back data packet 609 to the OR circuit 1012 connected to the output buffer control unit 712ce provided in the preceding stage of the output port 202e.
  • the branching unit 306 outputs a logical value 0 corresponding to the number of bits of the packet to the OR circuit that is not selected by the output port information from the routing table unit 711c. Further, when the branching unit 1010 is instructed by the comparator 1006 to select the output from the data packet restoration unit 1002, the branching unit 1010 sends the OR circuit not selected by the duplicate data packet output port information to the number of bits of the packet. A logical value 0 is output. As described above, in the case of (j3), the output port information and the duplicate data packet output port information are exclusive.
  • the OR circuit 1012 substantially determines the write-back data packet 609 as the output buffer control unit 712ce by calculating the logical sum of each bit of the write-back data packet 609 output from the branch unit 306 and the logical value 0. Route to.
  • the restored write-back data packet 609 is further routed to the output port 202e via the output buffer control unit 712ce and output to the SC 103e.
  • step S1112 the branching unit 1010 outputs the input shared type / transfer data packet 613 to the OR circuit 1011 according to the duplicate data packet output port information input in step S1105.
  • the copy packet destination ID of the write-back data packet 608 having copy information is the ID of the CPU 104a. Therefore, the duplicate data packet output port information obtained from the ID of the CPU 104a is information for identifying the output port 202a connected to the SC 103a of the same node 101a as the CPU 104a.
  • the branch unit 1010 outputs the input shared type / transfer data packet 613 to the OR circuit 1011 connected to the output buffer control unit 712ca provided in the preceding stage of the output port 202a.
  • the branching unit 306 outputs data padded with a logical value 0 to the OR circuit 1011 that has not been selected. Therefore, the OR circuit 1011 substantially outputs the shared / transfer data packet 613 by calculating the logical sum of each bit of the shared / transfer data packet 613 output from the branch unit 1010 and the logical value 0. Routing to the buffer control unit 712ca.
  • the restored shared / transfer data packet 613 is further routed to the output port 202a via the output buffer control unit 712ca and output to the SC 103a.
  • processing for several steps may be executed in parallel.
  • the processing in the duplication check unit 1001 and the routing table unit 711c may be executed in parallel with the processing in the data packet restoration unit 1002.
  • the routing in steps S1111 and S1112 may be executed in parallel.
  • the same replication check unit 1001, data packet restoration unit 1002, and selector are also provided on the route from the input port 501x connected to the XB 102 to the routing unit 703 in each of the SCs 103a to 103g. 1003 is provided.
  • the SC 103c routing unit 703 in FIG. 15 differs from the comparative example in the portion corresponding to the input port 501x.
  • OR circuits are provided between the branch unit 306 similar to the comparative example and the output buffer control units 509xc, 509xd, 509xi, and 509xs, respectively. That is, four OR circuits are newly added as compared with the comparative example.
  • the routing unit 703 has a new branch unit similar to the branch unit 1010 of FIG.
  • the new branch unit receives a restored packet from the data packet restoration unit 1002 provided corresponding to the input port 501x, and receives a control signal from the duplication check unit 1001 and the routing table unit 701x.
  • this new branch is connected to each of the four OR circuits as in FIG.
  • routing unit 703 is the same as the comparative example in the portions corresponding to the input ports 501c, 501d, and 501i and the SC control circuit 504.
  • the first embodiment has been described above with reference to FIGS.
  • control device includes a storage unit such as a data packet storage unit 410 that stores the first packet output from the arithmetic processing unit.
  • a storage unit such as a data packet storage unit 410 that stores the first packet output from the arithmetic processing unit.
  • the capacity required for the data packet storage unit 410 as storage means is about one-half that of the comparative example as described above.
  • control device includes, for example, a management table unit 801, a comparison unit 802, and a write pointer control unit 803 shown in FIGS. 17 to 18B as components for realizing the first determination unit.
  • the first determination means compares the header of the first packet with the header of the second packet received from the arithmetic processing unit after the first packet.
  • the packet is a specific example of data
  • the header is a specific example of data control information. Based on the above comparison, the first determination means determines whether or not the first packet and the second packet are the first case having the same data payload.
  • the data payload is a specific example of the data main body.
  • management table unit 801, the comparison unit 802, and the write pointer control unit 803 also function as the following management means in cooperation.
  • the management means associates a part of the header of the second packet with the first packet and stores it as duplicate information. Further, the management means may discard the second packet in the first case.
  • the management unit causes the data packet storage unit 410 serving as a storage unit to store the second packet.
  • the following components cooperate as control means for controlling the output of the packet stored in the storage means to the data transfer device (for example, XB102). That is, at least the inter-port arbiter unit 507x, the inter-port selector 508x, the control unit 400, and the inter-packet selector 430 in FIG. 17 cooperate as control means for controlling the output of the packet to the XB 102.
  • the selector 805 further functions as part of the control means. Output of data (for example, a packet) to the XB 102 as the data transfer device may be controlled according to an output permission that permits output of data to the data transfer device.
  • the header merging unit 804 also functions as a generation unit that generates a third packet such as the write-back data packet 608 having the copy information in FIG. 22 in the first case.
  • the management table unit 801 and the selector 805 in the control unit 400 functioning as the control unit output the third packet generated by the header merge unit 804 as the generation unit to the data transfer apparatus in the first case. Control to do.
  • the management table unit 801 and the selector 805 as the control unit store both the first and second packets stored in the data packet storage unit 410 as the storage unit in the second case in the data transfer device. Control to output.
  • the management table unit 801, the comparison unit 802, and the write pointer control unit 803 as the first determination unit perform determination based on the request source ID and ReqID.
  • the request source ID is an example of request source identification information that identifies a request source device that has output a request that causes output of a packet.
  • ReqID is an example of request identification information for identifying a plurality of requests in one request source device identified by the request source identification information.
  • the management table unit 801 functioning as a part of the management means includes a management storage unit realized by, for example, entries 901-0 to 901-N in FIG. 18A.
  • the management information is stored in the entry in the management storage unit associated with the address on the data packet storage unit 410 in which the first packet is stored, thereby managing as the management unit.
  • the table unit 801 associates the duplicate information with the first packet.
  • control device such as the SC 103c may further include a duplication check unit 1001 as a second determination unit and a data packet restoration unit 1002 as a restoration unit.
  • the first embodiment will be outlined as follows by paying attention to the data transfer device such as XB102. That is, a data transfer device such as the XB 102 is connected to a plurality of devices such as SCs 103a to 103g, and transfers data between the plurality of devices.
  • a data transfer device such as the XB 102 is connected to a plurality of devices such as SCs 103a to 103g, and transfers data between the plurality of devices.
  • the data transfer device is a transmission unit for transmitting (that is, routing) a packet output from one of the plurality of devices to the other one of the plurality of devices.
  • each output buffer control unit in the XB 102 shown in FIG. 16 functions as a storage unit, a determination unit, a management unit, and a control unit in the same meaning as described from the viewpoint of paying attention to the SC.
  • Each component is included.
  • the header merge unit 804 as a generation unit is also provided in each output buffer control unit in the XB 102.
  • the XB 102 is a duplication check unit as a judging means for judging whether or not an input packet is a duplicate data packet generated from two packets having the same data payload. 1001.
  • the XB 102 also includes a data packet restoration unit 1002 as restoration means.
  • the routing unit 713 serving as a transmission unit transmits data (specifically, packet routing) based on the determination of the duplication check unit 1001.
  • the duplication check unit 1001 as a determination unit transmits not only whether the input packet is a duplication data packet but also the original two packets to the same device. It is also judged whether or not.
  • the routing unit 713 as a transmission unit transmits the input duplicated data packet itself. Conversely, when the duplication check unit 1001 determines that the original two packets are not to be transmitted to the same device, the routing unit 713 serving as a transmission unit transmits the restored original two packets to the respective destinations. Send to.
  • the first embodiment is overviewed from the viewpoint of paying attention to the SCs 103a to 103g as the control devices and the focus on the XB 102 as the data transfer device.
  • a second embodiment will be described with reference to FIG. Similarly to the first embodiment, the second embodiment is applied to a server system 100 configured as shown in FIG. 1, for example.
  • FIG. 30 is a block diagram of the CPU 104c in the second embodiment.
  • the other CPUs 104a, 104b, 104d to 104h are configured similarly to FIG.
  • the CPU 104c in the second embodiment is a multi-core CPU, specifically a dual-core CPU. That is, the CPU 104c that is an arithmetic processing unit includes CPU cores 1301a and 1301b that are arithmetic processing units. Each of the CPU cores 1301a and 1301b includes an instruction fetch control unit (not shown), a branch prediction unit, an instruction decoding unit, an instruction execution unit such as an ALU (Arithmetic Logic Unit), and a register. Depending on the architecture, the CPU cores 1301a and 1301b may further include a reservation station for out-of-order execution.
  • CPU cores 1301a and 1301b each have a cache memory (not shown).
  • the cache memory may be hierarchized. For example, an L1 (level 1) cache may be provided separately for each CPU core 1301a and 1301b, and an L2 (level 2) cache may be shared by both CPU cores 1301a and 1301b. A configuration in which the L2 cache is individually provided in each CPU core 1301a and 1301b is also possible.
  • the data cache and the instruction cache may be separated.
  • the CPU 104c includes an input port 1302 and an output port 1303 as an interface with the SC 103c in the same node 101c.
  • the input port 1302 and the output port 1303 may perform frequency conversion called “frequency change” according to the difference in operating frequency between the CPU 104c and the SC 103c.
  • the CPU 104c ID is used as the packet destination ID and request source ID.
  • the CPU core 1301a or CPU core 1301b ID is used instead of the CPU 104c ID. Used as ID. Therefore, the CPU 104c has a circuit for distributing a packet input from the SC 103c via the input port 1302 to the CPU core 1301a or 1301b according to the destination ID.
  • the first embodiment as a set of data packets having the same data payload, a write-back data packet destined for one SC and a shared / transfer data packet destined for one CPU are assumed. ing. According to the specifications of the server system 100, the first embodiment can also be applied when there is a combination of data packets having the same data payload in other combinations. Similarly, the second embodiment can be applied to a case where there are two sets of data packets destined for two different CPU cores and having the same data payload.
  • the circuit for distributing the packet includes the following components.
  • Information routing table unit 1304 A branch part 1305a similar to the branch part 1010 in FIG.
  • the packet input from the input port 1302 does not have replication information, it is output to the CPU core 1301a or 1301b according to the destination ID. If the packet input from the input port 1302 has duplicate information, the original two packets are restored and output to the CPU cores 1301a and 1301b, respectively.
  • the CPU 104c includes an output buffer control unit 1307a for the CPU core 1301a, an output buffer control unit 1307b for the CPU core 1301b, an arbiter unit 1308, and an inter-core selector 1309 in the preceding stage of the output port 1303.
  • the output buffer control unit 1307a includes a buffer that temporarily stores packets output from the CPU core 1301a, and specifically has the same configuration as the output buffer control unit 702cx of FIG. 17 of the first embodiment. The same applies to the output buffer control unit 1307b.
  • the arbiter unit 1308 performs arbitration between the output buffer control units 1307a and 1307b.
  • the arbiter unit 1308 is similar to the inter-port arbiter unit 507x in FIG. 15 and the inter-port arbiter unit 205e in FIG. 16 in the first embodiment, for example.
  • the inter-core selector 1309 selects one of the outputs from the output buffer control units 1307a and 1307b according to the arbitration result of the arbiter unit 1308 and outputs the selected output to the output port 1303.
  • the inter-core selector 1309 is the same as the inter-port selector 508x in FIG. 15 and the inter-port selector 206e in FIG. 16 in the first embodiment, for example.
  • the XB 102 in the second embodiment is configured similarly to the XB 102 in FIG. 16 in the first embodiment.
  • SC103c in 2nd Embodiment differs from 1st Embodiment in the following points. That is, the SC 103c connected to the CPU 104c in FIG. 30 includes a duplication check unit 1001, a data packet restoration unit 1002, and a selector 1003 similar to those in FIG. 23 between the input port 501c and the routing unit 703 in FIG. Then, the routing table unit 506c corresponding to the CPU 104c is replaced with one having the same configuration as the routing table unit 701x.
  • CPUs other than the CPU 104c may be configured in the same manner as in FIG. 30, and the components in each SC may be appropriately modified accordingly. Also according to the second embodiment as described above, the capacity of the buffer for temporarily storing packets used for data exchange in the server system 100 is reduced, and the bus occupation time in the server system 100 is reduced. The effect of shortening is obtained.
  • the present invention is not limited to the above-described embodiment, and can be implemented with various modifications as described below, for example.
  • the first and second embodiments are application examples to the server system 100 having the configuration shown in FIG. However, the number of nodes included in the server system 100 and the number of CPUs in each node are arbitrary.
  • the server system 100 is an example of a ccNUMA (Cache Coherent Non-Uniform Memory Access) system, but is similar to the first and second embodiments in an SMP (Symmetric Multiple Processor) system (that is, a UMA (Uniform Memory Access) system). Configurations can also be applied.
  • SMP Symmetric Multiple Processor
  • UMA Uniform Memory Access
  • the header information of the previously received data packet is stored in the request source ID field 915 and the ReqID field 916 in any of the entries 901-0 to 901-N in FIG. 18A. Yes.
  • the request source ID field 915 and the ReqID field 916 are omitted, and the comparison unit 802 in FIG. 18B reads the request source ID and ReqID from the data packet storage unit 410 instead is possible.
  • the data packet storage unit 410 is realized using a RAM, it is preferable to provide the request source ID field 915 and the ReqID field 916 in each entry 901-0 to 901-N in the management table unit 801 using FF. From the viewpoint of processing speed, it is preferable.
  • the output buffer control unit 702cx of FIG. 17 may be modified as follows. That is, when the output permission from the inter-port arbiter unit 507x is obtained, the output buffer control unit 702cx, instead of generating and outputting the data packet having the duplicate information by the header merge unit 804 in FIG. Two packets may be output continuously.
  • the output buffer control unit 702cx first outputs the first packet stored at the address indicated by the read pointer value of the data packet storage unit 410. Further, the output buffer control unit 702cx reads the replication information from the entry in the management table unit 801 corresponding to the address of the first packet. Then, the output buffer control unit 702cx restores and outputs the second packet discarded because it has the same data payload as the first packet from the read copy information and the first packet.
  • the restoration of the second packet can be realized, for example, by providing a new component similar to the data packet generation unit 1009 in FIG. 23 instead of the header merge unit 804.
  • the management table unit 801 instructs the selector 805 to output the first packet from the data packet storage unit 410, and then after the necessary time has elapsed, The instruction is switched to output the packet.
  • the above modification can be applied not only to the output buffer control unit 702cx in the SC 103c but also to the output buffer control unit in the XB 102. Further, in the case where a packet is restored at the time of output from the output buffer control unit as described above, it is not necessary to provide the duplication check unit 1001, the data packet restoration unit 1002, and the selector 1003 in FIGS. 15 can be used instead of the routing unit 703 of FIG. 15, and the routing unit 203 of FIG. 5 of the comparative example can be used instead of the routing unit 713 of FIG.
  • the storage capacity required in the output buffer control unit is about one-half that of the comparative example. The effect that the mounting area can be saved is obtained.
  • the dual core CPU is exemplified.
  • an embodiment in which the second embodiment is modified in accordance with a multi-core CPU having three or more cores is possible.
  • an embodiment including an output buffer control unit is also possible.
  • the arbiter unit 1307 and the inter-core selector 1308 as shown in FIG. 30 are not required in the CPU, and the output buffer control unit in the CPU is directly connected to the CPU output port. May be connected.
  • the input port 1302 may be directly connected to the core.
  • the second embodiment of FIG. 30 may be modified as follows.
  • the input port 1302 may be directly connected to the branch unit 1305b, and the branch unit 1305b may be directly connected to the CPU cores 1301a and 1301b.
  • the branching unit 1305b may be a 1-input 2-output demultiplexer.
  • the duplication check unit 1001, the data packet restoration unit 1002, the selector 1003, the branch unit 1305a, the OR circuit 1306a, and the OR circuit 1306b in FIG. 30 can be omitted.
  • the routing table unit 1304 can be replaced with one that only acquires output port information.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Abstract

 演算処理装置が制御装置に第1のデータと第2のデータを出力すると、制御装置は、第1のデータと第2のデータの制御情報同士を比較することで、第1のデータと第2のデータが同じデータ本体部を有するか否かを判断する。また、制御装置は、演算処理装置から入力されたデータをデータ転送装置に出力するまで一時的に保存する保存部を有する。第1のデータと第2のデータが同じデータ本体部を有する場合、制御装置は、第1のデータを保存部に保存し、第2のデータの制御情報の一部を保存する。この場合、制御装置は第2のデータを破棄してもよい。また、制御装置は、保存部に保存した第1のデータと、第2のデータの制御情報から、第3のデータを生成し、第3のデータをデータ転送装置に出力してもよい。

Description

制御装置、データ転送装置、情報処理装置、演算処理装置および情報処理装置の制御方法
 本発明は、複数の演算処理装置を用いた情報処理技術に関する。
 近年、マルチCPU(Central Processing Unit)システム(マルチプロセッサシステムともいう)の利用が一般化している。例えば、ノード間を相互に接続するノード相互接続スイッチにより結合されたノードを2つ以上有するNUMA(Non-Uniform Memory Access;不均等メモリアクセス)コンピュータシステムなどが開示されている。
 上記NUMAコンピュータシステムにおける各ノードは同一でもよい。各ノードは、ローカル相互接続に結合される処理ユニットとノード相互接続スイッチとの間に結合される。ノード制御装置は、ローカル相互接続上で受信される選択命令を、ノード相互接続スイッチを介して他のノードに伝送することにより、受信された選択命令をローカル相互接続上に伝送して、他のノードのためのローカル・エージェントとして機能する。
 また、近年では多くのコンピュータシステムにおいてCPUがキャッシュメモリを備えている。そして、複数の装置が主記憶装置を共有する場合にキャッシュメモリ間のデータの整合性であるキャッシュコンシステンシ(Cache Consistency)(キャッシュコヒーレンシ(Cache Coherency)ともいう)を保つための様々な技術が知られている。
特開2003-44455号公報 特開2002-342162号公報 特開平9-237223号公報
 本発明は、同じデータ本体部を有する複数のデータが出力される場合に着目して、データを保存するのに必要な容量を削減することを目的とする。
 開示の技術の第1の態様によれば、演算処理装置およびデータ転送装置の間でのデータの転送を制御し、保存手段と判断手段と管理手段と制御手段を備える制御装置が提供される。
 前記保存手段は、前記演算処理装置から出力された第1のデータを保存する。
 前記判断手段は、前記第1のデータの制御情報と、前記第1のデータより後に前記演算処理装置から受け取った第2のデータの制御情報を比較することで、前記第1のデータと前記第2のデータが同じデータ本体部を有する第1の場合であるか否かを判断する。
 前記管理手段は、前記第1の場合は、前記第2のデータの前記制御情報の一部を前記第1のデータと関連づけた複製情報として保存する。また、前記管理手段は、前記第1の場合以外である第2の場合は、前記保存手段に前記第2のデータを保存させる。
 前記制御手段は、前記保存手段に保存されたデータの前記データ転送装置への出力を制御する。
 開示の技術の第2の態様によれば、第1の装置と第2の装置を含む複数の装置と接続され、前記複数の装置間でのデータの転送を行うデータ転送装置が提供される。前記データ転送装置は、送信手段と保存手段と判断手段と管理手段と制御手段を備える。
 前記送信手段は、前記複数の装置のうちの1つから出力されたデータを前記複数の装置のうちの他の1つへ送信する。
 前記保存手段は、前記第1の装置から受け取った、前記第2の装置へ送信する第1のデータを前記第2の装置へ出力する前に保存しておく。
 前記判断手段は、前記第1の装置から受け取り、前記第1のデータより後に前記送信手段により送信した、前記第2の装置へ送信する第2のデータの制御情報を、前記第1のデータの制御情報と比較する。その比較により、前記判断手段は、前記第1のデータと前記第2のデータが同じデータ本体部を有する第1の場合であるか否かを判断する。
 前記管理手段は、前記第1の場合は、前記第2のデータの前記制御情報の一部を前記第1のデータと関連づけた複製情報として保存する。また、前記管理手段は、前記第1の場合以外である第2の場合は、前記保存手段に前記第2のデータを保存させる。
 前記制御手段は、前記保存手段に保存されたデータの前記第2の装置への出力を制御する。
 開示の技術の第3の態様によれば、複数の制御装置と、前記複数の制御装置間でのデータの転送を行うデータ転送装置を備える情報処理装置が提供される。複数の制御装置には、下記の生成手段をさらに備えた第1の態様と同様の第1の制御装置が含まれる。
 前記生成手段は、第1の態様に関して説明した前記第1の場合に、前記保存手段が保存する前記第1のデータと前記管理手段が保存する前記複製情報から、第3のデータを生成する。
 そして、第3の態様において前記第1の制御装置の前記制御手段は、前記第1の場合には前記生成手段が生成した前記第3のデータを前記データ転送装置に出力するよう制御する。また前記第1の制御装置の前記制御手段は、前記第2の場合には前記保存手段が保存する前記第1のデータと前記第2のデータの双方を前記データ転送装置に出力するよう制御する。
 また、第3の態様における前記データ転送装置は、前記第1の制御装置から受け取ったデータの制御情報に基づいて、前記第1の態様に関して説明した前記第1の場合か前記第2の場合かを判断する第2の判断手段を備える。
 前記データ転送装置はさらに、前記第1の場合に、前記第3のデータから前記第1のデータと前記第2のデータを復元する復元手段を備える。そして、前記データ転送装置は、前記第2の判断手段による判断に基づいて、前記第3のデータを送信するか、または前記復元手段が復元した前記第1のデータと前記第2のデータを送信する送信手段を備える。
 開示の技術の第4の態様によれば、記憶部と演算処理部と保存手段と判断手段と管理手段と生成手段と制御手段を備えた演算処理装置が提供される。第4の態様における前記保存手段、前記判断手段、前記管理手段、および前記制御手段は、第1の態様における前記制御装置のものと類似である。また、第4の態様における前記生成手段は、第3の態様における前記制御装置のものと類似である。
 開示の技術の第5の態様によれば、第3の態様の情報処理装置の制御方法が提供される。
 したがって、開示の技術によれば、いずれの態様においても第1の場合に第2のデータを保存する必要がないため、保存手段に必要な記憶容量を削減することが可能である。
複数のCPUを備えるシステムの例を示す構成図である。 第1のキャッシュプロトコルにしたがったサーバシステムの動作例を示す図である。 第2のキャッシュプロトコルにしたがったサーバシステムの動作例を示す図である。 第3のキャッシュプロトコルにしたがったサーバシステムの動作例を示す図である。 比較例におけるXBの構成図である。 比較例におけるXBの一部を抜粋して詳細を示した構成図である。 比較例における出力バッファ制御部の構成図である。 比較例におけるライトポインタ制御部の構成図である。 比較例におけるリードポインタ制御部の構成図である。 比較例におけるSCの構成図である。 比較例におけるディレクトリの例を示す図である。 比較例においてCPUがライトバックデータパケットをSCに出力したときの、SC内の出力バッファ制御部の動作を説明する図である。 比較例においてCPUが続いて転送データパケットをSCに出力したときの、SC内の出力バッファ制御部の動作を説明する図である。 第1実施形態によるサーバシステムの動作の概要を示す図である。 第1実施形態におけるSCの構成図である。 第1実施形態におけるXBの構成図である。 第1実施形態におけるSC内の出力バッファ制御部の構成図である。 第1実施形態における管理テーブル部の構成図である。 第1実施形態における比較部とライトポインタ制御部の構成図である。 第1実施形態における出力バッファ制御部の動作を説明する図である。 第1実施形態において先にライトバックデータパケットが入力されたときの出力バッファ制御部の動作の具体例を説明する図である。 第1実施形態においてライトバックデータパケットの後から共有型・転送データパケットが入力されたときの出力バッファ制御部の動作の具体例を説明する図である。 第1実施形態において共有型・転送データパケットが破棄された後にポート間アービタ部から出力許可が下りたときの出力バッファ制御部内のヘッダマージ部の動作の具体例を説明する図である。 第1実施形態における複製チェック部、データパケット復元部、セレクタ、およびルーティング部の構成を示す図である。 第1実施形態における複製チェック部、データパケット復元部、およびセレクタの動作を説明する図である。 第1実施形態におけるルーティングテーブル部の構成図である。 第1実施形態において複製情報を持ったライトバックデータパケットから元の2つのパケットを復元して2つのパケットをルーティングする動作の具体例を説明する図である。 第1実施形態における複製データパケット修正部の動作の具体例を説明する図である。 第1実施形態におけるヘッダ復元部の動作の具体例を説明する図である。 第1実施形態におけるデータパケット生成部の動作の具体例を説明する図である。 第2実施形態におけるCPUの構成図である。
 以下、実施形態について図面を参照しながら詳細に説明する。開示の技術の理解を助けるため、まずライトバック型のキャッシュメモリを用いるシステムについて説明する。
 ライトバック型のキャッシュメモリを用いるシステムにおいては、キャッシュメモリに格納されたデータを主記憶装置に書き戻すライトバック動作が行われる。ライトバック動作が行われるときのシステム性能の向上に関する技術としては、以下のようなものが開示されている。
 例えば、ライトバック型キャッシュを有するCPUとホストブリッジとがCPUローカルバスを介してメインメモリを共有するシステムにおける次のような構成が開示されている。
 ホストブリッジは、メインメモリへのリードアクセスアドレスを保持するアドレス保持回路と、アドレス保持回路に保持されたアドレスとCPUによるライトバック動作におけるラインアドレスとの一致を検出するアドレスヒット判定回路を備える。また、両アドレスが一致した場合に、ライトバック動作におけるライトデータを取り込み、且つ、メインメモリへのアクセスをキャンセルするメモリアクセス制御回路をホストブリッジが備える。以上の構成により、所望のデータを早期に得るとともに、ローカルバスのトラフィックを軽減することができる。
 また、CPUローカルバスとIO(Input/Output)バスとをバスブリッジで連結してなるコンピュータシステムにおける次のような技術も開示されている。すなわち、IOバスに接続されるバスマスタ装置からIOバスを介し主記憶装置へのアクセス動作であるリード要求があった際、キャッシュ検査部によりキャッシュへのライトバックが必要であることが通知された場合、次のようにして主記憶アクセス動作が高速化される。
 具体的には、書き戻し制御部は、主記憶制御部を介してライトバックデータを主記憶装置に書き戻すのと同時に、ライトバックデータをデータバイパス部にも転送する。すると、データバイパス部を介して、リード要求アドレスに応じた目的のデータが直接IOバス制御部に取り込まれ、IOバスからバスマスタ装置へ転送される。以上により、主記憶装置に対する書き戻し処理の終了を待って主記憶装置からのデータ読み出し処理を行う必要がなくなる。
 以上のように、ライトバック動作が行われるときのシステム性能の向上に関するいくつかの技術が開示されている。しかしながら、複数のCPUを有するマルチCPUシステムにおいてライトバック型のキャッシュメモリが用いられると、キャッシュプロトコルによっては、システム内の制御装置およびデータ転送装置が比較的大きなサイズのバッファを必要とすることがある。
 以下では、ライトバック型のキャッシュメモリが用いられる場合に、システム内の制御装置およびデータ転送装置に必要なバッファサイズについて、具体的に説明する。
 図1は複数のCPUを備えるシステムの例を示す構成図である。図1において、情報処理装置であるサーバシステム100は、複数のノード101a、101c、101e、101gとデータ転送装置であるクロスバスイッチ(以下「XB」と略す)102を備える。複数のノード101a、101c、101e、101gはXB102を介して互いに接続されている。図1のサーバシステム100のようにノード拡張された構成は、サーバシステムに好適である。
 図1においてノード101aは、バス108aによりXB102と接続されたシステムコントローラ(以下「SC」と略す)103aを備える。ノード101aはさらに、内部バスを介してSC103aに接続されたCPU104a、CPU104b、メインメモリ105a、ディレクトリ106a、およびIOC(Input/Output Component)107aを備える。ノード101a内の各部は、例えば、システムボードとも呼ばれる1枚のマザーボード上に実装されていてもよい。また、図1の例では、他のノード101c,101e、および101gも、ノード101aと同様に構成されている。
 サーバシステム100内の各コンポーネントについてさらに詳しく説明すれば下記のとおりである。
 XB102はSC103a~103g間でのデータ伝送を行うスイッチング機構である。後述のように、サーバシステム100内のコンポーネント間でのデータの授受はパケットの伝送により行われる。XB102は、ノード101a~101g間でのパケットのルーティングを行うデータ転送装置の一例である。
 SC103aは、ノード101a内のコンポーネント間のデータ伝送を制御するとともに、ノード101a内の各コンポーネントと他のSC103c~103gとの間のデータ伝送を制御する制御装置である。また、SC103aはディレクトリ106aの参照や更新の制御も行う。SC103a~103gもSC103aと同様である。
 CPU104a~104hのそれぞれは、演算や制御などを実行し、不図示のキャッシュメモリを備えている。キャッシュメモリは階層化されていてもよい。
 メインメモリ105aは、例えばRAM(Random Access Memory)である。メインメモリ105aへのアクセスは、同じノード101a内のコンポーネントからも行われ、他のノード101c~101g内のコンポーネントからも行われる。メインメモリ105c~105gもメインメモリ105aと同様に、いずれのノード内のコンポーネントからもアクセス可能なRAMである。
 ディレクトリ106aは、同じノード101a内のメインメモリ105aに格納されたデータがどのCPU内のキャッシュメモリにキャッシュされているかを、例えばテーブル形式で格納する。つまり、ディレクトリ106aの参照や更新を行うSC103aは、データ伝送を制御するだけでなく、メインメモリ105aとCPU内のキャッシュメモリ間のデータ整合性であるキャッシュコンシステンシの管理も行っている。ディレクトリ106c~106gもディレクトリ106aと同様に、同じノード内のメインメモリ105c~105gに格納されたデータについて管理する。
 IOC107aは、不図示のPCI(Peripheral Component Interconnect)デバイスなどの様々なI/Oデバイスと、IOC107aとSC103aの間のシステムバスとを接続するチップセットコンポーネントである。IOC107c~107gもIOC107aと同様である。
 以上のように構成されたサーバシステム100において、コンポーネント間の通信はパケットの送受信により行われる。パケットは、データの要求、データの通知、データの要求への応答、データの転送などのために送信される。パケットは、少なくともパケットヘッダを有し、パケットの種類(タイプ)によってはデータペイロードをさらに有する。パケットは、さらに誤り検出用のトレイラを有していてもよい。
 以下では、パケットヘッダが以下の(a1)~(a3)の各フィールドを含むものとして説明する。
 (a1)パケットの宛先のコンポーネントを識別する宛先ID(identifier)。
 (a2)パケットの要求元のコンポーネントを識別する要求元ID。例えば、CPU104aが他のコンポーネントに何かを要求するときに送信する要求パケットの要求元IDは、CPU104aのIDである。また、CPU104aからの要求パケットに対する応答としてCPU104aへ送信されるパケットの要求元IDも、CPU104aのIDである。
 (a3)1つの要求元からの異なる複数の要求(リクエスト)を識別する要求ID(以下「ReqID」と略す)。
 図1の例において、各CPU104a~104hが備えるキャッシュメモリがライトバック型のキャッシュメモリであるとする。すると、メインメモリ105a~105gのいずれかから読み出されてキャッシュメモリに格納されたデータが書き換えられた場合、ライトバック動作が必要である。しかし、具体的にどのタイミングでライトバック動作が行われるかは、キャッシュコンシステンシを保つためのキャッシュプロトコルに応じて様々である。
 キャッシュプロトコルは、キャッシュラインの状態(ステート)の頭文字を使って、「MESIプロトコル」、「MOSIプロトコル」、「MOESIプロトコル」などと呼ばれる。ステートには以下の(b1)~(b5)のようなものがある。
 (b1)M(Modified)ステートは、キャッシュラインが1つのCPUのキャッシュメモリにだけ格納されており、かつキャッシュライン内の少なくとも一部のデータが、キャッシュメモリに格納された後で書き換えられた状態である。すなわち、Mステートのキャッシュラインはダーティ(dirty)である。
 (b2)E(Exclusive)ステートは、キャッシュラインが1つのCPUのキャッシュメモリにだけ格納されており、かつキャッシュラインがキャッシュメモリに格納された後で書き換えられていない状態である。すなわち、Eステートのキャッシュラインはクリーン(clean)である。
 (b3)S(Shared)ステートは、同じキャッシュラインが他のCPUのキャッシュメモリにも格納されている状態である。
 (b4)I(Invalid)ステートは、キャッシュラインが無効化された状態である。
 (b5)O(Owned)ステートは、メインメモリへのライトバックを行う責任を持った状態である。Oステートのキャッシュラインはダーティであり、同じキャッシュラインが他のCPUのキャッシュメモリにも格納されている。
 キャッシュプロトコルによって、利用するステートやステート間の遷移の仕方が異なり、ライトバックの仕方も異なる。そして、CPUの仕様によって、どのキャッシュプロトコルが採用されるかということが決まっている。
 例えば、CPU104cがMステートで保持しているダーティなキャッシュラインのデータに対して共有型・データ転送要求が到来した場合のCPU104cの動作には、CPUの仕様およびキャッシュプロトコルにより以下の(c1)~(c3)の3種類の動作をとりうる。
 (c1)CPU104cはライトバックデータパケットのみを出力する。データを要求した要求元への共有型・転送データパケットの送信は、ライトバックデータパケットを受け取り、メインメモリへデータをライトバックするSCが行う。なお、CPU104cにおいて、共有型・データ転送要求により要求されたキャッシュラインは、キャッシュプロトコルに応じてIまたはSステートへ遷移する。
 (c2)CPU104cはデータを要求した要求元を宛先とする共有型・転送データパケットのみを出力する。また、CPU104cにおいて、共有型・データ転送要求により要求されたキャッシュラインは、Oステートへ遷移する。例えばMOESIプロトコルでは(c2)の動作が行われ、ライトバックはすぐには行われない。
 (c3)CPU104cはライトバックデータパケットと共有型・転送データパケットの双方を出力する。CPU104cにおいて、共有型・データ転送要求により要求されたキャッシュラインは、キャッシュプロトコルに応じてIまたはSステートへ遷移する。
 なお、以下の説明では、次の(d1)~(d4)に示すパケットタイプが定義されているものとして説明する。
 (d1)CPUが、サーバシステム100内のいずれかのメインメモリに格納されているデータを要求するときに用いる「メモリアクセス要求パケット」がある。キャッシュプロトコルに応じて、メモリアクセス要求パケットには、排他型、共有型などの種類がある。
 (d2)メモリアクセスが要求された対象データを、あるCPUがキャッシュしていたときに、メモリアクセスを要求した要求元へのデータの転送を要求するために用いられる「データ転送要求パケット」がある。例えば、後述の図4の例のように、要求元以外のSCがデータ転送要求パケットを出力する。キャッシュプロトコルに応じて、データ転送要求パケットにも、排他型、共有型などの種類がある。例えば、共有型のデータ転送要求パケットは、あるCPU内のキャッシュメモリにキャッシュされたデータを他のCPUに転送することを求めるパケットである。
 (d3)CPUが、自分のキャッシュメモリにキャッシュしているダーティな(すなわちMステートの)キャッシュラインのデータをメインメモリにライトバックするときに出力する「ライトバックデータパケット」がある。
 (d4)データを要求した要求元へ、要求されたデータを転送するために用いられる「転送データパケット」がある。キャッシュプロトコルに応じて、転送データパケットにも、排他型、共有型、書き戻し責任付き共有型などの種類がある。
 続いて、上記(c1)~(c3)の場合について、図2~図4をそれぞれ参照してより具体的に説明する。
 図2は、第1のキャッシュプロトコルにしたがったサーバシステム100の動作例を示す図である。
 ステップS101において、CPU104aは、メインメモリ105eに格納されたデータを要求するため、SC103eを宛先とする共有型・メモリアクセス要求パケットを出力する。以下、説明の便宜上、ステップS101で出力される共有型・メモリアクセス要求パケットを識別するReqIDが5であると仮定する。
 CPU104aが出力した共有型・メモリアクセス要求パケットは、SC103aとXB102を介して、メインメモリ105eと同じノード101e内のSC103eに送信される。
 するとステップS102において、共有型・メモリアクセス要求パケットを受信したSC103eは、ディレクトリ106eを参照し、要求されたデータを含むキャッシュラインをキャッシュメモリに保持しているCPUを検索する。
 以下では、ステップS102におけるディレクトリ106eの参照の結果、例えば、要求されたデータをCPU104cのみが保持していると判明したと仮定する。
 すると、ステップS103においてSC103eは、CPU104cを宛先とする共有型・データ転送要求パケットを出力する。SC103eが出力した共有型・データ転送要求パケットは、XB102とSC103cを介して、CPU104cに送信される。
 上記(c1)~(c3)に関する前提として既に説明したように、図2の例においては、要求されたデータは、CPU104cがMステートで保持しているダーティなキャッシュライン内のデータである。よって、ステップS104でCPU104cは、Mステートのキャッシュラインのデータをメインメモリ105eにライトバックするため、メインメモリ105eと同じノード101e内のSC103eを宛先とするライトバックデータパケットを出力する。出力されたライトバックデータパケットは、SC103cとXB102を介してSC103eへと送信される。
 また、上記(c1)で述べたように、CPU104cは、要求されたデータを含むキャッシュラインのステートを、キャッシュプロトコルに応じてIまたはSステートに更新する。
 そして、ライトバックデータパケットを受信したSC103eは、続くステップS105において、ステップS101でデータを要求した要求元であるCPU104aを宛先とする共有型・転送データパケットを出力する。共有型・転送データパケットのデータペイロードは、SC103eによって、ライトバックデータパケットのデータペイロードからコピーされたものである。
 共有型・転送データパケットは、XB102とSC103aを介してCPU104aに送信される。
 さらに、ステップS106においてSC103eは、受信したライトバックデータパケットに基づいて、CPU104cがMステートで保持していたキャッシュラインのデータをメインメモリ105eにライトバックする。
 以上の動作により、(c1)の場合にCPU104cが有するキャッシュメモリとメインメモリ105e間のデータ整合性であるキャッシュコンシステンシが保たれる。
 続いて、上記(c2)の場合について図3を参照して説明する。図3は、第2のキャッシュプロトコルにしたがったサーバシステム100の動作例を示す図である。
 図3におけるステップS201およびS202は、図2におけるステップS101およびS102と同様であるので説明を省略する。
 ステップS203も、図2のステップS103とほぼ同様であるが、以下の点においてステップS103とは異なる。すなわち、上記(c2)で述べたように、CPU104cは、要求されたデータを含むキャッシュラインのステートをOステートに変更する。
 そして、続くステップS204においてCPU104cは、データを要求した要求元であるCPU104aを宛先とする共有型・転送データパケットを出力する。出力された共有型・転送データパケットは、CPU104cからSC103c、XB102、およびSC103aを介してCPU104aに送信される。
 なお、図2の例とは異なり、図3の例では、ライトバックは後に行われる。具体的には、ステップS203でOステートに変更したキャッシュラインをキャッシュメモリから追い出す入れ替え(リフィル)が後に生じたとき、CPU104cはライトバックデータパケットを出力してメインメモリ105eへのライトバックを行う。
 以上の動作により、(c2)の場合にもCPU104cが有するキャッシュメモリとメインメモリ105e間のデータ整合性であるキャッシュコンシステンシが保たれる。
 続いて、上記(c3)のCPU104がライトバックデータパケットと共有型・転送データパケットの双方を出力する場合について図4を参照して説明する。図4は、第3のキャッシュプロトコルにしたがったサーバシステム100の動作例を示す図である。
 図4におけるステップS301~S304は、図2におけるステップS101~104と同様であるので説明を省略する。
 図4の例ではライトバックデータパケットを出力するステップS304に続くステップS305において、CPU104cは、ステップS301でデータを要求した要求元であるCPU104aを宛先とする共有型・転送データパケットを出力する。共有型・転送データパケットは、SC103c、XB102、およびSC103aを介して送信され、CPU104aにおいて受信される。
 なお、ステップS304とS305の実行順序は任意であり、両者が並列に実行されてもよい。また、CPU104cは、要求されたデータを含むキャッシュラインのステートを、キャッシュプロトコルに応じてIまたはSステートに更新する。
 そして、ステップS306においてSC103eは、図2のステップS106と同様に、受信したライトバックデータパケットに基づいて、CPU104cがMステートで保持していたキャッシュラインのデータをメインメモリ105eにライトバックする。
 以上の動作により、(c3)の場合にもCPU104cが有するキャッシュメモリとメインメモリ105e間のデータ整合性であるキャッシュコンシステンシが保たれる。
 以上、図2~図4を参照してキャッシュプロトコルに応じたサーバシステム100の動作例を説明したが、動作の違いに応じて、各SC103a~103gおよびXB102に必要なバッファの容量も異なる。具体的には、図4の例においては、図2および図3の例に比べて、より大きな容量のバッファが必要である。以下、その理由について説明する。
 上記のとおりXB102とSC103a~103gは、サーバシステム100内のコンポーネント間のデータ伝送を制御しており、具体的にはパケットのルーティングを行っている。そのため、XB102とSC103a~103gはいずれも、パケットを受け取る入力ポートと、入力されたパケットをルーティングするスイッチング機構と、ルーティング先のコンポーネントへとパケットを出力する出力ポートを備える。また、ルーティング先のコンポーネントにおけるパケットのオーバフローを避けるため、各SC103a~103gはXB102への出力ポートの前段にバッファを有し、XB102は各SC103a~103gへの出力ポートの前段にバッファを有する。
 例えば、SC103aは、XB102に出力するパケットをバッファに一時的に保存し、XB102から出力許可が得られると、バッファ内のパケットを出力ポートからXB102へと出力する。したがって、最大でどれくらいの量のパケットがバッファに滞留する可能性があるのかに応じて、必要なバッファの容量は異なる。
 図4の例では、キャッシュプロトコルから必然的に、ステップS304とS305という近接したタイミングで、2つのパケットがCPU104cからSC103cへ出力される。他方で、図2と図3の例では、2つのパケットがCPU104cからSC103cへ近接したタイミングで出力されるということはない。この違いのため、図4の例の方が、図2および図3の例よりも、必要なバッファの容量は大きい。
 例えばSC103cが同じノード101c内のCPU104c~104dへ出力するデータ転送要求パケットについて、応答を待たずに続けて発行できるパケットの最大数である最大アウトスタンディング(outstanding)数をPとして、SC103cに必要なバッファ容量について述べれば下記のごとくである。
 図2の例では、ステップS103でSC103cがCPU104cに1つの共有型・データ転送要求パケットを出力する。つまり、SC103cはXB102から受け取った共有型・データ転送要求パケットをCPU104cにルーティングする。
 すると、SC103cからCPU104cへの共有型・データ転送要求パケットの出力を契機として、ステップS104でCPU104cが1つのライトバックデータパケットをSC103cに出力する。したがって、SC103cは、少なくともP個のライトバックデータパケットを格納することが可能な容量のバッファを備える必要がある。
 同様に、図3の例では、ステップS203でSC103cがCPU104cに1つの共有型・データ転送要求パケットを出力することを契機として、ステップS204でCPU104cは1つの共有型・転送データパケットを出力する。したがって、SC103cは、少なくともP個の共有型・転送データパケットを格納することが可能な容量のバッファを備える必要がある。
 例えば、ライトバックデータパケットと共有型・転送データパケットのデータペイロードは、いずれも、要求された1つのキャッシュラインのデータであってもよい。したがって、図2と図3の例では、必要なバッファの容量は同様である。
 他方で、図4の例では、ステップS303でSC103cがCPU104cに1つの共有型・データ転送要求パケットを出力することを契機として、ステップS304でCPU104cは1つのライトバックデータパケットをSC103cに出力する。そして、ステップS304とほぼ同時に行われるステップS305において、CPU104cは、1つの共有型・転送データパケットをSC103cに出力する。
 したがって、SC103cは、少なくともP個のライトバックデータパケットとP個の共有型・転送データパケットを格納することが可能な容量のバッファを備える必要がある。つまり、1つの共有型・データ転送要求パケットが契機となってCPU104cからSC103cへ出力されるデータパケットの数は、図2と図3の例では1個だけであるのに対し、図4の例では2個であるため、図4の例では必要なバッファの容量が大きい。
 もちろん、SC103cが備えるバッファの容量は、例えばIOC107cから受け付けるパケットの最大アウトスタンディング数など、他の要因にも左右される。しかしながら、仕様により規定された様々な最大アウトスタンディング数が同じであれば、図2や図3の例よりも図4の例の方が、必要なバッファの容量が大きいことは上記の説明から明らかである。同様の理由から、XB102に必要なバッファの容量も、図2や図3の例よりも図4の例の方が大きい。
 続いて、開示の技術の理解を助けるため、図5~図13を参照して、比較例について詳細に説明する。その後、図14~図29を参照して、必要なバッファの容量が比較例と比べて約2分の1に削減される第1実施形態について詳細に説明する。また、必要なバッファの容量を削減するための別の構成を採用した第2実施形態について、図30を参照して説明する。
 以下、図5~図13において説明する比較例は、上記で説明した図1のサーバシステム100において図4に示したCPUがライトバックデータパケットと共有型・転送データパケットの双方を出力する動作を行う場合の例である。
 図5は、図1に示したXB102の比較例における構成図である。図1に示したように、XB102はバス108a~108gにより各SC103a~103gと接続されており、SC103a~103g間のデータ伝送を行う。図1では両向きの1本の矢印で表されている各バス108a~108gが、図5では2本の矢印により表されている。
 XB102は、SC103aから出力されたパケットを受け取る入力ポート201aと、SC103aへパケットを出力する出力ポート202aを備える。他のSC103c、103e、および103gに関しても同様に、XB102は、入力ポート201c、201e、および201g、ならびに出力ポート202c、202e、および202gを備える。
 各SC103a~103gとの間のバス108a~108gの動作周波数とXB102内部の動作周波数が異なる場合、入力ポート201a~201gのそれぞれと、出力ポート202a~202gのそれぞれは、「周波数乗り換え」と呼ばれる周波数の変換も行う。
 XB102はさらに、ルーティング部203と、4つの入力ポート201a~201gに対応する4つのルーティングテーブル部204a~204gを備える。
 ルーティング部203は各入力ポート201a~201gと接続されており、入力ポート201a~201gからパケットを受け取る。また、ルーティングテーブル部204a~204gは、入力ポート201a~201gが受け取ったパケットをどの出力ポート202a~202gに振り分けるのかを決定するテーブル(後述する図6のテーブル305)を有する。
 ルーティング部203は、ルーティングテーブル部204a~204gの決定にしたがって、入力ポート201a~201gから受け取ったパケットを振り分ける。パケットの振り分けの詳細は図6とともに後述する。
 また、XB102は、4つの出力ポート202a~202gに対応した4組の回路を有する。
 例えば、出力ポート202aに対応して出力ポート202aの前段に設けられた回路には、ポート間アービタ部205aと、ポート間セレクタ206aと、3つの出力バッファ制御部207ca、207ea、207gaが含まれる。各出力バッファ制御部207ca、207ea、207gaは、ルーティング部203、ポート間アービタ部205a、およびポート間セレクタ206aと接続されている。また、ポート間セレクタ206aは、ポート間アービタ部205aおよび出力ポート202aと接続されている。
 なお、出力バッファ制御部207caは、添え字「ca」で示すように、SC103cからSC103aへの送信(すなわち入力ポート201cから出力ポート202aへの送信)に対応する。同様に、出力バッファ制御部207eaと207gaはそれぞれ、SC103eからSC103aへの送信とSC103gからSC103aへの送信に対応する。
 詳しくは図7とともに後述するが、3つの出力バッファ制御部207ca、207ea、および207gaは、出力ポート202aを介してSC103aへ出力するパケットを保存するバッファを有する。前述の説明において、図2および図3の例に比べて図4の例ではバッファに必要な容量が大きいことを述べたが、当該バッファは具体的には図5に示した12個の出力バッファ制御部に含まれる。
 入力ポート201cがSC103cから受け取ったパケットが、ルーティング部203を介して出力バッファ制御部207caに入力されると、出力バッファ制御部207caは、ポート間アービタ部205aに対して出力リクエストを発行する。ここで「出力リクエスト」とは、出力バッファ制御部207caに入力されたパケットを、ポート間セレクタ206aを介して出力ポート202aへと出力することを求めるリクエストである。
 同様に、入力ポート201eがSC103eから受け取ったパケットが、ルーティング部203を介して出力バッファ制御部207eaに入力されると、出力バッファ制御部207eaは、ポート間アービタ部205aに対して出力リクエストを発行する。また、出力バッファ制御部207gaも同様に、パケットが入力されるとポート間アービタ部205aに対して出力リクエストを発行する。
 ポート間アービタ部205aは、出力バッファ制御部207ca、207ea、および207gaのそれぞれから発行された複数の出力リクエストを調停する。すなわち、ポート間アービタ部205aの「ポート間」とは、出力ポート202aを出力先とするパケットが入力された入力ポート201c、201e、および201gの間での調停を表している。
 なお、調停のアルゴリズムは任意である。例えば、ポート間アービタ部205aは、LRU(Least Recently Used)アルゴリズム、ラウンドロビン(round robin)アルゴリズム、あるいはFIFO(First In First Out)アルゴリズムによる調停を行ってもよい。
 調停の結果、ポート間アービタ部205aは1つの出力バッファ制御部を選択する。
 例えば、調停の結果、出力バッファ制御部207caが選択されたとする。すると、ポート間アービタ部205aは、出力バッファ制御部207caに出力許可を通知するとともに、出力バッファ制御部207caを選択したことをポート間セレクタ206aに通知する。そして、ポート間セレクタ206aは、ポート間アービタ部205aから通知された選択結果にしたがって、選択された出力バッファ制御部207ca内のバッファからパケットを受け取り、出力ポート202aへと出力する。
 以上のように、各出力バッファ制御部207ca、207ea、および207ga内のバッファは、ポート間アービタ部205aから出力許可が通知されるまで(つまり、SC103aへのルーティングを待つ間)一時的にパケットを保存しておくための領域である。
 続いて、図6を参照して、SC103cから出力されたパケットを入力ポート201cが受け取ったときのXB102の動作について、ルーティングテーブル部204cの詳細とともに説明する。
 図6は、XB102の一部を抜粋して詳細を示した構成図である。図6には、入力ポート201c、ルーティング部203の一部、ルーティングテーブル部204c、ならびに3つの出力バッファ制御部207ca、207ce、および207cgが図示されている。入力ポート201cから入力されたパケットは、ルーティング部203を介して、3つの出力バッファ制御部207ca、207ce、および207cgのいずれかに出力される。
 XB102内の他のルーティングテーブル部204a、204e、204g、および他の入力ポート201a、201e、201gとルーティング部203との間の関係も、図6と同様である。
 入力ポート201cがSC103cから受け取ったパケットを表す信号は、信号線301へ出力される。なお以下では、単に「パケットが信号線301へ出力される」のように表記する。
 信号線301は、信号線302と信号線303に分岐している。信号線302はルーティングテーブル部204cに接続されており、信号線303はルーティング部203に接続されている。分岐した信号線302を介してルーティングテーブル部204cへ送られるのは、信号線301に出力されたパケットのヘッダに含まれる宛先IDである。また、分岐した信号線303を介してルーティング部203へ送られるのは、信号線301に出力されたパケット全体である。また、ルーティングテーブル部204cは、信号線304によりルーティング部203と接続されている。
 以下の各図においては、上記のようにある信号線(例えば信号線301)が複数の信号線(例えば信号線302と信号線303)に分岐しており、複数の信号線それぞれへ出力されるデータ同士が異なるとき、図6のように斜めに枝分かれする線によって分岐点を示す。なお、複数に分岐した信号線に同じデータが出力される場合は、後述の図8における信号線の分岐点のように、黒丸を用いて分岐を示す。
 斜めに枝分かれする線によって図示される分岐は、例えば、以下の(e1)~(e3)を含む様々な仕方で実装することができる。
 (e1)第1と第2の回路素子は、A本の導線の組により実現される信号線(つまりビット幅がAビットの伝送路)により接続されている。また、A本の導線のうちB本は分岐して第3の回路素子に接続されている(A>B)。
 例えば図6において、第1~第3の回路素子が、それぞれ入力ポート201c、ルーティング部203、ルーティングテーブル部204cであり、信号線301と信号線303のビット幅がAビット、信号線302のビット幅がBビットであってもよい。
 (e2)第1の回路素子からは、A本の導線の組により実現される信号線にAビットの信号が出力される。A本の導線のうちB本は第2の回路素子に接続し、C本は第3の回路素子に接続している(A=B+C)。
 (e3)第1と第4の回路素子は、A本の導線の組により接続されている。また、第4の回路素子はB本の導線の組により第2の回路素子と接続され、C本の導線の組により第3の回路素子と接続されている(A≧BかつA≧C)。
 第4の回路素子は、例えば、第1の回路素子から入力されたAビットの信号のうちBビットを第2の回路素子に出力するとともに、AビットのうちCビットを第3の回路素子に出力する。第4の回路素子は、必要に応じて、Bビットの出力を遅延させてもよく、Cビットの出力を遅延させてもよい。
 例えば図6において、信号線302と信号線303が枝分かれする部分に不図示の第4の回路素子があってもよい。そして、第4の回路素子が、入力を遅延させることなく、ルーティングテーブル部204cへは信号線302を介して宛先IDを出力するとともに、ルーティング部203へは信号線303を介してパケットを出力してもよい。
 以上の(e1)~(e3)のように、斜めに枝分かれする線によって図示される分岐は、様々な実装が可能であるが、ある信号線へ出力されたデータの一部または全部が複数の信号線に分岐して出力されるという機能は、(e1)~(e3)で共通である。また、3本以上の分岐に関しても同様である。
 ここで図6の説明に戻ると、ルーティングテーブル部204cは、テーブル305を備える。また、ルーティング部203は、入力ポート201cに対応した分岐部306を備えるとともに、さらに、他の3つの入力ポート201a、201e、201gにそれぞれ対応する不図示の3つの分岐部も備えている。
 ルーティングテーブル部204cは、テーブル305を参照し、入力ポート201cが受け取ったパケットのルーティング先を、信号線302を介して入力された宛先IDに基づいて決定する。すなわち、ルーティングテーブル部204cは、入力ポート201cが受け取ったパケットを、出力ポート202a、202e、202gのいずれに出力するのかを決定する。そして、ルーティングテーブル部204cは、決定した出力ポートを識別する出力ポート情報を、信号線304を介して分岐部306に出力し、通知する。
 信号線303は、具体的にはルーティング部203内の分岐部306に接続されている。分岐部306は、例えばマルチプレクサでもよい。分岐部306は、信号線303を介して入力されるパケットを受け取り、通知された出力ポート情報に基づいて、受け取ったパケットの出力先を次のように切り換える。
 ・出力ポート情報が出力ポート202aを示す場合、分岐部306は、出力ポート202aに対応して出力ポート202aの前段に設けられた出力バッファ制御部207caへとパケットを出力する。
 ・出力ポート情報が出力ポート202eを示す場合、分岐部306は、出力ポート202eに対応して出力ポート202eの前段に設けられた出力バッファ制御部207ceへとパケットを出力する。
 ・出力ポート情報が出力ポート202gを示す場合、分岐部306は、出力ポート202gに対応して出力ポート202gの前段に設けられた出力バッファ制御部207cgへとパケットを出力する。
 このように、ルーティング部203は、各入力ポート201a~201gが受け取ったパケットを、適切な出力ポート202a~202gへ振り分けるためのスイッチング機構である。
 続いて、上記のルーティングテーブル部204cの動作について、テーブル305の詳細とともに説明する。
 テーブル305は、書き換え可能な記憶素子により実現されている。例えば、FF(フリップフロップ)によりテーブル305が実現される。テーブル305は、宛先IDとルーティング先の出力ポート情報とを関連づけて記憶している。
 具体的には、ノード101a内のSC103a、CPU104a、CPU104b、およびIOC107aそれぞれを識別するIDは、ノード101aのSC103aと接続された出力ポート202aを識別する出力ポート情報と関連づけられている。同様に、ノード101e内のSC103e、CPU104e、CPU104f、IOC107eのIDは、出力ポート202eを識別する出力ポート情報と関連づけられている。また、ノード101g内のSC103g、CPU104g、CPU104h、IOC107gのIDは、出力ポート202gを識別する出力ポート情報と関連づけられている。
 ルーティングテーブル部204cは、テーブル305のほかに、さらに比較器308a~308lと、論理和演算を行うOR回路309a~309cと、セレクタ310を備えている。また、図6の例では、テーブル305を構成するFFは、具体的には、上記の12個の宛先IDをそれぞれ記憶するための12組のFF307a~307lと、3個の出力ポート情報をそれぞれ記憶するための3組のFF311a~311cを含む。なお、宛先IDおよび出力ポート情報を表すのに用いられるビット数に応じて、1組のFF(例えばFF307aやFF311a)を構成するFFの数が決められる。
 図6に示すように、テーブル305の左列に相当し、各宛先IDを記憶している12組のFF307a~307lの各々に対応して、12個の比較器308a~308lが設けられている。また、テーブル305の右列に相当し、ルーティング先の各出力ポート情報を記憶している3組のFF311a~311cの各々に対応して、3個のOR回路309a~309cが設けられている。
 信号線302からルーティングテーブル部204cに入力された宛先IDは、比較器308a~308lのそれぞれに入力される。
 例えば、比較器308aは、比較器308aに対応するFF307aが保持している宛先IDと、入力された宛先IDとを比較する。比較器308aは、2つの宛先IDが一致すれば論理値1をOR回路309aに出力し、2つの宛先IDが一致しなければ論理値0をOR回路309aに出力する。他の比較器308b~308lに関しても同様である。
 図6の例では、OR回路309aは、比較器308a~308dからの入力の論理和をセレクタ310に出力する。同様に、OR回路309bは、比較器308e~308hからの入力の論理和をセレクタ310に出力し、OR回路309cは、比較器308i~308lからの入力の論理和をセレクタ310に出力する。
 したがって、セレクタ310には、OR回路309a~309cから1ビットずつ、合計3ビットの制御信号が入力される。この3ビットの制御信号は、1ビットのみが論理値1になるワンホット(One-Hot)信号である。セレクタ310は、論理値1のビットの位置に応じて、FF311a~311cが保持する出力ポート情報のいずれかを選択し、信号線304を介して分岐部306に出力する。すなわち、セレクタ310は次のように動作する。
 ・OR回路309aから論理値1が出力され、OR回路309bと309cから論理値0が出力された場合、セレクタ310は、OR回路309aに対応するFF311aが保持する出力ポート情報を分岐部306に出力する。
 ・OR回路309bから論理値1が出力され、OR回路309aと309cから論理値0が出力された場合、セレクタ310は、OR回路309bに対応するFF311bが保持する出力ポート情報を分岐部306に出力する。
 ・OR回路309cから論理値1が出力され、OR回路309aと309bから論理値0が出力された場合、セレクタ310は、OR回路309cに対応するFF311cが保持する出力ポート情報を分岐部306に出力する。
 以上説明したようにルーティングテーブル部204cが動作することにより、入力ポート201cが受け取ったパケットは、ヘッダに指定された宛先IDに応じて、出力バッファ制御部207ca、207ce、207cgのいずれかへと適切に振り分けられる。
 続いて、図7を参照して出力バッファ制御部の詳細を説明する。図7は出力バッファ制御部207caの構成図であるが、図5に示した他の11個の出力バッファ制御部も同様の構成である。
 図7に示すように、出力バッファ制御部207caは、制御部400と、データパケット保存部410と、要求パケット保存部420と、パケット間セレクタ430を備える。また、図5に関して説明したとおり、出力バッファ制御部207caは、ルーティング部203、ポート間アービタ部205a、およびポート間セレクタ206aと接続されている。
 制御部400は、出力バッファ制御部207ca全体を制御しており、詳しくは後述するが、例えば下記(f1)~(f4)のような動作を行う。
 (f1)データパケット保存部410および要求パケット保存部420へのパケットの書き込みの制御
 (f2)データパケット保存部410および要求パケット保存部420からパケット間セレクタ430へのパケットの出力の制御
 (f3)データパケット保存部410と要求パケット保存部420の双方にパケットが保存されているときに、いずれに保存されたパケットをパケット間セレクタ430へ出力するのか、という調停
 (f4)ポート間アービタ部205aへの出力リクエストの発行の制御
 また、制御部400は、上記(f3)の制御を行うパケット間アービタ部401を備える。パケット間アービタ部401は、パケット間アービタ402と、比較器403と、比較器404を含む。さらに、制御部400は、パケットタイプに応じたVALID信号を出力するエンコーダ405を備える。具体的には、エンコーダ405はデータパケットと要求パケットを判別してVALID信号を出力する。
 なお、以下の説明において「データパケット」とはデータペイロードを有するパケットであり、「要求パケット」とはデータペイロードを持たないパケットである。例えば、上記(d3)のライトバックデータパケットと(d4)の転送データパケットは、データパケットの例である。また、(d1)のメモリアクセス要求パケットと(d2)のデータ転送要求パケットは、要求パケットの例である。
 また、制御部400は、データパケット用のライトポインタ制御部406とリードポインタ制御部407を備え、要求パケット用のライトポインタ制御部408とリードポインタ制御部409を備える。
 「リードポインタ」および「ライトポインタ」とは、データパケット保存部410および要求パケット保存部420内の番地を示すポインタである。ライトポインタは、次にパケットを保存する番地を表し、リードポインタは、次に読み出すパケットが保存されている番地を表す。
 データパケット保存部410はデータパケットを一時的に保存するバッファであり、要求パケット保存部420は要求パケットを一時的に保存するバッファである。すなわち、上記の各図の説明における「バッファ」とは、データパケット保存部410と要求パケット保存部420であり、特に、上記の説明で注目したバッファの容量は、データペイロードを保存するだけの容量が要求されるデータパケット保存部410の容量である。データパケット保存部410と要求パケット保存部420には、例えばRAMが用いられる。
 また、データパケット保存部410と要求パケット保存部420におけるパケットのリード制御およびライト制御は、FIFOアルゴリズムにしたがっている。よって、詳しくは図8とともに後述するが、ライトポインタ制御部406と408は、FF(Flip-Flop)を使ったカウンタによってライトポインタを管理することができる。同様に、詳しくは図9とともに後述するが、リードポインタ制御部407と409も、FFを使ったカウンタによってリードポインタを管理することができる。
 また、パケット間セレクタ430は、制御部400の制御にしたがって、データパケット保存部410または要求パケット保存部420のいずれかを選択し、パケットをポート間セレクタ206aへと出力する。
 なお、以下では、データパケット保存部410および要求パケット保存部420内について、次の(g1)~(g4)のように定める。
 (g1)1つのデータパケットを保存するのに必要な容量は最大Dバイトである。すなわち、データパケットは、Dバイトという固定長であるか、または、最長でDバイトの可変長であることが仕様で決められている。
 (g2)データパケット保存部410内の番地は、Dバイトを1つのブロックとして、ブロックの番号により管理される。つまり、ライトポインタ制御部406が制御するライトポインタの値、およびリードポインタ制御部407が制御するリードポインタの値は、データパケット保存部410内のブロックの番号である。
 (g3)1つの要求パケットを保存するのに必要な容量は最大Rバイトである(R<D)。すなわち、要求パケットは、Rバイトという固定長であるか、または、最長でRバイトの可変長であることが仕様で決められている。
 (g4)要求パケット保存部420内の番地は、Rバイトを1つのブロックとして、ブロックの番号により管理される。つまり、ライトポインタ制御部408が制御するライトポインタの値、およびリードポインタ制御部409が制御するリードポインタの値は、要求パケット保存部420内のブロックの番号である。
 以上、出力バッファ制御部207caの構成について説明した。続いて、ルーティング部203から出力バッファ制御部207caにパケットが出力されてから、出力バッファ制御部207caがパケットをポート間セレクタ206aへ出力するまでの動作を説明する。
 まず、ルーティング部203が信号線441を介してパケットを出力バッファ制御部207caに出力する。信号線441は、図7に示すように信号線442と信号線443に分岐しており、信号線442へはパケットが出力される。
 また、ステップS401に示すように、信号線443へはパケットヘッダ内のパケットタイプフィールドが出力される。すると、信号線443の接続先であるエンコーダ405は、パケットタイプフィールドの値に基づいて、ルーティング部203から入力されたパケットがデータパケットであるか要求パケットであるかを判別する。
 ステップS401においてパケットがデータパケットであると判明した場合の動作は下記ステップS402d~S406dのとおりである。
 エンコーダ405は、ステップS402dに示すように、データパケット用のライトポインタ制御部406にVALID信号を出力する。以下、説明の便宜上VALID信号は正論理であるとすると、ステップS402dにおいてエンコーダ405は、ライトポインタ制御部406に論理値1の信号を出力する。なお、この場合、エンコーダ405は、要求パケット用のライトポインタ制御部408には、無効を示す論理値0を出力する。
 VALID信号を受け取ったライトポインタ制御部406は、次のステップS403dにおいて、データパケット保存部410へライト指示とライトポインタ値を出力し、ライトポインタ値を更新する。また、論理値0が入力されたライトポインタ制御部408は、ライトポインタ値を更新せず、従前のライトポインタ値を保持する。 なお、データパケット保存部410への「ライト指示」とは、信号線442を介して入力されるパケットを、ライトポインタ値により示されるデータパケット保存部410内の番地に書き込むことの指示である。以下では、説明の便宜上、ライト指示も正論理であるとする。すなわち、論理値1はライト指示がアサートされていることを示し、論理値0はライト指示がネゲートされていることを示すものとする。
 ここで、ステップS403dの動作をより詳細に説明するため、図8を参照する。図8は、ライトポインタ制御部406の構成図である。
 図8に示すように、ライトポインタ制御部406はライトポインタ値を格納するFF451を備える。FF451は、エンコーダ405から入力されるVALID信号をカウントイネーブル信号として用いるカウンタ回路である。FF451のビット数は、上記(g2)で説明したデータパケット保存部410のブロックの番号の最大値による。また、ライトポインタ制御部406はエンコーダ405から入力された信号そのものをデータパケット保存部410に出力する。
 すなわち、ステップS402dでエンコーダ405からVALID信号として論理値1が入力されると、ステップS403dでライトポインタ制御部406は、入力された論理値1をそのままライト指示としてデータパケット保存部410に出力する。また、ライトポインタ制御部406は、FF451が保持するライトポインタ値をデータパケット保存部410に出力する。その後、ライトポインタ制御部406は、カウントイネーブル信号としてのVALID信号にしたがって、FF451が保持する値を1増やす。
 逆に、もしエンコーダ405から論理値0が入力されれば、ライトポインタ制御部406は論理値0をそのままデータパケット保存部410に出力し、FF451はカウントアップ動作を行わない。
 ここで図7の説明に戻ると、データパケット保存部410はステップS404dにおいて次のように動作する。すなわち、データパケット保存部410は、ステップS403dで受けたライト指示にしたがい、信号線442を介して入力されるデータパケットを、ステップS403dで入力されたライトポインタ値で示される番地に保存する。
 また、ステップS405dとして示すように、ライトポインタ制御部406は、ステップS403dで更新したライトポインタ値をパケット間アービタ部401内の比較器403に出力する。なお、ステップS404dとS405dは、同時に並行して行われてもよい。
 また、図7に示すようにリードポインタ制御部407も比較器403に接続されており、リードポインタ制御部407が保持するリードポインタが前回更新されたときに比較器403にはリードポインタ値が入力されている。
 そこで、ステップS406dにおいて比較器403は、ライトポインタ制御部406から入力されたライトポインタ値と、リードポインタ制御部407から入力されたリードポインタ値を比較する。
 比較した結果、ライトポインタ値とリードポインタ値が一致した場合は、ポート間セレクタ206aへの出力を待つためにデータパケット保存部410に保存されているデータパケットは存在しない。したがって、比較器403は、パケット間アービタ402へ出力リクエストを出力しない。換言すれば、比較器403は、出力リクエストをネゲート(negate)する。
 逆に、ライトポインタ値とリードポインタ値が不一致だった場合は、ポート間セレクタ206aへの出力を待つためにデータパケット保存部410に保存されているデータパケットが存在する。したがって、比較器403は、パケット間アービタ402へ出力リクエストを出力(すなわちアサート(assert))する。
 以上説明したステップS402d~S406dは、ステップS401においてパケットがデータペイロードを有するデータパケットであると判明した場合の動作である。逆に、ステップS401においてパケットがデータペイロードを有さない要求パケットであると判明した場合の動作は、次のステップS402r~S406rのとおりである。ステップS402r~S406rはステップS402d~S406dと類似なので、簡単に説明する。
 ステップS401においてパケットが要求パケットであると判明すると、エンコーダ405は、ステップS402rに示すように、要求パケット用のライトポインタ制御部408にVALID信号を出力するとともに、データパケット用のライトポインタ制御部406には無効を示す論理値0を出力する。
 VALID信号を受け取ったライトポインタ制御部408は、次のステップS403rにおいて、要求パケット保存部420へライト指示とライトポインタ値を出力し、ライトポインタ値を更新する。ライトポインタ制御部408も、図8のライトポインタ制御部406と同様に構成されている。
 そして、次のステップS404rにおいて、要求パケット保存部420は、ステップS403rで受けたライト指示にしたがい、信号線442を介して入力される要求パケットを、ステップS403rで入力されたライトポインタ値で示される番地に保存する。
 また、ステップS405rとして示すように、ライトポインタ制御部408は、更新後のライトポインタ値を比較器404に出力する。ステップS404rとS405rは並行して行われてもよい。
 そして、ステップS406rにおいて比較器404は、ライトポインタ制御部408から入力されたライトポインタ値と、リードポインタ制御部409から入力されたリードポインタ値を比較する。両者が一致した場合は、比較器404はパケット間アービタ402へ出力リクエストを出力せず、不一致の場合は、比較器404はパケット間アービタ402への出力リクエストを発行する。
 パケット間アービタ402は、ステップS406dまたはS406rにおいて出力リクエストを受けた場合、続くステップS407においてポート間アービタ部205aへ出力リクエストを出力する。
 なお、比較器403と比較器404の双方から出力リクエストが出力されている場合、パケット間アービタ402は、LRUアルゴリズムやラウンドロビンアルゴリズムなどによる調停を行う。パケット間アービタ402は、調停の結果、どちらの出力リクエストを先にポート間アービタ部205aへ出力するかを決定し、出力リクエストをポート間アービタ部205aへ出力する。
 図5に関して説明したように、ポート間アービタ部205aは、出力バッファ制御部207ca、207ea、および207gaからの出力リクエストを調停する。調停の結果、ステップS408でポート間アービタ部205aが出力バッファ制御部207caに対して出力許可を通知する。
 すると、ステップS407でデータパケット用の比較器403からの出力リクエストが選択されてポート間アービタ部205aに出力された場合は、出力バッファ制御部207caは、以下のステップS409d~S412dのように動作する。また、ステップS407で要求パケット用の比較器404からの出力リクエストが選択されてポート間アービタ部205aに出力された場合は、出力バッファ制御部207caは、以下のステップS409r~S412rのように動作する。
 すなわち、ステップS409dでパケット間アービタ402は、データパケットを出力するよう指示する出力パケットタイプ選択信号をパケット間セレクタ430へ出力する。例えば、出力パケットタイプ選択信号は2ビットで表され、当該2ビットがデコードされることにより、「10」はデータパケットを出力することを示し、「01」は要求パケットを出力することを示し、「00」はどちらの種類のパケットも出力しないことを示し、「11」はドントケア(don’t care)として使われない。もちろん、出力パケットタイプ選択信号は他の形式でもよい。
 また、ステップS409dでパケット間アービタ402は、データパケット用のリードポインタ制御部407に対してリードポインタ更新指示を出力する。なお、説明の便宜上、以下ではリードポインタ更新指示も正論理であるとする。
 ここで、ステップS409dの動作をより詳細に説明するため、図9を参照する。図9はリードポインタ制御部407の構成図である。
 図9に示すように、リードポインタ制御部407はリードポインタ値を格納するFF452を備える。FF452は、パケット間アービタ402から入力されるリードポインタ更新指示をカウントイネーブル信号として用いるカウンタ回路である。FF452のビット数も、上記(g2)で説明したデータパケット保存部410のブロックの番号の最大値を表現できるだけのビット数が必要とされる。また、リードポインタ制御部407は、パケット間アービタ402から入力された信号そのものをデータパケット保存部410に出力する。
 以下、図9と図7の双方を参照しながらステップS409d~S411dについて説明する。ステップS409dでリードポインタ更新指示として論理値1が入力されると、ステップS410dでリードポインタ制御部407は、入力された論理値1をそのままリード指示としてデータパケット保存部410に出力する。また、リードポインタ制御部407は、FF452が保持するリードポインタ値をデータパケット保存部410に出力する。その後、リードポインタ制御部407は、カウントイネーブル信号としてのリードポインタ更新指示にしたがって、FF452が保持する値を1増やす。
 逆に、もしパケット間アービタ402から論理値0が入力されれば、リードポインタ制御部407は論理値0をそのままデータパケット保存部410に出力し、FF452はカウントアップ動作を行わない。
 ステップS410dでリードポインタ値を更新した場合、リードポインタ制御部407は、続くステップS411dにおいて、更新したリードポインタ値をパケット間アービタ部401内の比較器403に出力する。さらに、ステップS412dにおいてデータパケット保存部410は、ステップS410dで受けたリード指示にしたがい、ステップS410dで入力されたリードポインタ値が示す番地に保存しているデータパケットをパケット間セレクタ430に出力する。
 なお、ステップS411dとS412dは、並行して行われてもよい。また、リードポインタ値が更新されなかった場合は、リード指示がアサートされないので、ステップS412dは行われない。
 以上説明したステップS409d~S412dは、ステップS407でデータパケット用の比較器403からの出力リクエストが選択された場合の動作である。逆に、ステップS407で要求パケット用の比較器404からの出力リクエストが選択された場合の動作は、次のステップS409r~S412rのとおりである。ステップS409r~S412rはステップS409d~S412dと類似なので、簡単に説明する。
 ステップS409rでパケット間アービタ402は、要求パケットを出力するよう指示する出力パケットタイプ選択信号(上記に例示した形式では「01」)をパケット間セレクタ430へ出力する。また、パケット間アービタ402は、要求パケット用のリードポインタ制御部409に対してリードポインタ更新指示を出力する。リードポインタ制御部409も図9のリードポインタ制御部407と同様に構成されている。
 ステップS409rでリードポインタ更新指示として論理値1が入力されると、ステップS410rでリードポインタ制御部409は、入力された論理値1をそのままリード指示として要求パケット保存部420に出力する。また、リードポインタ制御部409は、リードポインタ値を要求パケット保存部420に出力し、リードポインタ値を1増やす。
 逆に、もしパケット間アービタ402から論理値0が入力されれば、リードポインタ制御部409は論理値0をそのまま要求パケット保存部420に出力し、リードポインタの更新は行わない。
 ステップS410rでリードポインタ値を更新した場合、リードポインタ制御部409は、続くステップS411rにおいて、更新したリードポインタ値をパケット間アービタ部401内の比較器404に出力する。さらに、ステップS412rにおいて要求パケット保存部420は、ステップS410rで受けたリード指示にしたがい、ステップS410rで入力されたリードポインタ値が示す番地に保存している要求パケットをパケット間セレクタ430に出力する。
 なお、ステップS411rとS412rは、並行して行われてもよい。また、リードポインタ値が更新されなかった場合は、リード指示がアサートされないので、ステップS412rは行われない。
 以上のようにして、ステップS409d~S412dまたはステップS409r~S412rが実行されると、ステップS413においてパケット間セレクタ430は次のように動作する。すなわち、パケット間セレクタ430は、ステップS409dまたはS409rで入力された出力パケットタイプ選択信号にしたがって、データパケット保存部410または要求パケット保存部420からの出力を選択し、ポート間セレクタ206aへとパケットを出力する。
 以上、図5~図9を参照して、比較例におけるXB102の詳細について説明した。
 なお、図7のデータパケット保存部410には、例えば次のような場合に、同じデータペイロードを有するライトバックデータパケットと共有型・転送データパケットが保存される場合がある。すなわち、図1のCPU104aがメインメモリ105aに格納されたデータを要求するため、共有型・メモリアクセス要求パケットを出力し、要求されたデータがCPU104cにキャッシュされていると判明した場合である。
 この場合、ライトバックデータパケットと共有型・転送データパケットの双方がCPU104cから出力され、同じノード101aに属するCPU104aとSC103aにそれぞれルーティングされる。よって、図7の出力バッファ制御部207ca内のデータパケット保存部410は、同じデータペイロードを有する2つのパケットを保存する可能性がある。
 続いて、図10と図11を参照して、比較例におけるSC103cの詳細について説明する。
 図10は、図1に示したSC103cの比較例における構成図である。図示は省略したが、他のSC103a、103e、および103gもSC103cと同様の構成である。
 図10に示したように、SC103cは、バス108cを介してXB102と接続されている。さらに、SC103cは、ノード101c内のCPU104c、CPU104d、メインメモリ105c、ディレクトリ106c、およびIOC107cとも、ノード101c内のバスを介して接続されている。SC103cは、ノード101c内のコンポーネントと、他のSC103a、103e、および103gとの間でのパケット形式のデータの伝送を制御する。
 SC103cは、XB102、CPU104c、CPU104d、メインメモリ105c、ディレクトリ106c、IOC107cそれぞれからのパケットをそれぞれ受け取る入力ポート501x、501c、501d、501m、501r、および501iを備える。
 また、SC103cは、XB102、CPU104c、CPU104d、メインメモリ105c、ディレクトリ106c、IOC107cそれぞれへとパケットを出力する出力ポート502x、502c、502d、502m、502r、および502iを備える。
 以上の入力ポート501x~501iと出力ポート502x~502iは、必要に応じて、各コンポーネントの動作周波数の違いを吸収するための周波数の変換処理を行う。
 また、SC103cは、互いに接続されたメモリアクセス制御装置であるMAC(Memory Access Controller)503とSC内制御回路504を備え、メインメモリ105cへのアクセスを制御する。MAC503はさらに入力ポート501mと出力ポート502mにも接続されている。また、SC内制御回路504は入力ポート501rと出力ポート502rにも接続されている。
 SC内制御回路504は、メインメモリ105cへのメモリアクセス要求を受けた際のキャッシュコンシステンシ制御を行う。キャッシュコンシステンシ制御は、MESIプロトコルなどの予め定められたキャッシュプロトコルにしたがって行われる。また、SC内制御回路504は、キャッシュコンシステンシ制御のため、ディレクトリ106cの参照と更新も制御している。
 なお、SC内制御回路504は、同じノード101c内のCPU104c、CPU104d、またはIOC107cからメモリアクセス要求を受けることもある。また、SC内制御回路504は、XB102を介して他のノード101a、101e、または101g内のコンポーネントから、メモリアクセス要求を受けることもある。
 図11は、比較例におけるディレクトリ106cの例を示す図である。ディレクトリ106cは、同じノード101c内のメインメモリ105cを管理するデータ構造であり、SC内制御回路504がメインメモリ105cのキャッシュコンシステンシ制御を行う際に用いられる。
 図11ではディレクトリ106cをテーブル形式で表している。また、ディレクトリ106cの各エントリは、アドレスと所有者とステートの組である。
 図11の左列の「アドレス」は、メインメモリ105c内のアドレスである。
 図11の中列の「所有者」は、そのアドレスで示されるメインメモリ105c内のブロックのデータを、キャッシュラインとしてキャッシュメモリに保持しているCPUのIDである。
 図11の右列の「ステート」は、「所有者」が保持するメモリデータのステートである。キャッシュプロトコルによって、例えば上記(b1)~(b5)に例示した各種ステートのいずれかが、「ステート」を表すのに用いられる。
 ここで図10の説明に戻ると、MAC503は、SC内制御回路504から出力されるメモリアクセス要求に基づいて、実際にメインメモリ105cへデータを書き込んだり、メインメモリ105cからデータを読み出したりする制御を行う。
 また、SC103cはルーティング部505を備える。ルーティング部505は、図5および図6に示したXB102のルーティング部203と同様に、パケットの振り分けを行う。ルーティング部505は、入力ポート501x、501c、501d、および501i、ならびにSC内制御回路504と接続されている。
 また、SC103cは、入力ポート501x、501c、501d、および501i、ならびにSC内制御回路504にそれぞれ接続されているルーティングテーブル部506x、506c、506d、506i、および506sを備える。ルーティングテーブル部506x、506c、506d、506i、および506sの各々は、ルーティング部505とも接続されている。各ルーティングテーブル部506x、506c、506d、506i、および506sの詳細は、図6のルーティングテーブル部204cと同様なので、詳しい説明は省略する。
 また、SC103cは、出力ポート502x、502c、502d、および502i、ならびにSC内制御回路504にそれぞれ対応した5組の回路を備える。5組の回路は、5つのコンポーネント(すなわち、出力ポート502x、502c、502d、および502i、ならびにSC内制御回路504)の前段にそれぞれ設けられている。
 例えば、出力ポート502xの前段に設けられた1組の回路は、ポート間アービタ部507xと、ポート間セレクタ508xと、出力バッファ制御部509cx、509dx、509ix、および509sxを含む。他の4つのコンポーネントの前段に設けられた回路も、出力ポート502xの前段に設けられた上記の回路と同様である。
 ポート間アービタ部507xは、XB102に備えられた図5のポート間アービタ部205aと同様である。すなわち、ポート間アービタ部507xは、出力バッファ制御部509cx、509dx、509ix、および509sxと接続され、これらの出力バッファ制御部509cx、509dx、509ix、および509sxからの出力リクエストを調停する。
 また、ポート間セレクタ508xは、XB102に備えられた図5のポート間セレクタ206aと同様である。すなわち、ポート間セレクタ508xは、ポート間アービタ部507xから通知される調停の結果にしたがい、選択された出力バッファ制御部509cx、509dx、509ix、または509sxから出力されるパケットを出力ポート502xへと出力する。
 なお、出力バッファ制御部509cxには、CPU104cから入力ポート501cが受け取ったパケットが、ルーティング部505を介して入力される。同様に、出力バッファ制御部509dxには、CPU104dから入力ポート501dが受け取ったパケットが、ルーティング部505を介して入力される。
 また、出力バッファ制御部509ixには、IOC107cから入力ポート501iが受け取ったパケットが、ルーティング部505を介して入力される。そして、出力バッファ制御部509sxには、メインメモリ105cから入力ポート501m、MAC503、SC内制御回路504、およびルーティング部505を介して到着したパケットが入力される。
 以上の出力バッファ制御部509cx、509dx、509ix、および509sxの詳細は、図7に示したXB102内の出力バッファ制御部207caと同様であるので説明を省略する。また、以下では、例えば出力バッファ制御部509cx内の各コンポーネントについても、図7の出力バッファ制御部207ca内の各コンポーネントと同じ参照符号を用いる。
 以上、図1における各コンポーネントの内部について、図5~図11を参照して詳細に説明した。
 続いて、図4と同じキャッシュプロトコルが採用され、図4のステップS304とS305が行われるときの、比較例における出力バッファ制御部509cxの動作について図12と図13をそれぞれ参照して詳しく説明する。
 図4に関して説明したように、SC103cが同じノード101c内のCPU104c~104dへ出力するデータ転送要求パケットの最大アウトスタンディング数をPとする。すると、少なくとも2P個のデータパケットを保存する容量のバッファが出力バッファ制御部509cxと509dxのそれぞれに必要である。
 換言すれば、図7と同様に構成されている出力バッファ制御部509cxにおいて、データパケット保存部410は、上記(g2)で述べたDバイトのブロックを少なくとも2P個含む。図12と図13は、データパケット保存部410が少なくとも2P個のブロックを含む必要があることを説明している。
 図12は、本比較例において、CPU104cが図4のステップS304でライトバックデータパケットをSC103cに出力したときの、SC103c内の出力バッファ制御部509cxの動作を説明する図である。また、図13は、本比較例において、CPU104cが図4のステップS305で転送データパケットをSC103cに出力したときの、SC103c内の出力バッファ制御部509cxの動作を説明する図である。
 なお、上記のように出力バッファ制御部509cxは図7の出力バッファ制御部207caと同様に構成されている。そこで、図12および図13においては、出力バッファ制御部509cx内部のコンポーネントのうち、ステップS304とS305に関連するもののみを抜粋して図示し、他のコンポーネントは省略している。
 また、図12のステップS501~S507は、図7で出力バッファ制御部207cに関して説明したステップS401、S402d~S406d、およびS407にとそれぞれ同様である。
 さて、図4のステップS304においてCPU104cは、SC103eを宛先とするライトバックデータパケット601をSC103cに出力する。すると、SC103cは図10の入力ポート501cでライトバックデータパケット601を受け取る。
 ライトバックデータパケット601の宛先はSC103eであり、SC103eはSC103cとは別のノード101eにある。よって、図10のルーティングテーブル部506cは、XB102に対応する出力ポート502xを示す出力ポート情報をルーティング部505に通知する。通知にしたがい、ルーティング部505は、ライトバックデータパケット601を出力ポート502xの前段の出力バッファ制御部509cxに出力する。
 すると、図12のステップS501では、信号線443を介してライトバックデータパケット601のパケットタイプフィールド602がエンコーダ405に出力される。
 ライトバックデータパケット601はデータパケットの一種なので、エンコーダ405は、続くステップS502において、データパケット用のライトポインタ制御部406にVALID信号を出力する。
 以下、説明の便宜上、ライトバックデータパケット601が出力バッファ制御部509cxに出力された時点においてライトポインタ制御部406内のFF451が保持するライトポインタの値が「0000」であるとする。同様に、説明の便宜上、ライトバックデータパケット601が出力バッファ制御部509cxに出力された時点においてリードポインタ制御部407内のFF452が保持するリードポインタの値も「0000」であるとする。
 VALID信号を受け取ったライトポインタ制御部406は、次のステップS503において、データパケット保存部410へライト指示と「0000」というライトポインタ値を出力し、ライトポインタ値を「0001」へと更新する。
 すると、ステップS504においてデータパケット保存部410は、信号線442を介して入力されるライトバックデータパケット601を、ライト指示にしたがい、ステップS503で入力された「0000」という番地に保存する。
 また、ステップS505においてライトポインタ制御部406は、ステップS503での更新後の新たな「0001」というライトポインタ値を、パケット間アービタ部401内の比較器403に出力する。また、上記で仮定した「0000」という値のリードポインタ値も、比較器403には出力されている。
 そして、ステップS506で比較器403は、データパケット用のライトポインタ値「0001」とリードポインタ値「0000」を比較する。比較した結果、2つの値は不一致であるため、比較器403はパケット間アービタ402へ出力リクエストを出力する。
 そして、ステップS507でパケット間アービタ402は、ポート間アービタ部507xへと出力リクエストを出力する。図12の例では、すぐにはポート間アービタ部507xから出力許可が下りず、しばらくパケット間アービタ402は、ポート間アービタ部507xへ出力リクエストを出力した状態のまま、出力許可を待っているものとする。
 次に、図13を参照して、CPU104cが図4のステップS305で転送データパケットをSC103cに出力したときの、SC103c内の出力バッファ制御部509cxの動作を説明する。なお、図13におけるステップ508~S514も、図7のステップS401、S402d~S406d、およびS407とそれぞれ同様である。
 また、図12と図13に示した例においては、ステップS508は、ステップS501の後に実行されるが、必ずしもステップS502~S507の後に実行されるとは限らない。例えば、ステップS502をエンコーダ405が実行するのと並行して、ステップS508が実行されることもありうる。
 さて、図4のステップS305においてCPU104cは、CPU104aを宛先とする共有型・転送データパケット603をSC103cに出力する。すると、SC103cは図10の入力ポート501cで共有型・転送データパケット603を受け取る。
 共有型・転送データパケット603の宛先はCPU104aであり、CPU104aはSC103cとは別のノード101aにある。よって、図10のルーティングテーブル部506cは、XB102に対応する出力ポート502xを示す出力ポート情報をルーティング部505に通知する。通知にしたがい、ルーティング部505は、共有型・転送データパケット603を出力ポート502xの前段の出力バッファ制御部509cxに出力する。
 すると、図13のステップS508では、信号線443を介して共有型・転送データパケット603のパケットタイプフィールド604がエンコーダ405に出力される。
 共有型・転送データパケット603はデータパケットの一種なので、エンコーダ405は、続くステップS509において、データパケット用のライトポインタ制御部406にVALID信号を出力する。
 ライトバックデータパケット601と共有型・転送データパケット603の間にCPU104cは他のパケットを出力しなかったものとすると、ステップS509の時点でライトポインタ制御部406が管理するライトポインタ値は「0001」であり、リードポインタ制御部407が管理するリードポインタ値は「0000」である。
 VALID信号を受け取ったライトポインタ制御部406は、次のステップS510において、データパケット保存部410へライト指示と「0001」というライトポインタ値を出力し、ライトポインタ値を「0002」へと更新する。
 すると、ステップS511においてデータパケット保存部410は、信号線442を介して入力される共有型・転送データパケット603を、ライト指示にしたがい、ステップS510で入力された「0001」という番地に保存する。
 また、ステップS512においてライトポインタ制御部406は、ステップS510での更新後の新たな「0002」というライトポインタ値を、比較器403に出力する。
 ステップS513において比較器403は、データパケット用のライトポインタ値「0002」とリードポインタ値「0000」を比較し、2つの値が不一致であるため、新たな出力リクエストをパケット間アービタ402へ出力する。
 ここで、図12のステップS507の出力リクエストへの出力許可がまだ下りていないとすると、パケット間アービタ402は、ポート間アービタ部507xへ出力リクエストの信号を出力したままである。よって、ステップS514でもパケット間アービタ402は、出力リクエストをアサートした状態を保つ。
 以上、図12と図13を参照して説明したとおり、上記比較例においては、ライトバックデータパケット601と共有型・転送データパケット603の双方をデータパケット保存部410が保存する必要が生じることがある。
 ここで、ライトバックデータパケット601と共有型・転送データパケット603のデータペイロードは、図4の説明から明らかなとおり、同じである。また、一般にはパケットのヘッダよりもデータペイロードの方が長い。つまり、図12と図13の例では、番地「0000」と番地「0001」に、大部分が重複する2つのパケットが保存されることになり、バッファの使用効率が悪い。
 具体的には、出力バッファ制御部509cx内のパケット間アービタ402がポート間アービタ部507xに出力リクエストを出力してから、ポート間アービタ部507xが出力許可をアサートするまでの時間が長いと、上記のような重複した保存の必要が生じる。出力許可が得られるまでの時間は動的に決まるので、出力バッファ制御部509cxの設計においては最悪のケースを想定する必要がある。つまり、出力バッファ制御部509cxのデータパケット保存部410には、上記のとおり少なくともDバイト×2Pブロックの容量が必要である。
 また、図4ではステップS301においてCPU104aがメインメモリ105eに格納されたデータを要求しているが、CPU104eがメインメモリ105eに格納されたデータを要求する場合もありうる。その場合、データをキャッシュメモリに保存しているCPU104cが、SC103eを宛先とするライトバックデータパケットと、CPU104eを宛先とする共有型・転送データパケットの双方を出力する。
 ここで、データペイロードが共通する2つのパケットの宛先は、いずれもノード101e内のコンポーネントである。したがって、ライトバックデータパケットと共有型・転送データパケットの双方は、CPU104cからSC103eへと至る同じ経路を通る。
 この経路上では、SC103c内においてXB102に接続された出力ポート502xの前段のポート間アービタ部507xや、XB102内においてSC103eに接続された出力ポート202eの前段のポート間アービタ部205eにおいて調停が行われる。調停の結果によっては、XB102においてもライトバックデータパケットと共有型・転送データパケットを同時にバッファリングする必要が生じる。
 つまり、SC103eに接続された出力ポート202eの前段の出力バッファ制御部207ce内のデータパケット保存部410が、ライトバックデータパケットと共有型・転送データパケットの双方を保存する必要が生じることがある。
 つまり、本比較例においては、SC103a~103gとXB102がそれぞれ備える出力バッファ制御部は、同じデータペイロードを有する2つのパケットを重複して保存する必要が生じる可能性がある。
 そこで、上記のようなライトバックデータパケット601と共有型・転送データパケット603の重複した保存の必要をなくせば、バッファ(つまりデータパケット保存部410)の実装面積や消費電力の削減が可能となる。その結果、サーバシステム100全体の性能も向上する。
 以下では、SC103a~103gとXB102がそれぞれ備える出力バッファ制御部に必要なバッファ容量を上記比較例よりも削減した第1実施形態について、図14~図29を参照して説明する。
 第1実施形態においても、上記比較例と同様、図1のサーバシステム100を例として説明する。また、上記比較例との共通点については、適宜説明を省略する。以下では第1実施形態について、まず図14を参照して図4と比較しながら動作の概要を説明した後、図15と図16を参照して、比較例と異なるコンポーネントの概要を説明する。その後、図17~図29を参照して第1実施形態の詳細について説明する。
 図14は、第1実施形態によるサーバシステム100の動作の概要を示す図である。図14のサーバシステム100も、図4と同様のキャッシュプロトコルにしたがって動作し、図14のステップS601~S603は図4のステップS301~S303と同様である。
 すなわち、ステップS601において、CPU104aは、メインメモリ105eに格納されたデータを要求するため、SC103eを宛先とする共有型・メモリアクセス要求パケットを発行する。すると、共有型・メモリアクセス要求パケットは、SC103aとXB102を介して、SC103eに送信される。
 続くステップS602において、共有型・メモリアクセス要求パケットを受信したSC103eは、ディレクトリ106eを参照し、要求されたデータを含むキャッシュラインをキャッシュメモリに保持しているCPUを検索する。その結果、要求されたデータをCPU104cがEステートで保持していると判明したとする。
 すると、ステップS603においてSC103eは、CPU104cを宛先とする共有型・データ転送要求パケットを出力する。SC103eが出力した共有型・データ転送要求パケットは、XB102とSC103cを介して、CPU104cに送信される。
 そして、ステップS604においてCPU104cは、Mステートのキャッシュラインのデータをメインメモリ105eにライトバックするため、メインメモリ105eと同じノード101e内のSC103eを宛先とするライトバックデータパケットを出力する。また、CPU104cは、要求されたデータを含むキャッシュラインのステートを、キャッシュプロトコルに応じてIまたはSステートに更新する。
 詳しくは図15および図17~図22とともに後述するが、第1実施形態におけるSC103cは、比較例の図10に示した出力バッファ制御部509cxと類似の出力バッファ制御部702cx(図14には不図示)を備えている。そして、詳しくは図15に示すとおり、比較例と同様に第1実施形態におけるSC103cも、図10に示したのと同じポート間アービタ部507xとポート間セレクタ508xを備える。
 よって、ステップS604で出力されたライトバックデータパケットは、SC103c内の出力バッファ制御部702cx内のバッファに保存され、出力バッファ制御部702cxはポート間アービタ部507xに出力リクエストを発行する。
 また、ステップS605においてCPU104cは、ステップS601でデータを要求した要求元であるCPU104aを宛先とする共有型・転送データパケットを出力する。
 ステップS604とS605の実行順は、CPU104cの仕様によって決まり、逆順でもよいが、以下では説明の便宜上、ステップS604がステップS605よりも先に実行されるものとして説明する。なお、図14は、ポート間アービタ部507xによってライトバックデータパケットのXB102への出力が許可されるよりも前に、共有型・転送データパケットがステップS605においてSC103cの出力バッファ制御部702cxに出力された場合を示す図である。
 この場合、第1実施形態では、次のステップS606に示すように、出力バッファ制御部702cxは、ライトバックデータパケットを保存する。また、ステップS607に示すように、出力バッファ制御部702cxは、共有型・転送データパケットのヘッダに含まれる情報をライトバックデータパケットと関連づけて保存することで、2つのパケットをマージする。すなわち、出力バッファ制御部702cxは、同じデータペイロードを有する2つのパケットのうち、後から受け取った方の共有型・転送データパケットを破棄する。
 同じデータペイロードを有するライトバックデータパケットと共有型・転送データパケットをステップS607において1つのパケットにマージすることにより、出力バッファ制御部702cxは、パケットの保存に必要な記憶容量を削減することができる。
 ステップS607で共有型・データ転送要求パケットがライトバックデータパケットにマージされた後、ポート間アービタ部507xから出力許可が下りると、ステップS608において出力バッファ制御部702cxは、マージされたパケットをXB102に出力する。
 マージされたパケットは、元は、SC103eを宛先とするライトバックデータパケットと、CPU104aを宛先とする共有型・転送データパケットであり、宛先が異なる。そこで、次のステップS609でXB102は、マージされたパケットから元のライトバックデータパケットと共有型・転送データパケットを復元する。
 そして、XB102は、ステップS610で共有型・転送データパケットを宛先のCPU104aと同じノード101a内のSC103aに出力するとともに、ステップS611でライトバックデータパケットを宛先のSC103eに出力する。詳しくは図23~図29とともに後述するが、ステップS610とS611は、同時に実行されてもよい。または、ステップS610が先に実行されてもよく、ステップS611が先に実行されてもよい。
 以上、図14に示したように動作するサーバシステム100においては、SC103c内の出力バッファ制御部702cxに必要なバッファの容量が削減される。もちろん、出力バッファ制御部702cx以外にも、各SC103a~103gにおいて同様に必要なバッファの容量が削減される。したがって、第1実施形態によれば、SC103a~103gを実現する半導体チップの製造コストおよび実装面積を削減することができ、SC103a~103gの消費電力を抑えることもできる。
 また、ライトバックデータパケットと共有型・転送データパケットの長さの合計は、マージされた1つのパケットの長さよりも長い。したがって、図4のようにSC103cがライトバックデータパケットと共有型・転送データパケットを個々にバス108cを介してXB102へと出力する場合に比べて、第1実施形態では、バス108cの占有時間が短い。したがって、比較例と比べて第1実施形態では、他のパケットが出力許可を待つ時間が削減され、実質的にSC103cからXB102へのパケット出力のスループットが向上する。つまり、サーバシステム100全体としての性能も向上する。
 続いて、図15と図16を参照して、図14の動作を可能とするサーバシステム100内のコンポーネントの構成について、比較例との違いを中心に説明する。
 図15は、第1実施形態におけるSC103cの構成図である。図15は、比較例におけるSC103cの構成を示した図10と類似しているが、次の(h1)~(h6)の点において異なる。
 (h1)ルーティングテーブル部506xの代わりにルーティングテーブル部701xが設けられている。ルーティングテーブル部701xの構成は、図25とともに後述する。
 (h2)出力バッファ制御部509cxの代わりに、図14で説明したパケットをマージする機能を備えた出力バッファ制御部702cxが設けられている。後述するように、パケットのマージは、主に出力バッファ制御部702cx内の管理テーブル部801とヘッダマージ部804により行われる。管理テーブル部801とヘッダマージ部804は、図15では紙面の都合上、図示を省略したが、詳しくは図17~図22とともに説明する。
 (h3)(h2)と同様に、出力バッファ制御部509dxの代わりに出力バッファ制御部702dxが設けられている。
 (h4)ルーティング部505の代わりにルーティング部703が設けられている。ルーティング部505とルーティング部703の違いは、図29についての説明の後で述べる。
 (h5)入力ポート501xからルーティングテーブル部701xを経由してルーティング部703へ至る経路上に、不図示の複製チェック部1001が設けられている。なお、複製チェック部1001の詳細は図23、図24、図26とともに後述する。
 (h6)入力ポート501xからルーティング部703へ至る経路上に、不図示のデータパケット復元部1002が設けられている。なお、データパケット復元部1002の詳細は図23、図24、図26~図29とともに後述する。
 図16は、第1実施形態におけるXB102の構成図である。図16は、比較例におけるXB102の構成を示した図5と類似しているが、次の(i1)~(i9)の点において異なる。
 (i1)ルーティングテーブル部204cの代わりにルーティングテーブル部711cが設けられている。ルーティングテーブル部204cとルーティングテーブル部711cの違いは、図25とともに後述する。
 (i2)(i1)と同様に、ルーティングテーブル部204a、204e、および204gの代わりにルーティングテーブル部711a、711e、および711gが設けられている。
 (i3)出力ポート202cの前段には、出力バッファ制御部207ac、207ec、および207gcの代わりに、図14で説明したパケットをマージする機能を備えた出力バッファ制御部712ac、712ec、および712gcが設けられている。上記(h2)と同様に、パケットのマージは、主に出力バッファ制御部712ac、712ec、および712gcそれぞれの内部の管理テーブル部801とヘッダマージ部804により行われる。管理テーブル部801とヘッダマージ部804は、図16では紙面の都合上、図示を省略した。
 (i4)(i3)と同様に、他の出力ポート202a、202e、および202gの前段においても、それぞれ3個ずつ設けられた出力バッファ制御部の構成が比較例とは異なる。
 (i5)ルーティング部203の代わりにルーティング部713が設けられている。ルーティング部203とルーティング部713の違いは、図23とともに後述する。
 (i6)入力ポート201cからルーティングテーブル部711cを経由してルーティング部713へ至る経路上に、不図示の複製チェック部1001が設けられている。
 (i7)他の入力ポート201a、201e、および201gとルーティング部713の間の経路においても、同様に不図示の複製チェック部1001が設けられている。
 (i8)入力ポート201cからルーティング部713へ至る経路上に、不図示のデータパケット復元部1002が設けられている。
 (i9)他の入力ポート201a、201e、および201gとルーティング部713の間の経路においても、同様に不図示のデータパケット復元部1002が設けられている。
 以上、図15と図16を参照して、第1実施形態において比較例と異なるコンポーネントの概要を示した。
 ところで、図14に示した動作シーケンスでは、SC103cにおいてパケットがマージされ、XB102においてパケットが復元される。しかし、図15と図16に示すように、第1実施形態では、さらにSC103a~103gにおけるパケットの復元や、XB102におけるパケットのマージも可能なように、サーバシステム100が構成されている。その理由は、図14とは異なる次のような場合がありうるからである。
 例えば、CPU104eが、同じノード101e内のメインメモリ105eに格納されたデータを要求するため、SC103eを宛先とする共有型・メモリアクセス要求パケットを発行する。
 すると、SC103eは、ディレクトリ106eを参照し、要求されたデータを含むキャッシュラインをキャッシュメモリに保持しているCPUを検索する。その結果、要求されたデータをCPU104cがEステートで保持していると判明したとする。
 この場合、図4や図14に関して説明したキャッシュプロトコルによれば、CPU104cは、CPU104eを宛先とする共有型・転送データパケットと、SC103eを宛先とするライトバックデータパケットを出力する。ここでは説明の便宜上、共有型・データ転送要求パケットが先に出力される場合を例にして説明する。
 もし、SC103c内の出力バッファ制御部509cxから共有型・転送データパケットがポート間セレクタ508xへ出力される前にライトバックデータパケットが出力バッファ制御部509cxに入力されれば、図14と同様に2つのパケットはマージされる。
 しかし、SC103c内の出力バッファ制御部509cxから共有型・転送データパケットが出力された後でライトバックデータパケットが出力バッファ制御部509cxに入力されれば、2つのパケットはマージされない。以下の説明では、2つのパケットがマージされなかった場合に着目する。
 ここで、CPU104eを宛先とする共有型・転送データパケットは、XB102において、SC103eと接続された出力ポート202eへと出力されるパケットである。同様に、SC103eを宛先とするライトバックデータパケットは、XB102において、出力ポート202eへと出力されるパケットである。
 よって、マージされずに個別にSC103cからXB102へと出力された共有型・転送データパケットとライトバックデータパケットの双方は、ともにXB102内の出力ポート202eの前段に設けられた出力バッファ制御部712ceを経由する。
 したがって、場合によっては、出力バッファ制御部712ce内に共有型・転送データパケットが一時的に保存されている状況下で、出力バッファ制御部712ceにライトバックデータパケットが入力されることがある。例えば、ノード101e内のコンポーネントを宛先とする多くのパケットが集中する場合、出力バッファ制御部712ceから共有型・転送データパケットが出力される前に、出力バッファ制御部712ceへライトバックデータパケットが入力されることがある。
 この場合、XB102内の出力バッファ制御部712ceにおいて2つのパケットをマージして保存し、SC103eへと出力し、SC103eがパケットの復元を行う。それにより、共有型・転送データパケットとライトバックデータパケットにおいて重複する部分の容量が不要となるため、XB102内に必要なバッファ容量が削減される。また、結果として、バス108eの占有時間も削減され、実質的にはサーバシステム100のスループットが向上する。
 そのため、第1実施形態では、図16に示すようにXB102内の各出力バッファ制御部は、パケットのマージができるように管理テーブル部801やヘッダマージ部804などを備えている。また、図15に示すように各SC103a~103gにおいて、XB102と接続された入力ポート501xとルーティング部703の間には、パケットの復元ができるように複製チェック部1001やデータパケット復元部1002が備えられている。
 続いて、図14の動作シーケンスにそって、第1実施形態における各コンポーネントの構成と動作について詳細に説明する。
 まず、図17と図18を参照して、図15の出力バッファ制御部702cxの詳細な構成を説明する。なお、以下では出力バッファ制御部702cxを例として説明するが、図15の出力バッファ制御部702dxおよび図16に示したXB102内の12個の出力バッファ制御部(712ceなど)も同様の構成である。
 図17は、第1実施形態におけるSC103c内の出力バッファ制御部702cxの構成図である。図15に示すように、出力バッファ制御部702cxはルーティング部703、ポート間アービタ部507x、およびポート間セレクタ508xと接続されている。
 また、XB102内の例えば出力バッファ制御部712ceも図17と同様の構成である。出力バッファ制御部712ceは、図16に示すように、ルーティング部713、ポート間アービタ部205e、およびポート間セレクタ206eと接続されている点で出力バッファ制御部702cxとは異なる。しかし、出力バッファ制御部712ceの内部の構成は、図17の出力バッファ制御部702cxと同様である。
 図17に示したSC103c内の出力バッファ制御部702cxは、比較例において図7に示したXB102内の出力バッファ制御部207caと類似の構成を有するので、以下では共通点についての説明を適宜省略する。
 出力バッファ制御部702cxは、比較例の出力バッファ制御部207caと同様に、制御部400、データパケット保存部410、要求パケット保存部420、およびパケット間セレクタ430を備える。ただし、出力バッファ制御部702cxにおいては、制御部400の内部の構造と、データパケット保存部410の容量が比較例とは異なる。
 制御部400は、パケット間アービタ部401を有する。パケット間アービタ部401はパケット間アービタ402と比較器403と比較器404を備え、比較例と同様である。また、制御部400は比較例と同様のエンコーダ405を備える。制御部400はさらに、比較例と同様に、データパケット用のリードポインタ制御部407を備え、要求パケット用のライトポインタ制御部408とリードポインタ制御部409を備える。
 第1実施形態の制御部400が比較例と異なるのは、管理テーブル部801を備える点、比較部802を備える点、および比較例におけるライトポインタ制御部406の代わりにライトポインタ制御部803を備える点である。また、第1実施形態においては、出力バッファ制御部702cxがさらに、ヘッダマージ部804とセレクタ805を備える。
 管理テーブル部801と比較部802は協働して、同じデータペイロードを有する2つのパケットの組を判別する。そのために、管理テーブル部801は、データパケット保存部410に保存されているパケットのヘッダに含まれるヘッダ情報を管理している。
 比較部802は、出力バッファ制御部702cxに新たに入力されたパケットと同じデータペイロードを有するパケットがデータパケット保存部410に保存されているか否かをライトポインタ制御部803に通知する。
 ライトポインタ制御部803は、比較部802からの通知の結果に基づいて、新たに入力されたパケットのデータパケット保存部410への保存、または新たに入力されたパケットの破棄を制御する。その制御のため、ライトポインタ制御部803は、比較例と同様にライト指示およびライトポインタ値を出力するだけでなく、「複製ライト指示」を出力する。詳細は後述するが、複製ライト指示は、既にデータパケット保存部410に保存されているデータパケットと同じデータペイロードを有するパケットのヘッダ情報を記録することを管理テーブル部801に指示するためのものである。
 ヘッダマージ部804は、同じデータペイロードを有する2つのパケットをマージしたパケットを生成する。セレクタ805は、ヘッダマージ部804によりマージされたパケットと、データパケット保存部410に保存されているデータパケットのいずれかを選択する。
 以上、概略を述べた出力バッファ制御部702cx内の各コンポーネント間の関係は、次のとおりである。
 まず、信号線441を介してパケットがルーティング部703から出力バッファ制御部702cxへ出力される。信号線441は、パケットを出力するための信号線442とパケットヘッダ内に含まれるヘッダ情報を出力するための信号線811とに分岐している。比較例に関して具体的な実装の例(e1)~(e3)とともに説明したように、第1実施形態においても、斜めに枝分かれする線によって図示される分岐は、出力されるデータが分岐ごとに異なることを示す。
 信号線442を介してデータパケット保存部410へ出力されるのは、比較例と同じくパケットである。信号線811に出力されるヘッダ情報は、具体的には、パケットタイプ、宛先ID、要求元ID、ReqID、およびデータステートである。
 パケットタイプは、前述の(d1)~(d4)などのタイプを示し、比較例においてもエンコーダ405に入力されている。宛先ID、要求元ID、およびReqIDについては上記(a1)~(a3)で説明したとおりである。
 また、データステートとしては、キャッシュプロトコルに応じて前述の(b1)~(b5)の少なくとも一部が指定可能である。以下では、少なくとも、データステートの値が(b3)のSステートにあたる「共有型」である場合と、データステートが指定されない場合を例に取り上げる。
 信号線811はさらに信号線443と信号線812に分岐し、信号線812は信号線813と信号線814に分岐する。
 信号線443は比較例と同じくエンコーダ405に接続され、ヘッダ情報のうちパケットタイプが信号線443を介してエンコーダ405に入力される。また、信号線813は比較部802に接続され、ヘッダ情報のうち要求元IDとReqIDが信号線813を介して比較部802に入力される。そして、信号線814は管理テーブル部801に接続され、パケットタイプ、宛先ID、要求元ID、ReqID、データステートのすべてが信号線814を介して管理テーブル部801に入力される。
 また、管理テーブル部801は、さらにライトポインタ制御部803とリードポインタ制御部407からの入力を受け取り、後述の「複製情報」を信号線815に出力する。
 管理テーブル部801は、ライトポインタ制御部803からの入力に基づいて、新たに入力されたパケットと同じデータペイロードを持つパケットがデータパケット保存部410に保存されている場合は、上記新たなパケットのヘッダ情報を記憶する。また、管理テーブル部801は、リードポインタ制御部407からの入力に基づいて、リードポインタ値で示されるブロックに保存されているパケットにマージするヘッダ情報を検索する。
 複製情報は、出力しようとするパケットにマージするヘッダ情報があるか否かを示す。複製情報はさらに、出力しようとするパケットにマージするヘッダ情報がある場合は、当該ヘッダ情報を含む。
 信号線815は信号線816と信号線817に分岐しており、信号線816はヘッダマージ部804へ、信号線817はセレクタ805へ、それぞれ接続されている。信号線815に出力された複製情報は信号線816を介してヘッダマージ部804へ出力される。また、複製情報のうち、出力しようとするパケットにマージするヘッダ情報があるか否かを示す「複製データVALID」フィールドのみが信号線817を介してセレクタ805に出力される。
 さらに管理テーブル部801は比較部802とも接続されているが、管理テーブル部801と比較部802との間のデータの入出力については図18Aおよび図18Bとともに後述する。
 比較部802は、信号線813を介して入力された要求元IDとReqIDを管理テーブル部801から入力された情報と比較し、比較結果をライトポインタ制御部803に通知する。この比較は、新たに入力されたパケットと同じデータペイロードを持つパケットがデータパケット保存部410に保存されているか否かを判断するために行われる。
 データパケット用のライトポインタ制御部803は、比較例のライトポインタ制御部406と同様に、比較器403およびデータパケット保存部410と接続されている。ライトポインタ制御部803はさらに、上記のように比較部802とも接続されており、また、管理テーブル部801とも接続されている。
 以上、図17を参照して出力バッファ制御部702cxの構成について説明した。
 続いて、出力バッファ制御部702cx内の管理テーブル部801、比較部802、およびライトポインタ制御部803の詳細を図18Aおよび図18Bを参照して説明する。
 図18Aは、第1実施形態における管理テーブル部801の構成図であり、図18Bは第1実施形態における比較部802とライトポインタ制御部803の構成図である。紙幅の都合上、図18Aと図18Bは2枚に分かれているが、「A」~「M」なる符号で示したように図18Aの管理テーブル部801は、図18Bの比較部802およびライトポインタ制御部803と接続されている。
 図18Aにおいて管理テーブル部801は、データパケット保存部410内の(N+1)個の保存番地0000~xxxxに対応する(N+1)個のエントリ901-0~901-Nを有する。例えば、N=63ならば、「xxxx」=「0063」である。
 また、管理テーブル部801は、複数ビットで表され、リードポインタ制御部407から出力されたリードポインタ値を、各1ビットの(N+1)個の出力にデコードするデコーダ902を有する。管理テーブル部801はさらに、(N+1)個のAND回路903-0~903-Nを有する。0≦j≦Nなる各jについて、AND回路903-jにはリードポインタ制御部407から出力されたリード指示と、デコーダ902の(j+1)番目の出力とが入力される。
 例えば、「1」というリードポインタ値とリード指示がリードポインタ制御部407から出力された場合、デコーダ902の出力のうち保存番地0001に対応する2番目の出力のみが論理値1であり、その他のN個の出力は論理値0である。よって、(N+1)個のAND回路903-0~903-Nのうち、AND回路903-1の出力のみが論理値1である。
 また、管理テーブル部801は、FF904とFF905を有する。FF904は、それぞれ1ビットを出力する(N+1)個のAND回路903-0~903-Nからの出力、すなわち(N+1)ビットの出力を保持する。FF905もFF904と同様であり、FF904とFF905は同じデータを保持する。2つのFF904とFF905を用いる代わりに、1つのFF904だけを用い、FF904の出力を図18AにおけるFF905の出力先へも供給するよう、信号線を適宜分岐させる実施形態も可能である。
 さらに、管理テーブル部801は、複数ビットで表され、データパケット用のライトポインタ制御部803から出力されたライトポインタ値を、各1ビットの(N+1)個の出力にデコードするデコーダ906を有する。
 FF904が保持する(N+1)ビットのデータは、エントリ901-0~901-Nに1ビットずつ入力される。FF905が保持する(N+1)ビットのデータも、エントリ901-0~901-Nに1ビットずつ入力される。また、デコーダ906の(N+1)ビットの出力も、エントリ901-0~901-Nに1ビットずつ入力される。さらに、エントリ901-0~901-Nにはそれぞれライトポインタ制御部803からのライト指示と複製ライト指示が入力される。
 エントリ901-0~901-Nの構造と動作はそれぞれ同様であり、図18Aでは保存番地0000用エントリ901-0についてのみ詳細に示している。すなわち、エントリ901-0は、7個のAND回路907~913、およびAND回路907~913にそれぞれ対応する以下の7個のフィールドを有する。
 ・VALIDフィールド914
 ・要求元IDフィールド915
 ・ReqIDフィールド916
 ・複製データVALIDフィールド917
 ・複製パケットタイプフィールド918
 ・複製パケット宛先IDフィールド919
 ・複製データステートフィールド920
 上記7個のフィールドのそれぞれは、例えばFFなどの記憶素子を用いて実現される。各フィールドとその入出力の詳細は、比較部802とライトポインタ制御部803の詳細を説明した後で説明する。なお、上記各フィールドを備えるエントリ901-0~901-Nの全体が、1つの管理テーブルに相当する。
 また、図17に関して説明したとおり、パケットのヘッダ内のパケットタイプ、要求元ID、ReqID、宛先ID、データステートの各フィールドのデータがルーティング部703から信号線814を介して、管理テーブル部801に入力される。図17と図18Aに示すように信号線812から分岐した信号線814は、図18Aに示すように、さらに次のように分岐して各エントリ901-0~901-Nに接続している。
 ・保存番地0000用エントリ901-0にパケットタイプと宛先IDとデータステートを入力するための信号線931-0
 ・保存番地0000用エントリ901-0に要求元IDとReqIDが入力される信号線932-0
 ・ ……
 ・保存番地xxxx用エントリ901-Nにパケットタイプと宛先IDとデータステートが入力される信号線931-N
 ・保存番地xxxx用エントリ901-Nに要求元IDとReqIDが入力される信号線932-N
 また、信号線812からの他方の分岐は、信号線813として図18Bの比較部802に入力されている。信号線813を介してルーティング部703から比較部802に入力されるのは、パケットのヘッダに含まれる要求元IDとReqIDである。
 図18Bのとおり、比較部802は、(N+1)個の保存番地0000~xxxxに対応する(N+1)個の比較器941-0~941-Nを備える。比較器941-0~941-Nの構成は同様であり、比較器941-0~941-Nそれぞれの出力は、ライトポインタ制御部803内が備えるOR回路951に入力される。
 例えば、保存番地0000に対応する比較器941-0には、信号線933を介してルーティング部703から、図17の出力バッファ制御部702cxへ入力されるパケットのヘッダに含まれる要求元IDとReqIDが入力される。また、比較器941-0には、保存番地0000用エントリ901-0内の要求元IDフィールド915とReqIDフィールド916から、要求元IDとReqIDがそれぞれ入力される。つまり、比較器941-0には、要求元IDとReqIDの組が2組入力される。
 また、比較器941-0には、制御信号として、保存番地0000用エントリ901-0内のVALIDフィールド914の値、すなわち、データパケット保存部410の保存番地0000のブロックが有効か否かを示す値が入力される。
 制御信号として入力されたVALIDフィールド914の値が論理値0の場合、比較器941-0は、論理値0を、OR回路951および、保存番地0000用エントリ901-0内のAND回路910に出力する。
 制御信号として入力されたVALIDフィールド914の値が論理値1の場合、比較器941-0は、入力された要求元IDとReqIDの組同士を比較する。そして、入力された2組の要求元IDとReqIDが一致すれば、比較器941-0は、論理値1をOR回路951とエントリ901-0内のAND回路910とに出力する。逆に、入力された2組の要求元IDとReqIDが不一致の場合は、比較器941-0は、論理値0をOR回路951とエントリ901-0内のAND回路910とに出力する。
 なお、比較器941-0が出力する論理値0は、データパケット保存部410の保存番地0000には、新たに入力されたデータパケットとデータペイロードが一致するパケットが保存されていないことを示す。また、比較器941-0が出力する論理値1は、データパケット保存部410の保存番地0000には、新たに入力されたデータパケットとデータペイロードが一致するパケットが保存されていることを示す。
 つまり、第1実施形態では、要求IDとReqIDが一致すればデータペイロードが等しいということを利用している。このことはパケットの仕様に依存しており、パケットの仕様に応じた様々な実施形態が可能である。いずれにせよ各比較器941-0~941-Nは、パケットの仕様に応じて適切なヘッダ情報同士を比較することによって、データペイロードの一致または不一致を判断することができる。
 データパケット用のライトポインタ制御部803は、上記のOR回路951のほかに、NOT回路952、AND回路953、AND回路954、およびFF955を備える。
 OR回路951は(N+1)入力のOR回路であり、比較器941-0~941-Nからの入力がすべて論理値0である場合のみ論理値0を出力し、それ以外の場合は論理値1を出力する。つまり、新たに出力バッファ制御部702cxに入力されたデータパケットと同じデータペイロードを有する別のデータパケットがデータパケット保存部410内のいずれかのブロックに保存されている場合のみ、OR回路951は論理値1を出力する。
 OR回路951の出力はNOT回路952とAND回路953に入力され、NOT回路952の出力はAND回路954に入力される。
 ここで、エンコーダ405は比較例と同様に、入力されたパケットがデータパケットであるか否かを示すVALID信号を出力する。エンコーダ405から出力されたVALID信号は、AND回路953および954に入力される。
 したがって、AND回路953は、出力バッファ制御部702cxにデータパケットが入力され、かつ、入力されたデータパケットと同じデータペイロードを有する別のパケットがデータパケット保存部410に保存されている場合にのみ、論理値1を出力する。AND回路953からの出力は、図18Aの各エントリ901-0~901-Nに、複製ライト指示としてそれぞれ入力される。
 また、AND回路954は、出力バッファ制御部702cxにデータパケットが入力され、かつ、入力されたデータパケットと同じデータペイロードを有する別のパケットがデータパケット保存部410に保存されていない場合にのみ、論理値1を出力する。AND回路954からの出力は、図18Aの各エントリ901-0~901-Nに、ライト指示としてそれぞれ入力される。
 また、ライトポインタ制御部803は、図8に示した比較例のライトポインタ制御部406がFF451を備えるのと同様に、FF955を備える。FF955は、FF451と同様にライトポインタ値を保持する。また、AND回路954の出力がカウントイネーブル信号としてFF955に入力される。そして、FF955の出力であるライトポインタ値は、比較例と同様にデータパケット保存部410と比較器403に入力されるだけでなく、さらに、図18Aのデコーダ906にも入力される。
 以上、図18Bを参照して比較部802とライトポインタ制御部803の詳細を説明した。そこで、ライトポインタ制御部803からの入力を受け取る図18Aの管理テーブル部801の説明に戻ると、例えば保存番地0000用エントリ901-0の内の各コンポーネントの構成と動作は次のとおりである。
 VALIDフィールド914は、データパケット保存部410の保存番地0000のブロックが有効か否かを示す1ビットのフィールドである。論理値1が「有効」を示し、論理値0が「無効」を示す。
 VALIDフィールド914の値は、保存番地0000に新たなパケットが保存されるときに論理値1となる。また、VALIDフィールド914の値は、保存番地0000に保存されているパケットがヘッダマージ部804を介して、または介さずに、セレクタ805へ出力され、さらにパケット間セレクタ430へと出力されるときに、論理値0となる。具体的には、VALIDフィールド914は次のように構成されている。
 VALIDフィールド914は、例えばRS(Reset-Set)型FFにより実現されてもよい。その場合、RS型FFのS(セット)端子にはAND回路907の出力が与えられ、R(リセット)端子には、(N+1)ビットを保持するFF904の最初のビットであるビット0が与えられる。
 ここで、AND回路907の入力は、デコーダ906からの出力の最初のビットであるビット0(すなわち(N+1)ビットの出力のうち、保存番地0000に相当するビット)と、ライトポインタ制御部803から出力されたライト指示である。したがって、ライトポインタ制御部803が保存番地0000を指定してライト指示をアサートした場合にのみ、AND回路907の出力は論理値1となり、VALIDフィールド914の値が論理値1にセットされる。
 また、リードポインタ制御部407が保存番地0000を示すリードポインタ値を出力するとともにリード指示をアサートした場合にのみ、FF904の最初のビットであるビット0(すなわち(N+1)ビットのうち、保存番地0000に相当するビット)は論理値1となる。そして、FF904のビット0が論理値1となると、VALIDフィールド914の値は論理値0にリセットされる。
 AND回路907の出力とFF904のビット0がともに論理値0の場合は、VALIDフィールド914の値は変わらない。
 また、前述のとおり、VALIDフィールド914の値は、保存番地0000に対応する比較器941-0へと出力される。
 次に要求元IDフィールド915について説明する。要求元IDフィールド915は、データパケット保存部410の保存番地0000に保存するデータパケットの要求元IDを記憶する。要求元IDフィールド915への値の設定は、AND回路908により行われる。以下、要求元IDが例えばMビットで表されるとして説明する。
 AND回路908への入力は、ライトポインタ制御部803から出力されるライト指示と、デコーダ906の出力のうち、保存番地0000に相当するビット0と、信号線932-0から分岐した信号線を介して入力されるMビットの要求元IDである。AND回路908は、ライト指示とデコーダ906のビット0の出力がともに論理値1のときのみ、入力されたMビットの要求元IDの値を要求元IDフィールド915に上書きする。ライト指示とデコーダ906からの出力のビット0の少なくとも一方が論理値0のとき、AND回路908は、要求元IDフィールド915への上書きを行わず、要求元IDフィールド915は現在の値を保持する。
 上記のように動作するAND回路908と要求元IDフィールド915の具体的な実装方法は様々である。
 例えば、AND回路908は、ライト指示とデコーダ906からの出力のビット0との論理積を得るAND回路を含むとともに、入力されたMビットの要求元IDを要求元IDフィールド915に通過させるよう構成されていてもよい。また、要求元IDフィールド915は、例えばMビットを格納するためのM組の記憶素子を備え、各記憶素子の制御端子にはライトイネーブル用の制御信号として上記AND回路の出力が与えられる。それにより、上記AND回路の出力が論理値0のときは、要求元IDフィールド915が現在の値を保持し、上記AND回路の出力が論理値1のときは、AND回路908を通過した要求元IDが要求元IDフィールド915に書き込まれる。
 例えば、要求元IDフィールド915がM個のRS型FFを備えていてもよい。ここで、説明の便宜上、AND回路908内の上記AND回路の出力(すなわちライト指示とデコーダ906からの出力のビット0との論理積)を「X」とし、AND回路908を通過した要求元IDのビットjを「Y」とする(0≦j≦M-1)。要求元IDフィールド915は、ビットごとに2つのAND回路と1つのNOT回路を備え、ビットjに対応するRS型FFのR端子にはX∧Yが、S端子にはX∧¬Yが、それぞれ入力されるように構成される。
 すると、Xが論理値0の場合は各RS型FFが現状の値を保持し、Xが論理値1の場合は各RS型FFの値はY(すなわち要求元IDのビットjの値)となる。したがって、AND回路908と要求元IDフィールド915の上記の動作が実現される。
 なお、AND回路908および要求元IDフィールド915の具体的な構成が上記の例と異なっていてもよいことは無論である。
 また、前述のとおり、要求元IDフィールド915の値は、保存番地0000に対応する図18Bの比較器941-0へと出力される。
 続いて、ReqIDフィールド916について説明する。ReqIDフィールド916は、データパケット保存部410の保存番地0000に保存するデータパケットのReqIDを記憶する。ReqIDフィールド916への値の設定は、AND回路909により行われる。
 AND回路909への入力は、ライトポインタ制御部803から出力されるライト指示と、デコーダ906からの出力のうち保存番地0000に相当するビット0と、信号線932-0から分岐した信号線を介して入力されるReqIDである。AND回路908と要求元IDフィールド915について説明したのと同様に、AND回路909とReqIDフィールド916の具体的な実装は様々である。
 具体的にどのように実装されるにしろ、AND回路909とReqIDフィールド916は以下のように動作する。すなわち、AND回路909は、ライト指示とデコーダ906からの出力のビット0がともに論理値1のときのみ、入力されたReqIDの値をReqIDフィールド916に上書きする。他方、ライト指示とデコーダ906からの出力のビット0の少なくとも一方が論理値0のとき、AND回路909は、ReqIDフィールド916への上書きを行わず、ReqIDフィールド916は現在の値を保持する。
 また、前述のとおり、ReqIDフィールド916の値は、保存番地0000に対応する比較器941-0へと出力される。
 続いて、複製データVALIDフィールド917について説明する。複製データVALIDフィールド917は、複製パケットタイプフィールド918、複製パケット宛先IDフィールド919、および複製データステートフィールド920が有効か否かを示す1ビットのフィールドである。論理値1が「有効」を示し、論理値0が「無効」を示す。
 複製データVALIDフィールド917の値は、保存番地0000に第1のパケットが保存されている状態で、第1のパケットと同じデータペイロードを有する第2のパケットが出力バッファ制御部702cxに入力されたときに論理値1となる。このとき、第2のパケットのヘッダに含まれるパケットタイプ、宛先ID、データステートはそれぞれ複製パケットタイプフィールド918、複製パケット宛先IDフィールド919、複製データステートフィールド920に記憶される。
 また、複製データVALIDフィールド917の値は、保存番地0000に保存されている第1のパケットが、図17のヘッダマージ部804とセレクタ805を介してパケット間セレクタ430へと出力されるときに、論理値0となる。
 具体的には、複製データVALIDフィールド917は、例えばRS型FFにより実現されてもよい。その場合、S端子にはAND回路910の出力が与えられ、R端子には、(N+1)ビットを保持するFF905の最初のビットであるビット0が与えられる。
 ここで、AND回路910の入力は、保存番地0000に対応して図18Bの比較部802に設けられた比較器941-0の出力と、ライトポインタ制御部803から出力された複製ライト指示である。したがって、新たに入力された第2のパケットと同じデータペイロードを有する第1のパケットが既に保存番地0000に保存されているときのみ、AND回路910の2つの入力がともに論理値1となり、複製データVALIDフィールド917の値が論理値1にセットされる。
 また、リードポインタ制御部407が保存番地0000を示すリードポインタ値を出力するとともにリード指示をアサートした場合にのみ、FF905のビット0が論理値1となり、複製データVALIDフィールド917の値が論理値0にリセットされる。
 AND回路910の出力とFF905のビット0がともに論理値0の場合は、複製データVALIDフィールド917の値は変わらない。
 次に、複製パケットタイプフィールド918について説明する。ここで、図17の出力バッファ制御部702cxに新たに入力された第2のパケットと同じデータペイロードを有する第1のパケットが、既にデータパケット保存部410の保存番地0000に保存されていたとする。このとき、複製パケットタイプフィールド918は、第2のパケットのヘッダに含まれるパケットタイプを記憶する。また、複製パケットタイプフィールド918への値の設定は、AND回路911により行われる。
 AND回路911への入力は、図18Bの比較器941-0の出力と、ライトポインタ制御部803から出力された複製ライト指示と、信号線931-0から分岐した信号線を介して入力されるパケットタイプである。AND回路908と要求元IDフィールド915について説明したのと同様に、AND回路911と複製パケットタイプフィールド918の具体的な実装は様々である。
 具体的にどのように実装されるにしろ、AND回路911と複製パケットタイプフィールド918は次のように動作する。すなわち、AND回路911は、比較器941-0の出力と複製ライト指示がともに論理値1のときのみ、入力されたパケットタイプの値を複製パケットタイプフィールド918に上書きする。他方、比較器941-0の出力と複製ライト指示の少なくとも一方が論理値0のとき、AND回路911は複製パケットタイプフィールド918への上書きを行わず、複製パケットタイプフィールド918は現在の値を保持する。
 次に、複製パケット宛先IDフィールド919について説明する。複製パケット宛先IDフィールド919は、上記第2のパケットのヘッダに含まれる宛先IDを記憶する。また、複製パケット宛先IDフィールド919への値の設定はAND回路912により行われる。
 AND回路912への入力は、図18Bの比較器941-0の出力と、ライトポインタ制御部803から出力された複製ライト指示と、信号線931-0から分岐した信号線を介して入力される宛先IDである。宛先IDは、例えば要求元IDと同じくMビットで表される。AND回路908と要求元IDフィールド915について説明したのと同様に、AND回路912と複製パケット宛先IDフィールド919の具体的な実装は様々である。
 具体的にどのように実装されるにしろ、AND回路912と複製パケット宛先IDフィールド919は次のように動作する。すなわち、AND回路912は、比較器941-0の出力と複製ライト指示がともに論理値1のときのみ、入力された宛先IDの値を複製パケット宛先IDフィールド919に上書きする。他方、比較器941-0の出力と複製ライト指示の少なくとも一方が論理値0のとき、AND回路912は複製パケット宛先IDフィールド919への上書きを行わず、複製パケット宛先IDフィールド919は現在の値を保持する。
 次に、複製データステートフィールド920について説明する。複製データステートフィールド920は、上記第2のパケットのヘッダに含まれるデータステートを記憶する。また、複製データステートフィールド920への値の設定はAND回路913により行われる。
 AND回路913への入力は、図18Bの比較器941-0の出力と、ライトポインタ制御部803から出力された複製ライト指示と、信号線931-0から分岐した信号線を介して入力されるデータステートである。AND回路908と要求元IDフィールド915について説明したのと同様に、AND回路913と複製データステートフィールド920の具体的な実装は様々である。
 具体的にどのように実装されるにしろ、AND回路913と複製データステートフィールド920は次のように動作する。すなわち、AND回路913は、比較器941-0の出力と複製ライト指示がともに論理値1のときのみ、入力されたデータステートの値を複製データステートフィールド920に上書きする。他方、比較器941-0の出力と複製ライト指示の少なくとも一方が論理値0のとき、AND回路913は複製データステートフィールド920への上書きを行わず、複製データステートフィールド920は現在の値を保持する。
 そして、以上説明した複製データVALIDフィールド917、複製パケットタイプフィールド918、複製パケット宛先IDフィールド919、および複製データステートフィールド920の値は、管理テーブル部801内のセレクタ921へと出力される。同様に、他のエントリ901-1~901-Nからもセレクタ921へと4つの値の組がそれぞれ出力される。
 また、セレクタ921には、選択信号として、AND回路903-0~903-Nからの出力が入力される。AND回路903-0~903-Nの出力はそれぞれ1ビットであるから、セレクタ921の選択信号は(N+1)ビットである。また、明らかに、選択信号の(N+1)ビットのうち論理値1となるのは、最大1ビットである。
 選択信号の全ビットが論理値0の場合、セレクタ921は出力をネゲートする(すなわち、有効なデータを出力しない)。選択信号のビットj(0≦j≦N)が論理値1のとき、セレクタ921はエントリ901-jから出力された4つの値の組を選択して信号線815へと出力する。例えば、「0」というリードポインタ値とリード指示がリードポインタ制御部407から出力されると、AND回路903-0の出力が論理値1となり、セレクタ921は保存番地0000用エントリ901-0からの出力を選択する。
 信号線815は、ヘッダマージ部804へ接続された信号線816と、セレクタ805へ接続された信号線817に分岐している。そして、セレクタ921が出力する複製データVALIDフィールド917の値は、信号線815と信号線816、信号線817を介してそれぞれヘッダマージ部804、セレクタ805に出力される。セレクタ921が出力する複製パケットタイプフィールド918、複製パケット宛先IDフィールド919、複製データステートフィールド920の値は、信号線815と信号線816を介してヘッダマージ部804に出力される。
 ヘッダマージ部804は、リードポインタ値に対応するエントリ(901-0~901-Nのいずれか)からセレクタ921を介して入力された各フィールドの値を、リード指示に応じてデータパケット保存部410から出力されたパケットにマージする。そして、ヘッダマージ部804は、マージして得られたパケットをセレクタ805に出力する。
 例えば、データパケット保存部410に保存されている第1のパケットと同じデータペイロードを有する第2のパケットのヘッダの内容がj番目のエントリ901-jに記憶されており、第1のパケットの保存番地を指定するリード指示が発行される。すると、ヘッダマージ部804は、エントリ901-jからセレクタ921を介して入力された内容(すなわち、第2のパケットのヘッダに相当する情報)を、データパケット保存部410から出力される第1のパケットにマージする。
 以上、図18Aと図18Bを参照して702cxの構成を説明した。続いて、出力バッファ制御部702cxの動作を説明する。
 図19は、第1実施形態における出力バッファ制御部702cxの動作を説明する図である。なお、要求パケットが入力された場合、出力バッファ制御部702cxは比較例における図7の出力バッファ制御部207caと同様に動作するので、説明は省略する。以下では、データパケットが出力バッファ制御部702cxに入力された場合について説明する。
 ステップS701で、CPU104cが出力したデータパケットがルーティング部703によりルーティングされ、出力バッファ制御部702cxに入力される。
 すると、ステップS702で、データパケットのヘッダ内のパケットタイプがエンコーダ405と管理テーブル部801に出力される。また、ヘッダ内の要求元IDとReqIDが管理テーブル部801と比較部802に出力される。さらに、ヘッダ内の宛先IDとデータステートは管理テーブル部801に出力される。
 次のステップS703では、ルーティング部703から入力されたのはデータパケットであるということを、エンコーダ405がパケットタイプの値から判断する。その結果、エンコーダ405は、データパケット用のライトポインタ制御部803にVALID信号を出力する。
 また、ステップS704では、比較部802が、ステップS702で受け取った要求元IDとReqIDの組を、管理テーブル部801内の各エントリ901-0~901-Nから出力されている要求元IDとReqIDの組と比較する。比較の結果、比較部802は、図18Bに関して説明したように、(N+1)個の出力を管理テーブル部801内の各エントリ901-0~901-Nとライトポインタ制御部803内のOR回路951に出力する。ステップS704はステップS703と並行して行われてもよい。
 なお、図18Aに関して説明したように、管理テーブル部801内の各エントリ901-0~901-N内からはVALIDフィールド914の値が比較部802へ出力されている。したがって、ステップS704では、VALIDフィールド914の値が「有効」を示す論理値1であるエントリ内の要求元IDとReqIDの組と、ステップS701で入力されたデータパケットの要求元IDとReqIDの組とが比較される。
 ステップS705では、データパケット用のライトポインタ制御部803が、OR回路951を用いて、比較部802からステップS704で出力された(N+1)個の出力の論理和を求める。そして、ステップS703でエンコーダ405から出力されたVALID信号と、求めた論理和とに基づいて、ライトポインタ制御部803は、次のように動作する。
 エンコーダ405からVALID信号が出力(アサート)されており、かつ、OR回路951が出力する論理和が論理値0である場合、ステップS701で入力されたデータパケットと同じデータペイロードを有するパケットは保存されていない。よって、ステップS701で入力されたデータパケットは破棄してはならない。
 したがって、この場合、ライトポインタ制御部803は、ステップS701で入力されたデータパケットを現在使われていないデータパケット保存部410内のブロックに保存する処理を行う。すなわち、ライトポインタ制御部803は、図18BのFF955が保持するライトポインタ値を出力し、ライトポインタ値を更新する。ライトポインタ値の出力先は、管理テーブル部801、データパケット保存部410、および比較器403である。また、ライトポインタ制御部803は、管理テーブル部801とデータパケット保存部410へライト指示を出力する。
 こうしてライトポインタ値とライト指示が出力された後は、データパケット保存部410がパケットを保存し、パケット間アービタ402が調停の結果としてポート間アービタ部507xへ出力リクエストを出力する。詳しくは、図7の比較例でステップS404d~S407として説明した動作と同様である。
 また、ステップS705において、エンコーダ405からVALID信号が出力されており、かつ、OR回路951が出力する論理和が論理値1である場合、ステップS701で入力されたデータパケットと同じデータペイロードを有するパケットが保存されている。
 したがって、この場合、ライトポインタ制御部803は、ステップS701で入力されたデータパケットのうち、後の復元で使うためのヘッダ情報のみを管理テーブル部801に記憶し、データパケットそのものは破棄する処理を行う。すなわち、ライトポインタ制御部803は、複製ライト指示を管理テーブル部801に出力する。
 そして、ステップS706において管理テーブル部801は、ステップS702で入力された情報を適切なエントリ内に保存する。管理テーブル部801のステップS706における動作は、ライトポインタ制御部803から出力されるライト指示、複製ライト指示、およびライトポインタ値、ならびに比較部802から出力される(N+1)個の比較結果に基づく。
 具体的には、ステップS706における管理テーブル部801の動作は、ステップS705でライト指示と複製ライト指示のいずれが出力(アサート)されたかによって2通りに場合分けされる。図18Bの説明から明らかなとおり、ライト指示と複製ライト指示は排他的であり、同時に論理値1になることはない。
 ステップS705でライト指示が出力された場合、管理テーブル部801は、ライトポインタ値が示す番地用のエントリ内の要求元IDフィールド915とReqIDフィールド916に、ステップS702で入力された要求元IDとReqIDの値を記憶する。また、管理テーブル部801は、ライトポインタ値が示す番地に対応するエントリ内のVALIDフィールド914の値を論理値1にセットし、ライトポインタ値が示す番地に対応するエントリを有効にする。
 ステップS705で複製ライト指示が出力された場合は、比較器941-0~941-Nのいずれか1つが、ステップS704の比較の結果、一致を示す論理値1を出力した場合である。つまり、ステップS701で入力されたデータパケットと同じデータペイロードを有するパケットが保存されている番地が比較部802により検出された場合に、複製ライト指示が出力される。
 この場合、管理テーブル部801は、判別された保存番地用のエントリ内の複製パケットタイプフィールド918、複製パケット宛先IDフィールド919、および複製データステートフィールド920に、ステップS702で入力された値をそれぞれ記憶する。また、複製ライト指示が出力されると、管理テーブル部801は、比較部802により判別されたエントリ内の複製データVALIDフィールド917を論理値1にセットする。
 このように、複製ライト指示が出力された場合は、ステップS701で入力されたパケットそのものはデータパケット保存部410に保存されず、破棄される。また、複製ライト指示が出力された場合は、図18Bに示すようにライトポインタ値が更新されない。したがって、パケット間アービタ部401において改めて調停が行われることもなく、ポート間アービタ部507xへの新たな出力リクエストをパケット間アービタ402が出力することもない。こうして、ステップS705で複製ライト指示が出力された場合は、ステップS701でのパケットの入力を契機とする一連の処理が、ステップS706で終了する。
 他方で、ステップS705でライト指示が出力された場合は、上記のように図7のステップS404d~S407と同様の動作が行われ、その後、ステップS707においてポート間アービタ部507xからデータパケットの出力許可が出力される。
 するとステップS708でパケット間アービタ402は、図7のステップS409dと同様に、データパケットを出力するようパケット間セレクタ430に選択信号を出力し、データパケット用のリードポインタ制御部407にリードポインタ更新指示を出力する。
 すると、ステップS709でリードポインタ制御部407は、リード指示とリードポインタ値を管理テーブル部801とデータパケット保存部410に出力し、リードポインタ値を更新する。また、リードポインタ制御部407は、更新後のリードポインタ値を比較器403へ出力する。
 そして、ステップS710でデータパケット保存部410は、リード指示にしたがって、リードポインタ値が示す番地に保存されているパケットをヘッダマージ部804とセレクタ805に出力する。
 また、ステップS711に示すように管理テーブル部801は、リード指示にしたがって、リードポインタ値が示す番地に対応するエントリ内のデータをヘッダマージ部804とセレクタ805に出力する。
 具体的には、管理テーブル部801は、複製データVALIDフィールド917、複製パケットタイプフィールド918、複製パケット宛先IDフィールド919、および複製データステートフィールド920の値をヘッダマージ部804に出力する。また、管理テーブル部801は、複製データVALIDフィールド917の値を選択信号としてセレクタ805に出力する。
 出力された複製データVALIDフィールド917の値は、論理値0のとき、リードポインタ値により示されるデータパケット保存部410内の保存番地から読み出されたパケットそのものをセレクタ805が選択することを示す。逆に、出力された複製データVALIDフィールド917の値は、論理値1のとき、ヘッダマージ部804で生成される複製情報を持ったパケットをセレクタ805が選択することを示す。
 ステップS711において管理テーブル部801はさらに、図18AのFF904とFF905を用いて、リードポインタ値で示される保存番地用のエントリ内のVALIDフィールド914と複製データVALIDフィールド917の値を論理値0にリセットする。
 なお、ステップS710とS711は並列に実行されてもよい。
 そして、ステップS712においてヘッダマージ部804は、ステップS710で入力されたデータパケットのヘッダに、ステップS711で入力された4つのフィールドの情報を追加したパケットを生成し、セレクタ805に出力する。具体例は後述するが、ヘッダマージ部804は、例えば、ステップS710で入力されたデータパケットのヘッダの所定の位置に、4つのフィールドの情報を挿入することにより、パケットを生成する。
 するとステップS713においてセレクタ805は、ステップS711で管理テーブル部801から出力された選択信号にしたがって、データパケット保存部410から入力されたパケットと、ヘッダマージ部804から入力されたパケットの一方を選択する。そして、セレクタ805は、選択したパケットをパケット間セレクタ430に出力する。
 ここで、パケット間セレクタ430には、図7のステップS409rおよびS409dに関して説明したように、要求パケットとデータパケットのいずれを選択するのかを示す選択信号がパケット間アービタ402から入力されている。選択信号が、データパケットを選択することを示す値になると、ステップS714に示すように、パケット間セレクタ430は、セレクタ805から出力されたパケットを選択し、ポート間セレクタ508xへ出力する。
 以上、図19を参照して出力バッファ制御部702cxの動作について説明した。なお、図19の説明におけるデータパケットは、例えば、ライトバックデータパケットでもよく、共有型・転送データパケットでもよい。
 また、図16に示したXB102内の出力バッファ制御部712ceなども、図17~図19を参照して説明した出力バッファ制御部702cxと同様に構成されている。例えば、図19は、ルーティング部703とポート間アービタ部507xとポート間セレクタ508xを、それぞれルーティング部713とポート間アービタ部205eとポート間セレクタ206eに置き換えれば、出力バッファ制御部712ceを示す図となる。なお、以下の図に関しても同様に、出力バッファ制御部702cxを中心にして説明を行うが、他の出力バッファ制御部についても同様である。
 次に、より具体的な例として、図14においてステップS604とS605が行われた場合のSC103c内の出力バッファ制御部702cxの動作について、図20~図22を参照して説明する。
 図20は、第1実施形態において先にライトバックデータパケットが入力されたときの出力バッファ制御部702cxの動作の具体例を説明する図である。
 図20には、出力バッファ制御部702cx内のコンポーネントのうち、以下で説明するステップに関連するもののみを抜粋して示してある。また、図20には、データパケット保存部410の詳細を示した。さらに、図20では、管理テーブル部801内の各エントリ901-0~901-Nを表形式で示した。
 なお、以下では説明の便宜上、図20の動作が開始される時点で、ライトポインタ制御部803のライトポインタ値とリードポインタ制御部407のリードポインタ値の初期値は、ともに「0000」であると仮定する。また、図20の動作が開始される時点で、管理テーブル部801内のすべてのエントリ901-0~901-Nにおいて、VALIDフィールド914の初期値が、「無効」を示す論理値0であると仮定する。
 ステップS801で、CPU104cが出力したライトバックデータパケット601が図15のSC103c内のルーティング部703によりルーティングされ、XB102と接続された出力ポート502xの前段の出力バッファ制御部702cxに入力される。
 するとステップS802で、ライトバックデータパケット601のパケットヘッダ情報605がエンコーダ405、管理テーブル部801、および比較部802へ出力される。
 図17に関して説明したように、具体的には、ライトバックデータパケット601のヘッダには、少なくとも、パケットタイプ、要求元ID、ReqID、宛先ID、およびデータステートのフィールドがある。
 図20の例では、パケットタイプの値は、ライトバックデータパケットであることを示す値である。
 そして、図14と同様に図20も、CPU104aがメインメモリ105e内のデータを要求したことを契機として、要求されたデータをキャッシュしているCPU104cがライトバックデータパケット601を出力する例を示す。したがって、ライトバックデータパケット601の要求元IDの値はCPU104aのIDである。また、宛先IDの値は、メインメモリ105eと同じノード101e内にあってメインメモリ105eを管理するSC103eのIDである。
 なお、ReqIDの値は、説明の便宜上、「5」であるとする。また、ライトバックデータパケット601ではデータステートが指定されないため、データステートの値は「なし」を示す値である。
 ステップS802では、パケットタイプはエンコーダ405と管理テーブル部801に出力され、要求元IDとReqIDは管理テーブル部801と比較部802に出力され、宛先IDとデータステートは管理テーブル部801に出力される。
 そして、ステップS803では、エンコーダ405が、受け取ったパケットタイプに基づいて、「ライトバックデータパケット601はデータパケットである」と判断し、データパケット用のライトポインタ制御部803にVALID信号を出力する。
 また、ステップS804では、比較部802が、受け取った要求元IDとReqIDの値を、管理テーブル部801内の各エントリ901-0~901-Nの要求元IDフィールド915とReqIDフィールド916から出力される値とそれぞれ比較する。実際には、図18A~図19に関して説明したように、VALIDフィールド914の値が「有効」を示す論理値1のエントリのみが比較対象である。
 したがって、上記のとおり「すべてのエントリ901-0~901-NにおいてVALIDフィールド914の値は論理値0である」という場合には、比較部802からの(N+1)個の出力はすべて、「不一致」を示す論理値0である。図18Bに示すように、比較部802はこの比較結果を管理テーブル部801とライトポインタ制御部803に出力する。
 すると、ステップS805においてデータパケット用のライトポインタ制御部803は、比較部802からの(N+1)個の出力の論理和を求める。求めた論理和は、ライトバックデータパケット601の要求元IDおよびReqIDと一致する要求元IDおよびReqIDを記憶する有効なエントリが管理テーブル部801に存在しないことを示す。また、上記ステップS803のとおり、エンコーダ405からはVALID信号が出力されている。
 よって、ステップS805でライトポインタ制御部803は、管理テーブル部801とデータパケット保存部410にライト指示と「0000」というライトポインタ値を出力し、その後、ライトポインタ値を「0001」に更新する。
 するとステップS806で管理テーブル部801は、ライト指示にしたがい、入力されたライトポインタ値が示す「0000」という番地用のエントリ901-0において、3つのフィールドの値をセットする。
 すなわち、管理テーブル部801は、エントリ901-0のVALIDフィールド914を、「有効」を示す論理値1にセットする。また、管理テーブル部801は、エントリ901-0の要求元IDフィールド915に、ステップS802で入力されたCPU104aのIDを保存する。さらに、管理テーブル部801は、エントリ901-0のReqIDフィールド916に、ステップS802で入力された「5」というReqIDの値を保存する。
 また、ステップS807でデータパケット保存部410は、ライト指示にしたがい、入力されたライトポインタ値が示す「0000」という番地に、ライトバックデータパケット601を保存する。ステップS806とS807の実行順は任意であり、ステップS806とS807は並列に実行されてもよい。
 また、ステップS808では、パケット間アービタ部401の比較器403が、データパケット用のライトポインタ値とリードポインタ値を比較する。ライトポインタ値は、ライトポインタ制御部803から受け取った更新後の「0001」という値であり、リードポインタ値はリードポインタ制御部407から受け取った「0000」という値である。したがって、比較結果は「不一致」となり、比較器403はパケット間アービタ部401に出力リクエストを出力する。
 すると、パケット間アービタ部401は、ステップS808で受け取った出力リクエストと要求パケットに関する出力リクエストとの間の調停を必要に応じて行った後、ステップS809で、ポート間アービタ部507xへ出力リクエストを出力する。
 続いて、ステップS809の出力リクエストに対する出力許可が得られる前に、さらに共有型・転送データパケットが出力バッファ制御部702cxに入力された場合について説明する。
 図21は、第1実施形態においてライトバックデータパケットの後から共有型・転送データパケットが入力されたときの出力バッファ制御部702cx内の管理テーブル部801の動作の具体例を説明する図である。なお、図21には、出力バッファ制御部702cx内のコンポーネントのうち、以下で説明するステップに関連するもののみを抜粋して示してある。また、図21では、管理テーブル部801内の各エントリ901-0~901-Nを表形式で示した。
 ステップS810で、図15のCPU104cが出力した共有型・転送データパケット603がSC103c内のルーティング部703によりルーティングされ、XB102と接続された出力ポート502xの前段の出力バッファ制御部702cxに入力される。
 するとステップS811で、共有型・転送データパケット603のパケットヘッダ情報606が、エンコーダ405、管理テーブル部801、および比較部802へ出力される。
 共有型・転送データパケット603は、CPU104aがメインメモリ105e内のデータを要求したことを契機として、要求されたデータをキャッシュしているCPU104cが出力したパケットである。したがって、パケットヘッダ情報606において、パケットタイプの値は転送データパケットであることを示す値であり、要求元IDと宛先IDの値はCPU104aのIDであり、ReqIDの値は図20での仮定のとおり「5」である。また、パケットヘッダ情報606においてデータステートの値は、キャッシュプロトコルにしたがって、「共有型」を示す値であるとする。
 ステップS811では、パケットタイプはエンコーダ405と管理テーブル部801に出力され、要求元IDとReqIDは管理テーブル部801と比較部802に出力され、宛先IDとデータステートは管理テーブル部801に出力される。
 続いて、ステップS812でエンコーダ405が、受け取ったパケットタイプに基づいて、「共有型・転送データパケット603はデータパケットである」と判断し、データパケット用のライトポインタ制御部803にVALID信号を出力する。
 また、ステップS813では比較部802が、受け取った要求元IDとReqIDの値を、管理テーブル部801内の各エントリ901-0~901-Nの要求元IDフィールド915とReqIDフィールド916から出力される値とそれぞれ比較する。実際には、図20の前提と図20の動作から、VALIDフィールド914の値が論理値1であるエントリ901-0のみが比較対象である。
 図20のステップS806の結果、エントリ901-0において要求元IDフィールド915にはCPU104aのIDが保存され、ReqIDフィールド916には「5」という値が保存されている。したがって、ステップS813では、比較部802は、エントリ901-0に対応する比較器941-0から「一致」を示す論理値1を出力し、他のエントリ901-1~901-Nに対応する比較器941-1~941-Nからは「不一致」を示す論理値0を出力する。これら(N+1)個の比較結果の出力先は、管理テーブル部801とライトポインタ制御部803である。
 すると、ステップS814においてデータパケット用のライトポインタ制御部803は、比較部802からの(N+1)個の出力の論理和を求める。求めた論理和は、共有型・転送データパケット603の要求元IDおよびReqIDと一致する要求元IDおよびReqIDを記憶する有効なエントリが管理テーブル部801に存在することを示す。また、上記ステップS812のとおり、エンコーダ405からはVALID信号が出力されている。
 よって、ステップS814でライトポインタ制御部803は、管理テーブル部801に複製ライト指示を出力する。換言すれば、ステップS814ではライト指示がネゲートされており、ライト指示がデータパケット保存部410に出力されない。したがって共有型・転送データパケット603そのものは、データパケット保存部410に保存されず、破棄される。
 そして、ステップS815で管理テーブル部801は、ライトポインタ制御部803から出力された複製ライト指示と比較部802からの(N+1)個の出力に基づいて、一致が検出されたエントリ901-0において、4つのフィールドの値をセットする。
 すなわち、管理テーブル部801は、エントリ901-0の複製データVALIDフィールド917を、「有効」を示す論理値1にセットする。また、管理テーブル部801は、エントリ901-0の複製パケットタイプフィールド918に、ステップS811で入力された、転送データパケットを示す値を保存する。
 さらに、管理テーブル部801は、エントリ901-0の複製パケット宛先IDフィールド919に、ステップS811で入力されたCPU104aのIDを保存する。また、管理テーブル部801は、エントリ901-0の複製データステートフィールド920に、ステップS811で入力された、「共有型」を示す値を保存する。
 以上、図20と図21を参照して説明したように、第1実施形態によれば、第1のデータパケットに対する出力許可が得られる前に第2のデータパケットが入力されたとき、データパケット保存部410内の1つのブロックのみが使われる。比較例では図13のとおり同じデータペイロードを持つ2つのパケットを保存するためにデータパケット保存部410の2つのブロックが使われるのと比較して、第1実施形態ではデータパケット保存部410に必要な記憶容量が2分の1に削減されている。
 つまり、SC103cが同じノード101c内のCPU104c~104dへ出力する共有型・データ転送要求パケットの最大アウトスタンディング数がPのとき、比較例ではデータパケット保存部410に2Pブロックの容量が必要である。それに対し、第1実施形態では、データパケット保存部410にPブロックの容量が必要である。
 なお、第1実施形態では、比較例には存在しない管理テーブル部801が設けられており、管理テーブル部801内にはFFなどの記憶素子により実現されるエントリ901-0~901-Nが含まれる。しかしながら、一般にパケットのヘッダはデータペイロードよりも十分に短い。よって、管理テーブル部801のために付加的に必要となる記憶容量を考慮しても、第1実施形態の方が比較例よりも出力バッファ制御部に必要な記憶容量が大幅に少ない。よって、データパケット保存部410だけではなく出力バッファ制御部全体で必要な記憶容量で比較したとしても、第1実施形態は比較例の約2分の1の容量しか必要としない。
 続いて、図21のステップS814の後でポート間アービタ部507xから出力許可が下りたときの動作、すなわち図19のステップS707~S714の具体例を説明する。
 図22は、第1実施形態において図21の処理により共有型・転送データパケットが破棄された後にポート間アービタ部507xから出力許可が下りたときの出力バッファ制御部内702cxのヘッダマージ部804の動作の具体例を説明する図である。図22には、出力バッファ制御部702cx内のコンポーネントのうち、以下で説明するステップに関連するもののみを抜粋して示してある。また、図22にはヘッダマージ部804の動作を示す模式図を含む。
 ステップS901で、ポート間アービタ部507xからパケット間アービタ402に対して、出力許可が出力される。
 するとステップS902でパケット間アービタ402は、データパケットを出力するよう指示するパケット間セレクタ430に選択信号を出力するとともに、データパケット用のリードポインタ制御部407へリードポインタ更新指示を出力する。
 続いて、ステップS903でリードポインタ制御部407は、リードポインタ更新指示にしたがって、まずリード指示と「0000」というリードポインタ値を管理テーブル部801とデータパケット保存部410に出力した後、リードポインタ値を更新する。そして、リードポインタ制御部407は、更新後のリードポインタ値「0001」を比較器403に出力する。
 ここで、図20のステップS805においてライトポインタ値は「0001」に更新されているため、ステップS903の実行によりリードポインタ値とライトポインタ値が一致する。したがって、リードポインタの更新により、比較器403はパケット間アービタ402への出力リクエストをネゲートするようになる。つまり、比較器403からパケット間アービタ402へ、出力リクエストが出力されないようになる。
 したがって、もし要求パケットに関して比較器404がパケット間アービタ402へ出力リクエストを出力していなければ、パケット間アービタ402からポート間アービタ部507xへの出力リクエストも出力されないようになる。
 また、ステップS904でデータパケット保存部410は、ステップS903で入力されたリード指示とリードポインタ値にしたがい、リードポインタ値が示す番地「0000」に保存されているパケットをヘッダマージ部804とセレクタ805に出力する。なお、図20に関して説明したように、「0000」番地「0000」にはライトバックデータパケット601が保存されている。
 また、ステップS905で管理テーブル部801は、ステップS903で入力されたリード指示にしたがい、リードポインタ値が示す番地「0000」用のエントリ901-0に保存されている4つのフィールドの値をヘッダマージ部804に出力する。
 すなわち、管理テーブル部801は、エントリ901-0の複製データVALIDフィールド917、複製パケットタイプフィールド918、複製パケット宛先IDフィールド919、および複製データステートフィールド920の値をヘッダマージ部804に出力する。これらのフィールドの値は、図21に関して説明したとおり、それぞれ、「有効」を示す論理値1、転送データパケットを示す値、CPU104aのID、「共有型」を示す値である。また、以上4つのフィールドの値を、以下ではまとめて複製情報607とよぶことがある。
 また、ステップS905で管理テーブル部801はさらに、リードポインタ値が示す「0000」なる番地用のエントリ901-0の複製データVALIDフィールド917の値である論理値1をセレクタ805に出力する。そして、図18Aに示したように管理テーブル部801は、FF905の出力をリセット信号として用いて、エントリ901-0の複製データVALIDフィールド917を、「無効」を示す論理値0にリセットする。
 なお、ステップS904とS905の実行順は任意であり、ステップS904とS905が並列に実行されてもよい。
 続いて、ステップS906でヘッダマージ部804は、ステップS904でデータパケット保存部410から出力されたライトバックデータパケット601のヘッダに、ステップS905で管理テーブル部801から出力された複製情報607を追加する。ヘッダマージ部804は、複製情報607の追加により、複製情報を持ったライトバックデータパケット608を生成し、セレクタ805に出力する。
 例えば、ライトバックデータパケット601のヘッダは、パケットタイプ、宛先ID、要求元ID、ReqID、データステート、アドレス、その他のフィールドを含む。また、ヘッダの末尾には1つ以上の予約(reserved)フィールドがあってもよい。なお、ヘッダ内のアドレスフィールドは、データペイロードに含まれるデータが記憶されているメインメモリのアドレスを示す。
 ヘッダマージ部804は、ライトバックデータパケット601のヘッダの所定の位置に複製情報607を挿入する。例えば、図22の例では「所定の位置」とはヘッダの末尾の予約フィールドの直前の位置だが、「所定の位置」は実施形態に応じて任意に定めることができる。
 複製情報を持ったライトバックデータパケット608のヘッダでは、図22に示すように、ライトバックデータパケット601に元々含まれていたパケットタイプ、宛先ID、要求元ID、ReqID、データステート、アドレス、およびその他のフィールドの後に、複製情報607に相当する4つのフィールドが続く。そして最後に、ライトバックデータパケット601に元々含まれていた予約フィールドがある。複製情報を持ったライトバックデータパケット608のデータペイロードは、ライトバックデータパケット601のデータペイロードそのものである。
 換言すれば、複製情報を持ったライトバックデータパケット608は、ライトバックデータパケット601のヘッダの情報と、共有型・転送データパケット603のヘッダの情報とを含む。さらに、複製情報を持ったライトバックデータパケット608は、ライトバックデータパケット601と共有型・転送データパケット603に共通のデータペイロードを含む。
 ここで、セレクタ805には、データパケット保存部410からライトバックデータパケット601が入力され、ヘッダマージ部804から複製情報を持ったライトバックデータパケット608が入力されている。ステップS907では、セレクタ805が、ステップS905で管理テーブル部801から出力された選択信号としての複製データVALIDフィールド917の値にしたがって、複製情報を持ったライトバックデータパケット608を選択し、パケット間セレクタ430に出力する。
 そして、ステップS908においてパケット間セレクタ430は、ステップS902で入力された選択信号に基づいて、データパケットを選択する。すなわち、パケット間セレクタ430は、セレクタ805からの入力である複製情報を持ったライトバックデータパケット608を選択してポート間セレクタ508xへと出力する。
 なお、ポート間アービタ部507xは、ステップS901で出力バッファ制御部702cxに対する出力許可を出力した時点で、出力バッファ制御部702cxを選択するよう指示する選択信号をポート間セレクタ508xに出力している。したがって、ステップS908でパケット間セレクタ430からポート間セレクタ508xに出力された複製情報を持ったライトバックデータパケット608は、ポート間セレクタ508xで選択され、図15の出力ポート502xへ出力される。そして、複製情報を持ったライトバックデータパケット608は、出力ポート502xからバス108cを介して、図16に示すXB102の入力ポート201cへと出力される。
 ここで、比較例においては、図12と図13に示すように、データパケット保存部410に個々に保存されていたライトバックデータパケット601と共有型・転送データパケット603が個々にSC103cからバス108cを介してXB102へ出力される。それに対し、第1実施形態では、上記のとおり、1つの複製情報を持ったライトバックデータパケット608がSC103cからバス108cを介してXB102へ出力されるだけである。したがって、第1実施形態によれば、データパケットの出力によるバス108cの占有時間を比較例の約2分の1に短縮することができる。
 なお、複製情報を持ったライトバックデータパケット608は、追加された複製情報607のぶん、ライトバックデータパケット601や共有型・転送データパケット603よりもパケット長が長い。しかし、一般には、ヘッダの長さがデータペイロードの長さより十分に短いようなパケット形式が採用されることが多い。したがって、複製情報を持ったライトバックデータパケット608の長さは、ライトバックデータパケット601の長さと共有型・転送データパケット603の長さの和の、約2分の1である。
 バス108cの占有時間が短縮されると、図15のSC103cにおいて各出力バッファ制御部702cx、702dx、509ix、および509sxがポート間アービタ部507xへ出力リクエストを出力してから出力許可が下りるまでの待ち時間が短縮される。したがって、第1実施形態によれば、比較例と比べて、サーバシステム100全体としてのレイテンシおよびスループットが改善される。つまり、第1実施形態によれば、サーバシステム100の性能が向上する。
 続いて、図22のようにしてXB102へ出力された、複製情報を持ったライトバックデータパケット608の、XB102における復元について、XB102内のコンポーネントの詳細とともに、図23~図29を参照して説明する。
 図23は、第1実施形態における複製チェック部1001、データパケット復元部1002、セレクタ1003、およびルーティング部713の構成を示す図である。図23は、図16に示すXB102においてSC103cに対応する部分を抜粋して示した図である。
 つまり、図23は、図16においてSC103cと接続された入力ポート201cからルーティング部713へ至る経路上に設けられた複製チェック部1001とデータパケット復元部1002とセレクタ1003とを示している。また、図23には、ルーティング部713の一部(具体的には、入力ポート201cが受け取ったパケットのルーティングに関わる部分)を抜粋して示してある。
 なお、図23と同様の複製チェック部1001とデータパケット復元部1002とセレクタ1003が、図16において他のSC103a、103e、および103gに対応して設けられている。また、ルーティング部713は、4つのSC103a~103gに関して対称的に構成されている。
 さらに、図23と同様の複製チェック部1001とデータパケット復元部1002とセレクタ1003が、図15において入力ポート501xからルーティング部703に至る経路上に設けられている。また、SC103c内のルーティング部703の詳細の図示は省略したが、ルーティング部713の構成とともにルーティング部703の構成についても後述する。
 図23において、SC103cと接続された入力ポート201cからルーティング部713へ至る経路上には、複製チェック部1001とデータパケット復元部1002とセレクタ1003とが設けられている。また、複製チェック部1001はルーティングテーブル部711cと接続されている。ルーティングテーブル部711cの詳細は、図25とともに後述する。
 複製チェック部1001は、パケットタイプチェック部1004と複製チェック部1005と比較器1006を備える。また、データパケット復元部1002は複製データパケット修正部1007とヘッダ復元部1008とデータパケット生成部1009を備える。
 そして、ルーティング部713は、比較例における図6のルーティング部203と同様の分岐部306を備え、さらに、分岐部1010、OR回路1011、OR回路1012、およびOR回路1013を備える。ただし、図6の分岐部306は出力バッファ制御部207ca、207ce、および207cgに接続されているが、分岐部306はOR回路1011、1012、および1013に接続されている。そして、OR回路1011、1012、および1013がそれぞれに対応する出力バッファ制御部712ca、712ce、および712cgに接続されている。
 入力ポート201cから入力されたパケットの全部または一部は、以下のようにして各部に入力される。
 入力ポート201cに接続された信号線1021には、入力ポート201cがSC103cから受け取ったパケットが出力される。信号線1021は信号線1022と信号線1023に分岐している。信号線1022は分岐してセレクタ1003と複製データパケット修正部1007に接続されており、信号線1022を介してパケットがセレクタ1003と複製データパケット修正部1007に出力される。
 また、信号線1021から分岐した信号線1023を介して、複製チェック部1001にはパケットに含まれるヘッダ情報が出力される。信号線1023はさらに信号線1024と信号線1025に分岐し、信号線1025は信号線1026と信号線1027に分岐する。信号線1024を介してヘッダ情報のうちパケットタイプフィールドの値がパケットタイプチェック部1004に出力される。
 また、信号線1026を介してヘッダ情報のうち複製データVALIDフィールドの値が複製チェック部1005に出力され、信号線1027を介してヘッダ情報のうち宛先IDフィールドと複製宛先フィールドの値がルーティングテーブル部711cに出力される。
 なお、入力ポート201cが受け取ったパケットは、例えば要求パケットである場合などでは、複製データVALIDフィールドや複製パケット宛先IDフィールドを持たない。その場合、信号線1026を介して複製チェック部1005には、ダミーの値として論理値0が出力される。また、信号線1027を介してルーティングテーブル部711cには、例えば、宛先IDとして存在しないダミーの値が出力されてもよい。例えば、すべてのビットが論理値0の値を宛先IDとして用いないことが予め決められていれば、ダミーの値としてすべてのビットが論理値0の値を用いることができる。
 このようなダミーの値の出力は、パケットの形式を定める仕様に応じて、適宜実現可能である。
 例えば、任意の用途に使用してよいオプション領域がヘッダに含まれる形式のパケットが、サーバシステム100において用いられてもよい。そして、図22に示した複製データVALID、複製パケットタイプ、複製パケット宛先ID、および複製データステートの各フィールドは、オプション領域を使ったものであってもよい。例えば、オプション領域は、未使用の場合には「0」で埋められると仕様で決まっていてもよい。
 この場合、例えば、信号線1023が信号線1021から分岐する点が例えば上記(e2)のように実現されていれば、上記のような必要に応じたダミーの値の出力が実現される。
 あるいは、ヘッダ長を示すフィールドを含む形式のパケットが用いられ、例えば上記(e3)で説明したように、信号線1023が信号線1021から分岐する点に不図示の回路素子があってもよい。当該回路素子は、ヘッダ長を示すフィールドの値に応じて、入力ポート201cから出力されたパケットに複製データVALIDフィールドや複製パケット宛先IDフィールドがあるか否かを判断し、必要に応じてダミーのデータを出力してもよい。
 また、分岐した信号線1022は、上記のとおり複製データパケット修正部1007に接続するだけでなく、さらに信号線1028と信号線1029へと分岐し、それぞれヘッダ復元部1008とデータパケット生成部1009へと接続している。信号線1022を介して出力されるパケットのうち、ヘッダが信号線1028を介してヘッダ復元部1008へと出力され、データペイロードがデータパケット生成部1009へと出力される。
 以上、複製チェック部1001とデータパケット復元部1002とセレクタ1003とルーティング部713の構成の概要を説明するとともに、図23において入力ポート201cと直接接続されている各コンポーネントへの入力について説明した。続いて、図23に示した各コンポーネントの動作について、図24を参照して詳しく説明する。
 図24は、第1実施形態における複製チェック部、データパケット復元部、およびセレクタの動作を説明する図である。
 まず、メモリアクセス要求パケットや、データ転送要求パケットなどの要求パケット(すなわち、データペイロードを持たないパケット)が入力ポート201cに入力された場合の動作を説明する。要求パケットを処理する動作の流れは、図24において実線矢印により示される。
 ステップS1001rにおいて、入力ポート201cが要求パケットを出力する。
 するとステップS1002rにおいて、要求パケットのヘッダ内の宛先IDフィールドがルーティングテーブル部711cに出力されるとともに、ヘッダ内のパケットタイプフィールドがパケットタイプチェック部1004に出力される。また、上記のように複製データVALIDフィールドと複製パケット宛先IDフィールドのダミーの値が出力されてもよい。
 ここで、パケットタイプチェック部1004は、図示したように、入力されたパケットタイプの値がデータパケットを示す値であるか否かを判断する判断部1101を備えている。ステップS1003rにおいて判断部1101は、入力されたパケットタイプの値をエンコードすることで、入力されたパケットがデータパケットであると判断する。
 するとステップS1004rで判断部1101は、セレクタ1003に対し、複製データパケット修正部1007からの入力ではなく、図23の信号線1022を介して入力ポート201cから入力されたパケットをそのまま出力するよう命令する選択信号を出力する。選択信号にしたがい、セレクタ1003は入力ポート201cから入力されたパケットをルーティング部713の分岐部306に出力する。
 また、入力されたパケットタイプの値が要求パケットを示すので、ステップS1004rで判断部1101はさらに、複製チェック部1005へ出力するVALID信号をネゲートする。
 また、ステップS1005rでルーティングテーブル部711cは、図23の信号線1027を介して入力された宛先IDに基づいて、入力されたパケットのルーティング先を決定し、出力ポート情報をルーティング部713の分岐部306に出力する。ステップS1005rは、ステップS1003r~S1004rと並列に実行されてもよい。
 そして、分岐部306は、出力ポート情報に基づいて、入力された要求パケットをOR回路1011、1012、または1013に出力する。
 OR回路1011、1012、または1013を介してのパケットのルーティングの詳細は図26とともに後述するが、概略を述べると次のとおりである。例えば、出力先が図16の出力ポート202cである要求パケットは、ステップS1005rで決定された出力ポート情報にしたがい、出力ポート202cの前段の出力バッファ制御部712caと接続されたOR回路1011へと出力される。このとき、後述するように分岐部1010からOR回路1011へは論理値0で埋められたデータが出力される。したがって、分岐部306が出力した要求パケットがOR回路1011を介して出力バッファ制御部712caへと出力される。
 また、宛先IDから出力ポート情報を取得するためのルーティングテーブル部711cの内部の構成は、図6のルーティングテーブル部204cと類似である。ルーティングテーブル部711cの構成の詳細については、図25とともに後述する。
 以上のとおり、入力ポート201cから要求パケットが出力された場合は、データパケット復元部1002を使わずにルーティングが行われる。
 続いて、ライトバックデータパケットや転送データパケットなどのデータパケット(すなわち、データペイロードを持つパケット)が入力ポート201cに入力された場合の動作を説明する。データパケットを処理する動作の流れは、図24において1点鎖線矢印により示される。
 ステップS1001dにおいて、入力ポート201cがデータパケットを出力する。
 するとステップS1002dにおいて、データパケットのヘッダ内の宛先IDフィールドと複製パケット宛先IDフィールドがルーティングテーブル部711cに出力される。また、ヘッダ内のパケットタイプフィールドがパケットタイプチェック部1004に出力される。さらに、複製データVALIDフィールドが複製チェック部1005に出力される。なお、上記のように、入力されたデータパケットが複製データVALIDフィールドや複製パケット宛先IDフィールドを持たない場合は、ダミーの値が使われてもよい。
 そして、ステップS1003dではパケットタイプチェック部1004内の判断部1101が、入力されたパケットがデータパケットであると判断する。
 するとステップS1004dで判断部1101は、入力されたパケットがデータパケットであることを示すVALID信号を複製チェック部1005に出力(アサート)する。第1実施形態では、VALID信号は正論理の信号なので、ステップS1004dでは論理値1が複製チェック部1005に出力される。なお、データパケットが入力された場合のステップS1004dでは、判断部1101は、セレクタ1003への選択信号を無効な値に設定する。それにより、判断部1101は、後述する比較器1006からの選択信号のみにしたがって動作するよう、セレクタ1003に命令する。
 そして、ステップS1005dで複製チェック部1005は、「入力されたデータパケットからの復元が必要か否かを判断するための比較を、比較器1006が行う必要があるか否か」を判断する。ここで、ステップS1005dの判断について説明するため、データパケットが入力される場合を次の(j1)~(j3)に場合分けする。
 (j1)入力されたパケットが有効な複製情報を持たないパケットである場合。
 例えば、SC103c内の出力バッファ制御部702cxにおいて、図20の処理の後、かつ、図21と同様の共有型・転送データパケット603が入力される前に、ポート間アービタ部507xから出力許可が出力されたとする。すると、図22のような複製情報607の追加が行われないので、XB102内の入力ポート201cに入力されたデータパケットは、有効な複製情報を持たない。
 (j2)入力されたパケットが有効な複製情報を持ち、かつ、宛先IDフィールドに対応する出力ポートと、複製宛先IDフィールドに対応する出力ポートが等しい場合。
 例えば、CPU104eを宛先とする共有型・転送データパケットとSC103eを宛先とするライトバックデータパケットから、図20~図22と類似の処理により、複製情報を持ったデータパケットが生成されることがある。こうして生成されたパケットが入力ポート201cに入力された場合、宛先IDフィールドに対応する出力ポートと複製宛先IDフィールドに対応する出力ポートは、ともに図16の出力ポート202eであり、等しい。
 (j3)入力されたパケットが有効な複製情報を持ち、かつ、宛先IDフィールドに対応する出力ポートと、複製宛先IDフィールドに対応する出力ポートが異なる場合。
 例えば、図20~図22の処理により生成された、図22の複製情報を持ったライトバックデータパケット608が、入力ポート201cに入力された場合が、(j3)には含まれる。
 第1実施形態では、上記(j1)と(j2)の場合には、入力されたパケットそのものをルーティング部713がルーティングする。なぜなら、(j1)の場合はそもそも復元の必要がないためである。また、(j2)の場合は、より後の時点で復元する方が、XB102の内部バスや、XB102とSCとの間のバス(上記の例ではSC103eとの間のバス108e)の占有時間を短縮することができるためである。
 逆に、(j3)の場合には、入力されたパケットからデータパケット復元部1002が2つのパケットを復元し、復元された2つのパケットをルーティング部713がルーティングする。つまり、(j3)の場合にのみ復元が必要である。
 ここで、入力されたパケットの複製VALIDフィールドの値が「無効」を示す場合は、上記(j1)に相当し、そもそもパケットの復元とは無関係である。よって、比較器1006による比較を行うまでもなく、復元は不要であると直ちに判明する。
 しかし、入力されたパケットの複製VALIDフィールドの値が「有効」を示す場合は、上記(j2)と(j3)のいずれであるのかによって、復元の要否が異なる。そして、上記(j2)と(j3)を弁別するには、宛先IDフィールドに対応する出力ポートと、複製宛先IDフィールドに対応する出力ポートを比較する必要がある。つまり、入力されたパケットの復元が必要か否かを判断するためには、比較器1006による比較が必要である。
 比較器1006による比較が必要であるか否かを決定するため、複製チェック部1005は、図24に示すようにAND回路1102を備えている。AND回路1102への入力は、図23の信号線1026を介して入力される複製VALIDフィールドの値と、パケットタイプチェック部1004の判断部1101が出力するVALID信号である。なお、要求パケットが入力された場合は、比較器1006による比較は当然不要である。
 ステップS1005dにおいて、AND回路1102の出力は、上記(j1)の場合に論理値0となり、上記(j2)または(j3)の場合に論理値1となる。AND回路1102の出力は比較器1006に入力される。
 すなわち、比較器1006による比較が必要なとき、複製チェック部1005のAND回路1102は、正論理のVALID信号を比較器1006に出力する。
 また、ステップS1006dに示すように、ルーティングテーブル部711cは、ステップS1002dで入力された宛先IDフィールドと複製宛先IDフィールドの値に基づいて、出力ポート情報と複製データパケット出力ポート情報を出力する。
 なお、「出力ポート情報」とは、比較例と同様に、宛先IDフィールドで指定された宛先に対応する出力ポートを識別する情報である。また、「複製データパケット出力ポート情報」とは、複製パケット宛先IDフィールドで指定された宛先に対応する出力ポートを識別する情報である。
 ここで、ルーティングテーブル部711cの詳細な構成を示した図25を参照して、ステップS1006dにおけるルーティングテーブル部711cの動作を説明する。
 図25は、第1実施形態におけるルーティングテーブル部711cの構成図である。ルーティングテーブル部711cは、図16および図23に示すように、SC103cから他のSCへのルーティングを管理するためのコンポーネントである。
 ルーティングテーブル部711cは、比較例において図6に示したルーティングテーブル部204cと同様のFF307a~307lと、比較器308a~308lと、OR回路309a~309cと、セレクタ310と、FF311a~311cを備える。比較例と同様に、FF307a~307lはそれぞれパケットの宛先となりうるCPU104aなどのコンポーネントのIDを格納しており、FF311a~311cは出力ポート202a、202e、202gを識別する情報を格納している。
 したがって、ルーティングテーブル部711cは、入力された宛先IDフィールドの値に応じて、比較例のルーティングテーブル部204cと同様に、セレクタ310から出力ポート情報を出力する。
 また、ルーティングテーブル部711cはさらに、12個の比較器1201a~1201lと、3個のOR回路1202a~1202cと、セレクタ1203を備える。
 12個の比較器1201a~1201lには、12組のFF307a~307lが保持する値がそれぞれ入力される。また、12個の比較器1201a~1201lの各々には、複製宛先IDフィールドの値が入力される。比較器1201a~1201lは、それぞれ2つの入力を比較し、2つの入力が一致すれば論理値1を出力し、2つの入力が一致しなければ論理値0を出力する。
 OR回路1202aは、比較器1201a~1201dの出力の論理和をセレクタ1203に出力する。OR回路1202bは、比較器1201e~1201hの出力の論理和をセレクタ1203に出力する。OR回路1202cは、比較器1201i~1201lの出力の論理和をセレクタ1203に出力する。
 したがって、セレクタ1203には、最大1ビットが論理値1となる合計3ビットの制御信号が入力される。セレクタ1203は、論理値1のビットの位置に応じて、FF311a~311cが保持する出力ポート情報のいずれかを選択し、複製データパケット出力ポート情報として出力する。
 すなわち、セレクタ1203は、OR回路1202aの出力が論理値1のとき、FF311aが保持する値を選択する。また、セレクタ1203は、OR回路1202bの出力が論理値1のとき、FF311bが保持する値を選択し、OR回路1202cの出力が論理値1のとき、FF311cが保持する値を選択する。
 このように、図25のルーティングテーブル部711cは、比較例と同様に宛先IDから出力ポート情報を取得する回路と、複製宛先IDから複製データパケット出力ポート情報を取得する回路とを有し、後者の構成は前者と同様である。また、前者と後者の回路は、宛先のコンポーネントを識別する情報を保持するFF307aなどの記憶素子と、ポートを識別する情報を保持するFF311aなどの記憶素子を共有している。図15のルーティングテーブル部701xも図25と同様に構成されている。
 ここで図24の説明に戻ると、ステップS1006dでルーティングテーブル部711cは、出力ポート情報を比較器1006と分岐部306に出力するとともに、複製データパケット出力ポート情報を比較器1006と分岐部1010に出力する。なお、ステップS1006dは、ステップS1004d~S1005dと並列に実行されてもよい。
 続いて、ステップS1007dで比較器1006は、複製チェック部1005からのVALID信号、ならびにルーティングテーブル部711cからの出力ポート情報および複製データパケット出力ポート情報に基づいて、比較操作を実行する。比較器1006は、比較結果を選択信号としてセレクタ1003と分岐部1010に出力する。
 つまり、複製チェック部1005からVALID信号がアサートされており、かつ、出力ポート情報と複製データパケット出力ポート情報が一致しない場合、比較器1006は、データパケット復元部1002からの出力を選択するよう指示する選択信号を出力する。それ以外の場合、比較器1006は、データパケット復元部1002からの出力を選択しないよう指示する選択信号を出力する。
 換言すれば、比較器1006は、上記(j3)の場合、データパケット復元部1002からの出力を選択するよう指示する選択信号を出力する。また、比較器1006は、上記(j1)または(j2)の場合、データパケット復元部1002からの出力を選択しないよう指示する選択信号を出力する。
 なお、データパケットが入力された場合、パケットタイプチェック部1004からセレクタ1003への出力は上記のとおり無効な値なのでセレクタ1003では無視される。よって、セレクタ1003は比較器1006からの選択信号のみにしたがって、入力ポート201cから図23の信号線1022を介して入力されたパケットまたはデータパケット復元部1002内の複製データパケット修正部1007から入力されたパケットを選択する。そして、セレクタ1003は、選択したパケットを分岐部306に出力する。
 また、分岐部1010は、データパケット復元部1002からの出力を選択しないよう指示された場合、すべてのビットを論理値0としたデータを出力する。
 続いて、上記ステップS1002d~S1007dと並行してデータパケット復元部1002で実行されるステップS1008d~S1010dについて説明する。なお、以下で説明するステップS1008d~S1010dは、上記(j3)の場合の動作である。上記(j3)の場合以外では、下記の理由から、データパケット復元部1002の動作は後段のセレクタ1003およびルーティング部713の動作に影響しない。
 要求パケットが入力された場合または上記(j1)の場合には、セレクタ1003でデータパケット復元部1002からの出力が選択されることがない。そして、データパケット復元部1002からの出力を選択しないよう指示する選択信号を比較器1006が分岐部1010に出力している。
 また、上記(j2)の場合は、下記と同様にデータパケット復元部1002での復元が行われる。しかし、上記のとおり分岐部1010の出力の各ビットは論理値0であるため、データパケット復元部1002からの出力は、分岐部1010を介してOR回路1011、1012、あるいは1013へ伝達されることはない。
 よって、以下では(j3)の場合に注目してデータパケット復元部1002の動作を説明する。
 上記(j3)の場合、ステップS1001dで入力ポート201cから出力されるのは、複製情報を持ったデータパケットである。そこで、ステップS1008dでは、複製データパケット修正部1007に、入力ポート201cから出力されたデータパケットが出力される。また、ヘッダ復元部1008には、入力ポート201cから出力されたデータパケットのヘッダが出力される。そして、データパケット生成部1009には、入力ポート201cから出力されたデータパケットのデータペイロードが出力される。
 すると、ステップS1009dで複製データパケット修正部1007は、入力されたパケットのヘッダから複製情報を削除したパケットを生成してセレクタ1003に出力する。つまり、複製データパケット修正部1007は、図17のヘッダマージ部804でマージされる前の元の2つのパケットのうち、先に出力バッファ制御部(例えば702cx)のデータパケット保存部410に保存されていた方のパケットを復元する。
 また、ステップS1010dでヘッダ復元部1008は、入力されたヘッダから、復元しようとする元のデータパケットのヘッダを生成して復元する。つまり、ヘッダ復元部1008は、元の2つのパケットのうち、後から出力バッファ制御部(例えば702cx)に入力されて破棄された方のパケットのヘッダを復元する。ヘッダ復元部1008は、復元したヘッダをデータパケット生成部1009に出力する。なお、ステップS1009dとS1010dは並列に実行されてもよい。
 そして、ステップS1011dでデータパケット生成部1009は、ヘッダ復元部1008から入力されたヘッダと、図23の信号線1029を介して入力されたデータペイロードとをマージする(すなわち連結する)ことによりパケットを生成する。すなわち、データパケット生成部1009は、元の2つのパケットのうち、後から出力バッファ制御部(例えば702cx)に入力されて破棄された方のパケットを復元する。データパケット生成部1009は、復元したパケットをルーティング部713の分岐部1010に出力する。
 以上から、上記(j3)の場合は、複製データパケット修正部1007からの出力がセレクタ1003と分岐部306を介してルーティングされ、データパケット生成部1009からの出力が分岐部1010を介してルーティングされる。
 また、上記(j3)の場合には、分岐部306におけるルーティング先と分岐部1010におけるルーティング先が異なる。よって、復元された2つのパケットがともに同じ1つのOR回路(1011~1013のいずれか)に入力されることはありえない。そのため、第1実施形態では、セレクタではなくより構造が単純なOR回路を用いてルーティング部713を構成することが可能となっている。
 続いて、図20~図22の処理によりSC103c内の出力バッファ制御部702cxから出力された、複製情報を持ったライトバックデータパケット608が、XB102の入力ポート201cに入力されたという具体例について、図26を参照して説明する。
 図26は、第1実施形態において複製情報を持ったライトバックデータパケット608から元の2つのパケットを復元して2つのパケットをルーティングする動作の具体例を説明する図である。
 図22の処理によって生成された、複製情報を持ったライトバックデータパケット608が、ステップS1101でXB102の入力ポート201cから出力される。
 すると、複製情報を持ったライトバックデータパケット608の全体が複製データパケット修正部1007へ出力される。また、複製情報を持ったライトバックデータパケット608のヘッダのみがヘッダ復元部1008へ出力される。そして、複製情報を持ったライトバックデータパケット608のデータペイロードがデータパケット生成部1009へ出力される。
 また、ステップS1102では、複製情報を持ったライトバックデータパケット608のヘッダ内のいくつかのフィールドの値が下記のように出力される。
 ・宛先IDフィールドの値と複製パケット宛先IDフィールドの値がルーティングテーブル部711cに出力される。図22に示すとおり、宛先IDフィールドはSC103eのIDを示し、複製パケット宛先IDフィールドはCPU104aのIDを示す。
 ・パケットタイプフィールドの値がパケットタイプチェック部1004に出力される。図22に示すとおり、パケットタイプフィールドは、ライトバックデータパケットであることを示す。
 ・複製データVALIDフィールドの値が複製チェック部1005に出力される。図22に示すとおり、複製データVALIDフィールドの値は、「有効」を示す論理値1である。
 すると、ステップS1103でパケットタイプチェック部1004は、入力されたパケットタイプをエンコードし、その結果、ステップS1101で入力された複製情報を持ったライトバックデータパケット608がデータパケットであると判断する。よって、パケットタイプチェック部1004は、複製チェック部1005にVALID信号を出力する。
 すると、ステップS1104で複製チェック部1005は、パケットタイプチェック部1004から入力されたVALID信号と、ステップS1102で入力された複製データVALIDの論理積を求め、比較器1006に出力する。換言すれば、この例では求めた論理積の値は論理値1であるから、複製チェック部1005は比較器1006にVALID信号を出力(アサート)する。
 また、ステップS1105に示すようにルーティングテーブル部711cは、入力された宛先ID(すなわちSC103eのID)から、出力ポート202eを識別する情報を出力ポート情報として取得し、出力ポート情報を分岐部306に出力する。さらに、ルーティングテーブル部711cは、入力された複製パケット宛先ID(すなわちCPU104aのID)から、出力ポート202aを識別する情報を複製データパケット出力ポート情報として取得し、分岐部1010に出力する。
 また、ステップS1106で比較器1006は、ルーティングテーブル部711cから出力された出力ポート情報と複製データパケット出力ポート情報を比較する。その結果、出力ポート情報と複製データパケット出力ポート情報が不一致であるため、比較器1006は、データパケット復元部1002から出力されるパケットを選択するようにセレクタ1003と分岐部1010に選択信号を出力する。
 また、ステップS1107で複製データパケット修正部1007は、図22に示した複製情報を持ったライトバックデータパケット608のヘッダから、追加された複製情報607を削除することにより、図20のライトバックデータパケット601を復元する。以下では元のパケットと復元されたパケットを区別するため、復元後のライトバックデータパケットの参照符号を「609」とする。
 複製データパケット修正部1007は、復元したライトバックデータパケット609をセレクタ1003に出力する。
 ステップS1107の詳細を図27に示す。すなわち、図27は、第1実施形態における複製データパケット修正部1007の動作の具体例を説明する図である。
 図22に示したように、複製情報を持ったライトバックデータパケット608のヘッダの所定の位置(具体的には、ヘッダ末尾の予約フィールドの直前の位置)には、複製情報607が含まれる。複製情報607は、具体的には、複製データVALID、複製パケットタイプ、複製パケット宛先ID、複製データステートという4個のフィールドを有する。ステップS1107において複製データパケット修正部1007は、複製情報を持ったライトバックデータパケット608からヘッダ内の複製情報607を削除することによってライトバックデータパケット609を生成する。
 ここで図26の説明に戻ると、ステップS1108でヘッダ復元部1008は、入力されたヘッダ内から、図21に示した元の共有型・転送データパケット603のヘッダを生成し、データパケット生成部1009に生成したヘッダを出力する。
 ステップS1108の詳細を図28に示す。図28は、第1実施形態におけるヘッダ復元部1008の動作の具体例を説明する図である。
 図28に示すように、ヘッダ復元部1008は、複製情報を持ったライトバックデータパケット608のヘッダ内のフィールドの一部を取り出して適切に並べ替えることで、図21の元の共有型・転送データパケット603のヘッダを復元する。
 具体的には、ヘッダ復元部1008は、複製情報を持ったライトバックデータパケット608のヘッダから、下記の各フィールドを取り出し、下記のリスト順に並べることで、元の共有型・転送データパケット603のヘッダを生成し、復元する。なお、下記リストにおいて括弧内に値を示した。
 ・複製パケットタイプ(転送データパケットであることを示す値)
 ・複製パケット宛先ID(CPU104aのID)
 ・要求元ID(CPU104aのID)
 ・ReqID(5)
 ・複製データステート(「共有型」を示す値)
 ・アドレスその他の不図示のフィールド
 ・末尾の予約フィールド
 ここで、複製情報を持ったライトバックデータパケット608の複製パケットタイプ、複製パケット宛先ID、および複製データステートは、元の共有型・転送データパケット603のパケットタイプ、宛先ID、およびデータステートを複製したものである。
 また、図20~図22に示したように、元のライトバックデータパケット601と共有型・転送データパケット603は、同じ1つの転送データ要求パケットに起因してCPU104cにより出力される。したがって、両者において必然的に、要求元ID、ReqID、およびアドレスという3個のフィールドの値は等しい。また、第1実施形態では、その他の予約フィールドや特に図示しないフィールドの値も、ライトバックデータパケット601と共有型・転送データパケット603で共通であるとする。
 したがって、ヘッダ復元部1008は、上記のように複製情報を持ったライトバックデータパケット608のヘッダ内のフィールドの一部を取り出して必要に応じて並べ替えることで、共有型・転送データパケット603のヘッダを復元することができる。ヘッダ復元部1008は、復元したヘッダ611をデータパケット生成部1009に出力する。
 ここで図26の説明に戻ると、ステップS1109でデータパケット生成部1009は、ヘッダ復元部1008から出力された、復元したヘッダ611と、入力ポート201cから出力されたデータペイロードとをマージする。それにより、データパケット生成部1009は、元の共有型・転送データパケット603を復元する。以下では元のパケットと復元されたパケットを区別するため、復元後の共有型・転送データパケットの参照符号を「613」とする。
 ステップS1109の詳細を図29に示す。図29は、第1実施形態におけるデータパケット生成部1009の動作の具体例を説明する図である。
 図29に示すように、データパケット生成部1009には、復元したヘッダ611とデータペイロード612が入力される。データパケット生成部1009は、復元したヘッダ611の後にデータペイロード612を連結することで共有型・転送データパケット613を生成し、共有型・転送データパケット613を分岐部1010に出力する。
 ここで図26の説明に戻る。ステップS1110でセレクタ1003は、ステップS1006で入力された選択信号にしたがい、ステップS1107でデータパケット復元部1002の複製データパケット修正部1007から入力されたライトバックデータパケット609を選択する。セレクタ1003は、選択したライトバックデータパケット609をルーティング部713の分岐部306に出力する。
 すると、ステップS1111で分岐部306は、ステップS1105で入力された出力ポート情報にしたがい、入力されたライトバックデータパケット609を、OR回路1012に出力する。
 上記のとおり、複製情報を持ったライトバックデータパケット608の宛先IDであるSC103eのIDから得られた出力ポート情報は、SC103eと接続された出力ポート202eを識別する情報である。したがって、分岐部306は、入力されたライトバックデータパケット609を、出力ポート202eの前段に設けられた出力バッファ制御部712ceと接続されたOR回路1012に出力する。
 なお、分岐部306は、ルーティングテーブル部711cからの出力ポート情報により選択しなかったOR回路へは、パケットのビット数分の論理値0を出力する。また、分岐部1010は、データパケット復元部1002からの出力を選択するよう比較器1006から命令された場合、複製データパケット出力ポート情報により選択しなかったOR回路へは、パケットのビット数分の論理値0を出力する。そして、上記のとおり、(j3)の場合、出力ポート情報と複製データパケット出力ポート情報は排他的である。
 したがって、OR回路1012は、分岐部306から出力されたライトバックデータパケット609の各ビットと論理値0との論理和を求めることにより、実質的にはライトバックデータパケット609を出力バッファ制御部712ceへルーティングする。
 その結果、復元されたライトバックデータパケット609が出力バッファ制御部712ceを介して出力ポート202eへとさらにルーティングされ、SC103eへ出力される。
 また、ステップS1112で分岐部1010は、ステップS1105で入力された複製データパケット出力ポート情報にしたがい、入力された共有型・転送データパケット613を、OR回路1011に出力する。
 上記のとおり、複製情報を持ったライトバックデータパケット608の複製パケット宛先IDは、CPU104aのIDである。よって、CPU104aのIDから得られた複製データパケット出力ポート情報は、CPU104aと同じノード101aのSC103aと接続された、出力ポート202aを識別する情報である。
 したがって、分岐部1010は、入力された共有型・転送データパケット613を、出力ポート202aの前段に設けられた出力バッファ制御部712caと接続されたOR回路1011へ出力する。
 ここで、上記のとおり分岐部306は、選択しなかったOR回路1011には論理値0で埋めたデータを出力している。よって、OR回路1011は、分岐部1010から出力された共有型・転送データパケット613の各ビットと論理値0との論理和を求めることにより、実質的には共有型・転送データパケット613を出力バッファ制御部712caへルーティングする。
 その結果、復元された共有型・転送データパケット613が出力バッファ制御部712caを介して出力ポート202aへとさらにルーティングされ、SC103aへ出力される。
 以上、図26~図29を参照して、複製情報を持ったライトバックデータパケット608からライトバックデータパケット609と共有型・転送データパケット613を復元してそれぞれルーティングする処理について説明した。
 なお、図26においては、いくつかのステップについての処理が並列に実行されてもよい。例えば、複製チェック部1001とルーティングテーブル部711cにおける処理は、データパケット復元部1002における処理と並列に実行されてもよい。また、ステップS1111とS1112のルーティングは並列に実行されてもよい。
 また、図15に示したように、各SC103a~103gでXB102と接続された入力ポート501xからルーティング部703へ至る経路上にも、上記と同様の複製チェック部1001、データパケット復元部1002およびセレクタ1003が設けられている。また、例えば図15のSC103cルーティング部703は、比較例と比べて、入力ポート501xに対応した部分が異なる。
 具体的には、図23と同様に、ルーティング部703において、比較例と同様の分岐部306と各出力バッファ制御部509xc、509xd、509xi、および509xsとの間に、それぞれOR回路が設けられる。つまり、比較例と比べ、新たに4つのOR回路が追加されている。
 また、ルーティング部703は、図23の分岐部1010と類似の新たな分岐部を有する。この新たな分岐部は、入力ポート501xに対応して設けられたデータパケット復元部1002から復元されたパケットを受け取るとともに、複製チェック部1001およびルーティングテーブル部701xから制御信号を受け取る。また、この新たな分岐部は、図23と同様に、上記4つのOR回路とそれぞれ接続されている。
 しかし、ルーティング部703は、入力ポート501c、501d、および501i、ならびにSC内制御回路504に対応した部分は、比較例と同様である。
 以上、図14~図29を参照して第1実施形態について説明した。
 なお、CPU104cなどの演算処理装置とXB102などのデータ転送装置の間でのデータ(例えばパケット形式のデータ)の転送を制御するSC103cなどの制御装置に注目して第1実施形態を概観すれば下記のとおりである。
 すなわち、上記制御装置は、演算処理装置から出力された第1のパケットを保存するデータパケット保存部410などの保存手段を有する。第1実施形態では、保存手段としてのデータパケット保存部410に必要な容量が、上記のとおり比較例の約2分の1で済む。
 また、上記制御装置は、第1の判断手段を実現するコンポーネントとして、例えば図17~図18Bに示す管理テーブル部801、比較部802、およびライトポインタ制御部803を備える。第1の判断手段は、第1のパケットのヘッダと、第1のパケットより後に演算処理装置から受け取った第2のパケットのヘッダを比較する。パケットはデータの具体例であり、ヘッダはデータの制御情報の具体例である。上記の比較により、第1の判断手段は、第1のパケットと第2のパケットが同じデータペイロードを有する第1の場合であるか否かを判断する。データペイロードはデータ本体部の具体例である。
 また、管理テーブル部801、比較部802、およびライトポインタ制御部803は、協働して次のような管理手段としても機能する。すなわち、管理手段は、第1の場合は、第2のパケットのヘッダの一部を第1のパケットと関連づけて複製情報として保存する。また、管理手段は、第1の場合に第2のパケットを破棄してもよい。また、管理手段は、第1の場合以外である第2の場合は、保存手段としてのデータパケット保存部410に第2のパケットを保存させる。
 そして、保存手段に保存されたパケットのデータ転送装置(例えばXB102)への出力を制御する制御手段として、第1実施形態では、例えば以下のコンポーネントが協働している。すなわち、XB102へのパケットの出力を制御する制御手段として、少なくとも図17のポート間アービタ部507x、ポート間セレクタ508x、制御部400、およびパケット間セレクタ430が協働している。また、第1実施形態ではさらにセレクタ805も制御手段の一部として機能している。データ転送装置としてのXB102へのデータ(例えばパケット)の出力は、データ転送装置へのデータの出力を許可する出力許可に応じて制御されてもよい。
 なお、第1実施形態では、ヘッダマージ部804が、図22の複製情報を持ったライトバックデータパケット608のような第3のパケットを上記第1の場合に生成する生成手段としても機能する。
 そして、上記制御手段として機能する制御部400内の管理テーブル部801およびセレクタ805は、上記第1の場合には生成手段としてのヘッダマージ部804が生成した第3のパケットをデータ転送装置に出力するよう制御する。また、上記制御手段としての管理テーブル部801およびセレクタ805は、上記第2の場合には保存手段としてのデータパケット保存部410が保存する上記第1と第2のパケットの双方をデータ転送装置に出力するよう制御する。
 また、第1実施形態では、第1の判断手段としての管理テーブル部801、比較部802、およびライトポインタ制御部803では、要求元IDとReqIDに基づく判断が行われる。要求元IDは、パケットの出力の起因となる要求を出力した要求元装置を識別する要求元識別情報の一例である。また、ReqIDは、要求元識別情報により識別される1つの要求元装置における複数の要求を識別する要求識別情報の一例である。
 また、上記管理手段の一部として機能する管理テーブル部801は、例えば図18Aのエントリ901-0~901-Nにより実現される管理記憶部を備える。そして、上記第1の場合には、上記第1のパケットが保存されたデータパケット保存部410上のアドレスと関連づけられた管理記憶部のエントリに複製情報を保存することにより、管理手段としての管理テーブル部801は、複製情報を第1のパケットと関連づける。
 また、SC103cなどの制御装置は、図15に示すように、さらに第2の判断手段としての複製チェック部1001と、復元手段としてのデータパケット復元部1002を備えてもよい。
 また、XB102などのデータ転送装置に注目して第1実施形態を概観すれば下記のとおりである。
 すなわち、XB102などのデータ転送装置は、例えばSC103a~103gなどの複数の装置と接続され、それら複数の装置間でのデータの転送を行う。
 データ転送装置は、前記複数の装置のうちの1つから出力されたパケットを前記複数の装置のうちの他の1つへ送信する(すなわちルーティングする)ための送信手段として、図16や図23に示したルーティング部713を備える。
 また、図16に示したXB102内の各出力バッファ制御部には、上記のSCに注目した観点で説明したのと同様の意味で、保存手段、判断手段、管理手段、および制御手段として機能する各コンポーネントが含まれる。さらに、第1実施形態では、生成手段としてのヘッダマージ部804も、XB102内の各出力バッファ制御部が備えている。
 また、図16と図23に示すように、XB102は、入力されたパケットが同じデータペイロードを有する2つのパケットから生成された複製データパケットであるか否かを判断する判断手段としての複製チェック部1001を備える。また、XB102は、復元手段としてのデータパケット復元部1002も備える。そして、送信手段としてのルーティング部713は、複製チェック部1001の判断に基づいてデータの送信(具体的にはパケットのルーティング)を行う。
 具体的には、第1実施形態では、判断手段としての複製チェック部1001は、入力されたパケットが複製データパケットであるか否かだけではなく、元の2つのパケットは同じ装置に送信するものであるか否かについても判断する。
 そして、元の2つのパケットは同じ装置に送信する(つまりルーティングする)ものであると複製チェック部1001が判断した場合、送信手段としてのルーティング部713は入力された複製データパケットそのものを送信する。逆に、元の2つのパケットは同じ装置に送信するものではないと複製チェック部1001が判断した場合は、送信手段としてのルーティング部713は、復元された元の2つのパケットをそれぞれの送信先に送信する。
 以上、制御装置としてのSC103a~103gに注目した観点と、データ転送装置としてのXB102に注目した観点から第1実施形態を概観した。
 続いて、図30を参照して、第2実施形態について説明する。第2実施形態も第1実施形態と同様に、例えば図1のように構成されたサーバシステム100に適用される。
 図30は、第2実施形態におけるCPU104cの構成図である。説明の簡略化のため、第2実施形態では、他のCPU104a、104b、104d~104hも図30と同様に構成されているものとする。
 第2実施形態におけるCPU104cはマルチコアCPUであり、具体的にはデュアルコアCPUである。すなわち、演算処理装置であるCPU104cは、演算処理部であるCPUコア1301aと1301bを含む。CPUコア1301aと1301bはそれぞれ、不図示の命令フェッチ制御部、分岐予測部、命令デコード部、ALU(Arithmetic Logic Unit)などの命令実行部、およびレジスタなどを備える。アーキテクチャによっては、CPUコア1301aと1301bは、さらにアウトオブオーダ実行のためのリザベーションステーションなどを備えていてもよい。
 CPUコア1301aと1301bはそれぞれ、不図示のキャッシュメモリを備える。キャッシュメモリは階層化されていてもよい。例えば、L1(レベル1)キャッシュが各CPUコア1301aと1301bに個別に設けられ、L2(レベル2)キャッシュが両CPUコア1301aと1301bで共有されていてもよい。L2キャッシュを各CPUコア1301aと1301bに個別に設ける構成も可能である。なお、データキャッシュと命令キャッシュが分かれていてもよい。
 また、CPU104cは、同じノード101c内のSC103cとのインタフェイスとして、入力ポート1302と出力ポート1303を備える。入力ポート1302と出力ポート1303は、CPU104cとSC103cの動作周波数の違いに応じた「周波数乗り換え」と呼ばれる周波数の変換などを行ってもよい。
 第1実施形態では、パケットの宛先IDや要求元IDとしてCPU104cのIDが使われるが、第2実施形態では、CPU104cのIDではなく、CPUコア1301aまたはCPUコア1301bのIDが宛先IDや要求元IDとして使われる。したがって、CPU104cは、SC103cから入力ポート1302を介して入力されるパケットを、宛先IDに応じてCPUコア1301aまたは1301bに振り分けるための回路を有する。
 ところで、第1実施形態では、同じデータペイロードを有するデータパケットの組として、SCの1つを宛先とするライトバックデータパケットと、CPUの1つを宛先とする共有型・転送データパケットを想定している。サーバシステム100の仕様により、それ以外の組み合わせで、同じデータペイロードを有するデータパケットの組が存在する場合にも第1実施形態は適用可能である。同様に、第2実施形態は、2つの異なるCPUコアを宛先とし、互いに同じデータペイロードを有するデータパケットの組が存在する場合にも適用可能である。
 なぜなら、第2実施形態では、上記のパケットを振り分けるための回路が、以下の各コンポーネントを含むからである。
 ・図23と同様の複製チェック部1001、データパケット復元部1002、およびセレクタ1003
 ・図25のルーティングテーブル部711cと類似の構成を有し、出力ポートの代わりに出力先のCPUコア(1301aまたは1301b)を指定する情報を、宛先IDと複製宛先IDにそれぞれ対応して取得する情報ルーティングテーブル部1304
 ・図23の分岐部1010と同様の分岐部1305a
 ・図23の分岐部306と同様の分岐部1305b
 ・図23のOR回路1011~1013と同様のOR回路1306a~1306b
 したがって、入力ポート1302から入力されたパケットが複製情報を持っていなければ、宛先IDにしたがってCPUコア1301aまたは1301bに出力される。また、入力ポート1302から入力されたパケットが複製情報を持っていれば、元の2つのパケットが復元されて、それぞれCPUコア1301aと1301bに出力される。
 また、CPU104cは、出力ポート1303の前段に、CPUコア1301a用の出力バッファ制御部1307aと、CPUコア1301b用の出力バッファ制御部1307bと、アービタ部1308と、コア間セレクタ1309とを備える。
 出力バッファ制御部1307aは、CPUコア1301aから出力されたパケットを一時的に保存するバッファを含み、具体的には、第1実施形態の図17の出力バッファ制御部702cxと同様の構成を有する。出力バッファ制御部1307bも同様である。
 また、アービタ部1308は、出力バッファ制御部1307aと1307bの間の調停を行う。アービタ部1308は、例えば第1実施形態における図15のポート間アービタ部507xや図16のポート間アービタ部205eと同様である。
 コア間セレクタ1309は、アービタ部1308の調停の結果にしたがって、出力バッファ制御部1307aと1307bからの出力の一方を選択して出力ポート1303に出力する。コア間セレクタ1309は、例えば第1実施形態における図15のポート間セレクタ508xや図16のポート間セレクタ206eと同様である。
 また、第2実施形態におけるXB102は、第1実施形態における図16のXB102と同様に構成されている。
 そして、第2実施形態におけるSC103cは、下記の点において第1実施形態と異なる。すなわち、図30のCPU104cと接続されたSC103cは、図15における入力ポート501cとルーティング部703の間に、図23と同様の複製チェック部1001、データパケット復元部1002、およびセレクタ1003を備える。そして、CPU104cに対応するルーティングテーブル部506cは、ルーティングテーブル部701xと同様の構成のものに置き換えられる。
 なお、CPU104c以外の他のCPUも図30と同様に構成されていてもよく、それに応じて各SC内のコンポーネントが適宜変形されてもよい。
 上記のような第2実施形態によっても、サーバシステム100内でのデータの授受のために用いられるパケットを一時的に保存するためのバッファの容量を削減し、サーバシステム100内のバスの占有時間を短縮するという効果が得られる。
 なお、本発明は上記の実施形態に限られるものではなく、例えば下記のように様々に変形して実施することが可能である。
 第1および第2実施形態は、図1に示した構成のサーバシステム100への適用例である。しかし、サーバシステム100に含まれるノードの数や、各ノード内のCPUの数は任意である。
 また、サーバシステム100はccNUMA(Cache Coherent Non-Uniform Memory Access)システムの一例だが、SMP(Symmetric Multiple Processor)システム(つまりUMA(Uniform Memory Access)システム)に、第1および第2実施形態と同様の構成を適用することもできる。
 また、第1実施形態では、先に受け取ったデータパケットのヘッダの情報を、図18Aのエントリ901-0~901-Nのいずれかの中の要求元IDフィールド915とReqIDフィールド916に記憶している。しかし、要求元IDフィールド915とReqIDフィールド916を省略し、代わりに、データパケット保存部410から図18Bの比較部802が要求元IDとReqIDを読み出す実施形態も可能である。ただし、RAMを用いてデータパケット保存部410を実現する場合は、FFを用いて管理テーブル部801内の各エントリ901-0~901-Nに要求元IDフィールド915とReqIDフィールド916を設ける方が、処理速度の点で好ましい。
 また、バスの占有時間が比較例と同等でも問題がない場合、例えば図17の出力バッファ制御部702cxを次のように変形してもよい。すなわち、出力バッファ制御部702cxは、ポート間アービタ部507xからの出力許可が得られたら、図17のヘッダマージ部804で複製情報を持ったデータパケットを生成して出力する代わりに、元の2つのパケットを連続して出力してもよい。
 例えば、出力バッファ制御部702cxは、データパケット保存部410のリードポインタ値で指示される番地に保存されている第1のパケットをまず出力する。さらに、出力バッファ制御部702cxは、第1のパケットの番地に対応する管理テーブル部801内のエントリから複製情報を読み出す。そして、出力バッファ制御部702cxは、読み出した複製情報と第1のパケットから、第1のパケットと同じデータペイロードを持つために破棄された第2のパケットを復元し、出力する。
 第2のパケットの復元は、例えば図23のデータパケット生成部1009と類似の新たなコンポーネントをヘッダマージ部804の代わりに設けることで実現することができる。また、例えば図17において管理テーブル部801は、セレクタ805に対して、データパケット保存部410から第1のパケットを出力するよう指示した後、必要な時間の経過後、上記新たなコンポーネントから第2のパケットを出力するよう指示を切り換える。
 上記のような変形は、SC103c内の出力バッファ制御部702cxに限らず、XB102内の出力バッファ制御部においても採用することができる。
 また、上記のように出力バッファ制御部からの出力時にパケットを復元する場合は、図15および図16において複製チェック部1001、データパケット復元部1002、およびセレクタ1003を設ける必要はない。また、図15のルーティング部703の代わりに比較例の図10のルーティング部505を用いることができ、図16のルーティング部713の代わりに比較例の図5のルーティング部203を用いることができる。
 このように、出力バッファ制御部からの出力時にパケットを復元する変形例においても、出力バッファ制御部内に必要な記憶容量が比較例の約2分の1であり、そのため消費電力や半導体チップ上の実装面積を節約することができるという効果が得られる。
 また、図30の第2実施形態では、デュアルコアCPUを例示したが、コアの数が3以上のマルチコアCPUに合わせて第2実施形態を変形した実施形態も可能であるし、シングルコアCPUが図30と同様に出力バッファ制御部を含む実施形態も可能である。
 シングルコアCPUの内部に出力バッファ制御部がある場合、CPU内部には、図30のようなアービタ部1307およびコア間セレクタ1308は不要であり、CPU内の出力バッファ制御部は直接CPUの出力ポートと接続されてもよい。また、シングルコアCPUでは、入力ポート1302が直接コアと接続されていてもよい。
 また、マルチコアCPUの場合でも、複数のコアを宛先として同じデータペイロードを有するパケットが出力されることがないならば、図30の第2実施形態を次のように変形してもよい。
 すなわち、入力ポート1302が分岐部1305bと直接接続され、分岐部1305bがCPUコア1301aと1301bに直接接続されていてもよい。この場合、分岐部1305bは、1入力2出力のデマルチプレクサでもよい。
 また、この場合、図30の複製チェック部1001、データパケット復元部1002、セレクタ1003、分岐部1305a、OR回路1306a、およびOR回路1306bは省略可能である。さらに、ルーティングテーブル部1304は、出力ポート情報の取得のみを行うものに置き換えることができる。

Claims (18)

  1.  第1の演算処理装置およびデータ転送装置の間でのデータの転送を制御する制御装置であって、
     前記第1の演算処理装置から出力された第1のデータを保存する保存手段と、
     前記第1のデータの制御情報と、前記第1のデータより後に前記第1の演算処理装置から受け取った第2のデータの制御情報を比較することで、前記第1のデータと前記第2のデータが同じデータ本体部を有する第1の場合であるか否かを判断する第1の判断手段と、
     前記第1の場合は、前記第2のデータの前記制御情報の一部を前記第1のデータと関連づけた複製情報として保存し、前記第1の場合以外である第2の場合は、前記保存手段に前記第2のデータを保存させる管理手段と、
     前記保存手段に保存されたデータの前記データ転送装置への出力を制御する制御手段と、
     を備えることを特徴とする制御装置。
  2.  前記第1のデータと前記第2のデータの一方が、前記第1の演算処理装置が備える記憶部に保存されたデータを前記制御装置に接続された記憶装置に書き込むデータであり、前記第1のデータと前記第2のデータの他方が、第2の演算処理装置が要求した前記記憶部に保存されたデータを転送する転送データであるとき、
     前記判断手段は、前記第1の場合であると判断する、
     ことを特徴とする請求項1に記載の制御装置。
  3.  前記第1の場合に、前記保存手段が保存する前記第1のデータと前記管理手段が保存する前記複製情報から、第3のデータを生成する生成手段をさらに備え、
     前記制御手段は、前記第1の場合には前記生成手段が生成した前記第3のデータを前記データ転送装置に出力するよう制御するとともに、前記第2の場合には前記保存手段が保存する前記第1のデータと前記第2のデータの双方を前記データ転送装置に出力するよう制御する、
     ことを特徴とする請求項1に記載の制御装置。
  4.  前記第1のデータと前記第2のデータそれぞれが有する制御情報は、前記第1の演算処理装置によるデータの出力の起因となる要求を出力した要求元装置を識別する要求元識別情報と、前記要求元識別情報により識別される1つの前記要求元装置における複数の要求を識別する要求識別情報とを含み、
     前記判断手段は、前記第1のデータと前記第2のデータの前記制御情報において前記要求元識別情報と前記要求識別情報がともに等しければ、前記第1のデータと前記第2のデータの前記データ本体部が同じであると判断する、
     ことを特徴とする請求項1に記載の制御装置。
  5.  前記管理手段は、前記複製情報を保存する管理記憶部を備え、
     前記管理手段は、前記第1の場合において、前記第1のデータが保存された前記保存手段上のアドレスと関連づけられた前記管理記憶部のエントリに前記複製情報を保存する、
     ことを特徴とする請求項1に記載の制御装置。
  6.  前記第1のデータが前記第1の演算処理装置から出力されたとき、前記管理手段はさらに前記第1のデータの前記制御情報の一部を保存し、
     前記判断手段は、前記管理手段が保存した前記第1のデータの前記制御情報の前記一部を参照し、前記第2のデータの前記制御情報との比較に用いる、
     ことを特徴とする請求項1に記載の制御装置。
  7.  前記データ転送装置から前記制御装置に出力された第4のデータが、同じデータ本体部を有する第5のデータと第6のデータに基づいて生成されたデータであるか否かを、前記第4のデータの制御情報から判断する第2の判断手段と、
     前記第5のデータと前記第6のデータに基づいて前記第4のデータが生成されたと前記第2の判断手段が判断したとき、前記第4のデータから前記第5と前記第6のデータを復元する復元手段と、
     前記復元手段が復元した前記第5のデータと前記第6のデータをそれぞれ送信する送信手段と、
     をさらに備えることを特徴とする請求項1に記載の制御装置。
  8.  前記管理手段は、前記第1の場合にさらに前記第2のデータを破棄することを特徴とする請求項1に記載の制御装置。
  9.  第1の装置と第2の装置を含む複数の装置と接続され、前記複数の装置間でのデータの転送を行うデータ転送装置であって、
     前記複数の装置のうちの1つから出力されたデータを前記複数の装置のうちの他の1つへ送信する送信手段と、
     前記第1の装置から受け取った、前記第2の装置へ送信する第1のデータを前記第2の装置へ出力する前に保存しておく保存手段と、
     前記第1の装置から受け取り、前記第1のデータより後に前記送信手段により送信した、前記第2の装置へ送信する第2のデータの制御情報を、前記第1のデータの制御情報と比較することで、前記第1のデータと前記第2のデータが同じデータ本体部を有する第1の場合であるか否かを判断する第1の判断手段と、
     前記第1の場合は、前記第2のデータの前記制御情報の一部を前記第1のデータと関連づけた複製情報として保存し、前記第1の場合以外である第2の場合は、前記保存手段に前記第2のデータを保存させる管理手段と、
     前記保存手段に保存されたデータの前記第2の装置への出力を制御する制御手段と、
     を備えることを特徴とするデータ転送装置。
  10.  前記第1の場合に、前記保存手段が保存する前記第1のデータと前記管理手段が保存する前記複製情報から、第3のデータを生成する生成手段をさらに備え、
     前記制御手段は、前記第1の場合には前記生成手段が生成した前記第3のデータを前記第2の装置に出力するよう制御するとともに、前記第2の場合には前記保存手段が保存する前記第1のデータと前記第2のデータの双方を前記第2の装置に出力するよう制御する、
     ことを特徴とする請求項9に記載のデータ転送装置。
  11.  前記第1のデータが、前記第2の装置に送信する第4のデータと、前記第4のデータと同じデータ本体部を有する第5のデータから生成された複製データであるか否かを前記第1のデータの前記制御情報から判断する第2の判断手段と、
     前記第1のデータが複製データであるとき、前記第1のデータから前記第4のデータと前記第5のデータを復元する復元手段とをさらに備え、
     前記送信手段は、前記第2の判断手段による判断に基づいて、前記復元手段が復元した前記第4のデータと前記第5のデータを送信するか、または前記第1のデータを送信する、
     ことを特徴とする請求項9に記載のデータ転送装置。
  12.  前記第2の判断手段は、前記第1のデータが前記複製データである場合はさらに、前記第5のデータを前記第2の装置に送信する第3の場合か否かを判断し、
     前記第2の判断手段が前記第3の場合であると判断したときは、前記送信手段は、前記第1のデータを前記第2の装置に送信し、
     前記第1のデータが前記複製データデータであり、かつ、前記第2の判断手段が前記第3の場合ではないと判断したときは、前記送信手段は、前記復元手段が復元した前記第4のデータと前記第5のデータをそれぞれの送信先に送信する、
     ことを特徴とする請求項11に記載のデータ転送装置。
  13.  前記復元手段は、
     前記第1のデータの前記制御情報の一部を削除することによって前記第1のデータから前記第4のデータを復元する複製データ修正手段と、
     前記第1のデータの前記制御情報から前記第5のデータの制御情報を復元する制御情報復元手段と、
     前記制御情報復元手段が復元した前記第5のデータの前記制御情報と前記第1のデータのデータ本体部を連結することで前記第5のデータを復元するデータ生成手段と、
     を備えることを特徴とする請求項11に記載のデータ転送装置。
  14.  前記複数の装置にはさらに第3の装置が含まれ、
     前記第5のデータが、前記第3の装置に接続された記憶装置に、前記第1の装置に接続された第1の演算処理装置が備える記憶部に保存されたデータを書き込むデータであり、かつ前記第4のデータが、前記第2の装置に接続されており前記記憶部に保存された前記データを要求した第2の演算処理装置に、前記記憶部に保存された前記データを転送する転送データであるか、または、
     前記第4のデータが、前記第2の装置に接続された記憶装置に前記記憶部に保存された前記データを書き込むデータであり、かつ前記第5のデータが、前記第3の装置に接続されており前記記憶部に保存された前記データを要求した第3の演算処理装置に、前記記憶部に保存された前記データを転送する転送データである、
     ことを特徴とする請求項11に記載のデータ転送装置。
  15.  第1の制御装置および第2の制御装置を含む複数の制御装置と、前記複数の制御装置間でのデータの転送を行うデータ転送装置を備える情報処理装置であって、
     前記第1の制御装置は、
     前記第1の制御装置に接続された第1の演算処理装置から出力され、前記第2の制御装置へと送信する第1のデータを保存する保存手段と、
     前記第1のデータの制御情報と、前記第1のパケットより後に前記第1の演算処理装置から受け取った第2のデータの制御情報とを比較することにより、前記第1のデータと前記第2のデータが同じデータ本体部を有する第1の場合であるか否かを判断する第1の判断手段と、
     前記第1の場合は、前記第2のデータの前記制御情報の一部を前記第1のデータと関連づけて複製情報として保存し、前記第1の場合以外の第2の場合は、前記保存手段に前記第2のデータを保存させる管理手段と、
     前記第1の場合に、前記保存手段が保存する前記第1のデータと前記管理手段が保存する前記複製情報から、第3のデータを生成する生成手段と、
     前記第1の場合には前記生成手段が生成した前記第3のデータを前記データ転送装置に出力するよう制御するとともに、前記第2の場合には前記保存手段が保存する前記第1のデータと前記第2のデータの双方を前記データ転送装置に出力するよう制御する第1の制御手段を備え、
     前記データ転送装置は、
     前記第1の制御装置から受け取ったデータの制御情報に基づいて、前記第1の場合か前記第2の場合かを判断する第2の判断手段と、
     前記第1の場合に、前記第3のデータから前記第1のデータと前記第2のデータを復元する復元手段と、
     前記第2の判断手段による判断に基づいて、前記第3のデータを送信するか、または前記復元手段が復元した前記第1のデータと前記第2のデータを送信する送信手段を備える、
     ことを特徴とする情報処理装置。
  16.  記憶部と演算処理部を備えた演算処理装置であって、
     前記演算処理部から出力された第1のデータを保存する保存手段と、
     前記第1のデータの制御情報と、前記第1のデータより後に前記演算処理部から出力された第2のデータの制御情報とを比較することにより、前記第1のデータと前記第2のデータが同じデータ本体部を有するか否かを判断する判断手段と、
     前記第1の場合は、前記第2のデータの前記制御情報の一部を前記第1のデータと関連づけて複製情報として保存し、前記第1の場合以外の第2の場合は、前記保存手段に前記第2のデータを保存させる管理手段と、
     前記第1の場合に、前記保存手段が保存する前記第1のデータと前記管理手段が保存する前記複製情報から、第3のデータを生成する生成手段と、
     前記第1の場合には前記生成手段が生成した前記第3のデータを出力するよう制御するとともに、前記第2の場合には前記保存手段が保存する前記第1のデータと前記第2のデータの双方を出力するよう制御する制御手段と、
     を備えることを特徴とする演算処理装置。
  17.  第1の制御装置と、前記第1の制御装置に接続された第1の演算処理装置と、前記第1の制御装置を含む複数の制御装置の間のデータの転送を行うデータ転送装置を有する情報処理装置の制御方法において、
     前記第1の演算処理装置が、第1のデータと第2のデータを前記第1の制御装置に出力するステップと、
     前記第1の制御装置が、前記第1のデータを受け取って保存し、前記第1のデータを受け取った後で前記第2のデータを受け取り、前記第1のデータの制御情報と前記第2のデータの制御情報を比較することにより、前記第1のデータと前記第2のデータが同じデータ本体部を有する第1の場合であるか否かを判断するステップと、
     前記第1の場合だと前記第1の制御装置が判断した第1の場合は、
      前記第1の制御装置は、前記第2のデータの前記制御情報の一部を前記第1のデータと関連づけて複製情報として保存し、保存している前記第1のデータと前記複製情報から第3のデータを生成し、前記データ転送装置に前記第3のデータを出力するステップと、
      前記データ転送装置が、前記第3のデータの制御情報に基づいて前記第1の場合であると判断するとともに、前記第3のデータの前記制御情報に基づいて前記第1のデータと前記第2のデータの送信先が同じか否かを判断するステップと、
      前記第1のデータと前記第2のデータの送信先が同じならば、前記データ転送装置は、前記第3のデータを前記同じ送信先に送信するステップと、
      前記第1のデータと前記第2のデータの送信先が異なれば、前記データ転送装置は、前記第3のデータの前記制御情報に基づいて、前記第3のデータから前記第1のデータと前記第2のデータを復元してそれぞれを前記複数の制御装置のいずれかへ送信するステップと、
     前記第1の場合以外の第2の場合は、
      前記第1の制御装置が、さらに前記第2のデータを保存し、保存している前記第1のデータと前記第2のデータの双方を前記データ転送装置に出力するステップと、
      前記データ転送装置が、前記第1のデータの前記制御情報に基づいて、前記複数の制御装置のいずれかへ前記第1のデータを送信し、前記第2のデータの前記制御情報に基づいて、前記複数の制御装置のいずれかへ前記第2のデータを送信するステップと、
     を含むことを特徴とする情報処理装置の制御方法。
  18.  前記第1の場合に前記第1の制御装置がさらに前記第2のデータを破棄することを特徴とする請求項17に記載の情報処理装置の制御方法。
PCT/JP2008/003216 2008-11-06 2008-11-06 制御装置、データ転送装置、情報処理装置、演算処理装置および情報処理装置の制御方法 WO2010052753A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
EP08877949.1A EP2357571A4 (en) 2008-11-06 2008-11-06 CONTROL, DATA TRANSFER UNIT, INFORMATION PROCESSOR, ARITHMETIC PROCESSING UNIT AND INFORMATION PROCESSOR CONTROL METHOD
PCT/JP2008/003216 WO2010052753A1 (ja) 2008-11-06 2008-11-06 制御装置、データ転送装置、情報処理装置、演算処理装置および情報処理装置の制御方法
JP2010536593A JP5212478B2 (ja) 2008-11-06 2008-11-06 制御装置、データ転送装置、情報処理装置、演算処理装置および情報処理装置の制御方法
US13/097,500 US8375152B2 (en) 2008-11-06 2011-04-29 Controller, data transfer device, information processing device, processor, and control method of information processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2008/003216 WO2010052753A1 (ja) 2008-11-06 2008-11-06 制御装置、データ転送装置、情報処理装置、演算処理装置および情報処理装置の制御方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/097,500 Continuation US8375152B2 (en) 2008-11-06 2011-04-29 Controller, data transfer device, information processing device, processor, and control method of information processing device

Publications (1)

Publication Number Publication Date
WO2010052753A1 true WO2010052753A1 (ja) 2010-05-14

Family

ID=42152570

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2008/003216 WO2010052753A1 (ja) 2008-11-06 2008-11-06 制御装置、データ転送装置、情報処理装置、演算処理装置および情報処理装置の制御方法

Country Status (4)

Country Link
US (1) US8375152B2 (ja)
EP (1) EP2357571A4 (ja)
JP (1) JP5212478B2 (ja)
WO (1) WO2010052753A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013027247A1 (ja) * 2011-08-25 2013-02-28 富士通株式会社 情報処理装置及び情報処理装置の制御方法
JP2017146789A (ja) * 2016-02-17 2017-08-24 富士通株式会社 制御装置、情報処理装置及び情報処理装置の制御方法

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9152580B1 (en) * 2011-10-27 2015-10-06 Marvell International Ltd. Method and apparatus for transferring data between a host and an embedded device
US9450780B2 (en) * 2012-07-27 2016-09-20 Intel Corporation Packet processing approach to improve performance and energy efficiency for software routers
US9806907B2 (en) * 2014-04-30 2017-10-31 Ixia Methods and apparatuses for implementing network packet brokers and taps
US10116527B2 (en) 2014-09-02 2018-10-30 Keysight Technologies Singapore (Holdings) Pte. Ltd. Methods and apparatuses for validating network packet brokers
EP3605350A4 (en) 2017-05-04 2020-04-29 Huawei Technologies Co., Ltd. INTERCONNECTION SYSTEM, AND INTERCONNECTION CONTROL METHOD AND APPARATUS
US11221612B2 (en) * 2018-07-27 2022-01-11 Rockwell Automation Technologies, Inc. System and method of communicating data over high availability industrial control systems
JP2021015384A (ja) * 2019-07-10 2021-02-12 富士通株式会社 情報処理回路、情報処理装置、情報処理方法及び情報処理プログラム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08235141A (ja) * 1995-02-28 1996-09-13 Kofu Nippon Denki Kk 情報処理システム
JPH09138782A (ja) * 1995-11-15 1997-05-27 Hitachi Ltd マルチプロセッサシステムおよびそのためのネットワーク
JPH09237223A (ja) 1996-03-02 1997-09-09 Toshiba Corp バスブリッジを用いたコンピュータシステム
JP2002342162A (ja) 2001-05-14 2002-11-29 Nec Corp メモリアクセス制御方式及びホストブリッジ
JP2003044455A (ja) 2001-06-21 2003-02-14 Internatl Business Mach Corp <Ibm> 共用データのリモート割当て解除の通知を提供する不均等メモリ・アクセス(numa)データ処理システム
JP2003132037A (ja) * 2001-06-28 2003-05-09 Fujitsu Ltd 分割サーバにおけるドメイン間低オーバヘッドメッセージ受渡しのためのシステム及び方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5386551A (en) * 1993-04-16 1995-01-31 Storage Technology Corporation Deferred resource recovery
US6279038B1 (en) * 1995-04-13 2001-08-21 Global Crossing, North America Client interface
US6728258B1 (en) * 1995-11-15 2004-04-27 Hitachi, Ltd. Multi-processor system and its network
US6011791A (en) * 1995-11-15 2000-01-04 Hitachi, Ltd. Multi-processor system and its network

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08235141A (ja) * 1995-02-28 1996-09-13 Kofu Nippon Denki Kk 情報処理システム
JPH09138782A (ja) * 1995-11-15 1997-05-27 Hitachi Ltd マルチプロセッサシステムおよびそのためのネットワーク
JPH09237223A (ja) 1996-03-02 1997-09-09 Toshiba Corp バスブリッジを用いたコンピュータシステム
JP2002342162A (ja) 2001-05-14 2002-11-29 Nec Corp メモリアクセス制御方式及びホストブリッジ
JP2003044455A (ja) 2001-06-21 2003-02-14 Internatl Business Mach Corp <Ibm> 共用データのリモート割当て解除の通知を提供する不均等メモリ・アクセス(numa)データ処理システム
JP2003132037A (ja) * 2001-06-28 2003-05-09 Fujitsu Ltd 分割サーバにおけるドメイン間低オーバヘッドメッセージ受渡しのためのシステム及び方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP2357571A4 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013027247A1 (ja) * 2011-08-25 2013-02-28 富士通株式会社 情報処理装置及び情報処理装置の制御方法
JP2017146789A (ja) * 2016-02-17 2017-08-24 富士通株式会社 制御装置、情報処理装置及び情報処理装置の制御方法

Also Published As

Publication number Publication date
EP2357571A4 (en) 2016-09-14
JP5212478B2 (ja) 2013-06-19
EP2357571A1 (en) 2011-08-17
JPWO2010052753A1 (ja) 2012-03-29
US20110202696A1 (en) 2011-08-18
US8375152B2 (en) 2013-02-12

Similar Documents

Publication Publication Date Title
JP5212478B2 (ja) 制御装置、データ転送装置、情報処理装置、演算処理装置および情報処理装置の制御方法
US11151033B1 (en) Cache coherency in multiprocessor system
KR100465583B1 (ko) 판독 요청을 원격 처리 노드에 추론적으로 전송하는 비정형 메모리 액세스 데이터 처리 시스템 및 이 시스템에서의 통신 방법
JP3959914B2 (ja) 主記憶共有型並列計算機及びそれに用いるノード制御装置
US6675265B2 (en) Multiprocessor cache coherence system and method in which processor nodes and input/output nodes are equal participants
JP3644587B2 (ja) 共用介入サポートを有する不均等メモリ・アクセス(numa)・データ処理システム
US6925537B2 (en) Multiprocessor cache coherence system and method in which processor nodes and input/output nodes are equal participants
US20020009095A1 (en) Multicast decomposition mechanism in a hierarchically order distributed shared memory multiprocessor computer system
JP3686221B2 (ja) キャッシュ・コヒーレンシを維持するためのコンピュータ・システム
US20010013089A1 (en) Cache coherence unit for interconnecting multiprocessor nodes having pipelined snoopy protocol
CN108153683B (zh) 用于在存储器中的地址范围之间传输数据的装置和方法
JP4758384B2 (ja) チケット・ベースの動作の追跡をサポートするデータを処理するためのデータ処理システムおよび方法
CN108804348B (zh) 并行处理环境中的计算
JP4507563B2 (ja) マルチプロセッサシステム
US10437725B2 (en) Master requesting missing segments of a cache line for which the master has coherence ownership
KR100257993B1 (ko) 분산 공유 메모리 시스템에서 미세 통신과 대단위 통신의 병합을 위한 적응형 입도 방법
US8429353B2 (en) Distributed home-node hub
JP7419261B2 (ja) ストリーミングデータ転送のためのフロー圧縮を用いたデータ処理ネットワーク
US20030076831A1 (en) Mechanism for packet component merging and channel assignment, and packet decomposition and channel reassignment in a multiprocessor system
EP0489583A2 (en) Multiple processor cache control system
US6826643B2 (en) Method of synchronizing arbiters within a hierarchical computer system
JP5574039B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP4868246B2 (ja) マルチプロセッサ及びメモリリプレース方法
US6636948B2 (en) Method and system for a processor to gain assured ownership of an up-to-date copy of data
JP2002197047A (ja) 入力/出力読出しデータがプロセッサローカルキャッシュに直接配置されるコンピュータシステム

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 08877949

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2010536593

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 2008877949

Country of ref document: EP