Communication apparatus, information processing apparatus, and method for controlling communication apparatus

A communication apparatus including: a receiving portion that receives alignment specifying information, the alignment specifying information indicating which of main memories included in a first information processing apparatus and a second information processing apparatus to align the requested data; a division location calculating portion that calculates a divisional location of the requested data so that the divisional location of the requested data becomes an alignment boundary on the main memory included in any one of the first and the second information processing apparatuses specified by the received alignment specifying information, the alignment boundary being integral multiples of a given data width; and a transmitting portion that divides the requested data stored into the main memory in the second information processing apparatus based on the calculated divisional location, and transmits the divided data to the first information processing apparatus.

CROSS-REFERENCE TO RELATED APPLICATION

This application is based upon and claims the benefit of priority of the prior Japanese Patent Application No. 2010-013609, filed on Jan. 25, 2010, the entire contents of which are incorporated herein by reference.

FIELD

A certain aspect of the embodiments discussed herein is related to a communication apparatus, an information processing apparatus, and a method for controlling the communication apparatus.

BACKGROUND

Conventionally, there has been known a technique that executes RDMA (Remote Direct Memory Access) communication between a local node and a remote node.

FIG. 1illustrates an example of a case where data is transmitted from a main memory of the local node to a main memory of the remote node (i.e., an example of Put communication). In the example ofFIG. 1, a transfer unit of DMA (Direct Memory Access) is 128 bytes. As to a transfer starting address specified by a processor, the local node is40and the remote node is88. It is assumed that data length is 1348 bytes, and MTU (Maximum Transmission Unit; maximum transmission size per one packet) is 512 bytes. In this example, data is divided into three packets, the three packets are transmitted to the main memory of the remote node. However, in both main memories of the local node and the remote node, data areas of packets1to3are not aligned according to a DMA transfer unit. Therefore, the data is read and written in every 128 bytes from the head of the data, so that data transfer efficiency about reading and writing the data deteriorates.

For example, when data on the packet1is read out from the main memory of the local node, a processor of the local node needs to read out data of 128 bytes from address ranges0to127and128to255, respectively, in order to read out data of an address range40to167. Further, to read out data of an address range168to295, the processor of the local node needs to read out data of 128 bytes from address ranges128to255and256to383, respectively. Thus, the processor of the local node reads out data twice from the same addresses (i.e., address range128to255), so that the efficiency of reading the data deteriorates. With respect to addresses subsequent to an address256, the processor of the local node similarly reads out data twice from the same addresses.

Similarly, when the data on the packet1is written in the main memory of the remote node, the efficiency of writing the data deteriorates. For example, when the data on the packet1is written in the main memory of the remote node, a processor of the remote node needs to write data of 128 bytes in address ranges0to127and128to255, respectively, in order to write data in an address range88to215. To write data in an address range216to343, the processor of the remote node needs to write data of 128 bytes in address ranges128to255and256to383, respectively. Thus, the processor of the remote node writes data twice in the same addresses (i.e., address range128to255), so that the efficiency of writing the data deteriorates. With respect to addresses subsequent to an address256, the processor of the remote node similarly writes data twice in the same addresses. Moreover, when data is written for the second time, previously written data needs to be not overwritten.

Conventionally, there has been known a division method and a system in which a head of an I/O request (Input Output request) such as received read/write is divided according to a boundary of a cache line, and a subsequent I/O request is aligned on another cache line.

FIG. 2illustrates a result of applying a division method, in which the above-mentioned head of the I/O request is divided according to the boundary of the cache line, and the subsequent I/O request is aligned on another cache line, to the example of the Put communication inFIG. 1.

When the local node reads out the data on the packet1, a head section of the packet1is divided at a boundary between addresses127and128, and a remaining section of the packet1is divided so as to align on 128 bytes boundaries. Thereby, except for the head and an end of the packet1, data on the packet1is aligned on the 128 bytes boundaries. Therefore, when data of one packet is read out, the same addresses are not read out twice.

When the remote node writes the data on the packet1, the head section of the packet1is divided at the boundary between addresses127and128, and the remaining section of the packet1is divided so as to align on 128 bytes boundaries. Thereby, except for the head and the end of the packet1, data on the packet1is aligned on the 128 bytes boundaries. Therefore, when data of one packet is written, the data is not written in the same addresses twice.

However, in the above-mentioned division method in which the above-mentioned head of the I/O request is divided according to the boundary of the cache line, and the subsequent I/O request is aligned on another cache line, the data transfer efficiency about reading and/or writing data from/in addresses including a divisional point of the packets deteriorates. For example, when the local node reads out data on the end of the packet1, the processor of the local node reads out data of 128 bytes from an address range512to639. When the local node reads out data on the head of the packet2, the processor of the local node reads out data of 128 bytes from the address range512to639. Thus, the processor of the local node needs to read out the data twice from the address range (address range512to639) including the divisional point of the packets. Similarly, when the remote node writes the data on the end of the packet1and the data on the head of the packet2, the processor of the remote node needs to write the data twice in the address range512to639.

SUMMARY

According to an aspect of the present invention, there is provided a communication apparatus that is connected to a second information processing apparatus that transmits data requested from a first information processing apparatus, the communication apparatus including: a receiving portion that receives alignment specifying information, the alignment specifying information indicating which of main memories included in the first information processing apparatus and the second information processing apparatus to align the requested data; a division location calculating portion that calculates a divisional location of the requested data so that the divisional location of the requested data becomes an alignment boundary on the main memory included in any one of the first and the second information processing apparatuses specified by the received alignment specifying information, the alignment boundary being integral multiples of a given data width; and a transmitting portion that divides the requested data stored into the main memory in the second information processing apparatus based on the calculated divisional location, and transmits the divided data to the first information processing apparatus.

DESCRIPTION OF EMBODIMENTS

A description will now be given, with reference to the accompanying drawings, of an exemplary embodiment relating to a communication apparatus, an information processing apparatus, a method for controlling the communication apparatus, and a non-transitory computer readable recording medium.

First, a description will now be given of definition of terms used in the following embodiments. A local node indicates a node such as an information processing apparatus requesting communication in inter-node communication. A remote node indicates a node such as an information processing apparatus receiving a communication request from the local node in the inter-node communication. RDMA communication indicates a communication method in which the local node itself specifies a main memory of the local node and a main memory of the remote node, and data transfer is executed between the specified main memories. The RDMA communication includes Put communication that transmits data in the local node to the remote node, and Get communication that transmits data in the remote node to the local node. A Get request packet indicates a packet which the local node transmits to the remote node in the Get communication. The Get request packet has information on transfer areas of the local node and the remote node. A Get response packet indicates a packet which the remote node transmits to the local node in the Get communication. The Get response packet has data specified by the Get request packet. A descriptor indicates a command used when a processor as an arithmetic processing apparatus such as a CPU (Central Processing Unit) transmits beginning of a process to a network interface apparatus as a communication apparatus, or a command used when the network interface apparatus transmits completion of the process to the processor. The descriptor has information on a type of the process, and information on a transfer area or the like when the process is data transfer.

FIG. 3is a diagram illustrating a construction of the network interface apparatus according to a first embodiment.FIG. 4is a diagram illustrating a format of the descriptor.FIG. 5is a diagram illustrating a format of the Get request packet.

InFIG. 3, a node1is connected to a network3via a network interface apparatus2. The node1is connected to another node, not shown, via the network3. When the node1requests communication to another node, the node1becomes the local node. When the node1receives a communication request from another node, the node1becomes the remote node.

The node1includes: a processor11that controls the operation of the whole node1, writing data in a main memory12, and reading out data from the main memory12; and the main memory12that stores data of a packet, and the descriptor. The node1is connected to the network interface apparatus2via a bus4.

The network interface apparatus2includes a descriptor receiving unit21, a division location calculating unit22, a packet transmitting unit23, a DMA controller24, and a packet receiving unit25. The descriptor receiving unit21, the packet transmitting unit23, and the packet receiving unit25are composed of an input/output circuit, not shown. The division location calculating unit22and the DMA controller24are composed of a microcomputer, not shown, and the like.

The descriptor receiving unit21receives the descriptor from the main memory12, and transmits the descriptor to the division location calculating unit22. The packet receiving unit25receives a packet from the remote node. When the packet is the Get request packet, the packet receiving unit25transmits the packet to the division location calculating unit22. The division location calculating unit22calculates divisional locations of the data based on the descriptor or the Get request packet, and transmits a DMA address and a data length of each division data to the DMA controller24. The DMA address indicates a head address of each division data. Further, the division location calculating unit22generates packet headers corresponding to each division data, and transmits the packet headers to the packet transmitting unit23. The DMA controller24transmits a DMA request to the node1based on the received DMA address and the received data length, reads out each division data from the main memory12, and transmits each division data to the packet transmitting unit23. That is, the DMA controller24divides data based on the received DMA address and the received data length. The packet transmitting unit23creates a packet based on the packet header and the division data from the DMA controller24, and transmits the packet to the remote node. A detailed calculation method of divisional locations of the data based on the descriptor or the Get request packet by the division location calculating unit22is explained inFIGS. 6A and 6Bdescribed later.

InFIG. 4, the descriptor includes fields of a command41, a remote node address42, a MTU43, a local node transfer starting address44, a remote node transfer starting address45, a data length46, and an alignment type47. The command41specifies a type of communication such as “Put” or “Get”. The remote node address42specifies an address of the remote node on the network. The MTU43specifies a maximum transmission size per one packet. The local node transfer starting address44specifies a data transfer starting address of the local node. The remote node transfer starting address45specifies a data transfer starting address of the remote node. The data length46specifies the length of data to be transferred. The alignment type47specifies which address of the main memories included in the local node and the remote node to align data. Here, when the “Put” communication is specified by the command41, the descriptor is called “Put descriptor”. When the “Get” communication is specified by the command41, the descriptor is called “Get descriptor”. The descriptor is created by a programmer or the like, and plural descriptors are stored into the main memory12.

InFIG. 5, the Get request packet includes fields of a packet type51, a local node address52, a remote node address53, a MTU54, a local node transfer starting address55, a remote node transfer starting address56, a data length57, and an alignment type58. The packet type51specifies a type of a packet such as the Get request packet. The local node address52specifies an address of the local node on the network. The remote node address53specifies an address of the remote node on the network. The MTU54specifies a maximum transmission size per one packet. The local node transfer starting address55specifies a data transfer starting address of the local node. The remote node transfer starting address56specifies a data transfer starting address of the remote node. The data length57specifies the length of data to be transferred. The alignment type58specifies which address of the main memories included in the local node and the remote node to align data.

The alignment type47inFIG. 4and the alignment type58inFIG. 5are provided so that the processor11can select which address of the main memories included in the local node and the remote node to align data. For example, when a single local node acquires data from plural remote nodes in the Get communication, there are a lot of writing frequencies of the data by the local node. Therefore, if the local node is specified as the alignment type, the data can be aligned on the address of the main memory in the local node, and hence the writing efficiency of the data improves. On the contrary, when a single remote node transmits data to plural local nodes, there are a lot of reading frequencies of the data by the remote node. Therefore, if the remote node is specified as the alignment type, the data can be aligned on the address of the main memory in the remote node, and hence the reading efficiency of the data improves.

Here, a description will now be given of the operation of the network interface apparatus2in the case of the Put communication and the Get communication.

In the case of the Put communication, the descriptor receiving unit21receives the Put descriptor from the main memory12of the local node. The descriptor receiving unit21transmits the local node transfer starting address44, the remote node transfer starting address45, the data length46, and the alignment type47in the Put descriptor to the division location calculating unit22. The division location calculating unit22calculates divisional locations of the data based on values of these fields, and transmits the DMA address and the data length of each division data to the DMA controller24. The division location calculating unit22generates packet headers corresponding to each division data, and transmits the packet headers to the packet transmitting unit23. The DMA controller24transmits the DMA request to the local node, reads out each division data from the main memory12, and transmits each division data to the packet transmitting unit23. The packet transmitting unit23creates a packet based on the packet header from the division location calculating unit22and the division data from the DMA controller24, and transmits the packet to the remote node.

In the case of the Get communication, the network interface apparatus near the local node transmits the alignment type47in the Get descriptor to the remote node with the Get request packet. The packet receiving unit25of the network interface apparatus near the remote node receives the Get request packet. The packet receiving unit25transmits the local node transfer starting address55, the remote node transfer starting address56, the data length57, and the alignment type58of the Get request packet to the division location calculating unit22. Then, as is the case with the Put communication, the division location calculating unit22calculates divisional locations of the data based on values of these fields, and transmits the DMA address and the data length of each division data to the DMA controller24. Further, the division location calculating unit22generates packet headers corresponding to each division data, and transmits the packet headers to the packet transmitting unit23. The DMA controller24transmits the DMA request to the remote node, reads out each division data from the main memory12, and transmits each division data to the packet transmitting unit23. The packet transmitting unit23creates a packet based on the packet header from the division location calculating unit22and the division data from the DMA controller24, and transmits the packet to the local node. A detailed calculation method of divisional locations of the data based on the descriptor or the Get request packet by the division location calculating unit22is explained inFIGS. 6A and 6Bdescribed later.

FIGS. 6A and 6Bare a flowchart illustrating a process executed by the division location calculating unit22.

The division location calculating unit22judges whether the command of a received descriptor is “Get” (step S1). When the command of the received descriptor is “Get” (YES in step S1), the division location calculating unit22near the local node does not execute a calculating process of the divisional locations, generates the Get request packet, and transmits the Get request packet to the packet transmitting unit23(step S2). Then, the process is terminated.

When the command of the received descriptor is not “Get” (NO in step S1), the division location calculating unit22sets the DMA address (i.e., head address when the division data is read out from the main memory) according to a kind of the descriptor command or the packet type. Specifically, the division location calculating unit22judges whether a received object is the Get request packet (step S3). When the received object is the Get request packet (YES in step S3), the division location calculating unit22sets the DMA address to the remote node transfer starting address of the Get request packet (step S4). When the received object is the Put descriptor (NO in step S3), the division location calculating unit22sets the DMA address to the local node transfer starting address of the Put descriptor (step S5).

Next, the division location calculating unit22sets a data head address and a terminal point address based on values of the fields of the Put descriptor or the Get request packet. Specifically, the division location calculating unit22judges whether the alignment type specifies the local node based on the Put descriptor or the Get request packet (step S6). The data head address indicates a head address of the division data on the main memory included in the node executing alignment. An initial division data head address is any one of the local node transfer starting address or the remote node transfer starting address. When the alignment type specifies the local node (YES in step S6), the division location calculating unit22sets the data head address to the local node transfer starting address (step S7). Further, the division location calculating unit22sets the terminal point address to a value acquired by adding “data length−1” to the local node transfer starting address (step S8). When the alignment type specifies the remote node (NO in step S6), the division location calculating unit22sets the data head address to the remote node transfer starting address (step S9). Further, the division location calculating unit22sets the terminal point address to a value acquired by adding “data length−1” to the remote node transfer starting address (step S10). Here, the terminal point address indicates an end address of the transfer area on the main memory included in the node executing alignment.

Next, the division location calculating unit22calculates the divisional locations of the packet by setting a data end address. Specifically, the division location calculating unit22judges whether the data end address is the terminal point address (step S11). The data end address indicates an end address of the division data on the main memory included in the node executing alignment. When the data end address is the terminal point address (YES in step S11), the process is terminated. When the data end address is not the terminal point address (NO in step S11), the division location calculating unit22temporarily sets the data end address to a value acquired by adding “MTU−1” to the data head address set by step S7or S9(step S12). Next, the division location calculating unit22cuts down the temporarily set data end address to “(data end address &˜(DMA transfer unit−1))−1” (step S13). Here, “&” is an operator that executes AND operation in each bit, and “˜” is an operator that executes NOT operation in each bit. According to step S13, the data end address becomes a value acquired by subtracting “1” from a multiple of the DMA transfer unit, and hence subsequent division data can be aligned according to alignment boundaries (e.g. by 128 bytes). Next, the division location calculating unit22sets the data end address to the terminal point address when the data end address exceeds the terminal point address (step S14).

Since the location of the division data is calculated by the above-mentioned steps, the division location calculating unit22executes a process for reading out the division data from the main memory12. Specifically, the division location calculating unit22calculates a data length by “data end address−data head address+1”, and transmits the DMA address and the data length to the DMA controller24(step S15). Further, the division location calculating unit22generates a Put packet header or a Get response packet header corresponding to the division data, and transmits the Put packet header or the Get response packet header to the packet transmitting unit23(step S16). The division location calculating unit22adds “data end address−data head address+1 (i.e., data length of division data)” to the head address and the DMA address of the data to calculate a next divisional location (step S17). The division location calculating unit22repeatedly executes a loop process of steps S11to S17until an end address of the data is equal to the terminal point address.

FIG. 7is a diagram illustrating a division method of data when the alignment type is the local node in the Put communication.

InFIG. 7, it is assumed that the DMA transfer unit is 128 bytes. When the data is divided according to the MTU, the data area of the head packet1is an addresses range40to551. The division location calculating unit22cuts down the end of the data area to “multiple of DMA transfer unit—1”. Here, since the DMA transfer unit is 128 bytes, the division location calculating unit22cuts down the end of the data area from an address551to an address511. Thereby, the data area of a subsequent packet2begins from an address512, and the packet2is aligned according to the alignment boundaries (e.g. by 128 bytes). Then, the division location calculating unit22divides data of subsequent packets so that the end of the data area becomes “multiple of DMA transfer unit—1”. In the example ofFIG. 7, the MTU is a multiple of the DMA transfer unit. Therefore, when data is divided according to the MTU, the end of the data area becomes “multiple of DMA transfer unit—1”. The data area of the packet2is an address range512to1023, and the data area of a packet3is from an address1024to an address1387as an end of the transfer area. According to this division method, data other than head and end packets is aligned on the main memory in the local node according to the alignment boundaries (e.g. by 128 bytes), and hence the data can be effectively read out from the main memory.

FIG. 8is a diagram illustrating a division method of data when the alignment type is the remote node in the Put communication.

InFIG. 8, it is assumed that the DMA transfer unit is 128 bytes. When the data is divided according to the MTU, the data area of the head packet1is an address range40to551. Since the transfer starting address of the remote node is88, data is written in an area of the address range88to599. The division location calculating unit22cuts down the end of the data area so that the end of the data area becomes “multiple of DMA transfer unit−1” on the main memory in the remote node. Here, since the DMA transfer unit is 128 bytes, the division location calculating unit22cuts down the data area on the main memory in the local node to an address range40to463so that the data area on the main memory in the remote node becomes an address range88to511. Thereby, the data area of a subsequent packet2begins from an address512on the main memory in the remote node, and the packet2is aligned according to the alignment boundaries (e.g. by 128 bytes). Then, the division location calculating unit22divides the data so that the end of the data area becomes “multiple of DMA transfer unit−1” on the main memory in the remote node. In the example ofFIG. 8, the MTU indicating the maximum transmission size per one packet is a multiple of the DMA transfer unit. Therefore, when data is divided according to the size indicated by the MTU, the end of the data area becomes “multiple of DMA transfer unit−1”. The data area of the packet2is an address range464to983according to the MTU, and the data area of a packet3is an area from an address984to an address1387. According to this division method, data other than head and end packets is align on the main memory in the remote node according to the alignment boundaries (e.g. by 128 bytes), and hence the data can be effectively written in the main memory of the remote node.

It should be noted that the DMA transfer unit, the MTU, and the field values of the Put descriptor inFIGS. 7 and 8are one example. When the DMA transfer unit of the local node is equal to that of the remote node, the above-mentioned division methods can be always applied. A data division method in the Get communication is the same as the data division method in the Put communication except for the following points, i.e., (1) the network interface apparatus2near the remote node calculates the divisional locations of the data, and (2) the divisional locations of the data are calculated based on the field values of the Get request packet.

As described above, according to the first embodiment, the data to be transferred is divided into the packets so that the divisional locations of the data to be transferred become the alignment boundaries on the addresses of the main memory in the specified node. It is therefore possible to improve efficiency about reading and/or writing data from/in an address range including a divisional point.

Second Embodiment

A second embodiment differs from the first embodiment in a method for cutting down the divisional locations of the data. Although the divisional locations of the data are cut down based on the DMA transfer size in the first embodiment, the divisional locations of the data are cut down based on an alignment size specified by the descriptor in the second embodiment. The second embodiment is applied to the node such as the information processing apparatus executing the inter-node communication. Further, the second embodiment can be applied even when the alignment sizes of the local node and the remote node differ from each other in the Put communication or the Get communication. It should be noted that the construction of the network interface apparatus according to the second embodiment is the same as the construction of the network interface apparatus inFIG. 3.

A description will be given only of differences from the first embodiment.

FIG. 9is a diagram illustrating a format of the descriptor according to the second embodiment.FIG. 10is a diagram illustrating a format of the Get request packet according to the second embodiment.

In a descriptor ofFIG. 9according to the second embodiment, a field of an alignment size48is added to the descriptor ofFIG. 4according to the first embodiment. The alignment size48specifies an alignment size of the node aligning the data. Since other fields other than the alignment size48are the same asFIG. 4, the description of the other fields is omitted. In a Get request packet ofFIG. 10according to the second embodiment, a field of an alignment size59is added to the Get request packet ofFIG. 5according to the first embodiment. The alignment size59specifies an alignment size of the node aligning the data. Since other fields other than the alignment size59are the same asFIG. 5, the description of the other fields is omitted. When the alignment type is the remote node in the Put communication, the division location calculating unit22calculates the divisional locations of the data by using a value in the field of the alignment size48. When the alignment type is the local node in the Get communication, the division location calculating unit22calculates the divisional locations of the data by using a value in the field of the alignment size59.

FIGS. 11A and 11Bare a flowchart illustrating a process executed by the division location calculating unit22. It should be noted that steps that are the same as the steps illustrated inFIGS. 6A and 6Bare designated by identical reference numerals, and description of the steps is omitted.

The division location calculating unit22cuts down the data end address temporarily set by step S12to “(data end address &˜(alignment size−1))−1” (step S13A). Here, “&” is the operator that executes AND operation in each bit, and “˜” is the operator that executes NOT operation in each bit. According to step S13A, the data end address becomes a value acquired by subtracting “1” from a multiple of the alignment size, and hence subsequent division data can be aligned according to alignment boundaries (e.g. by 128 bytes).

FIG. 12is a diagram illustrating a division method of data when the alignment type is the remote node in the Put communication.

InFIG. 12, it is assumed that the DMA transfer unit of the local node is 128 bytes, and the DMA transfer unit of the remote node is 256 bytes. When the data is divided according to the MTU, the data area of the head packet1is an address range40to551. Since the transfer starting address of the remote node is88, data is written in an area of the address range88to599. The division location calculating unit22cuts down the end of the data area so that the end of the data area becomes “multiple of alignment size−1” on the main memory in the remote node. Here, since the alignment size of the remote node is 384 bytes, the division location calculating unit22cuts down the data area on the main memory in the local node to an address range40to335so that the data area on the main memory in the remote node becomes an address range88to383. Thereby, the data area of a subsequent packet2begins from an address384on the main memory in the remote node, and the packet2is aligned according to the alignment boundaries (e.g. by 384 bytes). Then, the division location calculating unit22divides the data so that the end of the data area becomes “multiple of alignment size of remote node−1” on the main memory in the remote node. Here, the alignment size of the remote node is a multiple of the DMA transfer unit of the local node. Therefore, when the data is divided according to the alignment size, the end of the data area becomes “multiple of alignment size of remote node−1”. The division location calculating unit22divides the data areas of the packets2and3into an address range336to719and an address range720to1103, respectively, according to the alignment size of the remote node. The data area of a packet4is a range from an address1104to an address1387. According to this division method, data other than the head and end packets is align on the main memory in the remote node according to the alignment boundaries (e.g. by 384 bytes), and hence the data can be effectively written in the main memory of the remote node.

It should be noted that a data division method in the Get communication is the same as the data division method in the Put communication except for the following points, i.e., (1) the network interface apparatus2near the remote node calculates the divisional locations of the data, and (2) the divisional locations of the data are calculated based on the field values of the Get request packet.

As described above, according to the second embodiment, even when the alignment sizes of the main memories in the local node and the remote node differ from each other, the data to be transferred can be aligned according to the alignment boundaries of the specified size.

Third Embodiment

The third embodiment differs from the first embodiment in that the network interface apparatus2near the local node calculates the divisional locations of the data of the Get communication, and the network interface apparatus2near the remote node omits calculating the divisional locations of the data of the Get communication. The third embodiment is applied to each node such as the information processing apparatus executing the inter-node communication. Since the network interface apparatus2near the remote node omits calculating the divisional locations of the data of the Get communication, the network interface apparatus2near the remote node may not include the division location calculating unit22. Also, in the third embodiment, the division location calculating unit22near the local node calculates the divisional locations of the data based on a received Get descriptor. The packet transmitting unit23transmits the divisional locations of the data to the network interface apparatus2near the remote node by using the Get request packet.

FIG. 13is a diagram illustrating a format of the Get request packet according to the third embodiment.

The Get request packet ofFIG. 13includes fields of a packet type51, a local node address52, a remote node address53, a local node transfer starting address55, a remote node transfer starting address56, and a data length57. The description of each field is the same as the description ofFIG. 5, and is therefore omitted.

FIG. 14is a diagram illustrating the construction of the network interface apparatus2according to the third embodiment.

The construction of the network interface apparatus2inFIG. 14is the same as the construction of the network interface apparatus2inFIG. 3. However, the network interface apparatus2inFIG. 14differs from the network interface apparatus2inFIG. 3in that the packet receiving unit25does not transmit the Get request packet to the division location calculating unit22.

InFIG. 14, the packet receiving unit25directly specifies the divisional locations of the Get response packet based on the remote node transfer starting address and the data length of the Get request packet. Therefore, the packet receiving unit25need not transmit the Get request packet to the division location calculating unit22, transmits the remote node transfer starting address and the data length to the DMA controller24as it is, and transmits the header of the Get response packet to the packet transmitting unit23.

The descriptor receiving unit21receives values of the fields of the local node transfer starting address, the remote node transfer starting address, the data length and the alignment type in the Put descriptor or the Get descriptor, and transmits the values to the division location calculating unit22.

When the division location calculating unit22near the local node receives each field value of the Get descriptor in the Get communication, the division location calculating unit22calculates the divisional locations of the data based on the field values, and transmits the DMA address and the data length of each division data to the packet transmitting unit23. The packet transmitting unit23creates the Get request packet from the DMA address and the data length, and transmits the Get request packet to the network interface apparatus near the remote node.

The packet receiving unit25in the network interface apparatus2near the remote node receives the Get request packet, and transmits the DMA address and the data length in the Get request packet to the DMA controller24. Moreover, the packet receiving unit25transmits the header of the Get response packet to the packet transmitting unit23. The DMA controller24reads out each division data from the main memory12based on the DMA address and the data length, and transmits each division data to the packet transmitting unit23. The packet transmitting unit23creates the Get response packet from each received division data by using the header of the Get response packet, and transmits the Get response packet to the local node. Thus, the network interface apparatus2near the local node calculates the divisional locations of the data, so that the network interface apparatus2near the remote node can omit calculating the divisional locations of the data.

FIG. 15is a flowchart illustrating a process executed by the division location calculating unit22of the local node. Steps that are the same as the steps illustrated inFIGS. 6A and 6Bare designated by identical reference numerals, and description of the steps is omitted.

InFIG. 15, the division location calculating unit22calculates the divisional locations of the data so that the divisional locations of the data on the main memory of the node specified by the field of the alignment type of the descriptor in the Get communication become the alignment boundaries (steps S6to S14). After the procedure of step S14, the division location calculating unit22transmits the DMA address and the data length corresponding to the division data to the packet transmitting unit23(step S18). The procedure returns to step S11. Here, the packet transmitting unit23creates the Get request packet from the received DMA address and the received data length, and transmits the Get request packet to the network interface apparatus2near the remote node. Thus, each of the divisional locations of the data is transmitted to the network interface apparatus2near the remote node by the Get request packet, so that the network interface apparatus2near the remote node can omit calculating the divisional locations of the data.

A calculation method of the divisional locations which the network interface apparatus2near the local node executes is the same as the calculation method of the divisional locations which the network interface apparatus2near the remote node of the first embodiment executes, except for receiving value of each field from the Get descriptor. Also, in the third embodiment, the calculation method of the divisional locations in the case of the Put communication is the same as the calculation method of the divisional locations in the case of the Put communication of the first embodiment.

As described above, according to the third embodiment, the network interface apparatus2near the remote node can omit calculating the divisional locations of the data.

A computer or a network interface apparatus may execute a software program for realizing the functions of the network interface apparatus2. In this manner, the same effects as those of the above-mentioned first to third embodiments can also be achieved.