WO2014038070A1 - 情報処理装置,並列計算機システム及び情報処理装置の制御方法 - Google Patents

情報処理装置,並列計算機システム及び情報処理装置の制御方法 Download PDF

Info

Publication number
WO2014038070A1
WO2014038070A1 PCT/JP2012/072945 JP2012072945W WO2014038070A1 WO 2014038070 A1 WO2014038070 A1 WO 2014038070A1 JP 2012072945 W JP2012072945 W JP 2012072945W WO 2014038070 A1 WO2014038070 A1 WO 2014038070A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
information
memory
information processing
padding
Prior art date
Application number
PCT/JP2012/072945
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/JP2012/072945 priority Critical patent/WO2014038070A1/ja
Priority to JP2014534128A priority patent/JP5939305B2/ja
Priority to EP12884205.1A priority patent/EP2894568B1/en
Publication of WO2014038070A1 publication Critical patent/WO2014038070A1/ja
Priority to US14/640,559 priority patent/US10002078B2/en

Links

Images

Classifications

    • 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
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem
    • G06F2212/2515Local memory within processor subsystem being configurable for different purposes, e.g. as cache or non-cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/38Universal adapter
    • G06F2213/3808Network interface controller

Definitions

  • the present invention relates to an information processing apparatus, a parallel computer system, and a control method for the information processing apparatus.
  • a parallel computer system in which a plurality of information processing devices (nodes) transmit and receive data to each other and execute arithmetic processing.
  • a parallel computer system in which a plurality of information processing apparatuses that do not share a memory space are connected to each other via an interconnection network.
  • An information processing apparatus included in such a parallel computer system is used for computation among a main memory that is a main storage device that stores data used for computation, an arithmetic processing apparatus that performs computation, and another information processing apparatus.
  • a network interface (communication device) that transmits and receives data to be transmitted.
  • Such an information processing apparatus has a network interface that performs data transmission / reception with other information processing apparatuses via an interconnection network, and stores the received data in the main memory.
  • processing such as invalidating the cache line is required to maintain consistency between the cache memory and the main memory.
  • the cache of the processor of the receiving node caches the address for writing the received data in the write back method. This is a case where the cache line is in a so-called dirty state where update data is not written back to the main memory, and the received data is not aligned with the cache line size. In such a case, it is necessary to write back an area not to be written in the cache line back to the main memory.
  • the received data is aligned with the cache line size, it is not necessary to write back to the main memory. Therefore, when the received data is not aligned with the cache line size, the latency is longer than when the received data is aligned with the cache line size.
  • the present invention has been made in view of such a problem, and an object of the present invention is to reduce latency even when receiving unaligned data.
  • the present invention is not limited to the above-described object, and is an operational effect derived from each configuration shown in the best mode for carrying out the invention described later, and has an operational effect that cannot be obtained by conventional techniques. Can be positioned as one of the goals.
  • this information processing apparatus in any one of the plurality of information processing apparatuses included in the parallel computer system, performs the processing on the data based on the storage device that holds data and the adjustment information included in the received data.
  • a data creation unit that creates padded data with padding
  • a storage processing unit that stores the padded data created by the data creation unit in the storage device.
  • the information processing device includes a storage device that holds data in any of the plurality of information processing devices included in the parallel computer system, data size information and write destination address information of the received data, and the adjustment size information. Based on the data size information and write destination address information of the received data and the adjustment when the determination unit determines that the adjustment is necessary. Based on the size information, a data creating unit that creates padded data obtained by adding padding that matches the adjusted size information to the data, and the padded data created by the data creating unit is stored in the storage device. A storage processing unit for storing.
  • this parallel computer system includes a first information processing device that transmits data including adjustment information, a storage device that holds data, and received data in a parallel computer system having a plurality of information processing devices. Based on the adjustment information, a data creation unit that creates padded data obtained by adding padding to the data, and a storage processing unit that stores the padded data created by the data creation unit in the storage device A second information processing apparatus.
  • this parallel computer system is a parallel computer system having a plurality of information processing devices, wherein the information processing device includes a storage device that holds data, data size information and write destination address information of received data, and the adjustment size.
  • a determination unit that determines whether or not the received data needs to be adjusted based on the information, and when the determination unit determines that the adjustment is necessary, data size information and write destination address information of the received data; Based on the adjustment size information, a data creation unit that creates padded data obtained by adding padding according to the adjustment size information to the data; and the padded data created by the data creation unit A storage processing unit for storing in the apparatus.
  • this information processing apparatus control method is a method for controlling an information processing apparatus that constitutes a parallel computer system including a plurality of information processing apparatuses, and transmits data including adjustment information to the adjustment information included in the received data. Based on the data, padded data obtained by adding padding to the data is created, and the created padded data is stored in a storage device.
  • control method of the information processing device is the control method of the information processing device constituting the parallel computer system including a plurality of information processing devices, the data size information and the write destination address information of the received data, Based on the data size information and write destination address information of the received data and the adjustment size information, when it is determined whether the adjustment is necessary, based on the adjustment size information Padding data is created by adding padding in accordance with the adjustment size information to the data, and the created padding data is stored in a storage device.
  • the latency can be reduced even when unaligned data is received.
  • FIG. 10 is a diagram for explaining an example of a communication apparatus according to a fifth embodiment. It is a figure for demonstrating the parallel computer system in connection with Example 6 of 3rd Embodiment.
  • FIG. 1 is a diagram for explaining a parallel computer system as an example of the first embodiment.
  • the parallel computer system 1 includes a plurality of information processing apparatuses 2 and 2a and a bus 8 that connects the information processing apparatuses 2 and 2a.
  • the information processing apparatuses 2 and 2 a are described, but the parallel computer system 1 may include a larger number of information processing apparatuses.
  • the parallel computer system 1 may have an arbitrary number of information processing apparatuses.
  • the information processing apparatus 2a performs the same processing as the information processing apparatus 2, and the description thereof is omitted.
  • the information processing apparatuses 2 and 2a may be referred to as nodes.
  • the information processing device 2 includes a processor 3, a memory 6, and a communication device (network interface) 10.
  • the processor 3, the memory 6, and the communication device 10 are each connected by a bus included in the information processing device 2.
  • the processor 3 is an arithmetic processing device that executes arithmetic processing.
  • the processor 3 has a processor core 4 that performs operations.
  • the processor core 4 has a cache memory 5.
  • the memory 6 is a main memory (main storage device) included in the information processing apparatus 2 and holds data used by the processor core 4 for calculation.
  • FIG. 2 is a diagram for explaining an example of a memory address.
  • the memory address indicating the storage area of the memory 6 is, for example, a 40-bit memory address when the processor 3 has a 40-bit memory address space. In such a case, for example, the upper “34-N” bit in the range shown in FIG.
  • the “N” bit in the range shown in FIG. 2A is used as a tag, and the “N” bit in the range shown in FIG. As an index, the lower “6” bits in the range shown in FIG. 2C can be divided as an offset.
  • an arbitrary number of bits can be set as the size of the index, and in the following description, “N” bits are set as the index.
  • the cache memory 5 is a storage device that stores data used by the processor core for calculation, and can input and output data at a higher speed than the memory 6.
  • FIG. 3 is a diagram for explaining an example of a cache memory related to a parallel computer system as an example of the first embodiment.
  • the cache memory 5 is a cache memory having 2 N cache lines with a line size of 64 bytes and an overall storage capacity of 2 N + 6 bytes.
  • cache line numbers “0” to “2 N ⁇ 1” are assigned to the respective cache lines.
  • Each cache line has 2-bit status data indicated by (A) in FIG. 3, “34-N” -bit tag data indicated by (B) in FIG. 3, and 64 data indicated by (C) in FIG.
  • Byte data is stored.
  • one bit of the status data is a Valid bit indicating whether or not the data stored in the corresponding cache line is valid. For example, when “1” is stored in the Valid bit, it indicates that the data stored in the corresponding cache line is valid, and when “0” is stored in the Valid bit, Indicates that the data stored in the cache line is invalid.
  • the other bit of the status data is a Dirty bit that is information for maintaining the identity between the data stored in the corresponding cache line and the data stored in the memory 6. For example, when “1” is stored in the Dirty bit, it indicates that the data stored in the corresponding cache line has been updated by the processor core 4 and therefore the data needs to be written back to the memory 6. . When “0” is stored in the Dirty bit, the data stored in the corresponding cache line is not updated by the processor core 4 and is stored in the memory 6 and the data stored in the cache line. Indicates that it is the same as the data. For example, the data stored in the cache line having the Valid bit “1” and the Dirty bit “1” is valid data, and is stored in the memory 6 that is the cache source for rewriting by the processor core 4. It is not the same as the stored data.
  • the cache memory 5 employs a direct map method, and when the data in the memory 6 is cached, the cache memory 5 is stored in a cache line corresponding to the index of the memory address where the cache source data is stored. For example, if the index of the memory address where the cache source data is stored is “i”, the cache memory 5 stores it in the cache line with the cache line number “i”.
  • the cache memory 5 may employ a set associative method having a plurality of cache ways.
  • the processor core 4 is an arithmetic processing unit that performs an operation using data. Specifically, the processor core 4 executes arithmetic processing using data stored in the memory 6 or the cache memory 5. Further, the processor core 4 acquires data stored in the memory 6 and stores the acquired data in the cache memory 5. That is, the processor core 4 holds the data stored in the memory 6 in the cache memory 5. Then, the processor core 4 executes arithmetic processing using the data stored in the cache memory 5.
  • the communication device 10 receives the data transmitted from the other arithmetic processing device. Wait until That is, the processor core 4 executes a polling process for waiting for data of calculation results from other information processing apparatuses.
  • the processor core 4 senses reception and executes arithmetic processing using the received data.
  • the processor core 4 executes the following processing. That is, the processor core 4 refers to the valid bit and the dirty bit that are the state data of the cache line corresponding to the index of the memory address storing the data. Then, if the referenced Valid bit is “1” and the Dirty bit is “1”, the processor core 4 executes the following processing.
  • the processor core 4 uses the cached data stored in the cache memory 5 to update the cache source data stored in the memory 6 to the latest data. Then, the processor core 4 updates the referenced Valid bit from “1” to “0”, and then stores the data received from the communication device 10 in the memory address of the memory 6 received together with the data.
  • the processor core 4 updates the Valid bit to “0” when the referenced Valid bit is “0”, or when the Valid bit is “1” and the Dirty bit is “0”.
  • the received data is stored in the memory 6.
  • the communication device 10 receives packetized data from other information processing devices such as the information processing device 2 a via the bus 8.
  • the packetized data stores data and the memory address of the memory 6 that stores the data.
  • the communication device 10 stores the received data in the memory 6.
  • the communication device 10 when the communication device 10 receives data and information indicating the other information processing device 2a of the transmission destination from the processor 3 (processor core 4), the communication device 10 packetizes the received data, and via the bus 8, The packet is transmitted to the other information processing apparatus 2a of the transmission destination.
  • the communication device 10 receives from the processor core 4 that the data of the processor included in the other information processing device 2a is waiting, the communication device 10 packetizes the received data and is subject to polling processing. Is added to the packet. And the communication apparatus 10 transmits the packet which added control information to the other information processing apparatus 2a of a transmission destination.
  • FIG. 4 is a diagram illustrating a functional configuration of a communication apparatus related to a parallel computer system as an example of the first embodiment.
  • the communication apparatus 10 includes a direct memory access (DMA) controller 204, a control unit 205, a packet transmission unit 206, a padding addition unit 207, and a packet reception unit 208.
  • the DMA controller (storage processing unit) 204 is a bus master, and when notified of the address and data length of data to be DMA from the control unit 205 (to be described later), the address notified by the control unit 205 to the memory 6. And specify the data length and make a DMA request. Then, the memory 6 DMA-transfers the data stored at the designated address to the DMA controller 204 by the designated data length.
  • the DMA controller 204 transmits data DMA-transferred from the memory 6 to the packet transmission unit 206.
  • the DMA controller 204 writes the DMA write data from the DMA write start address of the memory 6 to the area corresponding to the DMA write length. Then, the DMA controller 204 causes the processor 3 to write the data with padding created by the padding adding unit 207 described later to the memory 6 as DMA write data.
  • the control unit 205 controls the DMA controller 204, the packet transmission unit 206, the packet reception unit 208, and the like to perform packet transmission processing.
  • the control unit 205 reads data to be transmitted from the memory 6 by designating the DMA controller 204 with the data length of data included in one packet.
  • the length (size) of the packet transmitted from the information processing apparatus 2 may be constant (fixed) or may be variable.
  • the control unit 205 Upon receiving the data to be transmitted (payload), the control unit 205 creates a packet (transmission packet) with a header added to this data, sends the created packet to the packet transmission unit 206, and transmits it to the bus 8. That is, the control unit 205 functions as a packet generation unit that generates a packet to be transmitted. The control unit 205 packetizes data to be transmitted, and stores, in the packet, a memory address of a memory included in the other information processing apparatus 2a of the transmission destination or the other information processing apparatus 2a of the transmission destination. Then, the control unit 205 transmits the generated packet to the packet transmission unit 206.
  • the packet to be transmitted has, for example, a header part in which an address indicating another information processing apparatus 2a as a transmission destination is stored, and a data part in which data is stored.
  • FIG. 5 is a diagram schematically illustrating a format of a transmission packet in the parallel computer system as an example of the first embodiment.
  • the transmission packet includes fields for storing a packet type, a routing header, a local node address, a remote node address, an offset, a padding flag, an alignment size, and a payload.
  • the packet type is information indicating the type of the packet, and indicates, for example, a packet used for a Put request (Put communication) or a packet used for a Get request (Get communication).
  • Put communication refers to communication in which the local node designates the area of the memory 6 of itself and the remote node, and writes the data of the memory 6 of the local node into the area of the memory 6 of the remote node.
  • the Get communication indicates communication in which the local node designates the area of the memory 6 of the remote node and the local node and writes the data of the memory 6 of the remote node to the area of the memory 6 of the local node.
  • the local node address is information indicating the address (node address) of the transmission source node of the packet
  • the remote node address is information indicating the address of the transmission destination node of the packet.
  • These node addresses are represented by coordinate values of each dimension, for example.
  • the routing header is information for specifying the route of the packet, and is, for example, a coordinate value representing the position of the remote node when the position of the transmission source node (local node) of the packet on the bus 8 is the origin. This routing header is represented by coordinate values of each dimension, for example.
  • the payload is data obtained by dividing a message (data source) transmitted from the transmission source node to the transmission destination node as necessary.
  • the offset is information specifying the address of the memory 6 that stores the payload.
  • the padding flag (necessity information) is information indicating whether alignment is necessary for the packet. For example, data that is not aligned to a predetermined size, such as a cache line size, is set to the padding flag to be valid (for example, “1”). That is, when “1 (valid)” is set in the padding flag, the padding adding unit 207 described later adds padding in accordance with the alignment size.
  • the padding flag is set to be invalid (for example, “0”). That is, when “0 (invalid)” is set in the padding flag, the padding adding unit 207 does not add padding.
  • the padding is a process for adjusting the length by adding meaningless data (for example, “0”) before or after the short data in order to adjust the data to a specific length.
  • a padding adding unit 207 which will be described later, performs so-called “zero padding” in which “0” is added by the number of digits that are insufficient for data to adjust the length.
  • the alignment size (adjusted size information) is a size for aligning the packet by padding, and the padding adding unit 207 adds padding to the payload of the packet according to the alignment size.
  • This alignment size is, for example, the ECC generation unit or the cache line size of the cache memory 5.
  • These padding flags and alignment sizes may be input (set) by an application (not shown) that operates on the information processing apparatus 2, or may be input by an operator.
  • the padding flag and the alignment size are added to the transmission packet by the control unit 205 as padding information (adjustment information).
  • the packet receiving unit 208 receives a packet transmitted from another information processing apparatus 2 or the like via the bus 8 and performs reception processing such as passing the payload to the processor 3. Further, the packet receiving unit 208 sends the data stored in the packet payload and the padding information (padding flag and alignment size) to the padding adding unit 207.
  • the packet transmission unit 206 transmits the packet created by the control unit 205 to the destination information processing device 2 in a state where the information processing device 2 is a transmission source node.
  • the packet transmission unit 206 When receiving a packet header and data from the control unit 205 and the DMA controller 204, the packet transmission unit 206 generates a packet and sends it to the bus 8. Further, in a state where the information processing apparatus 2 is a transmission destination node, the packet transmission unit 206 creates and transmits a response packet to the information processing apparatus 2 that is the transmission source of the received packet.
  • a padding addition unit (data creation unit, determination unit) 207 creates padded data by adding padding to the data received by the packet reception unit 208.
  • the padding adding unit 207 adds padding by adding padding so that the data is aligned with the alignment size when the padding flag “1 (valid)” is set in the padding information received from the packet receiving unit 208. Create data.
  • the padding adding unit 207 calculates the padding length p_f to be added to the head of the payload by the following equation (1).
  • P_f payload write start address ⁇ (n ⁇ alignment size) (1)
  • n floor (payload write start address / alignment size) (2) It is.
  • floor is a floor function
  • n is an integer value obtained by rounding down the decimal portion of “payload write start address / alignment size”.
  • the padding adding unit 207 calculates the padding length p_e added to the end of the payload by the following equation (3).
  • p_e (m ⁇ alignment size) ⁇ (p_f + payload length) (3)
  • m ceil ((payload length + p_f) / alignment size) (4) It is.
  • ceil is a ceiling function
  • m is an integer value obtained by rounding up a decimal part of “(payload length + p_f) / alignment size”.
  • the padding adding unit 207 sets “n ⁇ alignment size” as the DMA write start address, and sets “m ⁇ alignment size” as the DMA write length.
  • the padding adding unit 207 sends the created padded data to the DMA controller 204.
  • the DMA controller 204 writes the data with padding added to the memory 6.
  • the padding adding unit 207 sends the data received by the packet receiving unit 208 to the DMA controller 204.
  • the processing of the padding adding unit 207 of the information processing apparatus 2 in the parallel computer system 1 as an example of the first embodiment will be described according to the flowchart (steps A10 to A40) shown in FIG.
  • step A10 the padding adding unit 207 calculates the above equations (1) to (4) to calculate the values of n, p_f, m, and p_e.
  • step A20 the DMA write head address is set to “n ⁇ alignment size”, and the DMA write length is set to “m ⁇ alignment size”.
  • step A30 the padding adding unit 207 adds padding with a length of p_f to the beginning of the payload and creates padded data with padding with a length of p_e added to the end of the payload. To do. This padded data becomes DMA write data written to the memory 6 by the DMA controller 204.
  • step A40 the padding adding unit 207 sends the DMA write head address, the DMA write length, and the DMA write data (data with padding) set in step A20 to the DMA controller 204, and ends the process. Since the payload is aligned by the padding adding unit 207, the address and length of the payload are directly set to the DMA address and length.
  • the DMA controller 204 writes DMA write data (data with padding) from the DMA write start address of the memory 6 to the area corresponding to the DMA write length.
  • the processing at the time of data reception of the communication device 10 of the information processing device 2 in the parallel computer system 1 as an example of the first embodiment configured as described above will be described according to the flowchart (steps B1 to B4) shown in FIG. .
  • the packet receiving unit 208 of the communication device 10 receives the data, and sends the data stored in the packet payload and the padding information (padding flag and alignment size) to the padding adding unit 207.
  • the padding adding unit 207 determines whether the padding flag is valid with reference to the padding information. If “1” is set in the padding flag, that is, if the padding flag is valid (see YES route in Step B1), the padding adding unit 207 adds padding to the payload in Step B2. That is, padding adding section 207 performs processing according to the flowchart shown in FIG.
  • step B3 the DMA controller 204 writes the DMA write data (padded data) from the DMA write start address of the memory 6 to the area corresponding to the DMA write length, and the process is terminated.
  • the padding flag is set in the padding flag as a result of the determination in step B1, that is, if the padding flag is invalid (see NO route in step B1), the process proceeds to step B3.
  • the padding addition unit 207 refers to the padding information added to the received data and the padding flag is valid. In some cases, padded data is added to the payload to create padded data.
  • the DMA controller 204 writes the padded data in the memory 6. Thus, even when the received data is not aligned, the padding adding unit 207 aligns this data, so that the latency when writing to the memory 6 can be shortened.
  • padding information (padding flag and padding size) is added to the data to be transmitted, so that execution / non-execution of padding at the time of data reception in the information processing apparatus 2 at the transmission destination can be controlled. Is expensive. Further, padding adding section 207 calculates the length p_f of padding performed on the beginning of the payload and the length p_e of padding performed on the end of the payload, using the above-described equations (1) to (4). And create padded data.
  • the padding adding unit 207 sends the created padded data to the DMA controller 204.
  • the DMA controller 204 writes the data with padding added to the memory 6.
  • data with padding can be easily created. That is, data alignment can be easily realized.
  • the padding adding unit 207 sets the DMA write head address as “n ⁇ alignment size” based on the values n and m calculated by the equations (2) and (4), and sets the DMA write length to “m ⁇ Set to "Alignment size”. Then, the DMA controller 204 writes the data with padding to the area corresponding to the DMA write length from the DMA write start address of the memory 6, so that the data can be written to the memory 6 with a small latency.
  • the transmission source information processing apparatus 2a transmits a packet including padding information having a padding flag and an alignment size.
  • the padding adding unit 207 creates data with padding based on the padding information.
  • the present invention is not limited to this.
  • a transmission packet does not include a padding flag and an alignment size.
  • FIG. 8 is a diagram schematically illustrating a format of a transmission packet in the parallel computer system 1 as an example of the second embodiment
  • FIG. 9 is a diagram illustrating a functional configuration of a communication apparatus related to the parallel computer system.
  • the same fields as those already described indicate the same parts, and the description thereof is omitted.
  • the transmission packet includes fields for storing a packet type, a routing header, a local node address, a remote node address, an offset, and a payload.
  • the communication apparatus 10 has a cache line size holding section (adjusted size information storage section) in addition to the communication apparatus 10 of the first embodiment. ) 209, and other parts are configured in the same manner as the information processing apparatus 2 of the first embodiment.
  • the cache line size holding unit (adjustment size information storage unit) 209 is a storage device (memory) that holds the cache line size (adjustment information, adjustment size information) of the cache memory 5 of the processor 3.
  • the cache line size holding unit 209 stores the cache line size notified from the processor 3.
  • the processor 3 preferably notifies the cache line size holding unit 209 of the cache line size at a predetermined timing such as when the information processing apparatus 2 is activated.
  • the padding adding unit 207 determines whether the payload is aligned based on the packet received by the packet receiving unit 208. Specifically, the padding adding unit 207 aligns this data when the payload write start address of the received packet is a multiple of the alignment size and the length of the payload is a multiple of the alignment size. Judge.
  • the padding adding unit 207 adds padding to the data received by the packet receiving unit 208 to create data with padding.
  • the padding adding unit 207 reads the cache line size from the cache line size holding unit 209 as the alignment size, and uses it for calculating the above-described equations (1) to (4).
  • step A1 the padding addition unit 207 determines whether the payload is aligned based on the packet received by the packet reception unit 208.
  • the padding adding unit 207 determines that the payload is not aligned (see NO route in step A1), it creates padded data by adding padding to the data received by the packet receiving unit 208 To do. That is, steps A10 to A40 are performed.
  • the padding adding unit 207 determines that the payload is aligned (see YES route in step A1), the write start address of the payload is set to the DMA write start address in step A50, and the payload Let the length be the DMA write length. Further, the payload is set as DMA write data.
  • step A40 the padding adding unit 207 sends the DMA write head address, the DMA write length, and the DMA write data set in step A20 to the DMA controller 204, and ends the processing.
  • the DMA controller 204 writes DMA write data from the DMA write start address of the memory 6 to an area corresponding to the DMA write length.
  • the padding addition unit 207 aligns the payload based on the packet received by the packet reception unit 208. Judge whether or not. When it is determined that the payload is not aligned, the padding adding unit 207 adds padding to the payload and creates padded data. As a result, as in the first embodiment, even when the received data is not aligned, the latency when writing to the memory 6 can be shortened.
  • padding adding section 207 calculates the length p_f of padding performed on the beginning of the payload and the length p_e of padding performed on the end of the payload, using the above-described equations (1) to (4). And create padded data.
  • the padding adding unit 207 sends the created padded data to the DMA controller 204.
  • the DMA controller 204 writes the data with padding added to the memory 6.
  • the padding adding unit 207 sets the DMA write head address as “n ⁇ alignment size” based on the values n and m calculated by the equations (2) and (4), and sets the DMA write length to “m ⁇ Set to "Alignment size”. Then, the DMA controller 204 writes the data with padding to the area corresponding to the DMA write length from the DMA write start address of the memory 6, so that the data can be written to the memory 6 with a small latency.
  • the processor core 4 includes a communication device as data stored in the cache memory 5. When data is received from 10, the received data is stored in the cache memory 5 and the memory 6.
  • the padding adding unit 207 stores the padded data created by adding padding to the payload. Also in the parallel computer system 1 of Example 1 of the third embodiment, when the processor core 4 executes the arithmetic processing using the result of the calculation by another information processing apparatus such as the information processing apparatus 2a, the processor core 4 It waits until the communication apparatus 10 receives the data transmitted from the arithmetic processing apparatus. That is, the processor core 4 executes a polling process for waiting for data of calculation results from other information processing apparatuses.
  • the processor core 4 acquires the received data, and acquires it.
  • the stored data is stored in the cache memory 5 and the memory 6.
  • an example of processing for storing the data received by the processor core 4 in the cache memory 5 and the memory 6 will be described.
  • the processor core 4 stores the received data in the memory 6.
  • the processor core 4 executes the following processing. That is, the processor core 4 stores the received data in the memory 6 and stores the received data in the cache memory 5. That is, when the processor core 4 receives data from the communication device 10 as data to be stored in the cache memory 5, the processor core 4 stores the received data in the cache memory 5 and the memory 6.
  • the processor core 4 when the processor core 4 stores the received data in the cache memory 5, the information for maintaining the identity between the data stored in the cache memory 5 and the data stored in the memory 6. Refer to Then, the processor core 4 discharges the data stored in the cache memory 5 to the memory 6 based on the information for maintaining the referenced identity, and then stores the received data in the cache memory 5. Thereafter, the processor core 4 executes arithmetic processing using the data stored in the cache memory 5, that is, data to be polled.
  • the processor core 4 transmits the calculated data to another information processing apparatus as a result of the calculation, the processor core 4 transmits information indicating the information processing apparatus of the transmission destination and the calculated data to the communication apparatus 10. At this time, the processor core 4 determines whether or not the calculated data is data waiting for a processor core included in another information processing apparatus. If the processor core 4 determines that the calculated data is data that the processor core of another information processing apparatus is waiting for, the processor core 4 notifies the communication apparatus 10 that the processor core is waiting for data. Send.
  • the processor core 4 receives data from the communication device 10 as data stored in the cache memory 5 .
  • the processor core 4 refers to the Valid bit, Dirty bit, and tag data of the cache line that stores the received data. That is, the processor core 4 refers to the Valid bit and Dirty bit of the cache line corresponding to the index of the memory address storing the received data.
  • the processor core 4 stores the received data in the memory 6 when the referenced Valid bit is “0” or the referenced tag data does not match the received tag data of the memory address.
  • the processor core 4 executes the following processing when the referenced Valid bit is “1” and the referenced tag data matches the tag of the memory address storing the received data. That is, the processor core 4 stores the data received from the communication device 10 in the cache line that refers to the status data and the tag data.
  • the communication device 10 receives packetized data from other information processing devices such as the information processing device 2a via the bus 8. Here, the packetized data stores data and the memory address of the memory 6 that stores the data.
  • the communication apparatus 10 determines whether the received data is data that the processor core 4 is waiting for.
  • the communication device 10 determines that the received data is data that the processor core 4 is waiting for, the communication device 10 transmits the data to the processor core 4 as data to be stored in the cache memory 6. That is, the communication apparatus 10 stores the received data in the cache memory 5 and the memory 6 by transmitting the data to the processor core 4 as data stored in the cache memory 6.
  • the communication device 10 determines that the received data is not the data that the processor core 4 is waiting for, the communication device 10 transmits the data to the processor core 4 as data to be stored in the memory 6. That is, the communication device 10 stores the received data in the memory 6 by transmitting the data to the processor core 4 as data stored in the memory 6. Further, when the communication device 10 receives the data and the information indicating the other information processing device 2 a of the transmission destination from the processor core 4, the communication device 10 packetizes the received data and transmits the other data of the transmission destination via the bus 8. The packet is transmitted to the information processing apparatus 2a.
  • the communication device 10 when the communication device 10 receives from the processor core 4 that the data of the processor included in the other information processing device 2a is waiting, the communication device 10 packetizes the received data and is subject to polling processing. Is added to the packet. And the communication apparatus 10 transmits the packet which added control information to the other information processing apparatus 2a of a transmission destination.
  • Example 1 of the third embodiment in the communication device 10, when “1 (valid)” is set as the padding flag in the padding information received via the determination unit 14, the padding addition unit 207 Create padded data by padding the data so that the data is aligned to the alignment size.
  • the communication device 10 transmits this padded data to each processor core 4 as data held in the cache memory 5 or the memory 6.
  • the padding adding unit 207 sends the data received by the packet receiving unit 208 to each processor core 4 in the cache memory 5 or It is transmitted as data held in the memory 6. In other words, the communication device 10 a transmits the aligned data to the processor core 4.
  • FIG. 11 is a diagram for explaining an example of a communication apparatus related to the parallel computer system as Example 1 of the third embodiment.
  • the communication device 10 further includes a determination unit 14 in the communication device 10 of the first embodiment.
  • the control unit 205 packet generation unit executes the following processing when transmitting data that the processor core of another information processing apparatus 2a is waiting for. That is, the control unit 205 packetizes the data to be transmitted, and stores the memory address and the like of the memory included in the other information processing apparatus 2a of the transmission destination and the other information processing apparatus 2a of the transmission destination.
  • the control unit 205 adds control information indicating that data is written to a cache memory included in a processor core of another information processing apparatus 2a to the packet. Then, the control unit 205 transmits the generated packet to the packet transmission unit 206.
  • FIG. 12 is a diagram for explaining an example of a packet generated by the control unit 205 according to Example 1 of the third embodiment.
  • the conventional packet has a header portion in which an address indicating another information processing apparatus 2a of the transmission destination is stored, and a data portion in which data is stored.
  • the control unit 205 generates a packet shown in FIG. Specifically, as shown in FIG. 12C, the control unit 205 adds a 1-bit flag area for storing control information between the header and data of the packet.
  • the control unit 205 stores “1” in the flag area as control information when the data to be transmitted is data that the processor core of the other information processing apparatus 2a of the transmission destination waits. Further, when the data to be transmitted is not the data that the processor core of the information processing apparatus as the transmission destination waits for, the control unit 205 stores “0” in the flag area as control information. It is assumed that the packet storing the control information described above generates not only the information processing apparatus 2 but also other information processing apparatuses such as the information processing apparatus 2a.
  • the packet transmission unit 206 when the packet transmission unit 206 receives the packet generated by the control unit 205, the packet transmission unit 206 transmits the received packet to the transmission destination via the bus 8 as illustrated in FIG. It transmits to the other information processing apparatus 2a. As shown in (C) of FIG. 11, the packet reception unit 208 transfers the received packet to the determination unit 14 when receiving the packet via the bus 8. The determination unit 14 determines whether “1” is stored in the flag area of the received packet.
  • the determination unit 14 determines that the data stored in the packet is data stored in the cache memory 5. Further, when “0” is stored in the flag area of the packet, the determination unit 14 determines that the data stored in the packet is data stored in the memory 6. Thereafter, the determination unit 14 transmits the determined content and the data stored in the packet to the padding addition unit 207.
  • the padding adding unit 207 creates padded data by adding padding to the data received by the packet receiving unit 208.
  • the padding addition unit 207 performs padding by adding padding so that the data is aligned with the alignment size when “1 (valid)” is set as the padding flag in the padding information received via the determination unit 14. Creates data with a label. And then.
  • the padding adding unit 207 sends the created padded data to the DMA controller 204 as DMA write data.
  • the padding adding unit 207 sends the data received by the packet receiving unit 208 to the DMA controller 204 as DMA write data.
  • the DMA controller 204 storage unit executes the following processing. That is, the DMA controller 204 transmits the DMA data sent from the padding adding unit 207 to the processor core 4 as data to be stored in the cache memory 5 and the memory 6 as shown in FIG.
  • the DMA controller 204 stores the DMA data sent from the padding addition unit 207 in the memory 6.
  • the data is transmitted to the processor core 4 as data. Specifically, when “1” is stored in the flag area of the packet, the DMA controller 204 sends the data received from the padding adding unit 207 and a notification that the data is stored in the cache memory 5 to the processor. Transmit to core 4. If “0” is stored in the flag area of the packet, the DMA controller 204 transmits the data received from the padding adding unit 207 to the processor core 4. That is, the DMA controller 204 transmits data received from the padding adding unit 207 as data to be stored in the memory 6 to the processor core 4.
  • the padding adding unit 207 creates padded data by adding padding to the payload of this data. .
  • the communication device 10 transmits the padded data to the processor core 4. If the data received by the packet receiving unit 208 is aligned, the padding adding unit 207 transmits the data received by the packet receiving unit 208 to the processor core 4.
  • the communication device 10 transmits the aligned data (aligned data) to the processor core 4.
  • the communication device 10 executes the following processing when transmitting data that is waited for by a processor core of another information processing device 2a, that is, data to be polled. That is, the communication device 10 stores “1” as control information in the flag area of the packet to be transmitted, and transmits the control information to the other information processing device 2a of the transmission destination.
  • communication apparatuses included in other information processing apparatuses such as the information processing apparatus 2a also transmit a packet storing “1” in the flag area when transmitting data that the processor core 4 is waiting for.
  • the communication device 10 stores the alignment size in the alignment size area of the data (packet) to be transmitted. Furthermore, when the data to be transmitted is not aligned to the alignment size, the communication device 10 stores “1” in the padding flag area and transmits the data. Further, when the data to be transmitted is aligned to the alignment size, the communication device 10 stores “0” in the padding flag area and transmits the data.
  • the communication device 10 transmits the data stored in the received packet to the padding adding unit 207 as data to be written in the cache memory 5.
  • the padding adding unit 207 adds padding in accordance with the alignment size to the received packet and transmits the packet to the DMA controller 204.
  • the DMA controller 204 transmits the packet received from the padding adding unit 207 to the processor core 4 as data to be written in the cache memory 5.
  • the processor core 4 caches the data received from the communication device 10 when the data stored in the memory address to which the received data is to be written among the data stored in the memory 6 is cached in the cache memory 5. Cache in memory 5. For this reason, the processor core 4 can read the waiting data from the cache memory 5 instead of the memory 6, and therefore can efficiently execute the arithmetic processing.
  • the DMA write data received by the processor core 4 is aligned data (aligned data), so that the latency when stored in the cache memory 5 can be reduced.
  • the communication device 10 transmits the data stored in the received packet to the padding adding unit 207 as data to be written in the memory 6.
  • the padding adding unit 207 adds padding in accordance with the alignment size to the received packet and transmits the packet to the DMA controller 204.
  • the DMA controller 204 transmits the packet received from the padding adding unit 207 to the processor core 4 as data to be written in the memory 6.
  • the processor core 4 writes data into the memory 6. That is, the information processing apparatus 2 stores the data that the processor core 4 is waiting for in the cache memory 5 of the processor core 4 only when the data is received from the other information processing apparatus 2a, and stores other data in the memory 6 Store. For this reason, as a result of preventing the data used for the calculation stored in the cache memory 5 from being discharged by the data that is unknown to be used for the calculation, the parallel computer system 1 can prevent the calculation processing speed from being lowered. .
  • the DMA write data received by the processor core 4 is aligned data (aligned data), so that the latency when stored in the cache memory 5 can be reduced.
  • the processor 3, the processor core 4, the control unit 205, the packet transmission unit 206, the packet reception unit 208, the determination unit 14, the padding addition unit 207, and the DMA controller 204 are realized by an integrated circuit such as an LSI.
  • FIG. 13 is a flowchart for explaining the flow of processing executed by the communication apparatus according to Example 1 of the third embodiment. In the example illustrated in FIG. 13, the communication device 10 starts processing with the reception of a packet whose destination is the information processing device 2 via the bus 8 as a trigger.
  • the communication apparatus 10 determines whether “1” is stored in the flag area of the received packet (step S101). When “1” is stored in the flag area of the received packet (see YES route in step S101), the communication device 10 stores the data stored in the received packet in the cache memory 5. Data is transmitted to the processor core 4 (step S102). At this time, if “1” is stored in the padding flag, the padding adding unit 207 adds padding according to the alignment size to the received packet to create DMA write data. . The padding adding unit 207 transmits the created DMA write data to the DMA controller 204, and the DMA controller 204 transmits the DMA write data to the processor core 4 as data stored in the cache memory 5.
  • the padding adding unit 207 stores the received packet in the received packet without adding padding in accordance with the alignment size. Data is transmitted to the DMA controller 204 as DMA write data. The DMA controller 204 transmits DMA write data to the processor core 4 as data to be stored in the cache memory 5.
  • the communication device 10 stores the data stored in the received packet in the memory 6. To the processor core 4 (step S103). Thereafter, the communication device 10 ends the process. At this time, if “1” is stored in the padding flag, the padding adding unit 207 adds padding according to the alignment size to the received packet to create DMA write data. . The padding adding unit 207 transmits the created DMA write data to the DMA controller 204, and the DMA controller 204 transmits the DMA write data to the processor core 4 as data stored in the memory 6. When “0” is stored in the padding flag, the padding adding unit 207 stores the received packet in the received packet without adding padding in accordance with the alignment size.
  • Data is transmitted to the DMA controller 204 as DMA write data.
  • the DMA controller 204 transmits DMA write data to the processor core 4 as data to be stored in the memory 6.
  • the information processing apparatus 2 determines whether or not the processor core 4 is waiting for the received data.
  • the information processing apparatus 2 stores the received data in the cache memory 5. Further, when the information processing apparatus 2 determines that the received data is not waiting for the processor core 4, the information processing apparatus 2 stores the received data in the memory 6 instead of the cache memory 5.
  • the information processing apparatus 2 prevents the data stored in the cache memory 5 from being discharged when the processor core 4 receives data that is not used for calculation.
  • the processor core of each information processing device 2, 2a can execute efficient processing using data stored in the cache memory, thereby preventing a reduction in calculation processing speed. can do.
  • Each information processing device 2, 2 a stores control information indicating that the processor core is waiting in a packet to be transmitted when transmitting data that the processor core of another information processing device is waiting for. .
  • Each information processing device 2, 2 a stores the data of the received packet in the cache memory 5 when the control information is stored in the received packet.
  • Each information processing device 2, 2 a stores the data of the received packet in the memory 6 when the control information is not stored in the received packet. Therefore, each of the information processing apparatuses 2 and 2a can easily determine whether or not the received data should be stored in the cache memory.
  • the padding adding unit 207 refers to the padding information added to the received data, and creates padded data by adding padding to the payload when the padding flag is valid.
  • the DMA controller 204 writes the padded data in the cache memory 5 and the memory 6. As a result, even when the received data is not aligned, the latency when writing to the cache memory 5 or the memory 6 can be reduced.
  • Example 2 of the third embodiment a parallel computer system having a plurality of information processing apparatuses in which processors having a plurality of processor cores are installed will be described.
  • FIG. 14 is a diagram for explaining an example of a parallel computer system related to Example 2 of the third embodiment.
  • the parallel computer system 1a includes a plurality of information processing apparatuses 2b and 2c. Note that the information processing apparatus 2c performs the same processing as the information processing apparatus 2b, and a description thereof will be omitted.
  • the information processing apparatus 2b has a processor 3a. Further, the processor 3a has a plurality of processor cores 4a to 4c. An arbitrary number of processor cores in the processor 3a can be applied.
  • the processor cores 4a to 4c have cache memories 5a to 5c, respectively. In the following description, the processor cores 4b and 4c are assumed to perform the same functions as the processor core 4a, and the description thereof is omitted.
  • the cache memories 5b and 5c are assumed to perform the same functions as the cache memory 5a, and the description thereof is omitted.
  • the cache memory 5a has a plurality of cache lines for storing status data, tag data, and data, like the cache memory 5 according to Example 1 of the third embodiment.
  • the cache memory 5 stores the identity information indicating the relationship between the data stored in the same cache line as the tag information, the data stored in the other cache memories 5b and 5c, and the data stored in the memory 6. Is done.
  • the cache memory 5 stores information indicating the state of the cache line based on the MESI protocol (Illinois protocol) as the state data. Specifically, when “M: Modify” is stored in the state data, the data stored in the same cache line is exclusively cached, and the cached data is updated by the processor core 4a. Indicates that the status has been updated.
  • MESI protocol Illinois protocol
  • the processor core 4a stores the received data in the memory 6 when the communication device 10a receives data that the processor cores 4a to 4c have not waited for. In addition, the processor core 4a holds in the cache memory 5a the data received by the communication device 10a that is waiting for itself and stored in the memory address of the memory 6 where the received data is stored. If so, the following processing is executed.
  • the processor core 4a determines whether or not the data held in the cache memory 5a is cached by the other processor cores 4b and 4c. If it is determined that the data is held, the processor core 4a stores the received data in the memory 6 To store. When the processor core 4a determines that the data held in the cache memory 5a is not cached by the other processor cores 4b and 4c, the processor core 4a stores the received data only in the cache memory 5a.
  • the padding adding unit 207 adds padding to the payload to form padded data, and the padded data is stored in the cache memories 5a and 5b. , 5 c and the memory 6. If the data received by the communication device 10a is aligned, the data is stored in the cache memories 5a, 5b, 5c and the memory 6 in the aligned state. That is, the aligned data is stored in the cache memories 5a, 5b, 5c and the memory 6.
  • the processor core 4a executes the following processing. That is, the processor core 4a refers to the cache line status data corresponding to the index of the memory address of the memory 6 storing the received data in the cache memory 5a.
  • the processor core 4a writes the data stored in the same cache line as the referenced state data to the memory 6.
  • the processor core 4a updates the referenced state data from “M” to “I”.
  • the processor core 4 a stores the received data in the memory 6. If the referenced state data is other than “M”, the processor core 4 a updates the referenced state data to “I” and stores the received data in the memory 6.
  • the data written to the memory 6 is aligned data.
  • the processor core 4a executes the following processing. That is, the processor core 4a refers to the cache line state data and the tag data corresponding to the memory address index of the memory 6 storing the received data in the cache memory 5a.
  • the processor core 4a receives the received data when “I” is stored in the referenced status data, or when the tag of the memory address storing the received data does not match the referenced tag data. Is stored in the memory 6.
  • the data written to the memory 6 is also aligned data.
  • the processor core 4a stores the received data in the memory 6 when "S" is stored in the referenced status data, and the tag of the memory address storing the received data matches the referenced tag data. And the state data referred to is updated from “S” to “I”. Further, the processor core 4a performs the following processing when the referenced status data is “M” or “E” and the tag of the memory address storing the received data matches the referenced tag data. Execute. That is, the processor core 4a stores the received data in the cache memory 5a, and updates the referenced state data to “M”. The data written to the cache memory 5 is also aligned data.
  • each of the processor cores 4a to 4c receives data from the communication device 10a as data to be stored in the cache memory, the cache line state data and tag data corresponding to the index of the memory address for storing the received data And refer to.
  • Each of the processor cores 4a to 4c receives the received data from the referenced status data and the tag data, and is stored in the memory address for storing the received data. It is determined whether or not the data stored in its own cache memory. That is, each of the processor cores 4a to 4c determines whether or not polling processing is performed on its own cache memory.
  • the communication device 10a When the communication device 10a receives a packet from another information processing device such as the information processing device 2c, the communication device 10a determines whether “1” is stored in the flag area of the received packet. Then, when “1” is stored in the flag area of the received packet, the communication device 10a executes the following processing. That is, the communication device 10a transmits the received data as data to be held in the cache memory to the processor cores 4a to 4c. At this time, in the communication device 10a, when “1 (valid)” is set as the padding flag in the padding information received via the determination unit 14, the padding adding unit 207 aligns the data to the alignment size. Create padded data by adding padding. The communication device 10a transmits the padded data to the processor cores 4a to 4c as data held in the cache memories 5a to 5c.
  • the padding adding unit 207 transmits the data received by the packet receiving unit 208 to the processor cores 4a to 4c in the cache memory. It is transmitted as data held in 5a to 5c.
  • the communication device 10 a transmits the received data to the processor cores 4 a to 4 c as data to be stored in the memory 6.
  • the padding adding unit 207 aligns the data to the alignment size. Create padded data by adding padding. The communication device 10a transmits the padded data as data held in the memory 6 to the processor cores 4a to 4c.
  • FIG. 15 is a diagram for explaining a communication device according to Example 2 of the third embodiment.
  • the communication device 10a includes a control unit 205 (packet generation unit), a packet transmission unit 206, a packet reception unit 208, a determination unit 14, a padding addition unit 207, and a DMA controller 204a (storage unit).
  • the padding adding unit 207 creates data with padding by adding padding so that the data is aligned with the alignment size when the padding flag “1” is set in the padding information received via the determination unit 14. To do.
  • the padding adding unit 207 transmits the created padded data to the DMA controller 204.
  • the padding adding unit 207 transmits the data received by the packet receiving unit 208 to the DMA controller 204.
  • the DMA controller 204a performs data cached in the cache memories 5a to 5c as shown in FIG.
  • the received data is transmitted to each of the processor cores 4a to 4c. That is, when the determination unit 14 determines that “1” is stored in the flag area of the packet, the DMA controller 204a holds the data stored at the memory address of the memory 6 that stores the received data.
  • the received data is stored in the cache memory.
  • the DMA controller 204a receives the data stored in the memory 6 as shown in FIG.
  • the transmitted data is transmitted to each of the processor cores 4a to 4c. That is, when the determination unit 14 determines that “0” is stored in the flag area of the packet, the DMA controller 204 a stores the received data in the memory 6.
  • the information processing apparatus 2b includes the processor 3a having the plurality of processor cores 4a to 4c. Each of the processor cores 4a to 4c has cache memories 5a to 5c, respectively.
  • the information processing device 2b When the information processing device 2b receives a packet from another information processing device such as the information processing device 2c, whether or not “1” is stored as control information in the flag area of the received packet. Determine. When “1” is stored as the control information, the information processing device 2b stores the data stored in the memory address of the memory 6 that stores the received packet data in the cache memory that caches the data. Stores received packet data. Further, when “0” is stored as the control information, the information processing apparatus 2 b stores the received packet data in the memory 6.
  • the information processing apparatus 2b when the information processing apparatus 2b receives data to be polled by the processor cores 4a to 4c, the information processing apparatus 2b can directly store the received data in the cache memories 5a to 5c. Therefore, the information processing apparatus 2b can efficiently perform the arithmetic processing executed by the processor 3a even when the processor 3a is a multi-core processor having a plurality of processor cores 4a to 4c.
  • the information processing apparatus 2b when the information processing apparatus 2b receives data that is not subject to polling processing by the processor cores 4a to 4c, the information processing apparatus 2b stores the received data in the memory 6. For this reason, the information processing device 2b can prevent the data used by the processor cores 4a to 4c from being output from the cache memories 5a to 5c by the received data. Therefore, the parallel computer system 1a can cause the processor 3a to execute efficient arithmetic processing without reducing the calculation processing speed.
  • each cache memory 5a to 5c stores identity information indicating the relationship between the data held in itself, the data held in the other cache memories 5a to 5c, and the data stored in the memory 6.
  • identity information indicating the relationship between the data held in itself, the data held in the other cache memories 5a to 5c, and the data stored in the memory 6.
  • each of the processor cores 4a to 4c receives data as data to be stored in the cache memory, each of the processor cores 4a to 4c includes the data cached in its own cache memory 5a to 5c and the data at the memory address for storing the received data. Each piece of identity information is retained.
  • each of the processor cores 4a to 4c maintains the identity of the cached data and the data stored in the memory 6 based on the identity information stored in its own cache memory 5a to 5c. Thereafter, each of the processor cores 4a to 4c stores the data received from the communication device 10 in the cache memories 5a to 5c. For this reason, the parallel computer system 1a retains data coherency even when each of the processor cores 4a to 4c has its own cache memory 5a to 5c, and executes appropriate arithmetic processing on each of the information processing devices 2b and 2c. Can be made.
  • the padding adding unit 207 refers to the padding information added to the received data, and creates padded data by adding padding to the payload when the padding flag is valid.
  • the DMA controller 204 writes the padded data to the cache memories 5 a to 5 c and the memory 6. As a result, even when the received data is not aligned, the latency when writing to the cache memories 5a to 5c and the memory 6 can be shortened.
  • Example 3 of the third embodiment a parallel computer system having a plurality of information processing apparatuses in which a plurality of processor cores each having its own L1 cache memory and a processor having one L2 cache memory shared by each processor core is installed. Will be described.
  • FIG. 16 is a diagram for explaining an example of a parallel computer system according to Example 3 of the third embodiment.
  • the parallel computer system 1b includes a plurality of information processing apparatuses 2e and 2f. Note that the information processing device 2f performs the same processing as the information processing device 2e, and a description thereof will be omitted.
  • the information processing device 2e has a processor 3b.
  • the processor 3b includes a plurality of processor cores 4d to 4f and a level 2 cache memory 7 shared by the processor cores 4d to 4f.
  • Each of the processor cores 4d to 4f has level 1 cache memories 5d to 5f, respectively. Note that the processor cores 4e and 4f exhibit the same functions as the processor core 4d, and a description thereof will be omitted.
  • Example 3 of the third embodiment in the communication device 10a, when “1 (valid)” is set as the padding flag in the padding information received via the determination unit 14, the padding addition unit 207 Create padded data by padding the data so that the data is aligned to the alignment size.
  • the communication device 10a transmits the padded data to the processor cores 4d to 4f as data held in the level 1 cache memories 5d to 5f or the memory 6.
  • the padding adding unit 207 sends the data received by the packet receiving unit 208 to the processor cores 4d to 4f at level 1
  • the data is transmitted as data held in the cache memories 5d to 5f or the memory 6. That is, the communication device 10a transmits the aligned data to the processor cores 4d to 4f.
  • Each level 1 cache memory 5d to 5f has a plurality of cache lines having a line size of 64 bytes.
  • Each level 1 cache memory 5d to 5f has “2 N1 ” cache lines, and “2” bits of status data, “34-N 1 ” bits of tag data, and 64 bytes of data are stored in each cache line. It is a cache memory of “2 N1 + 6 ” bytes to be stored.
  • N 1 is the size of the index that each level 1 cache memory 5d to 5f associates with its own cache line.
  • the information stored in the cache lines of the level 1 cache memories 5d to 5f is the same information as the information stored in the cache lines of the cache memories 5a to 5c.
  • the state data stored in each cache line of each level 1 cache memory 5d to 6f is identity information indicating the following identity. That is, the status data indicates the identity of data stored in the same cache line, data stored in the other level 1 cache memories 5d to 5f, and data stored in the level 2 cache memory 7.
  • the level 2 cache memory 7 has “2 N2 ” cache lines each storing 64-bit data.
  • the level 2 cache memory 7 is a “2 N2 + 6 ” byte cache memory that stores “2” bit status data, “34-N 2 ” bit tag data, and 64 byte data in each cache line.
  • N 2 is the size of the index that the level 2 cache memory 7 associates with its own cache line.
  • the state data stored in each cache line of the level 2 cache memory 7 indicates the identity between the data stored in the same cache line and the data stored in the memory 6. Therefore, the data stored in the level 2 cache memory 7 is also aligned data.
  • the level 1 cache memories 5d to 5f and the level 2 cache memory 7 are direct map type cache memories. For example, when each of the level 1 cache memories 5d to 5f and the level 2 cache memory 7 holds the data stored in the memory address “i” of the memory 6, the cache line whose cache line number is “i” is stored. The data shall be held in
  • the processor core 4d stores the received data in the memory 6 when the communication device 10a receives data that the processor cores 4d to 4f are not waiting for. Further, the processor core 4d executes the following process when the communication device 10a receives the data that the processor core 4d is waiting for. That is, the processor core 4d determines whether the data stored in the storage area indicated by the memory address storing the received data in the memory 6 is cached in the level 1 cache memory 5d as the primary cache memory.
  • the processor core 4d determines that the data stored in the storage area of the memory 6 indicated by the memory address is held in the level 1 cache memory 5d, the received data is stored in the level 1 cache memory 5d. Cache. The data written to the cache memory 5 is aligned data, and the latency can be reduced.
  • the processor core 4d determines that the data stored in the storage area of the memory 6 indicated by the memory address is not held in the level 1 cache memory 5d, the processor core 4d stores the received data in the memory 6.
  • the data written to the memory 6 is also aligned data, which can reduce the latency.
  • an example of processing executed by the processor core 4d will be described. For example, when the processor core 4d receives data from the communication device 10a as data to be stored in the memory 6, the processor core 4d performs the following processing. That is, the processor core 4d refers to the state data stored in the cache line corresponding to the index of the memory address in which the received data is stored in the level 1 cache memory 5d.
  • the processor core 4d If the referenced state data is “M”, the processor core 4d writes data in the same cache line as the referenced state data to the memory 6, and updates the referenced state data to “I”. Then, the processor core 4 d stores the received data in the memory 6. The data written to the memory 6 is aligned data.
  • the processor core 4d executes the following processing. That is, the processor core 4d refers to the status data and the tag data among the cache lines corresponding to the memory address index for storing the received data. Then, the processor core 4d stores the received data in the memory when “I” is stored in the referenced state data or when the referenced tag data is different from the tag of the memory address storing the received data. 6 is stored. The data written to the memory 6 is also aligned data.
  • the processor core 4d stores “S” in the referenced status data, and if the referenced tag data matches the tag of the memory address storing the received data, the received data is stored in the memory 6.
  • the stored state data is updated to “I”.
  • the processor core 4d performs the following processing. Execute. That is, the processor core 4d stores the received data in its own cache memory, that is, the level 1 cache memory 5d, and updates the referenced state data to “M”. At this time, the processor core 4 d does not store the received data in the memory 6.
  • the data written to the cache memory 5d is aligned data.
  • the processor core 4 d When the received data is stored in the memory 6, the processor core 4 d performs a process of holding data coherency that is data consistency between the cache memories 5 a to 5 c and the main memory 6 before writing. Execute. That is, the processor core 4d refers to the state data and tag data of the cache line corresponding to the index of the memory address storing the received data in the level 2 cache memory 7. If the referenced state data is “M” and the tag data matches the tag of the memory address storing the received data, the processor core 4d is stored in the same cache line as the referenced state data. The stored data is stored in the memory 6. Thereafter, the processor core 4 d updates the referenced state data to “I”, and further stores the received data in the memory 6. The data written in these memories 6 is also aligned data.
  • the processor core 4d receives the received data as data to be stored in the level 1 cache memory 5d when the communication device 10a receives the information that any of the processor cores 4d to 4f is subject to polling processing. .
  • the processor core 4d determines whether or not the data stored in the storage area of the memory 6 that stores the received data is cached exclusively in the level 1 cache memory 5d. If the data stored in the storage area of the memory 6 storing the received data is exclusively cached in the level 1 cache memory 5d, the processor core 4d stores the received data in the level 1 cache memory. Cache to 5d. The data written to the cache memory 5d is also aligned data.
  • the processor core 4d has cached data at a memory address in which data to be polled is stored. For this reason, when the information processing apparatus 2e receives data that the processor core 4d is waiting for by the communication apparatus 10a, the information processing apparatus 2e stores the received data in the level 1 cache memory 5d instead of the memory 6. As a result, the parallel computer system 1b can cause the information processing apparatuses 2e and 2f to execute processing efficiently.
  • the information processing apparatus 2e includes the processor 3b having the plurality of processor cores 4d to 4f. Each of the processor cores 4d to 4f has level 1 cache memories 5d to 5f, respectively. If the information processing device 2e receives a packet from another information processing device such as the information processing device 2f, whether or not “1” is stored as control information in the flag area of the received packet is determined. Determine.
  • the information processing device 2e When “1” is stored as the control information, the information processing device 2e stores the received data in the level 1 cache memories 5d to 5f that cache the data at the memory address storing the received data. Store. Further, when “0” is stored as the control information, the information processing device 2 e stores the received packet data in the memory 6.
  • the information processing apparatus 2e when the information processing apparatus 2e receives data to be polled by the processor cores 4d to 4f, the information processing apparatus 2e can directly store the received data in the level 1 cache memories 5d to 5f. For this reason, the information processing device 2e can efficiently perform the arithmetic processing executed by the processor 3b. Further, the information processing device 2e stores the received data in the memory 6 when receiving data that is not subject to polling by the processor cores 4d to 4f. For this reason, the information processing device 2e can prevent the data used by the processor cores 4d to 4f from being processed from the level 1 cache memories 5d to 5f by the received data. For this reason, the parallel computer system 1b can perform efficient arithmetic processing without reducing the calculation processing speed.
  • Each of the level 1 cache memories 5d to 5f indicates the relationship between the data cached therein, the data stored in the other level 1 cache memories 5d to 5f, and the data stored in the level 2 cache memory 7.
  • First identity information which is data is stored.
  • the level 2 cache memory 7 stores second identity information, which is state data indicating the relationship between the data cached in itself and the data cached in the memory 6.
  • Each of the processor cores 4d to 4f has the data stored in the level 1 cache memories 5d to 5f, the data stored in the level 2 cache memory 7 and the memory based on the first identity information and the second identity information. 6 holds the identity with the data stored in 6.
  • the parallel computer system 1b appropriately maintains the data identity even when the processor cores 4d to 4f have their own level 1 cache memories 5d to 5f and share the level 2 cache memory 7. Therefore, appropriate arithmetic processing can be executed.
  • the padding adding unit 207 refers to the padding information added to the received data, and creates padded data by adding padding to the payload when the padding flag is valid.
  • the DMA controller 204 causes the padded data to be written in the level 1 cache memories 5 d to 5 f and the memory 6. As a result, even when the received data is not aligned, the latency when writing to the level 1 cache memories 5d to 5f and the memory 6 can be shortened.
  • FIG. 17 is a diagram for explaining the parallel computer system according to the fourth example of the third embodiment.
  • the parallel computer system 1c includes a plurality of information processing apparatuses 2f and 2g. Although omitted in FIG. 17, the parallel computer system 1c is assumed to have a larger number of information processing apparatuses.
  • the information processing device 2g executes the same processing as the information processing device 2f, and the following description is omitted. Also, components that perform the same processes as those in the first to third embodiments and the first to fourth embodiments of the third embodiment are denoted by the same reference numerals, and the following description is omitted.
  • the information processing device 2f includes a processor 3c, a memory 6, and a communication device 10b.
  • the processor 3c has a processor core 4g.
  • the processor core 4 g has a cache memory 5.
  • the communication device 10 b has a write destination address table 16.
  • the processor core 4g executes the same processing as that of the processor core 4 related to Example 1 of the third embodiment. That is, when the processor core 4g receives data as data to be stored in the memory 6 from the communication device 10b, the processor core 4g executes the same processing as the processor core 4 and discharges the received data to the memory 6.
  • the processor core 4 g When the processor core 4 g receives data from the communication device 10 b as data to be stored in the cache memory 5, the processor core 4 g performs the same processing as the processor core 4 and stores the received data in the cache memory 5. Therefore, the description of the process in which the processor core 4g stores data in the cache memory 5 or the memory 6 is omitted.
  • the processor core 4g when executing the polling process for waiting for received data, the processor core 4g immediately stores the memory address of the memory 6 for storing the data to be polled in the write destination address table 16 of the communication device 10b. sign up. Specifically, the processor core 4g transmits the memory address of the memory 6 that stores data to be polled to the communication device 10b, and writes the transmitted memory address to the update unit 17 of the communication device 10b described later. It is stored in the destination address table 16.
  • the processor core 4g receives data to be polled from the communication device 10c, and stores the data to be polled in the cache memory 5 when the received data is stored in the cache memory 5. This is notified to the communication device 10c. For example, the processor core 4g transmits to the communication device 10b the memory address of the memory 6 storing the data stored in the cache memory 5 together with the fact that the data to be polled is stored in the cache memory 5.
  • the communication device 10 b includes a write destination address table 16 that holds a control address for controlling writing of data to the cache memory 5.
  • the communication device 10b when the write destination address of the data received from the other information processing devices including the information processing device 2g matches the control address held in the write destination address table 16, Execute the process. In other words, the communication device 10b transmits the received data to the processor core 4g as data to be stored in the cache memory 5.
  • the communication device 10b transmits the received data to the processor core 4g as data to be stored in the memory 6. To do.
  • the communication device 10b executes the following processing. That is, the communication device 10 b deletes the memory address of the memory 6 that stores the data stored in the cache memory 5 from the write destination address table 16.
  • the communication device 10b receives from the processor core 4g that the data to be polled is stored in the cache memory 5 and the memory address of the memory 6 that stores the data stored in the cache memory 5. In such a case, the communication device 10 b searches the received memory address from the write destination address table 16 and deletes the searched memory address from the write destination address table 16.
  • Example 4 of the third embodiment in the communication device 10b, when “1 (valid)” is set as the padding flag in the padding information received via the determination unit 14, the padding addition unit 207 creates padded data by adding padding so that the data is aligned to the alignment size.
  • the communication device 10b transmits the padded data as data held in the cache memory 5 or the memory 6 to the processor core 4g.
  • the padding adding unit 207 transfers the data received by the packet receiving unit 208 to the cache memory 5 or the processor core 4g. It is transmitted as data held in the memory 6. That is, the communication device 10b transmits the aligned data to the processor core 4g.
  • FIG. 18 is a diagram for describing an example of a communication apparatus according to Example 4 of the third embodiment.
  • the communication device 10b includes a control unit 205 (packet generation unit), a packet transmission unit 206, a packet reception unit 208, a determination unit 14a, a DMA controller 204 (storage unit), a write destination address table 16, and an update. Section 17 and padding adding section 207.
  • the write destination address table 16 holds a memory address in which data targeted for polling processing of the processor core 4g is stored.
  • FIG. 19 is a diagram for explaining an example of the write destination address table.
  • the write destination address table 16 has N line memories with line numbers “0” to “N ⁇ 1” for storing memory addresses.
  • a valid bit is stored in a 1-bit area shown in FIG. 19A, and a memory address is stored in a 64-bit range shown in FIG. 19B.
  • the valid bit is a bit indicating whether or not the memory address stored in the line memory is valid data. For example, when “0” is stored in the valid bit, it indicates that the data at the memory address stored in the line memory is invalid. When “1” is stored in the valid bit, it indicates that the data at the memory address stored in the line memory is valid.
  • the write destination address table 16 is a semiconductor memory device such as a RAM (Random Access Memory), a ROM (Read Only Memory), a flash memory (flash memory), or the like.
  • the determination unit 14a When receiving a packet from the packet reception unit 208, the determination unit 14a acquires the memory address of the memory 6 that stores the data stored in the received packet. The determination unit 14 a determines whether the same memory address as the acquired memory address is stored in the write destination address table 16. In other words, the determination unit 14 a compares the memory address stored in the line memory in which “1” is stored in the valid bit with respect to the acquired memory address among the line memories included in the write destination address table 16. When the memory address stored in the line memory in which “1” is stored in the valid bit matches the acquired memory address, the determination unit 14a caches the data stored in the received packet. It is determined that the data is stored in the memory 5.
  • the determination unit 14a determines that the memory address stored in the line memory in which “1” is stored in the valid bit does not match the acquired memory address, the determination unit 14a stores the received packet in the received packet. It is determined that the data is data to be stored in the memory 6.
  • the update unit 17 when the update unit 17 receives the memory address of the memory 6 that stores the data to be polled from the processor core 4g, the update unit 17 sets the received memory address to the write destination address. Add to table 16.
  • the updating unit 17 sets the memory address of the memory 6 that stores the data to be polled as the write destination address. Delete from table 16.
  • the update unit 17 receives the memory address of the memory 6 that stores data to be polled from the processor core 4g, the update bit 17 in each line memory included in the write destination address table 16 has “ The line memory that is “0” is selected. Then, the updating unit 17 stores the memory address received from the processor core 4g in the selected line memory and updates the valid bit of the selected line memory to “1”.
  • the update unit 17 When the update unit 17 receives from the processor core 4g that the data to be polled is stored in the cache memory 5 and the memory address of the memory 6 that stores the data stored in the cache memory 5, The following processing is executed. That is, the update unit 17 searches for the line memory having the effective bit “1” among the line memories included in the write destination address table 16 and storing the address received from the processor core 4 g. To do. Then, the update unit 17 updates the effective bit of the searched line memory to “0”.
  • the update unit 17 is an electronic circuit.
  • an integrated circuit such as an application specific integrated circuit (ASIC) or a field programmable gate array (FPGA), or a central processing unit (CPU) or a micro processing unit (MPU) is applied.
  • ASIC application specific integrated circuit
  • FPGA field programmable gate array
  • MPU micro processing unit
  • FIG. 20 is a flowchart for explaining the flow of processing executed by the communication apparatus according to Example 4 of the third embodiment.
  • the communication device 10 b starts processing by receiving a packet whose destination is the information processing device 2 f via the bus 8 as a trigger.
  • the communication device 10b determines whether or not the write destination address of the data stored in the received packet matches the memory address stored in the write destination address table 16 (step S201). That is, the communication device 10 b determines whether or not the memory address of the memory 6 that stores the received data is registered in the write destination address table 16.
  • the communication device 10b executes the process. That is, the communication device 10b transmits the received packet data to the processor core 4g as data to be stored in the cache memory 5 (step S202). At this time, if “1” is stored in the padding flag, the padding adding unit 207 adds padding according to the alignment size to the received packet to create DMA write data. .
  • the padding adding unit 207 transmits the created DMA write data to the DMA controller 204, and the DMA controller 204 transmits the DMA write data to the processor core 4 as data stored in the cache memory 5.
  • the padding adding unit 207 stores the received packet in the received packet without adding padding in accordance with the alignment size. Data is transmitted to the DMA controller 204 as DMA write data. The DMA controller 204 transmits DMA write data to the processor core 4 as data to be stored in the cache memory 5.
  • the communication device 10b executes the process. That is, the communication device 10b transmits the received packet data to the processor core 4g as data stored in the memory 6 (step S203). Thereafter, the communication device 10b ends the process.
  • the padding adding unit 207 adds padding according to the alignment size to the received packet to create DMA write data. .
  • the padding adding unit 207 transmits the created DMA write data to the DMA controller 204, and the DMA controller 204 transmits the DMA write data to the processor core 4 as data stored in the memory 6.
  • the padding adding unit 207 stores the received packet in the received packet without adding padding in accordance with the alignment size.
  • Data is transmitted to the DMA controller 204 as DMA write data.
  • the DMA controller 204 transmits DMA write data to the processor core 4 as data to be stored in the memory 6.
  • the information processing apparatus 2f includes the write destination address table 16 that holds the memory address in which the processor core 4g stores data to be polled. Further, when the processor core 4g executes the polling process, the information processing apparatus 2f stores the memory address in which the data targeted for the polling process is stored in the write destination address table 16.
  • the information processing device 2f When the information processing device 2f receives data from another information processing device such as the information processing device 2g, whether the memory address for storing the received data is stored in the write destination address table 16 or not. Determine whether. If the information processing device 2 f determines that the memory address for storing the received data is stored in the write destination address table 16, the information processing device 2 f stores the received data in the cache memory 5. If the information processing apparatus 2 f determines that the memory address for storing the received data is not stored in the write destination address table 16, the information processing apparatus 2 f stores the received data in the memory 6.
  • the information processing apparatus 2f prevents the data stored in the cache memory 5 from being discharged when the processor core 4g receives data that is not used for the calculation.
  • the processor cores of the information processing devices 2f and 2g can execute efficient processing using the data stored in the cache memory, thereby preventing a reduction in calculation processing speed. can do.
  • the padding adding unit 207 refers to the padding information added to the received data, and creates padded data by adding padding to the payload when the padding flag is valid.
  • the DMA controller 204 writes the padded data to the cache memory 5 and the memory 6. Thereby, even when the received data is not aligned, it is possible to shorten the latency when writing to the cache memory 5 or the memory 6.
  • FIG. 21 is a diagram for explaining an example of a parallel computer system according to Example 5 of the third embodiment.
  • the parallel computer system 1d includes a plurality of information processing devices including information processing devices 2h and 2i.
  • each information processing apparatus including the information processing apparatus 2i executes the same processing as the information processing apparatus 2h, and a description thereof will be omitted.
  • symbol is attached
  • the information processing device 2h includes a processor 3d having a plurality of processor cores 4h to 4j, a memory 6, and a communication device 10c.
  • Each of the processor cores 4h to 4j has cache memories 5a to 5c.
  • the communication device 10c has a write destination address table 16a.
  • the processor core 4h stores the received data in the memory 6 when the data to be stored in the memory 6 is received from the communication device 10c, similarly to the processor core 4a related to Example 2 of the third embodiment. Further, when receiving data to be stored in the cache memory 5a from the communication device 10c, the processor core 4h stores the received data in the cache memory 5a.
  • the processor core 4h executes the following process when storing the received data in the cache memory 5a or the memory 6. That is, similarly to the processor core 4a, the processor core 4h holds coherency between the data stored in the cache memory 5a and the data stored in the memory 6 based on the identity information stored in the cache memory 5a. .
  • the processor core 4h maintains the identity of the data stored in the cache memory 5a and the memory 6 according to the state data stored in each cache line of the cache memory 5a. Thereafter, the processor core 4h stores the received data in the cache memory 5a or the memory 6.
  • the detailed processing in which the processor core 4h maintains the identity of the data stored in the cache memory 5a and the memory 6 is the same as the processing executed by the processor core 4a, and the description thereof is omitted. .
  • the processor core 4h when executing the polling process, immediately writes the data to be polled into the write destination address table 16 of the communication device 10c. Register the destination address. At this time, the processor core 4h registers write destination cache memory identification information indicating its own cache memory 5a in association with the memory address together with the write destination address.
  • the communication device 10c has a write destination address table 16a that holds a memory address for storing received data and write destination cache memory identification information for identifying each of the cache memories 5a to 5c in association with each other. And the communication apparatus 10c performs the following processes, when the packet is received from other information processing apparatuses including the information processing apparatus 2i, similarly to the communication apparatus 10b according to the fourth embodiment. That is, the communication device 10c determines whether or not the same memory address as the memory address for storing the received packet is stored in the write destination address table 16a.
  • the communication device 10c executes the following processing. That is, the communication device 10c determines the processor core having the cache memory indicated by the write destination cache memory identification information associated with the same memory address as the memory address storing the received packet. Then, the communication device 10c transmits the received data as data to be stored in the cache memory to the determined processor core.
  • FIG. 22 is a schematic diagram illustrating an example of a communication device according to the fifth embodiment.
  • the units included in the communication device 10c those that perform the same processing as the units illustrated in the first to fourth embodiments are denoted by the same reference numerals and description thereof is omitted.
  • the communication device 10c includes a DMA controller 204b (storage unit), a determination unit 14b, a write destination address table 16a, an update unit 17a, a control unit 205, a packet transmission unit 206, and a padding addition unit 207.
  • the padding addition unit 207 Create padded data by padding the data so that the data is aligned to the alignment size.
  • the communication device 10c transmits the padded data to the processor cores 4h to 4j as data held in the cache memories 5a to 5c or the memory 6.
  • the padding adding unit 207 transfers the data received by the packet receiving unit 208 to the processor cores 4d to 4f in the cache memory. 5a to 5c or data stored in the memory 6 is transmitted. That is, the communication device 10a transmits the aligned data to the processor cores 4d to 4f.
  • the write destination address table 16a holds memory addresses for storing data to be polled, similarly to the write destination address table 16 according to the fourth embodiment of the third embodiment. Furthermore, the write destination address table 16a holds the memory address to be held in association with the write destination cache memory identification information for identifying the cache memory included in the processor core that performs the polling process.
  • the write destination address table 16a includes a plurality of line memories in which storage areas for storing write destination cache memory identification information are further added to the respective line memories included in the write destination address table 16.
  • the write destination address table 16a stores the associated memory address and write destination cache memory identification information in the same line memory.
  • the determination unit 14b acquires the memory address of the memory 6 that stores the data stored in the packet received by the packet reception unit 208. Then, the determination unit 14b determines whether the same memory address as the acquired memory address is stored in the write destination address table 16a. Then, when the same memory address as the acquired memory address is stored in the write destination address table 16a, the determination unit 14b executes the following process. That is, the determination unit 14b acquires the write destination cache memory identification information stored in association with the memory address stored in the write destination address table 16a. Then, the determination unit 14b determines that the data stored in the received packet is data to be stored in the cache memory indicated by the acquired write destination cache memory identification information.
  • the determining unit 14b stores the data stored in the received packet in the memory 6. judge.
  • the DMA controller 204b executes the following processing. That is, the DMA controller 204b transmits the received data as data to be stored in the cache memory to the processor core having the cache memory indicated by the write destination cache memory identification information acquired by the determination unit 14b. For example, if the DMA controller 204b determines that the data received by the determination unit 14b is data to be stored in the cache memory 5a, the DMA controller 204b transmits the received data to the processor core 4h.
  • the DMA controller 204b determines that the data stored in the packet received by the determination unit 14b is data to be stored in the memory 6, the processor core uses the received data as data to be stored in the memory 6.
  • the updating unit 17a receives a memory address for storing data to be polled from each of the processor cores 4h to 4j.
  • the updating unit 17a receives write destination cache memory identification information indicating the cache memories 5a to 5c included in the processor cores 4h to 4j. In such a case, the updating unit 17a stores the received data and the write destination cache memory identification information in one memory line included in the write destination address table 16a.
  • the update unit 17a stores the data to be polled from the processor cores 4h to 4j in the cache memory, and executes the following processing when the memory address is received. To do. That is, the update unit 17a searches the write destination address table 16a for a line memory in which the received memory address is stored, and updates the effective bit of the searched line memory to “0”.
  • the information processing apparatus 2h having such units executes the following process when the processor core 4h executes the polling process. That is, the information processing device 2h stores the memory address for storing the data to be polled in the write destination address table 16a in association with the write destination cache memory identification information indicating the cache memory 5a.
  • the information processing device 2h receives a packet from another information processing device such as the information processing device 2i, the memory address for storing the data stored in the received packet is the write destination address table 16a. It is determined whether it is stored in the.
  • the information processing apparatus 2h determines that the processor core that is performing the polling process uses the processor core 4h based on the write destination cache memory identification information indicating the cache memory 5a that is stored in association with the memory address that stores the received data. It is determined that Then, the information processing apparatus 2h transmits the received data to the processor core 4h and stores it in the cache memory 5a. The data written to the cache memory 5a is aligned data.
  • the information processing device 2h stores the data in the write destination address table 16a in association with the memory address for storing the data to be polled and the write destination cache memory identification information indicating the cache memory. Then, the information processing apparatus 2 determines whether or not the memory address for storing the received packet data is stored in the write destination address table 16a, and if it is stored, executes the following processing. That is, the information processing apparatus 2h stores the received data in the cache memory indicated by the write destination cache memory identification information stored in association with each other.
  • the information processing device 2h can directly store the received data in the cache memories 5a to 5c when the data to be polled by the processor cores 4h to 4j is received. Therefore, the parallel computer system 1d can efficiently perform arithmetic processing even when the processors included in the information processing apparatuses 2h and 2i are multi-core processors having a plurality of processor cores.
  • the information processing apparatus 2h is stored in the cache memories 5a to 5c when the processor cores 4h to 4j receive data that is not used for calculation. Prevent data discharge. As a result, the parallel computer system 1d can prevent a decrease in calculation processing speed.
  • the information processing apparatus 2h uses the identity information stored in the cache memory 5a to identify the data stored in the cache memory 5a and the data stored in the memory 6. Hold. For this reason, the parallel computer system 1d can cause each information processing device 2h, 2i to execute an appropriate process.
  • the padding adding unit 207 refers to the padding information added to the received data, and creates padded data by adding padding to the payload when the padding flag is valid.
  • the DMA controller 204 writes the padded data in the cache memories 5 a to 5 c and the memory 6. As a result, even when the received data is not aligned, the latency at the time of writing to the cache memories 5a to 5c and the memory 6 can be reduced.
  • Example 6 of the third embodiment a parallel computer system having a plurality of information processing apparatuses in which a plurality of processor cores each having its own L1 cache memory and a processor having one L2 cache memory shared by each processor core is installed. Will be described.
  • FIG. 23 is a diagram for explaining the parallel computer system according to the sixth example of the third embodiment.
  • the parallel computer system 1e includes a plurality of information processing devices including information processing devices 2j and 2k.
  • the information processing apparatuses including the information processing apparatus 2k perform the same processing as the information processing apparatus 2j, and a description thereof will be omitted.
  • the units included in the parallel computer system 1e those that execute the same processing as the parallel computer system 1b are assigned the same reference numerals, and the following description is omitted.
  • the information processing apparatus 2j includes a processor 3e having a plurality of processor cores 4k to 4m and a level 2 cache memory 7 shared by the processor cores 4k to 4m. Each of the processor cores 4k to 4m has level 1 cache memories 5d to 5f, respectively. Note that the processor cores 4l and 4m execute the same processing as the processor core 4k, and the following description is omitted.
  • the processor core 4k receives the received data as data to be stored in the level 1 cache memory 5d when the data received by the communication device 10d is stored in the level 1 cache memory 5d. To store. Further, the processor core 4 k stores the received data in the memory 6 when the data received by the communication device 10 d is received as data to be stored in the memory 6.
  • the processor core 4k executes the same processing as the processor core 4d according to the third embodiment when storing data in the level 1 cache memory 5d or the level 2 cache memory 7. In other words, the processor core 4k maintains the identity of the data stored in the level 1 cache memory 5d, the level 2 cache memory 7, and the memory 6 based on the first identity information and the second identity information.
  • the processor core 4k transmits to the communication device 10d the memory address for storing the data to be polled and the write destination cache memory identification information indicating the level 1 cache memory 5d. To do. That is, the processor core 4k associates the memory address for storing the data to be polled with the write destination cache memory identification information indicating the level 1 cache memory 5d, and stores them in the write destination address table 16b.
  • the processor core 4k when the data to be polled is stored in the level 1 cache memory 5d, the processor core 4k indicates that the data has been stored in the level 1 cache memory 5d and the memory address for storing the data. Send to. That is, the processor core 4k deletes, from the write destination address table 16b, a memory address or the like that stores data to be polled.
  • the communication device 10d has a write destination address table 16b. Similar to the write destination address table 16a, the following information is stored in the write address table 16b in association with each other. That is, in the write destination address table 16b, the memory address for storing the data to be polled and the write destination cache memory identification information for identifying each level 1 cache memory 5d to 5f are stored in association with each other. Yes.
  • the communication device 10d executes the following processing when receiving a packet from another information processing device such as the information processing device 2k. That is, the communication device 10d determines whether or not the same memory address as the memory address for storing the received packet is stored in the write destination address table 16b. Then, the communication device 10d executes the following processing when the same memory address as the memory address for storing the received packet is stored in the write destination address table 16b. That is, the communication device 10d determines a processor core having a level 1 cache memory indicated by the write destination cache memory identification information associated with the same memory address as the memory address storing the received packet. Then, the communication device 10d transmits the received data as data to be stored in the cache memory to the determined processor core.
  • the communication device 10d uses the received data as the data to be stored in the memory 6 for each processor core. Send to 4k-4f.
  • the information processing apparatus 2j having such units executes the following process when the processor core 4k executes the polling process. That is, the information processing device 2j associates the memory address for storing the data to be polled with the write destination cache memory identification information indicating the level 1 cache memory 5d, and stores them in the write destination address table 16b.
  • the information processing apparatus 2j receives a packet from another information processing apparatus such as the information processing apparatus 2k, the memory address for storing the data stored in the received packet is the write destination address table 16b. It is determined whether it is stored in the.
  • the information processing apparatus 2j determines that the processor core performing the polling process is based on the write destination cache memory identification information indicating the level 1 cache memory 5d stored in association with the memory address storing the received data. It is determined that the core 4k. Then, the information processing device 2j transmits the received data to the processor core 4k and stores it in the level 1 cache memory 5d.
  • the information processing device 2j executes the following processing using the first identity information and the second identity information stored in the level 1 cache memories 5d to 5f and the level 2 cache memory 7. That is, the information processing device 2j maintains the identity of the data stored in each of the level 1 cache memories 5d to 5f, the level 2 cache memory 7, and the memory 6, and then receives the received data for each level 1 cache memory 5d. 5f or stored in the memory 6.
  • Example 6 of the third embodiment in the communication device 10d, when “1 (valid)” is set as the padding flag in the padding information received via the determination unit 14, the padding addition unit 207 creates padded data by adding padding so that the data is aligned to the alignment size.
  • the communication device 10d transmits this padded data to the processor cores 4k to 4m as data held in the level 1 cache memories 5d to 5f or the memory 6.
  • the padding adding unit 207 sends the data received by the packet receiving unit 208 to the processor cores 4k to 4m at a level 1 level.
  • the data is transmitted as data held in the cache memories 5d to 5f or the memory 6. That is, the communication device 10d transmits the aligned data to the processor cores 4k to 4m.
  • the information processing device 2j associates the memory address storing the data to be polled with the write destination cache memory identification information indicating the level 1 cache memory included in the processor core that executes the polling process. Add and remember.
  • the information processing device 2j When the memory address for storing the received data matches the stored memory address, the information processing device 2j receives the data received in the level 1 cache memory indicated by the write destination cache memory identification information stored in association therewith. Is stored. Therefore, the parallel computer system 1e can efficiently perform arithmetic processing on each of the processor cores 4k to 4m.
  • the information processing apparatus 2j when the information processing apparatus 2j receives data that is not a polling target, the information processing apparatus 2j stores the received data in the memory 6. For this reason, the parallel computer system 1e can perform efficient arithmetic processing without reducing the calculation processing speed. Further, the information processing device 2j executes the following process using the first identity information stored in the level 1 cache memories 5d to 5f and the second identity information stored in the level 2 cache memory 7. . That is, the information processing apparatus 2j appropriately maintains the identity of the data stored in the level 1 cache memories 5d to 5f, the level 2 cache memory 7, and the memory 6. As a result, the parallel computer system 1e can execute an appropriate arithmetic processing device.
  • the padding adding unit 207 refers to the padding information added to the received data, and creates padded data by adding padding to the payload when the padding flag is valid.
  • the DMA controller 204 causes the padded data to be written in the level 1 cache memories 5 d to 5 f and the memory 6. Thereby, even when the received data is not aligned, it is possible to shorten the latency when writing to the cache memory 5 or the memory 6.
  • Example 7 Although the respective examples of the third embodiment have been described so far, the examples may be implemented in various different forms other than the examples described above. Therefore, another example included in the present invention will be described below as Example 7 of the third embodiment.
  • Information processing apparatus included in parallel computer system Each parallel computer system 1, 1 c in the above description has a processor core 4, 4 g having a cache memory 5. However, the embodiment is not limited to this.
  • each parallel computer system 1, 1c may include a processor core having a level 1 cache memory and a processor having a level 2 cache memory. The processor cores of the parallel computer systems 1 and 1c maintain data coherency by using the first identity information and the second identity information stored in the level 1 cache memory and the level 2 cache memory. It is good.
  • the information processing apparatus determines whether or not the received data is data that is subject to polling processing, and if it is determined that it is data that is subject to polling processing, stores the received data in the cache memory To do. Further, when the information processing apparatus determines that the received data is not the data to be polled, the information processing apparatus stores the received data in the memory. That is, the information processing apparatus can have any configuration as long as it is an information processing apparatus that performs such processing.
  • the padding adding unit 207 adds padding to the payload as padded data. Create and store.
  • the embodiment is not limited to this, and may be a parallel computer system including an arbitrary information processing apparatus in each embodiment. That is, the information processing apparatus determines whether or not the data of the received packet is data to be polled based on whether or not “1” is stored as control information in the received packet. Then, it is determined whether or not the memory address is stored in the write destination address table. Then, the information processing apparatus may determine that the data is subject to polling processing when any of the conditions is satisfied.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

 データを保持する記憶装置(5,6)と、受信したデータに含まれる調整情報に基づいて、データに対してパディングを付加したパディング付きデータを作成するデータ作成部(207)と、データ作成部(207)によって作成されたパディング付きデータを記憶装置(5,6)に格納する格納処理部(204)とを備えることにより、アラインされていないデータを受信する場合においてもレイテンシを小さくできる。

Description

情報処理装置,並列計算機システム及び情報処理装置の制御方法
 本発明は、情報処理装置,並列計算機システム及び情報処理装置の制御方法に関する。
 従来、複数の情報処理装置(ノード)が相互にデータの送受信を行ない、演算処理を実行する並列計算機システムが知られている。このような並列計算機システムの一例として、メモリ空間を共有しない複数の情報処理装置を、相互結合網を介して相互に接続した並列計算機システムが知られている。
 このような並列計算機システムが有する情報処理装置は、演算に利用するデータを記憶する主記憶装置であるメインメモリと、演算を行なう演算処理装置と、他の情報処理装置との間で演算に利用するデータの送受信を行なうネットワークインタフェース(通信装置)とを有する。このような情報処理装置が有するネットワークインタフェースは、相互結合網を介して、他の情報処理装置と演算に関わるデータの送受信を行ない、受信したデータをメインメモリに格納する。ここで、書きこんだメインメモリのアドレスに対応するプロセッサのキャッシュラインが有効となっていれば、キャッシュメモリとメインメモリとの整合性を保つため、キャッシュラインを無効化するなどの処理が必要となる。
特開平4-289935号公報 特開平9-128324号公報
 しかしながら、このような従来の並列計算機システムにおいては、ノード間のデータ通信において、データを受信してメインメモリに書き込む際に、データが一定サイズでアラインされていない場合がある。そして、このようにデータがアラインされていない場合に、メインメモリに書き込むレイテンシが長くなるケースがある。以下にレイテンシが長くなる事例を示す。
 (1)メインメモリにデータとError Check and Correct(ECC)とを格納する場合であって、受信データ長がECC生成単位サイズでアラインされていない場合に、メインメモリから不足分のデータを読み出して、ECCを再計算する必要がある。メインメモリから一度データを読み出す必要があるので、書き込みのレイテンシが長くなる。
 (2)受信ノードのプロセッサが持つキャッシュが、ライトバック(Write Back)方式における受信データを書き込むアドレスをキャッシュしている。そのキャッシュラインが、主記憶に更新データを書き戻していない、いわゆるダーティ(Dirty)な状態であり、受信データがキャッシュラインサイズでアラインされていない場合である。このような場合には、キャッシュライン中で書き込み対象でない領域をメインメモリに書き戻す必要がある。受信データがキャッシュラインサイズでアラインされている場合は、メインメモリに書き戻す必要はない。従って、受信データがキャッシュラインサイズでアラインされていない場合には、キャッシュラインサイズでアラインされている場合と比べてレイテンシは長くなる。
 本発明は、このような課題に鑑み創案されたもので、アラインされていないデータを受信する場合においてもレイテンシを小さくできるようにすることを目的とする。
 なお、前記目的に限らず、後述する発明を実施するための最良の形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の1つとして位置付けることができる。
 このため、この情報処理装置は、並列計算機システムに含まれる複数の情報処理装置のいずれかにおいて、データを保持する記憶装置と、受信したデータに含まれる調整情報に基づいて、前記データに対してパディングを付加したパディング付きデータを作成するデータ作成部と、前記データ作成部によって作成された前記パディング付きデータを前記記憶装置に格納する格納処理部とを備える。
 また、この情報処理装置は、並列計算機システムに含まれる複数の情報処理装置のいずれかにおいて、データを保持する記憶装置と、受信したデータのデータサイズ情報及び書き込み先アドレス情報と前記調整サイズ情報とに基づき、当該受信したデータに対する調整の要否を判断する判断部と、前記判断部が前記調整が必要であると判断した場合に、受信したデータのデータサイズ情報及び書き込み先アドレス情報と前記調整サイズ情報とに基づき、前記データに対して前記調整サイズ情報に合わせたパディングを付加したパディング付きデータを作成するデータ作成部と、前記データ作成部によって作成された前記パディング付きデータを前記記憶装置に格納する格納処理部とを備える。
 さらに、この並列計算機システムは、複数の情報処理装置を有する並列計算機システムにおいて、調整情報を備えるデータを送信する第1の情報処理装置と、データを保持する記憶装置と、受信したデータに含まれる調整情報に基づいて、前記データに対してパディングを付加したパディング付きデータを作成するデータ作成部と、前記データ作成部によって作成された前記パディング付きデータを前記記憶装置に格納する格納処理部とを備える第2の情報処理装置とを備える。
 また、この並列計算機システムは、複数の情報処理装置を有する並列計算機システムにおいて、前記情報処理装置は、データを保持する記憶装置と、受信したデータのデータサイズ情報及び書き込み先アドレス情報と前記調整サイズ情報とに基づき、当該受信したデータに対する調整の要否を判断する判断部と、前記判断部が前記調整が必要であると判断した場合に、受信したデータのデータサイズ情報及び書き込み先アドレス情報と前記調整サイズ情報とに基づき、前記データに対して前記調整サイズ情報に合わせたパディングを付加したパディング付きデータを作成するデータ作成部と、前記データ作成部によって作成された前記パディング付きデータを前記記憶装置に格納する格納処理部とを備える。
 また、この情報処理装置の制御方法は、複数の情報処理装置を備える並列計算機システムを構成する情報処理装置の制御方法において、調整情報を備えるデータを送信し、受信したデータに含まれる調整情報に基づいて、前記データに対してパディングを付加したパディング付きデータを作成し、作成された前記パディング付きデータを記憶装置に格納する。
 さらに、この情報処理装置の制御方法は、複数の情報処理装置を備える並列計算機システムを構成する情報処理装置の制御方法において、受信したデータのデータサイズ情報及び書き込み先アドレス情報と前記調整サイズ情報とに基づき、当該受信したデータに対する調整の要否を判断し、前記調整が必要であると判断した場合に、受信したデータのデータサイズ情報及び書き込み先アドレス情報と前記調整サイズ情報とに基づき、前記データに対して前記調整サイズ情報に合わせたパディングを付加したパディング付きデータを作成し、作成された前記パディング付きデータを記憶装置に格納する。
 一実施形態によれば、アラインされていないデータを受信する場合においてもレイテンシを小さくできる。
第1実施形態の一例として並列計算機システムを説明するための図である。 メモリアドレスの一例を説明するための図である。 第1実施形態の一例としての並列計算機システムに関わるキャッシュメモリの一例を説明するための図である。 第1実施形態の一例としての並列計算機システムに関わる通信装置の機能構成を示す図である。 第1実施形態の一例としての並列計算機システムにおける送信パケットのフォーマットを模式的に例示する図である。 第1実施形態の一例としての並列計算機システムにおける情報処理装置のパディング付加部の処理を説明するためのフローチャートである。 第1実施形態の一例としての並列計算機システムにおける情報処理装置の通信装置のデータ受信時の処理を説明するためのフローチャートである。 第2実施形態の一例としての並列計算機システムにおける送信パケットのフォーマットを模式的に例示する図である。 第2実施形態の一例としての並列計算機システムに関わる通信装置の機能構成を示す図である。 第2実施形態の一例としての並列計算機システムにおける情報処理装置のパディング付加部の処理を説明するフローチャートである。 第3実施形態の実施例1としての並列計算機システムに関わる通信装置の一例を説明するための図である。 第3実施形態の実施例1に関わる制御部が生成するパケットの一例を説明するための図である。 第3実施形態の実施例1に関わる通信装置が実行する処理の流れを説明するためのフローチャートである。 第3実施形態の実施例2に関わる並列計算機システムの一例を説明するための図である。 第3実施形態の実施例2に関わる通信装置を説明するための図である。 第3実施形態の実施例3に関わる並列計算機システムの一例を説明するための図である。 第3実施形態の実施例4に関わる並列計算機システムを説明するための図である。 第3実施形態の実施例4に関わる通信装置の一例を説明するための図である。 書き込み先アドレステーブルの一例を説明するための図である。 第3実施形態の実施例4に関わる通信装置が実行する処理の流れを説明するためのフローチャートである。 第3実施形態の実施例5に関わる並列計算機システムの一例を説明するための図である。 実施例5に関わる通信装置の一例を説明するための図である。 第3実施形態の実施例6に関わる並列計算機システムを説明するための図である。
 以下、図面を参照して本情報処理装置,並列計算機システム及び情報処理装置の制御方法に係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形(実施形態及び各実施例を組み合わせる等)して実施することができる。又、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
 (A)第1実施形態
 以下の第1実施形態では、図1を用いて、並列計算機システムの一例を説明する。図1は、第1実施形態の一例として並列計算機システムを説明するための図である。
 図1に示すように、並列計算機システム1は、複数の情報処理装置2、2a、各情報処理装置2、2aを接続するバス8を有する。なお、図1に示す例では、情報処理装置2および2aが記載されているが、並列計算機システム1は、さらに多数の情報処理装置を有してもよい。並列計算機システム1は、任意の数の情報処理装置を有してよい。また、以下の説明においては、情報処理装置2aは、情報処理装置2と同様の処理を実行するものとして、説明を省略する。又、以下、情報処理装置2,2aをノードという場合がある。
 情報処理装置2は、プロセッサ3、メモリ6、通信装置(ネットワークインタフェース)10を有する。プロセッサ3、メモリ6、通信装置10は、それぞれ情報処理装置2が有するバスによって接続される。プロセッサ3は、演算処理を実行する演算処理装置である。具体的には、プロセッサ3は、演算を行なうプロセッサコア4を有する。また、プロセッサコア4は、キャッシュメモリ5を有する。
 以下、メモリ6、キャッシュメモリ5に格納されるデータについての説明を行ない、その後、プロセッサコア4および通信装置10が実行する処理について説明する。
 メモリ6は、情報処理装置2が有するメインメモリ(主記憶装置)であり、プロセッサコア4が演算に用いるデータを保持する。
 以下、図2、図3を用いて、メモリ6の一例について説明する。図2は、メモリアドレスの一例を説明するための図である。例えば、メモリ6の格納領域を示すメモリアドレスは、プロセッサ3が40ビットのメモリアドレス空間を有する場合には、例えば40ビット長のメモリアドレスとなる。このような場合には、メモリアドレスを、例えば、図2中(A)に示す範囲の上位「34-N」ビットをタグとして、続く図2中(B)に示す範囲の「N」ビットをインデックスとして、図2中(C)に示す範囲の下位「6」ビットをオフセットとして分割することができる。ここで、インデックスのサイズは、任意のビット数を設定することができるものとし、以下の説明においては「N」ビットがインデックスとして設定されたものとする。
 キャッシュメモリ5は、プロセッサコアが演算に利用するデータを記憶する記憶装置であり、メモリ6よりも高速でデータの出し入れを行なう事ができる。以下、キャッシュメモリ5の一例について説明する。図3は、第1実施形態の一例としての並列計算機システムに関わるキャッシュメモリの一例を説明するための図である。例えば、キャッシュメモリ5は、ラインサイズが64バイトである2個のキャッシュラインを有し、全体の記憶容量が2N+6バイトであるキャッシュメモリである。
 ここで、各キャッシュラインには、キャッシュライン番号「0」~「2-1」が付与されている。また、各キャッシュラインには、図3中(A)で示す2ビットの状態データ、図3中(B)で示す「34-N」ビットのタグデータ、および図3中(C)で示す64バイトのデータが格納される。ここで、状態データのうち、一方のビットは、対応するキャッシュラインに格納されたデータが有効であるか否かを示すValidビットである。例えば、Validビットに「1」が格納されていた場合には、対応するキャッシュラインに格納されたデータが有効であることを示し、Validビットに「0」が格納されていた場合には、対応するキャッシュラインに格納されたデータが無効であることを示す。
 また、状態データのうち、もう一方のビットは、対応するキャッシュラインに格納されたデータとメモリ6に格納されたデータとの同一性を保持するための情報であるDirtyビットである。例えば、Dirtyビットに「1」が格納されている場合には、対応するキャッシュラインに格納されたデータがプロセッサコア4によって更新されているため、データをメモリ6に書き戻す必要があることを示す。Dirtyビットに「0」が格納されている場合には、対応するキャッシュラインに格納されたデータがプロセッサコア4によって更新されておらず、当該キャッシュラインに格納されたデータとメモリ6に格納されたデータと同一である旨を表す。例えば、Validビットが「1」でDirtyビットが「1」であるキャッシュラインに格納されたデータは、有効なデータであり、かつ、プロセッサコア4による書換え等のためにキャッシュ元であるメモリ6に格納されたデータと同一ではない。
 また、キャッシュメモリ5はダイレクトマップ方式が採用されており、メモリ6のデータがキャッシュされる場合には、キャッシュ元データが格納されていたメモリアドレスのインデックスに応じたキャッシュラインに格納する。例えば、キャッシュメモリ5は、キャッシュ元のデータが格納されていたメモリアドレスのインデックスが「i」である場合には、キャッシュライン番号が「i」のキャッシュラインに格納する。ただし、キャッシュメモリ5には、複数のキャッシュウェイを有するセットアソシエイティブ方式が採用されてもよい。
 図1に戻って、プロセッサコア4は、データを用いて演算を行なう演算処理部である。具体的には、プロセッサコア4は、メモリ6またはキャッシュメモリ5に格納されたデータを用いて、演算処理を実行する。また、プロセッサコア4は、メモリ6に格納されていたデータを取得し、取得したデータをキャッシュメモリ5に格納する。すなわち、プロセッサコア4は、メモリ6に格納されていたデータをキャッシュメモリ5に保持する。そして、プロセッサコア4は、キャッシュメモリ5に格納したデータを用いて、演算処理を実行する。
 また、プロセッサコア4は、情報処理装置2a等の他の情報処理装置による演算の結果を用いて演算処理を実行する場合には、他の演算処理装置から送信されたデータを通信装置10が受信するまで待機する。つまり、プロセッサコア4は、他の情報処理装置による演算結果のデータを待ち合わせるポーリング処理を実行する。そして、プロセッサコア4は、ポーリング処理の対象となるデータを通信装置10が受信した場合には、受信を感知し、受信したデータを用いた演算処理を実行する。
 次に、プロセッサコア4が実行する処理の一例を説明する。例えば、プロセッサコア4は、通信装置10からデータをメモリ6に格納するデータとして受信した場合には、以下の処理を実行する。すなわち、プロセッサコア4は、データを格納するメモリアドレスのインデックスと対応するキャッシュラインの状態データであるValidビットとDirtyビットとを参照する。そして、プロセッサコア4は、参照したValidビットが「1」であり、かつ、Dirtyビットが「1」であれば、以下の処理を実行する。
 すなわち、プロセッサコア4は、キャッシュメモリ5に格納されているキャッシュされたデータを用いて、メモリ6に格納されていたキャッシュ元のデータを最新のデータに更新する。そして、プロセッサコア4は、参照したValidビットを「1」から「0」に更新し、その後、通信装置10から受信したデータを、データと共に受信したメモリ6のメモリアドレスに格納する。
 また、プロセッサコア4は、参照したValidビットが「0」である場合、または、Validビットが「1」でDirtyビットが「0」である場合には、Validビットを「0」に更新し、受信したデータをメモリ6に格納する。
 図1に戻って、通信装置10は、バス8を介して、情報処理装置2aを初めとする他の情報処理装置からパケット化されたデータを受信する。ここで、パケット化されたデータには、データと、データを格納するメモリ6のメモリアドレスとが格納されている。通信装置10は、受信したデータをメモリ6に格納する。
 また、通信装置10は、プロセッサ3(プロセッサコア4)からデータと送信先の他の情報処理装置2aを示す情報とを受信した場合には、受信したデータをパケット化し、バス8を介して、送信先の他の情報処理装置2aへパケットを送信する。また、通信装置10は、プロセッサコア4から他の情報処理装置2aが有するプロセッサが待ち合わせているデータである旨を合わせて受信した場合には、受信したデータをパケット化するとともに、ポーリング処理の対象である旨を示す制御情報をパケットに付加する。そして、通信装置10は、制御情報を付加したパケットを送信先の他の情報処理装置2aへ送信する。
 以下、図4を用いて、通信装置10の一例を説明する。図4は第1実施形態の一例としての並列計算機システムに関わる通信装置の機能構成を示す図である。図4に示す例では、通信装置10は、Direct Memory Access(DMA)コントローラ204,制御部205,パケット送信部206,パディング付加部207及びパケット受信部208を備える。
 DMAコントローラ(格納処理部)204は、バスマスターであり、後述する制御部205からDMAを行なうデータのアドレスとデータ長とを通知されると、メモリ6に対して、制御部205が通知したアドレスとデータ長を指定してDMA要求を行なう。すると、メモリ6は、指定されたアドレスに格納されているデータを、指定されたデータ長だけDMAコントローラ204にDMA転送する。DMAコントローラ204は、メモリ6からDMA転送されるデータをパケット送信部206に送信する。
 また、DMAコントローラ204は、DMA書き込みデータを、メモリ6のDMA書き込み先頭アドレスからDMA書き込み長にかかる領域に対して書き込む。そして、DMAコントローラ204は、後述するパディング付加部207が作成するパディング付きデータをDMA書き込みデータとしてプロセッサ3にメモリ6に書き込ませる。
 制御部205は、プロセッサ3からパケット送信指示を受けると、DMAコントローラ204やパケット送信部206,パケット受信部208等を制御して、パケットの送信処理を行なう。パケットの送信処理を行なう場合には、制御部205は、DMAコントローラ204に、1つのパケットに含むデータのデータ長を指定することにより、メモリ6から送信するデータを読み込む。情報処理装置2から送信するパケットの長さ(サイズ)は一定(固定)であってもよく、又、可変であってもよい。
 制御部205は、送信するデータ(ペイロード)を受け取ると、このデータにヘッダを付加したパケット(送信パケット)を作成し、この作成したパケットをパケット送信部206に送り、バス8に送信させる。すなわち、制御部205は、送信するパケットを生成するパケット生成部として機能する。
 制御部205は、送信するデータをパケット化し、送信先の他の情報処理装置2aやデータを格納する送信先の他の情報処理装置2aが有するメモリのメモリアドレス等をパケットに格納する。そして、制御部205は、生成したパケットをパケット送信部206へ送信する。
 送信するパケットは、例えば、送信先の他の情報処理装置2aを示すアドレスが格納されたヘッダ部と、データを格納するデータ部とを有する。
 図5は第1実施形態の一例としての並列計算機システムにおける送信パケットのフォーマットを模式的に例示する図である。
 送信パケットは、例えば、図5に示すように、パケットタイプ,ルーティングヘッダ,ローカルノードアドレス,リモートノードアドレス,オフセット,パディングフラグ,アラインサイズ及びペイロードをそれぞれ格納するフィールドを備える。パケットタイプは、当該パケットの種類を示す情報であり、例えば、Putリクエスト(Put通信)に使用するパケットやGetリクエスト(Get通信)に使用するパケットであることを示す。
 ここで、Put通信とは、ローカルノードが自身とリモートノードのメモリ6の領域を指定して、ローカルノードのメモリ6のデータを、リモートノードのメモリ6の領域に書き込む通信を示す。
 また、Get通信とは、ローカルノードが自身とリモートノードのメモリ6の領域を指定して、リモートノードのメモリ6のデータを、ローカルノードのメモリ6の領域に書き込む通信を示す。
 ローカルノードアドレスは、当該パケットの送信元ノードのアドレス(ノードアドレス)を示す情報であり、リモートノードアドレスは、当該パケットの送信先ノードのアドレスを示す情報である。これらのノードアドレスは、例えば、各次元の座標値で表される。
 ルーティングヘッダは、当該パケットの経路を指定する情報であり、例えば、バス8上における当該パケットの送信元ノード(ローカルノード)の位置を原点とした時のリモートノードの位置を表す座標値である。このルーティングヘッダは、例えば、各次元の座標値で表される。
 ペイロードは、送信元ノードが送信先ノードに対して送信するメッセージ(データソース)を必要に応じて分割したデータである。オフセットは、ペイロードを格納するメモリ6のアドレスを指定する情報である。
 パディングフラグ(要否情報)は、そのパケットに対するアラインの必要の有無を表す情報である。例えば、キャッシュラインサイズ等の所定のサイズにアラインされていないデータには、このパディングフラグに有効である旨(例えば、「1」)が設定される。すなわち、このパディングフラグに「1(有効)」が設定されている場合には、後述するパディング付加部207がアラインサイズに合わせてパディングを付加する。
 一方、キャッシュラインサイズ等にアラインされているデータには、このパディングフラグに無効である旨(例えば、「0」)が設定される。すなわち、このパディングフラグに「0(無効)」が設定されている場合には、パディング付加部207はパディングの付加を行なわない。
 ここで、パディングとは、データを特定の長さに合わせるために、短いデータの前や後に無意味なデータ(例えば、「0」)を追加して長さを合わせる処理である。本実施形態においては、後述するパディング付加部207が、データに足りない桁数だけ「0」を追加して長さを合わせる、いわゆる「ゼロパディング(zero padding)」を行なう。
 アラインサイズ(調整サイズ情報)は、パディングによりそのパケットをアラインさせるサイズであり、パディング付加部207は、このアラインサイズに合わせて当該パケットのペイロードにパディングを付加する。このアラインサイズは、例えば、ECC生成単位もしくはキャッシュメモリ5のキャッシュラインサイズである。
 これらのパディングフラグ及びアラインサイズは、例えば、情報処理装置2上で動作する図示しないアプリケーションが入力(設定)してもよく、又、オペレータが入力してもよい。パディングフラグ及びアラインサイズは、パディング情報(調整情報)として制御部205によって送信パケットに付加される。
 パケット受信部208は、他の情報処理装置2等からバス8を介して送信されたパケットを受信し、そのペイロードをプロセッサ3に受け渡す等の受信処理を行なう。
 また、パケット受信部208は、パケットのペイロードに格納されているデータとパディング情報(パディングフラグ及びアラインサイズ)とをパディング付加部207に送る。
 パケット送信部206は、当該情報処理装置2が送信元ノードである状態では、制御部205によって作成されたパケットを宛先の情報処理装置2に送信する。
 パケット送信部206は、制御部205及びDMAコントローラ204からパケットヘッダとデータとを受け取ると、パケットを生成し、バス8に送出する。
 また、パケット送信部206は、当該情報処理装置2が送信先ノードである状態では、受信したパケットの送信元の情報処理装置2に対して、応答パケットを作成して送信する。
 パディング付加部(データ作成部,判断部)207は、パケット受信部208によって受信されたデータに対してパディングを付加することによりパディング付きデータを作成する。パディング付加部207は、パケット受信部208から受け取ったパディング情報においてパディングフラグとして「1(有効)」が設定されている場合に、データがアラインサイズにアラインするように、パディングを付けることによりパディング付きデータを作成する。
 パディング付加部207は、ペイロードの先頭に対して付加するパディングの長さp_fを以下の式(1)により算出する。
 P_f=ペイロード書き込み先頭アドレス-(n×アライメントサイズ) ・・・(1)
ただし、
 n=floor(ペイロード書き込み先頭アドレス/アライメントサイズ) ・・・(2)
である。ここでfloorは床関数であり、nは、「ペイロード書き込み先頭アドレス/アライメントサイズ」の小数部分を切り下げた整数値である。
 また、パディング付加部207は、ペイロードの末尾に対して付加するパディングの長さp_eを以下の式(3)により算出する。
 p_e=(m×アライメントサイズ)-(p_f+ペイロードの長さ) ・・・(3)
ただし、
 m=ceil((ペイロードの長さ+p_f)/アライメントサイズ) ・・・(4)
である。ここでceilは天井関数であり、mは、「(ペイロードの長さ+p_f)/アライメントサイズ」の小数部分を切り上げた整数値である。
 また、パディング付加部207は、「n×アライメントサイズ」をDMA書き込み先頭アドレスに設定し、又、「m×アライメントサイズ」をDMA書き込み長に設定する。
 パディング付加部207は、作成したパディング付きデータをDMAコントローラ204に送る。DMAコントローラ204は、パディングが付加されたデータをメモリ6に書き込む。
 また、パディング情報においてパディングフラグとして「0(無効)」が設定されている場合には、パディング付加部207は、パケット受信部208が受信したデータを、DMAコントローラ204に送る。
 第1実施形態の一例としての並列計算機システム1における情報処理装置2のパディング付加部207の処理を、図6に示すフローチャート(ステップA10~A40)に従って説明する。
 ステップA10において、パディング付加部207は、上記式(1)~(4)を算出してn,p_f,m及びp_eの各値を算出する。
 次に、ステップA20において、DMA書き込み先頭アドレスを「n×アライメントサイズ」に設定し、又、DMA書き込み長を「m×アライメントサイズ」にする。
 そして、ステップA30において、パディング付加部207は、ペイロードの先頭に対して、p_fの長さのパディングを付加するとともに、ペイロードの末尾に対してp_eの長さのパディングを付加したパディング付きデータを作成する。このパディング付きデータが、DMAコントローラ204によりメモリ6に書き込まれるDMA書き込みデータとなる。
 ステップA40において、パディング付加部207は、ステップA20において設定したDMA書き込み先頭アドレス,DMA書き込み長及びDMA書き込みデータ(パディング付きデータ)をDMAコントローラ204に送って、処理を終了する。パディング付加部207により、ペイロードはアラインされているので、ペイロードのアドレスや長さが、そのままDMAのアドレス及び長さになる。
 なお、DMAコントローラ204は、DMA書き込みデータ(パディング付きデータ)を、メモリ6のDMA書き込み先頭アドレスからDMA書き込み長にかかる領域に対して書き込む。
 上述の如く構成された、第1実施形態の一例としての並列計算機システム1における情報処理装置2の通信装置10のデータ受信時の処理を、図7に示すフローチャート(ステップB1~B4)に従って説明する。
 通信装置10のパケット受信部208がデータを受信し、パケットのペイロードに格納されているデータとパディング情報(パディングフラグ及びアラインサイズ)とをパディング付加部207に送る。
 ステップB1において、パディング付加部207は、パディング情報を参照してパディングフラグが有効になっているか否かを判断する。パディングフラグに「1」が設定されている場合、すなわち、パディングフラグが有効である場合には(ステップB1のYESルート参照)、ステップB2においてパディング付加部207がペイロードにパディングを付加する。すなわち、パディング付加部207は、図6に示したフローチャートに従って処理を行なう。
 その後、ステップB3において、DMAコントローラ204が、DMA書き込みデータ(パディング付きデータ)を、メモリ6のDMA書き込み先頭アドレスからDMA書き込み長にかかる領域に対して書き込み、処理を終了する。
 一方、ステップB1における判断の結果、パディングフラグに「0」が設定されている場合、すなわち、パディングフラグが無効である場合には(ステップB1のNOルート参照)、ステップB3に移行する。
 このように、第1実施形態の一例としての並列計算機システム1の情報処理装置2においては、パディング付加部207が、受信したデータに付加されているパディング情報を参照して、パディングフラグが有効である場合にペイロードにパディングを付加してパディング付きデータを作成する。DMAコントローラ204が、このパディング付きデータをメモリ6に書き込む。これにより、受信したデータがアラインされていない場合であっても、パディング付加部207がこのデータをアラインすることにより、メモリ6へ書き込みを行なう際のレイテンシを短くすることができる。
 送信元においては、送信するデータにパディング情報(パディングフラグ及びパディングサイズ)を付加することで、送信先の情報処理装置2におけるデータ受信時のパディング実施/不実施を制御することができ、利便性が高い。
 また、パディング付加部207において、前述した式(1)~(4)を用いて、ペイロードの先頭に対して行なうパディングの長さp_fや、ペイロードの末尾に対して行なうパディングの長さp_eを算出し、パディング付きデータを作成する。
 さらに、パディング付加部207は、作成したパディング付きデータをDMAコントローラ204に送る。DMAコントローラ204は、パディングが付加されたデータをメモリ6に書き込む。このように、パディング付きデータを容易に作成することができる。すなわち、データのアラインを容易に実現することができる。
 また、パディング付加部207は、式(2),(4)により算出した値n,mに基づき、DMA書き込み先頭アドレスを「n×アライメントサイズ」と設定し、又、DMA書き込み長を「m×アライメントサイズ」と設定する。そして、DMAコントローラ204が、パディング付きデータを、メモリ6のDMA書き込み先頭アドレスからDMA書き込み長にかかる領域に対して書き込むことで、小さいレイテンシでデータをメモリ6に書き込むことができる。
 (B)第2実施形態
 上述した第1実施形態においては、送信元の情報処理装置2aがパディングフラグとアラインサイズとを有するパディング情報を備えたパケットを送信する。そして、送信先の情報処理装置2において、パディング付加部207がパディング情報に基づいてパディング付きデータの作成を行なっているが、これに限定されるものではない。本第2実施形態の一例としての並列計算機システムにおいては、送信パケットにパディングフラグ及びアラインサイズを備えない。
 図8は第2実施形態の一例としての並列計算機システム1における送信パケットのフォーマットを模式的に例示する図、図9はその並列計算機システムに関わる通信装置の機能構成を示す図である。なお、図中、既述のフィールドと同じフィールドは同様の部分を示しているので、その説明は省略する。
 図8に示すように、送信パケットは、パケットタイプ,ルーティングヘッダ,ローカルノードアドレス,リモートノードアドレス,オフセット及びペイロードをそれぞれ格納するフィールドを備える。
 図9に示すように、第2実施形態の並列計算機システム1における情報処理装置2は、通信装置10が、第1実施形態の通信装置10に加えてキャッシュラインサイズ保持部(調整サイズ情報格納部)209を備えるものであり、その他の部分は第1実施形態の情報処理装置2と同様に構成されている。
 キャッシュラインサイズ保持部(調整サイズ情報格納部)209は、プロセッサ3のキャッシュメモリ5のキャッシュラインサイズ(調整情報,調整サイズ情報)を保持する記憶装置(メモリ)である。このキャッシュラインサイズ保持部209は、プロセッサ3から通知されるキャッシュラインサイズを格納する。なお、プロセッサ3は、例えば、当該情報処理装置2の起動時等の所定のタイミングで、キャッシュラインサイズをキャッシュラインサイズ保持部209に通知することが望ましい。
 また、パディング付加部207は、パケット受信部208が受信したパケットに基づき、ペイロードがアラインされているか否かの判断を行なう。具体的には、パディング付加部207は、受信したパケットのペイロード書き込み先頭アドレスがアライメントサイズの倍数であり、且つ、ペイロードの長さがアライメントサイズの倍数である場合に、このデータがアラインされていると判断する。
 そして、パディング付加部207は、ペイロードがアラインされていないと判断した場合に、パケット受信部208によって受信されたデータに対してパディングを付加することによりパディング付きデータを作成する。
 本第2実施形態においては、パディング付加部207は、アライメントサイズとして、このキャッシュラインサイズ保持部209からキャッシュラインサイズを読み出し、前述した式(1)~(4)の算出に用いる。
 上述の如く構成された、第2実施形態の一例としての並列計算機システム1における情報処理装置2のパディング付加部207の処理を、図10に示すフローチャート(ステップA1,A10~A50)に従って説明する。なお、図中、既述の符号と同一の符号を付したステップは同様の処理を示しているので、その説明は省略する。
 先ず、ステップA1において、パディング付加部207は、パケット受信部208が受信したパケットに基づき、ペイロードがアラインされているか否かの判断を行なう。
 パディング付加部207は、ペイロードがアラインされていないと判断した場合には(ステップA1のNOルート参照)、パケット受信部208によって受信されたデータに対してパディングを付加することによりパディング付きデータを作成する。すなわち、ステップA10~A40の処理を行なう。
 一方、パディング付加部207は、ペイロードがアラインされていると判断した場合には(ステップA1のYESルート参照)、ステップA50において、ペイロードの書き込み先頭アドレスをDMA書き込み先頭アドレスをとし、又、ペイロードの長さをDMA書き込み長をとする。更に、ペイロードをDMA書き込みデータとする。
 その後、ステップA40において、パディング付加部207は、ステップA20において設定したDMA書き込み先頭アドレス,DMA書き込み長及びDMA書き込みデータをDMAコントローラ204に送って、処理を終了する。なお、DMAコントローラ204は、DMA書き込みデータを、メモリ6のDMA書き込み先頭アドレスからDMA書き込み長にかかる領域に対して書き込む。
 このように、第2実施形態の一例としての並列計算機システム1の情報処理装置2においては、通信装置10において、パディング付加部207は、パケット受信部208が受信したパケットに基づき、ペイロードがアラインされているか否かの判断を行なう。そして、ペイロードがアラインされていないと判断した場合に、パディング付加部207は、ペイロードにパディングを付加してパディング付きデータを作成する。これにより、第1実施形態と同様に、受信したデータがアラインされていない場合であっても、メモリ6への書き込みを行なう際のレイテンシを短くすることができる。
 また、第1実施形態と比べて、送信元において、送信するデータにパディング情報(パディングフラグ及びパディングサイズ)を付加する必要がなく、送信側の情報処理装置2を変更する必要がない。これにより、既存のシステムに対して容易に導入することができ、利便性が高く、又、経済的である。
 また、パディング付加部207において、前述した式(1)~(4)を用いて、ペイロードの先頭に対して行なうパディングの長さp_fや、ペイロードの末尾に対して行なうパディングの長さp_eを算出し、パディング付きデータを作成する。
 さらに、パディング付加部207は、作成したパディング付きデータをDMAコントローラ204に送る。DMAコントローラ204は、パディングが付加されたデータをメモリ6に書き込む。このように、パディング付きデータを容易に作成することができる。
 また、パディング付加部207は、式(2),(4)により算出した値n,mに基づき、DMA書き込み先頭アドレスを「n×アライメントサイズ」と設定し、又、DMA書き込み長を「m×アライメントサイズ」と設定する。そして、DMAコントローラ204が、パディング付きデータを、メモリ6のDMA書き込み先頭アドレスからDMA書き込み長にかかる領域に対して書き込むことで、小さいレイテンシでデータをメモリ6に書き込むことができる。
 (C)第3実施形態
 (C-1)実施例1
 第3実施形態の実施例1としての並列計算機システム1においては、前述した第1実施形態の並列計算機システム1としての機能に加えて、プロセッサコア4は、キャッシュメモリ5に格納するデータとして通信装置10からデータを受信した場合には、受信したデータをキャッシュメモリ5とメモリ6とに格納する機能を備える。
 そして、これらのキャッシュメモリ5やメモリ6にデータを格納する際に、データがアラインされていない場合には、パディング付加部207がペイロードにパディングを付加して作成したパディング付きデータを格納する。
 本第3実施形態の実施例1の並列計算機システム1においても、プロセッサコア4は、情報処理装置2a等の他の情報処理装置による演算の結果を用いて演算処理を実行する場合には、他の演算処理装置から送信されたデータを通信装置10が受信するまで待機する。つまり、プロセッサコア4は、他の情報処理装置による演算結果のデータを待ち合わせるポーリング処理を実行する。
 そして、本第3実施形態の実施例1の並列計算機システム1においては、プロセッサコア4は、ポーリング処理の対象となるデータを通信装置10が受信した場合には、受信したデータを取得し、取得したデータをキャッシュメモリ5とメモリ6とに格納する。
 ここで、プロセッサコア4が受信したデータをキャッシュメモリ5およびメモリ6に格納する処理の例について説明する。例えば、プロセッサコア4は、後述する通信装置10からデータをメモリ6に格納するデータとして受信した場合には、メモリ6に受信したデータを格納する。
 また、プロセッサコア4は、通信装置10からデータをキャッシュメモリ5に書き込むデータとして受信した場合には、以下の処理を実行する。すなわちプロセッサコア4は、受信したデータをメモリ6に格納するとともに、受信したデータをキャッシュメモリ5に格納する。つまり、プロセッサコア4は、キャッシュメモリ5に格納するデータとして通信装置10からデータを受信した場合には、受信したデータをキャッシュメモリ5とメモリ6とに格納する。
 ここで、プロセッサコア4は、受信したデータをキャッシュメモリ5に格納する場合には、キャッシュメモリ5に格納されているデータとメモリ6に格納されているデータとの同一性を保持するための情報を参照する。そして、プロセッサコア4は、参照した同一性を保持するための情報に基づいて、キャッシュメモリ5に格納されていたデータをメモリ6に吐き出し、その後、受信したデータをキャッシュメモリ5に格納する。その後、プロセッサコア4は、キャッシュメモリ5に格納したデータ、すなわちポーリング処理の対象となるデータを用いて、演算処理を実行する。
 また、プロセッサコア4は、演算の結果、算出したデータを他の情報処理装置へ送信する場合には、送信先の情報処理装置を示す情報と、算出したデータとを通信装置10へ送信する。この際、プロセッサコア4は、算出したデータが他の情報処理装置が有するプロセッサコアが待ち合わせているデータであるか否かを判定する。そして、プロセッサコア4は、算出したデータが他の情報処理装置が有するプロセッサコアが待ち合わせているデータであると判定した場合には、プロセッサコアが待ち合わせているデータである旨とを通信装置10へ送信する。
 次に、プロセッサコア4が通信装置10からデータをキャッシュメモリ5に格納するデータとして受信した場合について説明する。このような場合には、プロセッサコア4は、受信したデータを格納するキャッシュラインのValidビットとDirtyビットとタグデータとを参照する。つまり、プロセッサコア4は、受信したデータを格納するメモリアドレスのインデックスに対応するキャッシュラインのValidビットとDirtyビットとを参照する。そして、プロセッサコア4は、参照したValidビットが「0」または参照したタグデータが受信したメモリアドレスのタグデータと一致しない場合には、受信したデータをメモリ6に格納する。
 また、プロセッサコア4は、参照したValidビットが「1」、かつ、参照したタグデータが受信したデータを格納するメモリアドレスのタグと一致する場合には、以下の処理を実行する。すなわち、プロセッサコア4は、通信装置10から受信したデータを状態データとタグデータとを参照したキャッシュラインに格納する。
 通信装置10は、バス8を介して、情報処理装置2aを初めとする他の情報処理装置からパケット化されたデータを受信する。ここで、パケット化されたデータには、データと、データを格納するメモリ6のメモリアドレスとが格納されている。通信装置10は、他の情報処理装置2aからデータを受信した場合には、受信したデータが、プロセッサコア4が待ち合わせているデータであるか否かを判定する。
 そして、通信装置10は、受信したデータが、プロセッサコア4が待ち合わせているデータであると判定した場合には、データをキャッシュメモリ6に格納するデータとしてプロセッサコア4に送信する。つまり、通信装置10は、データをキャッシュメモリ6に格納するデータとしてプロセッサコア4に送信することで、受信したデータをキャッシュメモリ5とメモリ6に格納する。
 一方、通信装置10は、受信したデータが、プロセッサコア4が待ち合わせているデータではないと判定した場合には、データをメモリ6に格納するデータとしてプロセッサコア4に送信する。つまり、通信装置10は、データをメモリ6に格納するデータとしてプロセッサコア4に送信することで、受信したデータをメモリ6に格納する。
 また、通信装置10は、プロセッサコア4からデータと送信先の他の情報処理装置2aを示す情報とを受信した場合には、受信したデータをパケット化し、バス8を介して、送信先の他の情報処理装置2aへパケットを送信する。また、通信装置10は、プロセッサコア4から他の情報処理装置2aが有するプロセッサが待ち合わせているデータである旨を合わせて受信した場合には、受信したデータをパケット化するとともに、ポーリング処理の対象である旨を示す制御情報をパケットに付加する。そして、通信装置10は、制御情報を付加したパケットを送信先の他の情報処理装置2aへ送信する。
 本第3実施形態の実施例1においても、通信装置10において、判定部14を介して受け取ったパディング情報においてパディングフラグとして「1(有効)」が設定されている場合に、パディング付加部207が、データがアラインサイズにアラインするようにパディングを付けることによりパディング付きデータを作成する。通信装置10はこのパディング付きデータを各プロセッサコア4に対して、キャッシュメモリ5もしくはメモリ6に保持するデータとして送信する。
 また、パディング情報においてパディングフラグとして「0(無効)」が設定されている場合には、パディング付加部207は、パケット受信部208が受信したデータを各プロセッサコア4に対して、キャッシュメモリ5もしくはメモリ6に保持するデータとして送信する。
 すなわち、通信装置10aは、プロセッサコア4に対してアラインされたデータを送信する。
 以下、図11を用いて、通信装置10の一例を説明する。図11は、第3実施形態の実施例1としての並列計算機システムに関わる通信装置の一例を説明するための図である。図10に示す例では、通信装置10は、第1実施形態の通信装置10に、更に判定部14を有する。
 制御部205(パケット生成部)は、図11中(A)に示すように、他の情報処理装置2aのプロセッサコアが待ち合わせているデータを送信する場合には以下の処理を実行する。すなわち、制御部205は、送信するデータをパケット化し、送信先の他の情報処理装置2aやデータを格納する送信先の他の情報処理装置2aが有するメモリのメモリアドレス等をパケットに格納する。また、制御部205は、他の情報処理装置2aのプロセッサコアが有するキャッシュメモリに書き込む旨の制御情報をパケットに付加する。そして、制御部205は、生成したパケットをパケット送信部206へ送信する。
 ここで、図12は、第3実施形態の実施例1に関わる制御部205が生成するパケットの一例を説明するための図である。図12中(A)に示すように、従来のパケットは、送信先の他の情報処理装置2aを示すアドレスが格納されたヘッダ部と、データを格納するデータ部とを有する。一方、制御部205は、図12中(B)に示すパケットを生成する。具体的には、制御部205は、図12中(C)に示すように、パケットのヘッダとデータとの間に制御情報を格納する1ビットのフラグ領域を追加する。
 そして、制御部205は、送信するデータが送信先の他の情報処理装置2aのプロセッサコアが待ち合わせるデータである場合には、制御情報としてフラグ領域に「1」を格納する。また、制御部205は、送信するデータが送信先の情報処理装置のプロセッサコアが待ち合わせるデータではない場合には、制御情報としてフラグ領域に「0」を格納する。なお、上記した制御情報が格納されたパケットは、情報処理装置2だけではなく、情報処理装置2aを始めとする他の情報処理装置も同様のパケットを生成するものとする。
 図11に戻って、パケット送信部206は、制御部205が生成したパケットを受信した場合には、図11中(B)に示すように、バス8を介して、受信したパケットを送信先の他の情報処理装置2aへ送信する。
 パケット受信部208は、図11中(C)に示すように、バス8を介してパケットを受信した場合には、受信したパケットを判定部14に転送する。判定部14は、受信したパケットのフラグ領域に「1」が格納されているか否かを判定する。
 そして、判定部14は、パケットのフラグ領域に「1」が格納されている場合には、パケットに格納されていたデータがキャッシュメモリ5に格納するデータであると判定する。また、判定部14は、パケットのフラグ領域に「0」が格納されている場合には、パケットに格納されていたデータをメモリ6に格納するデータであると判定する。その後、判定部14は、判定した内容とパケットに格納されていたデータとをパディング付加部207に送信する。
 パディング付加部207は、パケット受信部208によって受信されたデータに対してパディングを付加することによりパディング付きデータを作成する。パディング付加部207は、判定部14を介して受け取ったパディング情報においてパディングフラグとして「1(有効)」が設定されている場合に、データがアラインサイズにアラインするように、パディングを付けることによりパディング付きデータを作成する。そして。パディング付加部207は、この作成したパディング付きデータをDMA書き込みデータとしてDMAコントローラ204に送る。
 また、パディング情報においてパディングフラグとして「1(有効)」が設定されていない場合には、パディング付加部207は、パケット受信部208が受信したデータを、DMA書き込みデータとしてDMAコントローラ204に送る。
 DMAコントローラ204(格納部)は、パケットに格納されていたデータがキャッシュメモリ5に格納するデータであると判定部14が判定した場合には、以下の処理を実行する。すなわち、DMAコントローラ204は、図11中(D)に示すようにパディング付加部207から送られたDMAデータを、キャッシュメモリ5とメモリ6とに格納するデータとしてプロセッサコア4に送信する。
 また、DMAコントローラ204は、パケットに格納されていたデータをメモリ6に格納するデータであると判定部14が判定した場合には、パディング付加部207から送られたDMAデータをメモリ6に格納するデータとしてプロセッサコア4に送信する。
 具体的には、DMAコントローラ204は、パケットのフラグ領域に「1」が格納されていた場合には、パディング付加部207から受信したデータとデータをキャッシュメモリ5に格納する旨の通知とをプロセッサコア4に送信する。また、DMAコントローラ204は、パケットのフラグ領域に「0」が格納されていた場合には、パディング付加部207から受信したデータをプロセッサコア4に送信する。つまり、DMAコントローラ204は、メモリ6に格納するデータとしてパディング付加部207から受信したデータをプロセッサコア4に送信する。
 そして、前述の如く、パケット受信部208が受信したデータがアラインされていないものであった場合には、パディング付加部207が、このデータのペイロードに対してパディングを付加したパディング付きデータを作成する。通信装置10はこのパディング付きデータをプロセッサコア4に送信する。
 また、パケット受信部208が受信したデータがアラインされているものであった場合には、パディング付加部207は、パケット受信部208が受信したデータを、プロセッサコア4に送信する。
 すなわち、通信装置10は、プロセッサコア4に対してアラインされたデータ(アライン済みデータ)を送信する。
 上述したように、通信装置10は、他の情報処理装置2aが有するプロセッサコアが待ち合わせているデータ、つまりポーリング対象となるデータを送信する場合には、以下の処理を実行する。すなわち、通信装置10は、送信するパケットのフラグ領域に制御情報として「1」を格納し、送信先の他の情報処理装置2aへ送信する。また、情報処理装置2aを初めとする他の情報処理装置が有する通信装置も、プロセッサコア4が待ち合わせているデータを送信する場合には、フラグ領域に「1」を格納したパケットを送信する。
 また、通信装置10は、送信するデータ(パケット)のアラインサイズの領域にアラインサイズを格納する。更に、通信装置10は、送信するデータがアラインサイズにアラインされていない場合には、パディングフラグの領域に「1」を格納して送信する。又、通信装置10は、送信するデータがアラインサイズにアラインされている場合には、パディングフラグの領域に「0」を格納して送信する。
 そして、通信装置10は、受信したパケットのフラグ領域に「1」が格納されている場合には、受信したパケットに格納されたデータをキャッシュメモリ5に書き込むべきデータとしてパディング付加部207に送信する。
 パディング付加部207は、パディングフラグに「1」が格納されている場合には、受信したパケットに対して、アラインサイズに合わせたパディングを付加して、DMAコントローラ204に送信する。
 DMAコントローラ204は、パディング付加部207から受信したパケットをキャッシュメモリ5に書き込むべきデータとしてプロセッサコア4に送信する。
 プロセッサコア4は、メモリ6に格納されているデータのうち受信したデータを書き込むべきメモリアドレスに格納されたデータをキャッシュメモリ5にキャッシュしている場合には、通信装置10から受信したデータをキャッシュメモリ5にキャッシュする。このため、プロセッサコア4は、待ち合わせていたデータをメモリ6ではなく、キャッシュメモリ5から読み出すことができるので、効率的に演算処理を実行することができる。
 また、この際、プロセッサコア4が受け取るDMA書き込みデータは、アラインされたデータ(アライン済みデータ)であるので、キャッシュメモリ5に格納する際のレイテンシを小さくすることができる。
 一方、通信装置10は、受信したパケットのフラグ領域に「0」が格納されている場合には、受信したパケットに格納されたデータをメモリ6に書き込むべきデータとしてパディング付加部207に送信する。
 パディング付加部207は、パディングフラグに「1」が格納されている場合には、受信したパケットに対して、アラインサイズに合わせたパディングを付加して、DMAコントローラ204に送信する。
 DMAコントローラ204は、パディング付加部207から受信したパケットをメモリ6に書き込むべきデータとしてプロセッサコア4に送信する。
 このような場合には、プロセッサコア4は、データをメモリ6に書き込む。つまり、情報処理装置2は、プロセッサコア4が待ち合わせているデータを他の情報処理装置2aから受信した場合にのみプロセッサコア4が有するキャッシュメモリ5に格納し、それ以外のデータについてはメモリ6に格納する。このため、演算に使用するか不明なデータによってキャッシュメモリ5に格納された演算に使用するデータが吐き出されることが防がれる結果、並列計算機システム1は、計算処理速度の低下を防ぐことができる。
 また、この際、プロセッサコア4が受け取るDMA書き込みデータは、アラインされたデータ(アライン済みデータ)であるので、キャッシュメモリ5に格納する際のレイテンシを小さくすることができる。
 例えば、プロセッサ3、プロセッサコア4、制御部205、パケット送信部206、パケット受信部208、判定部14、パディング付加部207及びDMAコントローラ204は、LSIなどの集積回路により実現される。
[通信装置10の処理の流れ]
 次に、図13を用いて、通信装置10が実行する処理の流れについて説明する。図13は、第3実施形態の実施例1に関わる通信装置が実行する処理の流れを説明するためのフローチャートである。図13に示す例では、通信装置10は、バス8を介して情報処理装置2を送信先とするパケットを受信したことをトリガとして処理を開始する。
 まず、通信装置10は、受信したパケットのフラグ領域に「1」が格納されているか否かを判定する(ステップS101)。そして、通信装置10は、受信したパケットのフラグ領域に「1」が格納されている場合には(ステップS101のYESルート参照)、受信したパケットに格納されていたデータをキャッシュメモリ5に格納するデータとしてプロセッサコア4へ送信する(ステップS102)。又、この際、パディング付加部207は、パディングフラグに「1」が格納されている場合には、受信したパケットに対して、アラインサイズに合わせたパディングを付加して、DMA書き込みデータを作成する。パディング付加部207は、作成したDMA書き込みデータをDMAコントローラ204に送信し、DMAコントローラ204は、DMA書き込みデータをキャッシュメモリ5に格納するデータとしてプロセッサコア4へ送信する。なお、パディングフラグに「0」が格納されている場合には、パディング付加部207は、受信したパケットに対して、アラインサイズに合わせたパディングを付加することなく、受信したパケットに格納されていたデータをDMA書き込みデータとしてDMAコントローラ204に送信する。DMAコントローラ204は、DMA書き込みデータをキャッシュメモリ5に格納するデータとしてプロセッサコア4へ送信する。
 一方、通信装置10は、受信したパケットのフラグ領域に「0」が格納されている場合には(ステップS101のNOルート参照)、受信したパケットに格納されていたデータをメモリ6に格納するデータとしてプロセッサコア4へ送信する(ステップS103)。その後、通信装置10は、処理を終了する。又、この際、パディング付加部207は、パディングフラグに「1」が格納されている場合には、受信したパケットに対して、アラインサイズに合わせたパディングを付加して、DMA書き込みデータを作成する。パディング付加部207は、作成したDMA書き込みデータをDMAコントローラ204に送信し、DMAコントローラ204は、DMA書き込みデータをメモリ6に格納するデータとしてプロセッサコア4へ送信する。なお、パディングフラグに「0」が格納されている場合には、パディング付加部207は、受信したパケットに対して、アラインサイズに合わせたパディングを付加することなく、受信したパケットに格納されていたデータをDMA書き込みデータとしてDMAコントローラ204に送信する。DMAコントローラ204は、DMA書き込みデータをメモリ6に格納するデータとしてプロセッサコア4へ送信する。
[第3実施形態の実施例1の効果]
 上述したように、情報処理装置2は、他の情報処理装置2aからデータを受信した場合には、受信したデータをプロセッサコア4が待ち合わせているか否かを判定する。そして、情報処理装置2は、受信したデータをプロセッサコア4が待ち合わせていると判定した場合には、受信したデータをキャッシュメモリ5に格納する。また、情報処理装置2は、受信したデータをプロセッサコア4が待ち合わせていないと判定した場合には、受信したデータをキャッシュメモリ5ではなくメモリ6に格納する。
 このため、情報処理装置2は、プロセッサコア4が演算に利用しないデータを受信した際に、キャッシュメモリ5に格納されたデータの吐き出しを防止する。この結果、並列計算機システム1は、各情報処理装置2、2aが有するプロセッサコアがキャッシュメモリに格納されたデータを用いて効率的な処理を実行することができるので、計算処理速度の低下を防止することができる。
 また、各情報処理装置2、2aは、他の情報処理装置が有するプロセッサコアが待ち合わせているデータを送信する場合には、送信するパケットにプロセッサコアが待ち合わせている旨を示す制御情報を格納する。そして、各情報処理装置2、2aは、受信したパケットに制御情報が格納されていた場合には、受信したパケットのデータをキャッシュメモリ5に格納する。また、各情報処理装置2、2aは、受信したパケットに制御情報が格納されていない場合には、受信したパケットのデータをメモリ6に格納する。このため、各情報処理装置2、2aは、受信したデータをキャッシュメモリに格納すべきか否かを容易に判定することができる。
 そして、パディング付加部207が、受信したデータに付加されているパディング情報を参照して、パディングフラグが有効である場合にペイロードにパディングを付加してパディング付きデータを作成する。DMAコントローラ204が、このパディング付きデータをキャッシュメモリ5やメモリ6に書き込む。これにより、受信したデータがアラインされていない場合であっても、キャッシュメモリ5やメモリ6への書き込みを行なう際のレイテンシを小さくすることができる。
 (C-2)実施例2
 第3実施形態の実施例2では、複数のプロセッサコアを有するプロセッサが設置された情報処理装置を複数有する並列計算機システムについて説明する。図14は、第3実施形態の実施例2に関わる並列計算機システムの一例を説明するための図である。図14に示す例では、並列計算機システム1aは、複数の情報処理装置2b、2cを有する。なお、情報処理装置2cは、情報処理装置2bと同様の処理を実行するものとして、説明を省略する。
 また、情報処理装置2bが有する各部のうち、情報処理装置2が有する各部と同様の機能を発揮するものについては、同じ符号を付し、以下の説明を省略する。
 情報処理装置2bは、プロセッサ3aを有する。また、プロセッサ3aは、複数のプロセッサコア4a~4cを有する。なお、プロセッサ3a内のプロセッサコアは、任意の数が適用可能である。各プロセッサコア4a~4cは、それぞれキャッシュメモリ5a~5cを有する。なお、以下の説明においては、プロセッサコア4b、4cはプロセッサコア4aと同様の機能を発揮するものとし、説明を省略する。また、キャッシュメモリ5b、5cは、キャッシュメモリ5aと同様の機能を発揮するものとして、説明を省略する。
 キャッシュメモリ5aは、第3実施形態の実施例1に関わるキャッシュメモリ5と同様に、状態データ、タグデータおよびデータを格納する複数のキャッシュラインを有する。ここで、キャッシュメモリ5は、タグ情報と同じキャッシュラインに格納されたデータと他のキャッシュメモリ5b、5cに格納されたデータとメモリ6に格納されたデータとの関係を示す同一性情報が格納される。
 例えば、キャッシュメモリ5は、状態データとしてMESIプロトコル(イリノイ・プロトコル)に基づくキャッシュラインの状態を示す情報を格納する。詳細には、状態データに「M:Modify」が格納されている場合には、同じキャッシュラインに格納されたデータを排他的にキャッシュしており、かつ、キャッシュしたデータがプロセッサコア4aによって最新の状態に更新されていることを示す。
 また、状態データに「E:Exclusive」が格納されている場合には、同じキャッシュラインに格納されたデータを排他的にキャッシュしており、かつ、キャッシュしたデータがプロセッサコア4aによって更新されていない状態を示す。また、状態データに「S:Shared」が格納されている場合には、他のキャッシュメモリ5b、5cが同一の共有データをキャッシュしていることを示す。また、状態データに「I:Invalid」が格納されている場合には、同一キャッシュラインのデータが無効であることを示す。
 プロセッサコア4aは、各プロセッサコア4a~4cが待ち合わせていないデータを通信装置10aが受信した場合には、受信したデータをメモリ6に格納する。また、プロセッサコア4aは、通信装置10aが受信したデータが、自身が待ち合わせているデータであって、メモリ6のうち受信したデータを格納するメモリアドレスに格納されていたデータをキャッシュメモリ5aに保持している場合には、以下の処理を実行する。
 すなわち、プロセッサコア4aは、キャッシュメモリ5aに保持したデータを他のプロセッサコア4b、4cがキャッシュしているか否かを判定し、保持していると判定した場合には、受信したデータをメモリ6に格納する。また、プロセッサコア4aは、キャッシュメモリ5aに保持したデータを他のプロセッサコア4b、4cがキャッシュしていないと判定した場合には、受信したデータをキャッシュメモリ5aのみに格納する。
 また、通信装置10aが受信したデータがアラインされていないものであった場合には、パディング付加部207がペイロードにパディングを付加してパディング付きデータとし、このパディング付きデータが、キャッシュメモリ5a,5b,5cやメモリ6に格納される。又、通信装置10aが受信したデータがアラインされたものであった場合には、このアラインされた状態でキャッシュメモリ5a,5b,5cやメモリ6に格納される。すなわち、キャッシュメモリ5a,5b,5c及びメモリ6には、アラインされたデータが格納される。
 次に、プロセッサコア4aが実行する処理の一例を説明する。例えば、プロセッサコア4aは、通信装置10aからデータをメモリ6に格納するデータとして受信した場合には、以下の処理を実行する。すなわち、プロセッサコア4aは、キャッシュメモリ5aのうち、受信したデータを格納するメモリ6のメモリアドレスのインデックスに対応するキャッシュラインの状態データを参照する。
 そして、プロセッサコア4aは、参照した状態データに「M」が格納されている場合には、参照した状態データと同じキャシュラインに格納されているデータをメモリ6へ書き出す。次に、プロセッサコア4aは、参照した状態データを「M」から「I」に更新する。その後、プロセッサコア4aは、受信したデータをメモリ6に格納する。また、プロセッサコア4aは、参照した状態データが「M」以外である場合には、参照した状態データを「I」に更新し、受信したデータをメモリ6に格納する。そして、メモリ6に書き込まれるデータは、アラインされたデータである。
 一方、プロセッサコア4aは、通信装置10aからデータをキャッシュメモリに格納するデータとして受信した場合には、以下の処理を実行する。すなわち、プロセッサコア4aは、キャッシュメモリ5aのうち、受信したデータを格納するメモリ6のメモリアドレスのインデックスに対応するキャッシュラインの状態データとタグデータとを参照する。
 そして、プロセッサコア4aは、参照した状態データに「I」が格納されていた場合、又は、受信したデータを格納するメモリアドレスのタグと参照したタグデータとが一致しない場合には、受信したデータをメモリ6に格納する。このメモリ6に書き込まれるデータもアラインされたデータである。
 また、プロセッサコア4aは、参照した状態データに「S」が格納され、かつ、受信したデータを格納するメモリアドレスのタグと参照したタグデータとが一致した場合には、受信したデータをメモリ6に格納し、参照した状態データを「S」から「I」に更新する。
 また、プロセッサコア4aは、参照した状態データが「M」または「E」で、かつ、受信したデータを格納するメモリアドレスのタグと参照したタグデータとが一致した場合には、以下の処理を実行する。すなわち、プロセッサコア4aは、受信したデータをキャッシュメモリ5aに格納し、参照した状態データを「M」に更新する。又、キャッシュメモリ5に書き込まれるデータもアラインされたデータである。
 つまり、各プロセッサコア4a~4cは、キャッシュメモリに格納するデータとして通信装置10aからデータを受信した場合には、受信したデータを格納するメモリアドレスのインデックスに対応するキャッシュラインの状態データとタグデータとを参照する。そして、各プロセッサコア4a~4cは、参照した状態データとタグデータとから、受信したデータが、自身のポーリング処理の対象となるデータであって、受信したデータを格納するメモリアドレスに格納されていたデータを自身のキャッシュメモリが保持しているか否かを判別する。つまり、各プロセッサコア4a~4cは、自身のキャッシュメモリに対してポーリング処理を行っているか否かを判別する。
 通信装置10aは、情報処理装置2cを初めとする他の情報処理装置からパケットを受信した場合には、受信したパケットのフラグ領域に「1」が格納されているか否かを判定する。そして、通信装置10aは、受信したパケットのフラグ領域に「1」が格納されていた場合には、以下の処理を実行する。すなわち、通信装置10aは、受信したデータを各プロセッサコア4a~4cに対して、キャッシュメモリに保持するデータとして受信したデータを送信する。又、この際、通信装置10aにおいて、判定部14を介して受け取ったパディング情報においてパディングフラグとして「1(有効)」が設定されている場合に、パディング付加部207が、データがアラインサイズにアラインするようにパディングを付けることによりパディング付きデータを作成する。通信装置10aはこのパディング付きデータを各プロセッサコア4a~4cに対して、キャッシュメモリ5a~5cに保持するデータとして送信する。
 また、パディング情報においてパディングフラグとして「0(無効)」が設定されている場合には、パディング付加部207は、パケット受信部208が受信したデータを各プロセッサコア4a~4cに対して、キャッシュメモリ5a~5cに保持するデータとして送信する。
 一方、通信装置10aは、受信したパケットのフラグ領域に「0」が格納されている場合には、受信したデータをメモリ6に格納するデータとして、各プロセッサコア4a~4cに送信する。又、この際、通信装置10aにおいて、判定部14を介して受け取ったパディング情報においてパディングフラグとして「1(有効)」が設定されている場合に、パディング付加部207が、データがアラインサイズにアラインするようにパディングを付けることによりパディング付きデータを作成する。通信装置10aはこのパディング付きデータを各プロセッサコア4a~4cに対して、メモリ6に保持するデータとして送信する。
 また、パディング情報においてパディングフラグとして「0(無効)」が設定されている場合には、パディング付加部207は、パケット受信部208が受信したデータを各プロセッサコア4a~4cに対して、メモリ6に保持するデータとして送信する。
 次に、図15を用いて、通信装置10aが有する各部について説明する。図15は、第3実施形態の実施例2に関わる通信装置を説明するための図である。図15に示す例では、通信装置10aは、制御部205(パケット生成部)、パケット送信部206、パケット受信部208、判定部14、パディング付加部207及びDMAコントローラ204a(格納部)を有する。
 パディング付加部207は、判定部14を介して受け取ったパディング情報においてパディングフラグとして「1」が設定されている場合に、データがアラインサイズにアラインするようにパディングを付けることによりパディング付きデータを作成する。パディング付加部207は、この作成したパディング付きデータをDMAコントローラ204に送信する。
 また、パディング情報においてパディングフラグとして「0」が設定されている場合には、パディング付加部207は、パケット受信部208が受信したデータをDMAコントローラ204に送信する。
 DMAコントローラ204aは、判定部14がパケットのフラグ領域に「1」が格納されていると判定した場合には、図15中(A)に示すように、キャッシュメモリ5a~5cにキャッシュするデータとして受信したデータを各プロセッサコア4a~4cへ送信する。つまり、DMAコントローラ204aは、判定部14がパケットのフラグ領域に「1」が格納されていると判定した場合には、受信したデータを格納するメモリ6のメモリアドレスに格納されていたデータを保持しているキャッシュメモリに受信したデータを格納する。
 また、DMAコントローラ204aは、判定部14がパケットのフラグ領域に「0」が格納されていると判定した場合には、図15中(A)に示すように、メモリ6に格納するデータとして受信したデータを各プロセッサコア4a~4cへ送信する。つまり、DMAコントローラ204aは、判定部14がパケットのフラグ領域に「0」が格納されていると判定した場合には、受信したデータをメモリ6に格納する。
[第3実施形態の実施例2の効果]
 上述したように、情報処理装置2bは、複数のプロセッサコア4a~4cを有するプロセッサ3aを有する。また、各プロセッサコア4a~4cは、それぞれキャッシュメモリ5a~5cを有する。そして、情報処理装置2bは、情報処理装置2cを初めとする他の情報処理装置からパケットを受信した場合には、受信したパケットのフラグ領域に制御情報として「1」が格納されているか否かを判定する。そして、情報処理装置2bは、制御情報として「1」が格納されている場合には、受信したパケットのデータを格納するメモリ6のメモリアドレスに格納されていたデータをキャッシュしているキャッシュメモリに受信したパケットのデータを格納する。また、情報処理装置2bは、制御情報として「0」が格納されている場合には、受信したパケットのデータをメモリ6に格納する。
 このため、情報処理装置2bは、各プロセッサコア4a~4cによるポーリング処理の対象とするデータを受信した場合には、受信したデータをキャッシュメモリ5a~5cに直接格納することができる。このため、情報処理装置2bは、プロセッサ3aが複数のプロセッサコア4a~4cを有するマルチコアプロセッサである場合にも、プロセッサ3aが実行する演算処理を効率的に行わせることができる。
 また、情報処理装置2bは、各プロセッサコア4a~4cによるポーリング処理の対象ではないデータを受信した場合には、受信したデータをメモリ6に格納する。このため、情報処理装置2bは、各プロセッサコア4a~4cが演算処理に利用するデータが受信したデータによってキャッシュメモリ5a~5cから吐き出されることを防ぐことができる。このため、並列計算機システム1aは、計算処理速度を低下させることなく、プロセッサ3aに効率的な演算処理を実行させることができる。
 また、各キャッシュメモリ5a~5cは、自身に保持したデータと他のキャッシュメモリ5a~5cに保持されたデータとメモリ6に格納されたデータとの関係を示す同一性情報が格納される。そして、各プロセッサコア4a~4cは、キャッシュメモリに格納するデータとしてデータを受信した場合には、自身のキャッシュメモリ5a~5cにキャッシュしたデータと、受信したデータを格納するメモリアドレスのデータとの同一性情報をそれぞれ保持する。
 この際、各プロセッサコア4a~4cは、自身のキャッシュメモリ5a~5cに格納された同一性情報に基づいて、キャッシュしたデータとメモリ6に格納されているデータとの同一性を保持する。その後、各プロセッサコア4a~4cは、通信装置10から受信したデータをキャッシュメモリ5a~5cに格納する。このため、並列計算機システム1aは、各プロセッサコア4a~4cが独自のキャッシュメモリ5a~5cを有する場合にも、データのコヒーレンシを保持し、適切な演算処理を各情報処理装置2b、2cに実行させることができる。
 そして、パディング付加部207が、受信したデータに付加されているパディング情報を参照して、パディングフラグが有効である場合にペイロードにパディングを付加してパディング付きデータを作成する。DMAコントローラ204が、このパディング付きデータをキャッシュメモリ5a~5cやメモリ6に書き込ませる。これにより、受信したデータがアラインされていない場合であっても、キャッシュメモリ5a~5cやメモリ6への書き込みを行なう際のレイテンシを短くすることができる。
 (C-3)実施例3
 第3実施形態の実施例3では、それぞれ独自のL1キャッシュメモリを有する複数のプロセッサコアと各プロセッサコアが共用する1つのL2キャッシュメモリを有するプロセッサが設置された情報処理装置を複数有する並列計算機システムについて説明する。図16は、第3実施形態の実施例3に関わる並列計算機システムの一例を説明するための図である。図16に示す例では、並列計算機システム1bは、複数の情報処理装置2e、2fを有する。なお、情報処理装置2fは、情報処理装置2eと同様の処理を実行するものとして、説明を省略する。
 また、並列計算機システム1bが有する各部のうち、並列計算機システム1aが有する各部と同様の機能を発揮するものについては、同じ符号を付し、以下の説明を省略する。
 情報処理装置2eは、プロセッサ3bを有する。また、プロセッサ3bは、複数のプロセッサコア4d~4fと各プロセッサコア4d~4fが共用するレベル2キャッシュメモリ7を有する。また、各プロセッサコア4d~4fは、それぞれレベル1キャッシュメモリ5d~5fを有する。なお、各プロセッサコア4e、4fは、プロセッサコア4dと同様の機能を発揮するものとし、説明を省略する。
 本第3実施形態の実施例3においても、通信装置10aにおいて、判定部14を介して受け取ったパディング情報においてパディングフラグとして「1(有効)」が設定されている場合に、パディング付加部207が、データがアラインサイズにアラインするようにパディングを付けることによりパディング付きデータを作成する。通信装置10aはこのパディング付きデータを各プロセッサコア4d~4fに対して、レベル1キャッシュメモリ5d~5fもしくはメモリ6に保持するデータとして送信する。
 また、パディング情報においてパディングフラグとして「0(無効)」が設定されている場合には、パディング付加部207は、パケット受信部208が受信したデータを各プロセッサコア4d~4fに対して、レベル1キャッシュメモリ5d~5fもしくはメモリ6に保持するデータとして送信する。
 すなわち、通信装置10aは、プロセッサコア4d~4fに対してアラインされたデータを送信する。
 各レベル1キャッシュメモリ5d~5fは、ラインサイズ64バイトのキャッシュラインを複数有する。各レベル1キャッシュメモリ5d~5fは、「2N1」個のキャッシュラインを有し、各キャッシュラインに「2」ビットの状態データ、「34-N」ビットのタグデータ、64バイトのデータを格納する「2N1+6」バイトのキャッシュメモリである。ここで、「N」とは、各レベル1キャッシュメモリ5d~5fが、自身の各キャッシュラインと対応付けるインデックスのサイズである。
 なお、各レベル1キャッシュメモリ5d~5fの各キャッシュラインに格納される各情報は、キャッシュメモリ5a~5cが有する各キャッシュラインに格納される各情報と同様の情報であるものとする。また、各レベル1キャッシュメモリ5d~6fの各キャッシュラインに格納される状態データは、以下の同一性を示す同一性情報である。すなわち状態データは、同一キャッシュラインに格納されたデータと、他のレベル1キャッシュメモリ5d~5fに格納されたデータと、レベル2キャッシュメモリ7に格納されたデータとの同一性を示す。
 レベル2キャッシュメモリ7は、各レベル1キャッシュメモリ5d~5fと同様に、それぞれ64ビットのデータを格納する「2N2」個のキャッシュラインを有する。また、レベル2キャッシュメモリ7は、各キャッシュラインに「2」ビットの状態データ、「34-N」ビットのタグデータ、64バイトのデータを格納する「2N2+6」バイトのキャッシュメモリである。ここで、「N」は、レベル2キャッシュメモリ7が自身の各キャッシュラインと対応付けるインデックスのサイズである。また、レベル2キャッシュメモリ7の各キャッシュラインに格納される状態データは、同一キャッシュラインに格納されたデータと、メモリ6に格納されたデータとの同一性を示す。従って、レベル2キャッシュメモリ7に格納されるデータもアラインされているデータである。
 なお、各レベル1キャッシュメモリ5d~5f、および、レベル2キャッシュメモリ7は、ダイレクトマップ方式のキャッシュメモリである。例えば、各レベル1キャッシュメモリ5d~5f、および、レベル2キャッシュメモリ7は、メモリ6のメモリアドレス「i」に格納されたデータを保持する場合には、キャッシュライン番号が「i」のキャッシュラインにデータを保持するものとする。
 プロセッサコア4dは、各プロセッサコア4d~4fが待ち合わせていないデータを通信装置10aが受信した場合には、受信したデータをメモリ6に格納する。また、プロセッサコア4dは、自身が待ち合わせているデータを通信装置10aが受信した場合には、以下の処理を実行する。すなわち、プロセッサコア4dは、メモリ6のうち、受信したデータを格納するメモリアドレスが示す格納領域に格納されていたデータを1次キャッシュメモリとしてのレベル1キャッシュメモリ5dにキャッシュしているか判定する。
 そして、プロセッサコア4dは、メモリアドレスが示すメモリ6の格納領域に格納されていたデータをレベル1キャッシュメモリ5dに保持していると判定した場合には、受信したデータをレベル1キャッシュメモリ5dにキャッシュする。なお、キャッシュメモリ5に書き込まれるデータはアラインされたデータであり、レイテンシを小さくすることができる。
 また、プロセッサコア4dは、メモリアドレスが示すメモリ6の格納領域に格納されていたデータをレベル1キャッシュメモリ5dに保持していないと判定した場合には、受信したデータをメモリ6に格納する。なお、メモリ6に書き込まれるデータもアラインされたデータであり、これによってもレイテンシを小さくすることができる。
 次に、プロセッサコア4dが実行する処理の一例を説明する。例えば、プロセッサコア4dは、通信装置10aからデータをメモリ6に格納するデータとして受信した場合には、以下の処理を実行する。すなわち、プロセッサコア4dは、レベル1キャッシュメモリ5dのうち、受信したデータが格納されるメモリアドレスのインデックスと対応するキャッシュラインに格納された状態データを参照する。そして、プロセッサコア4dは、参照した状態データが「M」である場合には、参照した状態データと同一キャッシュラインのデータをメモリ6に書き出し、参照した状態データを「I」に更新する。そして、プロセッサコア4dは、受信したデータをメモリ6に格納する。そして、メモリ6に書き込まれるデータはアラインされたデータである。
 一方、プロセッサコア4dは、通信装置10aからデータをキャッシュメモリ5d~5fに格納するデータとして受信した場合には、以下の処理を実行する。すなわち、プロセッサコア4dは、受信したデータを格納するメモリアドレスのインデックスと対応するキャッシュラインのうち、状態データとタグデータとを参照する。そして、プロセッサコア4dは、参照した状態データに「I」が格納されている場合、または、参照したタグデータが受信したデータを格納するメモリアドレスのタグと異なる場合には、受信したデータをメモリ6に格納する。このメモリ6に書き込まれるデータもアラインされたデータである。
 また、プロセッサコア4dは、参照した状態データに「S」が格納され、かつ、参照したタグデータが受信したデータを格納するメモリアドレスのタグと一致する場合には、受信したデータをメモリ6に格納するとともに、参照した状態データを「I」に更新する。また、プロセッサコア4dは、参照した状態データに「M」又は「E」が格納され、かつ、参照したタグデータが受信したデータを格納するメモリアドレスのタグと一致する場合には、以下の処理を実行する。すなわち、プロセッサコア4dは、受信したデータを自身が有するキャッシュメモリ、すなわちレベル1キャッシュメモリ5dに格納し、参照した状態データを「M」に更新する。この際、プロセッサコア4dは、受信したデータをメモリ6には格納しない。そして、キャッシュメモリ5dに書き込まれるデータは、アラインされたデータである。
 なお、プロセッサコア4dは、受信したデータをメモリ6に格納する場合には、書き込みに先立って、キャッシュメモリ5a~5cとメインメモリ6間のデータの整合性であるデータのコヒーレンシを保持する処理を実行する。すなわち、プロセッサコア4dは、レベル2キャッシュメモリ7のうち、受信したデータを格納するメモリアドレスのインデックスに対応するキャッシュラインの状態データとタグデータとを参照する。そして、プロセッサコア4dは、参照した状態データが「M」であり、タグデータが受信したデータを格納するメモリアドレスのタグと一致する場合には、参照した状態データと同じキャッシュラインに格納されているデータをメモリ6に格納する。その後、プロセッサコア4dは、参照した状態データを「I」に更新し、さらに、受信したデータをメモリ6に格納する。そして、これらのメモリ6に書き込まれるデータもアラインされたデータである。
 つまり、プロセッサコア4dは、プロセッサコア4d~4fのいずれかがポーリング処理の対象とする情報を通信装置10aが受信した場合には、受信したデータをレベル1キャッシュメモリ5dに格納するデータとして受信する。このような場合には、プロセッサコア4dは、受信したデータを格納するメモリ6の格納領域に格納されていたデータをレベル1キャッシュメモリ5dに排他的にキャッシュしているか否かを判定する。そして、プロセッサコア4dは、受信したデータを格納するメモリ6の格納領域に格納されていたデータをレベル1キャッシュメモリ5dに排他的にキャッシュしている場合には、受信したデータをレベル1キャッシュメモリ5dにキャッシュする。又、このキャッシュメモリ5dに書き込まれるデータもアラインされたデータである。
 通常、プロセッサコア4dは、ポーリング処理の対象となるデータが格納されるメモリアドレスのデータがキャッシュされている。このため、情報処理装置2eは、通信装置10aによってプロセッサコア4dが待ち合わせているデータを受信した場合には、受信したデータをメモリ6ではなく、レベル1キャッシュメモリ5dに格納する。この結果、並列計算機システム1bは、各情報処理装置2e、2fに、効率的に処理を実行させることができる。
[第3実施形態の実施例3の効果]
 上述したように、情報処理装置2eは、複数のプロセッサコア4d~4fを有するプロセッサ3bを有する。また、各プロセッサコア4d~4fは、それぞれレベル1キャッシュメモリ5d~5fを有する。そして、情報処理装置2eは、情報処理装置2fを初めとする他の情報処理装置からパケットを受信した場合には、受信したパケットのフラグ領域に制御情報として「1」が格納されているか否かを判定する。
 そして、情報処理装置2eは、制御情報として「1」が格納されている場合には、受信したデータを格納するメモリアドレスのデータをキャッシュしているレベル1キャッシュメモリ5d~5fに受信したデータを格納する。また、情報処理装置2eは、制御情報として「0」が格納されている場合には、受信したパケットのデータをメモリ6に格納する。
 このため、情報処理装置2eは、各プロセッサコア4d~4fによるポーリング処理の対象とするデータを受信した場合には、受信したデータをレベル1キャッシュメモリ5d~5fに直接格納することができる。このため、情報処理装置2eは、プロセッサ3bが実行する演算処理を効率的に行わせることができる。
 また、情報処理装置2eは、各プロセッサコア4d~4fによるポーリング処理の対象ではないデータを受信した場合には、受信したデータをメモリ6に格納する。このため、情報処理装置2eは、各プロセッサコア4d~4fが演算処理に利用するデータが受信したデータによってレベル1キャッシュメモリ5d~5fから吐き出されることを防ぐことができる。このため、並列計算機システム1bは、計算処理速度を低下させることなく、効率的な演算処理を実行することができる。
 また、各レベル1キャッシュメモリ5d~5fは、自身にキャッシュされたデータと他のレベル1キャッシュメモリ5d~5fに格納されたデータとレベル2キャッシュメモリ7に格納されたデータとの関係を示す状態データである第1同一性情報が格納される。また、レベル2キャッシュメモリ7には、自身にキャッシュされたデータとメモリ6にキャッシュされたデータとの関係を示す状態データである第2同一性情報が格納される。そして、各プロセッサコア4d~4fは、第1同一性情報および第2同一性情報に基づいて、レベル1キャッシュメモリ5d~5fに格納されたデータとレベル2キャシュメモリ7に格納されたデータとメモリ6に格納されたデータとの同一性を保持する。
 このため、並列計算機システム1bは、各プロセッサコア4d~4fが独自のレベル1キャッシュメモリ5d~5fを有し、レベル2キャッシュメモリ7を共用する場合にも、データの同一性を適切に保持し、適切な演算処理を実行させることができる。
 そして、パディング付加部207が、受信したデータに付加されているパディング情報を参照して、パディングフラグが有効である場合にペイロードにパディングを付加してパディング付きデータを作成する。DMAコントローラ204が、このパディング付きデータをレベル1キャッシュメモリ5d~5fやメモリ6に書き込ませる。これにより、受信したデータがアラインされていない場合であっても、レベル1キャッシュメモリ5d~5fやメモリ6への書き込みを行なう際のレイテンシを短くすることができる。
 (C-4)実施例4
 以下の第3実施形態の実施例4では、図17を用いて、並列計算機システムの一例を説明する。図17は、第3実施形態の実施例4に関わる並列計算機システムを説明するための図である。図17に示すように、並列計算機システム1cは、複数の情報処理装置2f、2gを有する。なお、図17では省略したが、並列計算機システム1cは、さらに多数の情報処理装置を有するものとする。また、情報処理装置2gは、情報処理装置2fと同様の処理を実行するものとして、以下の説明を省略する。また、前述した第1~3実施形態及び第3実施形態の実施例1~4に関わる各部と同様の処理を実行するものについては、同一の符号を付すものとし、以下の説明を省略する。
 情報処理装置2fは、プロセッサ3c、メモリ6、通信装置10bを有する。プロセッサ3cは、プロセッサコア4gを有する。プロセッサコア4gは、キャッシュメモリ5を有する。また、通信装置10bは、書き込み先アドレステーブル16を有する。
 プロセッサコア4gは、第3実施形態の実施例1に関わるプロセッサコア4と同様の処理を実行する。つまり、プロセッサコア4gは、通信装置10bからデータをメモリ6に格納するデータとして受信した場合には、プロセッサコア4と同様の処理を実行し、受信したデータをメモリ6に吐き出す。また、プロセッサコア4gは、通信装置10bからデータをキャッシュメモリ5に格納するデータとして受信した場合には、プロセッサコア4と同様の処理を実行し、受信したデータをキャッシュメモリ5に格納する。このため、プロセッサコア4gがデータをキャッシュメモリ5またはメモリ6に格納する処理の説明については、省略する。
 さらに、プロセッサコア4gは、受信データを待ち合わせるポーリング処理を実行する場合には、直前に、通信装置10bの書き込み先アドレステーブル16に、ポーリング処理の対象となるデータを格納するメモリ6のメモリアドレスを登録する。具体的には、プロセッサコア4gは、ポーリング処理の対象となるデータを格納するメモリ6のメモリアドレスを通信装置10bに送信し、後述する通信装置10bの更新部17に、送信したメモリアドレスを書き込み先アドレステーブル16に格納させる。
 また、プロセッサコア4gは、ポーリング処理の対象とするデータを通信装置10cから受信し、受信したデータをキャッシュメモリ5に格納した場合には、ポーリング処理の対象とするデータをキャッシュメモリ5に格納した旨を通信装置10cへ通知する。例えば、プロセッサコア4gは、ポーリング処理の対象とするデータをキャッシュメモリ5に格納した旨とともに、キャッシュメモリ5に格納したデータを格納するメモリ6のメモリアドレスとを通信装置10bに送信する。
 通信装置10bは、キャッシュメモリ5へのデータの書き込みを制御する制御アドレスを保持する書き込み先アドレステーブル16を有する。そして、通信装置10bは、情報処理装置2gを初めとする他の情報処理装置から受信したデータの書き込み先アドレスが、書き込み先アドレステーブル16に保持された制御アドレスと一致する場合には、以下の処理を実行する。すなわち、通信装置10bは、受信したデータをキャッシュメモリ5に格納するデータとしてプロセッサコア4gに送信する。
 また、通信装置10bは、受信したデータの書き込み先アドレスが、書き込み先アドレステーブル16に保持された制御アドレスと一致しない場合には、受信したデータをメモリ6に格納するデータとしてプロセッサコア4gに送信する。
 また、通信装置10bは、プロセッサコア4gからポーリング処理の対象とするデータをキャッシュメモリ5に格納した旨の通知を受けた場合には、以下の処理を実行する。すなわち、通信装置10bは、書き込み先アドレステーブル16からキャッシュメモリ5に格納したデータを格納するメモリ6のメモリアドレスを削除する。
 例えば、通信装置10bは、プロセッサコア4gからポーリング処理の対象とするデータをキャッシュメモリ5に格納した旨とともに、キャッシュメモリ5に格納したデータを格納するメモリ6のメモリアドレスとを受信する。このような場合には、通信装置10bは、受信したメモリアドレスを書き込み先アドレステーブル16から検索し、検索したメモリアドレスを書き込み先アドレステーブル16から削除する。
 また、本第3実施形態の実施例4においても、通信装置10bにおいて、判定部14を介して受け取ったパディング情報においてパディングフラグとして「1(有効)」が設定されている場合に、パディング付加部207が、データがアラインサイズにアラインするようにパディングを付けることによりパディング付きデータを作成する。通信装置10bはこのパディング付きデータをプロセッサコア4gに対して、キャッシュメモリ5もしくはメモリ6に保持するデータとして送信する。
 また、パディング情報においてパディングフラグとして「0(無効)」が設定されている場合には、パディング付加部207は、パケット受信部208が受信したデータを各プロセッサコア4gに対して、キャッシュメモリ5もしくはメモリ6に保持するデータとして送信する。
 すなわち、通信装置10bは、プロセッサコア4gに対してアラインされたデータを送信する。
 以下、通信装置10bについて、図18、および、図19を用いて説明する。まず、図18を用いて、通信装置10bが有する各部について説明する。図18は、第3実施形態の実施例4に関わる通信装置の一例を説明するための図である。図18に示すように、通信装置10bは、制御部205(パケット生成部)、パケット送信部206、パケット受信部208、判定部14a、DMAコントローラ204(格納部)、書き込み先アドレステーブル16、更新部17及びパディング付加部207を有する。
 書き込み先アドレステーブル16は、プロセッサコア4gのポーリング処理の対象とするデータが格納されるメモリアドレスを保持する。ここで、図19は、書き込み先アドレステーブルの一例を説明するための図である。図19に示す例では、書き込み先アドレステーブル16は、メモリアドレスを格納するライン番号が「0」~「N-1」のN個のラインメモリを有する。
 各ラインメモリは、図19中(A)に示す1ビットの領域に有効ビットが格納され、図19中(B)に示す64ビットの範囲にメモリアドレスが格納される。ここで有効ビットとは、ラインメモリに格納されたメモリアドレスが有効なデータであるか否かを示すビットである。例えば、有効ビットに「0」が格納されている場合には、このラインメモリに格納されたメモリアドレスのデータは無効であることを示す。また、有効ビットに「1」が格納されている場合には、このラインメモリに格納されたメモリアドレスのデータは、有効であることを示す。なお、書き込み先アドレステーブル16とは、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ (flash memory)などの半導体メモリ素子である。
 判定部14aは、パケット受信部208からパケットを受信した場合には、受信したパケットに格納されていたデータを格納するメモリ6のメモリアドレスを取得する。また、判定部14aは、取得したメモリアドレスと同一のメモリアドレスが書き込み先アドレステーブル16に格納されているか否かを判定する。
 すなわち、判定部14aは、書き込み先アドレステーブル16が有する各ラインメモリのうち、有効ビットに「1」が格納されているラインメモリに格納されたメモリアドレスと取得したメモリアドレスとを比較する。そして、判定部14aは、有効ビットに「1」が格納されているラインメモリに格納されたメモリアドレスと取得したメモリアドレスとが一致した場合には、受信したパケットに格納されていたデータをキャッシュメモリ5に格納するデータであると判定する。一方、判定部14aは、有効ビットに「1」が格納されているラインメモリに格納されたメモリアドレスと取得したメモリアドレスとが一致しないと判定した場合には、受信したパケットに格納されていたデータをメモリ6に格納するデータであると判定する。
 更新部17は、図18中(A)に示すように、プロセッサコア4gからポーリング処理の対象とするデータを格納するメモリ6のメモリアドレスを受信した場合には、受信したメモリアドレスを書き込み先アドレステーブル16に追加する。また、更新部17は、プロセッサコア4gからポーリング処理の対象とするデータを取得した旨の通知を受けた場合には、ポーリング処理の対象とするデータを格納するメモリ6のメモリアドレスを書き込み先アドレステーブル16から削除する。
 例えば、更新部17は、プロセッサコア4gからポーリング処理の対象とするデータを格納するメモリ6のメモリアドレスを受信した場合には、書き込み先アドレステーブル16が有する各ラインメモリのうち、有効ビットが「0」であるラインメモリを選択する。そして、更新部17は、選択したラインメモリにプロセッサコア4gから受信したメモリアドレスを格納するとともに、選択したラインメモリの有効ビットを「1」に更新する。
 また、更新部17は、プロセッサコア4gからポーリング処理の対象とするデータをキャッシュメモリ5に格納した旨とともに、キャッシュメモリ5に格納したデータを格納するメモリ6のメモリアドレスとを受信した場合には、以下の処理を実行する。すなわち、更新部17は、書き込み先アドレステーブル16が有する各ラインメモリのうち、有効ビットが「1」であるラインメモリであって、プロセッサコア4gから受信したアドレスが格納されているラインメモリを検索する。そして、更新部17は、検索したラインメモリの有効ビットを「0」に更新する。なお、更新部17とは、電子回路である。ここで、電子回路の例として、ASIC(Application Specific Integrated Circuit)やFPGA (Field Programmable Gate Array)などの集積回路、またはCPU(Central Processing Unit)やMPU(Micro Processing Unit)などを適用する。
[通信装置10bの処理の流れ]
 次に、図20を用いて、通信装置10bが実行する処理の流れについて説明する。図20は、第3実施形態の実施例4に関わる通信装置が実行する処理の流れを説明するためのフローチャートである。図20に示す例では、通信装置10bは、バス8を介して情報処理装置2fを送信先とするパケットを受信したことをトリガとして処理を開始する。
 まず、通信装置10bは、受信したパケットに格納されたデータの書き込み先アドレスと書き込み先アドレステーブル16に格納されているメモリアドレスとが一致するか否かを判別する(ステップS201)。つまり、通信装置10bは、受信したデータを格納するメモリ6のメモリアドレスが書き込み先アドレステーブル16に登録されているか否かを判別する。
 そして、通信装置10bは、受信したパケットに格納されたデータの書き込み先アドレスと書き込み先アドレステーブル16に格納されているメモリアドレスとが一致する場合には(ステップS201のYESルート参照)、以下の処理を実行する。すなわち、通信装置10bは、受信したパケットのデータをキャッシュメモリ5に格納するデータとしてプロセッサコア4gへ送信する(ステップS202)。又、この際、パディング付加部207は、パディングフラグに「1」が格納されている場合には、受信したパケットに対して、アラインサイズに合わせたパディングを付加して、DMA書き込みデータを作成する。パディング付加部207は、作成したDMA書き込みデータをDMAコントローラ204に送信し、DMAコントローラ204は、DMA書き込みデータをキャッシュメモリ5に格納するデータとしてプロセッサコア4へ送信する。なお、パディングフラグに「0」が格納されている場合には、パディング付加部207は、受信したパケットに対して、アラインサイズに合わせたパディングを付加することなく、受信したパケットに格納されていたデータをDMA書き込みデータとしてDMAコントローラ204に送信する。DMAコントローラ204は、DMA書き込みデータをキャッシュメモリ5に格納するデータとしてプロセッサコア4へ送信する。
 一方、通信装置10bは、受信したパケットに格納されたデータの書き込み先アドレスと書き込み先アドレステーブル16に格納されているメモリアドレスとが一致しない場合には(ステップS201のNOルート参照)、以下の処理を実行する。すなわち、通信装置10bは、受信したパケットのデータをメモリ6に格納するデータとしてプロセッサコア4gへ送信する(ステップS203)。その後、通信装置10bは、処理を終了する。又、この際、パディング付加部207は、パディングフラグに「1」が格納されている場合には、受信したパケットに対して、アラインサイズに合わせたパディングを付加して、DMA書き込みデータを作成する。パディング付加部207は、作成したDMA書き込みデータをDMAコントローラ204に送信し、DMAコントローラ204は、DMA書き込みデータをメモリ6に格納するデータとしてプロセッサコア4へ送信する。なお、パディングフラグに「0」が格納されている場合には、パディング付加部207は、受信したパケットに対して、アラインサイズに合わせたパディングを付加することなく、受信したパケットに格納されていたデータをDMA書き込みデータとしてDMAコントローラ204に送信する。DMAコントローラ204は、DMA書き込みデータをメモリ6に格納するデータとしてプロセッサコア4へ送信する。
[第3実施形態の実施例4の効果]
 上述したように、情報処理装置2fは、プロセッサコア4gがポーリング処理の対象とするデータを格納するメモリアドレスを保持する書き込み先アドレステーブル16を有する。また、情報処理装置2fは、プロセッサコア4gがポーリング処理を実行する場合には、ポーリング処理の対象となるデータが格納されるメモリアドレスを書き込み先アドレステーブル16に格納する。
 そして、情報処理装置2fは、情報処理装置2gを初めとする他の情報処理装置からデータを受信した場合には、受信したデータを格納するメモリアドレスが書き込み先アドレステーブル16に格納されているか否かを判定する。また、情報処理装置2fは、受信したデータを格納するメモリアドレスが書き込み先アドレステーブル16に格納されていると判定した場合には、受信したデータをキャッシュメモリ5に格納する。また、情報処理装置2fは、受信したデータを格納するメモリアドレスが書き込み先アドレステーブル16に格納されていないと判定した場合には、受信したデータをメモリ6に格納する。
 このため、情報処理装置2fは、プロセッサコア4gが演算に利用しないデータを受信した際に、キャッシュメモリ5に格納されたデータの吐き出しを防止する。この結果、並列計算機システム1cは、各情報処理装置2f、2gが有するプロセッサコアがキャッシュメモリに格納されたデータを用いて効率的な処理を実行することができるので、計算処理速度の低下を防止することができる。
 そして、パディング付加部207が、受信したデータに付加されているパディング情報を参照して、パディングフラグが有効である場合にペイロードにパディングを付加してパディング付きデータを作成する。DMAコントローラ204が、このパディング付きデータをキャッシュメモリ5やメモリ6に書き込ませる。これにより、受信したデータがアラインされていない場合であっても、キャッシュメモリ5やメモリ6への書き込みを行なう際のレイテンシを短くすることができる。
 (C-5)実施例5
 第3実施形態の実施例5では、複数のプロセッサコアを有するプロセッサが設置された情報処理装置を複数有する並列計算機システム1dについて説明する。図21は、第3実施形態の実施例5に関わる並列計算機システムの一例を説明するための図である。図21に示す例では、並列計算機システム1dは、情報処理装置2h、2iをはじめとする複数の情報処理装置を有する。なお、情報処理装置2iを初めとする各情報処理装置は、情報処理装置2hと同様の処理を実行するものとして、説明を省略する。また、情報処理装置2hが有する各部のうち、情報処理装置2bが有する各部と同様の処理を実行するものについては、同一の符号を付し、説明を省略する。
 情報処理装置2hは、複数のプロセッサコア4h~4jを有するプロセッサ3d、メモリ6、通信装置10cを有する。各プロセッサコア4h~4jは、キャッシュメモリ5a~5cを有する。また、通信装置10cは、書き込み先アドレステーブル16aを有する。
 プロセッサコア4hは、第3実施形態の実施例2に関わるプロセッサコア4aと同様に、通信装置10cからメモリ6に格納するデータを受信した場合には、受信したデータをメモリ6に格納する。また、プロセッサコア4hは、通信装置10cからキャッシュメモリ5aに格納するデータを受信した場合には、受信したデータをキャッシュメモリ5aに格納する。
 また、プロセッサコア4hは、受信したデータをキャッシュメモリ5a、又は、メモリ6に格納する場合には、以下の処理を実行する。つまり、プロセッサコア4hは、プロセッサコア4aと同様に、キャッシュメモリ5aに格納された同一性情報に基づいて、キャッシュメモリ5aに格納されたデータとメモリ6に格納されたデータとのコヒーレンシを保持する。
 具体的には、プロセッサコア4hは、キャッシュメモリ5aが有する各キャッシュラインに格納された状態データに応じて、キャッシュメモリ5aとメモリ6とに格納されたデータの同一性を保持する。その後、プロセッサコア4hは、受信したデータをキャッシュメモリ5a又はメモリ6に格納する。なお、プロセッサコア4hがキャッシュメモリ5aとメモリ6とに格納されたデータの同一性を保持する詳細な処理については、プロセッサコア4aが実行する処理と同様の処理を行うものとして、説明を省略する。
 さらに、プロセッサコア4hは、実施例4に関わるプロセッサコア4gと同様に、ポーリング処理を実行する場合には、直前に、通信装置10cの書き込み先アドレステーブル16にポーリング処理の対象となるデータの書き込み先アドレスを登録する。この際、プロセッサコア4hは、書き込み先アドレスとともに、自身のキャッシュメモリ5aを示す書込先キャッシュメモリ識別情報をメモリアドレスと対応付けて登録する。
 通信装置10cは、受信したデータを格納するメモリアドレスと、各キャッシュメモリ5a~5cを識別する書込先キャッシュメモリ識別情報とを対応付けて保持する書き込み先アドレステーブル16aを有する。そして通信装置10cは、実施例4に関わる通信装置10bと同様に、情報処理装置2iを初めとする他の情報処理装置からパケットを受信した場合には、以下の処理を実行する。すなわち、通信装置10cは、受信したパケットを格納するメモリアドレスと同一のメモリアドレスが書き込み先アドレステーブル16aに格納されているか否かを判別する。
 そして、通信装置10cは、受信したパケットを格納するメモリアドレスと同一のメモリアドレスが書き込み先アドレステーブル16aに格納されている場合には、以下の処理を実行する。すなわち、通信装置10cは、受信したパケットを格納するメモリアドレスと同一のメモリアドレスに対応付けられた書込先キャッシュメモリ識別情報が示すキャッシュメモリを有するプロセッサコアを判定する。そして、通信装置10cは、判定したプロセッサコアに対して、受信したデータをキャッシュメモリに格納するデータとして送信する。
 一方、通信装置10cは、受信したパケットを格納するメモリアドレスと同一のメモリアドレスが書き込み先アドレステーブル16aに格納されていない場合には、受信したデータをメモリ6に格納するデータとして、各プロセッサコア4h~4jに送信する。
 次に、図22を用いて、通信装置10cが有する各部について説明する。図22は、実施例5に関わる通信装置の一例を説明するための図である。なお、通信装置10cが有する各部のうち、実施例1~4に示す各部と同様の処理を実行するものについては、同一の符号を付し、説明を省略する。
 図22に示す例では、通信装置10cは、DMAコントローラ204b(格納部)、判定部14b、書き込み先アドレステーブル16a、更新部17a、制御部205、パケット送信部206及びパディング付加部207を有する。
 本第3実施形態の実施例5においても、通信装置10cにおいて、判定部14を介して受け取ったパディング情報においてパディングフラグとして「1(有効)」が設定されている場合に、パディング付加部207が、データがアラインサイズにアラインするようにパディングを付けることによりパディング付きデータを作成する。通信装置10cはこのパディング付きデータを各プロセッサコア4h~4jに対して、キャッシュメモリ5a~5cもしくはメモリ6に保持するデータとして送信する。
 また、パディング情報においてパディングフラグとして「0(無効)」が設定されている場合には、パディング付加部207は、パケット受信部208が受信したデータを各プロセッサコア4d~4fに対して、キャッシュメモリ5a~5cもしくはメモリ6に保持するデータとして送信する。
 すなわち、通信装置10aは、プロセッサコア4d~4fに対してアラインされたデータを送信する。
 書き込み先アドレステーブル16aは、第3実施形態の実施例4に関わる書き込み先アドレステーブル16と同様に、ポーリング処理の対象となるデータを格納するメモリアドレスを保持する。さらに、書き込み先アドレステーブル16aは、保持するメモリアドレスに、ポーリング処理を行うプロセッサコアが有するキャッシュメモリを識別する書込先キャッシュメモリ識別情報を対応付けて保持する。
 例えば、書き込み先アドレステーブル16aは、書き込み先アドレステーブル16が有する各ラインメモリに書込先キャッシュメモリ識別情報を格納する格納領域をさらに追加した複数のラインメモリを有する。そして、書き込み先アドレステーブル16aは、対応付けるメモリアドレスと書込先キャッシュメモリ識別情報とを同一ラインメモリに格納する。
 判定部14bは、パケット受信部208が受信したパケットに格納されていたデータを格納するメモリ6のメモリアドレスを取得する。そして、判定部14bは、取得したメモリアドレスと同一のメモリアドレスが書き込み先アドレステーブル16aに格納されているか否かを判定する。
 そして、判定部14bは、取得したメモリアドレスと同一のメモリアドレスが書き込み先アドレステーブル16aに格納されている場合には、以下の処理を実行する。すなわち、判定部14bは、書き込み先アドレステーブル16aに格納されていたメモリアドレスと対応付けて記憶された書込先キャッシュメモリ識別情報を取得する。そして、判定部14bは、受信したパケットに格納されていたデータを、取得した書込先キャッシュメモリ識別情報が示すキャッシュメモリに格納するデータであると判定する。
 一方、判定部14bは、取得したメモリアドレスと同一のメモリアドレスが書き込み先アドレステーブル16aに格納されていない場合には、受信したパケットに格納されていたデータをメモリ6に格納するデータであると判定する。
 DMAコントローラ204bは、受信したデータをキャッシュメモリに格納するデータであると判定部14bが判定した場合には、以下の処理を実行する。すなわち、DMAコントローラ204bは、判定部14bが取得した書込先キャッシュメモリ識別情報が示すキャッシュメモリを有するプロセッサコアに、キャッシュメモリに格納するデータとして、受信したデータを送信する。例えば、DMAコントローラ204bは、判定部14bが受信したデータをキャッシュメモリ5aに格納するデータであると判定した場合には、受信したデータをプロセッサコア4hに送信する。
 一方、DMAコントローラ204bは、判定部14bが受信したパケットに格納されていたデータをメモリ6に格納するデータであると判定した場合には、受信したデータをメモリ6に格納するデータとして、プロセッサコア4h~4jに送信する。
 更新部17aは、図22中(A)に示すように、各プロセッサコア4h~4jからポーリング処理の対象となるデータを格納するメモリアドレスを受信する。これと同時に、更新部17aは、各プロセッサコア4h~4jが有する各キャッシュメモリ5a~5cを示す書込先キャッシュメモリ識別情報を受信する。このような場合には、更新部17aは、受信したデータと書込先キャッシュメモリ識別情報とを書き込み先アドレステーブル16aが有する1つのメモリラインに格納する。また、更新部17aは、更新部17と同様、各プロセッサコア4h~4jからポーリング処理の対象となるデータをキャッシュメモリに格納した旨とともに、メモリアドレスを受信した場合には、以下の処理を実行する。すなわち、更新部17aは、受信したメモリアドレスが格納されているラインメモリを書き込み先アドレステーブル16aから検索し、検索したラインメモリの有効ビットを「0」に更新する。
 例えば、このような各部を有する情報処理装置2hは、プロセッサコア4hがポーリング処理を実行する場合には、以下の処理を実行する。すなわち、情報処理装置2hは、ポーリング処理の対象となるデータを格納するメモリアドレスとキャッシュメモリ5aを示す書込先キャッシュメモリ識別情報とを対応付けて書き込み先アドレステーブル16aに格納する。そして、情報処理装置2hは、情報処理装置2iを初めとする他の情報処理装置からパケットを受信した場合には、受信したパケットに格納されていたデータを格納するメモリアドレスが書き込み先アドレステーブル16aに格納されているか否かを判別する。
 この際、受信したパケットに格納されていたデータがプロセッサコア4hがポーリング処理の対象となるデータである場合には、格納するメモリアドレスが書き込み先アドレステーブル16aに格納されている。このため、情報処理装置2hは、受信したデータを格納するメモリアドレスと対応付けて記憶されたキャッシュメモリ5aを示す書込先キャッシュメモリ識別情報から、ポーリング処理を行っているプロセッサコアがプロセッサコア4hであると判定する。そして、情報処理装置2hは、受信したデータをプロセッサコア4hに送信し、キャッシュメモリ5aに格納する。なお、キャッシュメモリ5aに書き込まれるデータはアラインされたデータである。
[実施例5の効果]
 上述したように、情報処理装置2hは、ポーリング処理の対象となるデータを格納するメモリアドレスとキャッシュメモリを示す書込先キャッシュメモリ識別情報と対応付けて書き込み先アドレステーブル16aに格納する。そして、情報処理装置2は、受信したパケットのデータを格納するメモリアドレスが書き込み先アドレステーブル16aかに格納されているか否かを判別し、格納されている場合には以下の処理を実行する。すなわち、情報処理装置2hは、対応付けて格納されていた書込先キャッシュメモリ識別情報が示すキャッシュメモリに受信したデータを格納する。
 このため、情報処理装置2hは、各プロセッサコア4h~4jによるポーリング処理の対象とするデータ受信した場合には、受信したデータをキャッシュメモリ5a~5cに直接格納することができる。このため、並列計算機システム1dは、各情報処理装置2h、2iが有するプロセッサが複数のプロセッサコアを有するマルチコアプロセッサである場合にも、演算処理を効率的に行わせることができる。
 また、情報処理装置2hは、他の実施例に関わる情報処理装置2~2gと同様に、プロセッサコア4h~4jが演算に利用しないデータを受信した際に、キャッシュメモリ5a~5cに格納されたデータの吐き出しを防止する。この結果、並列計算機システム1dは、計算処理速度の低下を防止することができる。
 また、情報処理装置2hは、情報処理装置2fと同様に、キャッシュメモリ5aに格納された同一性情報に基づいて、キャッシュメモリ5aに格納されたデータとメモリ6に格納されたデータとの同一性を保持する。このため、並列計算機システム1dは、各情報処理装置2h、2iに適切な処理を実行させることができる。
 そして、パディング付加部207が、受信したデータに付加されているパディング情報を参照して、パディングフラグが有効である場合にペイロードにパディングを付加してパディング付きデータを作成する。DMAコントローラ204が、このパディング付きデータをキャッシュメモリ5a~5cやメモリ6に書き込む。これにより、受信したデータがアラインされていない場合であっても、キャッシュメモリ5a~5cやメモリ6への書き込みを行なう際のレイテンシを小さくすることができる。
 (C-6)実施例6
 第3実施形態の実施例6では、それぞれ独自のL1キャッシュメモリを有する複数のプロセッサコアと各プロセッサコアが共用する1つのL2キャッシュメモリを有するプロセッサが設置された情報処理装置を複数有する並列計算機システムについて説明する。図23は、第3実施形態の実施例6に関わる並列計算機システムを説明するための図である。
 図23に示すように、並列計算機システム1eは、情報処理装置2j、2kを初めとする複数の情報処理装置を有する。なお、情報処理装置2kを初めとする各情報処理装置は情報処理装置2jと同様の処理を実行するものとして、説明を省略する。
 また、並列計算機システム1eが有する各部のうち、並列計算機システム1bと同様の処理を実行するものについては、同一の符号を付し、以下の説明を省略する。
 情報処理装置2jは、複数のプロセッサコア4k~4mを有するプロセッサ3eと、各プロセッサコア4k~4mが共用するレベル2キャッシュメモリ7を有する。また、各プロセッサコア4k~4mは、それぞれ、レベル1キャッシュメモリ5d~5fを有する。なお、プロセッサコア4l、4mは、プロセッサコア4kと同様の処理を実行するものとして、以下の説明を省略する。
 プロセッサコア4kは、実施例5に関わるプロセッサコア4hと同様に、通信装置10dが受信したデータをレベル1キャッシュメモリ5dに格納するデータとして受信した場合には、受信したデータをレベル1キャッシュメモリ5dに格納する。また、プロセッサコア4kは、通信装置10dが受信したデータをメモリ6に格納するデータとして受信した場合には、受信したデータをメモリ6に格納する。
 また、プロセッサコア4kは、データをレベル1キャッシュメモリ5dまたはレベル2キャッシュメモリ7に格納する場合には、実施例3に関わるプロセッサコア4dと同様の処理を実行する。すなわち、プロセッサコア4kは、第1同一性情報と、第2同一性情報とに基づいて、レベル1キャッシュメモリ5d、レベル2キャッシュメモリ7、メモリ6に格納されたデータの同一性を保持する。
 また、プロセッサコア4kは、ポーリング処理を実行する場合には、ポーリング処理の対象となるデータを格納するメモリアドレスとレベル1キャッシュメモリ5dを示す書込先キャッシュメモリ識別情報とを通信装置10dに送信する。つまり、プロセッサコア4kは、ポーリング処理の対象となるデータを格納するメモリアドレスとレベル1キャッシュメモリ5dを示す書込先キャッシュメモリ識別情報とを対応付けて書き込み先アドレステーブル16bに格納する。
 また、プロセッサコア4kは、ポーリング処理の対象となるデータをレベル1キャッシュメモリ5dに格納した場合には、データをレベル1キャッシュメモリ5dに格納した旨とデータを格納するメモリアドレスとを通信装置10dに送信する。つまり、プロセッサコア4kは、ポーリング処理の対象となるデータを格納するメモリアドレス等を書き込み先アドレステーブル16bから削除する。
 通信装置10dは、書き込み先アドレステーブル16bを有する。書き込みアドレステーブル16bには、書き込み先アドレステーブル16aと同様に、以下の情報が対応付けて格納されている。すなわち、書き込み先アドレステーブル16bには、ポーリング処理の対象となるデータを格納するメモリアドレスと各レベル1キャッシュメモリ5d~5fを識別する書込先キャッシュメモリ識別情報とが対応付けられて格納されている。
 そして、通信装置10dは、通信装置10cと同様に、情報処理装置2kを初めとする他の情報処理装置からパケットを受信した場合には、以下の処理を実行する。すなわち、通信装置10dは、受信したパケットを格納するメモリアドレスと同一のメモリアドレスが書き込み先アドレステーブル16bに格納されているか否かを判別する。
 そして、通信装置10dは、受信したパケットを格納するメモリアドレスと同一のメモリアドレスが書き込み先アドレステーブル16bに格納されている場合には、以下の処理を実行する。すなわち、通信装置10dは、受信したパケットを格納するメモリアドレスと同一のメモリアドレスに対応付けられた書込先キャッシュメモリ識別情報が示すレベル1キャッシュメモリを有するプロセッサコアを判定する。そして、通信装置10dは、判定したプロセッサコアに対して、受信したデータをキャッシュメモリに格納するデータとして送信する。
 一方、通信装置10dは、受信したパケットを格納するメモリアドレスと同一のメモリアドレスが書き込み先アドレステーブル16bに格納されていない場合には、受信したデータをメモリ6に格納するデータとして、各プロセッサコア4k~4fに送信する。
 例えば、このような各部を有する情報処理装置2jは、プロセッサコア4kがポーリング処理を実行する場合には、以下の処理を実行する。すなわち、情報処理装置2jは、ポーリング処理の対象となるデータを格納するメモリアドレスとレベル1キャッシュメモリ5dを示す書込先キャッシュメモリ識別情報とを対応付けて書き込み先アドレステーブル16bに格納する。そして、情報処理装置2jは、情報処理装置2kを初めとする他の情報処理装置からパケットを受信した場合には、受信したパケットに格納されていたデータを格納するメモリアドレスが書き込み先アドレステーブル16bに格納されているか否かを判別する。
 この際、受信したパケットに格納されていたデータがプロセッサコア4kがポーリング処理の対象となるデータである場合には、格納するメモリアドレスが書き込み先アドレステーブル16bに格納されている。このため、情報処理装置2jは、受信したデータを格納するメモリアドレスと対応付けて記憶されたレベル1キャッシュメモリ5dを示す書込先キャッシュメモリ識別情報から、ポーリング処理を行っているプロセッサコアがプロセッサコア4kであると判定する。そして、情報処理装置2jは、受信したデータをプロセッサコア4kに送信し、レベル1キャッシュメモリ5dに格納する。
 また、情報処理装置2jは、各レベル1キャッシュメモリ5d~5fおよびレベル2キャッシュメモリ7に格納された第1同一性情報および第2同一性情報を用いて、以下の処理を実行する。つまり、情報処理装置2jは、各レベル1キャッシュメモリ5d~5f、レベル2キャッシュメモリ7、メモリ6に格納されているデータの同一性を保持し、その後、受信したデータを各レベル1キャッシュメモリ5d~5f、または、メモリ6に格納する。
 また、本第3実施形態の実施例6においても、通信装置10dにおいて、判定部14を介して受け取ったパディング情報においてパディングフラグとして「1(有効)」が設定されている場合に、パディング付加部207が、データがアラインサイズにアラインするようにパディングを付けることによりパディング付きデータを作成する。通信装置10dはこのパディング付きデータをプロセッサコア4k~4mに対して、レベル1キャッシュメモリ5d~5fもしくはメモリ6に保持するデータとして送信する。
 また、パディング情報においてパディングフラグとして「0(無効)」が設定されている場合には、パディング付加部207は、パケット受信部208が受信したデータを各プロセッサコア4k~4mに対して、レベル1キャッシュメモリ5d~5fもしくはメモリ6に保持するデータとして送信する。
 すなわち、通信装置10dは、プロセッサコア4k~4mに対してアラインされたデータを送信する。
[実施例6の効果]
 上述したように、情報処理装置2jは、ポーリング処理の対象となるデータを格納するメモリアドレスと、ポーリング処理を実行するプロセッサコアが有するレベル1キャッシュメモリを示す書込先キャッシュメモリ識別情報とを対応付けて記憶する。そして、情報処理装置2jは、受信したデータを格納するメモリアドレスが記憶したメモリアドレスと一致する場合には、対応付けて記憶した書込先キャッシュメモリ識別情報が示すレベル1キャッシュメモリに受信したデータを格納する。このため、並列計算機システム1eは、各プロセッサコア4k~4mに効率的に演算処理を実行することができる。
 また、情報処理装置2jは、ポーリング処理の対象ではないデータを受信した場合には、受信したデータをメモリ6に格納する。このため、並列計算機システム1eは、計算処理速度を低下させることなく、効率的な演算処理を実行することができる。
 また、情報処理装置2jは、各レベル1キャッシュメモリ5d~5fに格納された第1同一性情報およびレベル2キャッシュメモリ7に格納された第2同一性情報を用いて、以下の処理を実行する。すなわち、情報処理装置2jは、各レベル1キャッシュメモリ5d~5f、レベル2キャッシュメモリ7、メモリ6に格納されたデータの同一性を適切に保持する。この結果、並列計算機システム1eは、適切な演算処理装置を実行することができる。
 そして、パディング付加部207が、受信したデータに付加されているパディング情報を参照して、パディングフラグが有効である場合にペイロードにパディングを付加してパディング付きデータを作成する。DMAコントローラ204が、このパディング付きデータをレベル1キャッシュメモリ5d~5fやメモリ6に書き込ませる。これにより、受信したデータがアラインされていない場合であっても、キャッシュメモリ5やメモリ6への書き込みを行なう際のレイテンシを短くすることができる。
 (C-7)実施例7
 これまで第3実施形態の各実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では第3実施形態の実施例7として本発明に含まれる他の実施例を説明する。
(1)並列計算機システムが有する情報処理装置について
 上述した説明における各並列計算機システム1、1cは、キャッシュメモリ5を有するプロセッサコア4、4gを有していた。しかし、実施例はこれに限定されるものではなく、例えば、各並列計算機システム1、1cは、レベル1キャッシュメモリを有するプロセッサコアとレベル2キャッシュメモリを有するプロセッサを有しても良い。そして、並列計算機システム1、1cが有するプロセッサコアは、レベル1キャッシュメモリおよびレベル2キャッシュメモリに格納された第1同一性情報と第2同一性情報とを用いて、データのコヒーレンシを保持することとしてもよい。
 すなわち、情報処理装置は、受信したデータがポーリング処理の対象となるデータであるか否か判定し、ポーリング処理の対象となるデータであると判定した場合には、受信したデータをキャッシュメモリに格納する。また、情報処理装置は、受信したデータがポーリング処理の対象となるデータではないと判定した場合には、受信したデータをメモリに格納する。つまり、情報処理装置は、このような処理を実行する情報処理装置であれば、任意の構成を有することができる。
 そして、これらのレベル1キャッシュメモリやレベル2キャッシュメモリに対して格納するデータについても、受信したデータがアラインされていない場合に、パディング付加部207がペイロードにパディングを付加することによりパディング付きデータとして作成し、格納する。
(2)並列計算機システムについて
 上述した各並列計算機システム1~1eは、それぞれ同様の機能を発揮する複数の情報処理装置を有していた。しかし、実施例はこれに限定されるものではなく、各実施例における任意の情報処理装置をそなえた並列計算機システムであってもよい。つまり、情報処理装置は、受信したパケットに制御情報として「1」が格納されているか否かに基づいて、受信したパケットのデータがポーリング処理の対象となるデータであるか否かを判定するとともに、書き込み先アドレステーブルにメモリアドレスが格納されているか否かを判定する。そして、情報処理装置は、いずれかの条件を満たした場合には、ポーリング処理の対象となるデータであると判定してもよい。
 1~1e 並列計算機システム
 2~2k 情報処理装置
 3~3e プロセッサ
 4~4m プロセッサコア
 5~5c キャッシュメモリ
 5d~5f レベル1キャッシュメモリ
 6 メモリ
 7 レベル2キャッシュメモリ
 8  バス
 10~10d 通信装置
 14~14b 判定部
 15~15b 格納部
 16、16a 書き込み先アドレステーブル
 17、17a 更新部
 204  DMAコントローラ(格納部)
 205  制御部(パケット生成部)
 206 パケット送信部
 207 パディング付加部
 208 パケット受信部
 209 キャッシュラインサイズ保持部(調整サイズ情報格納部)

Claims (18)

  1.  並列計算機システムに含まれる複数の情報処理装置のいずれかにおいて、
     データを保持する記憶装置と、
     受信したデータに含まれる調整情報に基づいて、前記データに対してパディングを付加したパディング付きデータを作成するデータ作成部と、
     前記データ作成部によって作成された前記パディング付きデータを前記記憶装置に格納する格納処理部とを備えることを特徴とする情報処理装置。
  2.  前記調整情報が調整サイズ情報をそなえ、前記データ作成部が、前記データに対して前記調整サイズ情報に合わせたパディングを付加することにより、前記パディング付きデータを作成することを特徴とする請求項1記載の情報処理装置。
  3.  前記調整情報が調整の要否を示す要否情報をそなえ、前記要否情報が調整が必要であることを示す場合に、前記データ作成部が、前記パディング付きデータを作成することを特徴とする請求項1又は2記載の情報処理装置。
  4.  並列計算機システムに含まれる複数の情報処理装置のいずれかにおいて、
     データを保持する記憶装置と、
     受信したデータのデータサイズ情報及び書き込み先アドレス情報と前記調整サイズ情報とに基づき、当該受信したデータに対する調整の要否を判断する判断部と、
     前記判断部が前記調整が必要であると判断した場合に、受信したデータのデータサイズ情報及び書き込み先アドレス情報と前記調整サイズ情報とに基づき、前記データに対して前記調整サイズ情報に合わせたパディングを付加したパディング付きデータを作成するデータ作成部と、
     前記データ作成部によって作成された前記パディング付きデータを前記記憶装置に格納する格納処理部とを備えることを特徴とする情報処理装置。
  5.  前記調整サイズ情報を格納する調整サイズ情報格納部を備え、
     前記判断部が、前記調整サイズ情報格納部から前記調整サイズ情報を取得することを特徴とする請求項4記載の情報処理装置。
  6.  データを保持する主記憶装置と、
     前記主記憶装置に保持されたデータの一部を保持するキャッシュメモリ部と、前記主記憶装置又は前記キャッシュメモリ部に保持されたデータを用いて演算を行なう演算処理部とを有する演算処理装置と、
     他の情報処理装置から受信したデータが、前記演算処理装置が待ち合わせているデータであるか否かを判定する判定部とをそなえ、
     前記受信したデータが前記演算処理装置が待ち合わせているデータであると、前記判定部が判定した場合に、前記データ作成部が前記パディング付きデータを作成し、前記格納処理部が、前記パディング付きデータを前記キャッシュメモリ部に格納することを特徴とする請求項1~5のいずれか1項に記載の情報処理装置。
  7.  複数の情報処理装置を有する並列計算機システムにおいて、
     調整情報を備えるデータを送信する第1の情報処理装置と、
     データを保持する記憶装置と、受信したデータに含まれる調整情報に基づいて、前記データに対してパディングを付加したパディング付きデータを作成するデータ作成部と、前記データ作成部によって作成された前記パディング付きデータを前記記憶装置に格納する格納処理部とを備える第2の情報処理装置と、
    を備えることを特徴とする並列計算機システム。
  8.  前記調整情報が調整サイズ情報をそなえ、前記データ作成部が、前記データに対して前記調整サイズ情報に合わせたパディングを付加することにより、前記パディング付きデータを作成することを特徴とする請求項7記載の並列計算機システム。
  9.  前記調整情報が調整の要否を示す要否情報をそなえ、前記要否情報が調整が必要であることを示す場合に、前記データ作成部が、前記パディング付きデータを作成することを特徴とする請求項7又は8記載の並列計算機システム。
  10.  複数の情報処理装置を有する並列計算機システムにおいて、
     前記情報処理装置は、
     データを保持する記憶装置と、
     受信したデータのデータサイズ情報及び書き込み先アドレス情報と前記調整サイズ情報とに基づき、当該受信したデータに対する調整の要否を判断する判断部と、
     前記判断部が前記調整が必要であると判断した場合に、受信したデータのデータサイズ情報及び書き込み先アドレス情報と前記調整サイズ情報とに基づき、前記データに対して前記調整サイズ情報に合わせたパディングを付加したパディング付きデータを作成するデータ作成部と、
     前記データ作成部によって作成された前記パディング付きデータを前記記憶装置に格納する格納処理部とを備えることを特徴とする並列計算機システム。
  11.  前記情報処理装置は、
     前記調整サイズ情報を格納する調整サイズ情報格納部を備え、
     前記判断部が、前記調整サイズ情報格納部から前記調整サイズ情報を取得することを特徴とする請求項10記載の並列計算機システム。
  12.  前記情報処理装置は、
     データを保持する主記憶装置と、
     前記主記憶装置に保持されたデータの一部を保持するキャッシュメモリ部と、前記主記憶装置又は前記キャッシュメモリ部に保持されたデータを用いて演算を行なう演算処理部とを有する演算処理装置と、
     他の情報処理装置から受信したデータが、前記演算処理装置が待ち合わせているデータであるか否かを判定する判定部とをそなえ、
     前記受信したデータが前記演算処理装置が待ち合わせているデータであると、前記判定部が判定した場合に、前記データ作成部)が前記パディング付きデータを作成し、前記格納処理部が、前記パディング付きデータを前記キャッシュメモリ部に格納することを特徴とする請求項7~11のいずれか1項に記載の並列計算機システム。
  13.  複数の情報処理装置を備える並列計算機システムを構成する情報処理装置の制御方法において、
     調整情報を備えるデータを送信し、
     受信したデータに含まれる調整情報に基づいて、前記データに対してパディングを付加したパディング付きデータを作成し、
     作成された前記パディング付きデータを記憶装置に格納することを特徴とする情報処理装置の制御方法。
  14.  前記調整情報が調整サイズ情報をそなえ、
     前記データに対して前記調整サイズ情報に合わせたパディングを付加することにより、前記パディング付きデータを作成することを特徴とする請求項13記載の情報処理装置の制御方法。
  15.  前記調整情報が調整の要否を示す要否情報をそなえ、前記要否情報が調整が必要であることを示す場合に、前記パディング付きデータを作成することを特徴とする請求項13又は14記載の情報処理装置の制御方法。
  16.  複数の情報処理装置を備える並列計算機システムを構成する情報処理装置の制御方法において、
     受信したデータのデータサイズ情報及び書き込み先アドレス情報と前記調整サイズ情報とに基づき、当該受信したデータに対する調整の要否を判断し、
     前記調整が必要であると判断した場合に、受信したデータのデータサイズ情報及び書き込み先アドレス情報と前記調整サイズ情報とに基づき、前記データに対して前記調整サイズ情報に合わせたパディングを付加したパディング付きデータを作成し、
     作成された前記パディング付きデータを記憶装置に格納することを特徴とする情報処理装置の制御方法。
  17.  前記調整サイズ情報を格納する調整サイズ情報格納部から前記調整サイズ情報を取得することを特徴とする請求項16記載の情報処理装置の制御方法。
  18.  他の情報処理装置から受信したデータが、データを保持する主記憶装置に保持されたデータの一部を保持するキャッシュメモリ部と、前記主記憶装置又は前記キャッシュメモリ部に保持されたデータを用いて演算を行なう演算処理部とを有する演算処理装置が待ち合わせているデータであるか否かを判定し、
     前記受信したデータが前記演算処理装置が待ち合わせているデータであると判定した場合に、前記パディング付きデータを作成し、当該パディング付きデータを前記キャッシュメモリ部に格納することを特徴とする請求項13~17のいずれか1項に記載の情報処理装置の制御方法。
PCT/JP2012/072945 2012-09-07 2012-09-07 情報処理装置,並列計算機システム及び情報処理装置の制御方法 WO2014038070A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
PCT/JP2012/072945 WO2014038070A1 (ja) 2012-09-07 2012-09-07 情報処理装置,並列計算機システム及び情報処理装置の制御方法
JP2014534128A JP5939305B2 (ja) 2012-09-07 2012-09-07 情報処理装置,並列計算機システム及び情報処理装置の制御方法
EP12884205.1A EP2894568B1 (en) 2012-09-07 2012-09-07 Information processing device, parallel computer system and information processing device control method
US14/640,559 US10002078B2 (en) 2012-09-07 2015-03-06 Information processing apparatus, parallel computer system, and control method for controlling information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/072945 WO2014038070A1 (ja) 2012-09-07 2012-09-07 情報処理装置,並列計算機システム及び情報処理装置の制御方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/640,559 Continuation US10002078B2 (en) 2012-09-07 2015-03-06 Information processing apparatus, parallel computer system, and control method for controlling information processing apparatus

Publications (1)

Publication Number Publication Date
WO2014038070A1 true WO2014038070A1 (ja) 2014-03-13

Family

ID=50236717

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2012/072945 WO2014038070A1 (ja) 2012-09-07 2012-09-07 情報処理装置,並列計算機システム及び情報処理装置の制御方法

Country Status (4)

Country Link
US (1) US10002078B2 (ja)
EP (1) EP2894568B1 (ja)
JP (1) JP5939305B2 (ja)
WO (1) WO2014038070A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017503237A (ja) * 2013-12-23 2017-01-26 インテル コーポレイション 入出力データアライメント

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9612971B2 (en) * 2014-08-19 2017-04-04 Qualcomm Incorporated Supplemental write cache command for bandwidth compression
US9858196B2 (en) 2014-08-19 2018-01-02 Qualcomm Incorporated Power aware padding
US10048878B2 (en) * 2015-06-08 2018-08-14 Samsung Electronics Co., Ltd. Nonvolatile memory module and storage system having the same
US20170116154A1 (en) * 2015-10-23 2017-04-27 The Intellisis Corporation Register communication in a network-on-a-chip architecture
US20170169049A1 (en) * 2015-12-15 2017-06-15 Microsoft Technology Licensing, Llc Staging Log-Based Page Blobs on a Filesystem
KR101842764B1 (ko) * 2016-03-18 2018-03-28 연세대학교 산학협력단 하드웨어 가속기와 호스트 시스템 사이의 데이터 일관성 유지 장치 및 방법
US10133691B2 (en) * 2016-06-23 2018-11-20 International Business Machines Corporation Synchronous input/output (I/O) cache line padding
US10248422B2 (en) * 2016-07-02 2019-04-02 Intel Corporation Systems, apparatuses, and methods for snooping persistent memory store addresses
KR102290229B1 (ko) * 2017-11-22 2021-08-20 한국전자통신연구원 병렬 처리를 위한 데이터 생성 장치
US11625393B2 (en) * 2019-02-19 2023-04-11 Mellanox Technologies, Ltd. High performance computing system
EP3699770A1 (en) 2019-02-25 2020-08-26 Mellanox Technologies TLV Ltd. Collective communication system and methods
US11750699B2 (en) 2020-01-15 2023-09-05 Mellanox Technologies, Ltd. Small message aggregation
US11876885B2 (en) 2020-07-02 2024-01-16 Mellanox Technologies, Ltd. Clock queue with arming and/or self-arming features
US11556378B2 (en) 2020-12-14 2023-01-17 Mellanox Technologies, Ltd. Offloading execution of a multi-task parameter-dependent operation to a network device
US20230305739A1 (en) * 2022-03-28 2023-09-28 Microsoft Technology Licensing, Llc Partial memory updates using preset templates
US11922237B1 (en) 2022-09-12 2024-03-05 Mellanox Technologies, Ltd. Single-step collective operations

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04289935A (ja) 1991-03-18 1992-10-14 Nec Software Ltd コンピュータ装置
JPH09128324A (ja) 1995-10-31 1997-05-16 Sony Corp データ転送制御装置およびデータ転送制御方法
JPH09282225A (ja) * 1995-12-27 1997-10-31 Sun Microsyst Inc キャッシュ競合の識別、及び解決のための方法及びその装置
US20040019733A1 (en) * 2002-07-29 2004-01-29 Garinger Ned D. On chip network with memory device address decoding
JP2007226742A (ja) * 2006-02-27 2007-09-06 Fujitsu Ltd 記憶制御装置、記憶制御方法、記憶制御プログラムおよび情報処理装置
JP2008269282A (ja) * 2007-04-20 2008-11-06 Sony Corp 情報処理装置および方法、並びにプログラム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6708258B1 (en) * 2001-06-14 2004-03-16 Cisco Technology, Inc. Computer system for eliminating memory read-modify-write operations during packet transfers
US9167476B2 (en) * 2010-03-12 2015-10-20 Intellectual Discovery Co., Ltd. Method and apparatus for transmitting/receiving packet in wireless communication system

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04289935A (ja) 1991-03-18 1992-10-14 Nec Software Ltd コンピュータ装置
JPH09128324A (ja) 1995-10-31 1997-05-16 Sony Corp データ転送制御装置およびデータ転送制御方法
JPH09282225A (ja) * 1995-12-27 1997-10-31 Sun Microsyst Inc キャッシュ競合の識別、及び解決のための方法及びその装置
US20040019733A1 (en) * 2002-07-29 2004-01-29 Garinger Ned D. On chip network with memory device address decoding
JP2007226742A (ja) * 2006-02-27 2007-09-06 Fujitsu Ltd 記憶制御装置、記憶制御方法、記憶制御プログラムおよび情報処理装置
JP2008269282A (ja) * 2007-04-20 2008-11-06 Sony Corp 情報処理装置および方法、並びにプログラム

Non-Patent Citations (1)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017503237A (ja) * 2013-12-23 2017-01-26 インテル コーポレイション 入出力データアライメント

Also Published As

Publication number Publication date
US10002078B2 (en) 2018-06-19
JP5939305B2 (ja) 2016-06-22
EP2894568A4 (en) 2016-04-20
JPWO2014038070A1 (ja) 2016-08-08
US20150178211A1 (en) 2015-06-25
EP2894568B1 (en) 2018-03-28
EP2894568A1 (en) 2015-07-15

Similar Documents

Publication Publication Date Title
JP5939305B2 (ja) 情報処理装置,並列計算機システム及び情報処理装置の制御方法
US9411644B2 (en) Method and system for work scheduling in a multi-chip system
US9529532B2 (en) Method and apparatus for memory allocation in a multi-node system
JP5621918B2 (ja) 情報処理装置、並列計算機システムおよび演算処理装置の制御方法
US20150254182A1 (en) Multi-core network processor interconnect with multi-node connection
US9753872B2 (en) Information processing apparatus, input and output control device, and method of controlling information processing apparatus
KR102212269B1 (ko) I/o 패킷 압축을 위한 레지스터 파일
US9372800B2 (en) Inter-chip interconnect protocol for a multi-chip system
US10956347B2 (en) Data transfer device, arithmetic processing device, and data transfer method
KR20150129808A (ko) 메모리 노드를 포함하는 분산형 메모리 시스템을 위한 방법 및 장치
KR20210002668A (ko) 데이터 처리 네트워크에서 보다 많은 읽기 처리량과 보다 낮은 링크 사용률을 위해 완료 응답과 데이터 응답을 분리시키는 방법 및 장치
JP2018045438A (ja) 並列処理装置、送信プログラム、受信プログラム及びデータ転送方法
JP6115455B2 (ja) 並列計算機システム、並列計算機システムの制御方法、情報処理装置、演算処理装置および通信制御装置
JP5101195B2 (ja) インタフェースコントローラ
JPWO2015155997A1 (ja) 設定装置、制御装置、設定方法及びネットワークスイッチ
JP4658064B2 (ja) 相互接続ネットワークでの効率的な順序保存用の方法及び装置
JP6798211B2 (ja) 並列計算機システムおよび管理方法
JP2016170607A (ja) データ処理装置及びデータ処理方法
JP6037029B2 (ja) データ転送装置、情報処理装置及びio制御方法
CN115114041A (zh) 众核系统中数据的处理方法及装置
WO2007097036A1 (ja) 中央処理装置、中央処理装置の制御方法、情報処理システム
JP2018081418A (ja) アクセス要求制御装置、データアクセスシステム及びアクセス要求制御方法
WO2009119413A1 (ja) キャッシュメモリ、情報処理装置およびキャッシュメモリ制御方法
JP2017078897A (ja) プログラム書換システム、プログラム書換装置、及び電子制御装置

Legal Events

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

Ref document number: 12884205

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2014534128

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE