Data transfer controller and information processing apparatus

The data transfer control device addresses data accumulation delays by copying data to memory and managing addresses, ensuring efficient data transfer and maintaining system performance despite receiving device stalls.

JP2025119280APending Publication Date: 2025-08-14FUJITSU LTD +1
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2024014078
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-02-01
Publication Date
2025-08-14

AI Technical Summary

Technical Problem

Data transfer methods like function chaining can result in delays when data accumulates in a sending device due to processing speed or load issues of the receiving device, leading to decreased overall system performance.

Method used

A data transfer control device that includes a receiving unit, a sending queue, a copy processing unit, and a sending unit to manage data transfer by copying data from the sending device to memory and rewriting addresses in the message queue, allowing data to be sent to the receiving device without delay.

Benefits of technology

This approach suppresses delays in processing of other receiving devices, even when one receiving device is stagnant, thereby maintaining system performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025119280000001_ABST
    Figure 2025119280000001_ABST
Patent Text Reader

Abstract

To prevent a processing delay on a receiving device to which a message is transmitted from a transmitting device even when another processing of another receiving device is delayed.SOLUTION: A data transfer controller includes a reception unit which receives, from a transmitting device, a message including a destination identifying a receiving device and an address indicating a storage destination of data, a transmission queue which retains the message, a copy processing unit which instructs the transmitting device to copy the data retained in the transmitting device to a memory, and rewrites an address included in the message retained in the transmission queue to an address indicating a storage location of the data in the memory, based on copying of the data to the memory, and a transmission unit which transmits the message retained at a head of the transmission queue to the receiving device indicated by the destination included in the message.SELECTED DRAWING: Figure 1
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present invention relates to a data transfer control device and an information processing device. [Background technology]

[0002] In a serial interface control device, a method is known in which a frame synthesis circuit synthesizes control information stored in a memory and transmission data stored in a buffer to generate a frame, and then the generated frame is transmitted (see, for example, Patent Document 1).

[0003] When data is transferred directly between device interfaces, a method is known for controlling the transfer of data based on the access permission content of the data block of the transfer source contained in the access control information stored in the control information storage unit (see, for example, Patent Document 2).

[0004] In a DMA (Direct Memory Access) controller that transfers data between memory areas, a method is known in which data transfer is repeated without the intervention of a CPU (Central Processing Unit) according to data transfer information held in queues with different priorities (see, for example, Patent Document 3).

[0005] In a data transfer system, a method is known in which a transmitting device sends a message including specific information identifying the receiving device and the communication task to multiple receiving devices, and transmits data to the receiving device that has released the inhibition of the communication task (see, for example, Patent Document 4). [Prior art documents] [Patent documents]

[0006] [Patent Document 1] Japanese Patent Application Publication No. 10-69459 [Patent Document 2] Japanese Patent Application Publication No. 9-73412 [Patent Document 3] Japanese Patent Application Laid-Open No. 2005-165439 [Patent Document 4] Japanese Patent Application Laid-Open No. 2012-88753 Summary of the Invention [Problem to be solved by the invention]

[0007] For example, a data transfer method such as function chaining is known, in which multiple devices (functions) that each realize multiple functions are placed on a bus and data is transferred directly between specific devices. With this type of data transfer method, if data accumulates in a sending device due to the processing speed or processing load of the receiving device, data transfer from the sending device to other receiving devices may stagnate, resulting in a decrease in overall system performance.

[0008] In one aspect, the present invention aims to suppress delays in processing of other receiving devices to which a message is sent from a sending device, even when processing of a receiving device is stagnant. [Means for solving the problem]

[0009] According to one aspect, a data transfer control device includes a receiving unit that receives a message from a sending device, the message including a destination that identifies a receiving device that will retrieve and process data from a storage area and an address indicating where the data to be processed by the receiving device is to be stored; a sending queue that holds the message received by the receiving unit; a copy processing unit that instructs the sending device to copy the data held in the sending device to memory, and based on the copying of the data from the sending device to the memory, rewrites the address included in the message held in the sending queue to an address indicating the storage location of the data in the memory; and a sending unit that sends the message held at the top of the sending queue to the receiving device indicated by the destination included in the message. [Effects of the Invention]

[0010] Even if the processing of the receiving device is stagnant, it is possible to suppress delays in the processing of other receiving devices to which messages are sent from the sending device. [Brief explanation of the drawings]

[0011] [Figure 1] 1 is a block diagram illustrating an example of an information processing device having a data transfer control device according to an embodiment. [Figure 2] 2 is a flowchart showing an example of the operation of the data transfer control device of FIG. 1. [Figure 3] 2 is a flow diagram illustrating an example of the operation of a receiving device receiving a message in FIG. 1. FIG. [Figure 4] FIG. 10 is a block diagram illustrating an example of an information processing device having a data transfer control device according to another embodiment. [Figure 5] 5 is a block diagram showing an example of a hardware configuration of the information processing device 100 in FIG. 4. FIG. [Figure 6] 5 is a block diagram showing an example of a functional configuration of the message management device of FIG. 4. FIG. [Figure 7] 5A and 5B are diagrams illustrating an example of information included in the message of FIG. 4 and completion waiting information held in a completion waiting queue. [Figure 8] FIG. 7 is a block diagram showing an example of a memory management unit in FIG. 6. [Figure 9] FIG. 5 is an explanatory diagram showing an example of the operation of the information processing device of FIG. [Figure 10] 5 is an explanatory diagram showing another example of the operation of the information processing device in FIG. 4. [Figure 11] FIG. 11 is a sequence diagram showing the operation of FIG. [Figure 12] 5 is an explanatory diagram showing another example of the operation of the information processing device in FIG. 4. [Figure 13] FIG. 13 is a sequence diagram showing the operation of FIG. [Figure 14] 5 is an explanatory diagram showing another example of the operation of the information processing device in FIG. 4. [Figure 15] FIG. 15 is a sequence diagram showing the operation of FIG. [Figure 16] FIG. 16 is a sequence diagram showing a continuation of FIG. [Figure 17] 5 is an explanatory diagram showing another example of the operation of the information processing device in FIG. 4. [Figure 18] FIG. 18 is a sequence diagram showing the operation of FIG. [Figure 19] 7 is a flowchart showing an example of the operation of the message receiving unit in FIG. 6. [Figure 20] FIG. 20 is a flowchart showing an example of the operation of step S103 in FIG. 19. [Figure 21] 7 is a flowchart showing an example of the operation of the copy processing unit in FIG. 6. [Figure 22] 7 is a flowchart showing an example of the operation of the message transmission unit in FIG. 6. [Figure 23] 7 is a flow chart showing an example of the operation of the completion waiting queue of FIG. 6. DETAILED DESCRIPTION OF THE INVENTION

[0012] Hereinafter, embodiments will be described with reference to the drawings.

[0013] Fig. 1 shows an example of an information processing device having a data transfer control device according to an embodiment. The information processing device 10 shown in Fig. 1 has a data transfer control device 20, a sending device 30, a receiving device 40, and a memory 50. The data transfer control device 20 has a receiving unit 21, a sending queue 22, a copy processing unit 23, a determining unit 24, and a sending unit 25.

[0014] Although not shown, the data transfer control device 20, the transmitting device 30, the receiving device 40, and the memory 50 may be connected to one another via a bus. For example, the transmitting device 30 and the receiving device 40 may be a field-programmable gate array (FPGA) or a graphics processing unit (GPU). The information processing device 10 may implement a function chaining technique in which data is transferred directly between multiple devices each having a predetermined processing function, and the multiple devices process the data sequentially.

[0015] The transmitting device 30 stores data DT to be processed by the receiving device 40 in a memory (not shown) or the like installed in the transmitting device 30. The transmitting device 30 transmits to the data transfer control device 20 a message MSG including a destination that identifies the receiving device 40 that is to process the data DT and an address indicating a storage location of the data DT to be processed by the receiving device 40. For example, the address is the top address of a storage area in which data is stored in a memory space used by the information processing device 10. The message MSG may also include the size of the data DT.

[0016] In the data transfer control device 20, the receiving unit 21 receives a message MSG including a destination and an address. The message MSG received by the receiving unit 21 is sequentially held in entries of a transmission queue 22 in a FIFO (First-In First-Out) format, for example.

[0017] The determination unit 24 determines whether the retention time (predicted value) of the message MSG in the transmission queue 22 exceeds the first time. If the retention time (predicted value) exceeds the first time, the copy processing unit 23 transmits an instruction to the transmitting device 30 to copy the data DT held in the transmitting device 30 to the memory 50.

[0018] Based on the fact that the data DT has been copied from the sending device 30 to the memory 50, the copy processing unit 23 rewrites the address included in the message MSG held in the sending queue 22 to an address indicating the storage location of the data DT in the memory 50. If the retention time (predicted value) is equal to or less than the first time, the copy processing unit 23 does not rewrite the address included in the message MSG held in the sending queue 22. In this case, the address included in the message MSG indicates the storage area in the sending device 30 where the data DT is held.

[0019] The transmitter 25 transmits the message MSG held at the top of the transmission queue 22 to the receiving device 40 indicated by the destination included in the message MSG. Fig. 1 shows the operation when the retention time of the message MSG in the transmission queue 22 exceeds the first time. Therefore, the address of the message MSG that the transmitter 25 transmits to the receiving device 40 indicates the memory 50 in which the data DT is stored.

[0020] When the receiving device 40 receives the message MSG, it acquires the data DT from the storage area indicated by the address included in the message MSG and processes the acquired data DT. In the example of Fig. 1, the receiving device 40 acquires the data DT from the memory 50. Note that if the retention time does not exceed the first time, the receiving device 40 acquires the data DT from the storage area in the sending device 30, as shown by the transfer path of the data DT indicated by the dashed line.

[0021] For example, if the processing of the data DT held in the storage area of the sending device 30 becomes slower due to a slowdown in the processing of the data DT by the receiving device 40, the storage area for storing data in the sending device 30 becomes congested, making it impossible to send new data DT. This causes delays in messages MSG sent by the sending device 30 to receiving devices other than the receiving device 40. In this way, a processing delay in the receiving device 40 may cause processing delays in the other receiving devices.

[0022] In this embodiment, the data DT to be processed by the receiving device 40 is copied to the memory 50 without being stored in the transmitting device 30. This allows the transmitting device 30 to transmit messages MSG to other devices to the data transfer control device 20 without delay. As a result, it is possible to prevent delays in processing by the receiving device 40 from causing delays in processing by other devices.

[0023] 2 shows an example of the operation of the data transfer control device 20 in FIG. 1. First, in step S10, the data transfer control device 20 waits until it receives a message MSG, and if it receives the message MSG, it performs step S11. In step S11, the data transfer control device 20 determines whether the retention time (predicted value) of the message MSG in the transmission queue 22 exceeds a first time T1. If the predicted retention time exceeds the first time T1, the data transfer control device 20 performs step S12, and if the predicted retention time is equal to or less than the first time T1, it performs step S15.

[0024] In step S12, the data transfer control device 20 sends an instruction to the sending device 30, which is the sender of the message MSG, to copy the data DT held in the sending device 30 to the memory 50. Next, in step S13, the data transfer control device 20 waits until copying of the data DT from the sending device 30 to the memory 50 is complete, and when copying is complete, carries out step S14. For example, the data transfer control device 20 determines the completion of copying of the data DT from the sending device 30 to the memory 50 based on a copy completion notification from the sending device 30 to the data transfer control device 20.

[0025] Next, in step S14, the data transfer control device 20 rewrites the address indicating the storage location of the data DT included in the received message MSG to the address indicating the storage location of the data DT in the memory 50. Next, in step S15, the data transfer control device 20 stores the message MSG in the transmission queue 22. Next, in step S16, the data transfer control device 20 transmits the message MSG held at the top of the transmission queue 22 to the receiving device 40 indicated by the destination included in the message MSG, and ends the operation shown in FIG.

[0026] 3 shows an example of an operation flow of the receiving device 40 receiving the message MSG in FIG. 1. First, in step S20, the receiving device 40 waits until it receives the message MSG, and when it receives the message MSG, it performs step S21. In step S21, the receiving device 40 reads the data DT from the storage location of the data DT indicated by the address included in the message MSG. Next, in step S22, the receiving device 40 processes the read data DT and ends the operation shown in FIG. 3.

[0027] As described above, in this embodiment, the data transfer control device 20 copies data to be processed by a receiving device 40 where processing is stalled from the transmitting device 30 to the memory 50 and causes the receiving device 40 to acquire the data. This makes it possible to suppress delays in data processing in other receiving devices that receive data from the transmitting device 30. As a result, it is possible to suppress a decrease in the processing performance of an information processing device 10 that includes, for example, multiple transmitting devices 30 and multiple receiving devices 40.

[0028] 4 shows an example of an information processing device having a data transfer control device according to another embodiment. The information processing device 100 shown in FIG. 4 may implement a function chaining technique in which data is directly transferred between multiple devices each having a predetermined function, and the multiple devices process the data sequentially.

[0029] The information processing device 100 has a message manager 200, multiple functions 300A, 300B, 400A, 400B, and 400C, and multiple memories 500A, 500B, and 500C. The message manager 200 is an example of a data transfer control device. The functions 300A and 300B are examples of sending devices, and the functions 400A, 400B, and 400C are examples of receiving devices.

[0030] Hereinafter, when functions 300A and 300B are described without distinction, they are also referred to as function 300. When functions 400A, 400B, and 400C are described without distinction, they are also referred to as function 400. When memories 500A, 500B, and 500C are described without distinction, they are also referred to as memory 500.

[0031] The message management device 200 has input ports 210A, 210B, and 210C, a router 220, transmission queues 230A, 230B, and 230C, and a completion waiting queue 240. Hereinafter, when the input ports 210A, 210B, and 210C are described without distinction, they will also be referred to as input ports 210, and when the transmission queues 230A, 230B, and 230C are described without distinction, they will also be referred to as transmission queues 230. The message management device 200 may be realized by hardware such as an FPGA. Furthermore, some of the functions of the message management device 200 may be realized by software.

[0032] Each function 300, 400 has a queue for holding messages MSG (MSGa, MSGb, or MSGc) and a data storage unit such as memory for holding data. The queues of each function 300, 400 are shown by four rectangles arranged horizontally in Fig. 4, and the data storage units of each function 300, 400 are shown by three rectangles arranged vertically in Fig. 4.

[0033] For example, each of the functions 300, 400 has a function of processing data and is realized by a device such as an FPGA or a GPU. Hereinafter, the device such as an FPGA or a GPU that realizes each of the functions 300, 400 will also be referred to as the function 300, 400. Each of the memories 500 has multiple blocks that can hold data to be processed by the function 400.

[0034] The message management device 200 accepts a message reception request from each function 400 in advance, associates each function 400 with one of the transmission queues 230, and registers the correspondence between each function 400 and the transmission queue 230. Then, the message MSG held in each transmission queue 230 is sent to the corresponding function 400.

[0035] Fig. 5 shows an example of the hardware configuration of the information processing device 100 of Fig. 4. The information processing device 100 includes a message manager 200, a CPU 110, a memory 120, a NIC (Network Interface Controller) 130, a plurality of FPGAs 140, a plurality of GPUs 150, a plurality of memories 500, and a bus 170.

[0036] The message management device 200, the CPU 110, the NIC 130, the plurality of FPGAs 140, the plurality of GPUs 150, and the plurality of memories 500 are connected to one another via a bus 170 such as a PCIe (Peripheral Component Interconnect express) bus. The memory 120 is connected to the CPU 110 without via the bus 170. For example, the CPU 110 may control the entire information processing device 100 by executing a control program stored in the memory 120.

[0037] The NIC 130 controls the connection with the network NW and inputs and outputs various information to and from the network NW. Each of the FPGA 140 and the GPU 150 corresponds to one of the functions 300 and 400 in FIG.

[0038] Fig. 6 shows an example of the functional configuration of the message management device 200 of Fig. 4. The message management device 200 has an input / output interface unit 201, a transfer table 202, a message receiving unit 203, a copy processing unit 204, a memory management unit 205, a message transmitting unit 206, a completion waiting queue 240, and a plurality of transmission queues 230. The message receiving unit 203 is an example of a receiving unit and a determining unit, and the message transmitting unit 206 is an example of a transmitting unit.

[0039] The input / output interface unit 201 is connected to the bus 170, receives a message MSG from the function 300, and outputs the message MSG to the function 400. The transfer table 202 holds information indicating in which transmission queue 230 a message MSG received from the function 300 should be stored. For example, the transfer table 202 holds information indicating the correspondence between the destination included in the message MSG and the transmission queue 230.

[0040] The message receiving unit 203 receives a message MSG sent from the function 300 via the input / output interface unit 201. The message receiving unit 203 refers to the transfer table 202 to find a transmission queue 230 that stores the received message MSG, and stores the message MSG in the transmission queue 230 that it finds.

[0041] Furthermore, the message receiving unit 203 determines whether or not to copy the data held in the function 300 that sent the message MSG to the memory 500. If the message receiving unit 203 determines to copy the data, it instructs the copy processing unit 204 to perform the copy process.

[0042] The copy processing unit 204 determines the memory 500 to which the data is to be copied, and causes the function 300 that sent the message MSG to copy the data. The memory management unit 205 has a management table that holds information indicating whether multiple blocks contained in each of the multiple memories 500 are in use.

[0043] The message sending unit 206 sends the message MSG held in the top entry of each send queue 230 to the function 400 indicated by the destination included in the message MSG. When the message sending unit 206 multicasts the message MSG or when the data is copied to the memory 500, it stores completion waiting information in the completion waiting queue 240.

[0044] The completion waiting queue 240 is used to confirm that responses have been received from all multicast destination functions 400. The completion waiting queue 240 is also used to relay a transfer completion notification to the function 300 when data has been transferred to the function 400 via the memory 500.

[0045] 7 shows an example of the information included in the message MSG in Fig. 4 and the completion waiting information held in the completion waiting queue 240. The message MSG that the message manager 200 receives from the function 300 and the message MSG' that the message manager 200 sends to the function 400 both contain common items.

[0046] The messages MSG and MSG' each have areas for holding a FlowID, Info, AckAddr, CmpAddr, DataAddr, and DataLen. The FlowID indicates a number that identifies the message MSG. For example, the message receiving unit 203 selects a transmission queue 230 in which to store the message MSG based on the FlowID.

[0047] Info is an example of additional information and includes various types of information used by the message management device 200. For example, Info includes information indicating an instruction to forcibly copy data to be processed from the function 300 to the memory 500, or information specifying the memory 500 to which the data to be processed is to be copied.

[0048] AckAddr indicates the address of an area that stores the success (ACK) or failure (NAK) of receiving the message MSG. For example, the AckAddr included in the message MSG that the message manager 200 receives from the function 300 indicates the address of an area that the function 300 can refer to. The AckAddr included in the message MSG' that the message manager 200 sends indicates the address of an area that the function 300 can refer to, or the address of an area that the message manager 200 can refer to.

[0049] CmpAddr indicates the write address of an area to write the data transfer completion CMP, which is a notification of completion of copying data from the memory 500 by the function 400. CmpAddr included in the message MSG that the message manager 200 receives from the function 300 indicates the write address of an area that the function 300 can refer to.

[0050] The CmpAddr included in the message MSG' sent by the message management device 200 indicates the write address of an area that the function 300 can refer to when the function 400 obtains data from the function 300. Also, the CmpAddr included in the message MSG' sent by the message management device 200 indicates the write address of an area that the message management device 200 can refer to when the function 400 obtains data from the memory 500.

[0051] DataAddr indicates the starting address (data storage location) of the memory area where the data to be processed is stored. DataAddr included in the message MSG received by the message manager 200 indicates the address assigned to the data storage unit of the function 300. DataAddr included in the message MSG' sent by the message manager 200 indicates the address assigned to the data storage unit of the function 300 or the address assigned to the memory 500. DataLen indicates the data length (data size) of the data transferred from the function 300 to the function 400.

[0052] The message MSG+ stored in the entry of the send queue 230 is generated by adding CopyFlag and MemInfo to the message MSG received by the message manager 200. CopyFlag is an example of a copy flag that indicates whether data has been copied from the function 300 to the memory 500. MemInfo includes information that identifies the location (the data storage unit or memory 500 that is the sender of the message MSG) that holds the data to be processed by the function 400.

[0053] The completion waiting information held in the completion waiting queue 240 includes FlowID, Info, CmpAddr, CopyFlag, MemInfo, and n Cmps. FlowID, Info, CmpAddr, CopyFlag, and MemInfo are the same as the elements contained in the message MSG+ held in the send queue 230.

[0054] Each Cmp is a completion flag in which a data transfer completion CMP received from the corresponding function 400 is stored. The addresses of the completion flags Cmp are assigned in order starting from the address CmpBase. Hereinafter, the addresses CmpBase, CmpBase+1, ..., CmpBase+(n-1) will also be referred to as the address CmpBase.

[0055] When multicasting a message MSG, the message sending unit 206 rewrites the CmpAddr of the message MSG′ to the address CmpBase assigned to the corresponding completion flag Cmp in the completion waiting information before sending each message MSG to each function 400.

[0056] 8 shows an example of the memory management unit 205 of FIG. 6. The memory management unit 205 has management tables 205A, 205B, ... corresponding to each of a plurality of memories 500 (500A, 500B, ...). For example, each memory 500 is partitioned into a plurality of blocks BLK, such as j or k. Each management table 205A, 205B has an area for storing information indicating whether each block BLK of the corresponding memory 500 is in use or unused, and an area for storing an unused number, which is the number of unused blocks BLK.

[0057] For example, when copying data from the function 300 to the memory 500A, the copy processing unit 204 sets the area in the management table 205A corresponding to the block BLK in the memory 500A to which the data is to be copied to "in use." Then, the copy processing unit 204 stores the number of unused blocks BLK in the memory 500A in the "number of unused blocks" area. Furthermore, when the memory 500A is released, the copy processing unit 204 returns the area set to "in use" in the management table 205A to "unused" and updates the "number of unused blocks." Note that the memory management unit 205 may have a management table that manages memory blocks in the data storage unit of the function 300, etc.

[0058] Fig. 9 shows an example of the operation of the information processing device 100 in Fig. 4. Fig. 9 shows an example of a malfunction that occurs when the message manager 200 is operated without using the completion waiting queue 240 and memories 500A, 500B, and 500C. Fig. 9 shows an example in which the function 300B receives data to be processed by the functions 400B and 400C, respectively, and outputs messages MSGb and MSGc to the functions 400B and 400C, respectively, via the message manager 200.

[0059] When the completion waiting queue 240 and memories 500A, 500B, and 500C are not used, the functions 400B and 400C read the data to be processed directly from the data holding unit of the function 300B. For example, in Fig. 9, a delay in data processing by the function 400C causes the data held in the data holding unit of the function 300B to accumulate and not be able to be sent, making it impossible to send new data.

[0060] This makes it difficult for function 300B to accept new data b and c to be processed by functions 400B and 400C. In other words, due to a delay in the processing of function 400C, message MSGb does not reach function 400B, which executes a process different from that of function 400C, causing a problem in which the processing by function 400B is delayed.

[0061] Fig. 10 shows another example of the operation of the information processing device 100 in Fig. 4. In Fig. 10, when there is room in the data storage unit of function 300A, a single-cast message MSGa is sent from function 300A to function 400A via the message manager 200. When there is room in the data storage unit of function 300A, the data to be processed by function 400A is transferred directly from function 300A to function 400A without going through memory 500.

[0062] Figure 11 shows the operation sequence of Figure 10. The function 300A sends a message MSGa to the message manager 200 (Figure 11(a)). In the message MSGa, the FlowID shown in Figure 7 is set to a number that identifies the message MSG, and AckAddr and CmpAddr are each set to an address that indicates a predetermined area within the function 300A. DataAddr and DataLen indicate the start address and data length, respectively, of the memory within the function 300 that holds the data to be processed by the function 300A.

[0063] When the message receiver 203 receives the message MSGa, it determines that the data storage unit of the function 300A has sufficient capacity because, for example, the retention time (i.e., processing speed) of the message MSGa stored in the transmission queue 230A is shorter than a threshold. The message receiver 203 then determines not to copy the data to the memory 500 (FIG. 11(b)). The message receiver 203 searches the transfer table 202 (FIG. 6) using the FlowID and determines to store the message MSGa in the transmission queue 230A. If the retention time (processing speed) of the message MSGa stored in the transmission queue 230A is short, the message manager 200 does not transfer the data from the function 300 to the memory 500. Therefore, the message receiver 203 stores the message MSGa+ in the transmission queue 230A, which includes a CopyFlag indicating no copy and MemInfo indicating information identifying the data storage unit of the function 300A (FIG. 11(c)). The message receiving unit 203 writes ACK to the area indicated by AckAddr of the function 300A (FIG. 11(d)).

[0064] The message sending unit 206 deletes CopyFlag and MemInfo from the message MSGa+, rewrites AckAddr to an address indicating an area in the message manager 200, and sends the message MSGa' to the function 400A (Fig. 11(e)). The function 400A that receives the message MSGa' writes ACK (for example, "1") to the area of the message manager 200 indicated by AckAddr of the message MSGa (Fig. 11(f)).

[0065] The function 400A accesses the storage area of the function 300A indicated by DataAddr included in the message MSGa' and copies data of the data length indicated by DataLen (Fig. 11(g)). After completing the data copy, the function 400A writes a data transfer completion CMP (for example, "1") to the area (function 300A) indicated by CmpAddr of the message MSGa' (Fig. 11(h)). The function 400A starts data processing using the copied data (Fig. 11(i)). Upon receiving the data transfer completion CMP, the function 300A releases the area in the data storage unit that held the data (Fig. 11(j)). Then, processing of the single-cast message MSGa when the data is not copied to the memory 500 is completed.

[0066] Fig. 12 shows another example of the operation of the information processing device 100 in Fig. 4. In Fig. 12, when there is no room in the data storage unit of function 300B, a single-cast message MSGc is sent from function 300B to function 400C. When there is no room in the data storage unit of function 300B, the data to be processed by function 400C is transferred from function 300B to function 400C via memory 500C, for example.

[0067] When the message manager 200 transfers data from the function 300B to the function 400C via the memory 500C, it stores completion waiting information c corresponding to the message MSGc in the completion waiting queue 240. Furthermore, the message manager 200 rewrites AckAddr, which indicates the storage destination of the data transfer completion notification, to the address CmpBase of the completion waiting information, and sequentially transmits the message MSGc' to the function 400C. When the message manager 200 receives a data transfer completion notification from the function 400C, it purges the top entry (completion waiting information c) from the completion waiting queue 240.

[0068] Figure 13 shows the operation sequence of Figure 12. Detailed explanation of operations similar to those of Figure 11 will be omitted. The function 300B sends a message MSGc to the message manager 200 (Figure 13(a)). The FlowID, AckAddr, CmpAddr, DataAddr, and DataLen in the message MSGc are set according to the function 400C to which the message MSGc' is to be sent and the data to be processed by the function 400C.

[0069] The message receiving unit 203 that has received the message MSGa determines that there is no room in the data holding unit of the function 300B, for example, because the retention time (i.e., processing speed) of the message MSGc held in the transmission queue 230B is shorter than a threshold. The message receiving unit 203 then determines to copy the data to the memory 500C and instructs the copy processing unit 204 to copy (FIGS. 13(b) and 13(c)). The copy processing unit 204 determines the memory 500C to which the data is to be copied (FIG. 13(d)). The copy processing unit 204 manages the determined memory 500C as MemInfo, and stores the top address of the area in the determined memory 500C where the data is to be stored in DataAddr of the message MSG (FIG. 13(e)).

[0070] The copy processing unit 204 issues an instruction to the function 300B that sent the message MSGc to transfer the data to the memory 500C (FIG. 13(f)). Based on the transfer instruction, the function 300B copies the data stored in the data storage unit to the memory 500C, and sends a data transfer completion notification to the copy processing unit 204 (FIGS. 13(g) and (h)).

[0071] The copy processing unit 204 writes data transfer completion CMP to the completion flag Cmp in the function 300B indicated by CmpAddr in the message MSGc, and releases the area that held the data in the function 300B (FIGS. 13(i) and (j)). This allows the storage area of the function 300B to be quickly released after the data is transferred from the function 300 to the memory 500. The copy processing unit 204 notifies the message receiving unit 203 of MemInfo, which indicates the memory 500C to which the data is to be transferred, and DataAddr, which indicates the address of the data destination (FIG. 13(k)).

[0072] The message receiving unit 203 stores the message MSGc+, which includes CopyFlag indicating that a copy has been made and MemInfo indicating information for identifying the memory 500C, in the transmission queue 230B (FIG. 13(l)). The message receiving unit 203 stores ACK, which indicates completion of reception of the message MSGc, in the area indicated by AckAddr of the function 300B (FIG. 13(m)).

[0073] The send queue 230B retrieves the message MSGc+ held in the top entry of the send queue 230, sets completion waiting information in the completion waiting queue 240, and changes CmpAddr in the completion waiting information to CmpBase (FIG. 13(n)).The send queue 230B then deletes CopyFlag and MemInfo from the message MSGc+ retrieved from the top entry of the send queue 230 to create a message MSGc' and sends it to function 400C (FIG. 13(o)).

[0074] The function 400C that received the message MSGc' writes ACK to the area of the message manager 200 indicated by AckAddr of the message MSGc' (Fig. 13(p)). The function 400C accesses the storage area of the memory 500C indicated by DataAddr included in the message MSGc' and copies data of the data length indicated by DataLen (Fig. 13(q)). After completing the data copy, the function 400C writes data transfer completion CMP to the completion flag Cmp indicated by CmpAddr (=CmpBase) of the message MSGc' (Fig. 13(r)). The function 400C starts data processing using the copied data (Fig. 13(s)).

[0075] Upon receiving the data transfer completion CMP, the completion waiting queue 240 releases the area in memory 500C that held the data, and expels the first entry (completion waiting information) from the completion waiting queue 240 (FIG. 13(t)). This completes the processing of the single-cast message MSGc when the data is copied to memory 500C.

[0076] Fig. 14 shows another example of the operation of the information processing device 100 in Fig. 4. In Fig. 14, when there is no room in the data storage section of function 300B, a multicast message MSGd is sent from function 300B to functions 400B and 400C. Because there is no room in the data storage section of function 300B, the data to be processed by functions 400B and 400C is transferred from function 300B to functions 400B and 400C, respectively, via memory 500C, for example.

[0077] When the message manager 200 sequentially transfers data from the function 300B to the functions 400B and 400C via the memory 500C, it stores completion waiting information d corresponding to the message MSGd in the completion waiting queue 240. Furthermore, the message manager 200 rewrites the AckAddr indicating the storage destination of the data transfer completion notification for each of the functions 400B and 400C to, for example, the addresses CmpBase and CmpBase+1 of the completion waiting information to generate a message MSGd', and sequentially transmits this message to each of the functions 400B and 400C. When the message manager 200 receives data transfer completion notifications from both the functions 400B and 400C, it purges the top entry (completion waiting information d) from the completion waiting queue 240.

[0078] Figures 15 and 16 show the operation sequence of Figure 14. Detailed explanations of operations similar to those of Figure 11 or Figure 13 will be omitted. The operation of Figure 15 is similar to the operation in Figure 13 from when the message receiving unit 203 stores the message MSGd+ including CopyFlag and MemInfo in the transmission queue 230B until the ACK is stored in the function 300B.

[0079] Next, in FIG. 16, similarly to FIG. 13, the send queue 230B sets completion waiting information in the completion waiting queue 240 (FIG. 16(n)). Then, the send queue 230B sends the message MSGd' in which CmpAddr in the completion waiting information has been changed to CmpBase to the function 400B (FIG. 16(o)). The function 400B that received the message MSGd' writes an ACK in the area of the message manager 200 indicated by AckAddr of the message MSGd' (FIG. 16(p)).

[0080] The function 400B copies data from the memory 500C indicated by DataAddr included in the message MSGd' (Fig. 16(q)). After completing the data copy, the function 400B writes data transfer completion CMP to the completion flag Cmp indicated by CmpAddr (=CmpBase) of the message MSGd' (Fig. 16(r)). The function 400B starts data processing using the copied data (Fig. 16(s)).

[0081] When the data transfer completion CMP is written to the completion flag Cmp, the send queue 230B changes CmpAddr in the completion waiting information to CmpBase+1 (FIG. 16(t)). Then, the send queue 230B generates a message MSGd' and sends it to the function 400C (FIG. 16(u)).

[0082] By changing CmpAddr to CmpBase before the message MSG is sent to the function 400, each function 400 can write the data transfer completion CMP in a different area by referencing the common CmpAddr.

[0083] The function 400C that receives the message MSGd' writes an ACK to the message manager 200 and copies the data from the memory 500C, as in Fig. 13 (Fig. 16(v) and (w)). After completing the data copy, the function 400C writes a data transfer completion CMP to the completion flag Cmp indicated by CmpAddr (=CmpBase+1) of the message MSGd' (Fig. 16(x)).

[0084] The completion waiting queue 240, which has received the data transfer completion CMP the same number of times as the number of multicasts, releases the area in memory 500C that held the data and expels the first entry (completion waiting information) from the completion waiting queue 240 (FIGS. 16(y) and 16(z)). Then, processing of the multicast message MSGd when the data is copied to memory 500C is completed.

[0085] By releasing the storage area of memory 500 when a data transfer completion CMP is written from all functions 400 that receive message MSG, all functions 400 can transfer data before memory 500 is released.

[0086] Fig. 17 shows another example of the operation of the information processing device 100 in Fig. 4. In Fig. 17, when there is room in the data storage section of function 300B, a multicast message MSGd is sent from function 300B to functions 400B and 400C. Because there is room in the data storage section of function 300B, the data to be processed by functions 400B and 400C is transferred sequentially from function 300B to functions 400B and 400C, respectively, without going through memory 500.

[0087] When transmitting a multicast message MSGd to the functions 400B and 400C, the message manager 200 stores completion waiting information d corresponding to the message MSGd in the completion waiting queue 240, regardless of whether there is room in the data holding section of the function 300B. As in Fig. 14, the message manager 200 sequentially rewrites AckAddr, which indicates the storage destination of the data transfer completion notification from the functions 400B and 400C, to the addresses CmpBase and CmpBase+1 of the completion waiting information held in the completion waiting queue 240.

[0088] 14, the message manager 200 sequentially sends the message MSGd' in which CmpAddr has been rewritten to CmpBase or CmpBase+1 to the functions 400B and 400C. When the message manager 200 receives data transfer completion notifications from both the functions 400B and 400C, it deletes the completion waiting information d held in the completion waiting queue 240.

[0089] Figure 18 shows the operation sequence of Figure 17. Detailed description of operations similar to those of Figure 11, Figure 15, or Figure 16 will be omitted. In Figure 18, the operations from when the message receiving unit 203 stores the message MSGd+ in the send queue 230B and when ACK is stored in the area indicated by AckAddr of the function 300B are the same as those of Figure 11. The operations from when the send queue 230B sets completion waiting information in the completion waiting queue 240 until the function 400C writes the data transfer completion CMP in the completion waiting queue 240 are the same as those of Figure 16, except that data is copied from the function 300B.

[0090] The completion waiting queue 240, which has received the data transfer completion CMP the same number of times as the number of multicasts, writes the data transfer completion CMP to the area in the function 300B indicated by the CmpAddr of the message MSGd (FIGS. 18(i) and 18(j)). The function 300B, which has received the data transfer completion CMP, releases the area in the data storage unit that held the data (FIG. 18(k)). Then, the completion waiting queue 240 expels the first entry (completion waiting information) from the completion waiting queue 240, and processing of the multicast message MSGd is completed if the data is not copied to memory 500C (FIG. 18(l)).

[0091] Figure 19 shows an example of the operation flow of message receiving unit 203 in Figure 6. Message receiving unit 203 repeatedly performs the operation shown in Figure 19. First, in step S100, message receiving unit 203 waits until it receives a message MSG, and when it receives the message MSG, it performs step S101. In step S101, message receiving unit 203 searches forwarding table 202 using the FlowID included in the received message MSG, and determines the transmission queue 230 in which to store the message MSG.

[0092] Next, in step S102, the message receiving unit 203 determines whether the transmission queue 230 determined in step S101 is full. If the transmission queue 230 is full, the message receiving unit 203 performs step S106, and if there is free space in the transmission queue 230, the message receiving unit 203 performs step S103.

[0093] In step S103, the message receiving unit 203 determines whether or not to copy data from the function 300 to the memory 500, and instructs the copy processing unit 204 to copy. An example of step S103 is shown in Fig. 20. Next, in step S104, the message receiving unit 203 adds CopyFlag and MemInfo to the message MSG, and stores it as a message MSG+ in the transmission queue 230 determined in step S101.

[0094] Next, in step S105, the message receiving unit 203 writes an ACK indicating that the message MSG has been accepted in the area of the function 300 indicated by the AckAddr included in the message MSG, and ends the operation shown in Fig. 19. Meanwhile, in step S106, the message receiving unit 203 writes a NAK indicating that the message MSG has not been accepted in the area of the function 300 indicated by the AckAddr included in the message MSG, and ends the operation shown in Fig. 19.

[0095] Fig. 20 shows an example of the operation flow of step S103 in Fig. 19. First, in step S1031, message receiving unit 203 determines whether or not to perform copying. If copying is to be performed, message receiving unit 203 sets CopyFlag to be added to message MSG to a value indicating that copying has been performed (for example, set to "1"). If copying is not to be performed, message receiving unit 203 sets CopyFlag to be added to message MSG to a value indicating that copying has not been performed (for example, reset to "0").

[0096] For example, the message receiving unit 203 determines to perform copying when one or more of the following determination conditions are met. (Decision condition 1) The predicted residence time of the message MSG exceeds the first time. (Determination condition 2) "Forced copy" is specified in the Info field of the message MSG. (Determination Condition 3) "Forced copy" is specified in the transmission queue 230. (Decision Condition 4) The size of the data to be copied is larger than the first size specified in the send queue 230.

[0097] The predicted value of the residence time of the message MSG may be calculated using equation (1). (Predicted retention time)=(Number of messages MSG stored in the send queue 230) / (Average speed) (1)

[0098] The number of messages MSG stored in the transmission queue 230 increases when the processing speed of the function 400 (receiving device) to which the messages MSG are sent is slow or when the load is high, causing messages MSG to accumulate in the transmission queue 230. The average speed indicates the amount of data sent from the transmission queue 230 to the function 400 per unit time. For example, when the amount of data to be processed is large and processing time is long, the processing speed slows down. Note that the average speed may also indicate the number of messages MSG sent from the transmission queue 230 to the function 400 per unit time.

[0099] By using formula (1), the message receiving unit 203 can easily predict the residence time of each message MSG stored in the transmission queue 230, and can quickly determine whether or not to copy data from the function 300 to the memory 500. Furthermore, by using determination conditions 1 to 4, the message receiving unit 203 can appropriately determine whether or not to copy data from the function 300 to the memory 500, regardless of whether the message MSG is multicast or single cast. As a result, it is possible to prevent the transmission of the message MSG from the function 300 from stagnating.

[0100] The data size determined in the determination condition 4 may be the data size corresponding to each message MSG, or may be the total data size corresponding to the multiple messages MSG stored in the transmission queue 230.

[0101] Copying data to memory 500 according to the judgment conditions can prevent delays in processing of other functions 400 due to delays in processing of a specific function 400. Note that if the message MSG is multicast, multiple functions 400 will receive the data, so the data may be copied to memory 500 with a larger bandwidth than the memory in the function 300.

[0102] In step S1032, if it is determined in step S1031 that copying is to be performed, the message receiving unit 203 performs step S1033. If it is determined that copying is not to be performed, the message receiving unit 203 ends the operation shown in Fig. 20 and proceeds to the operation of step S104 in Fig. 19. In step S1033, the message receiving unit 203 instructs the copy processing unit 204 to copy the data, ends the operation shown in Fig. 20, and proceeds to the operation of step S104 in Fig. 19.

[0103] Fig. 21 shows an example of the operation flow of the copy processing unit 204 in Fig. 6. First, in step S110, the copy processing unit 204 selects the memory 500 to which data is to be copied from the function 300. The copy processing unit 204 manages the selected memory 500 as MemInfo, and manages the top address of the area in which the data is stored in the selected memory 500 as DataAddr.

[0104] The copy processing unit 204 selects the memory 500 according to the following selection conditions: For example, the priority of selection conditions 1 to 4 may be increased in this order. (Selection condition 1) The memory 500 to which the data is to be copied is specified in the Info area of the message MSG. (Selection condition 2) The memory 500 to which the data is to be copied is specified in the transmission queue 230. (Selection condition 3) A preset default memory 500 is selected. (Selection Condition 4) If the selected memory 500 does not have enough storage capacity to copy the data, another memory that can copy the data is selected from the managed memories 500.

[0105] The copy processing unit 204 may select a memory 500 that is closest to the function 300 (for example, a memory 500 that can transfer data from the function 300 most quickly) in order to quickly release the data storage unit of the function 300 that sends the message MSG. The copy processing unit 204 may also select a memory 500 that is closest to the function 400 (for example, a memory 500 that can transfer data to the function 400 most quickly) in order to speed up the arrival time of data at the function 400. Furthermore, the copy processing unit 204 may select a memory 500 that has a relatively wide bandwidth. For example, if the message MSG is multicast, it is preferable to select a memory 500 with the widest bandwidth.

[0106] By selecting the memory 500 to copy data to in accordance with selection conditions 1 to 4, it is possible to quickly free up the storage area of the function 300 that holds the data to be copied to the memory 500. Alternatively, it is possible to quickly transfer the data to the function 400.

[0107] Next, in step S111, the copy processing unit 204 instructs the function 300 that sent the message MSG to copy the data to the memory 500. Next, in step S112, the copy processing unit 204 waits until it receives a data transfer completion notification from the function 300 that sent the message MSG, and if it receives the data transfer completion notification, it carries out step S113.

[0108] In step S113, the copy processing unit 204 writes a data transfer completion CMP to an area in the function 300 indicated by CmpAddr of the message MSG. Next, in step S114, the copy processing unit 204 writes the start address of an area in memory 500, which is the data copy destination, where the data is to be stored, to an area indicated by DataAddr of the message MSGc. Next, in step S115, the copy processing unit 204 notifies the message receiving unit 203 of MemInfo indicating memory 500C, which is the data copy destination, and ends the operation shown in FIG.

[0109] Fig. 22 shows an example of the operation flow of the message sending unit 206 of Fig. 6. The operation shown in Fig. 22 is repeatedly performed by sequentially selecting, for example, a plurality of transmission queues 230A, 230B, 230C identified by transmission queue number Q.

[0110] First, in step S120, the message sending unit 206 extracts the message MSG+ at the top of the transmission queue 230, which is indicated by the transmission queue number Q. Next, in step S121, the message sending unit 206 determines whether or not the message MSG+ is multicast, based on the setting of the transmission queue 230. Furthermore, the message sending unit 206 determines whether or not the data to be processed by the function 400 that is the destination of the message MSG+ has been copied to the memory 500, based on the CopyFlag of the message MSG+.

[0111] If the message MSG+ is multicast or the data has already been copied, the message sending unit 206 performs step S122, and if the message MSG+ is single-cast and the data has not been copied, the message sending unit 206 performs step S123. In step S122, the message sending unit 206 writes the completion waiting information (FIG. 7) into the entry of the completion waiting queue 240, and performs step S123.

[0112] Steps S123 to S126 are repeatedly performed for each destination number D of the message MSG+. For example, for a single-cast message MSG+, the destination number D is only "0," so the loop from steps S123 to S126 is performed only once. For a multicast message MSG+, the loop is performed the same number of times as the number of multicasts.

[0113] In step S123, if the message MSG+ is multicast or the data has already been copied, the message sending unit 206 performs step S124. If the message MSG+ is single-cast and the data has not been copied, the message sending unit 206 performs step S125. In step S124, the message sending unit 206 changes the CmpAddr of the message MSG+ to CmpBase+D of the completion waiting information held in the target entry in the completion waiting queue 240, and performs step S125.

[0114] In step S125, the message sending unit 206 deletes CopyFlag and MemInfo from the message MSG+ to generate a message MSG' and sends it to the destination function 400. Next, in step S126, the message sending unit 206 waits for a response ACK from the destination function 400 to which the message MSG' was sent. If the message sending unit 206 receives the response ACK, it means that the transmission of the message MSG' was successful, so in the case of multicast, the message sending unit 206 returns to step S123 and performs transmission processing to the next destination, and in the case of single cast, it exits from the transmission processing. If the message sending unit 206 does not receive a response ACK, it regards it as a NAK and performs step S125 again.

[0115] Fig. 23 shows an example of the operation flow of the completion waiting queue 240 in Fig. 6. The completion waiting queue 240 operates when data is copied to the memory 500 or when the message MSG is multicast.

[0116] First, in step S130, the completion waiting queue 240 waits for all completion flags Cmp corresponding to the destinations of the message MSG' to be written in the top entry of the completion waiting queue 240. When all completion flags Cmp have been written, the completion waiting queue 240 performs step S131. In step S131, the completion waiting queue 240 determines whether the CopyFlag of the top entry indicates copying, and if it indicates copying, performs step S132, and if it does not indicate copying, performs step S133.

[0117] In step S132, the completion waiting queue 240 releases the memory 500 indicated by MemInfo in the first entry, and then executes step S134. In step S133, the completion waiting queue 240 writes a data transfer completion CMP to the area of the function 300 indicated by CmpAddr in the first entry, and then executes step S134. In step S134, the completion waiting queue 240 expels the first entry, and then returns to step S130.

[0118] By providing a CopyFlag that can be referenced from the completion waiting queue 240, the completion waiting queue 240 can release the storage area of the memory 500 upon receiving data transfer completion notifications from all of the functions 400 during multicast with copying. On the other hand, the completion waiting queue 240 can release the storage area that holds data in the function 300 upon receiving data transfer completion notifications from all of the functions 400 during multicast without copying. Therefore, the storage area that holds data can be quickly released upon both the data transfer completion notification accompanying the data transfer from the function 300 to the memory 500 and the data transfer completion notification accompanying the data transfer from the memory 500 to the function 400.

[0119] As described above, this embodiment can also achieve the same effects as the above-described embodiments. For example, the message management device 200 copies data to be processed by the receiving function 400C, whose processing is stalled, from the sending function 300B to the memory 500, and causes the function 400 to acquire the data. This makes it possible to suppress delays in data processing by the other function 400B that receives data from the function 300. As a result, it is possible to suppress a decrease in the processing performance of the information processing device 100, which includes multiple functions 300, 400.

[0120] Furthermore, in this embodiment, when the message manager 200 receives a multicast message MSG, it stores completion waiting information in the completion waiting queue 240. The completion waiting information includes a completion flag Cmp into which a data transfer completion notification is written from each of the functions 400 that receive the message MSG. When the completion waiting queue 240 receives data transfer completion notifications from all of the functions 400 that receive the message MSG, it releases the storage area in the memory 500 that holds the data, and then expels the completion waiting information from the completion waiting queue 240. This allows all of the functions 400 that receive the message MSG to transfer their data before the memory 500 is released.

[0121] Before transmitting the multicast message MSG to each of the functions 400, the message sending unit 206 changes CmpAddr, which indicates the address of the area in the completion waiting information where the data transfer completion notification is written, to CmpBase, the address of each completion flag Cmp in the completion waiting information. This allows each function 400 to reference the CmpAddr area common to multiple functions 400 in the completion waiting information, and write the data transfer completion notification in a mutually different completion flag Cmp after transferring data from the memory 500.

[0122] A CopyFlag indicating whether data has been copied from the function 300 to the memory 500 is provided in the completion waiting information so that it can be referenced from the completion waiting queue 240. This allows the completion waiting queue 240 to release the storage area in the memory 500 upon receiving data transfer completion notifications from all of the functions 400 during multicast with copying. On the other hand, the completion waiting queue 240 can release the storage area in the function 300 that holds data upon receiving data transfer completion notifications from all of the functions 400 during multicast without copying. Therefore, the storage area in which data is held can be quickly released upon both the data transfer completion notification accompanying the data transfer from the function 300 to the memory 500 and the data transfer completion notification accompanying the data transfer from the memory 500 to the function 400.

[0123] During single cast with copy, when the copy processing unit 204 receives a data transfer completion notification from the function 300, it writes the data transfer completion CMP to the area in the function 300 indicated by the CmpAddr of the message MSG. This allows the storage area of the function 300B to be quickly released after the data transfer from the function 300 to the memory 500.

[0124] By using formula (1), the message receiving unit 203 can easily predict the residence time of each message MSG stored in the transmission queue 230, and can quickly determine whether or not to copy data from the function 300 to the memory 500. Furthermore, by using determination conditions 1 to 4, the message receiving unit 203 can appropriately determine whether or not to copy data from the function 300 to the memory 500, regardless of whether the message MSG is multicast or single cast. As a result, it is possible to prevent the transmission of the message MSG from the function 300 from stagnating.

[0125] The copy processing unit 204 selects the memory 500 to copy the data to according to selection conditions 1 to 4. This allows the storage area of the function 300 that holds the data to be copied to the memory 500 to be quickly released. Alternatively, the data can be quickly transferred to the function 400.

[0126] The features and advantages of the embodiments will be apparent from the above detailed description. It is intended that the claims encompass the features and advantages of the above-described embodiments without departing from the spirit and scope of the claims. Furthermore, any improvements and modifications will be readily apparent to those skilled in the art. Therefore, it is not intended that the scope of the inventive embodiments be limited to the above-described embodiments, and appropriate improvements and equivalents within the scope of the disclosed embodiments may be utilized. [Explanation of symbols]

[0127] 10. Information processing equipment 20 Data transfer control device 21 Receiving unit 22 Send Queue 23 Copy processing section 24 Judgment Department 25 Transmitter 30 Sending Device 40 Receiving Device 50 memory 100 Information processing device 110 CPU 120 memory 130 NIC 140 FPGA 150 GPU 170 Bus 200 Message Management Device 201 Input / Output Interface Unit 202 Forwarding Table 203 Message Receiving Unit 204 Copy processing section 205 Memory Management Unit 206 Message sending unit 205A, 205B management table 210(210A, 210B, 210C) input port 220 Router 230 (230A, 230B, 230C) Send Queue 240 Completion waiting queue 300 (300A, 300B) Function 400 (400A, 400B, 400C) Function 500 (500A, 500B, 500C) memory BLK Block Cmp completion flag DT data MSG, MSG+, MSG' Messages

Claims

1. a receiving unit that receives from a sending device a message including a destination that identifies a receiving device that retrieves and processes data from a storage area and an address that indicates a storage location of the data to be processed by the receiving device; a transmission queue for holding the messages received by the receiving unit; a copy processing unit that instructs the sending device to copy the data held in the sending device to a memory, and rewrites an address included in the message held in the transmission queue to an address indicating a storage location of the data in the memory based on the copy of the data from the sending device to the memory; a sending unit that sends the message held at the head of the sending queue to the receiving device indicated by the destination included in the message. Data transfer control device.

2. a determination unit that determines whether the message has been in the transmission queue for a period of time exceeding a first period of time; When the determination unit determines that the retention time exceeds the first time, the copy processing unit instructs the sending device to copy the data to memory, and based on the copying of the data from the sending device to the memory, rewrites an address included in the message held in the transmission queue to an address indicating a storage location of the data in the memory.

2. The data transfer control device according to claim 1.

3. a completion waiting queue in which completion waiting information is stored when the message is transmitted to a plurality of the receiving side devices by multicast; the completion waiting information includes a plurality of completion flags into which a completion notification is written when each of the plurality of receiving side devices copies the data from the storage area; When the completion notification is written to all of the plurality of completion flags, the completion waiting queue releases the storage area that holds the data and expels the completion waiting information from the completion waiting queue.

3. The data transfer control device according to claim 2.

4. the message includes a write address to which the receiving device writes the completion notification when the receiving device copies the data from the storage area; When the message is multicast, the transmitter rewrites the write address of the message to an address indicating the positions of the completion flags before transmitting the message to each of the plurality of receiving side devices.

4. The data transfer control device according to claim 3.

5. the completion waiting information includes a copy flag that is set when the waiting time exceeds the first time and is reset when the waiting time does not exceed the first time; The completion waiting queue releases the storage area of the memory that holds the data when the completion notification is written to all of the plurality of completion flags while the copy flag is set, and releases the storage area to the sending device that holds the data when the completion notification is written to all of the plurality of completion flags while the copy flag is reset.

4. The data transfer control device according to claim 3.

6. When the copy processing unit receives a notification of completion of copying the data to the memory from the sending device that transmitted the single-cast message, the copy processing unit releases the storage area to the sending device that holds the data.

3. The data transfer control device according to claim 2.

7. The determination unit determines the retention time as a value obtained by dividing the number of messages held in the transmission queue by the amount of data to be transmitted from the transmission queue to the receiving device per unit time.

7. The data transfer control device according to claim 2.

8. The determination unit determines the retention time as a value obtained by dividing the number of messages held in the transmission queue by the number of messages transmitted from the transmission queue to the receiving device per unit time.

7. The data transfer control device according to claim 2.

9. The message includes a data size of the data to be processed by the receiving device and additional information; The determination unit determines that the retention time will exceed the first time if the data size included in the message received by the receiving unit is larger than a first size, if the additional information includes a designation to forcibly copy the data to the memory, or if the transmission queue specifies a designation to forcibly copy the data to the memory.

7. The data transfer control device according to claim 2.

10. The copy processing unit selects, as the memory to which the data is to be copied, a memory that can transfer the data from the sending device most quickly, a memory that can transfer the data to the receiving device most quickly, or a memory that has the widest bandwidth.

7. The data transfer control device according to claim 1.

11. The message includes additional information; the copy processing unit, when the additional information specifies the memory to which the data is to be copied, or when the transmission queue specifies the memory to which the data is to be copied, selects the specified memory as the memory to which the data is to be copied; If the selected memory does not have enough storage capacity to copy the data, another memory to which the data can be copied is selected.

7. The data transfer control device according to claim 1.

12. a receiving device that retrieves and processes the data from the storage area; a sending device that sends a message including a destination that identifies the receiving device and an address that indicates a storage location of data to be processed by the receiving device; Memory and a data transfer control device that controls transfer of the message and the data from the sending device to the receiving device, The data transfer control device a receiving unit for receiving the message from the sending device; a transmission queue for holding the messages received by the receiving unit; a copy processing unit that instructs the sending device to copy the data held in the sending device to a memory, and rewrites an address included in the message held in the transmission queue to an address indicating a storage location of the data in the memory based on the copy of the data from the sending device to the memory; a sending unit that sends the message held at the head of the sending queue to the receiving device indicated by the destination included in the message. Information processing device.

Citation Information

Patent Citations

  • Data transfer method and memory managing device

    JP1997073412A

  • Serial interface controller and control method therefor

    JP1998069459A

  • Data transfer device, storage device controller, and method for controlling storage device controller

    JP2005165439A

  • Data transfer system, transmission device, reception device, data transfer method, transmission method, and reception method

    JP2012088753A