WO2012077169A1 - 情報処理システムおよび情報送信方法 - Google Patents

情報処理システムおよび情報送信方法 Download PDF

Info

Publication number
WO2012077169A1
WO2012077169A1 PCT/JP2010/071788 JP2010071788W WO2012077169A1 WO 2012077169 A1 WO2012077169 A1 WO 2012077169A1 JP 2010071788 W JP2010071788 W JP 2010071788W WO 2012077169 A1 WO2012077169 A1 WO 2012077169A1
Authority
WO
WIPO (PCT)
Prior art keywords
packet
information
control
response
information processing
Prior art date
Application number
PCT/JP2010/071788
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 PCT/JP2010/071788 priority Critical patent/WO2012077169A1/ja
Priority to JP2012547606A priority patent/JP5505516B2/ja
Priority to EP10860413.3A priority patent/EP2650794A1/en
Publication of WO2012077169A1 publication Critical patent/WO2012077169A1/ja
Priority to US13/903,201 priority patent/US20130262553A1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • 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/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means

Definitions

  • the present invention relates to an information processing system and an information transmission method.
  • Cc-NUMA Cache Coherent Non-Uniform Memory Access Model
  • CPUs Central Processing Units
  • a plurality of information processing units including a distributed shared memory and a CPU that constitute a part of the shared memory space are connected.
  • a mechanism for maintaining coherency (data consistency) between cache units included in each CPU is required.
  • a mechanism using a management table called a directory is often employed.
  • the directory holds information indicating a cache destination information processing unit when data in the distributed shared memory is cached in a cache unit in another information processing unit.
  • the information processing unit refers to the directory when an access request to the data in the distributed shared memory belonging to the information processing unit is transmitted.
  • the information processing unit determines that the target data of the access request is cached in another information processing unit based on the directory, the information processing unit transmits a request called “Snoop” to the other information processing unit. Control is performed to maintain cache coherency.
  • the snoop request is transmitted to at least all information processing units that cache the target data of the access request.
  • a snoop request is transmitted for each information processing unit instead of each CPU.
  • the snoop request is transmitted to at least all information processing units that cache the target data of the access request in its own cache unit. For this reason, as the number of information processing units that cache target data increases, the number of snoops to be transmitted increases, and there is a problem that the transmission load of the communication path connecting the information processing units increases.
  • a snoop destined for each of the plurality of information processing units is transmitted to the same communication path, so that the transmission load becomes larger.
  • the transmission load on the communication path increases as the number of information processing units at the transmission destination increases.
  • the present invention has been made in view of such a problem, and provides an information processing system and an information transmission method capable of reducing a transmission load on a communication path when transmitting control information to a plurality of information processing units.
  • the purpose is to provide.
  • an information processing system in which a plurality of information processing units are connected by a ring communication path.
  • Each of the plurality of information processing units included in the information processing system transmits a control packet including control information and destination information designating one or more information processing units as transmission destinations of the control information, in a ring shape.
  • the control information transmission unit that transmits to the communication path and the information packet to which the control information is transmitted are specified as the control information transmission destination in the control packet that is received via the ring communication path
  • the received control packet Captures control information, sends a control packet with destination information rewritten so that the information processing unit to which it belongs is not designated as the control information destination, and sends the control information to the received control packet.
  • a control information receiving unit that transmits the received control packet to the ring-shaped communication path.
  • FIG. 1 is a diagram illustrating a configuration example of an information processing system according to the first embodiment.
  • the information processing system 1 in FIG. 1 includes a plurality of information processing units, and the plurality of information processing units are connected in a ring shape.
  • the information processing system 1 in FIG. 1 includes four information processing units 10a to 10d as an example, and the information processing units 10a, 10b, 10c, 10d, 10a,. Data shall be transmitted.
  • the information processing unit 10a includes a control information transmission unit 11a and a control information reception unit 12a.
  • the information processing unit 10b includes a control information transmission unit 11b and a control information reception unit 12b
  • the information processing unit 10c includes a control information transmission unit 11c and a control information reception unit 12c
  • the information processing unit 10d includes The control information transmitting unit 11d and the control information receiving unit 12d are provided.
  • the control information transmitting units 11a to 11d execute similar processes
  • the control information receiving units 12a to 12d execute similar processes. Therefore, here, as a representative, each process of the control information transmitting unit 11a and the control information receiving unit 12a included in the information processing unit 10a will be described.
  • the control information transmission unit 11a transmits a control packet including control information and transmission destination information designating an information processing unit as a transmission destination of the control information to other information processing units.
  • a control packet including control information and transmission destination information designating an information processing unit as a transmission destination of the control information to other information processing units.
  • the transmission destination information a plurality of information processing units as transmission destinations of the control information can be designated.
  • the control information is information indicating that, for example, the execution of some processing is requested to the transmission destination information processing unit.
  • control information receiving unit 12a When the control information receiving unit 12a receives a control packet transmitted from another information processing unit, the control information receiving unit 12a performs the following process based on the transmission destination information stored in the received control packet.
  • the control information receiving unit 12a When the information processing unit to which the control information receiving unit 12a belongs is not specified in the transmission destination information in the received control packet (that is, the information processing unit 10a), the control information receiving unit 12a directly uses the received control packet as another information processing unit. Forward to.
  • the control information receiving unit 12a takes in the control information from the received control packet.
  • control information capturing process there is a process of transferring the control information set in the received control packet to a predetermined circuit in the information processing unit 10a.
  • the control information receiving unit 12a rewrites the transmission destination information in the received control packet so as not to designate the information processing unit to which it belongs as the transmission destination of the control information, and rewrites the transmission destination information. Is transferred to another information processing unit.
  • the control information transmission unit 11a of the information processing unit 10a transmits the control packet 20 including the control information 21 and the transmission destination information 22 to the information processing unit 10b.
  • the information processing units 10 b and 10 d are designated as the transmission destination of the control information 21 in the transmission destination information 22.
  • “B” and “D” in the transmission destination information 22 indicate that the information processing units 10b and 10d are designated as transmission destinations.
  • the form in which the information specifying the transmission destination of the control information 21 is stored is not limited to the form shown in FIG.
  • the control information receiving unit 12b of the information processing unit 10b When receiving the control packet 20 transmitted from the information processing unit 10a, the control information receiving unit 12b of the information processing unit 10b refers to the transmission destination information 22 in the received control packet 20. Since the information processing unit 10 b is specified as the transmission destination in the transmission destination information 22, the control information receiving unit 12 b takes in the control information 21 from the received control packet 20. The information processing unit 10b executes a process according to the captured control information 21.
  • control information receiving unit 12b rewrites the transmission destination information 22 in the received control packet 20 so that the information processing unit 10b is not designated as the transmission destination.
  • the control information receiving unit 12 b rewrites the transmission destination information 22 by deleting “B” stored in the transmission destination information 22.
  • the control information receiving unit 12b transmits the control packet 20 in which the transmission destination information 22 is rewritten to the information processing unit 10c.
  • the control information receiving unit 12c of the information processing unit 10c refers to the transmission destination information 22 in the received control packet 20. Since the information processing unit 10c is not specified as the transmission destination in the transmission destination information 22, the control information receiving unit 12c transmits the received control packet 20 to the information processing unit 10d as it is.
  • the control information receiving unit 12d of the information processing unit 10d receives the control packet 20 transmitted from the information processing unit 10c
  • the control information receiving unit 12d refers to the transmission destination information 22 in the received control packet 20. Since the information processing unit 10 d is specified as the transmission destination in the transmission destination information 22, the control information receiving unit 12 d takes in the control information 21 from the received control packet 20. Note that the information processing unit 10d executes processing according to the captured control information 21.
  • control information is transmitted to a plurality of information processing units using one control packet. For this reason, compared with the case where control information is transmitted to each of a plurality of information processing units using individual control packets, the transmission load on the communication path can be reduced. In particular, the effect of reducing the transmission load increases as the number of information processing units as control information transmission destinations increases.
  • the control information receiving units 12a to 12d do not transmit the control packet to other information processing units when only the information processing unit to which the control information receiving unit belongs is specified as the control information transmission destination in the received control packet. You may do it.
  • the control information receiving unit 12d of the information processing unit 10d receives the control packet 20
  • only the information processing unit 10d is specified as the transmission destination in the transmission destination information 22 in the control packet 20 It becomes.
  • the control information receiving unit 12d does not transmit the control packet 20 to the information processing unit 10a after taking the control information 21 from the received control packet 20.
  • control information receiving unit when the control information receiving unit receives the control packet, if only the information processing unit to which the control information receiving unit belongs is specified in the destination information in the received control packet, the control packet is not transferred any more. Therefore, the transmission load on the communication path is reduced.
  • FIG. 2 is a diagram illustrating an overall configuration example of an information processing system according to the second embodiment.
  • the information processing system 100 shown in FIG. 2 includes a plurality of SB (System Board) 110a to 110d.
  • the SBs 110a to 110d are inserted into slots in the rack, for example, and connected in a ring shape via the rack backboard.
  • Each of the SBs 110a to 110d is an example of an information processing unit including one or more processor cores, and the information processing system 100 is configured as a parallel computer by the processor cores included in each of the SBs 110a to 110d executing processes in parallel. Operate.
  • four SBs 110a to 110d are provided, but the number of SBs is not limited to this.
  • the SB 110a includes a plurality of nodes 121a to 123a, a node controller (NC) 131a, and memories 141a to 144a.
  • Each of the nodes 121a to 123a is a CPU, and each of the nodes 121a to 123a is provided with one or more core units each including a processor core and a cache unit.
  • the nodes 121a to 123a and the nodes 121a to 123a and the NC 131a are connected to each other by, for example, a QPI (Quick Path Interconnect) standard bus.
  • the NC 131a connects each of the nodes 121a to 123a in the SB 110a to which the NC 131a belongs to the NC in another SB.
  • the memories 141a, 142a, and 143a are connected to the nodes 121a, 122a, and 123a, respectively, and the memory 144a is connected to the NC 131a.
  • the SBs 110b to 110d have the same configuration as the SB 110a. That is, the nodes 121b, 122b, 123b, NC 131b and the memories 141b, 142b, 143b, 144b in the SB 110b correspond to the nodes 121a, 122a, 123a, the NC 131a and the memories 141a, 142a, 143a, 144a in the SB 110a, respectively.
  • the nodes 121c, 122c, 123c, NC 131c and the memories 141c, 142c, 143c, 144c in the SB 110c correspond to the nodes 121a, 122a, 123a, the NC 131a and the memories 141a, 142a, 143a, 144a in the SB 110a, respectively.
  • the nodes 121d, 122d, 123d, NC 131d and the memories 141d, 142d, 143d, 144d in the SB 110d correspond to the nodes 121a, 122a, 123a, NC 131a and the memories 141a, 142a, 143a, 144a in the SB 110a, respectively.
  • each SB is not limited to three.
  • the NCs 131a to 131d are connected in a ring shape through an interface such as a fiber channel. In this embodiment, it is assumed that data is transferred in the order of NC 131a, 131b, 131c, 131d, 131a,.
  • the information processing system 100 employs a cc-NUMA architecture.
  • the memories 141a to 144a, 141b to 144b, 141c to 144c, and 141d to 144d are distributed shared memories to which a part of the address space shared by each node in the information processing system 100 is assigned. Control and management of each of the memories 141a to 144a, 141b to 144b, 141c to 144c, and 141d to 144d is performed by a directly connected node or NC.
  • a node that controls and manages a memory is called a home node for that memory.
  • the node 121a is a home node for the memory 141a.
  • the core part in the node can access the address of the memory under the control of another node (home node).
  • the node to which the core part of the access source belongs is called a “requester” because it becomes an issuer of a request packet described later. If the home node that manages the memory address of the access destination is in a SB different from the SB to which the requester belongs, the requester accesses the home node in another SB via the NC.
  • the core unit in the requester can cache data read from the address of the accessed memory.
  • FIG. 3 is a diagram showing a format of a packet transmitted / received inside the information processing system.
  • the request packet shown in FIG. 3 is sent from the node to the other node when the core unit in the node requests the other node to access the address of the memory under the management of the other node.
  • the request packet includes a “destination ID” indicating a packet transmission destination node, a “requester ID” indicating an access source node (requester), a “transaction ID” to which a unique number is assigned every time a request packet is generated, and an access destination
  • Each field of “address” indicating the memory address and “command” indicating the type of access.
  • the request packet may include a “data” field depending on information set in the “command” field.
  • “Read_S” indicates that data is read from the access destination, and shared data between the read access destination and the requester side is cached in the S (Shared) state on the requester side.
  • “Read_E” indicates that data is read from the access destination, and exclusive data that has been changed on the requester side after reading is cached in the E (Exclusive) state on the requester side.
  • “Writeback” indicates that the data cached on the requester side is written back to the access destination memory. When “Writeback” is set in the “command” field, “data” in which write data is stored is also set in the request packet.
  • a data response (DATA-Response) packet is a packet transmitted in response to a request packet.
  • the data response packet includes fields of “destination ID”, “requester ID”, “transaction ID”, “address”, and “command”. If “Read_S” or “Read_E” is set in the “command” field of the corresponding request packet, the data response packet is set to the “data” field in which data read from the access destination address is set. Further included.
  • the “requester ID”, “transaction ID”, and “address” fields in the data response packet have the same values as the “requester ID”, “transaction ID”, and “address” fields in the corresponding request packet. Is set.
  • the “command” field of the data response packet for example, when “Read_S” is set in the “command” field of the corresponding request packet, an instruction is given to register the read data in the cache unit in the S state. “D-Response_S” is set.
  • “Read_E” is set in the “command” field of the corresponding request packet, “D-Response_E” instructing to register the read data in the cache unit in the E state is set.
  • “Writeback” is set in the “command” field of the corresponding request packet, “Complete” for notifying that the data write-back has been completed is set.
  • the snoop packet is transmitted to the takeout destination node when the data of the access destination address by the request packet is taken out and cached by a node other than the home node.
  • the snoop packet is used for transmitting control information of the snoop process when executing a snoop process for maintaining cache coherence for the cache unit to which data is taken out.
  • a snoop packet a local snoop packet transmitted between nodes in the same SB or between the node and the NC, and transmitted from the NC to which the home node belongs to the NC of another SB NC-Snoop packet to be used.
  • the local snoop packet includes fields of “destination ID”, “requester ID”, “transaction ID”, “address”, and “command”.
  • the “address” field in the local snoop packet the same value as the “address” field in the corresponding request packet is set.
  • the “command” field of the local snoop packet for example, when “Read_S” is set in the “command” field of the corresponding request packet, “Snoop_S” instructing to set the cache data at the take-out destination to the S state. Is set.
  • “Read_E” is set in the “command” field of the corresponding request packet
  • “Snoop_I” is set to instruct to set the cache data at the take-out destination to an I (Invalid) state. Is done.
  • the LS response (LS-Response) packet is a packet in which the result of the snoop process specified by the local snoop packet is stored in response to the local snoop packet that performs the snoop request.
  • the LS response packet includes fields of “destination ID”, “requester ID”, “transaction ID”, “address”, and “command”.
  • the “requester ID”, “transaction ID”, and “address” fields in the LS response packet have the same values as the “requester ID”, “transaction ID”, and “address” fields in the corresponding local snoop packet, respectively. Is set.
  • the cache data corresponding to the address set in the “address” field is stored in the “command” of the LS response packet.
  • “Response_S” is set to notify that the S state has been changed to the shared data between the node that transmitted the snoop packet and the node that responded the LS response packet.
  • “Response_I” for notifying that the cache data corresponding to “address” has been invalidated to the I state is set. Is done.
  • the NC snoop packet is a packet that transmits control information for executing processing that maintains cache coherence to one or more nodes that cache data at an address to be accessed by a request packet.
  • This NC snoop packet includes fields of “broadcast flag” and “response flag” in addition to “destination ID”, “requester ID”, “transaction ID”, “address”, and “command”.
  • the same value as the “address” field in the corresponding request packet is set in the “address” field of the NC snoop packet.
  • a value not specifying a specific node for example, a value indicating broadcast
  • the “destination ID” field may not be included in the NC snoop packet.
  • the type of processing to be executed by the cache unit of the data take-out destination node is set. For example, when “Read_S” is set in the “command” field of the corresponding request packet, the cache data of the take-out destination is stored in the “command” field of the NC snoop packet, the node that transmitted the NC snoop packet, and the data “NC-Snoop_S” is set to instruct the S state to be shared data with the take-out destination node. Further, when “Read_E” is set in the “command” field of the corresponding request packet, “NC-Snoop_I” is set to instruct to make the cache data at the take-out destination invalid. .
  • the “broadcast flag” field one or more NCs as packet destinations are set instead of the “destination ID” field.
  • the “broadcast flag” field a plurality of bits corresponding to each of the NCs 131a to 131d included in the information processing system 100 are provided.
  • the NC corresponding to the bit is instructed to broadcast a local snoop packet to a node in the SB to which the NC belongs. .
  • the “response flag” field is provided for the purpose of instructing one of the nodes that received the NC snoop packet to transmit an NC response packet corresponding to the received NC snoop packet.
  • the “response flag” field has a 1-bit area, and is set to “1” in an initial state where the NC snoop packet is transmitted from the first NC. Thereafter, when the NC snoop packet is first received by the node designated in the “broadcast flag” field, the “response flag” field is changed to “0”. Therefore, if the “response flag” field is “0”, it indicates that the NC snoop packet has been received in at least one of the NCs designated as the destination by the “broadcast flag” field.
  • the NC response (NC-Response) packet is a packet in which the result of the process specified in the “command” field of the NC snoop packet is stored in response to the NC snoop packet.
  • the NC response packet notifies a processing result from one or more NCs designated by the broadcast flag of the corresponding NC snoop packet to the NC that is the transmission source of the NC snoop packet by one response packet.
  • This NC response packet includes fields of “response field” in addition to “destination ID”, “requester ID”, “transaction ID”, “address”, and “command”.
  • an ID indicating the home node for the address set in the corresponding NC snoop packet is stored.
  • the “requester ID”, “transaction ID”, and “address” fields of the NC response packet have the same values as the “requester ID”, “transaction ID”, and “address” fields in the corresponding NC snoop packet. Is set.
  • NC-Response_S In the “command” field of the NC response packet, for example, when “NC-Snoop_S” is set in the “command” field of the corresponding NC snoop packet, the cache data corresponding to the “address” is stored as the NC snoop packet. “NC-Response_S” is set to notify that the S state is set to be shared data between the transmitting node and the data take-out destination node. Further, when “NC-Snoop_I” is set in the “command” field of the corresponding NC snoop packet, the “NC-Snoop_I” is notified that the cache data corresponding to “address” is in the I state indicating invalidation. “Response_I” is set.
  • bits corresponding to the NCs 131a to 131d included in the information processing system 100 are provided.
  • “1” is set in the bit of the “broadcast flag”, it indicates that the cache unit in the SB to which the NC corresponding to the bit belongs has completed the process specified by the “command”.
  • the SB 110 d to which the NC 131 d corresponding to the third bit belongs corresponds to the “address”. This indicates that the cache data to be set is in the I state indicating that it is invalidated.
  • FIG. 4 is a diagram illustrating an example of information held in the home determination table.
  • Each node in the SB includes a home determination table 201.
  • the home determination table 201 provided in each node associates the address of the shared memory space with the ID of the home node.
  • the ID of the node registered in the home determination table 201 included in each node is an ID used locally in each SB.
  • the ID of the NC in the SB to which each node belongs is associated with an address other than the memory in the SB to which each node belongs.
  • FIG. 4A shows an example of the home determination table 201 provided in each of the nodes 121a, 122a, and 123a.
  • the node 121a is associated with the address “aaa-1” from the address “0”.
  • the addresses “0” to “aaa-1” are assigned to the memory 141a connected to the node 121a.
  • the NC 131a is associated with the address “zzz ⁇ 1” from the address “cccc”. In this case, it means that the addresses “cccc” to “zzzz-1” are assigned to memories connected to other SBs.
  • the NCs 131a to 131d in the information processing system 100 each include a home determination table 301.
  • the home determination table 301 provided in the NC associates addresses assigned to memories in other SBs with home node IDs in other SBs.
  • the ID of the node registered in the home determination table 301 included in the NC is an ID that is used globally in all SBs of the information processing system 100. That is, the node ID registered in the home determination table 301 is unique for all SBs of the information processing system 100.
  • FIG. 4B shows an example of the home determination table 301 provided in the NC 131a.
  • the node 121b is associated with the address “dddd-1” from the address “cccc”. In this case, it means that the address “cccc” to the address “ddd ⁇ 1” are assigned to the node 121b in the SB 110b.
  • FIG. 5 is a diagram illustrating an example of information held in the take-out management table.
  • Each node in the SB includes a take-out management table 202.
  • the take-out management table 202 provided in each node when the data stored in the memory under the management of each node is taken out and cached in another node, the address of the memory storing the data, The cache state of data and the node ID of the take-out destination are registered in association with each other.
  • the ID of the node registered in the take-out management table 202 provided in the node is an ID used locally in each SB. If the take-out destination node is a node in another SB, an ID indicating the NC in the same SB is registered as the take-out destination node ID.
  • FIG. 5A shows an example of the take-out management table 202 provided in the node 123b.
  • the take-out management table 202 provided in the node 123b for example, for the address “eeee” assigned to the memory 143b managed by the node 123b, E indicating that the data for the address “eeee” is exclusive data.
  • the state and the ID of the node 121b are associated with each other. In this case, it means that the data at the position of the address “eeee” is taken out to the node 121b in the E state.
  • the NCs 131a to 131d in the information processing system 100 are each provided with a take-out management table 302.
  • the take-out management table 302 provided in the NC when the data stored in the memory in the SB to which the NC belongs is taken out and cached in a node in another SB, the address of the memory in which the data is stored
  • the cache state of data and the node ID of the take-out destination are registered in association with each other.
  • the ID of the node registered in the take-out management table 302 included in the NC is an ID that is used globally in all SBs of the information processing system 100.
  • FIG. 5B shows an example of the take-out management table 302 provided in the NC 131b.
  • the E state and the ID of the node 121c are associated with the address “cccc” assigned to any of the memories 141b to 143b in the SB 110b. In this case, it means that the data at the address “cccc” is taken out to the node 121c in the E state.
  • FIG. 6 is a diagram illustrating processing in which an NC response packet is transmitted from a transmission destination SB in response to transmission of a request packet from the transmission source SB.
  • the core unit in the node 121a requests data reading in the E state from the address of the read request destination assigned to the memory 143b connected to the node 123b in the SB 110b.
  • the data stored at the position of the read request destination address is referred to as “data # 1”.
  • the node 121a refers to the home determination table 201 provided in the node 121a, and recognizes that the NC 131a is associated with the read request destination address. In this case, since the address of the read request destination is assigned to a memory connected to another SB, the node 121a transmits a request packet to the NC 131a.
  • the “destination ID” and “requester ID” fields in the request packet are set to indicate the NC 131a and the node 121a, respectively, and “Read_E” is set in the “command” field.
  • the NC 131a that has received the request packet searches the home determination table 301 provided in the NC 131a with the address of the data # 1 set in the received request packet.
  • the NC 131a extracts the ID of the node 123b associated with the address of the data # 1 from the home determination table 301, and writes the “destination ID” field in the ID of the home node (node 123b) extracted from the home determination table 301.
  • the changed request packet is transmitted to the NC 131b of the SB 110b that is the adjacent transfer destination.
  • the NC 131b that has received the request packet transmitted from the NC 131a of the SB 110a determines from the “destination ID” field that the received request packet is addressed to a node connected to itself.
  • the NC 131b searches the take-out management table 302 provided in the NC 131b with the address of the data # 1 set in the received request packet.
  • the NC 131b transmits the request packet to the node 123b indicated by the “destination ID”.
  • the node 123b reads the requested data # 1 from the memory 143b in the E state, and sends a data response packet storing the read data # 1. Transmit to the NC 131b.
  • the data response packet is received by the NC 131a from the NC 131b via the NCs 131c and 131d and transferred to the node 121a in the NC 131a which is a requester, and a series of processing ends.
  • the NC 131b executes all commands for controlling cache coherency of data # 1. Send to the destination.
  • the NC 131b instead of individually transmitting a snoop packet to all NCs to which the node to which data # 1 is taken out belongs, by transmitting one NC snoop packet, it is possible to connect between NCs. Reduce the transmission load on the connected communication path.
  • a broadcast flag including bits assigned to NCs 131a to 131d is set.
  • the takeout destination of the data # 1 registered in the takeout management table 302 included in the NC 131b is the nodes 121c and 122c in the SB 110c and the nodes 121d and 122d in the SB 110d.
  • the NC 131b sets the third bit and the fourth bit corresponding to NC 131c, 131d in the broadcast flag to “1”, and other bits.
  • An NC snoop packet in which is set to “0” is transmitted to the NC 131c which is an adjacent transfer destination.
  • the request packet may be transmitted to the home node without transmitting the NC snoop packet.
  • FIG. 7 is a diagram illustrating processing in the SB that has received the NC snoop packet.
  • the NC 131c that has received the NC snoop packet from the NC 131b refers to the broadcast flag in the received NC snoop packet.
  • the broadcast flag since the bit corresponding to the NC 131c is set to “1”, the NC 131c generates a local snoop packet based on the content of the received NC snoop packet and transmits it to all the nodes 121c to 123c in the SB 110c. Broadcast.
  • “Snoop_I” is set based on the “command” field of the NC snoop packet.
  • the NC 131c transmits an NC snoop packet in which the bit corresponding to the NC 131c in the broadcast flag is rewritten to “0” to the adjacent transfer destination NC 131d.
  • the NC 131d that has received the NC snoop packet refers to the broadcast flag in the received NC snoop packet.
  • the NC 131d since the bit corresponding to the NC 131d is “1”, the NC 131d generates a local snoop packet based on the content of the received NC snoop packet, and sends it to all the nodes 121d to 123d in the SB 110d. Broadcast.
  • “Snoop_I” is set based on the “command” field of the NC snoop packet.
  • the NC 131d rewrites the bit corresponding to the NC 131d in the broadcast flag in the received NC snoop packet to “0”. At this time, since all the bits of the broadcast flag are “0”, the NC 131d determines that the NC snoop packet has been received by all the necessary NCs and transmits the NC snoop packet to the NC 131a that is the adjacent transfer destination. do not do.
  • FIG. 8 is a diagram illustrating processing in the SB when an NC response packet is transmitted.
  • a local snoop packet is broadcast from the NC 131c to the nodes 121c to 123c in the SB 110c
  • the nodes 121c to 123c that have received the local snoop packet respond to the requested processing.
  • data # 1 is cached in each of the nodes 121c and 122c.
  • Each of the cache units of the nodes 121c and 122c sets the cache data corresponding to the “address” field of the received local snoop packet to the I state and sets the LS-response packet in which “Response_I” is set as the processing result in the “command” field to the NC 131c.
  • Send to since the node 123c originally does not hold the cache data corresponding to the “address” field of the local snoop packet, “NC-Response_I” is set in the “command” field without particularly controlling the cache unit.
  • the LS response packet is transmitted to the NC 131c.
  • the NC response packet which is a response to the NC snoop packet, is generated and transmitted by the NC (NC 131c in FIG. 8) that first receives the NC snoop packet among the NCs specified in the broadcast flag.
  • the NC 131c receives the LS response packet from all the nodes 121c to 123c in the SB 110c, the NC 131c transmits an NC response packet in which “1” is set to the bit corresponding to the NC 131c in the response field to the NC 131d that is the adjacent transfer destination. .
  • NC-Response_I is set in the “command” field of the NC response packet.
  • the nodes 121d to 123d that have received the local snoop packet respond to the requested processing.
  • the NC 131d receives the LS response packet from all the nodes 121d to 123d in the SB 110d and receives the NC response packet in which the field values of “requester ID” and “transaction ID” that are the same as the NC snoop packet are set.
  • the following processing is performed.
  • the NC 131d rewrites the bit corresponding to the NC 131d in the response field in the received NC response packet to “1”, and transmits the rewritten NC response packet to the NC 131a that is the adjacent transfer destination.
  • the NC 131a transfers the received NC response packet as it is to the NC 131b because the processing based on the NC snoop packet in which the field values of the same “requester ID” and “transaction ID” have not been performed in the past.
  • the NC 131b receives notification of completion of the processing requested by the NC snoop packet from all the take-out destination nodes of the data # 1.
  • the NC 131b that has received the NC response packet transmits a request packet for the taken-out data to the node 123b that is the home node of the data # 1.
  • the node 123b determines that the data # 1 has been taken out to another SB, and transmits a local snoop packet to the NC 131b.
  • the NC 131b receives, as a response to the local snoop packet, an LS response packet in which a processing result stored in the NC snoop packet (here, “Response_I” which is a command for notifying that the cache data is in the I state) is set, 123b.
  • a processing result stored in the NC snoop packet here, “Response_I” which is a command for notifying that the cache data is in the I state
  • the node 123b that has received the LS response packet determines that the cache coherency is maintained, reads data # 1 from the memory 143b in the E state, and transmits a data response packet storing the read data # 1 to the NC 131b. To do.
  • the data response packet is received by the NC 131a from the NC 131b via the NCs 131c and 131d and transferred to the node 121a in the NC 131a which is a requester, and a series of processing ends.
  • FIG. 9 is a diagram illustrating a state in which an NC snoop packet and an NC response packet are transmitted.
  • transmission of the NC snoop packet will be described.
  • the NC 131b transmits the NC snoop packet
  • the third bit and the fourth bit of the broadcast flag corresponding to the NC 131c and 131d are set to “1”, and the other bits are set to “0”.
  • the NC 131b sets the response flag in the NC snoop packet to an initial value “1”.
  • the NC 131c that has received the NC snoop packet from the NC 131b transmits the NC snoop packet as it is to the adjacent transfer destination when the bit indicating itself in the broadcast flag is “0”. However, in the example of FIG. 9, since the bit indicating the NC 131c in the broadcast flag is “1”, the NC 131c broadcasts a local snoop packet to a node in the SB 110c to which the NC 131c belongs based on the contents of the NC snoop packet. .
  • the NC 131c rewrites the bit indicating itself in the broadcast flag to “0”. Further, the NC 131 c rewrites the response flag set to the initial value “1” to “0”. Here, since “1” exists in the rewritten broadcast flag, the NC 131c transmits an NC snoop packet in which the broadcast flag and the response flag are rewritten to the adjacent NC 131d.
  • the NC 131d that has received the NC snoop packet from the NC 131c has a bit indicating "1" in the broadcast flag, and therefore broadcasts a local snoop packet to the node in the SB 110d to which the NC 131d belongs based on the content of the NC snoop packet. To do. Also, the NC 131c rewrites the bit indicating itself in the broadcast flag to “0”. Here, since all the bits of the broadcast flag after rewriting become “0”, the NC 131d does not transmit any more NC snoop packets.
  • the processing specified in the “command” field can be requested by one packet to all the NCs to which the data take-out destination node belongs. For this reason, when data is taken out to a plurality of nodes, the NC connected to the home node is connected between NCs as compared with the case where the snoop packet is individually transmitted to all nodes to which the data is taken out. It is possible to reduce the transmission load of the communication channel.
  • the NC designated by the broadcast flag of the NC snoop packet refers to the response flag of the NC snoop packet.
  • the response flag is “1”
  • the NC generates and transmits an NC response packet corresponding to the received NC snoop packet.
  • the NC 131c when the NC 131c receives the NC snoop packet, the response flag of the received NC snoop packet is “1”. For this reason, the NC 131c generates an NC response packet corresponding to the received NC snoop packet.
  • the NC 131c receives local snoop packets from all nodes in the SB 110b and confirms that all the data # 1 cached in the SB 110b is invalidated, the NC 131c transmits an NC response packet to the NC 131d.
  • NC-Response_I indicating that the invalidation of the cache data is completed is set in the “command” field, and the bit indicating the NC 131b in the “response field” is set. “1”.
  • the NC 131d When the NC 131d receives the NC response packet from the NC 131c and receives local snoop packets from all the nodes in the SB 110c and confirms that all the data # 1 cached in the SB 110c is invalidated, The NC response packet is transferred to the NC 131a. At this time, in the transferred NC response packet, the bit indicating the NC 131c in the “response field” is set to “1”.
  • NC 131a receives the NC response packet from NC 131d. However, the NC 131a has not received in the past an NC snoop packet in which the field values of “requester ID” and “transaction ID” that are the same as those set in the received NC response packet are set. In this case, the NC 131a transfers the received NC response packet to the NC 131b as it is.
  • NC 131b receives the NC response packet from NC 131a.
  • the NC 131b confirms that “Response_I” is set in the “command” field of the received NC response packet, and the bits corresponding to the NCs 131b and 131c in the response field are set to “1”.
  • the NC 131b recognizes that the data cached in each of the SB 110b and the SB 110c is invalidated from the confirmed information.
  • the NC that is the transmission source of the NC snoop packet can recognize from one packet that the processing instructed by the NC snoop packet has been completed in all the nodes that are the data take-out destinations. It becomes like this. For this reason, when data is taken out to a plurality of nodes, not only a snoop packet that requests processing to each node but also a data amount of a response packet for the snoop packet can be suppressed. Therefore, it is possible to further reduce the transmission load of the communication path connecting the NCs.
  • FIG. 10 is a diagram illustrating another example of processing in which an NC snoop packet is transmitted.
  • the NC receives a request packet from another NC as in the example of FIG. 6 and also receives a local snoop packet from a node in the same SB as shown in FIG. 10, the NC snoop packet Send.
  • the core unit in the node 122b requests data reading in the E state from the address assigned to the memory 143b connected to the node 123b.
  • the node 123b recognizes that the home node corresponding to the read request destination address is the node 123b based on a home determination table (not shown) provided in the node 123b.
  • the node 123b transmits a request packet to the node 123b that is the home node. “Read_E” is set in the “command” field of the request packet.
  • the node 123b that has received the request packet searches the take-out management table 202 provided in the node 123b with the address set in the received request packet. If the ID of the take-out destination node corresponding to the address set in the request packet is not extracted from the take-out management table 202, the node 123b reads the requested data # 1 from the memory 143b in the E state. The data response packet storing the read data # 1 is transmitted to the node 122b.
  • the node 123b transmits a local snoop packet in which “Snoop_I” is set in the “command” field to the NC 131b.
  • the NC 131b transmits an NC snoop packet in which the bits corresponding to the SBs 110c and 110d in the broadcast flag are set to “1”.
  • the processing until the NC 131b receives the NC response packet is the same as the processing described with reference to FIGS.
  • a command for controlling cache coherency of data # 1 is transmitted to all the take-out destination nodes.
  • the NC 131b that has received the NC response packet has transmitted the local response packet to the node 123b, and the processing indicated by “Snoop_I” has been completed in all the nodes to which data # 1 has been taken out.
  • the node 123b reads the requested data # 1 from the memory 143b in the E state, and transmits a data response packet storing the read data # 1 to the node 122b.
  • FIG. 11 is a diagram illustrating a configuration example of a node and its operation.
  • FIG. 11 shows a configuration example of the node 121a in the SB 110a as an example, but other nodes also have the same configuration as FIG.
  • the configurations provided in the nodes will be described with reference numerals common to all the nodes.
  • the node 121a includes core units 210 and 220, memory control units 231 and 232, a request generation unit 241, a local snoop generation unit 242, an LS response generation unit 243, a data response generation unit 244, arbiters 251 and 252, a home determination table 201, and A take-out management table 202 is provided.
  • the core unit 210 includes a processor core (not shown) and a cache unit 211.
  • the core unit 220 includes a processor core (not shown) and a cache unit 221.
  • Each of the cache units 211 and 221 includes a cache memory and a cache control unit that controls the cache memory. Since the core units 210 and 220 can perform the same processing, only the operation of the core unit 210 will be described here.
  • the core unit 210 accesses data in a memory managed by another node (however, data not cached in the cache unit 211), the core unit 210 sends a request including an access destination address and a command to the arbiter 251. To the request generation unit 241. When the command is “Writeback”, the request includes data to be written back.
  • the request generation unit 241 that has received the request from the core unit 210 refers to the home determination table 201.
  • the home determination table 201 associates the address of the shared memory space with the ID of the home node.
  • the request generation unit 241 extracts a node ID associated with the address included in the request from the core unit 210 from the home determination table 201, and transmits a request packet in which the extracted node ID is set in the “destination ID” field. To do.
  • the home node corresponding to the access destination address is a node in the SB 110a
  • the request packet is transmitted to the home node in the SB 110a.
  • the home node corresponding to the access destination address is outside the SB 110a, the request packet is transmitted to the NC 131a in the SB 110a.
  • the cache unit 211 of the core unit 210 receives a data response packet from another node in the SB 110a or the NC 131a, the cache unit 211 performs a process according to the “command” field of the data response packet.
  • the cache unit 211 stores the read data extracted from the “data” field of the data response packet in the status indicated by the “command” field. To write to the cache memory.
  • the cache unit 211 recognizes the completion of writing.
  • the cache unit 211 of the core unit 210 receives a local snoop packet from another node in the SB 110a or the NC 131a, the cache unit 211 performs a process indicated by the “command” field of the local snoop packet. For example, when the cache data corresponding to the “address” field of the received local snoop packet exists in the cache memory, the cache unit 211 changes the status of the cache data to the status specified in the “command” field.
  • the cache unit 211 When the processing instructed in the “command” field of the local snoop packet is completed, the cache unit 211 notifies the LS response generation unit 243 via the arbiter 252 that the instructed processing has been completed.
  • the LS response generation unit 243 generates an LS response packet in which information indicating that processing is completed in the cache unit 211 is set in the “command” field, and transmits the LS response packet to the transmission source of the local snoop packet.
  • the memory control unit 231 When the memory control unit 231 receives a request packet from another node in the SB 110a or the NC 131a, the memory control unit 231 refers to the take-out management table 202. As described above, in the take-out management table 202, when the data stored in the memory 141a managed by the node 121a is taken out and cached by another node, the data in the memory 141a storing the data is stored. Addresses, data cache states, and take-out node IDs are registered in association with each other.
  • the memory control unit 231 determines whether to transmit a local snoop packet or a data response packet according to the information obtained from the take-out management table 202 and the setting value of the “command” field in the received request packet. .
  • the memory control unit 231 determines that the data response packet should be transmitted. Even if the node ID of the takeout destination is registered in the record of the takeout management table 202 corresponding to the address set in the received request packet, “Writeback” is set in the “command” field in the request packet.
  • the memory control unit 231 determines that the data response packet should be transmitted.
  • “Read_E” is set in the “command” field in the request packet. If the “command” field is set to “Read_S” and the data cache state is state E, the memory control unit 231 determines that a local snoop packet should be transmitted.
  • the memory control unit 231 When it is determined that the local snoop packet should be transmitted, the memory control unit 231 notifies the local snoop generation unit 242 of the take-out destination node ID.
  • the local snoop generation unit 242 transmits a local snoop packet in which the node ID notified from the memory control unit 231 is set in the “destination ID” field.
  • the take-out destination node is a node in the SB 110a
  • the local snoop packet is transmitted to the node in the SB 110a.
  • the take-out destination node is outside the SB 110a
  • the local snoop packet is transmitted to the NC 131a in the SB 110a.
  • the memory control unit 231 accesses the memory 141a.
  • the memory control unit 231 reads data from the address position set in the request packet.
  • “Writeback” is set in the “command” field of the request packet
  • the memory control unit 231 writes the data extracted from the “data” field of the request packet at the address position set in the request packet. .
  • the memory control unit 231 When the access process to the memory 141a is completed, the memory control unit 231 notifies the data response generation unit 244 of the completion of the process. In this case, the data response generation unit 244 transmits a data response packet to the transmission source of the request packet received by the memory control unit 231.
  • the data read from the memory 141 a by the memory control unit 231 is stored in the “data” field of the transmitted data response packet.
  • the data response generation unit 244 updates the take-out management table 202.
  • the data response generation unit 244 sets the state to E for the record corresponding to the address set in the request packet in the take-out management table 202 and registers the value of the “requester ID” field as the take-out destination.
  • the memory control unit 232 When the memory control unit 232 receives the LS response packet from another node in the SB 110a or the NC 131a, the memory control unit 232 transfers the received LS response packet to the data response generation unit 244. At this time, if data read is requested by the “command” field of the request packet corresponding to the received LS response packet, the memory control unit 232 accesses the memory 141a and is set in the LS response packet. Read data from address.
  • the “request packet corresponding to the received LS response packet” refers to a request packet having the same value of the “transaction ID” field as the received LS response packet.
  • the data response generation unit 244 that has received the LS response packet through the memory control unit 232 transmits a data response packet in which the node indicated by the “requester ID” field or the NC 131a is set in the “destination ID” field.
  • the read data is stored in the “data” field of the data response packet.
  • the data response generation unit 244 transmits the data request packet in response to the reception of the LS response packet through the memory control unit 232, the data response generation unit 244 sets the address set in the received LS response packet in the take-out management table 202. Update the corresponding record. The data response generation unit 244 responds to the combination of the values of the “command” and “state” fields in the record before update in the take-out management table 202 and the value of the “command” field in the received LS response packet. Then, the “state” and “take-out destination ID” fields in the record are updated.
  • FIG. 12 is a diagram showing a configuration example of NC and its operation.
  • FIG. 12 shows an example of the configuration of the NC 131a in the SB 110a as an example, but the other NCs 131b to 131d also have the same configuration as FIG.
  • the configuration provided in the NC will be described with reference numerals common to all NCs.
  • the NC 131a includes a request transmission unit 311, an NC snoop generation unit 312, a request reception processing unit 313, an NC snoop processing unit 314, an NC response processing unit 315, a data response transmission unit 316, a requester determination unit 321, a destination determination unit 322, and a BC ( Broadcast) determination unit 323, NC response determination unit 324, destination determination unit 325, and arbiters 331 to 335.
  • the NC 131a includes an ID conversion table 303, a response reception determination table 304, and a response transmission determination table 305 in addition to the above-described home determination table 301 and take-out management table 302 as information used in processing.
  • the request transmission unit 311 When the request transmission unit 311 receives a request packet from a node in the SB 110 a to which the NC 131 a belongs, the request transmission unit 311 extracts the home node ID corresponding to the address set in the request packet from the home determination table 301. The request transmission unit 311 rewrites the “destination ID” field of the received request packet with the home node ID extracted from the home determination table 301. At the same time, the request transmission unit 311 determines the values of the “requester ID” and “transaction ID” fields of the received request packet from the IDs used locally inside the NC 131a, and includes a plurality of values included in the information processing system 100. Rewrite the ID to be used globally in each NC. The request transmission unit 311 transmits the request packet in which the values of the fields of “destination ID”, “requester ID”, and “transaction ID” are rewritten to the NC 131 b that is an adjacent transmission destination via the arbiter 331.
  • an ID used locally in the SB is referred to as a “local ID”, and an ID used globally in each SB included in the information processing system 100 is referred to as a “global ID”.
  • the requester determination unit 321 When the requester determination unit 321 receives a local snoop packet from a node in the SB 110a to which the NC 131a belongs, the requester determination unit 321 compares the values of the “destination ID” and “requester ID” fields in the received local snoop packet. When the field values of “destination ID” and “requester ID” are the same (for example, when a local snoop packet is transmitted from a node in response to a request packet transmitted by NC 131a), requester determination unit 321 receives The transmitted local snoop packet is transmitted to the NC response processing unit 315.
  • the requester determination unit 321 determines that the received local snoop packet is an NC.
  • the data is transmitted to the snoop generation unit 312.
  • the NC snoop generation unit 312 When the NC snoop generation unit 312 receives the local snoop packet through the requester determination unit 321, the NC snoop generation unit 312 acquires the node ID associated with the address set in the local snoop packet from the takeout management table 302, and the data takeout destination Determine the node. The NC snoop generation unit 312 generates an NC snoop packet, sets the bit in the broadcast flag corresponding to each NC connected to the data take-out destination node to “1”, and sets the response flag to “1”. To do.
  • the NC snoop generation unit 312 converts each field of “requester ID” and “transaction ID” in the received local snoop packet from a local ID to a global ID, and converts each ID after conversion into “ It is set to the value of each field of “Requester ID” and “Transaction ID”.
  • the NC snoop generation unit 312 transmits the NC snoop packet for which setting has been completed to the NC 131 b that is an adjacent transmission destination via the arbiter 332.
  • the NC snoop generation unit 312 that has transmitted the NC snoop packet registers a new record in the response reception determination table 304.
  • the registered record is referred to when the NC 131a receives an NC response packet corresponding to the transmitted NC snoop packet.
  • FIG. 13 is a diagram illustrating an example of information held in the response reception determination table.
  • the response reception determination table 304 holds the contents of a packet that is a trigger for transmitting an NC snoop packet until an NC response packet corresponding to the transmitted NC snoop packet is received.
  • the transaction ID set in the transmitted NC snoop packet, the original packet that triggered the transmission of the NC snoop packet, and the NC response packet corresponding to the NC snoop packet are received.
  • a reception flag indicating whether or not it has been registered is registered.
  • the NC snoop generation unit 312 that has transmitted the NC snoop packet registers the local snoop packet received through the requester determination unit 321 in the “original packet” column in the record of the response reception determination table 304.
  • the value of the reception flag is set to an initial value “0” at the stage where the NC snoop packet corresponding to the record is transmitted.
  • the destination determination unit 322 When receiving a request packet from an NC in another SB, the destination determination unit 322 performs the following process according to the node ID set in the “destination ID” field.
  • the destination determination unit 322 transmits the received request packet as it is to the NC 131 b via the arbiter 332.
  • the destination determination unit 322 transmits the received request packet to the request reception processing unit 313.
  • the request reception processing unit 313 When the request reception processing unit 313 receives the request packet through the destination determination unit 322, the request reception processing unit 313 refers to the take-out management table 302. The request reception processing unit 313 transmits the request packet to the node in the SB 110a and sends it to other SBs from the information obtained from the take-out management table 302 and the setting value of the “command” field in the received request packet. It is determined which of the NC snoop packet transmissions should be executed.
  • the request reception processing unit 313 determines that the request packet should be transmitted. Even if the node ID of the takeout destination is registered in the record of the takeout management table 302 corresponding to the address set in the received request packet, “Writeback” is set in the “command” field in the received request packet. If “Read_S” is set in the “command” field and the data cache state is S, the request reception processing unit 313 determines that the request packet should be transmitted.
  • the request reception processing unit 313 transmits the request packet received from another NC to the home node in the SB 110a indicated by the “destination ID” field via the arbiter 335. To do. At this time, the request reception processing unit 313 converts each field of “destination ID” and “transaction ID” in the request packet from the global ID to the local ID, and changes the “requester ID” field from the global ID to the NC 131a itself. To a local ID that points to. Furthermore, the request reception processing unit 313 generates a new record for the ID conversion table 303 and stores the IDs before and after conversion in the record.
  • FIG. 14 is a diagram illustrating an example of information held in the ID conversion table.
  • the ID conversion table 303 when a packet is transmitted to a node in its own SB according to a packet from another SB, the ID before conversion set in the received packet and the conversion set in the transmission packet are set. A record including the later ID is registered. As illustrated in FIG. 14, the post-conversion transaction ID set in the transmission packet, the pre-conversion requester ID and the pre-conversion transaction ID set in the received packet are registered in the record of the ID conversion table 303. The The record of the ID conversion table 303 is deleted when a response packet for the packet transmitted in the SB is received.
  • the request reception processing unit 313 receives the value of the “transaction ID” field in the request packet transmitted to the home node in the SB 110 a and the “requester ID” and “transaction ID” in the request packet received through the destination determination unit 322. Are registered in the record of the ID conversion table 303. Further, the record registered by the request reception processing unit 313 is thereafter deleted by the data response transmission unit 316 that has received the data response packet from the home node in the SB 110a.
  • the node ID and the transaction ID can be changed between the SBs regardless of the ID restrictions of each SB such as the number of IDs usable in each SB. It becomes possible to transmit with.
  • the request reception processing unit 313 When it is determined that the NC snoop packet should be transmitted, the request reception processing unit 313 generates an NC snoop packet.
  • the request reception processing unit 313 uses the value of the “requester ID” field and the value of the “transaction ID” field in the request packet received through the destination determination unit 322 as the “requester ID” field and the “transaction ID” field of the NC snoop packet. Set to each. Further, the request reception processing unit 313 sets the bit in the broadcast flag corresponding to each NC connected to the data take-out destination node to “1” and sets the response flag to “1”.
  • the request reception processing unit 313 transmits the NC snoop packet for which setting has been completed to the NC 131 b via the arbiter 332.
  • the request reception processing unit 313 that has transmitted the NC snoop packet registers a new record in the response reception determination table 304.
  • the request reception processing unit 313 registers the request packet received through the destination determination unit 322 in the “original packet” column in the record of the response reception determination table 304.
  • the value of the reception flag is set to an initial value “0” at the stage where the NC snoop packet corresponding to the record is transmitted.
  • the BC determination unit 323 When the BC determination unit 323 receives an NC snoop packet from an NC in another SB, the BC determination unit 323 refers to the “broadcast flag” of the received NC snoop packet. When the bit corresponding to the NC 131 a in the “broadcast flag” is “0”, the BC determination unit 323 transfers the received NC snoop packet to the NC 131 b via the arbiter 332. On the other hand, when the bit corresponding to the NC 131 a in the “broadcast flag” is “1”, the BC determination unit 323 transmits the received NC snoop packet to the NC snoop processing unit 314.
  • the NC response determination unit 324 determines whether the destination of the NC response packet is a node in the SB 110a based on the value of the “destination ID” field in the received NC response packet. Determine. If the destination of the NC response packet is not a node in the SB 110a, the NC response determination unit 324 transmits the received NC response packet to the NC snoop processing unit 314. On the other hand, when the destination of the NC response packet is a node in the SB 110a, the NC response determination unit 324 transmits the received NC response packet to the NC response processing unit 315.
  • the NC snoop processing unit 314 When the NC snoop processing unit 314 receives the NC snoop packet through the BC determination unit 323, the NC snoop processing unit 314 causes each node in the SB 110a to execute the process instructed by the NC snoop packet and sets the execution result of the process at each node. Send a response packet.
  • the NC snoop processing unit 314 refers to the ID conversion table 303 and the response transmission determination table 305 during processing.
  • FIG. 15 is a diagram illustrating an example of information held in the response transmission determination table.
  • the NC snoop processing unit 314 registers a record in the response transmission determination table 305 when a local snoop packet is broadcast to a node in the SB 110a in response to reception of the NC snoop packet.
  • the record of the response transmission determination table 305 includes a transaction ID that is a local ID set in the transmitted local snoop packet, a requester ID and a transaction ID that are both global IDs that are set in the original NC snoop packet, and transmission.
  • the address set in the local snoop packet, the number of responses, the reception flag, and the NC response packet are registered.
  • the number of responses in the record is the number of LS response packets corresponding to the local snoop packet broadcast in the SB 110a.
  • the initial value is “0” at the time of record registration, and the maximum value is the number of nodes in the SB 110a. Is “3”.
  • the reception flag in the record indicates whether or not the NC response packet corresponding to the NC response packet has been received from another NC, and is updated from “0” to “1” when the NC response packet is received.
  • the As the NC response packet in the record the NC response packet received from another NC is stored as it is. When the NC response packet is stored in the record, the reception flag is also “1”.
  • FIG. 16 is a flowchart showing processing at the time of NC snoop packet reception by the NC snoop processing unit.
  • the NC snoop processing unit 314 receives the NC snoop packet through the BC determination unit 323.
  • the NC snoop processing unit 314 broadcasts a local snoop packet to the nodes 121a, 122a, and 123a in the SB 110a.
  • the NC snoop processing unit 314 sets the local ID indicating itself in the “requester ID” field in the local snoop packet and sets the local ID in the “transaction ID” field.
  • the value of the “address” field and the value of the “command” field of the received NC snoop packet are set, respectively.
  • the NC snoop processing unit 314 registers a new record in each of the ID conversion table 303 and the response transmission determination table 305.
  • the NC snoop processing unit 314 obtains the transaction ID that is the local ID set in the local snoop packet transmitted in step S12 and the requester ID and the transaction ID that are global IDs set in the NC snoop packet received in step S11.
  • Each of the new record in the ID conversion table 303 and the new record in the response transmission determination table 305 are registered.
  • the NC snoop processing unit 314 sets both the number of responses and the value of the reception flag in the response transmission determination table 305 to “0”.
  • Step S14 If the “response flag” in the NC snoop packet received in step S11 is “1”, the process in step S15 is executed. If the “response flag” is “0”, the process in step S17. Is executed.
  • Step S15 When the “response flag” is “1”, the NC snoop processing unit 314 newly generates an NC response packet according to the following procedure.
  • the NC snoop processing unit 314 sets the field values of “request ID”, “transaction ID”, and “address” of the NC snoop packet received in step S11 in the same field column of the NC response packet. Further, based on the home determination table 301, the NC snoop processing unit 314 uses the home node ID corresponding to the value set in the “address” field of the NC snoop packet received in step S11 as the “destination ID” of the NC response packet. "Field.
  • the NC snoop processing unit 314 sets a value indicating that the process specified in the “command” field of the NC snoop packet received in step S11 is completed in the “command” field of the NC snoop packet. At this time, the NC snoop processing unit 314 sets all bits of the “response field” in the NC snoop packet to “0”.
  • the NC snoop processing unit 314 registers the NC response packet generated in the above procedure in the record generated in the response transmission determination table 305 in step S13, and rewrites the reception flag in this record to “1”.
  • Step S16 The NC snoop processing unit 314 rewrites the “response flag” in the NC snoop packet received in step S11 to “0”.
  • Step S17 The NC snoop processing unit 314 rewrites the bit corresponding to the NC 131a among the bits of the “broadcast flag” in the NC snoop packet received in step S11 to “0”.
  • Step S18 The NC snoop processing unit 314 refers to the “broadcast flag” after the rewrite processing in step S17. If all bits in the “broadcast flag” are “0”, the NC snoop processing unit 314 ends the process. In this case, the NC snoop packet received in step S11 is no longer transferred to other NCs. On the other hand, the NC snoop processing unit 314 executes the process of step S19 when even one of the bits in the “broadcast flag” is “1”.
  • Step S19 The NC snoop processing unit 314 transmits the NC snoop packet rewritten only in step S16, S17, or step S17 to the NC 131b that is the adjacent transmission destination via the arbiter 332.
  • FIG. 17 is a flowchart showing response count processing by the NC snoop processing unit.
  • the node that has received the local snoop packet executes the process specified in the “command” field.
  • the node completes the specified process, the node returns an LS response packet in which a value indicating that the process is completed is set in the “command” field to the NC 131a.
  • the node sets the values set in the “requester ID”, “transaction ID”, and “address” fields of the received local snoop packet in the same field of the LS response packet.
  • the NC snoop processing unit 314 receives an LS response packet from a node in the SB 110a.
  • the NC snoop processing unit 314 sets the value set in the local transaction ID among the records in the response transmission determination table 305 to the value set in the “transaction ID” field in the received LS response packet. Select the same record as.
  • the NC snoop processing unit 314 counts up the number of responses in the selected record by “1”.
  • the number of responses in the record of the response transmission determination table 305 is counted up each time a notification of completion of the processing specified in the “command” field is received from the broadcast destination node of the local snoop packet. .
  • the NC snoop processing unit 314 can determine that the NC 131a has received processing completion notifications from all the nodes in the SB 110a.
  • FIG. 18 is a flowchart showing NC response reception processing by the NC snoop processing unit. If the “response flag” in the received NC snoop packet is “0” in step S14 in FIG. 16, then NC response data corresponding to the received NC snoop packet is transmitted from another NC. In this case, the NC 131a receives the NC response data corresponding to the received NC snoop packet by the processing of FIG. 18, and updates the corresponding record in the response reception determination table 304.
  • the NC snoop processing unit 314 receives an NC response packet transmitted from another NC through the NC response determination unit 324.
  • the NC snoop processing unit 314 uses the value set as the global transaction ID among the records in the response transmission determination table 305 (that is, the transaction ID set in the NC snoop packet corresponding to the record). A record having the same value as that set in the “transaction ID” field in the received NC response packet is selected.
  • the NC snoop processing unit 314 registers the NC response packet received in step S41 for the selected record.
  • Step S43 The NC snoop processing unit 314 rewrites the reception flag in the record selected in step S42 to “1”.
  • FIG. 19 is a flowchart showing NC response transmission processing by the NC snoop processing unit.
  • Step S51 The NC snoop processing unit 314 detects a record in which the number of responses reaches the maximum value “3” and the reception flag is “1” among the responses registered in the response transmission determination table 305. To do.
  • the NC snoop processing unit 314 refers to the “response field” in the NC response packet registered in the record detected in step S51.
  • the NC snoop processing unit 314 rewrites the bit corresponding to the NC 131a among the referenced “response field” bits to “1”.
  • Step S53 The NC snoop processing unit 314 transmits the NC response packet rewritten in step S52 to the NC 131b that is the transmission destination adjacent to the NC 131a via the arbiter 333.
  • Step S54 The NC snoop processing unit 314 extracts a local transaction ID from the record in the response transmission determination table 305 detected in step S51.
  • the NC snoop processing unit 314 deletes the record in the ID conversion table 303 in which the same value as the transaction ID extracted from the response reception determination table 304 is registered as the converted transaction ID. Also, the NC snoop processing unit 314 deletes the record in the response transmission determination table 305 detected in step S51.
  • the NC snoop processing unit 314 uses the response transmission determination table to perform processing from receiving an NC snoop packet to transmitting a corresponding NC response packet.
  • the NC snoop processing unit 314 uses the number of responses in the response transmission determination table 305 and the reception flag to receive a process completion notification instructed by the NC snoop packet from all the nodes in the SB 110a, and the corresponding NC It is possible to reliably recognize that the response packet has been received. Therefore, the processing results in all nodes that are the data take-out destinations can be stored in the NC response packet and reliably transmitted to the home node.
  • the NC response processing unit 315 transmits the processing result corresponding to the transmitted NC snoop packet to the home node after the NC snoop generation unit 312 or the request reception processing unit 313 transmits the NC snoop packet. At the same time, the NC response processing unit 315 performs processing results corresponding to the NC snoop packet until processing related to the packet registered in the response reception determination table 304 by the NC snoop generation unit 312 or the request reception processing unit 313 is completed. Are stored in the response reception determination table 304.
  • FIG. 20 is a diagram illustrating a configuration example of the NC response processing unit and its operation.
  • the NC response processing unit 315 includes an NC response reception unit 351, a packet determination unit 352, a response transmission unit 353, a request transmission unit 354, and a snoop reception unit 355.
  • a record is registered in the response reception determination table 304 when an NC snoop packet is transmitted by the NC snoop generation unit 312 or the request reception processing unit 313.
  • the NC snoop generation unit 312 registers the local snoop packet that is a trigger for transmitting the NC snoop packet in the record of the response reception determination table 304.
  • the request reception processing unit 313 registers the request packet that is a trigger for transmitting the NC snoop packet in the record of the response reception determination table 304.
  • the NC response receiving unit 351 When receiving an NC response packet from an NC in another SB, the NC response receiving unit 351 receives a response in which a record in which the same transaction ID as the value set in the “transaction ID” field of the received NC response packet is registered is received. Select from determination table 304. The NC response receiving unit 351 rewrites the response flag in the selected record to “1”, and records that the processing requested by the NC snoop packet is completed in the record. Further, the NC response reception unit 351 notifies the packet determination unit 352 of a record ID indicating a record with the response flag rewritten.
  • the packet determining unit 352 When receiving the notification of the record ID from the NC response receiving unit 351, the packet determining unit 352 is registered in the “original packet” column from the record in the response reception determining table 304 corresponding to the notified record ID. Receive the packet. When the received packet is a local snoop packet, the packet determination unit 352 transmits the packet to the response transmission unit 353. When the received packet is a local snoop packet, as in the example shown in FIG. 10, an NC snoop packet is transmitted after a local snoop packet transmitted from a home node belonging to the same SB as a trigger. This is a case where an NC response packet corresponding to the NC snoop packet is received.
  • the packet determination unit 352 transmits the packet to the request transmission unit 354.
  • the received packet is a request packet, as in the example shown in FIG. 6, after the NC snoop packet is transmitted with a request packet transmitted from another SB node as a trigger, the transmitted NC snoop This is a case where an NC response packet corresponding to the packet is received.
  • the response transmission unit 353 When the response transmission unit 353 receives the local snoop packet from the packet determination unit 352, the response transmission unit 353 transmits an LS response packet corresponding to the received local snoop packet to the home node in the SB 110a.
  • the response transmission unit 353 sets the ID of the home node that manages the address in the local snoop packet received from the packet determination unit 352 in the “destination ID” field of the LS response packet. Further, the response transmission unit 353 sets the values of the “requester ID”, “transaction ID”, and “address” fields in the local snoop packet received from the packet determination unit 352 to the same field in the LS response packet. Further, the response transmission unit 353 sets a value for notifying the completion of the process specified in the “command” field of the local snoop packet received from the packet determination unit 352 in the “command” field in the LS response packet.
  • the response transmission unit 353 that has transmitted the LS response packet updates the record corresponding to the address set in the transmitted LS response packet among the records in the take-out management table 302. For example, when “Response_I” is set in the “command” field of the transmitted LS response packet, the response transmission unit 353 sets the cache state in the record to the I state, and sets the node ID of the takeout destination registered in the record. delete. When “Response_S” is set in the “command” field of the transmitted LS response packet, the response transmission unit 353 sets the cache state in the record to the S state. At the same time, the response transmission unit 353 adds a value obtained by converting the value of the “requester ID” field of the LS response packet from the local ID to the global ID as the node ID of the take-out destination.
  • the response transmission unit 353 that has transmitted the LS response packet deletes the record in which the local snoop packet received from the packet determination unit 352 is registered from the response reception determination table 304. For example, the response transmission unit 353 searches for a record to be deleted by comparing the “transaction ID” field in the local snoop packet with the “transaction ID” field in the original packet registered in each record.
  • the processing in the NC 131a regarding the local snoop packet registered in the response reception determination table 304 by the NC snoop generation unit 312 is completed.
  • the processing in the NC 131a regarding the NC snoop packet registered in the response reception determination table 304 by the NC snoop generation unit 312 is completed by the processing of the NC response reception unit 351, the packet determination unit 352, and the response transmission unit 353, the NC 131a
  • the information necessary for the process is securely held in the response reception determination table 304.
  • the request transmission unit 354 When the request transmission unit 354 receives the request packet from the packet determination unit 352, the request transmission unit 354 transmits the request packet to the home node in the SB 110a.
  • the request transmission unit 354 Convert ID to local ID.
  • the request transmission unit 354 converts the “requester ID” field in the request packet received from the packet determination unit 352 into an ID indicating the NC 131a, and the “destination ID” and “transaction ID” fields in the request packet. Both values are converted to local IDs.
  • the request transmission unit 354 transmits the request packet with the converted ID to the home node in the SB 110a. In addition, the request transmission unit 354 generates a new record in the take-out management table 302, and adds the value of the converted “transaction ID” field, the converted “requester ID”, and “transaction ID” to the generated record. Register the value of each field.
  • the home node that has received the request packet from the request transmission unit 354 transmits a local snoop packet to the NC 131a.
  • the snoop receiving unit 355 receives a local snoop packet from the home node.
  • the snoop receiving unit 355 selects a record in which the value of the “transaction ID” field in the received local snoop packet is registered as the ID after conversion from the records of the ID conversion table 303.
  • the snoop receiving unit 355 extracts a global transaction ID before conversion from the record selected from the ID conversion table 303.
  • the snoop receiving unit 355 selects a record in which the transaction ID extracted from the ID conversion table 303 is registered from the records in the response reception determination table 304.
  • the snoop receiving unit 355 Upon confirming that the response flag is “1” in the record selected from the response reception determination table 304, the snoop receiving unit 355 transmits an LS response packet to the home node and deletes the selected record. The snoop receiving unit 355 sets the values set in the “requester ID” and “transaction ID” fields of the received local snoop packet in the same field in the LS response packet to be transmitted.
  • the processing in the NC 131a related to the request packet registered in the response reception determination table 304 by the request reception processing unit 313 is completed. Until the processing in the NC 131a regarding the request packet registered in the response reception determination table 304 by the request reception processing unit 313 is completed by the processing of the NC response reception unit 351, the packet determination unit 352, and the response transmission unit 353, Information necessary for processing is securely held in the response reception determination table 304.
  • the data response transmission unit 316 receives the data response packet from the home node in the SB 110a, the value of the “transaction ID” field of the received data response packet is registered from the ID conversion table 303 as the converted transaction ID. Select a record. The record selected by the data response transmission unit 316 at this time is registered by the request transmission unit 354 of the NC response processing unit.
  • the data response transmission unit 316 rewrites the “destination ID” and “requester ID” fields of the received data response packet to the requester ID before conversion registered in the record selected from the ID conversion table 303. In addition, the data response transmission unit 316 rewrites the “transaction ID” field of the received data response packet with the transaction ID before conversion registered in the record selected from the ID conversion table 303. The data response transmission unit 316 transmits the rewritten data response packet to the NC 131b through the arbiter 334 and deletes the selected record from the ID conversion table 303.
  • the data response transmission unit 316 updates the record corresponding to the address set in the transmitted data response packet among the records in the take-out management table 302. For example, when “D-Response_E” is set in the “command” field of the transmitted data response packet, the data response transmission unit 316 sets the cache state in the record to state E. At the same time, the data response transmission unit 316 rewrites the take-out destination node ID registered in the record to the value of the “requester ID” field of the transmitted data response packet. When “D-Response_E” is set in the “command” field of the transmitted data response packet, the data response transmission unit 316 sets the cache state in the record to state S.
  • the data response transmission unit 316 adds the value of the “requester ID” field of the transmitted data response packet to the record as the take-out destination node ID.
  • the data response transmission unit 316 sets the cache state in the record to the I state.
  • the destination determination unit 325 When receiving the data response packet from the NC in another SB, the destination determination unit 325 refers to the “destination ID” field of the received data response packet. When the node in the SB 110a is set in the “destination ID” field, the destination determination unit 325 sets the values of the fields of “destination ID”, “requester ID”, and “transaction ID” in the received data response packet to the global ID. To local ID. The destination determination unit 325 transmits the rewritten data response packet to the node that is the requester in the SB 110a. On the other hand, when a node in the SB other than the SB 110 a is set in the “destination ID” field, the destination determination unit 325 transfers the received data response packet to the NC 131 b through the arbiter 334.
  • FIG. 21 is a flowchart showing an example of processing performed by an NC after transmitting an NC snoop packet to another NC.
  • FIG. 21 shows processing when the NC 131b of the SB 110b transmits an NC snoop packet triggered by the reception of a request packet from another NC, as in the example of FIG.
  • the NC response determination unit 324 of the NC 131b receives an NC response packet from another NC.
  • the NC response determination unit 324 determines that the “destination ID” field of the received NC response packet indicates a node in the SB 110 b, and transmits the received response packet to the NC response processing unit 315.
  • the NC response processing unit 315 of the NC 131b registers the result of the processing according to the NC snoop packet notified by the received NC response packet in the response reception determination table 304. Specifically, the NC response receiving unit 351 of the NC response processing unit 315 records a record in which the same transaction ID as the value set in the “transaction ID” field of the received NC response packet is registered, as a response reception determination table 304. Select from. The NC response receiving unit 351 records in the record that the processing requested by the NC snoop packet has been completed by rewriting the response flag in the selected record to “1”.
  • the NC response processing unit 315 of the NC 131b transmits a request packet to the home node in the SB 110b.
  • the packet determination unit 352 of the NC response processing unit 315 reads the packet registered in the “original packet” column from the record of the response reception determination table 304 whose response flag has been rewritten in step S72. Receive.
  • the packet determination unit 352 recognizes that the packet received from the record is a response packet, and transmits the received response packet to the request transmission unit 354.
  • the request transmission unit 354 converts the values of the “destination ID”, “requester ID”, and “transaction ID” fields in the received request packet from a global ID to a local ID.
  • the request packet converted to the local ID is transmitted to the home node in the SB 110a.
  • the request transmission unit 354 registers the IDs before and after conversion in the record of the ID conversion table 303.
  • the home node that has received the request packet from the NC 131b determines that the data stored in the address set in the received request packet is being taken out to another SB node based on the take-out management table 202 provided in the home node. Then, a local snoop packet is transmitted to the NC 131b.
  • the NC response processing unit 315 of the NC 131b receives a local snoop packet from the home node.
  • the NC response processing unit 315 of the NC 131b returns an LS response packet storing the processing result at the data take-out destination node to the home node in the NC 131b.
  • the snoop receiving unit 355 of the NC response processing unit 315 converts the value of the “transaction ID” field of the received LS response packet from the local ID to the global ID based on the ID conversion table 303, and then converts the value.
  • a record corresponding to the later transaction ID is selected from the response reception determination table 304.
  • the snoop reception unit 355 confirms that the response flag is “1” in the record selected from the response reception determination table 304, the snoop reception unit 355 transmits an LS response packet to the home node.
  • Step S77 The snoop reception unit 355 in the NC response processing unit 315 of the NC 131b deletes the record selected in Step S76 from the response reception determination table 304.
  • the home node that has received the LS response packet from the NC 131b determines that cache coherency has been maintained, and transmits a data response packet as a response to the request packet issued in step S73 to the NC 131b.
  • the data response transmission unit 316 of the NC 131b receives the data response packet transmitted from the home node. [Step S ⁇ b> 79] The data response transmission unit 316 converts the values of the “destination ID”, “requester ID”, and “transaction ID” fields of the received data response packet based on the ID conversion table 303, and then converts them. A data response packet is transmitted to the NC 131b.
  • Step S80 The data response transmission unit 316 deletes the record in the ID conversion table 303 referred to in step S79.
  • the NC connected to the home node can request execution of processing by one NC snoop packet to all NCs to which the data take-out destination node belongs. For this reason, when data is taken out to a plurality of nodes, the NC connected to the home node is connected between NCs as compared with the case where the snoop packet is individually transmitted to all nodes to which the data is taken out. It is possible to reduce the transmission load of the communication channel.
  • the completion notification of the processing requested by the NC snoop packet is also transmitted from all the data take-out destination nodes by one NC response packet to the NC to which the home node is connected. For this reason, when data is taken out to a plurality of nodes, communication for connecting between NCs is compared with a case in which a process completion notification is sent back from each take-out node using individual response packets. It is possible to reduce the data amount of the completion notification transmitted to the road.
  • control information for requesting the state control for the cache unit is transmitted between the SBs.
  • other types of control information are the same as those in the NC snoop packet.
  • control information for requesting an interrupt to all nodes in the information processing system 100 can be transmitted using a control packet having the same format as the NC snoop packet.
  • the transmission source NC may set all bits in the “broadcast flag” in the control packet to “1”. All NCs including the transmission source that received the control packet broadcast an interrupt request to all nodes connected to the NC. As a result, an interrupt can be requested to all nodes including the node connected to the transmission source NC.
  • the “response flag” in the control packet may be set to “0” in the initial state.
  • the NC snoop packet is used when sending a command to the data takeout destination node in the external SB.
  • a snoop packet having the same configuration as the local snoop packet may be used instead of the NC snoop packet.
  • a snoop packet transmitted between NCs having the same configuration as a local snoop packet is referred to as an “individual snoop packet”.
  • FIG. 22 is a flowchart showing processing for determining a snoop packet to be transmitted.
  • processing when the NC snoop processing unit 314 transmits a snoop packet will be described.
  • Step S91 The NC snoop processing unit 314 determines that an NC snoop packet should be transmitted to an NC in another SB.
  • the conditions for determining that the NC snoop packet should be transmitted are as described in FIG.
  • Step S92 The NC snoop processing unit 314 determines whether there is one data take-out destination node in another SB based on the take-out management table 302. If there are a plurality of data takeout destination nodes, the process of step S93 is executed. If there is one data takeout destination node, the process of step S94 is executed.
  • the NC snoop processing unit 314 transmits an NC snoop packet.
  • the NC snoop processing unit 314 transmits an individual snoop packet in which the ID of the data take-out destination node is set in the “destination node” field.
  • steps S92 to S94 may be executed by the NC snoop generation unit 312 when the NC snoop generation unit 312 transmits an NC snoop packet.
  • the NC connected to the node corresponding to the “destination ID” field of the individual snoop packet transmits a local snoop packet to the node indicated by the “destination ID” field.
  • the NC converts the values of the “requester ID” and “transaction ID” fields in the received individual snoop packet from the global ID to the local ID, and converts the “destination ID” field to indicate the NC.
  • the converted individual snoop packet is transmitted as a local snoop packet.
  • the NC registers the local ID after conversion and the global ID before conversion in the take-out management table 302.
  • the node that has received the local snoop packet executes the process indicated in the “command” field, and then transmits the LS response packet in which the value indicating that the process is completed is set in the “command” field to the NC connected to itself.
  • the NC that has received the LS response packet converts the values of the “requester ID” and “transaction ID” fields of the LS response packet from the local ID to the global ID based on the take-out management table 302, and also sets the “destination ID”.
  • the field value is converted into an ID indicating the home node.
  • the NC transmits the LS response packet whose ID has been converted to another NC as an individual response packet.
  • the NC connected to the home node that has transmitted the individual snoop packet receives the individual response packet and receives a process completion notification.
  • the data amount of the individual snoop packet is smaller than that of the NC snoop packet by the amount not including the “broadcast flag” and the “response flag”. For this reason, when there is one data take-out destination node in another SB, the amount of data transmitted between the SBs can be further suppressed by transmitting the individual snoop packet instead of the NC snoop packet.
  • the amount of data of the individual response packet is smaller than that of the NC response packet because the “response field” is not included. For this reason, the amount of data transmitted between the SBs can be further suppressed by transmitting the individual response packet as a response to the individual snoop packet.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)

Abstract

 複数の情報処理部に対して制御情報を送信する際に通信路の伝送負荷を軽減する。 情報処理部(10a)の制御情報送信部(11a)は、制御情報(21)と、その送信先とする1つ以上の情報処理部を指定する宛先情報とを含む制御パケット(20)を送信する。情報処理部(10b)の制御情報受信部(12b)は、受信した制御パケット(20)において制御情報(21)の送信先として情報処理部(10b)が指定されている場合、制御パケット(20)から制御情報を取り込むとともに、情報処理部(10b)を制御情報(21)の送信先として指定しないように宛先情報を書き替えた制御パケット(20)を送信する一方、制御情報(21)の送信先として情報処理部(10b)が指定されていない場合、受信した制御パケット(20)をそのまま転送する。

Description

情報処理システムおよび情報送信方法
 本発明は、情報処理システムおよび情報送信方法に関する。
 複数のCPU(Central Processing Unit)を備えた情報処理システムのアーキテクチャの1つとして、cc-NUMA(Cache Coherent Non-Uniform Memory Access Model)がある。cc-NUMA方式の情報処理システムでは、共有メモリ空間の一部を構成する分散共有メモリとCPUとを含む情報処理部が、複数接続される。また、複数のCPUを備えた情報処理システムでは、各CPUが備えるキャッシュ部間のコヒーレンシ(データの整合性)を保つ機構が必要とされる。cc-NUMA方式の情報処理システムでは、ディレクトリと呼ばれる管理表を用いた機構が採用されることが多い。
 ディレクトリは、分散共有メモリ内のデータが他の情報処理部内のキャッシュ部にキャッシュされた場合に、キャッシュ先の情報処理部を示す情報を保持する。情報処理部は、自身に属する分散共有メモリ内のデータへのアクセス要求が送信されたとき、ディレクトリを参照する。情報処理部は、ディレクトリに基づき、アクセス要求の対象データが他の情報処理部にキャッシュされていると判定した場合に、「スヌープ(Snoop)」と呼ばれるリクエストを他の情報処理部に送信して、キャッシュコヒーレンシを保つような制御を行う。
 スヌープ要求は、少なくとも、アクセス要求の対象データをキャッシュするすべての情報処理部に対して送信される。また、それぞれキャッシュ部を備える複数のCPUが1つの情報処理部内に設けられた情報処理システムでは、スヌープ要求がCPUごとでなく情報処理部ごとに送信されるものがある。
特開2005-234854号公報 特開2009-245323号公報 特開平10-187645号公報
 上記のように、スヌープ要求は、少なくとも、アクセス要求の対象データを自身のキャッシュ部にキャッシュするすべての情報処理部に対して送信される。このため、対象データをキャッシュする情報処理部の数が増えるほど送信されるスヌープの数も多くなり、情報処理部間を接続する通信路の伝送負荷が大きくなるという問題があった。特に、情報処理部がリング状に接続されている場合には、複数の情報処理部のそれぞれを宛先とするスヌープが同一の通信路に伝送されることから、伝送負荷はより大きくなる。また、スヌープに限らず、他の種類の制御情報を複数の情報処理部に送信する際にも、送信先の情報処理部が多くなるほど通信路の伝送負荷は大きくなる。
 本発明はこのような課題に鑑みてなされたものであり、複数の情報処理部に対して制御情報を送信する際に通信路の伝送負荷を軽減できるようにした情報処理システムおよび情報送信方法を提供することを目的とする。
 上記目的を達成するために、複数の情報処理部がリング状通信路によって接続された情報処理システムが提供される。この情報処理システムに含まれる複数の情報処理部のそれぞれは、制御情報と、当該制御情報の送信先とする1つ以上の情報処理部をそれぞれ指定する宛先情報とを含む制御パケットを、リング状通信路に送信する制御情報送信部と、リング状通信路を介して受信した制御パケットに、制御情報の送信先として自身が属する情報処理部が指定されている場合には、受信した制御パケットから制御情報を取り込むとともに、自身が属する情報処理部を制御情報の送信先として指定しないように宛先情報を書き替えた制御パケットをリング状通信路に送信し、受信した制御パケットに制御情報の送信先として自身が属する情報処理部が指定されていない場合には、受信した制御パケットをリング状通信路に送信する制御情報受信部と、を有する。
 また、上記目的を達成するために、上記の情報処理システムと同様の処理を行う情報送信方法が提供される。
 上記の情報処理システムおよび情報送信方法によれば、複数の情報処理部に対して制御情報を送信する際にリング状通信路の伝送負荷を軽減できる。
 本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになる。
第1の実施の形態に係る情報処理システムの構成例を示す図である。 第2の実施の形態に係る情報処理システムの全体構成例を示す図である。 情報処理システムの内部において送受信されるパケットのフォーマットを示す図である。 ホーム判定テーブルに保持される情報の例を示す図である。 持ち出し管理テーブルに保持される情報の例を示す図である。 送信元のSBからのリクエストパケットの送信に応じて、送信先のSBからNCレスポンスパケットが送信される処理を示す図である。 NCスヌープパケットを受信したSB内の処理を示す図である。 NCレスポンスパケットが送信される際のSB内の処理を示す図である。 NCスヌープパケットおよびNCレスポンスパケットが伝送される様子を示す図である。 NCスヌープパケットが送信される別の処理例を示す図である。 ノードの構成例およびその動作を示す図である。 NCの構成例およびその動作を示す図である。 レスポンス受信判定テーブルに保持される情報の例を示す図である。 ID変換テーブルに保持される情報の例を示す図である。 レスポンス送信判定テーブルに保持される情報の例を示す図である。 NCスヌープ処理部によるNCスヌープパケット受信時の処理を示すフローチャートである。 NCスヌープ処理部によるレスポンスカウント処理を示すフローチャートである。 NCスヌープ処理部によるNCレスポンス受信処理を示すフローチャートである。 NCスヌープ処理部によるNCレスポンス送信処理を示すフローチャートである。 NCレスポンス処理部の構成例およびその動作を示す図である。 NCスヌープパケットを他のNCに送信した後のNCの処理例を示すフローチャートである。 送信するスヌープパケットを判定する処理を示すフローチャートである。
 以下、実施の形態について図面を参照して説明する。
 〔第1の実施の形態〕
 図1は、第1の実施の形態に係る情報処理システムの構成例を示す図である。
 図1に示す情報処理システム1は、複数の情報処理部を備え、これらの複数の情報処理部はリング状に接続されている。図1の情報処理システム1は、例として4つの情報処理部10a~10dを備え、情報処理部10a~10dの間では、情報処理部10a,10b,10c,10d,10a,・・・の順にデータが伝送されるものとする。
 情報処理部10aは、制御情報送信部11aと制御情報受信部12aとを備える。同様に、情報処理部10bは、制御情報送信部11bと制御情報受信部12bとを備え、情報処理部10cは、制御情報送信部11cと制御情報受信部12cとを備え、情報処理部10dは、制御情報送信部11dと制御情報受信部12dとを備える。ここで、制御情報送信部11a~11dはそれぞれ同様の処理を実行し、制御情報受信部12a~12dはそれぞれ同様の処理を実行する。そこで、ここでは代表して、情報処理部10aが備える制御情報送信部11aおよび制御情報受信部12aの各処理について説明する。
 制御情報送信部11aは、制御情報と、この制御情報の送信先とする情報処理部を指定する送信先情報とを含む制御パケットを、他の情報処理部に対して送信する。ここで、送信先情報には、制御情報の送信先とする情報処理部を複数指定することができる。なお、制御情報は、例えば、送信先の情報処理部に対して何らかの処理の実行を要求することを示す情報である。
 制御情報受信部12aは、他の情報処理部から送信された制御パケットを受信したとき、受信した制御パケットに格納された送信先情報を基に、次のような処理を行う。制御情報受信部12aは、受信した制御パケット内の送信先情報において自身が属する情報処理部(すなわち情報処理部10a)が指定されていない場合には、受信した制御パケットをそのまま他の情報処理部に転送する。一方、制御情報受信部12aは、受信した制御パケット内の送信先情報において自身が属する情報処理部が指定されている場合には、受信した制御パケットから制御情報を取り込む。制御情報の取り込み処理の例としては、受信した制御パケットに設定された制御情報を、情報処理部10a内の所定の回路に受け渡す処理がある。これとともに、制御情報受信部12aは、受信した制御パケット内の送信先情報を、自身が属する情報処理部を制御情報の送信先として指定しないように書き替え、送信先情報を書き替えた制御パケットを、他の情報処理部に転送する。
 ここで、例として、情報処理部10aの制御情報送信部11aから制御パケットが送信される場合の動作について説明する。情報処理部10aの制御情報送信部11aは、制御情報21と送信先情報22とを含む制御パケット20を、情報処理部10bに対して送信する。このとき、送信先情報22には、制御情報21の送信先として情報処理部10b,10dが指定されているものとする。図1において、送信先情報22内の「B」「D」は、送信先として情報処理部10b,10dをそれぞれ指定したことを示す。なお、送信先情報22において、制御情報21の送信先を指定する情報が格納される形態は、図1に示すような形態に限らない。
 情報処理部10bの制御情報受信部12bは、情報処理部10aから送信された制御パケット20を受信すると、受信した制御パケット20内の送信先情報22を参照する。送信先情報22には、送信先として情報処理部10bが指定されているので、制御情報受信部12bは、受信した制御パケット20から制御情報21を取り込む。なお、情報処理部10bは、取り込んだ制御情報21に応じた処理を実行する。
 また、制御情報受信部12bは、受信した制御パケット20内の送信先情報22を、情報処理部10bを送信先として指定しないように書き替える。図1の例では、制御情報受信部12bは、送信先情報22に格納されていた「B」を消去することにより送信先情報22を書き替える。制御情報受信部12bは、送信先情報22を書き替えた制御パケット20を、情報処理部10cに送信する。
 次に、情報処理部10cの制御情報受信部12cは、情報処理部10bから送信された制御パケット20を受信すると、受信した制御パケット20内の送信先情報22を参照する。送信先情報22には、送信先として情報処理部10cが指定されていないので、制御情報受信部12cは、受信した制御パケット20をそのまま情報処理部10dに送信する。
 次に、情報処理部10dの制御情報受信部12dは、情報処理部10cから送信された制御パケット20を受信すると、受信した制御パケット20内の送信先情報22を参照する。送信先情報22には、送信先として情報処理部10dが指定されているので、制御情報受信部12dは、受信した制御パケット20から制御情報21を取り込む。なお、情報処理部10dは、取り込んだ制御情報21に応じた処理を実行する。
 以上の処理によれば、1つの制御パケットを使用して、複数の情報処理部に対して制御情報が送信される。このため、複数の情報処理部のそれぞれに対して個別の制御パケットを用いて制御情報を送信する場合と比較して、通信路における伝送負荷を軽減できる。特に、制御情報の送信先とする情報処理部の数が多くなるほど、伝送負荷を軽減する効果が大きくなる。
 また、制御情報受信部12a~12dは、受信した制御パケットにおいて、制御情報の送信先として自身が属する情報処理部のみが指定されていた場合には、制御パケットを他の情報処理部に送信しないようにしてもよい。図1の例では、情報処理部10dの制御情報受信部12dが制御パケット20を受信したとき、制御パケット20内の送信先情報22には、送信先として情報処理部10dのみが指定された状態となる。この場合、制御情報受信部12dは、受信した制御パケット20から制御情報21を取り込んだ後、制御パケット20を情報処理部10aに送信しない。このように、制御情報受信部が制御パケットを受信したとき、受信した制御パケット内の送信先情報において自身が属する情報処理部のみが指定されていた場合には、それ以上制御パケットが転送されなくなるので、通信路の伝送負荷が軽減される。
 次に、各情報処理部が、キャッシュ部を備えるプロセッサコアと分散共有メモリとを有するように構成された情報処理システムの実施の形態について説明する。
 〔第2の実施の形態〕
 図2は、第2の実施の形態に係る情報処理システムの全体構成例を示す図である。
 図2に示す情報処理システム100は、複数のSB(System Board)110a~110dを備える。SB110a~110dは、例えば、ラック内のスロットにそれぞれ挿入され、ラックのバックボードを介してリング状に接続される。SB110a~110dは、それぞれ1つ以上のプロセッサコアを備えた情報処理部の一例であり、SB110a~110dのそれぞれが備えるプロセッサコアが並列に処理を実行することで、情報処理システム100は並列コンピュータとして動作する。なお、本実施の形態では4つのSB110a~110dを備えるが、SBの数はこれに限ったものではない。
 SB110aは、複数のノード121a~123a、ノードコントローラ(NC)131aおよびメモリ141a~144aを備える。ノード121a~123aはそれぞれCPUであり、ノード121a~123aのそれぞれには、プロセッサコアとキャッシュ部とを備えるコア部が1つ以上設けられている。
 ノード121a~123aのそれぞれの間と、ノード121a~123aとNC131aとの間は、例えばQPI(Quick Path Interconnect)規格のバスによって接続されている。NC131aは、自身が属するSB110a内の各ノード121a~123aと、他のSB内のNCとを接続する。メモリ141a,142a,143aは、ノード121a,122a,123aにそれぞれ接続され、メモリ144aはNC131aに接続されている。
 SB110b~110dも、SB110aと同様の構成を有する。すなわち、SB110b内のノード121b,122b,123b、NC131bおよびメモリ141b,142b,143b,144bは、SB110a内のノード121a,122a,123a、NC131aおよびメモリ141a,142a,143a,144aにそれぞれ対応する。また、SB110c内のノード121c,122c,123c、NC131cおよびメモリ141c,142c,143c,144cは、SB110a内ノード121a,122a,123a、NC131aおよびメモリ141a,142a,143a,144aにそれぞれ対応する。さらに、SB110d内のノード121d,122d,123d、NC131dおよびメモリ141d,142d,143d,144dは、SB110a内のノード121a,122a,123a、NC131aおよびメモリ141a,142a,143a,144aにそれぞれ対応する。
 なお、各SBに含まれるノードの数は、3つに限定されるものではない。
 NC131a~131dは、例えばファイバチャネルなどのインタフェースを通じて、リング状に接続されている。本実施の形態では、NC131a,131b,131c,131d,131a,・・・の順にデータが転送されるものとする。
 本実施の形態の情報処理システム100は、cc-NUMA方式のアーキテクチャを採用したものである。メモリ141a~144a,141b~144b、141c~144c、141d~144dは、情報処理システム100内の各ノードによって共有されるアドレス空間の一部が割り当てられた分散共有メモリである。メモリ141a~144a,141b~144b、141c~144c、141d~144dのそれぞれに対する制御および管理は、直結されたノードまたはNCが担う。メモリに対する制御および管理を行うノードを、そのメモリに対するホームノードと呼ぶ。例えば図2において、ノード121aはメモリ141aに対するホームノードである。
 ノード内のコア部は、他のノード(ホームノード)の管理下にあるメモリのアドレスにアクセスすることができる。ここで、アクセス元のコア部が属するノードは、後述するリクエストパケットの発行元となることから、「リクエスタ(Requester)」と呼ばれる。アクセス先のメモリアドレスを管理するホームノードが、リクエスタが属するSBとは別のSBにある場合には、リクエスタはNCを介して他のSB内のホームノードにアクセスする。また、リクエスタ内のコア部は、アクセスしたメモリのアドレスから読み出したデータをキャッシュすることができる。
 図3は、情報処理システムの内部において送受信されるパケットのフォーマットを示す図である。
 図3に示すリクエスト(Request)パケットは、ノード内のコア部が、他のノードに対して、他のノードの管理下にあるメモリのアドレスに対するアクセスを要求する際に、ノードから他のノードに送信されるパケットである。リクエストパケットは、パケット送信先のノードを示す「宛先ID」、アクセス元のノード(リクエスタ)を示す「リクエスタID」、リクエストパケットの発生ごとにユニークな番号が付与される「トランザクションID」、アクセス先のメモリアドレスを示す「アドレス」、および、アクセスの種類を示す「コマンド」の各フィールドを含む。また、リクエストパケットは、「コマンド」フィールドに設定される情報によっては「データ」フィールドを含む場合もある。
 次に、「コマンド」フィールドに設定される情報の例を説明する。「Read_S」は、アクセス先からデータを読み出し、読み出したアクセス先とリクエスタ側との共有型データを、リクエスタ側においてS(Shared)ステートでキャッシュすることを示す。「Read_E」は、アクセス先からデータを読み出し、読み出し後にリクエスタ側において変更した排他型データを、リクエスタ側においてE(Exclusive)ステートでキャッシュすることを示す。「Writeback」は、リクエスタ側でキャッシュしているデータをアクセス先のメモリに書き戻すことを示す。「コマンド」フィールドに「Writeback」が設定された場合、リクエストパケットには、書き込みデータが格納された「データ」も設定される。
 データレスポンス(DATA-Response)パケットは、リクエストパケットに応答して送信されるパケットである。データレスポンスパケットは、「宛先ID」、「リクエスタID」、「トランザクションID」、「アドレス」および「コマンド」の各フィールドを含む。また、対応するリクエストパケットの「コマンド」フィールドに、「Read_S」または「Read_E」が設定されていた場合、データレスポンスパケットは、アクセス先のアドレスから読み出されたデータが設定される「データ」フィールドをさらに含む。
 データレスポンスパケットにおける「リクエスタID」、「トランザクションID」および「アドレス」の各フィールドには、対応するリクエストパケット内の「リクエスタID」、「トランザクションID」および「アドレス」の各フィールドとそれぞれ同じ値が設定される。データレスポンスパケットの「コマンド」フィールドには、例えば、対応するリクエストパケットの「コマンド」フィールドに「Read_S」が設定されていた場合、読み出したデータをSステートでキャッシュ部に登録することを指示する「D-Response_S」が設定される。また、対応するリクエストパケットの「コマンド」フィールドに「Read_E」が設定されていた場合、読み出したデータをEステートでキャッシュ部に登録することを指示する「D-Response_E」が設定される。また、対応するリクエストパケットの「コマンド」フィールドに「Writeback」が設定されていた場合、データの書き戻しが完了したことを通知する「Complete」が設定される。
 スヌープパケットは、リクエストパケットによるアクセス先のアドレスのデータが、ホームノード以外の他のノードに持ち出されてキャッシュされていた場合に、その持ち出し先のノードに対して送信される。スヌープパケットは、データの持ち出し先のキャッシュ部に対してキャッシュコヒーレンスを保つスヌープ処理を実行させる場合に、スヌープ処理の制御情報を送信するために使用される。本実施の形態では、スヌープパケットとして、同一SB内のノード間またはノードとNCとの間で送信されるローカルスヌープ(Local-Snoop)パケットと、ホームノードが属するNCから他のSBのNCへ送信されるNCスヌープ(NC-Snoop)パケットとが使用される。
 ローカルスヌープパケットは、「宛先ID」、「リクエスタID」、「トランザクションID」、「アドレス」および「コマンド」の各フィールドを含む。ローカルスヌープパケットにおける「アドレス」フィールドには、対応するリクエストパケット内の「アドレス」フィールドと同じ値が設定される。ローカルスヌープパケットの「コマンド」フィールドには、例えば、対応するリクエストパケットの「コマンド」フィールドに「Read_S」が設定されていた場合、持ち出し先のキャッシュデータをSステートにすることを指示する「Snoop_S」が設定される。また、対応するリクエストパケットの「コマンド」フィールドに「Read_E」が設定されていた場合、持ち出し先のキャッシュデータを無効であることを示すI(Invalid)ステートにすることを指示する「Snoop_I」が設定される。
 LSレスポンス(LS-Response)パケットは、スヌープリクエストを行うローカルスヌープパケットに応答して、ローカルスヌープパケットによって指定されたスヌープ処理の結果が格納されるパケットである。LSレスポンスパケットは、「宛先ID」、「リクエスタID」、「トランザクションID」、「アドレス」および「コマンド」の各フィールドを含む。LSレスポンスパケットにおける「リクエスタID」、「トランザクションID」および「アドレス」の各フィールドには、対応するローカルスヌープパケット内の「リクエスタID」、「トランザクションID」および「アドレス」の各フィールドとそれぞれ同じ値が設定される。
 LSレスポンスパケットの「コマンド」には、例えば、対応するローカルスヌープパケットの「コマンド」フィールドに「Snoop_S」が設定されていた場合、「アドレス」フィールドに設定されたアドレスに対応するキャッシュデータを、ローカルスヌープパケットを送信したノードとLSレスポンスパケットを応答したノードとの共有型データにした旨のSステートにしたことを通知する「Response_S」が設定される。また、対応するローカルスヌープパケットの「コマンド」において「Snoop_I」が設定されていた場合、「アドレス」に対応するキャッシュデータを、無効化した旨のIステートにしたことを通知する「Response_I」が設定される。
 NCスヌープパケットは、リクエストパケットによるアクセス先のアドレスのデータをキャッシュする1つ以上のノードに対して、キャッシュコヒーレンスを保つような処理を実行させる制御情報を、1つのパケットによって送信するものである。このNCスヌープパケットは、「宛先ID」、「リクエスタID」、「トランザクションID」、「アドレス」、「コマンド」に加え、「ブロードキャストフラグ」および「レスポンスフラグ」の各フィールドを含む。
 NCスヌープパケットの「アドレス」フィールドには、対応するリクエストパケット内の「アドレス」フィールドと同じ値が設定される。NCスヌープパケットでは、「宛先ID」フィールドを使用しないため、特定のノードを指定しないような値(例えば、ブロードキャストを示す値)が設定される。なお、後述する「ブロードキャストフラグ」フィールドを用いて宛先を設定するため、NCスヌープパケットには「宛先ID」フィールドが含まれなくてもよい。
 NCスヌープパケットの「コマンド」フィールドには、データの持ち出し先のノードのキャッシュ部に対して実行させる処理の種別が設定される。例えば、対応するリクエストパケットの「コマンド」フィールドに「Read_S」が設定されていた場合、NCスヌープパケットの「コマンド」フィールドには、持ち出し先のキャッシュデータを、NCスヌープパケットを送信したノードとデータの持ち出し先のノードとの共有型データにする旨のSステートにすることを指示する「NC-Snoop_S」が設定される。また、対応するリクエストパケットの「コマンド」フィールドにおいて「Read_E」が設定されていた場合、持ち出し先のキャッシュデータを無効化した旨のIステートにすることを指示する「NC-Snoop_I」が設定される。
 「ブロードキャストフラグ」フィールドには、「宛先ID」フィールドの代わりに、パケットの宛先とする1つ以上のNCが設定される。「ブロードキャストフラグ」フィールドには、情報処理システム100が備えるNC131a~131dのそれぞれに対応する複数のビットが設けられている。「ブロードキャストフラグ」フィールドのいずれかのビットに「1」が設定された場合、そのビットに対応するNCに対して、当該NCが属するSB内のノードにローカルスヌープパケットをブロードキャストすることが指示される。
 「レスポンスフラグ」フィールドは、NCスヌープパケットを受信したノードのうちの1つに、受信したNCスヌープパケットに対応するNCレスポンスパケットを送信するように指示することを目的として設けられる。「レスポンスフラグ」フィールドは、1ビットの領域を備え、NCスヌープパケットが最初のNCから送信された初期状態では「1」とされる。その後、NCスヌープパケットが「ブロードキャストフラグ」フィールドに指定されたノードに最初に受信されると、「レスポンスフラグ」フィールドは「0」に変更される。従って、「レスポンスフラグ」フィールドが「0」であれば、「ブロードキャストフラグ」フィールドによって宛先として指定されたNCの少なくとも1つにおいてNCスヌープパケットが受信済みであることを示す。
 NCレスポンス(NC-Response)パケットは、NCスヌープパケットに応答して、NCスヌープパケットの「コマンド」フィールドに指定された処理の結果が格納されるパケットである。NCレスポンスパケットは、対応するNCスヌープパケットのブロードキャストフラグで指定された1つ以上のNCからの処理結果を、1つの応答パケットによってNCスヌープパケットの送信元のNCに通知するものである。このNCレスポンスパケットは、「宛先ID」、「リクエスタID」、「トランザクションID」、「アドレス」、「コマンド」に加え、「レスポンスフィールド」の各フィールドを含む。
 NCレスポンスパケットの「宛先ID」フィールドには、対応するNCスヌープパケットに設定されたアドレスについてのホームノードを示すIDが格納される。NCレスポンスパケットの「リクエスタID」、「トランザクションID」および「アドレス」の各フィールドには、対応するNCスヌープパケット内の「リクエスタID」、「トランザクションID」および「アドレス」の各フィールドとそれぞれ同じ値が設定される。
 NCレスポンスパケットの「コマンド」フィールドには、例えば、対応するNCスヌープパケットの「コマンド」フィールドに「NC-Snoop_S」が設定されていた場合、「アドレス」に対応するキャッシュデータを、NCスヌープパケットを送信したノードとデータの持ち出し先のノードとの共有型データにする旨のSステートにしたことを通知する「NC-Response_S」が設定される。また、対応するNCスヌープパケットの「コマンド」フィールドに「NC-Snoop_I」が設定されていた場合、「アドレス」に対応するキャッシュデータを、無効化した旨のIステートにしたことを通知する「NC-Response_I」が設定される。
 NCレスポンスパケットの「レスポンスフィールド」には、情報処理システム100が備えるNC131a~131dのそれぞれに対応するビットが設けられている。「ブロードキャストフラグ」のビットに「1」が設定された場合、そのビットに対応するNCが属するSB内のキャッシュ部が、「コマンド」で指定された処理を完了したことを示す。例えば、「コマンド」で「NC-Response_I」が設定され、「レスポンスフィールド」の第3ビットが「1」とされていた場合、第3ビットに対応するNC131dが属するSB110dにおいて、「アドレス」に対応するキャッシュデータが、無効化された旨のIステートとされたことを示す。
 図4は、ホーム判定テーブルに保持される情報の例を示す図である。
 SB内のノードはそれぞれ、ホーム判定テーブル201を備える。各ノードが備えるホーム判定テーブル201は、共有メモリ空間のアドレスとホームノードのIDとを対応付けたものである。各ノードが備えるホーム判定テーブル201に登録されるノードのIDは、各SB内でローカルに使用されるIDである。そして、各ノードが備えるホーム判定テーブル201において、各ノードが属するSB内のメモリ以外のアドレスに、各ノードが属するSB内のNCのIDが対応付けられる。
 図4(A)では、ノード121a,122a,123aがそれぞれ備えるホーム判定テーブル201の例を示している。図4(A)のホーム判定テーブル201では、例えば、アドレス「0」からアドレス「aaaa-1」に対してノード121aが対応付けられている。この場合、アドレス「0」からアドレス「aaaa-1」は、ノード121aに接続されたメモリ141aに割り当てられていることを意味する。また、ノード121aが備えるホーム判定テーブル201では、アドレス「cccc」からアドレス「zzzz-1」に対してNC131aが対応付けられている。この場合、アドレス「cccc」からアドレス「zzzz-1」は、他のSBに接続されたメモリに割り当てられていることを意味する。
 また、情報処理システム100内のNC131a~131dは、それぞれホーム判定テーブル301を備える。NCが備えるホーム判定テーブル301は、他のSB内のメモリに割り当てられたアドレスと、他のSB内のホームノードのIDとを対応付けたものである。NCが備えるホーム判定テーブル301に登録されるノードのIDは、情報処理システム100の全SBでグローバルに使用されるIDである。すなわち、ホーム判定テーブル301に登録されるノードのIDは、情報処理システム100の全SBでユニークなものとなる。
 図4(B)では、NC131aが備えるホーム判定テーブル301の例を示している。NC131aが備えるホーム判定テーブル301では、例えば、アドレス「cccc」からアドレス「dddd-1」に対してノード121bが対応付けられている。この場合、アドレス「cccc」からアドレス「dddd-1」には、SB110b内のノード121bに割り当てられていることを意味する。
 図5は、持ち出し管理テーブルに保持される情報の例を示す図である。
 SB内のノードはそれぞれ、持ち出し管理テーブル202を備える。各ノードが備える持ち出し管理テーブル202には、各ノードの管理下にあるメモリに格納されたデータが他のノードに持ち出されてキャッシュされている場合に、そのデータが格納されたメモリのアドレスと、データのキャッシュステートと、持ち出し先のノードIDとが対応付けられて登録される。ノードが備える持ち出し管理テーブル202に登録されるノードのIDは、各SB内でローカルに使用されるIDである。そして、持ち出し先のノードが他のSB内のノードである場合には、持ち出し先のノードIDとして、同じSB内のNCを示すIDが登録される。
 図5(A)では、ノード123bが備える持ち出し管理テーブル202の例を示している。ノード123bが備える持ち出し管理テーブル202では、例えば、ノード123bの管理下にあるメモリ143bに割り当てられたアドレス「eeee」に対して、当該アドレス「eeee」に対するデータが排他型データである旨を表すEステートとノード121bのIDとが対応付けられている。この場合、アドレス「eeee」の位置のデータが、Eステートでノード121bに持ち出されていることを意味する。
 また、情報処理システム100内のNC131a~131dは、それぞれ持ち出し管理テーブル302を備えている。NCが備える持ち出し管理テーブル302には、NCが属するSB内のメモリに格納されたデータが他のSB内のノードに持ち出されてキャッシュされている場合に、そのデータが格納されたメモリのアドレスと、データのキャッシュステートと、持ち出し先のノードIDとがそれぞれ対応付けられて登録される。NCが備える持ち出し管理テーブル302に登録されるノードのIDは、情報処理システム100の全SBでグローバルに使用されるIDである。
 図5(B)では、NC131bが備える持ち出し管理テーブル302の例を示している。NC131bが備える持ち出し管理テーブル302では、例えば、SB110b内のメモリ141b~143bのいずれかに割り当てられたアドレス「cccc」に対して、Eステートとノード121cのIDとが対応付けられている。この場合、アドレス「cccc」の位置のデータが、Eステートでノード121cに持ち出されていることを意味する。
 次に、情報処理システム100におけるメモリへのデータアクセス処理の一例を示し、図3に示したパケットの送受信処理について説明する。次の図6~図9では一例として、SB110a内のノード121aから、SB110b内のノード121bに接続されたメモリ143bに対してアクセスした場合の処理について説明する。
 図6は、送信元のSBからのリクエストパケットの送信に応じて、送信先のSBからNCレスポンスパケットが送信される処理を示す図である。
 図6の例では、ノード121a内のコア部が、SB110b内のノード123bに接続されたメモリ143bに割り当てられた、読み出し要求先のアドレスから、Eステートでのデータ読み出しを要求したものとする。以下、読み出し要求先のアドレスの位置に記憶されたデータを、「データ#1」と呼ぶ。
 ノード121aは、ノード121aが備えるホーム判定テーブル201を参照し、読み出し要求先のアドレスにNC131aが対応付けられていることを認識する。この場合、読み出し要求先のアドレスは他のSBに接続されたメモリに割り当てられていることから、ノード121aは、NC131aに対してリクエストパケットを送信する。リクエストパケットにおける「宛先ID」および「リクエスタID」の各フィールドには、それぞれNC131a、ノード121aを示すように設定され、「コマンド」フィールドには「Read_E」が設定される。
 リクエストパケットを受信したNC131aは、受信したリクエストパケットに設定されたデータ#1のアドレスで、NC131aが備えるホーム判定テーブル301を検索する。NC131aは、ホーム判定テーブル301から、データ#1のアドレスに対応付けられたノード123bのIDを抽出し、「宛先ID」フィールドをホーム判定テーブル301から抽出したホームノード(ノード123b)のIDに書き替えたリクエストパケットを、隣接する転送先であるSB110bのNC131bに対して送信する。
 SB110aのNC131aから送信されたリクエストパケットを受信したNC131bは、「宛先ID」フィールドから、受信したリクエストパケットが自身に接続されたノード宛であると判定する。NC131bは、受信したリクエストパケットに設定されたデータ#1のアドレスで、NC131bが備える持ち出し管理テーブル302を検索する。
 ここで、リクエストパケットに設定されたアドレスに対応する持ち出し先ノードのIDが持ち出し管理テーブル302から抽出されなかった場合には、NC131bは、リクエストパケットを「宛先ID」が示すノード123bに送信する。この場合、データ#1がノード121b,122bにも持ち出されていなければ、ノード123bは、要求されたデータ#1をメモリ143bからEステートで読み出し、読み出したデータ#1を格納したデータレスポンスパケットをNC131bに送信する。データレスポンスパケットは、NC131bからNC131c,131dを経由してNC131aに受信され、リクエスタであるNC131a内のノード121aに転送されて、一連の処理が終了する。
 一方、NC131aからのリクエストパケットに設定されたアドレスに対応する持ち出し先ノードのIDが持ち出し管理テーブル302から抽出された場合、NC131bは、データ#1のキャッシュコヒーレンシを保つように制御するコマンドを、すべての持ち出し先に対して送信する。ここで、本実施の形態では、データ#1の持ち出し先のノードが属するすべてのNCに対してそれぞれ個別にスヌープパケットを送信する代わりに、1つのNCスヌープパケットを送信することで、NC間を接続する通信路の伝送負荷を軽減する。
 前述のように、NCスヌープパケットには、NC131a~131dがそれぞれ割り当てられたビットを備えるブロードキャストフラグが設定されている。ここで、NC131bが備える持ち出し管理テーブル302に登録されたデータ#1の持ち出し先が、SB110c内のノード121c,122cおよびSB110d内のノード121d,122dであったものとする。ブロードキャストフラグの各ビットが先頭からNC131a,131b,131c,131dを示すものとすると、NC131bは、ブロードキャストフラグにおいてNC131c,131dにそれぞれ対応する第3ビットおよび第4ビットを「1」とし、他のビットを「0」としたNCスヌープパケットを、隣接する転送先であるNC131cに対して送信する。
 また、元のリクエストパケットの「コマンド」フィールドでは「Read_E」が設定されていたことから、送信されるNCスヌープパケットの「コマンド」フィールドには、データ#1のキャッシュデータをIステートにするように指示する「NC-Snoop_I」が設定される。
 なお、NC131aからのリクエストパケットに設定されたアドレスに対応する持ち出し先ノードのIDが、持ち出し管理テーブル302から抽出された場合であっても、リクエストパケット内の「コマンド」フィールドの設定値と、持ち出されたデータのキャッシュステートとの組み合わせによっては、NCスヌープパケットが送信されずに、リクエストパケットがホームノードに送信される場合がある。
 図7は、NCスヌープパケットを受信したSB内の処理を示す図である。
 NC131bからのNCスヌープパケットを受信したNC131cは、受信したNCスヌープパケット内のブロードキャストフラグを参照する。ブロードキャストフラグにおいては、NC131cに対応するビットが「1」とされていることから、NC131cは、受信したNCスヌープパケットの内容に基づくローカルスヌープパケットを生成し、SB110c内のノード121c~123cの全てにブロードキャストする。ブロードキャストされるローカルスヌープパケットの「コマンド」フィールドには、NCスヌープパケットの「コマンド」フィールドに基づき、「Snoop_I」が設定される。
 また、NC131cは、ブロードキャストフラグにおけるNC131cに対応するビットを「0」に書き替えたNCスヌープパケットを、隣接する転送先であるNC131dに送信する。NCスヌープパケットを受信したNC131dは、受信したNCスヌープパケット内のブロードキャストフラグを参照する。ブロードキャストフラグにおいては、NC131dに対応するビットが「1」とされていることから、NC131dは、受信したNCスヌープパケットの内容に基づくローカルスヌープパケットを生成し、SB110d内のノード121d~123dの全てにブロードキャストする。ブロードキャストされるローカルスヌープパケットの「コマンド」フィールドには、NCスヌープパケットの「コマンド」フィールドに基づき、「Snoop_I」が設定される。
 また、NC131dは、受信したNCスヌープパケットのうち、ブロードキャストフラグにおけるNC131dに対応するビットを「0」に書き替える。このとき、ブロードキャストフラグの全ビットが「0」となることから、NC131dは、NCスヌープパケットが必要なすべてのNCに受信されたと判定して、NCスヌープパケットを隣接する転送先であるNC131aに送信しない。
 図8は、NCレスポンスパケットが送信される際のSB内の処理を示す図である。
 SB110cにおいて、NC131cからノード121c~123cに対してローカルスヌープパケットがブロードキャストされると、ローカルスヌープパケットを受信したノード121c~123cは、それぞれ要求された処理に対する応答を行う。図8の例では、ノード121c,122cのそれぞれにデータ#1がキャッシュされている。ノード121c,122cの各キャッシュ部は、受信したローカルスヌープパケットの「アドレス」フィールドに対応するキャッシュデータをIステートとし、「コマンド」フィールドに処理結果として「Response_I」を設定したLS-レスポンスパケットをNC131cに送信する。また、ノード123cは、ローカルスヌープパケットの「アドレス」フィールドに対応するキャッシュデータを元々保持していないことから、キャッシュ部を特に制御することなく、「コマンド」フィールドに「NC-Response_I」を設定したLSレスポンスパケットをNC131cに送信する。
 NCスヌープパケットに対する応答であるNCレスポンスパケットは、ブロードキャストフラグにおいて指定されたNCのうち、最初にNCスヌープパケットを受信したNC(図8ではNC131c)によって生成され、送信される。NC131cは、SB110c内のすべてのノード121c~123cからLSレスポンスパケットを受信すると、レスポンスフィールドにおけるNC131cに対応するビットに「1」を設定したNCレスポンスパケットを、隣接する転送先であるNC131dに送信する。
 なお、NCレスポンスパケットの「リクエスタID」および「トランザクションID」の各フィールドには、NCスヌープパケットの「リクエスタID」および「トランザクションID」の各フィールドと同じ値がそれぞれ設定される。また、NCレスポンスパケットの「コマンド」フィールドには「NC-Response_I」が設定される。
 一方、SB110dにおいても、NC131dからノード121d~123dに対してローカルスヌープパケットがブロードキャストされると、ローカルスヌープパケットを受信したノード121d~123dは、要求された処理に対する応答を行う。NC131dは、SB110d内のすべてのノード121d~123dからLSレスポンスパケットを受信し、かつ、NCスヌープパケットと同じ「リクエスタID」および「トランザクションID」の各フィールド値が設定されたNCレスポンスパケットを受信すると、次の処理を行う。NC131dは、受信したNCレスポンスパケットのうち、レスポンスフィールドにおけるNC131dに対応するビットを「1」に書き替え、書き替え後のNCレスポンスパケットを、隣接する転送先であるNC131aに送信する。
 NC131aは、同じ「リクエスタID」および「トランザクションID」の各フィールド値が設定されたNCスヌープパケットに基づく処理を過去に行っていないことから、受信したNCレスポンスパケットをそのままNC131bに転送する。これにより、NC131bは、データ#1のすべての持ち出し先のノードから、NCスヌープパケットによって要求した処理についての完了通知を受信する。
 なお、図示しないが、NCレスポンスパケットを受信したNC131bは、データ#1のホームノードであるノード123bに対して、持ち出されたデータに対するリクエストパケットを送信する。ノード123bは、データ#1が他のSBに持ち出されていると判定して、NC131bに対してローカルスヌープパケットを送信する。NC131bは、ローカルスヌープパケットの応答として、NCスヌープパケットに格納された処理結果(ここでは、キャッシュデータをIステートとしたことを通知するコマンドである「Response_I」)を設定したLSレスポンスパケットを、ノード123bに送信する。
 LSレスポンスパケットを受信したノード123bは、キャッシュコヒーレンシが保たれた状態であると判定し、データ#1をEステートでメモリ143bから読み出し、読み出したデータ#1を格納したデータレスポンスパケットをNC131bに送信する。データレスポンスパケットは、NC131bからNC131c,131dを経由してNC131aに受信され、リクエスタであるNC131a内のノード121aに転送されて、一連の処理が終了する。
 ここで、図9は、NCスヌープパケットおよびNCレスポンスパケットが伝送される様子を示す図である。
 まず、NCスヌープパケットの伝送について説明する。図7で説明したように、NC131bは、NCスヌープパケットを送信する際に、NC131c,131dにそれぞれ対応するブロードキャストフラグの第3ビットおよび第4ビットを「1」とし、他のビットを「0」とする。また、NC131bは、NCスヌープパケット内のレスポンスフラグを初期値「1」とする。
 NC131bからのNCスヌープパケットを受信したNC131cは、ブロードキャストフラグにおける自身を指示するビットが「0」である場合、NCスヌープパケットをそのまま隣接する転送先に送信する。しかしながら、図9の例では、ブロードキャストフラグにおけるNC131cを指示するビットが「1」であることから、NC131cは、NCスヌープパケットの内容に基づき、自身が属するSB110c内のノードにローカルスヌープパケットをブロードキャストする。
 また、NC131cは、ブロードキャストフラグにおける自身を指示するビットを「0」に書き替える。さらに、NC131cは、初期値「1」とされたレスポンスフラグを「0」に書き替える。ここで、書き替え後のブロードキャストフラグに「1」が存在することから、NC131cは、ブロードキャストフラグおよびレスポンスフラグを書き替えたNCスヌープパケットを、隣接するNC131dに送信する。
 NC131cからのNCスヌープパケットを受信したNC131dは、ブロードキャストフラグにおける自身を指示するビットが「1」であることから、NCスヌープパケットの内容に基づき、自身が属するSB110d内のノードにローカルスヌープパケットをブロードキャストする。また、NC131cは、ブロードキャストフラグにおける自身を指示するビットを「0」に書き替える。ここで、書き替え後のブロードキャストフラグの全ビットが「0」になることから、NC131dは、NCスヌープパケットをそれ以上送信しない。
 以上のNCスヌープパケットを用いることにより、データの持ち出し先のノードが属するすべてのNCに対して、「コマンド」フィールドで指定される処理を1つのパケットによって要求することができるようになる。このため、データが複数のノードに持ち出されたときに、ホームノードに接続したNCがデータの持ち出し先のすべてのノードに対して個別にスヌープパケットを送信する場合と比較して、NC間を接続する通信路の伝送負荷を軽減することができる。
 次に、NCレスポンスパケットの伝送について説明する。NCスヌープパケットのブロードキャストフラグによって指定されたNCは、NCスヌープパケットのレスポンスフラグを参照する。レスポンスフラグが「1」である場合、NCは、受信したNCスヌープパケットに対応するNCレスポンスパケットを生成して送信する。
 図9の例では、NC131cがNCスヌープパケットを受信したとき、受信したNCスヌープパケットのレスポンスフラグは「1」となっている。このため、NC131cは、受信したNCスヌープパケットに対応するNCレスポンスパケットを生成する。NC131cは、SB110b内のすべてのノードからローカルスヌープパケットを受信し、SB110b内でキャッシュされたデータ#1がすべて無効化されたことを確認すると、NCレスポンスパケットをNC131dに送信する。このとき、送信されるNCレスポンスパケットにおいては、「コマンド」フィールドに対してキャッシュデータの無効化が完了したことを示す「NC-Response_I」が設定され、「レスポンスフィールド」におけるNC131bを指示するビットが「1」とされる。
 NC131dは、NC131cからのNCレスポンスパケットを受信し、かつ、SB110c内のすべてのノードからローカルスヌープパケットを受信して、SB110c内でキャッシュされたデータ#1がすべて無効化されたことを確認すると、NCレスポンスパケットをNC131aに転送する。このとき、転送されるNCレスポンスパケットにおいては、「レスポンスフィールド」におけるNC131cを指示するビットが「1」とされる。
 NC131aは、NC131dからのNCレスポンスパケットを受信する。しかし、NC131aは、受信したNCレスポンスパケットに設定されたものと同じ「リクエスタID」および「トランザクションID」の各フィールド値が設定されたNCスヌープパケットを過去に受信していない。この場合、NC131aは、受信したNCレスポンスパケットをそのままNC131bに転送する。
 NC131bは、NC131aからのNCレスポンスパケットを受信する。NC131bは、受信したNCレスポンスパケットの「コマンド」フィールドに「Response_I」が設定され、レスポンスフィールドにおけるNC131b,131cに対応するビットが「1」とされていることを確認する。NC131bは、確認したこれらの情報から、SB110bおよびSB110cの内部にそれぞれキャッシュされたデータが無効化されたことを認識する。
 以上のNCレスポンスパケットを用いることにより、NCスヌープパケットの送信元のNCは、データの持ち出し先とされたすべてのノードにおいてNCスヌープパケットにより指示した処理が完了したことを、1つのパケットによって認識できるようになる。このため、データが複数のノードに持ち出された場合に、各ノードに対して処理を要求するスヌープパケットだけでなく、スヌープパケットに対するレスポンスパケットのデータ量も抑制することができる。従って、NC間を接続する通信路の伝送負荷を一層軽減することができる。
 図10は、NCスヌープパケットが送信される別の処理例を示す図である。
 NCは、図6の例のように他のNCからのリクエストパケットを受信した場合の他、図10に示すように、同じSB内のノードからローカルスヌープパケットを受信した場合にも、NCスヌープパケットを送信する。
 図10では、ノード122b内のコア部が、ノード123bに接続されたメモリ143bに割り当てられたアドレスからのEステートでのデータ読み出しを要求したものとする。ノード123bは、自身が備えるホーム判定テーブル(図示せず)に基づいて、読み出し要求先のアドレスに対応するホームノードがノード123bであることを認識する。ノード123bは、ホームノードであるノード123bに対してリクエストパケットを送信する。リクエストパケットの「コマンド」フィールドには「Read_E」が設定される。
 リクエストパケットを受信したノード123bは、受信したリクエストパケットに設定されたアドレスで、ノード123bが備える持ち出し管理テーブル202を検索する。ここで、リクエストパケットに設定されたアドレスに対応する持ち出し先ノードのIDが持ち出し管理テーブル202から抽出されなかった場合には、ノード123bは、要求されたデータ#1をメモリ143bからEステートで読み出し、読み出したデータ#1を格納したデータレスポンスパケットをノード122bに送信する。
 一方、リクエストパケットに設定されたアドレスに対応する持ち出し先ノードのIDが持ち出し管理テーブル202から抽出された場合、ノード123bは、「コマンド」フィールドに「Snoop_I」を設定したローカルスヌープパケットをNC131bに送信する。ここで、持ち出し先ノードがSB110c,110dにそれぞれ存在するものとすると、NC131bは、ブロードキャストフラグにおけるSB110c、110dにそれぞれ対応するビットを「1」としたNCスヌープパケットを送信する。以後、NC131bがNCレスポンスパケットを受信するまでの処理は、図7,図8で説明した処理と同様である。NCスヌープパケットが送信されることで、データ#1のキャッシュコヒーレンシを保つように制御するコマンドがすべての持ち出し先ノードに対して送信される。
 なお、ノード122bからのリクエストパケットの設定されたアドレスに対応する持ち出し先ノードのIDが持ち出し管理テーブル202から抽出された場合であっても、リクエストパケット内の「コマンド」フィールドの設定値と、持ち出されたデータのキャッシュステートとの組み合わせによっては、ノード123bからローカルスヌープパケットが送信されない場合がある。
 図示しないが、NCレスポンスパケットを受信したNC131bは、ノード123bに対してローカルレスポンスパケットを送信することで、データ#1の持ち出し先とされたすべてのノードにおいて「Snoop_I」が示す処理が完了したことをノード123bに通知する。「Snoop_I」が示す処理が完了したことを認識したノード123bは、要求されたデータ#1をメモリ143bからEステートで読み出し、読み出したデータ#1を格納したデータレスポンスパケットをノード122bに送信する。
 次に、ノードおよびNCの構成例と、ノードおよびNCの詳細な動作について説明する。まず、図11は、ノードの構成例およびその動作を示す図である。この図11では例として、SB110a内のノード121aの構成例を示すが、他のノードも図11と同様の構成を有する。なお、この図11以降、ノードの内部に備えられる構成については、すべてのノードについて共通の符号を付して説明する。
 ノード121aは、コア部210,220、メモリ制御部231,232、リクエスト生成部241、ローカルスヌープ生成部242、LSレスポンス生成部243、データレスポンス生成部244、アービタ251,252、ホーム判定テーブル201および持ち出し管理テーブル202を備えている。
 コア部210は、図示しないプロセッサコアと、キャッシュ部211とを備える。コア部220も同様に、図示しないプロセッサコアと、キャッシュ部221とを備える。キャッシュ部211,221は、それぞれ、キャッシュメモリと、キャッシュメモリを制御するキャッシュ制御部とを備える。コア部210,220は、それぞれ同様の処理を実行可能であるので、ここではコア部210の動作についてのみ説明する。
 コア部210は、他のノードの管理下にあるメモリ内のデータ(ただし、キャッシュ部211にキャッシュされていないデータ)にアクセスする場合、アクセス先のアドレスとコマンドとを含むリクエストを、アービタ251を介してリクエスト生成部241に送信する。コマンドが「Writeback」である場合、リクエストには書き戻し対象のデータが含まれる。
 コア部210からのリクエストを受信したリクエスト生成部241は、ホーム判定テーブル201を参照する。前述のように、ホーム判定テーブル201には、共有メモリ空間のアドレスとホームノードのIDとが対応づけられている。リクエスト生成部241は、ホーム判定テーブル201から、コア部210からのリクエストに含まれるアドレスに対応付けられたノードIDを抽出し、抽出したノードIDを「宛先ID」フィールドに設定したリクエストパケットを送信する。ここで、アクセス先のアドレスに対応するホームノードがSB110a内のノードである場合、リクエストパケットはSB110a内のホームノードに送信される。一方、アクセス先のアドレスに対応するホームノードがSB110aの外部にある場合、リクエストパケットはSB110a内のNC131aに送信される。
 また、コア部210のキャッシュ部211は、SB110a内の他のノードまたはNC131aからデータレスポンスパケットを受信すると、データレスポンスパケットの「コマンド」フィールドに応じた処理を行う。受信したデータレスポンスパケットの「コマンド」フィールドがデータ読み出しの完了を示すものである場合、キャッシュ部211は、データレスポンスパケットの「データ」フィールドから抽出した読み出しデータを、「コマンド」フィールドで示されるステータスでキャッシュメモリに書き込む。一方、受信したデータレスポンスパケットの「コマンド」フィールドがデータ書き込みの完了を示すものである場合、キャッシュ部211は、書き込みの完了を認識する。
 さらに、コア部210のキャッシュ部211は、SB110a内の他のノードまたはNC131aからローカルスヌープパケットを受信すると、ローカルスヌープパケットの「コマンド」フィールドで示される処理を行う。例えば、キャッシュ部211は、受信したローカルスヌープパケットの「アドレス」フィールドに対応するキャッシュデータがキャッシュメモリに存在する場合、キャッシュデータのステータスを「コマンド」フィールドで指定されるステータスに変更する。
 キャッシュ部211は、ローカルスヌープパケットの「コマンド」フィールドで指示された処理を完了すると、指示された処理が完了されたことを、アービタ252を介してLSレスポンス生成部243に通知する。LSレスポンス生成部243は、キャッシュ部211において処理が完了したことを通知する情報を「コマンド」フィールドに設定したLSレスポンスパケットを生成し、ローカルスヌープパケットの送信元に対して送信する。
 メモリ制御部231は、SB110a内の他のノードまたはNC131aからリクエストパケットを受信すると、持ち出し管理テーブル202を参照する。前述のように、持ち出し管理テーブル202には、ノード121aの管理下にあるメモリ141aに格納されたデータが他のノードに持ち出されてキャッシュされている場合に、そのデータが格納されたメモリ141aのアドレスと、データのキャッシュステートと、持ち出し先のノードIDとが対応付けられて登録されている。
 メモリ制御部231は、持ち出し管理テーブル202から得られる情報と、受信したリクエストパケット内の「コマンド」フィールドの設定値とに応じて、ローカルスヌープパケットとデータレスポンスパケットのどちらを送信すべきかを判定する。受信したリクエストパケットに設定されたアドレスに対応する持ち出し管理テーブル202のレコードに持ち出し先のノードIDが登録されていない場合、メモリ制御部231は、データレスポンスパケットを送信すべきと判定する。また、受信したリクエストパケットに設定されたアドレスに対応する持ち出し管理テーブル202のレコードに持ち出し先のノードIDが登録されている場合でも、リクエストパケット内の「コマンド」フィールドに「Writeback」が設定されている場合、および、「コマンド」フィールドに「Read_S」が設定され、かつデータのキャッシュステートがステートSである場合には、メモリ制御部231は、データレスポンスパケットを送信すべきと判定する。一方、受信したリクエストパケットに設定されたアドレスに対応する持ち出し管理テーブル202のレコードに持ち出し先のノードIDが登録されているときには、リクエストパケット内の「コマンド」フィールドに「Read_E」が設定されている場合、および、「コマンド」フィールドに「Read_S」が設定され、かつデータのキャッシュステートがステートEである場合には、メモリ制御部231は、ローカルスヌープパケットを送信すべきと判定する。
 ローカルスヌープパケットを送信すべきと判定した場合、メモリ制御部231は、持ち出し先のノードIDをローカルスヌープ生成部242に通知する。ローカルスヌープ生成部242は、メモリ制御部231から通知されたノードIDを「宛先ID」フィールドに設定したローカルスヌープパケットを送信する。持ち出し先のノードがSB110a内のノードである場合、ローカルスヌープパケットはSB110a内のノードに送信される。一方、持ち出し先のノードがSB110aの外部にある場合、ローカルスヌープパケットはSB110a内のNC131aに送信される。
 一方、データレスポンスパケットを送信すべきと判定した場合、メモリ制御部231は、メモリ141aにアクセスする。リクエストパケットの「コマンド」フィールドにより読み出しが要求されていた場合、メモリ制御部231は、リクエストパケットに設定されたアドレスの位置からデータを読み出す。また、リクエストパケットの「コマンド」フィールドに「Writeback」が設定されていた場合、メモリ制御部231は、リクエストパケットの「データ」フィールドから抽出したデータを、リクエストパケットに設定されたアドレスの位置に書き込む。
 メモリ制御部231は、メモリ141aへのアクセス処理が完了すると、データレスポンス生成部244に対して処理の完了を通知する。この場合、データレスポンス生成部244は、メモリ制御部231が受信したリクエストパケットの送信元に対して、データレスポンスパケットを送信する。リクエストパケットの「コマンド」フィールドによりデータの読み出しが要求されていた場合、送信されるデータレスポンスパケットの「データ」フィールドに、メモリ制御部231によってメモリ141aから読み出されたデータが格納される。
 また、データレスポンス生成部244は、メモリ制御部231が受信したリクエストパケットの「コマンド」フィールドに「Read_E」が設定されていた場合、持ち出し管理テーブル202を更新する。データレスポンス生成部244は、持ち出し管理テーブル202における、リクエストパケットに設定されたアドレスに対応するレコードに対して、ステートをEにするとともに、持ち出し先として「リクエスタID」フィールドの値を登録する。
 メモリ制御部232は、SB110a内の他のノードまたはNC131aからLSレスポンスパケットを受信すると、受信したLSレスポンスパケットをデータレスポンス生成部244に転送する。このとき、メモリ制御部232は、受信したLSレスポンスパケットに対応するリクエストパケットの「コマンド」フィールドによりデータの読み出しが要求されていた場合には、メモリ141aにアクセスし、LSレスポンスパケットに設定されたアドレスからデータを読み出す。なお、ここで言う「受信したLSレスポンスパケットに対応するリクエストパケット」とは、受信したLSレスポンスパケットと「トランザクションID」フィールドの値が同じであるリクエストパケットを指す。メモリ制御部232は、メモリ141aからデータを読み出した場合、読み出したデータをデータレスポンス生成部244に送信する。
 メモリ制御部232を通じてLSレスポンスパケットを受信したデータレスポンス生成部244は、「リクエスタID」フィールドが示すノードまたはNC131aを「宛先ID」フィールドに設定したデータレスポンスパケットを送信する。メモリ制御部232によってメモリ141aからデータが読み出された場合には、読み出されたデータがデータレスポンスパケットの「データ」フィールドに格納される。
 また、データレスポンス生成部244は、メモリ制御部232を通じたLSレスポンスパケットの受信に応じてデータリクエストパケットを送信した場合には、持ち出し管理テーブル202における、受信したLSレスポンスパケットに設定されたアドレスに対応するレコードを更新する。データレスポンス生成部244は、持ち出し管理テーブル202における更新前のレコード内の「コマンド」および「ステート」の各フィールドの値と、受信したLSレスポンスパケット内の「コマンド」フィールドの値との組み合わせに応じて、レコード内の「ステート」および「持ち出し先ID」の各フィールドを更新する。
 次に、図12は、NCの構成例およびその動作を示す図である。この図12では例として、SB110a内のNC131aの構成例を示すが、他のNC131b~131dも図12と同様の構成を有する。なお、この図12以降、NCの内部に備えられる構成については、すべてのNCについて共通の符号を付して説明する。
 NC131aは、リクエスト送信部311、NCスヌープ生成部312、リクエスト受信処理部313、NCスヌープ処理部314、NCレスポンス処理部315、データレスポンス送信部316、リクエスタ判定部321、宛先判定部322、BC(Broadcast)判定部323、NCレスポンス判定部324、宛先判定部325およびアービタ331~335を備えている。また、NC131aは、処理の際に利用される情報として、前述したホーム判定テーブル301および持ち出し管理テーブル302の他、ID変換テーブル303、レスポンス受信判定テーブル304およびレスポンス送信判定テーブル305を備える。
 リクエスト送信部311は、NC131aが属するSB110a内のノードからリクエストパケットを受信すると、ホーム判定テーブル301から、リクエストパケットに設定されたアドレスに対応するホームノードのIDを抽出する。リクエスト送信部311は、受信したリクエストパケットの「宛先ID」フィールドを、ホーム判定テーブル301から抽出したホームノードのIDに書き替える。これとともに、リクエスト送信部311は、受信したリクエストパケットの「リクエスタID」および「トランザクションID」の各フィールドの値を、NC131aの内部でローカルに使用されるIDから、情報処理システム100に含まれる複数の各NCでグローバルに使用されるIDに書き替える。リクエスト送信部311は、「宛先ID」「リクエスタID」「トランザクションID」の各フィールドの値を書き替えたリクエストパケットを、アービタ331を介して、隣接する送信先であるNC131bに送信する。
 なお、以下の説明では、SB内でローカルに使用されるIDを「ローカルID」と呼び、情報処理システム100に含まれる各SBでグローバルに使用されるIDを「グローバルID」と呼ぶ。
 リクエスタ判定部321は、NC131aが属するSB110a内のノードからローカルスヌープパケットを受信すると、受信したローカルスヌープパケットにおける「宛先ID」および「リクエスタID」の各フィールドの値を比較する。「宛先ID」および「リクエスタID」の各フィールド値が同じである場合(例えば、NC131aが送信したリクエストパケットに応答してノードからローカルスヌープパケットが送信された場合)、リクエスタ判定部321は、受信したローカルスヌープパケットをNCレスポンス処理部315に送信する。一方、「宛先ID」および「リクエスタID」の各フィールドの値が異なる場合(例えば、リクエスタがホームノード以外のSB110a内のノードである場合)、リクエスタ判定部321は、受信したローカルスヌープパケットをNCスヌープ生成部312に送信する。
 NCスヌープ生成部312は、リクエスタ判定部321を通じてローカルスヌープパケットを受信すると、持ち出し管理テーブル302から、ローカルスヌープパケットに設定されたアドレスに対応付けられたノードIDを取得して、データの持ち出し先のノードを判別する。NCスヌープ生成部312は、NCスヌープパケットを生成し、データの持ち出し先のノードに接続されたNCにそれぞれ対応する、ブロードキャストフラグ内のビットを「1」とするとともに、レスポンスフラグを「1」とする。また、NCスヌープ生成部312は、受信したローカルスヌープパケット内の「リクエスタID」および「トランザクションID」の各フィールドをそれぞれローカルIDからグローバルIDに変換し、変換後の各IDをNCスヌープパケットの「リクエスタID」および「トランザクションID」の各フィールドの値に設定する。NCスヌープ生成部312は、設定を完了したNCスヌープパケットを、アービタ332を介して、隣接する送信先であるNC131bに送信する。
 さらに、NCスヌープパケットを送信したNCスヌープ生成部312は、レスポンス受信判定テーブル304に対して新規のレコードを登録する。登録されたレコードは、送信したNCスヌープパケットに対応するNCレスポンスパケットをNC131aが受信した際に参照される。
 ここで、図13は、レスポンス受信判定テーブルに保持される情報の例を示す図である。
 レスポンス受信判定テーブル304は、送信したNCスヌープパケットに対応するNCレスポンスパケットを受信するまでの間、NCスヌープパケットを送信する際のトリガとなったパケットの内容を保持するものである。レスポンス受信判定テーブル304のレコードには、送信されたNCスヌープパケットに設定されたトランザクションID、NCスヌープパケットを送信する際のトリガとなった元のパケット、NCスヌープパケットに対応するNCレスポンスパケットを受信したか否かを示す受信フラグが登録される。
 例えば、NCスヌープパケットを送信したNCスヌープ生成部312は、リクエスタ判定部321を通じて受信したローカルスヌープパケットを、レスポンス受信判定テーブル304のレコードにおける「元のパケット」の欄に登録する。また、受信フラグの値は、レコードに対応するNCスヌープパケットが送信された段階では初期値「0」とされる。
 以下、図12に戻って説明する。
 宛先判定部322は、他のSB内のNCからリクエストパケットを受信すると、「宛先ID」フィールドに設定されたノードIDに応じて次のような処理を行う。「宛先ID」フィールドの設定値が示すノードが他のSB内のノードである場合、宛先判定部322は、受信したリクエストパケットをそのまま、アービタ332を介してNC131bに送信する。一方、「宛先ID」フィールドの設定値が示すノードがSB110a内のノードである場合、宛先判定部322は、受信したリクエストパケットをリクエスト受信処理部313に送信する。
 リクエスト受信処理部313は、宛先判定部322を通じてリクエストパケットを受信すると、持ち出し管理テーブル302を参照する。リクエスト受信処理部313は、持ち出し管理テーブル302から得られた情報と、受信したリクエストパケットにおける「コマンド」フィールドの設定値とから、SB110a内のノードへのリクエストパケットの送信と、他のSBへのNCスヌープパケットの送信のどちらを実行するべきかを判定する。
 受信したリクエストパケットに設定されたアドレスに対応する持ち出し管理テーブル302のレコードに持ち出し先のノードIDが登録されていない場合、リクエスト受信処理部313は、リクエストパケットを送信すべきと判定する。また、受信したリクエストパケットに設定されたアドレスに対応する持ち出し管理テーブル302のレコードに持ち出し先のノードIDが登録されている場合でも、受信したリクエストパケット内の「コマンド」フィールドに「Writeback」が設定されている場合、および、「コマンド」フィールドに「Read_S」が設定され、かつデータのキャッシュステートがSである場合には、リクエスト受信処理部313は、リクエストパケットを送信すべきと判定する。
 一方、受信したリクエストパケットに設定されたアドレスに対応する持ち出し管理テーブル302のレコードに持ち出し先のノードIDが登録されているときには、受信したリクエストパケット内の「コマンド」フィールドに「Read_E」が設定されている場合、および、「コマンド」フィールドに「Read_S」が設定され、かつデータのキャッシュステートがEである場合には、リクエスト受信処理部313は、NCスヌープパケットを送信すべきと判定する。
 リクエストパケットを送信すべきと判定した場合、リクエスト受信処理部313は、他のNCから受信したリクエストパケットを、「宛先ID」フィールドが示すSB110a内のホームノードに対して、アービタ335を介して送信する。このとき、リクエスト受信処理部313は、リクエストパケット内の「宛先ID」および「トランザクションID」の各フィールドをそれぞれグローバルIDからローカルIDに変換するとともに、「リクエスタID」フィールドを、グローバルIDからNC131a自身を指すローカルIDに変換する。さらに、リクエスト受信処理部313は、ID変換テーブル303に対して新規のレコードを生成し、変換前後のIDをレコードに保存する。
 ここで、図14は、ID変換テーブルに保持される情報の例を示す図である。
 ID変換テーブル303には、他のSBからのパケットに応じて自身のSB内のノードにパケットを送信する際に、受信パケット内に設定された変換前のIDと、送信パケット内の設定した変換後のIDとを含むレコードが登録される。図14に示すように、ID変換テーブル303のレコードには、送信パケットに設定した変換後のトランザクションIDと、受信パケットにそれぞれ設定された変換前のリクエスタIDおよび変換前のトランザクションIDとが登録される。ID変換テーブル303のレコードは、SB内に送信したパケットに対するレスポンスパケットが受信された際に、削除される。
 例えば、リクエスト受信処理部313は、SB110a内のホームノードに送信したリクエストパケット内の「トランザクションID」フィールドの値と、宛先判定部322を通じて受信したリクエストパケット内の「リクエスタID」および「トランザクションID」の各フィールドの値を、ID変換テーブル303のレコードに登録する。また、リクエスト受信処理部313によって登録されたレコードは、その後、SB110a内のホームノードからのデータレスポンスパケットを受信したデータレスポンス送信部316によって削除される。
 ID変換テーブル303を用いてIDの変換が行われることで、例えば、各SBで使用可能なIDの数などの各SBが個別に持つIDの制約に関係なく、ノードIDやトランザクションIDをSB間で伝送できるようになる。
 以下、図12に戻って説明する。
 NCスヌープパケットを送信すべきと判定した場合、リクエスト受信処理部313は、NCスヌープパケットを生成する。リクエスト受信処理部313は、宛先判定部322を通じて受信したリクエストパケット内の「リクエスタID」フィールドの値および「トランザクションID」フィールドの値を、NCスヌープパケットの「リクエスタID」フィールドおよび「トランザクションID」フィールドにそれぞれ設定する。また、リクエスト受信処理部313は、データの持ち出し先のノードに接続されたNCにそれぞれ対応する、ブロードキャストフラグ内のビットを「1」とするとともに、レスポンスフラグを「1」とする。リクエスト受信処理部313は、設定を完了したNCスヌープパケットを、アービタ332を介してNC131bに送信する。
 また、NCスヌープパケットを送信したリクエスト受信処理部313は、レスポンス受信判定テーブル304に新規のレコードを登録する。リクエスト受信処理部313は、宛先判定部322を通じて受信したリクエストパケットを、レスポンス受信判定テーブル304のレコードにおける「元のパケット」の欄に登録する。また、受信フラグの値は、レコードに対応するNCスヌープパケットが送信された段階では初期値「0」とされる。
 BC判定部323は、他のSB内のNCからNCスヌープパケットを受信すると、受信したNCスヌープパケットの「ブロードキャストフラグ」を参照する。「ブロードキャストフラグ」におけるNC131aに対応するビットが「0」である場合、BC判定部323は、受信したNCスヌープパケットを、アービタ332を介してNC131bに転送する。一方、「ブロードキャストフラグ」におけるNC131aに対応するビットが「1」である場合、BC判定部323は、受信したNCスヌープパケットをNCスヌープ処理部314に送信する。
 NCレスポンス判定部324は、他のSB内のNCからNCレスポンスパケットを受信すると、受信したNCレスポンスパケット内の「宛先ID」フィールドの値から、NCレスポンスパケットの宛先がSB110a内のノードであるかを判定する。NCレスポンスパケットの宛先がSB110a内のノードでない場合、NCレスポンス判定部324は、受信したNCレスポンスパケットをNCスヌープ処理部314に送信する。一方、NCレスポンスパケットの宛先がSB110a内のノードである場合、NCレスポンス判定部324は、受信したNCレスポンスパケットをNCレスポンス処理部315に送信する。
 NCスヌープ処理部314は、BC判定部323を通じてNCスヌープパケットを受信すると、NCスヌープパケットで指示された処理をSB110a内の各ノードに実行させるとともに、各ノードでの処理の実行結果を設定したNCレスポンスパケットを送信する。NCスヌープ処理部314は、処理の際にID変換テーブル303およびレスポンス送信判定テーブル305を参照する。
 ここで、図15は、レスポンス送信判定テーブルに保持される情報の例を示す図である。
 NCスヌープ処理部314は、NCスヌープパケットの受信に応じてSB110a内のノードにローカルスヌープパケットをブロードキャストした際に、レスポンス送信判定テーブル305に対してレコードを登録する。レスポンス送信判定テーブル305のレコードには、送信されたローカルスヌープパケットに設定された、ローカルIDであるトランザクションID、元のNCスヌープパケットに設定された、ともにグローバルIDであるリクエスタIDおよびトランザクションID、送信されたローカルスヌープパケットに設定されたアドレス、レスポンス数、受信フラグおよびNCレスポンスパケットが登録される。
 レコード内のレスポンス数は、SB110a内にブロードキャストされたローカルスヌープパケットに対応するLSレスポンスパケットを受信した数であり、レコード登録時は初期値「0」とされ、最大値はSB110a内のノードの数である「3」である。レコード内の受信フラグは、NCレスポンスパケットに対応するNCレスポンスパケットを他のNCから受信したか否かを示すものであり、NCレスポンスパケットを受信した場合に「0」から「1」に更新される。レコード内のNCレスポンスパケットは、他のNCから受信したNCレスポンスパケットがそのまま格納される。レコード内にNCレスポンスパケットが格納されているとき、受信フラグも「1」となる。
 レスポンス送信判定テーブル305に登録されたレコードは、NCレスポンスパケットが他のNCに送信されると、レスポンス送信判定テーブル305から削除される。
 以下、NCスヌープ処理部314の処理についてフローチャートを用いて説明する。まず、図16は、NCスヌープ処理部によるNCスヌープパケット受信時の処理を示すフローチャートである。
 [ステップS11]NCスヌープ処理部314は、BC判定部323を通じてNCスヌープパケットを受信する。
 [ステップS12]NCスヌープ処理部314は、SB110a内のノード121a,122a,123aに対して、ローカルスヌープパケットをブロードキャストする。このとき、NCスヌープ処理部314は、ローカルスヌープパケットにおける「リクエスタID」フィールドに自身を指すローカルIDを設定するとともに、「トランザクションID」フィールドにローカルIDを設定する。ローカルスヌープパケットにおける「アドレス」フィールドおよび「コマンド」フィールドには、受信したNCスヌープパケットの「アドレス」フィールドの値および「コマンド」フィールドの値がそれぞれ設定される。
 [ステップS13]NCスヌープ処理部314は、ID変換テーブル303およびレスポンス送信判定テーブル305のそれぞれに対して新規のレコードを登録する。NCスヌープ処理部314は、ステップS12で送信したローカルスヌープパケットに設定したローカルIDであるトランザクションIDと、ステップS11で受信したNCスヌープパケットに設定されたグローバルIDであるリクエスタIDおよびトランザクションIDとを、ID変換テーブル303における新規のレコードと、レスポンス送信判定テーブル305における新規のレコードのそれぞれに登録する。また、NCスヌープ処理部314は、レスポンス送信判定テーブル305におけるレスポンス数および受信フラグの値をともに「0」とする。
 [ステップS14]ステップS11で受信されたNCスヌープパケットにおける「レスポンスフラグ」が「1」である場合、ステップS15の処理が実行され、「レスポンスフラグ」が「0」である場合、ステップS17の処理が実行される。
 [ステップS15]「レスポンスフラグ」が「1」である場合、NCスヌープ処理部314は、次の手順により、NCレスポンスパケットを新規に生成する。NCスヌープ処理部314は、ステップS11で受信したNCスヌープパケットの「リクエストID」「トランザクションID」「アドレス」の各フィールド値を、NCレスポンスパケットの同じフィールドの欄に設定する。また、NCスヌープ処理部314は、ホーム判定テーブル301に基づき、ステップS11で受信したNCスヌープパケットの「アドレス」フィールドに設定された値に対応するホームノードのIDを、NCレスポンスパケットの「宛先ID」フィールドに設定する。さらに、NCスヌープ処理部314は、ステップS11で受信したNCスヌープパケットの「コマンド」フィールドで指定される処理が完了したことを示す値を、NCスヌープパケットの「コマンド」フィールドに設定する。また、NCスヌープ処理部314は、この時点では、NCスヌープパケットにおける「レスポンスフィールド」の全ビットを「0」としておく。
 NCスヌープ処理部314は、以上に手順で生成したNCレスポンスパケットを、ステップS13でレスポンス送信判定テーブル305に生成したレコードに登録するとともに、このレコード内の受信フラグを「1」に書き替える。
 [ステップS16]NCスヌープ処理部314は、ステップS11で受信したNCスヌープパケット内の「レスポンスフラグ」を「0」に書き替える。
 [ステップS17]NCスヌープ処理部314は、ステップS11で受信したNCスヌープパケット内の「ブロードキャストフラグ」のビットのうち、NC131aに対応するビットを「0」に書き替える。
 [ステップS18]NCスヌープ処理部314は、ステップS17での書き替え処理後の「ブロードキャストフラグ」を参照する。NCスヌープ処理部314は、「ブロードキャストフラグ」内の全ビットが「0」である場合には、処理を終了する。この場合、ステップS11で受信されたNCスヌープパケットは、これ以上他のNCに転送されない。一方、NCスヌープ処理部314は、「ブロードキャストフラグ」内のビットの中に1つでも「1」がある場合には、ステップS19の処理を実行する。
 [ステップS19]NCスヌープ処理部314は、ステップS16,S17、またはステップS17のみで書き替えられたNCスヌープパケットを、アービタ332を介して、隣接する送信先であるNC131bに対して送信する。
 図17は、NCスヌープ処理部によるレスポンスカウント処理を示すフローチャートである。
 図16のステップS12においてローカルスヌープパケットがブロードキャストされると、ローカルスヌープパケットを受信したノードは、「コマンド」フィールドで指定される処理を実行する。ノードは、指定された処理を完了すると、「コマンド」フィールドに処理が完了したことを示す値を設定したLSレスポンスパケットを、NC131aに対して返信する。このとき、ノードは、受信したローカルスヌープパケットの「リクエスタID」「トランザクションID」「アドレス」の各フィールドに設定された値を、LSレスポンスパケットの同じフィールドに設定する。
 [ステップS31]NCスヌープ処理部314は、SB110a内のノードからLSレスポンスパケットを受信する。
 [ステップS32]NCスヌープ処理部314は、レスポンス送信判定テーブル305内のレコードのうち、ローカルなトランザクションIDに設定された値が、受信したLSレスポンスパケット内の「トランザクションID」フィールドに設定された値と同じレコードを選択する。NCスヌープ処理部314は、選択したレコード内のレスポンス数を「1」だけカウントアップする。
 以上の図17の処理により、ローカルスヌープパケットのブロードキャスト先のノードから、「コマンド」フィールドで指定した処理の完了通知を受信するたびに、レスポンス送信判定テーブル305のレコードにおけるレスポンス数がカウントアップされる。レコード内のレスポンス数が最大値である「3」となったとき、NCスヌープ処理部314は、SB110a内のすべてのノードからNC131aが処理の完了通知を受信したことを判定できる。
 図18は、NCスヌープ処理部によるNCレスポンス受信処理を示すフローチャートである。
 図16のステップS14において、受信したNCスヌープパケット内の「レスポンスフラグ」が「0」であった場合、その後、受信したNCスヌープパケットに対応するNCレスポンスデータが、他のNCから送信される。この場合、NC131aは、図18の処理により、受信したNCスヌープパケットに対応するNCレスポンスデータを受信して、レスポンス受信判定テーブル304内の対応するレコードを更新する。
 [ステップS41]NCスヌープ処理部314は、NCレスポンス判定部324を通じて、他のNCから送信されたNCレスポンスパケットを受信する。
 [ステップS42]NCスヌープ処理部314は、レスポンス送信判定テーブル305内のレコードのうち、グローバルなトランザクションIDとして設定された値(すなわち、レコードに対応するNCスヌープパケットに設定されたトランザクションID)が、受信したNCレスポンスパケット内の「トランザクションID」フィールドに設定された値と同じであるレコードを選択する。NCスヌープ処理部314は、選択したレコードに対して、ステップS41で受信したNCレスポンスパケットを登録する。
 [ステップS43]NCスヌープ処理部314は、ステップS42で選択したレコード内の受信フラグを「1」に書き替える。
 図19は、NCスヌープ処理部によるNCレスポンス送信処理を示すフローチャートである。
 [ステップS51]NCスヌープ処理部314は、レスポンス送信判定テーブル305に登録されたレスポンスのうち、レスポンス数が最大値である「3」に達し、かつ、受信フラグが「1」であるレコードを検知する。
 [ステップS52]NCスヌープ処理部314は、ステップS51で検知したレコードに登録されたNCレスポンスパケット内の「レスポンスフィールド」を参照する。NCスヌープ処理部314は、参照した「レスポンスフィールド」のビットのうち、NC131aに対応するビットを「1」に書き替える。
 [ステップS53]NCスヌープ処理部314は、ステップS52で書き替えを行ったNCレスポンスパケットを、アービタ333を介して、NC131aに隣接する送信先であるNC131bに送信する。
 [ステップS54]NCスヌープ処理部314は、ステップS51で検知した、レスポンス送信判定テーブル305内のレコードから、ローカルなトランザクションIDを抽出する。NCスヌープ処理部314は、変換後のトランザクションIDとして、レスポンス受信判定テーブル304から抽出したトランザクションIDと同じ値が登録されたID変換テーブル303内のレコードを削除する。また、NCスヌープ処理部314は、ステップS51で検知した、レスポンス送信判定テーブル305内のレコードを削除する。
 以上の図16~図19で説明した処理によれば、NCスヌープ処理部314は、レスポンス送信判定テーブルを利用して、NCスヌープパケットを受信してから対応するNCレスポンスパケットを送信するまでの処理を管理する。NCスヌープ処理部314は、レスポンス送信判定テーブル305内のレスポンス数および受信フラグを用いることで、NCスヌープパケットによって指示された処理の完了通知をSB110a内の全ノードから受信し、かつ、対応するNCレスポンスパケットを受信したことを確実に認識できる。従って、データの持ち出し先である全ノードにおける処理結果をNCレスポンスパケットに格納し、ホームノードに対して確実に伝達できるようになる。
 以下、図12に戻って説明する。
 NCレスポンス処理部315は、NCスヌープ生成部312またはリクエスト受信処理部313がNCスヌープパケットを送信した後、送信されたNCスヌープパケットに応じた処理結果をホームノードに伝達する。これとともに、NCレスポンス処理部315は、NCスヌープ生成部312またはリクエスト受信処理部313がレスポンス受信判定テーブル304に登録したパケットに関連する処理が完了するまでの間、NCスヌープパケットに応じた処理結果を、レスポンス受信判定テーブル304に保持させる。
 ここで、図20は、NCレスポンス処理部の構成例およびその動作を示す図である。
 NCレスポンス処理部315は、NCレスポンス受信部351、パケット判定部352、レスポンス送信部353、リクエスト送信部354およびスヌープ受信部355を備える。
 また、前述のように、レスポンス受信判定テーブル304には、NCスヌープ生成部312またはリクエスト受信処理部313によってNCスヌープパケットが送信された場合に、レコードが登録される。NCスヌープ生成部312は、レスポンス受信判定テーブル304のレコードに、NCスヌープパケットを送信するトリガとされたローカルスヌープパケットを登録する。また、リクエスト受信処理部313は、レスポンス受信判定テーブル304のレコードに、NCスヌープパケットを送信するトリガとされたリクエストパケットを登録する。
 NCレスポンス受信部351は、他のSB内のNCからNCレスポンスパケットを受信すると、受信したNCレスポンスパケットの「トランザクションID」フィールドに設定された値と同じトランザクションIDが登録されたレコードを、レスポンス受信判定テーブル304から選択する。NCレスポンス受信部351は、選択したレコード内のレスポンスフラグを「1」に書き替え、NCスヌープパケットにより要求された処理が完了したことをレコードに記録する。また、NCレスポンス受信部351は、レスポンスフラグを書き替えたレコードを示すレコードIDを、パケット判定部352に通知する。
 パケット判定部352は、NCレスポンス受信部351からレコードIDの通知を受けると、通知されたレコードIDに対応する、レスポンス受信判定テーブル304内のレコードから、「元のパケット」の欄に登録されたパケットを受信する。パケット判定部352は、受信したパケットがローカルスヌープパケットである場合、そのパケットをレスポンス送信部353に送信する。受信したパケットがローカルスヌープパケットである場合とは、図10に示した例のように、同じSBに属するホームノードから送信されたローカルスヌープパケットをトリガとしてNCスヌープパケットが送信された後、送信されたNCスヌープパケットに対応するNCレスポンスパケットが受信された場合である。
 一方、パケット判定部352は、レコードから受信したパケットがリクエストパケットである場合、そのパケットをリクエスト送信部354に送信する。受信したパケットがリクエストパケットである場合とは、図6に示した例のように、他のSBのノードから送信されたリクエストパケットをトリガとしてNCスヌープパケットが送信された後、送信されたNCスヌープパケットに対応するNCレスポンスパケットが受信された場合である。
 レスポンス送信部353は、パケット判定部352からローカルスヌープパケットを受信すると、受信したローカルスヌープパケットに対応するLSレスポンスパケットを、SB110a内のホームノードに送信する。レスポンス送信部353は、パケット判定部352から受信したローカルスヌープパケット内のアドレスを管理するホームノードのIDを、LSレスポンスパケットの「宛先ID」フィールドに設定する。また、レスポンス送信部353は、パケット判定部352から受信したローカルスヌープパケット内の「リクエスタID」「トランザクションID」「アドレス」の各フィールドの値を、LSレスポンスパケット内の同じフィールドに設定する。さらに、レスポンス送信部353は、パケット判定部352から受信したローカルスヌープパケットの「コマンド」フィールドで指定された処理の完了を通知する値を、LSレスポンスパケット内の「コマンド」フィールドに設定する。
 また、LSレスポンスパケットを送信したレスポンス送信部353は、持ち出し管理テーブル302のレコードのうち、送信したLSレスポンスパケットに設定されたアドレスに対応するレコードを更新する。例えば、送信したLSレスポンスパケットの「コマンド」フィールドに「Response_I」が設定される場合、レスポンス送信部353は、レコード内のキャッシュステートをIステートにし、レコードに登録されていた持ち出し先のノードIDを削除する。また、送信したLSレスポンスパケットの「コマンド」フィールドに「Response_S」が設定される場合、レスポンス送信部353は、レコード内のキャッシュステートをSステートにする。これとともに、レスポンス送信部353は、レコードに対し、持ち出し先のノードIDとして、LSレスポンスパケットの「リクエスタID」フィールドの値をローカルIDからグローバルIDに変換した値を書き加える。
 さらに、LSレスポンスパケットを送信したレスポンス送信部353は、パケット判定部352から受信したローカルスヌープパケットが登録されたレコードを、レスポンス受信判定テーブル304から削除する。レスポンス送信部353は、例えば、ローカルスヌープパケット内の「トランザクションID」フィールドと、各レコードに登録された元パケット内の「トランザクションID」フィールドとを比較することで、削除するレコードを検索する。
 レスポンス送信部353がLSレスポンスパケットを送信することで、NCスヌープ生成部312がレスポンス受信判定テーブル304に登録したローカルスヌープパケットに関するNC131aでの処理は完了する。NCレスポンス受信部351、パケット判定部352およびレスポンス送信部353の処理により、NCスヌープ生成部312がレスポンス受信判定テーブル304に登録したNCスヌープパケットに関するNC131aでの処理が完了するまでの間、NC131aでの処理に必要な情報がレスポンス受信判定テーブル304に確実に保持されるようになる。
 リクエスト送信部354は、パケット判定部352からリクエストパケットを受信すると、SB110a内のホームノードに対してリクエストパケットを送信する。ここで、パケット判定部352から受信したリクエストパケット内の「宛先ID」「リクエスタID」および「トランザクションID」の各フィールドのIDはそれぞれグローバルIDになっているため、リクエスト送信部354は、これらのIDをローカルIDに変換する。リクエスト送信部354は、パケット判定部352から受信したリクエストパケット内の「リクエスタID」フィールドを、NC131aを示すIDに変換するとともに、リクエストパケット内の「宛先ID」および「トランザクションID」の各フィールドの値を、ともにローカルIDに変換する。
 リクエスト送信部354は、IDを変換したリクエストパケットをSB110a内のホームノードに送信する。また、リクエスト送信部354は、持ち出し管理テーブル302に新規のレコードを生成し、生成したレコードに、変換後の「トランザクションID」フィールドの値と、変換後の「リクエスタID」および「トランザクションID」の各フィールドの値を登録する。
 リクエスト送信部354からのリクエストパケットを受信したホームノードは、NC131aに対してローカルスヌープパケットを送信する。スヌープ受信部355は、ホームノードからのローカルスヌープパケットを受信する。スヌープ受信部355は、ID変換テーブル303のレコードのうち、変換後のIDとして、受信したローカルスヌープパケット内の「トランザクションID」フィールドの値が登録されたレコードを選択する。スヌープ受信部355は、ID変換テーブル303から選択したレコードから、変換前のグローバルなトランザクションIDを抽出する。さらに、スヌープ受信部355は、レスポンス受信判定テーブル304のレコードのうち、ID変換テーブル303から抽出したトランザクションIDが登録されたレコードを選択する。
 スヌープ受信部355は、レスポンス受信判定テーブル304から選択したレコードにおいて、レスポンスフラグが「1」であることを確認すると、ホームノードに対してLSレスポンスパケットを送信するとともに、選択したレコードを削除する。スヌープ受信部355は、受信したローカルスヌープパケットの「リクエスタID」および「トランザクションID」の各フィールドに設定された値を、送信するLSレスポンスパケット内の同じフィールドに設定する。
 リクエスト受信処理部313がレスポンス受信判定テーブル304に登録したリクエストパケットに関するNC131aでの処理は完了する。NCレスポンス受信部351、パケット判定部352およびレスポンス送信部353の処理により、リクエスト受信処理部313がレスポンス受信判定テーブル304に登録したリクエストパケットに関するNC131aでの処理が完了するまでの間、NC131aでの処理に必要な情報がレスポンス受信判定テーブル304に確実に保持されるようになる。
 以下、図12に戻って説明する。
 データレスポンス送信部316は、SB110a内のホームノードからデータレスポンスパケットを受信すると、ID変換テーブル303から、変換後のトランザクションIDとして、受信したデータレスポンスパケットの「トランザクションID」フィールドの値が登録されたレコードを選択する。このときデータレスポンス送信部316が選択するレコードは、NCレスポンス処理部のリクエスト送信部354によって登録されたものである。
 データレスポンス送信部316は、受信したデータレスポンスパケットの「宛先ID」および「リクエスタID」の各フィールドを、ID変換テーブル303から選択したレコードに登録された、変換前のリクエスタIDに書き替える。また、データレスポンス送信部316は、受信したデータレスポンスパケットの「トランザクションID」フィールドを、ID変換テーブル303から選択したレコードに登録された、変換前のトランザクションIDに書き替える。データレスポンス送信部316は、書き替え後のデータレスポンスパケットを、アービタ334を通じてNC131bに送信するとともに、ID変換テーブル303から選択したレコードを削除する。
 さらに、データレスポンス送信部316は、持ち出し管理テーブル302のレコードのうち、送信したデータレスポンスパケットに設定されたアドレスに対応するレコードを更新する。例えば、送信したデータレスポンスパケットの「コマンド」フィールドに「D-Response_E」が設定された場合、データレスポンス送信部316は、レコード内のキャッシュステートをステートEにする。これとともに、データレスポンス送信部316は、レコードに登録された持ち出し先のノードIDを、送信したデータレスポンスパケットの「リクエスタID」フィールドの値に書き替える。また、送信したデータレスポンスパケットの「コマンド」フィールドに「D-Response_E」が設定された場合、データレスポンス送信部316は、レコード内のキャッシュステートをステートSにする。これとともに、データレスポンス送信部316は、レコードに対し、持ち出し先のノードIDとして、送信したデータレスポンスパケットの「リクエスタID」フィールドの値を書き加える。また、送信したデータレスポンスパケットの「コマンド」フィールドに「Complete」が設定された場合、データレスポンス送信部316は、レコード内のキャッシュステートをIステートにする。
 宛先判定部325は、他のSB内のNCからデータレスポンスパケットを受信すると、受信したデータレスポンスパケットの「宛先ID」フィールドを参照する。「宛先ID」フィールドにおいてSB110a内のノードが設定されていた場合、宛先判定部325は、受信したデータレスポンスパケット内の「宛先ID」「リクエスタID」「トランザクションID」の各フィールドの値をグローバルIDからローカルIDに書き替える。宛先判定部325は、書き替え後のデータレスポンスパケットを、SB110a内のリクエスタであるノードに送信する。一方、「宛先ID」フィールドにおいてSB110a以外の他のSB内のノードが設定されていた場合、宛先判定部325は、受信したデータレスポンスパケットを、アービタ334を通じてNC131bに転送する。
 図21は、NCスヌープパケットを他のNCに送信した後のNCの処理例を示すフローチャートである。この図21では、図6の例のように、SB110bのNC131bが、他のNCからリクエストパケットを受信したことをトリガとしてNCスヌープパケットを送信した場合の処理を示す。
 [ステップS71]NC131bのNCレスポンス判定部324は、他のNCからNCレスポンスパケットを受信する。NCレスポンス判定部324は、受信したNCレスポンスパケットの「宛先ID」フィールドがSB110b内のノードを指すことを判定して、受信したレスポンスパケットをNCレスポンス処理部315に送信する。
 [ステップS72]NC131bのNCレスポンス処理部315は、受信したNCレスポンスパケットによって通知された、NCスヌープパケットに応じた処理の結果を、レスポンス受信判定テーブル304に登録する。具体的には、NCレスポンス処理部315のNCレスポンス受信部351は、受信したNCレスポンスパケットの「トランザクションID」フィールドに設定された値と同じトランザクションIDが登録されたレコードを、レスポンス受信判定テーブル304から選択する。NCレスポンス受信部351は、選択したレコード内のレスポンスフラグを「1」に書き替えることで、NCスヌープパケットにより要求された処理が完了したことをレコードに記録する。
 [ステップS73]NC131bのNCレスポンス処理部315は、SB110b内のホームノードにリクエストパケットを送信する。具体的には、NCレスポンス処理部315のパケット判定部352は、ステップS72でレスポンスフラグが書き替えられた、レスポンス受信判定テーブル304のレコードから、「元のパケット」の欄に登録されたパケットを受信する。パケット判定部352は、レコードから受信したパケットがレスポンスパケットであることを認識して、受信したレスポンスパケットをリクエスト送信部354に送信する。リクエスト送信部354は、パケット判定部352からリクエストパケットを受信すると、受信したリクエストパケット内の「宛先ID」「リクエスタID」および「トランザクションID」の各フィールドの値をグローバルIDからローカルIDに変換し、ローカルIDに変換されたリクエストパケットをSB110a内のホームノードに送信する。
 [ステップS74]リクエスト送信部354は、変換前後のIDを、ID変換テーブル303のレコードに登録する。
 NC131bからのリクエストパケットを受信したホームノードは、自身が備える持ち出し管理テーブル202に基づき、受信したリクエストパケットに設定されたアドレスに記憶されたデータが他のSBのノードに持ち出されていると判断して、NC131bに対してローカルスヌープパケットを送信する。
 [ステップS75]NC131bのNCレスポンス処理部315は、ホームノードからのローカルスヌープパケットを受信する。
 [ステップS76]NC131bのNCレスポンス処理部315は、データの持ち出し先ノードでの処理結果を格納したLSレスポンスパケットを、NC131b内のホームノードに返信する。具体的には、NCレスポンス処理部315のスヌープ受信部355は、受信したLSレスポンスパケットの「トランザクションID」フィールドの値を、ID変換テーブル303を基にローカルIDからグローバルIDに変換した後、変換後のトランザクションIDに対応するレコードを、レスポンス受信判定テーブル304から選択する。スヌープ受信部355は、レスポンス受信判定テーブル304から選択したレコードにおいて、レスポンスフラグが「1」であることを確認すると、ホームノードに対してLSレスポンスパケットを送信する。
 [ステップS77]NC131bのNCレスポンス処理部315におけるスヌープ受信部355は、レスポンス受信判定テーブル304から、ステップS76で選択したレコードを削除する。
 NC131bからのLSレスポンスパケットを受信したホームノードは、キャッシュコヒーレンシを保たれたと判断して、NC131bに対して、ステップS73で発行されたリクエストパケットに対する応答としてのデータレスポンスパケットを送信する。
 [ステップS78]NC131bのデータレスポンス送信部316は、ホームノードから送信されたデータレスポンスパケットを受信する。
 [ステップS79]データレスポンス送信部316は、受信したデータレスポンスパケットの「宛先ID」「リクエスタID」「トランザクションID」の各フィールドの値を、ID変換テーブル303に基づいて変換した後、変換後のデータレスポンスパケットをNC131bに送信する。
 [ステップS80]データレスポンス送信部316は、ステップS79で参照した、ID変換テーブル303のレコードを削除する。
 以上説明した第2の実施の形態では、ホームノードに接続したNCは、データの持ち出し先のノードが属するすべてのNCに対して、1つのNCスヌープパケットによって処理の実行を要求することができる。このため、データが複数のノードに持ち出されたときに、ホームノードに接続したNCがデータの持ち出し先のすべてのノードに対して個別にスヌープパケットを送信する場合と比較して、NC間を接続する通信路の伝送負荷を軽減することができる。
 また、NCスヌープパケットにより要求された処理の完了通知も、データの持ち出し先のすべてのノードから、ホームノードが接続されたNCに対して、1つのNCレスポンスパケットによって送信される。このため、データが複数のノードに持ち出された場合に、処理の完了通知が、持ち出し先のすべてのノードから個別のレスポンスパケットを用いて返信される場合と比較して、NC間を接続する通信路に伝送される完了通知のデータ量を軽減することができる。
 なお、上記の第2の実施の形態では、キャッシュ部に対する状態の制御を要求する制御情報をSB間で伝送する場合の例を示したが、他の種類の制御情報をNCスヌープパケットと同様の形式の制御パケットを使用して伝送することもできる。例えば、情報処理システム100内のすべてのノードに対して割り込みを要求するような制御情報を、NCスヌープパケットと同様の形式の制御パケットを使用して伝送することができる。この場合、送信元のNCは、制御パケット内の「ブロードキャストフラグ」において全ビットを「1」とすればよい。制御パケットを受信した、送信元を含むすべてのNCは、NCに接続された全ノードに割り込みの要求をブロードキャストする。これにより、送信元のNCに接続されたノードを含むすべてのノードに対して、割り込みを要求することができる。また、割り込み要求に対するレスポンスパケットは送信されないことから、制御パケット内の「レスポンスフラグ」は初期状態で「0」とされればよい。このような制御パケットを使用することで、NC間の伝送路の負荷を抑制しながら、すべてのノードに対して割り込みを確実に要求できるようになる。
 また、上記の第2の実施の形態では、外部のSBにあるデータの持ち出し先ノードに対してコマンドを送信する際にNCスヌープパケットを使用したが、データの持ち出し先ノードが1つのみである場合には、NCスヌープパケットの代わりに、ローカルスヌープパケットと同じ構成のスヌープパケットが使用されてもよい。ここでは、ローカルスヌープパケットと同じ構成の、NC間で伝送されるスヌープパケットを、「個別スヌープパケット」と呼ぶ。
 図22は、送信するスヌープパケットを判定する処理を示すフローチャートである。ここでは例として、NCスヌープ処理部314がスヌープパケットを送信する際の処理について説明する。
 [ステップS91]NCスヌープ処理部314は、他のSB内のNCに対してNCスヌープパケットを送信すべきであると判定する。NCスヌープパケットを送信すべきと判定する条件は、図12において説明した通りである。
 [ステップS92]NCスヌープ処理部314は、持ち出し管理テーブル302に基づき、他のSBにおけるデータの持ち出し先ノードが1つであるかを判定する。データの持ち出し先ノードが複数ある場合には、ステップS93の処理が実行され、データの持ち出し先ノードが1つの場合には、ステップS94の処理が実行される。
 [ステップS93]NCスヌープ処理部314は、NCスヌープパケットを送信する。
 [ステップS94]NCスヌープ処理部314は、データの持ち出し先ノードのIDを「宛先ノード」フィールドに設定した個別スヌープパケットを送信する。
 なお、ステップS92~S94の処理は、NCスヌープ生成部312がNCスヌープパケットを送信する際に、NCスヌープ生成部312によって実行されてもよい。
 個別スヌープパケットの「宛先ID」フィールドに対応するノードに接続されたNCは、個別スヌープパケットを受信すると、「宛先ID」フィールドが示すノードに対して、ローカルスヌープパケットを送信する。このとき、NCは、受信した個別スヌープパケットにおける「リクエスタID」および「トランザクションID」の各フィールドの値をそれぞれグローバルIDからローカルIDに変換するとともに、「宛先ID」フィールドをNCを示すように変換し、変換後の個別スヌープパケットをローカルスヌープパケットとして送信する。NCは、変換後のローカルIDと変換前のグローバルIDを、持ち出し管理テーブル302に登録する。
 ローカルスヌープパケットを受信したノードは、「コマンド」フィールドで指示された処理を実行した後、処理が完了したことを示す値を「コマンド」フィールドに設定したLSレスポンスパケットを、自身に接続されたNCに送信する。LSレスポンスパケットを受信したNCは、持ち出し管理テーブル302に基づいて、LSレスポンスパケットの「リクエスタID」および「トランザクションID」の各フィールドの値をローカルIDからグローバルIDに変換するとともに、「宛先ID」フィールドの値を、ホームノードを示すIDに変換する。NCは、IDが変換されたLSレスポンスパケットを、個別レスポンスパケットとして他のNCに送信する。個別スヌープパケットを送信した、ホームノードに接続されたNCは、個別レスポンスパケットを受信することで、処理の完了通知を受ける。
 上記の個別スヌープパケットは、「ブロードキャストフラグ」および「レスポンスフラグ」を含まない分だけ、NCスヌープパケットよりデータ量が小さい。このため、他のSBにおけるデータの持ち出し先ノードが1つの場合には、NCスヌープパケットの代わりに個別スヌープパケットを送信することで、SB間に伝送されるデータ量をさらに抑制することができる。
 また、個別レスポンスパケットも、「レスポンスフィールド」を含まない分だけ、NCレスポンスパケットよりデータ量が小さい。このため、個別スヌープパケットに対する応答として個別レスポンスパケットを送信することで、SB間に伝送されるデータ量をさらに抑制することができる。
 上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
 1 情報処理システム
 10a~10d 情報処理部
 11a~11d 制御情報送信部
 12a~12d 制御情報受信部
 20 制御パケット
 21 制御情報
 22 送信先情報

Claims (18)

  1.  複数の情報処理部がリング状通信路によって接続された情報処理システムにおいて、
     前記複数の情報処理部のそれぞれは、
     制御情報と、当該制御情報の送信先とする1つ以上の情報処理部をそれぞれ指定する宛先情報とを含む制御パケットを、前記リング状通信路に送信する制御情報送信部と、
     前記リング状通信路を介して受信した制御パケットに、制御情報の送信先として自身が属する情報処理部が指定されている場合には、前記受信した制御パケットから制御情報を取り込むとともに、自身が属する情報処理部を制御情報の送信先として指定しないように宛先情報を書き替えた制御パケットを前記リング状通信路に送信し、前記受信した制御パケットに制御情報の送信先として自身が属する情報処理部が指定されていない場合には、前記受信した制御パケットを前記リング状通信路に送信する制御情報受信部と、
     を有することを特徴とする情報処理システム。
  2.  前記制御情報受信部は、前記受信した制御パケット内の宛先情報に、制御情報の送信先として自身が属する情報処理部のみが指定されていた場合には、前記受信した制御パケットを前記リング状通信路に送信しないことを特徴とする請求の範囲第1項記載の情報処理システム。
  3.  前記複数の情報処理部のそれぞれは、自身が属する情報処理部の制御情報受信部が受信した制御パケットの送信元を宛先とする応答パケットを前記リング状通信路に送信する応答処理部をさらに有し、
     前記制御情報送信部が送信する制御パケットには、制御情報の送信先に指定された情報処理部のうち少なくとも1つにおいて制御情報が受信済みかを示す受信判定情報が含まれ、
     前記制御情報受信部は、前記受信した制御パケットに制御情報の送信先として自身が属する情報処理部が指定されていた場合、前記受信した制御パケット内の受信判定情報が未受信を示すときには、自身が属する情報処理部を制御情報の送信先として指定しないように前記受信した制御パケットを書き替えるとともに、当該制御パケットの受信判定情報が受信済みを示すように書き替えた制御パケットを前記リング状通信路に送信し、
     前記応答処理部は、自身が属する情報処理部の制御情報受信部が受信した制御パケット内の受信判定情報が未受信を示していた場合に、当該制御パケット内の制御情報に対応する応答情報を格納した応答パケットを生成して前記リング状通信路に送信する、
     ことを特徴とする請求の範囲第1項または第2項記載の情報処理システム。
  4.  前記応答処理部は、自身が属する情報処理部の制御情報受信部によって制御パケットから制御情報が取り込まれた後、前記リング状通信路を介して当該制御パケットに対応する応答パケットを受信したとき、前記取り込まれた制御情報に対応する応答情報を付加した応答パケットを、前記リング状通信路に送信することを特徴とする請求の範囲第3項記載の情報処理システム。
  5.  前記応答処理部は、自身が属する情報処理部の制御情報受信部が受信した制御パケット内の受信判定情報が受信済みを示していた場合に、前記リング状通信路を介して他の情報処理部の応答処理部から受信した応答パケットに、前記受信した応答パケットに対応する制御パケットから取り込まれた制御情報に対応する応答情報を付加して前記リング状通信路に送信することを特徴とする請求の範囲第3項または第4項記載の情報処理システム。
  6.  前記複数の情報処理部のそれぞれは、キャッシュ部を備える演算処理部と、前記複数の情報処理部によって共有されるアドレス空間の一部が割り当てられた記憶部とを備え、
     前記制御情報送信部は、自身が属する情報処理部内の記憶部に対するアクセス要求対象のデータが他の情報処理部内のキャッシュ部にキャッシュされている場合に、前記アクセス要求対象のデータをキャッシュするキャッシュ部が属する1つ以上の情報処理部を制御情報の送信先として指定した制御パケットを、前記リング状通信路に送信する、
     ことを特徴とする請求の範囲第1項または第2項記載の情報処理システム。
  7.  前記複数の情報処理部のそれぞれは、演算処理部と記憶部とをそれぞれ備える情報処理ノードを複数有し、
     前記制御情報受信部は、前記リング状通信路を介して受信した制御パケットから取り込んだ制御情報を、自身が属する情報処理部内の各情報処理ノードに対してブロードキャストすることを特徴とする請求の範囲第6項記載の情報処理システム。
  8.  前記複数の情報処理部のそれぞれは、自身が属する情報処理部の制御情報受信部によってブロードキャストされた制御情報に対する応答情報を、当該情報処理部内のすべての情報処理ノードから受信すると、当該情報処理部の制御情報受信部が受信した制御パケットの送信元を宛先とする応答パケットを、前記リング状通信路に送信する応答処理部をさらに有することを特徴とする請求の範囲第7項記載の情報処理システム。
  9.  前記制御情報送信部が送信する制御パケットには、送信先に指定された情報処理部のうち少なくとも1つにおいて制御情報が受信済みかを示す受信判定情報が含まれ、
     前記制御情報受信部は、前記受信した制御パケットにおいて制御情報の送信先として自身が属する情報処理部が指定されていた場合、前記受信した制御パケット内の受信判定情報が未受信を示すときには、前記受信した制御パケットを自身が属する情報処理部を制御情報の送信先として指定しないように書き替えるとともに、前記受信した制御パケット内の受信判定情報を受信済みを示すように書き替えた制御パケットを前記リング状通信路に送信し、
     前記応答処理部は、自身が属する情報処理部の制御情報受信部が受信した制御パケット内の受信判定情報が未受信を示していた場合に、応答パケットを生成し、当該情報処理部内のすべての情報処理ノードから応答情報を受信すると、受信した応答情報を生成した応答パケットに付加した応答パケットを前記リング状通信路に送信する、
     ことを特徴とする請求の範囲第8項記載の情報処理システム。
  10.  前記応答処理部は、自身が属する情報処理部の制御情報受信部が受信した制御パケット内の受信判定情報が受信済みを示していた場合、当該情報処理部内のすべての情報処理ノードから応答情報を受信し、かつ、他の情報処理部の応答処理部から前記リング状通信路を介して送信された応答パケットを受信したときに、受信した応答パケットに、前記受信した応答パケットに対応する制御パケットから取り込まれた制御情報に対応する応答情報を付加して前記リング状通信路に送信することを特徴とする請求の範囲第9項記載の情報処理システム。
  11.  前記制御情報送信部は、前記アクセス要求対象のデータが、他の情報処理部におけるただ1つのキャッシュ部にキャッシュされている場合、前記アクセス要求対象のデータをキャッシュするキャッシュ部を含む情報処理ノードを宛先とした制御情報を含む個別制御パケットを、前記リング状通信路に送信することを特徴とする請求の範囲第6項~第10項のいずれか1項に記載の情報処理システム。
  12.  前記制御情報送信部から送信される制御パケットは、前記複数の情報処理部のそれぞれに対応して制御情報の送信先として指定されたか否かを示すビットを有する送信先判定情報を含み、
     前記制御情報受信部は、前記受信した制御パケット内の送信先判定情報を基に、制御情報の送信先として自身が属する情報処理部が指定されているか否かを判定し、自身が属する情報処理部が指定されている場合には、前記受信した制御パケット内の送信先判定情報のビットのうち自身が属する情報処理部に対応するビットを、制御情報の送信先として指定しないように書き替える、
     ことを特徴とする請求の範囲第1項記載の情報処理システム。
  13.  前記複数の情報処理部のそれぞれは、演算処理部と記憶部とをそれぞれ備える情報処理ノードを複数有し、
     前記制御情報送信部は、自身が属する情報処理部内の記憶部に対して他の情報処理部からアクセスが要求された場合、または、自身が属する情報処理部における一の情報処理ノードから当該情報処理部の他の情報処理ノード内の記憶部に対してアクセスが要求された場合に、アクセス要求対象のデータが他の情報処理部内のキャッシュ部にキャッシュされているとき、制御パケットを送信する、
     ことを特徴とする請求の範囲第1項記載の情報処理システム。
  14.  前記制御情報送信部が送信する制御パケットに含まれる制御情報は、前記アクセス要求対象のデータをキャッシュするキャッシュ部に対して、前記アクセス要求対象のデータに対応するキャッシュデータの状態が整合性を保つように制御する情報であることを特徴とする請求の範囲第6項記載の情報処理システム。
  15.  複数の情報処理部がリング状通信路によって接続された情報処理システムにおける情報送信方法であって、
     前記複数の情報処理部のうちの第1の情報処理部が、制御情報と、当該制御情報の送信先とする1つ以上の情報処理部をそれぞれ指定する情報とを含む制御パケットを、前記リング状通信路に送信し、
     前記複数の情報処理部のうちの第2の情報処理部が、前記リング状通信路を介して受信した制御パケットに、制御情報の送信先として自身が属する情報処理部が指定されている場合には、前記受信した制御パケットから制御情報を取り込むとともに、自身が属する情報処理部を制御情報の送信先として指定しないように宛先情報を書き替えた制御パケットを前記リング状通信路に送信し、制御情報の送信先として自身が属する情報処理部が指定されていない場合には、前記受信した制御パケットを前記リング状通信路に送信する、
     ことを特徴とする情報送信方法。
  16.  前記第2の情報処理部は、前記受信した制御パケットに、制御情報の送信先として前記第2の情報処理部のみが指定されていた場合には、前記受信した制御パケットを前記リング状通信路に送信しないことを特徴とする請求の範囲第15項記載の情報送信方法。
  17.  前記第1の情報処理部が送信する制御パケットには、制御情報の送信先に指定された情報処理部のうち少なくとも1つにおいて制御情報が受信済みかを示す受信判定情報が含まれ、
     前記第2の情報処理部は、
     前記受信した制御パケットに制御情報の送信先として当該第2の情報処理部が指定されていた場合、前記受信した制御パケット内の受信判定情報が未受信を示すときには、前記受信した制御パケットを当該第2の情報処理部を制御情報の送信先として指定しないように書き替えるとともに、前記受信した制御パケット内の受信判定情報が受信済みを示すように書き替えた制御パケットを前記リング状通信路に送信し、
     前記受信した制御パケットを受信判定情報が受信済みを示すように書き替えた後、前記受信した制御パケットの制御情報に対応する応答情報を格納した、前記第1の情報処理部を宛先とする応答パケットを生成して前記リング状通信路に送信する、
     ことを特徴とする請求の範囲第15項または第16項記載の情報送信方法。
  18.  前記複数の情報処理部のうち第3の情報処理部が、
     前記リング状通信路を介して制御パケットを受信した場合、当該制御パケットの制御情報の送信先として前記第3の情報処理部が指定されているときには、当該制御パケットから制御情報を取り込み、
     当該制御パケットから制御情報を取り込んだ後、当該制御パケットに対応する応答パケットを、前記リング状通信路を介して受信した場合、前記受信した応答パケットに前記取り込んだ制御情報に対応する応答情報を付加して前記リング状通信路に送信する、
     ことを特徴とする請求の範囲第17項記載の情報送信方法。
PCT/JP2010/071788 2010-12-06 2010-12-06 情報処理システムおよび情報送信方法 WO2012077169A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
PCT/JP2010/071788 WO2012077169A1 (ja) 2010-12-06 2010-12-06 情報処理システムおよび情報送信方法
JP2012547606A JP5505516B2 (ja) 2010-12-06 2010-12-06 情報処理システムおよび情報送信方法
EP10860413.3A EP2650794A1 (en) 2010-12-06 2010-12-06 Information processing system and information transmission method
US13/903,201 US20130262553A1 (en) 2010-12-06 2013-05-28 Information processing system and information transmitting method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/071788 WO2012077169A1 (ja) 2010-12-06 2010-12-06 情報処理システムおよび情報送信方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/903,201 Continuation US20130262553A1 (en) 2010-12-06 2013-05-28 Information processing system and information transmitting method

Publications (1)

Publication Number Publication Date
WO2012077169A1 true WO2012077169A1 (ja) 2012-06-14

Family

ID=46206691

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/071788 WO2012077169A1 (ja) 2010-12-06 2010-12-06 情報処理システムおよび情報送信方法

Country Status (4)

Country Link
US (1) US20130262553A1 (ja)
EP (1) EP2650794A1 (ja)
JP (1) JP5505516B2 (ja)
WO (1) WO2012077169A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017515239A (ja) * 2014-05-08 2017-06-08 マイクロン テクノロジー, インク. ハイブリッドメモリキューブシステム相互接続ディレクトリベースキャッシュコヒーレンス方法
EP3355181A1 (en) * 2013-09-10 2018-08-01 Huawei Technologies Co., Ltd. Method and apparatus for responding to request based on node controller

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150012679A1 (en) * 2013-07-03 2015-01-08 Iii Holdings 2, Llc Implementing remote transaction functionalities between data processing nodes of a switched interconnect fabric
CN103577382B (zh) * 2013-10-24 2017-01-04 华为技术有限公司 一种配置节点控制器的方法和装置
US20160034191A1 (en) * 2014-08-01 2016-02-04 Kabushiki Kaisha Toshiba Grid oriented distributed parallel computing platform
US11200168B2 (en) 2018-12-10 2021-12-14 International Business Machines Corporation Caching data from remote memories
US20200183836A1 (en) * 2018-12-10 2020-06-11 International Business Machines Corporation Metadata for state information of distributed memory
US11531620B2 (en) * 2021-03-25 2022-12-20 Arm Limited Distributed virtual memory management for data processing network

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05189380A (ja) * 1992-01-14 1993-07-30 Fujitsu Ltd 共通データ管理方式
JPH06314239A (ja) * 1993-04-28 1994-11-08 Hitachi Ltd プロセッサシステム
JPH10187645A (ja) 1996-07-01 1998-07-21 Sun Microsyst Inc プロセス・ノードの多数のサブノード内にコヒーレンス状態で格納するように構成されたマルチプロセス・システム
JPH11134312A (ja) * 1997-08-22 1999-05-21 Seitai Cho 分散共有メモリ多重プロセッサシステム
JP2002522827A (ja) * 1998-08-06 2002-07-23 インテル・コーポレーション 多重プロセッサ・コンピュータ・システム用の順序外れスヌーピング
JP2002533813A (ja) * 1998-12-21 2002-10-08 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド メモリキャンセルメッセージを用いたシステムメモリ帯域幅の節約およびキャッシュコヒーレンシ維持
JP2005234854A (ja) 2004-02-19 2005-09-02 Hitachi Ltd マルチプロセッサシステム
JP2009245323A (ja) 2008-03-31 2009-10-22 Nec Computertechno Ltd レイテンシ短縮方式及び方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6922390B1 (en) * 1999-06-15 2005-07-26 Nortel Networks Limited Method and apparatus for forecasting and controlling congestion in a data transport network
US7076767B1 (en) * 1999-12-30 2006-07-11 Unisys Corporation Method for controlling and collecting information in a data processing system
US7305492B2 (en) * 2001-07-06 2007-12-04 Juniper Networks, Inc. Content service aggregation system
US7239669B2 (en) * 2002-04-30 2007-07-03 Fulcrum Microsystems, Inc. Asynchronous system-on-a-chip interconnect
JP4855162B2 (ja) * 2006-07-14 2012-01-18 株式会社日立製作所 パケット転送装置及び通信システム

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05189380A (ja) * 1992-01-14 1993-07-30 Fujitsu Ltd 共通データ管理方式
JPH06314239A (ja) * 1993-04-28 1994-11-08 Hitachi Ltd プロセッサシステム
JPH10187645A (ja) 1996-07-01 1998-07-21 Sun Microsyst Inc プロセス・ノードの多数のサブノード内にコヒーレンス状態で格納するように構成されたマルチプロセス・システム
JPH11134312A (ja) * 1997-08-22 1999-05-21 Seitai Cho 分散共有メモリ多重プロセッサシステム
JP2002522827A (ja) * 1998-08-06 2002-07-23 インテル・コーポレーション 多重プロセッサ・コンピュータ・システム用の順序外れスヌーピング
JP2002533813A (ja) * 1998-12-21 2002-10-08 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド メモリキャンセルメッセージを用いたシステムメモリ帯域幅の節約およびキャッシュコヒーレンシ維持
JP2005234854A (ja) 2004-02-19 2005-09-02 Hitachi Ltd マルチプロセッサシステム
JP2009245323A (ja) 2008-03-31 2009-10-22 Nec Computertechno Ltd レイテンシ短縮方式及び方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3355181A1 (en) * 2013-09-10 2018-08-01 Huawei Technologies Co., Ltd. Method and apparatus for responding to request based on node controller
US10324646B2 (en) 2013-09-10 2019-06-18 Huawei Technologies Co., Ltd. Node controller and method for responding to request based on node controller
JP2017515239A (ja) * 2014-05-08 2017-06-08 マイクロン テクノロジー, インク. ハイブリッドメモリキューブシステム相互接続ディレクトリベースキャッシュコヒーレンス方法
JP2020021495A (ja) * 2014-05-08 2020-02-06 マイクロン テクノロジー,インク. ハイブリッドメモリキューブシステム相互接続ディレクトリベースキャッシュコヒーレンス方法
US10838865B2 (en) 2014-05-08 2020-11-17 Micron Technology, Inc. Stacked memory device system interconnect directory-based cache coherence methodology
US11741012B2 (en) 2014-05-08 2023-08-29 Micron Technology, Inc. Stacked memory device system interconnect directory-based cache coherence methodology

Also Published As

Publication number Publication date
JPWO2012077169A1 (ja) 2014-05-19
JP5505516B2 (ja) 2014-05-28
US20130262553A1 (en) 2013-10-03
EP2650794A1 (en) 2013-10-16

Similar Documents

Publication Publication Date Title
JP5505516B2 (ja) 情報処理システムおよび情報送信方法
US5900020A (en) Method and apparatus for maintaining an order of write operations by processors in a multiprocessor computer to maintain memory consistency
US10169080B2 (en) Method for work scheduling in a multi-chip system
TWI431475B (zh) 用於在本地代理者之記憶體鏡像及遷移之裝置、系統及方法
TWI463318B (zh) 快取一致性處理系統、快取記憶體,及其方法
US7174431B2 (en) Mechanism for resolving ambiguous invalidates in a computer system
US5802578A (en) Multinode computer system with cache for combined tags
US9529532B2 (en) Method and apparatus for memory allocation in a multi-node system
CN101802796B (zh) 防止多核处理器中的写回竞争
US7003635B2 (en) Generalized active inheritance consistency mechanism having linked writes
US20050160132A1 (en) Transaction references for requests in a multi-processor network
US10592459B2 (en) Method and system for ordering I/O access in a multi-node environment
US20050160209A1 (en) System and method for resolving transactions in a cache coherency protocol
US9372800B2 (en) Inter-chip interconnect protocol for a multi-chip system
US20150254182A1 (en) Multi-core network processor interconnect with multi-node connection
JP2002304328A (ja) マルチプロセッサシステム用コヒーレンスコントローラ、およびそのようなコントローラを内蔵するモジュールおよびマルチモジュールアーキテクチャマルチプロセッサシステム
JP2000227908A (ja) 共用介入サポ―トを有する不均等メモリ・アクセス(numa)デ―タ処理システム
IL142265A (en) Data processing system with uneven access to memory (NUMA) that precedes a call request for a remote processing industry on an approximate basis
TWI386810B (zh) 多處理器系統以目錄為主之資料傳輸協定
US6874065B1 (en) Cache-flushing engine for distributed shared memory multi-processor computer systems
US20080320234A1 (en) Information processing apparatus and data transfer method
CN112955876A (zh) 具有对写入操作的改进处理的用于数据处理网络的i/o相干请求节点
CN108415861B (zh) 用于缓存内容管理的装置和方法
US20080313411A1 (en) System controller and cache control method
US6678800B1 (en) Cache apparatus and control method having writable modified state

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: 10860413

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2012547606

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 2010860413

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE