WO2014115250A1 - データ転送装置、データ転送方法およびデータ転送プログラム - Google Patents

データ転送装置、データ転送方法およびデータ転送プログラム Download PDF

Info

Publication number
WO2014115250A1
WO2014115250A1 PCT/JP2013/051220 JP2013051220W WO2014115250A1 WO 2014115250 A1 WO2014115250 A1 WO 2014115250A1 JP 2013051220 W JP2013051220 W JP 2013051220W WO 2014115250 A1 WO2014115250 A1 WO 2014115250A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
header
unit
credit value
output
Prior art date
Application number
PCT/JP2013/051220
Other languages
English (en)
French (fr)
Inventor
野尻隆宏
鵜飼昌樹
鵜飼恵美
Original Assignee
富士通株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 富士通株式会社 filed Critical 富士通株式会社
Priority to PCT/JP2013/051220 priority Critical patent/WO2014115250A1/ja
Publication of WO2014115250A1 publication Critical patent/WO2014115250A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter

Definitions

  • the present invention relates to a technique for controlling data transfer.
  • the transmission device When transferring a packet in a network connecting two devices, the data transfer device on the transmission side (hereinafter referred to as the transmission device) exceeds the capacity of the reception buffer of the data transfer device on the reception side (hereinafter also referred to as the reception device). There is also flow control for controlling the data size transmitted / received between transmitting / receiving devices so that packets are not transferred.
  • the reception flow control updating unit counts the size of the processed header and the size of the processed data based on the sizes of the header and the data included in the TLP output from the reception buffer.
  • the reception flow control update unit transmits the update flow control information to the counterpart device using the update flow control DLLP (UpdateFC DLLP).
  • update flow control DLLP UpdateFC DLLP
  • the transfer technique described above may not be applied to, for example, a data transfer apparatus that overtakes a previously received packet and processes a received packet later. For this reason, when the order of packet processing is changed, the data transfer throughput may be reduced.
  • a data transfer device described later in this specification aims to improve throughput in data transfer.
  • One of the data transfer devices disclosed in this specification includes a reception unit, a first storage unit, a second storage unit, a first count unit, a management unit, a second count unit, There is a data transfer device including three count units and a notification unit.
  • the receiving unit receives a packet including a header and data.
  • the first storage unit stores a header.
  • the second storage unit stores data.
  • the first count unit counts a header credit value indicating the number of headers output from the first storage unit.
  • the management unit releases the unused area when the oldest data, which is the data stored first, is output among the data stored in the second storage unit and the unused areas are continuous. Each time the second count unit releases the unused area, it counts the credit value of the data corresponding to the size of the released unused area.
  • the third count unit counts the size of the data output each time data is output from the second storage unit as a credit value of data for the unused area.
  • the notification unit displays the header credit value counted by the first count unit and the data credit value counted by the second count unit as the connection destination. To the device.
  • the data transfer apparatus described later in this specification has an effect of improving the throughput in data transfer.
  • the receiving device transfers the packet received from the transmitting device to an upper layer (such as an operating system) in response to a request.
  • the data transfer device is applied to, for example, a PCIe (PCI Express) root complex, a peripheral device (graphic card, disk drive, and external input / output card) and the like.
  • PCIe PCI Express
  • peripheral device graphics card, disk drive, and external input / output card
  • the receiving device determines whether the received packet is a notification packet for notifying a credit value or a communication packet for data communication. Then, when the received packet is a communication packet, the receiving device divides the communication packet into a header and data. When the received packet is a notification packet, the receiving device transmits the notification packet to the packet transmission unit via the credit management unit.
  • the receiving device stores the header and the data in the reception header storage unit and the reception data storage unit, respectively.
  • the receiving device Each time the receiving device outputs a header from the received header storage unit, it increments a credit value indicating the number of output headers. Also, the receiving device releases the unused area when the oldest data that is the first stored data is output and the unused areas are continuous among the data stored in the received data storage unit. .
  • the receiving device retrieves data from the received data storage unit and the data is not the oldest, or if the unused area becomes non-consecutive, the receiving device assigns the credit value of the data to the unused area but not to the credit. Count as the amount that is open.
  • the receiving device notifies the connection destination device of the credit value of the header and the credit value of the data when the unused area above the threshold is released. Then, the receiving device resets the amount in which the counted area is unused but the credit is not released.
  • the receiving device sets a threshold value for the data release amount, and notifies the transmitting device of the credit value of the header and the credit value of the data when releasing the data exceeding the threshold value.
  • the transmission frequency of the notification packet can be changed by adjusting the threshold value of the data release amount. Therefore, in the data transfer apparatus, the data transfer processing load can be reduced by adjusting the data release amount and reducing the transmission frequency of the notification packet within a range that does not reduce the data transfer throughput. Therefore, the data transfer apparatus can improve the data transfer throughput.
  • FIG. 1 is a diagram illustrating an example of a notification packet and a communication packet.
  • the data transfer apparatus uses credit-type flow control.
  • the size of the free area of the reception buffer of the reception device is notified to the transmission device as a credit value.
  • notification of the credit value from the receiving device to the transmitting device is performed by transmitting the notification packet 100 shown in FIG. 1 from the receiving device to the transmitting device.
  • the notification packet 100 includes a header credit value and a data credit value.
  • transmission / reception of the notification packet 100 between the data transfer apparatuses is performed using, for example, the same data communication line that transmits / receives the communication packet 110 for data communication.
  • the notification packet 100 may be transmitted and received between the data transfer apparatuses using a dedicated data communication line that transmits the notification packet 100 provided separately from the data communication line.
  • the packet header of the notification packet 100 includes information such as identification information for identifying the type of packet and a time stamp, for example.
  • the communication packet 110 includes a header and data as shown in FIG.
  • the header of the communication packet 110 includes, for example, information such as identification information for identifying the packet type and a time stamp.
  • the header of the communication packet 110 has a fixed length of 12 bytes or 16 bytes, for example.
  • the data of the communication packet 110 is, for example, a variable length from 0 bytes to 4 Kbytes.
  • the credit value of the header is set as one credit for one header (12 bytes or 16 bytes).
  • the variable length of data and the size of one credit of the credit value are examples, and other values may be set as appropriate.
  • notification packet 100 and the communication packet 110 a specific example of the notification packet 100 and the communication packet 110 is shown below by taking a data transfer device to which PCIe is applied as an example.
  • Update FC DLLP a packet called Update FC DLLP is used as a notification packet 100 for notification of a credit value.
  • Update FC DLLP has the same fields as the notification packet in FIG.
  • the packet header of Update FC DLLP includes identification information indicating that it is Update FC DLLP.
  • a TLP Transaction Layer Packet
  • the TLP is classified into three types according to the type. The first is a Posted request packet, which is a packet that makes a request that does not require a response from the receiving device, such as a memory write. The second is a non-posted request packet, which is a packet that makes a request that requires a response from the receiving device, such as a memory read. The third is a completion packet, which responds to a request from the transmitting device.
  • credit management is performed independently for each of the three types of TLPs.
  • the TLP packet header includes identification information indicating the type. In the following description, for simplification of description, a case where the communication packet 110 is one type will be described as an example. If there are a plurality of types of communication packets 110, credit management may be performed independently for each communication packet 110.
  • FIG. 2 is a block diagram showing an embodiment of the data transfer apparatus.
  • the data transfer apparatus 200 (reception device 200) illustrated in FIG. 2 includes a packet reception unit 201, a credit management unit 202, and a packet transmission unit 203.
  • the data transfer device 210 (transmission device 210) includes a packet reception unit 211, a credit management unit 212, and a packet transmission unit 213.
  • the data transfer apparatus 200 and the data transfer apparatus 210 can function as a transmission device and a reception device, respectively, corresponding to the packet flow situation of communication packets.
  • the data transfer device 200 functions as the reception device 200 and the data transfer device 210 functions as the transmission device 210.
  • the detailed configurations and functions of the packet receiving unit 201, the credit management unit 202, the packet transmission unit 203, the packet reception unit 211, the credit management unit 212, and the packet transmission unit 213 will be described with reference to FIGS. It will be described later.
  • the transmission device 210 and the reception device 200 are connected by a data communication line.
  • a serial interface is used as a data communication line.
  • the sending device 210 and the receiving device 200 initialize flow control before communicating with the data communication line.
  • the reception device 200 In the initialization of the flow control, for example, the reception device 200 notifies the transmission device 210 of the header credit value and the data credit value corresponding to the capacity of the reception buffer of the reception device 200 as the initial credit value.
  • each of the data transfer apparatus 200 and the data transfer apparatus 210 functions as a transmission / reception device, and exchanges a header credit value and a data credit value. Then, when the exchange of the initial credit value is completed between the data transfer device 200 and the data transfer device 210, the data transfer device 200 and the data transfer device 210 start data communication.
  • the initial credit value of the header credit value and the data credit value may be a credit value corresponding to the maximum value of the number of headers and the data amount that can be stored in the reception buffer, for example.
  • FIG. 3 is a block diagram showing an embodiment of the packet receiver.
  • the packet receiver 201 shown in FIG. 2 will be described.
  • the packet receiving unit 201 is described, but the packet receiving unit 211 has the same configuration.
  • the packet reception unit 201 includes a distribution unit 301, a division unit 302, a packet processing unit 303, a management unit 304, and a reception buffer 310.
  • the packet receiving unit 201 receives packets such as the notification packet 100 and the communication packet 110 from the transmission device 210.
  • the sorting unit 301 confirms the header of the packet received from the transmission device 210 and determines whether the received packet is the notification packet 100 or the communication packet 110.
  • packet types are distinguished by attaching tokens of STP (Start TLP) to TLP and SDP (Start DLLP) to DLLP.
  • the distribution unit 301 transmits the notification packet 100 to the packet transmission unit 203 via the credit management unit 202 when the received packet is the notification packet 100.
  • the distribution unit 301 outputs the communication packet 110 to the dividing unit 302.
  • the dividing unit 302 divides the header and data included in the communication packet 110 and outputs them to the reception buffer 310, respectively.
  • the reception buffer 310 includes a reception header storage unit 311 and a reception data storage unit 312.
  • the reception buffer 310 stores the header in the empty area of the reception header storage unit 311.
  • the reception buffer 310 stores data in an empty area of the reception data storage unit 312 when data is input from the dividing unit 302.
  • the free area means a storage area in which a newly received header can be stored.
  • the unused area refers to a storage area after data is output from the received data storage unit 312. The unused area does not store newly received data. The unused area becomes a free area by being released.
  • the reception header storage unit 311 is a storage area for storing a header.
  • the reception data storage unit 312 is a storage area for storing data.
  • the packet processing unit 303 extracts, from the reception header storage unit 311, a header necessary for synthesizing the requested communication packet 110 in response to an output request for the communication packet 110 from the upper layer. Further, the packet processing unit 303 extracts data corresponding to the extracted header from the received data storage unit 312.
  • the packet processing unit 303 outputs the header and data extracted from the reception header storage unit 311 and the reception data storage unit 312 from the reception header storage unit 311, the reception data storage unit 312, and the reception buffer 310, respectively. .
  • the packet processing unit 303 receives the header and data output from the reception buffer 310 and synthesizes the communication packet 110 requested from the upper layer. Then, the packet processing unit 303 transfers the combined communication packet 110 to the transfer destination device.
  • the packet processing unit 303 notifies the management unit 304 that the header is output from the reception header storage unit 311.
  • the packet processing unit 303 When the data is output from the reception data storage unit 312, the packet processing unit 303 notifies the management unit 304 that the data is output from the reception data storage unit 312. At this time, the packet processing unit 303 further notifies the management unit 304 of the data amount of the output data and the storage time information indicating the time when the output data is stored in the reception data storage unit 312. .
  • the data amount and time information may be stored in the received data storage unit 312 in association with the data, for example. Accordingly, the packet processing unit 303 may receive the data from the received data storage unit 312 and acquire the data amount and storage time information regarding the data and notify the management unit 304 of the data amount.
  • the packet processing unit 303 may notify the management unit 304 of an address (hereinafter referred to as a data address) indicating a storage area where the data output from the received data storage unit 312 is stored.
  • the data address may be stored in the received data storage unit 312 in association with the data, for example. Thereby, the packet processing unit 303 may acquire the data address at the same time as receiving the data from the received data storage unit 312 and notify the management unit 304 of the data address.
  • the management unit 304 Each time the management unit 304 is notified that the header is output from the reception header storage unit 311, the management unit 304 releases the storage area of the reception header storage unit 311 in which the output header is stored. Then, the management unit 304 outputs a header output notification indicating that the header has been output to the credit management unit 202. In the following description, releasing the storage area in which the output header is stored is also referred to as releasing the reception header storage unit 311.
  • the management unit 304 outputs a data output notification indicating that data has been output to the credit management unit 202 every time it is notified that the data has been output. Further, when the data amount of the output data is notified, the management unit 304 outputs an output data amount notification indicating the data amount of the output data to the credit management unit 202.
  • the management unit 304 determines whether or not the unused area is continuous, and if the unused area is continuous, the unused area is continued to the credit management unit 202. An unused continuous notification indicating that this is output.
  • the management unit 304 may determine whether or not the unused area is continuous, for example, by managing the storage area of the data stored in the reception data storage unit 312 by the management unit 304. More specifically, the management unit 304 has an address table of the storage area of the received data storage unit 312 and stores data and an address in association with each time data is stored. Whenever the data is output from the reception data storage unit 312, the management unit 304 recognizes the storage area corresponding to the output data address as an unused area, and the addresses of the unused areas are consecutive. It is determined that unused areas are continuous.
  • the management unit 304 each time the management unit 304 is notified that data has been output, the data output from the reception data storage unit 312 is first stored among the data stored in the reception data storage unit 312. It is determined whether or not it is the oldest data that has been recorded. At this time, when the data output from the received data storage unit 312 is the oldest data, the management unit 304 recognizes that the storage area of the oldest data has become an unused area. Further, when the data output from the received data storage unit 312 is the oldest data, the management unit 304 outputs the oldest data notification to the credit management unit 202.
  • the management unit 304 releases the unused area when the data output from the received data storage unit 312 is the oldest data and the unused areas are continuous.
  • releasing an unused area of the reception data storage unit 312 is also referred to as releasing the reception data storage unit 312.
  • the determination of the oldest data by the management unit 304 is performed by, for example, extracting the oldest data from the data remaining in the received data storage unit 312 after releasing the previous data, and storing the oldest data corresponding to the extracted oldest data. Obtain time information. Then, the management unit 304 outputs the oldest data when the storage time information notified simultaneously with the data output via the packet processing unit 303 matches the storage time information of the oldest data acquired in advance. It may be determined that it has been done.
  • the data is stored so that the previously stored data and the data address are continuous.
  • the management unit 304 extracts the oldest data from the data remaining in the received data storage unit 312 after releasing the previous data, and acquires the data address corresponding to the extracted oldest data.
  • the management unit 304 outputs the oldest data. You may judge.
  • the management unit 304 may assign the data address to the data stored in the received data storage unit 312, for example.
  • the management unit 304 uses, for example, a counter that is one bit larger than the number of data addresses set in the storage area of the reception data storage unit 312 in order to associate consecutive data addresses with data.
  • the management unit 304 adds the number of addresses by the counter according to the size of the data, and the value represented by the counter is the data data stored next. Assign as an address. For example, the counter may be incremented for each data size corresponding to one credit value. Then, when the data address reaches the upper limit, the management unit 304 may assign a virtual address to each data by inverting the most significant bit of the counter, and loop the data address. As described above, the management unit 304 can associate consecutive data addresses with each data.
  • the determination of the oldest data by the management unit 304 is not limited to the above method, and another method may be used.
  • FIG. 4 is a diagram for explaining the data flow of the received data storage unit.
  • the data flow of the reception data storage unit 312 will be described with reference to FIG.
  • FIG. 4A to 4C show the reception data storage unit 312 and the data stored in the reception data storage unit 312.
  • the reception data storage unit 312 stores data in the order received from the transmission device 210.
  • data 1 is the oldest data stored first
  • data 4 is the latest data stored last. That is, the received data storage unit 312 stores data in the order of data 1, data 2, data 3, and data 4.
  • the management unit 304 does not open the reception data storage unit 312. At this time, the storage area in which the data 2 and 3 are stored becomes an unused area.
  • the management unit 304 releases the received data storage unit 312 to make the storage area in which the data 1 to 3 are stored empty.
  • FIG. 5 is a block diagram showing an embodiment of the credit management unit.
  • the credit management unit 202 shown in FIG. 2 will be described with reference to FIG. In the following description, the credit management unit 202 is described, but the credit management unit 212 has the same configuration.
  • the credit management unit 202 includes a timer count unit 501, a timer comparison unit 502, an OR circuit 503, an adder 504, a selector 505, an unused amount count unit 506, an opening amount holding unit 507, an opening amount comparison unit 508, and an opening determination holding. Section 509, AND circuits 510, 512, 513, buffer circuit 511, reception header count section 514, reception data count section 515, transmission header count section 516, transmission data count section 517, and credit notification section 518.
  • the timer count unit 501 counts an elapsed time from when the transmitting device 210 is notified of the header credit value and the data credit value.
  • the timer count unit 501 is reset when the transmission device 210 is notified of the credit value of the header and the credit value of the data.
  • the timer comparison unit 502 stores a time threshold that is a threshold of the set elapsed time, and compares the elapsed time counted by the timer count unit 501 with the time threshold. When the elapsed time becomes equal to or greater than the time threshold, the timer comparison unit 502 notifies the logical sum circuit 503 that the elapsed time is equal to or greater than the time threshold. This notification may be output to the OR circuit 503 as a binary signal, for example. In the following description, various notifications may be similarly notified by binary signals. Note that the time threshold value may be determined by experiment so that the throughput of the data transfer apparatus 200 is improved.
  • the OR circuit 503 receives various notifications, for example. Then, the logical sum circuit 503 outputs a credit notification instruction to the packet transmission unit 203 and the credit notification unit 518 when any notification is input. When a credit notification instruction is input, the credit notification unit 518 outputs the header credit value and the data credit value stored in the reception header count unit 514 and the reception data count unit 515 to the packet transmission unit 203.
  • the adder 504 When the data amount notification is input from the packet receiving unit 201, the adder 504 adds the data amount indicated by the data amount notification and the data amount counted by the unused amount counting unit 506. Then, the adder 504 outputs the added data amount as an unused amount indicating the size of the unused area to the unused amount counting unit 506 via the selector 505. The unused amount may be counted as a credit value of data corresponding to the size of the unused amount.
  • the selector 505 outputs the unused amount input from the adder 504 to the unused amount counting unit 506.
  • the output from the logical product circuit 510 is input as a reset signal.
  • the selector 505 inputs 0 to the unused amount counting unit 506 and resets the unused amount counting unit 506.
  • the unused amount counting unit 506 When the data output notification is input from the packet receiving unit 201, the unused amount counting unit 506 outputs the unused amount counted to the adder 504, and the data amount of the data newly output from the adder 504 is added. Get used unused amount. Thereby, the unused amount counting unit 506 counts the unused amount.
  • the open amount holding unit 507 receives the notification from the logical product circuit 510 and is output from the adder 504.
  • the unused amount is acquired as the open amount. Note that that the oldest data notification and the unused continuous notification are input from the packet receiving unit 201 to the logical product circuit 510 indicate that the received data storage unit 312 has been released by the management unit 304.
  • the buffer circuit 511 delays the timing at which the reset signal input to the selector 505 resets the unused amount counting unit 506. Thereby, the release amount holding unit 507 acquires a value obtained by adding the output data amount to the unused amount counted by the unused amount counting unit 506 as the release amount.
  • the unused amount counting unit 506 is reset after the opening amount holding unit 507 acquires the opening amount.
  • the release amount may be counted as a credit value of data corresponding to the size of the release amount.
  • the data transfer apparatus 200 may include a synchronization circuit that synchronizes the open amount holding unit 507 and the unused amount count unit 506 in place of the buffer circuit 511. Accordingly, the release amount holding unit 507 may acquire a value obtained by adding the output data amount to the unused amount counted by the unused amount counting unit 506 as the release amount.
  • the opening amount comparison unit 508 stores an opening threshold value that is a set opening amount threshold value, and compares the opening amount counted by the opening amount holding unit 507 with the opening threshold value. Then, when the data storage unit is released above the release threshold, the release amount comparison unit 508 notifies the AND circuit 513 that the data storage unit is released above the release threshold. Note that the release threshold may be determined by experiment so that the throughput of the data transfer apparatus 200 is improved.
  • the release determination holding unit 509 stores received data when the oldest data notification and the unused continuous notification are input to the AND circuit 510 and the data output notification is input to the AND circuit 512 from the packet receiving unit 201. It is determined that the unit 312 is opened. Then, the release determination holding unit 509 notifies the AND circuit 513 that the received data storage unit 312 has been released. The notification that the reception data storage unit 312 has been released is held until a credit notification instruction is input from the OR circuit 503, and is reset when a credit notification instruction is input from the OR circuit 503.
  • the logical sum circuit 503 is notified that the data storage unit has been opened for the open threshold or more.
  • the reception header count unit 514 counts the number of headers output from the reception header storage unit 311. Then, in response to a request from the credit notification unit 518, the counted number of headers is output to the packet transmission unit 203 as a header credit value. For example, the reception header count unit 514 may increment the count value every time a header output notification is input.
  • the reception data count unit 515 counts a credit value corresponding to the size of the data output from the reception data storage unit 312. Then, in response to a request from the credit notification unit 518, the credit value of the counted data is output to the packet transmission unit 203. For example, when the reception data storage unit 312 is notified that the reception data storage unit 312 has been released, the reception data count unit 515 acquires the release amount from the release amount storage unit 507. As a result, the reception data counting unit 515 integrates the credit value corresponding to the release amount every time the reception data storage unit 312 is released.
  • the transmission header count unit 516 integrates the number of headers as a credit value each time the notification packet 100 is input from the packet reception unit 201, and outputs the accumulated header credit value to the packet transmission unit 203.
  • the transmission data counting unit 517 Each time the notification packet 100 is input from the packet receiving unit 201, the transmission data counting unit 517 accumulates the credit value corresponding to the data size and outputs the accumulated data credit value to the packet transmitting unit 203.
  • the credit notification unit 518 requests the reception header count unit 514 and the reception data count unit 515 to output a credit value.
  • the credit notification unit 518 causes the reception header count unit 514 to output the header credit value, causes the reception data count unit 515 to output the data credit value, and outputs each credit value to the packet transmission unit 203.
  • FIG. 6 is a block diagram showing an embodiment of the packet transmission unit.
  • the packet transmission unit 203 illustrated in FIG. 2 will be described with reference to FIG. In the following description, the packet transmission unit 203 is described, but the packet transmission unit 213 has the same configuration.
  • the packet transmission unit 203 includes a notification packet generation unit 601, a transmission packet storage unit 602, a transmission control unit 603, and a selector 604.
  • the notification packet generation unit 601 When a credit notification instruction, a header credit value, and a data credit value are input, the notification packet generation unit 601 generates a notification packet 100, and the generated notification packet 100 is sent to the data bus via the selector 604. Output to. Thus, the notification packet 100 is transmitted to the data transfer device 210 via the data bus, and the data transfer device 210 is notified of the header credit value and the data credit value.
  • the transmission packet storage unit 602 stores a temporarily input packet when a packet to be transmitted from the upper layer to the data transfer apparatus 210 is input.
  • the transmission control unit 603 When the header credit value and the data credit value included in the notification packet 100 received from the transmission device 210 are input, the transmission control unit 603 outputs a packet from the transmission packet storage unit 602 with each credit value as an upper limit. Let Then, the transmission control unit 603 inputs the packet output from the transmission packet storage unit 602 to the selector 604 and transmits the packet to the data transfer apparatus 210 via the data.
  • the selector 604 outputs the notification packet 100 input from the notification packet generation unit 601 and the communication packet 110 input from the transmission control unit 603 to the data bus.
  • the selector 604 has a function of preventing the output timing to the data bus between the notification packet 100 input from the notification packet generation unit 601 and the packet input from the transmission control unit 603 from overlapping. good.
  • FIGS. 7 and 8 are flowcharts showing the processing contents for counting credit values. With reference to FIGS. 7 and 8, the processing contents of header credit value counting and data credit value counting will be described.
  • the credit management unit 202 sets the unused amount count value to 0 (S701).
  • the packet reception unit 201 determines whether a header is output from the reception header storage unit 311 to the upper layer (S702).
  • the packet reception unit 201 determines that the header has been output from the reception buffer 310 to the upper layer (Yes in S702), the packet reception unit 201 releases the reception header storage unit 311 (S703), and outputs a header output notification to the credit management unit 202. To do.
  • the credit management unit 202 increments the header credit value (S704).
  • the credit management unit 202 determines whether or not the transfer of the packet from the transmission device 210 to the reception device 200 is completed (S705).
  • the credit management unit 202 determines that the packet transfer continues (No in S705), the credit management unit 202 executes the process of S702. If the credit management unit 202 determines that the packet transfer is finished (Yes in S705), the credit management unit 202 ends the series of processes. The credit management unit 202 ends the packet transfer when various notifications from the packet reception unit 201 are not input for a certain time or when a notification packet indicating the end of packet transfer is transmitted from the transmission device 210. You may determine that you did.
  • the packet reception unit 201 determines whether data is output from the reception data storage unit 312 to the upper layer (S706). .
  • the packet reception unit 201 determines that data is not output from the reception buffer 310 to the upper layer (No in S706), the packet reception unit 201 executes the process of S702.
  • the packet reception unit 201 determines that data is output from the reception buffer 310 (Yes in S706), the packet reception unit 201 outputs a data output notification and an output data amount notification to the credit management unit 202.
  • the credit management unit 202 adds the data amount indicated by the output data amount notification to the unused amount count value (S707).
  • the packet reception unit 201 determines whether the data output from the reception buffer 310 to the upper layer is the oldest data and whether unused areas are continuous (S708).
  • the packet reception unit 201 executes the processing of S702 when the data output from the reception buffer 310 to the upper layer is not the oldest data or the unused areas are not continuous (No in S708).
  • the packet reception unit 201 releases the reception data storage unit 312 (S709). . Then, the packet reception unit 201 outputs the oldest data notification and the unused continuous notification to the credit management unit 202.
  • the credit management unit 202 adds the unused amount to the count value of the data credit value (S801).
  • the credit management unit 202 determines whether or not the transfer of the packet from the transmission device 210 to the reception device 200 is completed (S802).
  • the credit management unit 202 determines whether to notify the data credit value (S803).
  • the credit management unit 202 determines to notify the data credit value (Yes in S803), the credit management unit 202 notifies the packet transmission unit 203 of the data credit value (S804), and executes the processing of S701.
  • credit management unit 202 determines not to notify the credit value of the data (No in S803), it executes the process of S701. If the credit management unit 202 determines that the packet transfer is finished (Yes in S802), the credit management unit 202 ends the series of processes.
  • FIG. 9 is a flowchart showing the processing contents for determining the output of the notification packet. With reference to FIG. 9, the processing content of the output determination of the notification packet 100 will be described.
  • the packet reception unit 201 determines whether or not to release the reception header storage unit 311 (S901).
  • the packet reception unit 201 When the reception header storage unit 311 is released (Yes in S901), the packet reception unit 201 outputs a header output notification to the credit management unit 202.
  • the credit management unit 202 When the header output notification is input from the packet reception unit 201, the credit management unit 202 notifies the packet transmission unit 203 of the header credit value and the data credit value (S902).
  • the credit management unit 202 determines whether or not the transfer of the packet from the transmission device 210 to the reception device 200 is completed (S906).
  • the credit management unit 202 determines that the packet transfer continues (No in S906), the credit management unit 202 executes the process of S901. If the credit management unit 202 determines that the packet transfer is completed (Yes in S906), the credit management unit 202 ends the series of processes.
  • the packet reception unit 201 determines whether or not to release the reception data storage unit 312 (S903).
  • the packet reception unit 201 outputs the oldest data notification and the unused continuous notification to the credit management unit 202 when the reception data storage unit 312 is released (Yes in S903).
  • the credit management unit 202 determines whether the data release amount is equal to or greater than the release threshold (S904).
  • the credit management unit 202 executes the process of S902 when the data release amount is equal to or greater than the release threshold.
  • the credit management unit 202 determines whether the elapsed time is equal to or greater than the time threshold. (S905).
  • the credit management unit 202 executes the process of S902 when the elapsed time is equal to or greater than the time threshold.
  • the credit management unit 202 executes the process of S906 when the elapsed time is less than the time threshold.
  • FIG. 10 is a sequence diagram illustrating processing details for notifying a credit value. With reference to FIG. 10, the process of notifying the credit value of the data transfer apparatus will be described.
  • the receiving device 200 notifies the transmitting device 210 of the initial value h of the header credit value H and the initial value N of the data credit value D. Then, the transmitting device 210 transmits a packet to the receiving device 200 until the notified credit value is consumed.
  • FIG. 10 (3) every time a header is output from the reception header storage unit 311, the reception device 200 releases the reception header storage unit 311, and sends the header credit value and the data credit value to the transmission device 210. Notice. In FIG. 10 (3), it is assumed that the reception data storage unit 312 is not opened. Therefore, in FIG. 10 (3), there is no change in the credit value of the data that the transmitting device 210 has.
  • FIG. 10 (4) shows the case where the receiving device 200 outputs the oldest data, the unused areas are continuous, and the data release amount becomes a value A that is equal to or greater than the release threshold.
  • the reception device 200 releases the reception data storage unit 312 and notifies the transmission device 210 of the header credit value and the data credit value. Since the notification of the header credit value and the data credit value at this time is triggered by the fact that the data release amount is equal to or greater than the release threshold, the header credit value of the transmission device 210 does not change. .
  • the data transfer apparatus sets a threshold value for the data release amount, and notifies the transmission device of the header credit value and the data credit value when the data release amount exceeds the threshold value.
  • the data transfer device can change the transmission frequency of the notification packet by adjusting the threshold value of the data release amount.
  • the data transfer apparatus can reduce the data transfer processing burden by adjusting the data release amount and reducing the transmission frequency of the notification packet within a range that does not reduce the data transfer throughput.
  • the data transfer device can reduce the data transfer processing load, it suppresses a decrease in throughput due to the data transfer processing load. Therefore, the data transfer apparatus can improve the data transfer throughput.
  • the data transfer apparatus overtakes the previously received packet, and when there is an overtaking of packet processing for processing the later received packet, the unused area is released when the unused area continues. Then, when the oldest data is output, the data transfer device makes the oldest data storage area and the unused area continuous with the oldest data storage area empty. Thereby, the data transfer device can store the data of the packet having a variable length in a continuous area in the buffer, and can easily manage the free area of the buffer.
  • the packet reception unit 201 releases the reception data storage unit 312 when the unused areas are continuous. However, when the oldest data is output, the packet reception unit 201 continues from the storage area of the oldest data. You may make it open
  • the data transfer apparatus 220 (not shown) according to the second embodiment, it is assumed that there is no overtaking process in which the order of packet processing changes. That is, the data transfer apparatus according to the second embodiment performs packet processing in the order in which the packets are received.
  • FIG. 11 is a block diagram illustrating an embodiment of the credit management unit.
  • the data transfer apparatus according to the second embodiment has a configuration in which the credit management unit 202 of the data transfer apparatus according to the first embodiment is replaced with a credit management unit 222. Therefore, in the following description, only the credit management unit 222 will be described.
  • the credit management unit 222 includes a reception header count unit 531, a reception data count unit 532, a transmission header count unit 533, a transmission data count unit 534, and a credit notification unit 535.
  • the reception header count unit 531 counts the number of headers output from the reception header storage unit 311. Then, in response to a request from the credit notification unit 535, the counted number of headers is output to the packet transmission unit 203 as a header credit value. For example, the reception header count unit 531 may increment the count value each time a header output notification is input from the packet transmission unit 203.
  • the reception data counting unit 532 counts a value corresponding to the size of the data output from the reception data storage unit 312. Then, in response to a request from the credit notification unit 535, the counted value is output to the packet transmission unit 203 as a credit value. For example, each time a data output notification and an output data amount notification are input from the packet transmission unit 203, the reception data counting unit 532 may count a value corresponding to the size of the data amount indicated by the output data amount notification.
  • the transmission header count unit 533 accumulates the number of headers as a credit value, and outputs the accumulated header credit value to the packet transmission unit 203.
  • the transmission data counting unit 534 Each time the notification packet 100 is input from the packet receiving unit 201, the transmission data counting unit 534 accumulates the credit value corresponding to the data size, and outputs the accumulated credit value of the data to the packet transmitting unit 203.
  • the credit notification unit 535 When the header output notification is input, the credit notification unit 535 requests the reception header count unit 531 and the reception data count unit 532 to output a credit value. Thus, the credit notification unit 535 causes the reception header count unit 531 to output the header credit value, the reception data count unit 532 to output the data credit value, and outputs each credit value to the packet transmission unit 203. In addition, when a header output notification is input, the credit notification unit 535 outputs a credit notification instruction to the packet transmission unit 203.
  • FIG. 12 is a sequence diagram for explaining the processing contents for notifying the credit value. With reference to FIG. 12, the process of notifying the credit value of the data transfer apparatus will be described.
  • the receiving device 200 notifies the transmitting device 210 of the initial value 10 of the header credit value H and the initial value 10 of the data credit value D. Then, the transmitting device 210 transmits a packet to the receiving device 200 until the notified credit value is consumed.
  • the reception device 200 since the header is output from the reception header storage unit 311, the reception device 200 notifies the transmission device 210 of the header credit value and the data credit value.
  • the receiving device 200 outputs data from the received data storage unit 312. At this time, the receiving device 200 does not notify the transmitting device 210 of the header credit value and the data credit value.
  • the data transfer apparatus when the header credit value is output, notifies the packet transmission unit 203 of the header credit value and the data credit value. Since the data transfer apparatus does not perform the notification process of the header credit value and the data credit value resulting from the data output, the data transfer processing load is suppressed, and the data transfer throughput is improved. be able to.
  • the packet transfer units 201 and 211, the credit management units 202 and 212, and the packet transmission units 203 and 213 included in the data transfer apparatuses 200, 210, and 220 according to the first embodiment and the second embodiment described above are provided with an FPGA (Field Programmable).
  • FPGA Field Programmable
  • LSI Large Scale Integration
  • ASIC Application Specific Integrated Circuit
  • ASSP Application Specific Standard Product
  • FIG. 13 is a block diagram showing an embodiment of the data transfer apparatus.
  • FIG. 13 is a block diagram of the information processing apparatus.
  • a configuration when the data transfer device according to the first embodiment and the second embodiment is realized by an information processing device will be described.
  • the data transfer device 210 includes a control circuit 1301, a storage device 1302, a reading device 1303, a recording medium 1304, a communication interface 1305 (communication I / F), and an input / output interface 1306 (input / output I / F). F) and a network 1307. Each component is connected by a bus 1300.
  • the control circuit 1301 controls the entire computer device.
  • the control circuit 1301 is, for example, a CPU, a multi-core CPU, an FPGA (Field Programmable Gate Array), a PLD (Programmable Logic Device), or the like.
  • the control circuit 1301 functions as a distribution unit 301, a division unit 302, a packet processing unit 303, and a management unit 304.
  • FIG. 3 the control circuit 1301 functions as a distribution unit 301, a division unit 302, a packet processing unit 303, and a management unit 304.
  • the control circuit 1301 includes a timer count unit 501, a timer comparison unit 502, an OR circuit 503, an adder 504, a selector 505, an unused amount count unit 506, an opening amount holding unit 507, an opening amount comparison unit 508, It functions as an open determination holding unit 509, AND circuits 510, 512, and 513, a buffer circuit 511, and a credit notification unit 518.
  • the control circuit 1301 functions as a notification packet generation unit 601, a transmission control unit 603, and a selector 604. Further, the control circuit 1301 functions as a credit notification unit 535 in FIG.
  • Storage device 1302 stores various data.
  • the storage device 1302 includes, for example, a memory such as a ROM (Read Only Memory) and a RAM (Random Access Memory), an HD (Hard Disk), and the like.
  • the storage device 1302 functions as a reception buffer 310 (including a reception header storage unit 311 and a reception data storage unit 312).
  • the storage device 1302 functions as a reception header count unit 514, a reception data count unit 515, a transmission header count unit 516, and a transmission data count unit 517.
  • the storage device 1302 functions as the transmission packet storage unit 602 in FIG.
  • the storage device 1302 functions as a reception header count unit 531, a reception data count unit 532, a transmission header count unit 533, and a transmission data count unit 534 in FIG.
  • the ROM stores programs such as a boot program.
  • the RAM is used as a work area for the control circuit 1301.
  • the HD stores an OS (Operating System), an application program, a program such as firmware, and various data.
  • the storage device 1302 of the data transfer apparatus includes a control circuit 1301 that includes a distribution unit 301, a division unit 302, a packet processing unit 303, a management unit 304, a timer count unit 501, a timer comparison unit 502, an OR circuit 503, and an adder.
  • control circuit 1301 that includes a distribution unit 301, a division unit 302, a packet processing unit 303, a management unit 304, a timer count unit 501, a timer comparison unit 502, an OR circuit 503, and an adder.
  • selector 505 selector 505, unused amount count unit 506, release amount holding unit 507, release amount comparison unit 508, release determination holding unit 509, AND circuits 510, 512, 513, buffer circuit 511, credit notification unit 518, notification packet
  • a program for causing the generation unit 601, the transmission control unit 603, the selector 604, and the credit notification unit 535 to function is stored.
  • the control circuit 1301 reads the data transfer program stored in the storage device 1302 into the RAM.
  • the control circuit 1301 operates by using the RAM as a work space, whereby the distribution unit 301, the division unit 302, the packet processing unit 303, the management unit 304, the timer count unit 501, the timer comparison unit 502, and the OR circuit 503. , Adder 504, selector 505, unused amount count unit 506, release amount holding unit 507, release amount comparison unit 508, release determination holding unit 509, AND circuits 510, 512, 513, buffer circuit 511, credit notification unit 518 , Function as a notification packet generation unit 601, a transmission control unit 603, a selector 604, and a credit notification unit 535.
  • the data transfer program may be stored in a server on the network 1307 as long as the control circuit 1301 is accessible via the communication interface 1305.
  • the HD is connected to the bus 1300 via an HDD (Hard Disk Drive).
  • HDD Hard Disk Drive
  • the HDD is controlled by the control circuit 1301 and data is read / written.
  • the reading device 1303 is controlled by the control circuit 1301 to read / write data on the removable recording medium 1304.
  • the reader 1303 is, for example, FDD (Floppy Disk Drive), CDD (Compact Disc Drive), DVDD (Digital Versatile Disk Drive), BDD (Blu-ray DiscUs: TradeDrivUs registered trademark). It is. Further, the reading device 1303 may read the data transfer program recorded on the recording medium 1304 and store it in the storage device 1302.
  • the recording medium 1304 stores various data. As an example, the recording medium 1304 stores a data transfer program. The recording medium 1304 is connected to the bus 1300 via the reading device 1303, and the control circuit 1301 controls the reading device 1303 to read / write data.
  • the recording medium 1304 is, for example, an FD (Floppy Disk), a CD (Compact Disc), a DVD (Digital Versatile Disk), a BD (Blu-ray Disk: registered trademark), and a flash memory.
  • the communication interface 1305 communicatively connects a computer device and another device via a network 1307 such as a LAN (Local Area Network), wireless communication, or the Internet.
  • the communication interface 1305 functions as a data communication line in FIG.
  • the input / output interface 1306 is connected to, for example, a keyboard, a mouse, a touch panel, and the like.
  • the input signal is output to the control circuit 1301 via the bus 1300.
  • the input / output interface 1306 outputs the signal to various connected devices.
  • a receiver for receiving a packet including a header and data A first storage for storing the header; A second storage for storing the data; A first count unit that counts a header credit value indicating the number of headers output from the first storage unit; Among the data stored in the second storage unit, the oldest data that is the first stored data is output, and when the unused area continues, a management unit that releases the unused area, A second count unit that counts a credit value of data corresponding to the size of the released unused area each time the unused area is released; A third count unit that counts a credit value of data corresponding to the size of the released unused area as a data release amount each time the unused area is released; When the data release amount counted by the third count unit becomes equal to or greater than a set threshold, the header credit value counted by the first count unit and the second count unit count A notifying unit for notifying a connection destination device of the credit value of the data that has been There is a data transfer device characterized
  • the management unit Each time the header is output from the first storage unit, the storage area of the first storage unit in which the header was stored is released,
  • the notification unit The data transfer device according to the first aspect, wherein when the storage area of the header is released, the credit value of the header and the credit value of the data are notified to a connection destination device.
  • a fourth count unit that counts an elapsed time since the previous notification of the credit value of the header and the credit value of the data to the connection destination device;
  • the notification unit The data according to the first or second aspect, wherein when the elapsed time becomes equal to or greater than a set threshold, the credit value of the header and the credit value of the data are notified to a connection destination device. There is a transfer device.
  • the third counting unit includes Any one of the first to third aspects, wherein the data release amount count value is reset when the notification unit notifies the connection destination device of the credit value of the header and the credit value of the data.
  • the data transfer apparatus described in one of them.
  • a receiver for receiving a packet including a header and data for receiving a packet including a header and data; A first storage for storing the header; A second storage for storing the data; A first count unit that counts a credit value of a header output from the first storage unit; A second counting unit for counting a credit value of data output from the second storage unit; A management unit that releases a storage area of the first storage unit in which the header is stored each time the header is output from the first storage unit; A notification unit that notifies the connection destination device of the credit value of the header and the credit value of the data when the storage area of the header is released;
  • a data transfer device characterized by comprising:
  • Receive a packet containing a header and data Storing the header in a first storage unit; Storing the data in a second storage unit; A header credit value representing the number of headers output from the first storage unit, Among the data stored in the second storage unit, when the oldest data that is the first stored data is output and the unused area is continuous, the unused area is released, Every time the unused area is released, the credit value of the data corresponding to the size of the released unused area is counted, Every time the unused area is released, the credit value of the data corresponding to the size of the released unused area is counted as a data release amount, There is a data transfer method characterized in that when the data release amount is equal to or greater than a set threshold, the credit value of the header and the credit value of the data are notified to a connection destination device.
  • the storage area of the first storage unit in which the header was stored is released.
  • the data transfer method according to the sixth aspect wherein when the storage area of the header is released, the credit value of the header and the credit value of the data are notified to a connection destination device.
  • Count the elapsed time from the previous notification of the credit value of the header and the credit value of the data to the connected device The data according to the sixth or seventh aspect, wherein when the elapsed time is equal to or greater than a set threshold, the credit value of the header and the credit value of the data are notified to a connection destination device. There is a transfer method.
  • the count value of the data release amount is reset when a credit value of the header and a credit value of the data are notified to a connection destination device.
  • Receive a packet containing a header and data Storing the header in a first storage unit; Storing the data in a second storage unit; Counting the credit value of the header output from the first storage unit, Counting the credit value of the data output from the second storage unit, Each time the header is output from the first storage unit, the storage area of the first storage unit in which the header was stored is released, There is a data transfer method characterized in that when the storage area of the header is released, the credit value of the header and the credit value of the data are notified to a connection destination device.
  • the header credit value indicating the number of the output headers is counted,
  • the oldest data that is the first stored data is output and the unused area is continuous, the unused area is released, Every time the unused area is released, the credit value of the data corresponding to the size of the released unused area is counted, Every time the unused area is released, the credit value of the data corresponding to the size of the released unused area is counted as a data release amount
  • the storage area where the header is stored is released,
  • the data according to the eleventh aspect wherein when the storage area of the header is released, the computer is caused to execute a process of notifying a connection destination device of the header credit value and the data credit value.
  • Count the elapsed time from the previous notification of the credit value of the header and the credit value of the data to the connected device When the elapsed time is equal to or greater than a set threshold, the computer is caused to execute a process of notifying a connection destination device of the header credit value and the data credit value.
  • a data transfer program described in the embodiment.
  • the eleventh to thirteenth aspects are characterized by causing the computer to execute a process of resetting the count value of the data release amount when the credit value of the header and the credit value of the data are notified to the connection destination device.
  • Notification packet 110 Communication packet 200
  • Data transfer device / reception device 201 211 Packet reception unit 202, 212, 222 Credit management unit 203, 213 Packet transmission unit 210
  • Data transfer device / transmission device 220 Data transfer device 301 Distribution unit 302 Division Unit 303
  • Packet processing unit 304 Management unit 310 Reception buffer 311 Reception header storage unit 312 Reception data storage unit 501 Timer count unit 502 Timer comparison unit 503 OR circuit 504 Adder 505 Selector 506 Unused amount count unit 507 Release amount holding unit 508 Opening amount comparison unit 509 Opening determination holding unit 510, 512, 513 AND circuit 511 Buffer circuit 514, 531 Reception header count unit 515, 532 Reception data count 516, 533 Transmission header count unit 517, 534 Transmission data count unit 518, 535 Credit notification unit 601 Notification packet generation unit 602 Transmission packet storage unit 603 Transmission control unit 604 Selector 1300 Bus 1301 Control circuit 1302 Storage device 1303 Reading device 1304 Recording medium 13

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

 データの転送におけるスループットを向上させる。データ転送装置において、受信ヘッダカウント部は、受信ヘッダ格納部から出力されるヘッダの数に対応するヘッダのクレジット値をカウントする。管理部は、受信データ格納部から出力されたデータが最初に格納された最古データのとき、最古データの格納領域から連続する未使用領域を開放する。受信データカウント部は、未使用領域を開放するごとに、開放した未使用領域のサイズに対応するデータのクレジット値をカウントする。未使用量カウント部は、受信データ格納部のうち、データが出力されたが開放できないサイズに対応するデータのクレジット値を未使用量としてカウントする。通知部は、データ開放量が設定された閾値以上となったとき、ヘッダのクレジット値と、データのクレジット値とを接続先の装置に通知する。

Description

データ転送装置、データ転送方法およびデータ転送プログラム
 本発明はデータの転送を制御する技術に関する。
 2つのデバイスを結ぶネットワークでパケットの転送を行なうとき、受信側のデータ転送装置(以下、受信デバイスともいう。)が持つ受信バッファの容量を超えて、送信側のデータ転送装置(以下、送信デバイスともいう。)がパケットを転送しないように、送受信デバイス間で送受信するデータサイズを制御するフロー制御がある。
 関連する技術として、下記のデータ処理装置が知られている。受信フローコントロール更新部は、受信バッファから出力されたTLPに含まれるヘッダおよびデータそれぞれのサイズに基づいて、処理済みのヘッダのサイズおよび処理済みのデータのサイズをそれぞれ計数する。処理済みのヘッダのサイズに対応するクレジット数が、ソフトウェアによって設定されるヘッダ用更新クレジット数に達した場合、あるいは処理済みのデータのサイズに対応するクレジット数が、ソフトウェアによって設定されるデータ用更新クレジット数に達した場合、受信フローコントロール更新部は、更新フローコントロール情報を、更新フローコントロールDLLP(UpdateFC DLLP)を用いて相手デバイスに送信する技術が知られている。(例えば、特許文献1)
特開2005-332250号公報
 前述した転送技術は、例えば、先に受信したパケットを追い越して、後に受信したパケットを処理するデータ転送装置に適用することができないことがある。このため、パケットの処理の順番が前後したときは、データ転送のスループットが低下するおそれがある。
 上述した問題に鑑み、本明細書で後述するデータ転送装置は、データの転送におけるスループットを向上させることを目的とする。
 本明細書で開示するデータ転送装置のひとつに、受信部と、第1の格納部と、第2の格納部と、第1のカウント部と、管理部と、第2のカウント部と、第3のカウント部と、通知部とを備えたデータ転送装置がある。受信部は、ヘッダとデータとを含むパケットを受信する。第1の格納部は、ヘッダを格納する。第2の格納部は、データを格納する。第1のカウント部は、第1の格納部から出力されるヘッダの数を表すヘッダのクレジット値をカウントする。管理部は、第2の格納部に格納されているデータの中で、最初に格納されたデータである最古データが出力され、かつ未使用領域が連続するとき、未使用領域を開放する。第2のカウント部は、未使用領域を開放するごとに、開放した未使用領域のサイズに対応するデータのクレジット値をカウントする。第3のカウント部は、第2の格納部からデータを出力するごとに出力したデータのサイズを未使用領域分のデータのクレジット値としてカウントする。通知部は、データ開放量が設定された閾値以上となったとき、第1のカウント部でカウントされたヘッダのクレジット値と、第2のカウント部でカウントされたデータのクレジット値とを接続先の装置に通知する。
 本明細書で後述するデータ転送装置は、データの転送におけるスループットを向上させるという効果を奏する。
通知パケットと通信パケットとの一実施例を示す図である。 データ転送装置の一実施例を示すブロック図である。 パケット受信部の一実施例を示すブロック図である。 受信データ格納部のデータフローを説明する図である。 クレジット管理部の一実施例を示すブロック図である。 パケット送信部の一実施例を示すブロック図である。 クレジット値をカウントする処理内容を示すフローチャートである。 クレジット値をカウントする処理内容を示すフローチャートである。 通知パケットの出力判定をする処理内容を示すフローチャートである。 クレジット値を通知する処理内容を説明するシーケンス図である。 クレジット管理部の一実施例を示すブロック図である。 クレジット値を通知する処理内容を説明するシーケンス図である。 データ転送装置の一実施例を示すブロック図である。
[実施形態1]
 実施形態1のデータ転送装置について説明する。
 受信デバイスは、送信デバイスから受信したパケットを、要求に応じて上位層(オペレーティングシステムなど)に転送する。データ転送装置は、例えば、PCIe(PCI Express)のルート・コンプレックスや、周辺装置(グラフィックカード、ディスク・ドライブおよび外部入出力カード)等に適用される。以下、受信デバイスが上位層にパケットを転送することをパケット処理という。
 受信デバイスは、パケットを受信すると、受信したパケットがクレジット値を通知する通知パケットであるか、データ通信用の通信パケットであるかを判定する。そして、受信デバイスは、受信したパケットが通信パケットであるとき、通信パケットをヘッダとデータとに分割する。なお、受信したパケットが通知パケットであるとき、受信デバイスは、クレジット管理部を介してパケット送信部に通知パケットを送信する。
 そして、受信デバイスは、ヘッダとデータとをそれぞれ、受信ヘッダ格納部と受信データ格納部とに格納する。
 受信デバイスは、受信ヘッダ格納部からヘッダを出力するごとに、出力したヘッダの数を示すクレジット値をインクリメントする。また、受信デバイスは、受信データ格納部に格納されているデータの中で、最初に格納されたデータである最古データが出力され、かつ未使用領域が連続するとき、未使用領域を開放する。
 受信デバイスは、未使用領域を開放するごとに、開放した未使用領域のサイズに対応するデータのクレジット値をカウントする。
 また、受信デバイスは、受信データ格納部からデータを取り出す際にそのデータが最古でなかった場合、または未使用領域が非連続になる場合に、データのクレジット値を領域は未使用だがクレジット未開放である量としてカウントする。
 受信デバイスは、閾値以上の未使用領域を開放するとき、ヘッダのクレジット値と、データのクレジット値とを接続先の装置に通知する。そして、受信デバイスは、カウントした領域は未使用だがクレジット未開放である量をリセットする。
 以上のように、受信デバイスは、データ開放量に閾値を設け、閾値以上のデータを開放するとき、送信デバイスにヘッダのクレジット値とデータのクレジット値とを通知する。データ転送装置では、データ開放量の閾値を調整することで、通知パケットの送信頻度を変更することができる。したがって、データ転送装置では、データ転送のスループットを低下させない範囲で、データ開放量を調整し、通知パケットの送信頻度を少なくすることにより、データ転送の処理負担を軽減することができる。よって、データ転送装置は、データ転送のスループットを向上することができる。
 図1は、通知パケットと通信パケットとの一実施例を示す図である。
 データ転送装置は、クレジット方式のフロー制御を用いる。
 クレジット方式のフロー制御では、受信デバイスが有する受信バッファの空き領域の大きさをクレジット値として送信デバイスに通知する。
 そして、受信デバイスから送信デバイスへのクレジット値の通知は、図1に示す通知パケット100を、受信デバイスから送信デバイスに送信することにより行なわれる。
 通知パケット100は、図1に示すように、ヘッダのクレジット値とデータのクレジット値とを含んでいる。また、データ転送装置間の通知パケット100の送受信は、例えば、データ通信用の通信パケット110を送受信するのと同じデータ通信線を用いて行われる。なお、データ転送装置間の通知パケット100の送受信は、データ通信線とは別に設けられた、通知パケット100を送信する専用のデータ通信線を用いても良い。
 また、通知パケット100のパケットヘッダには、例えば、パケットの種類を識別する識別情報やタイムスタンプなどの情報が含まれる。
 通信パケット110は、図1に示すようにヘッダとデータとを含む。
 通信パケット110のヘッダには、例えば、パケットの種類を識別する識別情報やタイムスタンプなどの情報が含まれる。通信パケット110のヘッダは、例えば、12byteまたは16byteの固定長である。通信パケット110のデータは、例えば、0byteから4Kbyteまでの可変長である。そして、ヘッダのクレジット値は、ヘッダひとつ(12byteまたは16byte)につき1クレジットとして設定される。また、データのクレジット値は、データ16byteにつき1クレジットとして設定される。すなわち、送信デバイスから受信デバイスに通信パケット110を送信するとき、送信デバイスは、ヘッダのクレジット値=1、データのクレジット値=データ量/16byte(端数繰上げ)だけ、クレジット値を消費する。なお、ヘッダの固定長の長さとクレジット値の1クレジットの大きさとは、一例であり、他の値を適宜設定しても良い。また、データの可変長の長さとクレジット値の1クレジットの大きさとは、一例であり、他の値を適宜設定しても良い。
 上記で説明した通知パケット100と、通信パケット110とをより明確にするために、PCIeが適用されたデータ転送装置を一例として、通知パケット100と、通信パケット110との具体例を以下に示す。
 PCIeでは、通知パケット100として、クレジット値の通知にはUpdate FC DLLPと呼ばれるパケットが用いられる。Update FC DLLPは、図1の通知パケットと同様のフィールドを有している。そして、Update FC DLLPのパケットヘッダには、Update FC DLLPであることを示す識別情報が含まれる。
 また、PCIeでは、通信パケット110として、TLP(Transaction Layer Packet)が用いられている。そして、TLPは、その種別により3種類に分別される。1つめは、Postedリクエストパケットであり、メモリライトなどのように、受信デバイスからの応答を必要としないリクエストを行なうパケットである。2つめは、Non‐postedリクエストパケットであり、メモリリードのように、受信デバイスから応答を必要とするリクエストを行なうパケットである。3つめは、Completionパケットであり、送信デバイスからのリクエストに対する応答を行なう。そして、データ転送装置では、3種類のTLPについて、それぞれ独立にクレジット管理が行われる。そして、TLPのパケットヘッダには、種別を示す識別情報が含まれる。以下の説明では、説明の簡単化のため、通信パケット110が1種類のときを例として説明する。なお、複数種類の通信パケット110があるときには、それぞれの通信パケット110について、独立にクレジット管理を行なうようにすれば良い。
 図2は、データ転送装置の一実施例を示すブロック図である。
 図2に示すデータ転送装置200(受信デバイス200)は、パケット受信部201、クレジット管理部202、およびパケット送信部203を有する。また、データ転送装置210(送信デバイス210)は、パケット受信部211、クレジット管理部212、およびパケット送信部213を有する。データ転送装置200、およびデータ転送装置210は、通信パケットのパケットフローの状況に対応し、それぞれ送信デバイス、および受信デバイスとして機能することができる。
 以下の説明においては、データ転送装置200が受信デバイス200、データ転送装置210が送信デバイス210として機能するものとして説明する。
 なお、パケット受信部201、クレジット管理部202、パケット送信部203、パケット受信部211、クレジット管理部212、およびパケット送信部213の詳細な構成、および機能に関しては、図3~図5を用いて後述する。
 送信デバイス210と受信デバイス200とは、データ通信線で接続される。なお、PCIeでは、例えば、データ通信線として、シリアルインターフェイスが用いられる。
 送信デバイス210と受信デバイス200とは、データ通信線で通信を行なう前に、フロー制御の初期化を行なう。
 フロー制御の初期化では、例えば、受信デバイス200から送信デバイス210へ、受信デバイス200が有する受信バッファの容量に応じたヘッダのクレジット値とデータのクレジット値とを初期クレジット値として通知する。
 このとき、データ転送装置200とデータ転送装置210とは、それぞれが送受信デバイスとして機能し、ヘッダのクレジット値とデータのクレジット値とを交換する。そして、データ転送装置200とデータ転送装置210との間で初期クレジット値の交換が完了すると、データ転送装置200とデータ転送装置210とは、データ通信を開始する。
 なお、ヘッダのクレジット値とデータのクレジット値との初期クレジット値は、例えば、受信バッファに格納できるヘッダの数とデータ量との最大値に対応するクレジット値としても良い。
 図3は、パケット受信部の一実施例を示すブロック図である。
 図3を参照して、図2に示すパケット受信部201について説明する。なお、以下の説明では、パケット受信部201の説明をするが、パケット受信部211も同様の構成である。
 パケット受信部201は、振分部301、分割部302、パケット処理部303、管理部304、および受信バッファ310を有する。
 パケット受信部201は、送信デバイス210から通知パケット100、および通信パケット110などのパケットを受信する。
 振分部301は、送信デバイス210から受信したパケットのヘッダを確認し、受信したパケットが通知パケット100であるか通信パケット110であるかを判定する。なお、PCIeにおいては、物理層で、TLPにSTP(Start TLP)、DLLPにSDP(Start DLLP)というトークンをつけることにより、パケットの種類を区別する。
 振分部301は、受信したパケットが通知パケット100であるとき、クレジット管理部202を介してパケット送信部203へ通知パケット100を送信する。
 また、振分部301は、受信したパケットが通信パケット110であるとき、分割部302へ通信パケット110を出力する。
 分割部302は、振分部301から通信パケット110が入力されると、通信パケット110に含まれるヘッダとデータとを分割して、それぞれ受信バッファ310に出力する。
 受信バッファ310は、受信ヘッダ格納部311、および受信データ格納部312を有する。
 受信バッファ310は、分割部302からヘッダが入力されると、受信ヘッダ格納部311の空き領域にヘッダを格納する。また、受信バッファ310は、分割部302からデータが入力されると受信データ格納部312の空き領域にデータを格納する。なお、空き領域とは、新たに受信したヘッダを格納できる格納領域のことを言う。ここで、未使用領域とは、受信データ格納部312からデータを出力した後の格納領域のことをいう。また、未使用領域は、新たに受信したデータを格納しない。そして、未使用領域は、開放されることによって空き領域となる。
 受信ヘッダ格納部311は、ヘッダを格納するための記憶領域である。
 受信データ格納部312は、データを格納するための記憶領域である。
 パケット処理部303は、上位層からの通信パケット110の出力要求に応じて、要求された通信パケット110の合成に必要なヘッダを受信ヘッダ格納部311から抽出する。また、パケット処理部303は、抽出したヘッダに対応するデータを受信データ格納部312から抽出する。
 そして、パケット処理部303は、受信ヘッダ格納部311と受信データ格納部312とから抽出したヘッダとデータとを、それぞれ受信ヘッダ格納部311と受信データ格納部312と(受信バッファ310)から出力させる。
 さらに、パケット処理部303は、受信バッファ310から出力されたヘッダとデータとを受け取り、上位層から要求された通信パケット110を合成する。そして、パケット処理部303は、合成した通信パケット110を転送先の装置へ転送する。
 また、パケット処理部303は、受信ヘッダ格納部311からヘッダが出力されると、管理部304に、受信ヘッダ格納部311からヘッダが出力させたことを通知する。
 パケット処理部303は、受信データ格納部312からデータが出力されると、管理部304に受信データ格納部312からデータが出力されたことを通知する。このとき、パケット処理部303は、さらに、出力されたデータのデータ量と、出力されたデータが受信データ格納部312に格納されたときの時刻を示す格納時刻情報とを管理部304に通知する。なお、データ量と時刻情報とは、例えば、受信データ格納部312にデータに関連付けて格納されていても良い。これにより、パケット処理部303は、受信データ格納部312からデータを受け取ると同時に、データに関するデータ量と格納時刻情報とを取得し、管理部304に通知しても良い。
 また、パケット処理部303は、受信データ格納部312から出力されたデータが格納されていた格納領域を示すアドレス(以下、データアドレスという。)を、管理部304に通知しても良い。なお、データアドレスは、例えば、受信データ格納部312にデータに関連付けて格納されていても良い。これにより、パケット処理部303は、受信データ格納部312からデータを受け取ると同時に、データアドレスを取得し、管理部304に通知しても良い。
 管理部304は、受信ヘッダ格納部311からヘッダが出力されたことを通知されるごとに、出力されたヘッダが格納されていた受信ヘッダ格納部311の格納領域を開放させる。そして、管理部304は、クレジット管理部202にヘッダが出力されたことを示すヘッダ出力通知を出力する。以下の説明において、出力されたヘッダが格納されていた格納領域を開放することを、受信ヘッダ格納部311を開放するとも言う。
 管理部304は、データが出力されたことを通知されるごとに、クレジット管理部202へデータが出力されたことを示すデータ出力通知を出力する。また、管理部304は、出力されたデータのデータ量が通知されると、出力されたデータのデータ量を示す出力データ量通知をクレジット管理部202へ出力する。
 さらに、管理部304は、データが出力されたことを通知されたとき、未使用領域が連続したか否かを判定し、未使用領域が連続すると、クレジット管理部202へ未使用領域が連続したことを示す未使用連続通知を出力する。
 なお、管理部304による未使用領域が連続するか否かの判定は、例えば、管理部304で受信データ格納部312が格納しているデータの格納領域を管理することにより行なわれても良い。より具体的には、管理部304は、受信データ格納部312の格納領域のアドレステーブルを持ち、データが格納されるごとに、データとアドレスとを関連付けてアドレステーブルに格納する。そして、管理部304は、受信データ格納部312からデータが出力されるごとに、出力されたデータのアドレスに対応する格納領域を未使用領域として認識し、各未使用領域のアドレスが連続するとき、未使用領域が連続していると判定する。
 また、管理部304は、データが出力されたことを通知されるごとに、受信データ格納部312から出力されたデータが、受信データ格納部312に格納されているデータの中で、最初に格納されたデータである最古データであるか否かを判定する。このとき、管理部304は、受信データ格納部312から出力されたデータが最古データであるとき、最古データの格納領域が未使用領域となったことを認識する。また、管理部304は、受信データ格納部312から出力されたデータが最古データであるとき、クレジット管理部202へ最古データ通知を出力する。
 そして、管理部304は、受信データ格納部312から出力されたデータが、最古データであり、かつ未使用領域が連続しているとき、未使用領域を開放する。以下の説明において、受信データ格納部312の未使用領域を開放することを、受信データ格納部312を開放するとも言う。
 なお、管理部304による最古データの判定は、例えば、前回のデータ開放後に、受信データ格納部312に残ったデータの中から、最古データを抽出し、抽出した最古データに対応する格納時刻情報を取得しておく。そして、管理部304は、パケット処理部303を介してデータの出力と同時に通知される格納時刻情報と、予め取得した最古のデータの格納時刻情報とが一致したとき、最古のデータが出力されたと判定しても良い。
 また、受信データ格納部312では、例えば、データを格納するとき、前回格納されたデータとデータアドレスが連続するように、データを格納する。管理部304は、前回のデータ開放後に、受信データ格納部312に残ったデータの中から、最古データを抽出し、抽出した最古データに対応するデータアドレスを取得しておく。そして、管理部304は、パケット処理部303を介してデータの出力と同時に通知されるデータアドレスと、予め取得した最古のデータのデータアドレスとが一致したとき、最古のデータが出力されたと判定しても良い。
 なお、受信データ格納部312に格納されるデータへのデータアドレスの割り当ては、例えば、管理部304が行なっても良い。この場合、管理部304は、連続したデータアドレスをデータに関連付けるため、例えば、受信データ格納部312の格納領域に設定されるデータアドレス数よりも、1ビット大きいカウンタを用いる。
 そして、管理部304は、受信データ格納部312にデータが格納されるごとに、データの大きさに応じて、カウンタによりアドレス数を加算し、カウンタの表す値を次に格納されたデータのデータアドレスとして割当てる。カウンタは、例えば、1つのクレジット値に対応するデータの大きさごとにインクリメントされると良い。そして、管理部304は、データアドレスが上限になったとき、カウンタの最上位ビットを反転させることにより、仮想的なアドレスを各データに割り当て、データアドレスをループさせると良い。以上により、管理部304は、連続したデータアドレスを各データに関連付けることができる。
 管理部304による最古データの判定は、上記の方法に限定されるものではなく別の方法を用いても良い。
 図4は、受信データ格納部のデータフローを説明する図である。
 図4を参照して、受信データ格納部312のデータフローを説明する。
 図4(a)~(c)は、受信データ格納部312と、受信データ格納部312に格納されているデータを示す。
 図4(a)に示すように、受信データ格納部312は、送信デバイス210から受信した順にデータを格納する。図4(a)では、データ1が最初に格納した最古データであり、データ4が最後に格納した最新データである。すなわち、受信データ格納部312には、データ1、データ2、データ3、データ4の順で各データが格納される。
 図4(b)に示すように、受信データ格納部312からデータ2、3が出力されたとき、最古データが出力されていないので、管理部304は、受信データ格納部312を開放しない。このとき、データ2、3が格納されていた格納領域は、未使用領域となる。
 図4(c)に示すように、データ2、3に続いて、最古データであるデータ1が開放されたとき、データ1の格納されていた格納領域も未使用領域となる。このとき、管理部304は、受信データ格納部312を開放し、データ1~3が格納されていた格納領域を空き領域にする。
 図5は、クレジット管理部の一実施例を示すブロック図である。
 図5を参照して、図2に示すクレジット管理部202について説明する。なお、以下の説明では、クレジット管理部202の説明をするが、クレジット管理部212も同様の構成である。
 クレジット管理部202は、タイマカウント部501、タイマ比較部502、論理和回路503、加算器504、セレクタ505、未使用量カウント部506、開放量保持部507、開放量比較部508、開放判定保持部509、論理積回路510、512、513、バッファ回路511、受信ヘッダカウント部514、受信データカウント部515、送信ヘッダカウント部516、送信データカウント部517、およびクレジット通知部518を有する。
 タイマカウント部501は、ヘッダのクレジット値と、データのクレジット値とを、送信デバイス210に通知したときからの経過時間をカウントする。また、タイマカウント部501は、ヘッダのクレジット値と、データのクレジット値とが、送信デバイス210に通知されたときにリセットされる。
 タイマ比較部502には、設定された経過時間の閾値である時間閾値が格納され、タイマカウント部501でカウントされた経過時間と時間閾値とを比較する。そして、タイマ比較部502は、経過時間が時間閾値以上となったとき、論理和回路503に経過時間が時間閾値以上になったことを通知する。この通知は、例えば、2値信号で論理和回路503に出力されても良い。また、以下の説明において、各種通知も同様に2値信号で通知されても良い。なお、時間閾値は、データ転送装置200のスループットが向上するように、実験によって決定しても良い。
 論理和回路503は、例えば、各種通知を受け取る。そして、論理和回路503は、いずれかの通知が入力されたとき、パケット送信部203と、クレジット通知部518へクレジット通知指示を出力する。クレジット通知部518は、クレジット通知指示が入力されると、受信ヘッダカウント部514および受信データカウント部515に格納されているヘッダのクレジット値とデータのクレジット値とをパケット送信部203に出力する。
 加算器504は、パケット受信部201からデータ量通知が入力されると、データ量通知が示すデータ量と、未使用量カウント部506でカウントされているデータ量を加算する。そして、加算器504は、加算したデータ量を未使用領域の大きさを示す未使用量として、セレクタ505を介して未使用量カウント部506に出力する。未使用量は、未使用量のサイズに対応するデータのクレジット値としてカウントされても良い。
 セレクタ505は、加算器504から入力される未使用量を、未使用量カウント部506に出力する。また、パケット受信部201から論理積回路510に最古データ通知と未使用連続通知が入力されたとき、論理積回路510からの出力がリセット信号として入力される。そして、セレクタ505は、リセット信号が入力されると、未使用量カウント部506に0を入力し、未使用量カウント部506をリセットする。
 未使用量カウント部506は、パケット受信部201からデータ出力通知が入力されると、加算器504にカウントした未使用量を出力し、加算器504から新たに出力されたデータのデータ量が加算された未使用量を取得する。これにより、未使用量カウント部506は、未使用量をカウントする。
 開放量保持部507は、パケット受信部201から論理積回路510に最古データ通知と未使用連続通知が入力されたときに、論理積回路510からの通知を受けて、加算器504から出力される未使用量を開放量として取得する。なお、パケット受信部201から論理積回路510に最古データ通知と未使用連続通知が入力されるとは、管理部304によって受信データ格納部312が開放されたことを示す。
 バッファ回路511は、セレクタ505に入力されるリセット信号が、未使用量カウント部506をリセットするタイミングを遅延させる。これにより、開放量保持部507は、未使用量カウント部506でカウントされた未使用量に、出力されたデータ量が加算された値を開放量として取得する。そして、未使用量カウント部506は、開放量保持部507が開放量を取得した後にリセットされる。開放量は、開放量のサイズに対応するデータのクレジット値としてカウントされても良い。なお、データ転送装置200では、バッファ回路511に代えて、開放量保持部507と未使用量カウント部506とを同期させる同期回路を備えても良い。これにより、開放量保持部507は、未使用量カウント部506でカウントされた未使用量に、出力されたデータ量が加算された値を開放量として取得しても良い。
 開放量比較部508には、設定された開放量の閾値である開放閾値が格納され、開放量保持部507でカウントされた開放量と開放閾値とを比較する。そして、開放量比較部508は、データ格納部が開放閾値以上開放されたとき、論理積回路513にデータ格納部が開放閾値以上開放されたことを通知する。なお、開放閾値は、データ転送装置200のスループットが向上するように、実験によって決定しても良い。
 開放判定保持部509は、パケット受信部201から最古データ通知と、未使用連続通知とが論理積回路510に入力され、かつデータ出力通知が論理積回路512に入力されると、受信データ格納部312が開放されたと判定する。すると、開放判定保持部509は、受信データ格納部312が開放されたことを論理積回路513に通知する。受信データ格納部312が開放されたことの通知は、論理和回路503からクレジット通知指示が入力されるまで保持され、論理和回路503からクレジット通知指示が入力されるとリセットされる。
 論理積回路513は、開放量比較部508からデータ格納部が開放閾値以上開放されたことが通知され、かつ開放判定保持部509から受信データ格納部312が開放されたことが通知されると、論理和回路503にデータ格納部が開放閾値以上開放されたことを通知する。
 受信ヘッダカウント部514は、受信ヘッダ格納部311から出力されたヘッダの数をカウントする。そして、クレジット通知部518からの要求に応じて、カウントしたヘッダの数をヘッダのクレジット値として、パケット送信部203に出力する。受信ヘッダカウント部514は、例えば、ヘッダ出力通知が入力されるごとに、カウント値をインクリメントすると良い。
 受信データカウント部515は、受信データ格納部312から出力されたデータのサイズに対応するクレジット値をカウントする。そして、クレジット通知部518からの要求に応じて、カウントしたデータのクレジット値を、パケット送信部203に出力する。受信データカウント部515は、例えば、開放判定保持部509から受信データ格納部312が開放されたことを通知されると、開放量保持部507から開放量を取得する。これにより、受信データカウント部515は、受信データ格納部312が開放されるごとに、開放量に対応するクレジット値を積算する。
 送信ヘッダカウント部516は、パケット受信部201から通知パケット100が入力されるごとに、ヘッダの数をクレジット値として積算し、積算したヘッダのクレジット値をパケット送信部203に出力する。
 送信データカウント部517は、パケット受信部201から通知パケット100が入力されるごとに、データのサイズに対応するクレジット値を積算し、積算したデータのクレジット値をパケット送信部203に出力する。
 クレジット通知部518は、論理和回路503からクレジット通知指示が入力されると、受信ヘッダカウント部514と受信データカウント部515とにクレジット値の出力を要求する。これにより、クレジット通知部518は、受信ヘッダカウント部514からヘッダのクレジット値を出力させ、受信データカウント部515からデータのクレジット値を出力させ、各クレジット値をパケット送信部203に出力する。
 図6は、パケット送信部の一実施例を示すブロック図である。
 図6を参照して、図2に示すパケット送信部203について説明する。なお、以下の説明では、パケット送信部203の説明をするが、パケット送信部213も同様の構成である。
 パケット送信部203は、通知パケット生成部601、送信パケット格納部602、送信制御部603、およびセレクタ604を有する。
 通知パケット生成部601は、クレジット通知指示と、ヘッダのクレジット値と、データのクレジット値とが入力されると、通知パケット100を生成し、生成した通知パケット100を、セレクタ604を介してデータバスに出力する。これにより、通知パケット100は、データバスを介してデータ転送装置210に送信され、データ転送装置210にヘッダのクレジット値とデータのクレジット値とが通知される。
 送信パケット格納部602は、上位層からデータ転送装置210に送信するパケットが入力されると、一時的に入力されたパケットを格納する。
 送信制御部603は、送信デバイス210から受信した通知パケット100に含まれるヘッダのクレジット値とデータのクレジット値とが入力されると、各クレジット値を上限として、送信パケット格納部602からパケットを出力させる。そして、送信制御部603は、送信パケット格納部602から出力されたパケットをセレクタ604に入力し、データスを介してデータ転送装置210に送信する。
 セレクタ604は、通知パケット生成部601から入力される通知パケット100と、送信制御部603から入力される通信パケット110とをそれぞれデータバスに出力する。セレクタ604は、例えば、通知パケット生成部601から入力される通知パケット100と、送信制御部603から入力されるパケットとの、データバスへの出力タイミングが重ならないようにする機能を有しても良い。
 図7、8は、クレジット値をカウントする処理内容を示すフローチャートである。
 図7、8を参照して、ヘッダのクレジット値のカウントと、データのクレジット値のカウントの処理内容を説明する。
 送信デバイス210から受信デバイス200へのパケットの転送が開始されると、クレジット管理部202は、未使用量のカウント値を0にする(S701)。
 そして、パケット受信部201は、受信ヘッダ格納部311から上位層にヘッダが出力されたか否かを判定する(S702)。
 パケット受信部201は、受信バッファ310から上位層にヘッダが出力されたと判定したとき(S702にてYes)、受信ヘッダ格納部311を開放し(S703)、ヘッダ出力通知をクレジット管理部202に出力する。
 クレジット管理部202は、受信バッファ310からヘッダ出力通知が入力されると、ヘッダのクレジット値をインクリメントする(S704)。
 そして、クレジット管理部202は、送信デバイス210から受信デバイス200へのパケットの転送が終了したか否かを判定する(S705)。
 クレジット管理部202は、パケットの転送が継続すると判定すると(S705にてNo)、S702の処理を実行する。クレジット管理部202は、パケットの転送が終了すると判定すると(S705にてYes)、一連の処理を終了する。なお、クレジット管理部202は、一定時間以上の間パケット受信部201からの各種通知が入力されない、または送信デバイス210からパケットの転送の終了を示す通知パケットが送信されたとき、パケットの転送が終了したと判定しても良い。
 パケット受信部201は、パケット受信部201からヘッダが出力されていないと判定したとき(S702にてNo)、受信データ格納部312から上位層にデータが出力されたか否かを判定する(S706)。
 パケット受信部201は、受信バッファ310から上位層にデータが出力されていないと判定したとき(S706にてNo)、S702の処理を実行する。
 パケット受信部201は、受信バッファ310からデータが出力されたと判定したとき(S706にてYes)、クレジット管理部202にデータ出力通知と出力データ量通知とを出力する。
 クレジット管理部202は、パケット受信部201からデータ出力通知と出力データ量通知とが入力されると、未使用量のカウント値に出力データ量通知が示すデータのデータ量を加算する(S707)。
 さらに、パケット受信部201は、受信バッファ310から上位層に出力されたデータが最古データであり、かつ未使用領域が連続したか否かを判定する(S708)。
 パケット受信部201は、受信バッファ310から上位層に出力されたデータが最古データでない、または未使用領域が連続しないとき(S708にてNo)、S702の処理を実行する。
 パケット受信部201は、受信バッファ310から上位層に出力されたデータが最古データであり、かつ未使用領域が連続するとき(S708にてYes)、受信データ格納部312を開放する(S709)。そして、パケット受信部201は、クレジット管理部202に最古データ通知と未使用連続通知とを出力する。
 図8を参照する。
 クレジット管理部202は、データクレジット値のカウント値に未使用量を加算する(S801)。
 そして、クレジット管理部202は、送信デバイス210から受信デバイス200へのパケットの転送が終了したか否かを判定する(S802)。
 クレジット管理部202は、パケットの転送が継続すると判定すると(S802にてNo)、データのクレジット値の通知を行なうか否かを判定する(S803)。
 クレジット管理部202は、データのクレジット値の通知を行なうと判定すると(S803にてYes)、データのクレジット値をパケット送信部203に通知(S804)し、S701の処理を実行する。
 クレジット管理部202は、データのクレジット値の通知を行なわないと判定すると(S803にてNo)、S701の処理を実行する。
 クレジット管理部202は、パケットの転送が終了すると判定すると(S802にてYes)、一連の処理を終了する。
 図9は、通知パケットの出力判定をする処理内容を示すフローチャートである。
 図9を参照して、通知パケット100の出力判定の処理内容を説明する。
 送信デバイス210から受信デバイス200へのパケットの転送が開始されたとき、パケット受信部201は、受信ヘッダ格納部311を開放するか否かを判定する(S901)。
 パケット受信部201は、受信ヘッダ格納部311を開放すると(S901にてYes)、ヘッダ出力通知をクレジット管理部202に出力する。
 クレジット管理部202は、パケット受信部201からヘッダ出力通知が入力されると、ヘッダのクレジット値およびデータのクレジット値をパケット送信部203に通知する(S902)。
 そして、クレジット管理部202は、送信デバイス210から受信デバイス200へのパケットの転送が終了したか否かを判定する(S906)。
 クレジット管理部202は、パケットの転送が継続すると判定すると(S906にてNo)、S901の処理を実行する。クレジット管理部202は、パケットの転送が終了すると判定すると(S906にてYes)、一連の処理を終了する。
 パケット受信部201は、受信ヘッダ格納部311からヘッダを出力しないとき(S901にてNo)、受信データ格納部312を開放するか否かを判定する(S903)。
 パケット受信部201は、受信データ格納部312を開放するとき(S903にてYes)、最古データ通知と未使用連続通知とをクレジット管理部202に出力する。
 クレジット管理部202は、最古データ通知と未使用連続通知とが入力されると、データ開放量が開放閾値以上であるか否かを判定する(S904)。
 クレジット管理部202は、データ開放量が開放閾値以上であるとき、S902の処理を実行する。
 受信データ格納部312を開放しない(S903にてNo)、またはデータ開放量が閾値未満のとき(S904にてNo)、クレジット管理部202は、経過時間が時間閾値以上であるか否かを判定する(S905)。
 クレジット管理部202は、経過時間が時間閾値以上であるとき、S902の処理を実行する。
 また、クレジット管理部202は、経過時間が時間閾値未満であるとき、S906の処理を実行する。
 図10は、クレジット値を通知する処理内容を説明するシーケンス図である。
 図10を参照して、データ転送装置のクレジット値を通知する処理を説明する。
 図10(1)において、受信デバイス200から、送信デバイス210にヘッダのクレジット値Hの初期値hと、データのクレジット値Dの初期値Nが通知される。すると、送信デバイス210は、通知された各クレジット値を消費するまでパケットを受信デバイス200に送信する。
 図10(2)において、送信デバイス210で消費されたデータのクレジット値Dが初期値Nになると、送信デバイス210から受信デバイス200への通信パケット110の送信は停止される。
 図10(3)において、受信デバイス200は、ヘッダが受信ヘッダ格納部311から出力されるごとに、受信ヘッダ格納部311を開放し、ヘッダのクレジット値とデータのクレジット値とを送信デバイス210に通知する。図10(3)では、受信データ格納部312が開放されていないものとする。したがって、図10(3)では、送信デバイス210が有するデータのクレジット値に変化がない。
 図10(4)では、受信デバイス200において、最古データが出力され、かつ未使用領域が連続し、さらにデータ開放量が開放閾値以上である値Aになったときを示す。このとき、受信デバイス200は、受信データ格納部312を開放し、送信デバイス210にヘッダのクレジット値とデータのクレジット値とを通知する。このときのヘッダのクレジット値とデータのクレジット値との通知は、データ開放量が開放閾値以上になったことをトリガとして行なわれているので、送信デバイス210が有するヘッダのクレジット値に変化がない。
 以上のように、実施形態1のデータ転送装置は、データ開放量に閾値を設け、データ開放量が閾値以上になったとき、送信デバイスにヘッダのクレジット値とデータのクレジット値とを通知する。そして、データ転送装置は、データ開放量の閾値を調整することにより、通知パケットの送信頻度を変更することができる。これにより、データ転送装置では、データ転送のスループットを低下させない範囲で、データ開放量を調整し、通知パケットの送信頻度を少なくすることにより、データ転送の処理負担を軽減することができる。
 また、データ転送装置は、データ転送の処理負担を軽減することができるので、データ転送の処理負担に起因するスループットの低下を抑制する。したがって、データ転送装置は、データ転送のスループットを向上することができる。
 さらに、データ転送装置は、先に受信したパケットを追い越して、後に受信したパケットを処理するパケット処理の追い越しがあるとき、未使用領域が連続したときに未使用領域を開放する。そして、データ転送装置は、最古データが出力されたとき、最古データの格納領域と、最古データの格納領域と連続する未使用領域を空き領域にする。これにより、データ転送装置は、可変長であるパケットのデータをバッファ内の連続した領域に格納することができ、バッファの空き領域の管理を容易にすることができる。
 上記の説明において、パケット受信部201では、未使用領域が連続しているときに、受信データ格納部312の開放を行なったが、最古データを出力したとき、最古データの格納領域から連続する未使用領域を開放するようにしても良い。これにより、データ転送装置では、最古データが出力されるごとにデータ開放量をカウントすることができるので、開放閾値とデータ開放量との比較をより詳細に行なうことができる。よって、データ転送装置は、受信データ格納部312の格納領域をより有効に活用することができる。したがって、データ転送装置は、受信データ格納部312の格納領域を小さくすることができる。
[実施形態2]
 実施形態2のデータ転送装置について説明する。
 実施形態2のデータ転送装置220(図示なし)では、パケットの処理の順番が前後する追い越し処理がないものとする。すなわち、実施形態2のデータ転送装置は、パケットを受信した順番にパケット処理をする。
 図11は、クレジット管理部の一実施例を示すブロック図である。
 実施形態2のデータ転送装置は、実施形態1のデータ転送装置のクレジット管理部202をクレジット管理部222に置き換えた構成である。したがって、以下の説明では、クレジット管理部222についてのみ説明する。
 クレジット管理部222は、受信ヘッダカウント部531、受信データカウント部532、送信ヘッダカウント部533、送信データカウント部534、クレジット通知部535を有する。
 受信ヘッダカウント部531は、受信ヘッダ格納部311から出力されたヘッダの数をカウントする。そして、クレジット通知部535からの要求に応じて、カウントしたヘッダの数をヘッダのクレジット値として、パケット送信部203に出力する。受信ヘッダカウント部531は、例えば、ヘッダ出力通知がパケット送信部203から入力されるごとに、カウント値をインクリメントすると良い。
 受信データカウント部532は、受信データ格納部312から出力されたデータのサイズに対応する値をカウントする。そして、クレジット通知部535からの要求に応じて、カウントした値をクレジット値として、パケット送信部203に出力する。受信データカウント部532は、例えば、データ出力通知と出力データ量通知とがパケット送信部203から入力されるごとに、出力データ量通知が示すデータ量のサイズに対応する値をカウントすると良い。
 送信ヘッダカウント部533は、パケット受信部201から通知パケット100が入力されるごとに、ヘッダの数をクレジット値として積算し、積算したヘッダのクレジット値をパケット送信部203に出力する。
 送信データカウント部534は、パケット受信部201から通知パケット100が入力されるごとに、データのサイズに対応するクレジット値を積算し、積算したデータのクレジット値をパケット送信部203に出力する。
 クレジット通知部535は、ヘッダ出力通知が入力されると、受信ヘッダカウント部531と受信データカウント部532とにクレジット値の出力を要求する。これにより、クレジット通知部535は、受信ヘッダカウント部531からヘッダのクレジット値を出力させ、受信データカウント部532からデータのクレジット値を出力させ、各クレジット値をパケット送信部203に出力する。また、クレジット通知部535は、ヘッダ出力通知が入力されると、クレジット通知指示をパケット送信部203に出力する。
 図12は、クレジット値を通知する処理内容を説明するシーケンス図である。
 図12を参照して、データ転送装置のクレジット値を通知する処理を説明する。
 図12(1)において、受信デバイス200から、送信デバイス210にヘッダのクレジット値Hの初期値10と、データのクレジット値Dの初期値10とが通知される。すると、送信デバイス210は、通知された各クレジット値を消費するまでパケットを受信デバイス200に送信する。
 図12(2)、(4)において、受信デバイス200は、ヘッダが受信ヘッダ格納部311から出力されたので、ヘッダのクレジット値と、データのクレジット値とを送信デバイス210に通知する。
 図12(3)、(5)において、受信デバイス200は、データが受信データ格納部312から出力されたものとする。このとき、受信デバイス200は、ヘッダのクレジット値と、データのクレジット値とを送信デバイス210に通知しない。
 以上のように、実施形態2のデータ転送装置は、ヘッダのクレジット値が出力されたとき、ヘッダのクレジット値と、データのクレジット値とをパケット送信部203に通知する。そして、データ転送装置は、データの出力に起因するヘッダのクレジット値と、データのクレジット値との通知処理を行なわないので、データの転送の処理負担を抑制し、データの転送におけるスループットを向上させることができる。
 上述した実施形態1、および実施形態2のデータ転送装置200、210、220が有する、パケット受信部201、211、クレジット管理部202、212、およびパケット送信部203、213には、FPGA(Field Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)、およびASSP(Application Specific Standard Product)などのLSI(Large Scale Integration)が用いられる。
 図13は、データ転送装置の一実施例を示すブロック図である。
 図13は、情報処理装置のブロック図である。以下、実施形態1、および実施形態2のデータ転送装置を情報処理装置で実現するときの構成について説明する。
 図13において、データ転送装置210は、制御回路1301と、記憶装置1302と、読取装置1303と、記録媒体1304と、通信インターフェイス1305(通信I/F)と、入出力インターフェイス1306(入出力I/F)と、ネットワーク1307と、を備えている。また、各構成要素は、バス1300により接続されている。
 制御回路1301は、コンピュータ装置全体の制御をする。そして、制御回路1301は、例えば、CPU、マルチコアCPU、FPGA(Field Programmable Gate Array)およびPLD(Programmable Logic Device)などである。制御回路1301は、図3において、振分部301、分割部302、パケット処理部303、および管理部304として機能する。制御回路1301は、図5において、タイマカウント部501、タイマ比較部502、論理和回路503、加算器504、セレクタ505、未使用量カウント部506、開放量保持部507、開放量比較部508、開放判定保持部509、論理積回路510、512、513、バッファ回路511、およびクレジット通知部518として機能する。制御回路1301は、図6において、通知パケット生成部601、送信制御部603、およびセレクタ604として機能する。さらに、制御回路1301は、図11において、クレジット通知部535として機能する。
 記憶装置1302は、各種データを記憶する。そして、記憶装置1302は、例えば、ROM(Read Only Memory)およびRAM(Random Access Memory)などのメモリや、HD(Hard Disk)などで構成される。そして、記憶装置1302は、図3において、受信バッファ310(受信ヘッダ格納部311、および受信データ格納部312を含む。)として機能する。記憶装置1302は、図5において、受信ヘッダカウント部514、受信データカウント部515、送信ヘッダカウント部516、および送信データカウント部517として機能する。記憶装置1302は、図6において、送信パケット格納部602として機能する。さらに、記憶装置1302は、図11において、受信ヘッダカウント部531、受信データカウント部532、送信ヘッダカウント部533、および送信データカウント部534として機能する。
 また、ROMは、ブートプログラムなどのプログラムを記憶している。RAMは、制御回路1301のワークエリアとして使用される。HDは、OS(Operating System)、アプリケーションプログラム、ファームウェアなどのプログラム、および各種データを記憶している。
 また、データ転送装置の記憶装置1302は、制御回路1301を振分部301、分割部302、パケット処理部303、管理部304、タイマカウント部501、タイマ比較部502、論理和回路503、加算器504、セレクタ505、未使用量カウント部506、開放量保持部507、開放量比較部508、開放判定保持部509、論理積回路510、512、513、バッファ回路511、クレジット通知部518、通知パケット生成部601、送信制御部603、およびセレクタ604、およびクレジット通知部535として機能させるためのプログラムが記憶する。
 そして、データ転送を開始するとき、制御回路1301は、記憶装置1302に記憶されたデータ転送プログラムをRAMに読み出す。これにより、制御回路1301は、RAMをワークスペースとして動作することにより、振分部301、分割部302、パケット処理部303、管理部304、タイマカウント部501、タイマ比較部502、論理和回路503、加算器504、セレクタ505、未使用量カウント部506、開放量保持部507、開放量比較部508、開放判定保持部509、論理積回路510、512、513、バッファ回路511、クレジット通知部518、通知パケット生成部601、送信制御部603、およびセレクタ604、およびクレジット通知部535として機能する。なお、データ転送プログラムは、制御回路1301が通信インターフェイス1305を介してアクセス可能であれば、ネットワーク1307上のサーバに記憶されていても良い。
 また、記憶装置1302がHDである場合、HDは、HDD(Hard Disk Drive)を介してバス1300に接続される。そして、HDは、HDDが制御回路1301に制御され、データのリード/ライトが行なわれる。
 読取装置1303は、制御回路1301に制御され、着脱可能な記録媒体1304のデータのリード/ライトを行なう。そして、読取装置1303は、例えば、FDD(Floppy Disk Drive)、CDD(Compact Disc Drive)、DVDD(Digital Versatile Disk Drive)、BDD(Blu-ray Disk Drive:登録商標)およびUSB(Universal Serial Bus)などである。また、読取装置1303は、記録媒体1304に記録されたデータ転送プログラムを読み出し、記憶装置1302に記憶しても良い。
 記録媒体1304は、各種データを保存する。一例として、記録媒体1304は、データ転送プログラムを保存する。そして、記録媒体1304は、読取装置1303を介してバス1300に接続され、制御回路1301が読取装置1303を制御することにより、データのリード/ライトが行なわれる。また、記録媒体1304は、例えば、FD(Floppy Disk)、CD(Compact Disc)、DVD(Digital Versatile Disk)、BD(Blu-ray Disk:登録商標)、およびフラッシュメモリなどである。
 通信インターフェイス1305は、LAN(Local Area Network)、無線通信、またはインターネットなどのネットワーク1307を介してコンピュータ装置と他の装置とを通信可能に接続する。そして、通信インターフェイス1305は、図2において、データ通信線として機能する。
 入出力インターフェイス1306は、例えば、キーボード、マウス、およびタッチパネルなどと接続され、接続された装置から各種情報を示す信号が入力されると、バス1300を介して入力された信号を制御回路1301に出力する。また、入出力インターフェイス1306は、制御回路1301から出力された各種情報を示す信号がバス1300を介して入力されると、接続された各種装置にその信号を出力する。
 他の実施例を以下に述べる。
 第1の態様として、
 ヘッダとデータとを含むパケットを受信する受信部と、
 前記ヘッダを格納する第1の格納部と、
 前記データを格納する第2の格納部と、
 前記第1の格納部から出力されるヘッダの数を表すヘッダのクレジット値をカウントする第1のカウント部と、
 前記第2の格納部に格納されているデータの中で、最初に格納されたデータである最古データが出力され、かつ未使用領域が連続するとき、未使用領域を開放する管理部と、
 前記未使用領域を開放するごとに、前記開放した未使用領域のサイズに対応するデータのクレジット値をカウントする第2のカウント部と、
 前記未使用領域を開放するごとに、前記開放した未使用領域のサイズに対応するデータのクレジット値をデータ開放量としてカウントする第3のカウント部と、
 前記第3のカウント部でカウントされた前記データ開放量が設定された閾値以上となったとき、前記第1のカウント部でカウントされた前記ヘッダのクレジット値と、前記第2のカウント部でカウントされた前記データのクレジット値とを接続先の装置に通知する通知部と、
 を備えることを特徴とするデータ転送装置がある。
 第2の態様として、
 前記管理部は、
 前記第1の格納部から前記ヘッダが出力されるごとに、前記ヘッダが格納されていた前記第1の格納部の格納領域を開放し、
 前記通知部は、
 前記ヘッダの格納領域を開放したとき、前記ヘッダのクレジット値と、前記データのクレジット値とを接続先の装置に通知する
 ことを特徴とする第1の態様に記載のデータ転送装置がある。
 第3の態様として、
 前記ヘッダのクレジット値と、前記データのクレジット値とを、接続先の装置に前回通知したときからの経過時間をカウントする第4のカウント部を備え、
 前記通知部は、
 前記経過時間が設定された閾値以上となったとき、前記ヘッダのクレジット値と、前記データのクレジット値とを接続先の装置に通知する
 ことを特徴とする第1または2の態様に記載のデータ転送装置がある。
 第4の態様として、
 前記第3のカウント部は、
 前記通知部が前記ヘッダのクレジット値と、前記データのクレジット値とを接続先の装置に通知したとき、前記データ開放量のカウント値をリセットする
 ことを特徴とする第1~3の態様のいずれか一つに記載のデータ転送装置がある。
 第5の態様として、
 ヘッダとデータとを含むパケットを受信する受信部と、
 前記ヘッダを格納する第1の格納部と、
 前記データを格納する第2の格納部と、
 前記第1の格納部から出力されるヘッダのクレジット値をカウントする第1のカウント部と、
 前記第2の格納部から出力されるデータのクレジット値をカウントする第2のカウント部と、
 前記第1の格納部から前記ヘッダが出力されるごとに、前記ヘッダが格納されていた前記第1の格納部の格納領域を開放する管理部と、
 前記ヘッダの格納領域を開放したとき、前記ヘッダのクレジット値と、前記データのクレジット値とを接続先の装置に通知する通知部と、
 を備えることを特徴とするデータ転送装置がある。
 第6の態様として、
 ヘッダとデータとを含むパケットを受信し、
 前記ヘッダを第1の格納部に格納し、
 前記データを第2の格納部に格納し、
 前記第1の格納部から出力されるヘッダの数を表すヘッダのクレジット値をカウントし、
 前記第2の格納部に格納されているデータの中で、最初に格納されたデータである最古データが出力され、かつ未使用領域が連続するとき、前記未使用領域を開放し、
 前記未使用領域を開放するごとに、前記開放した未使用領域のサイズに対応するデータのクレジット値をカウントし、
 前記未使用領域を開放するごとに、前記開放した未使用領域のサイズに対応するデータのクレジット値をデータ開放量としてカウントし、
 前記データ開放量が設定された閾値以上となったとき、前記ヘッダのクレジット値と、前記データのクレジット値とを接続先の装置に通知する
 ことを特徴とするデータ転送方法がある。
 第7の態様として、
 前記第1の格納部から前記ヘッダが出力されるごとに、前記ヘッダが格納されていた前記第1の格納部の格納領域を開放し、
 前記ヘッダの格納領域を開放したとき、前記ヘッダのクレジット値と、前記データのクレジット値とを接続先の装置に通知する
 ことを特徴とする第6の態様に記載のデータ転送方法がある。
 第8の態様として、
 前記ヘッダのクレジット値と、前記データのクレジット値とを、接続先の装置に前回通知したときからの経過時間をカウントし、
 前記経過時間が設定された閾値以上となったとき、前記ヘッダのクレジット値と、前記データのクレジット値とを接続先の装置に通知する
 ことを特徴とする第6または7の態様に記載のデータ転送方法がある。
 第9の態様として、
 前記ヘッダのクレジット値と、前記データのクレジット値とを接続先の装置に通知したとき、前記データ開放量のカウント値をリセットする
 ことを特徴とする請求項6~8のいずれか一つに記載のデータ転送方法がある。
 第10の態様として、
 ヘッダとデータとを含むパケットを受信し、
 前記ヘッダを第1の格納部に格納し、
 前記データを第2の格納部に格納し、
 前記第1の格納部から出力されるヘッダのクレジット値をカウントし、
 前記第2の格納部から出力されるデータのクレジット値をカウントし、
 前記第1の格納部から前記ヘッダが出力されるごとに、前記ヘッダが格納されていた前記第1の格納部の格納領域を開放し、
 前記ヘッダの格納領域を開放したとき、前記ヘッダのクレジット値と、前記データのクレジット値とを接続先の装置に通知する
 ことを特徴とするデータ転送方法がある。
 第11の態様として、
 ヘッダとデータとを含むパケットを受信し、
 前記ヘッダを格納し、
 前記データを格納し、
 前記出力したヘッダの数を表すヘッダのクレジット値をカウントし、
 最初に格納したデータである最古データを出力し、かつ未使用領域が連続するとき、前記未使用領域を開放し、
 前記未使用領域を開放するごとに、前記開放した未使用領域のサイズに対応するデータのクレジット値をカウントし、
 前記未使用領域を開放するごとに、前記開放した未使用領域のサイズに対応するデータのクレジット値をデータ開放量としてカウントし、
 前記データ開放量が設定された閾値以上となったとき、前記ヘッダのクレジット値と、前記データのクレジット値とを接続先の装置に通知する
 処理をコンピュータに実行させることを特徴とするデータ転送プログラムがある。
 第12の態様として、
 前記ヘッダが出力するごとに、前記ヘッダが格納されていた格納領域を開放し、
 前記ヘッダの格納領域を開放したとき、前記ヘッダのクレジット値と、前記データのクレジット値とを接続先の装置に通知する
 処理をコンピュータに実行させることを特徴とする第11の態様に記載のデータ転送プログラムがある。
 第13の態様として、
 前記ヘッダのクレジット値と、前記データのクレジット値とを、接続先の装置に前回通知したときからの経過時間をカウントし、
 前記経過時間が設定された閾値以上となったとき、前記ヘッダのクレジット値と、前記データのクレジット値とを接続先の装置に通知する
 処理をコンピュータに実行させることを特徴とする第11または12の態様に記載のデータ転送プログラムがある。
 第14の態様として、
 前記ヘッダのクレジット値と、前記データのクレジット値とを接続先の装置に通知したとき、前記データ開放量のカウント値をリセットする
 処理をコンピュータに実行させることを特徴とする第11~13の態様のいずれか一つに記載のデータ転送プログラムがある。
 第15の態様として、
 ヘッダとデータとを含むパケットを受信し、
 前記ヘッダを格納し、
 前記データを格納し、
 前記出力したヘッダのクレジット値をカウントし、
 前記出力したデータのクレジット値をカウントし、
 前記ヘッダを出力するごとに、前記ヘッダが格納されていた格納領域を開放し、
 前記ヘッダの格納領域を開放したとき、前記ヘッダのクレジット値と、前記データのクレジット値とを接続先の装置に通知する
 ことを特徴とするデータ転送プログラムがある。
  100 通知パケット
  110 通信パケット
  200 データ転送装置/受信デバイス
  201、211 パケット受信部
  202、212、222 クレジット管理部
  203、213 パケット送信部
  210 データ転送装置/送信デバイス
  220 データ転送装置
  301 振分部
  302 分割部
  303 パケット処理部
  304 管理部
  310 受信バッファ
  311 受信ヘッダ格納部
  312 受信データ格納部
  501 タイマカウント部
  502 タイマ比較部
  503 論理和回路
  504 加算器
  505 セレクタ
  506 未使用量カウント部
  507 開放量保持部
  508 開放量比較部
  509 開放判定保持部
  510、512、513 論理積回路
  511 バッファ回路
  514、531 受信ヘッダカウント部
  515、532 受信データカウント部
  516、533 送信ヘッダカウント部
  517、534 送信データカウント部
  518、535 クレジット通知部
  601 通知パケット生成部
  602 送信パケット格納部
  603 送信制御部
  604 セレクタ
 1300 バス
 1301 制御回路
 1302 記憶装置
 1303 読取装置
 1304 記録媒体
 1305 通信インターフェイス
 1306 入出力インターフェイス
 1307 ネットワーク

Claims (15)

  1.  ヘッダとデータとを含むパケットを受信する受信部と、
     前記ヘッダを格納する第1の格納部と、
     前記データを格納する第2の格納部と、
     前記第1の格納部から出力されるヘッダの数を表すヘッダのクレジット値をカウントする第1のカウント部と、
     前記第2の格納部に格納されているデータの中で、最初に格納されたデータが出力され、かつ未使用領域が連続するとき、未使用領域を開放する管理部と、
     前記未使用領域を開放するごとに、前記開放した未使用領域のサイズに対応するデータのクレジット値をカウントする第2のカウント部と、
     前記第2の格納部からデータを出力するごとに出力したデータのサイズを未使用領域分のデータのクレジット値としてカウントする第3のカウント部と、
     データ開放量が設定された閾値以上となったとき、前記第1のカウント部でカウントされた前記ヘッダのクレジット値と、前記第2のカウント部でカウントされた前記データのクレジット値とを接続先の装置に通知する通知部と、
     を備えることを特徴とするデータ転送装置。
  2.  前記管理部は、
     前記第1の格納部から前記ヘッダが出力されるごとに、前記ヘッダが格納されていた前記第1の格納部の格納領域を開放し、
     前記通知部は、
     前記ヘッダの格納領域を開放したとき、前記ヘッダのクレジット値と、前記データのクレジット値とを接続先の装置に通知する
     ことを特徴とする請求項1に記載のデータ転送装置。
  3.  前記ヘッダのクレジット値と、前記データのクレジット値とを、接続先の装置に前回通知したときからの経過時間をカウントする第4のカウント部を備え、
     前記通知部は、
     前記経過時間が設定された閾値以上となったとき、前記ヘッダのクレジット値と、前記データのクレジット値とを接続先の装置に通知する
     ことを特徴とする請求項1または2に記載のデータ転送装置。
  4.  前記第3のカウント部は、
     データクレジットを開放したとき、前記データ開放量のカウント値をリセットする
     ことを特徴とする請求項1~3のいずれか一つに記載のデータ転送装置。
  5.  ヘッダとデータとを含むパケットを受信する受信部と、
     前記ヘッダを格納する第1の格納部と、
     前記データを格納する第2の格納部と、
     前記第1の格納部から出力されるヘッダのクレジット値をカウントする第1のカウント部と、
     前記第2の格納部から出力されるデータのクレジット値をカウントする第2のカウント部と、
     前記第1の格納部から前記ヘッダが出力されるごとに、前記ヘッダが格納されていた前記第1の格納部の格納領域を開放する管理部と、
     前記ヘッダの格納領域を開放したとき、前記ヘッダのクレジット値と、前記データのクレジット値とを接続先の装置に通知する通知部と、
     を備えることを特徴とするデータ転送装置。
  6.  ヘッダとデータとを含むパケットを受信し、
     前記ヘッダを第1の格納部に格納し、
     前記データを第2の格納部に格納し、
     前記第1の格納部から出力されるヘッダの数を表すヘッダのクレジット値をカウントし、
     前記第2の格納部に格納されているデータの中で、最初に格納されたデータが出力され、かつ未使用領域が連続するとき、前記未使用領域を開放し、
     前記未使用領域を開放するごとに、前記開放した未使用領域のサイズに対応するデータのクレジット値をカウントし、
     データ開放量が設定された閾値以上となったとき、前記ヘッダのクレジット値と、前記データのクレジット値とを接続先の装置に通知する
     ことを特徴とするデータ転送方法。
  7.  前記第1の格納部から前記ヘッダが出力されるごとに、前記ヘッダが格納されていた前記第1の格納部の格納領域を開放し、
     前記ヘッダの格納領域を開放したとき、前記ヘッダのクレジット値と、前記データのクレジット値とを接続先の装置に通知する
     ことを特徴とする請求項6に記載のデータ転送方法。
  8.  前記ヘッダのクレジット値と、前記データのクレジット値とを、接続先の装置に前回通知したときからの経過時間をカウントし、
     前記経過時間が設定された閾値以上となったとき、前記ヘッダのクレジット値と、前記データのクレジット値とを接続先の装置に通知する
     ことを特徴とする請求項6または7に記載のデータ転送方法。
  9.  データクレジットを開放したとき、未使用領域量のカウント値をリセットする
     ことを特徴とする請求項6~8のいずれか一つに記載のデータ転送方法。
  10.  ヘッダとデータとを含むパケットを受信し、
     前記ヘッダを第1の格納部に格納し、
     前記データを第2の格納部に格納し、
     前記第1の格納部から出力されるヘッダのクレジット値をカウントし、
     前記第2の格納部から出力されるデータのクレジット値をカウントし、
     前記第1の格納部から前記ヘッダが出力されるごとに、前記ヘッダが格納されていた前記第1の格納部の格納領域を開放し、
     前記ヘッダの格納領域を開放したとき、前記ヘッダのクレジット値と、前記データのクレジット値とを接続先の装置に通知する
     ことを特徴とするデータ転送方法。
  11.  ヘッダとデータとを含むパケットを受信し、
     前記ヘッダを格納し、
     前記データを格納し、
     前記出力したヘッダの数を表すヘッダのクレジット値をカウントし、
     格納しているデータの中で、最初に格納したデータを出力し、かつ未使用領域が連続するとき、前記未使用領域を開放し、
     前記未使用領域を開放するごとに、前記開放した未使用領域のサイズに対応するデータのクレジット値をカウントし、
     データ開放量が設定された閾値以上となったとき、前記ヘッダのクレジット値と、前記データのクレジット値とを接続先の装置に通知する
     処理をコンピュータに実行させることを特徴とするデータ転送プログラム。
  12.  前記ヘッダが出力するごとに、前記ヘッダが格納されていた格納領域を開放し、
     前記ヘッダの格納領域を開放したとき、前記ヘッダのクレジット値と、前記データのクレジット値とを接続先の装置に通知する
     処理をコンピュータに実行させることを特徴とする請求項11に記載のデータ転送プログラム。
  13.  前記ヘッダのクレジット値と、前記データのクレジット値とを、接続先の装置に前回通知したときからの経過時間をカウントし、
     前記経過時間が設定された閾値以上となったとき、前記ヘッダのクレジット値と、前記データのクレジット値とを接続先の装置に通知する
     処理をコンピュータに実行させることを特徴とする請求項11または12に記載のデータ転送プログラム。
  14.  データクレジットを開放したとき、未使用領域量のカウント値をリセットする
     処理をコンピュータに実行させることを特徴とする請求項11~13のいずれか一つに記載のデータ転送プログラム。
  15.  ヘッダとデータとを含むパケットを受信し、
     前記ヘッダを格納し、
     前記データを格納し、
     前記出力したヘッダのクレジット値をカウントし、
     前記出力したデータのクレジット値をカウントし、
     前記ヘッダを出力するごとに、前記ヘッダが格納されていた格納領域を開放し、
     前記ヘッダの格納領域を開放したとき、前記ヘッダのクレジット値と、前記データのクレジット値とを接続先の装置に通知する
     ことを特徴とするデータ転送プログラム。
PCT/JP2013/051220 2013-01-22 2013-01-22 データ転送装置、データ転送方法およびデータ転送プログラム WO2014115250A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/051220 WO2014115250A1 (ja) 2013-01-22 2013-01-22 データ転送装置、データ転送方法およびデータ転送プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/051220 WO2014115250A1 (ja) 2013-01-22 2013-01-22 データ転送装置、データ転送方法およびデータ転送プログラム

Publications (1)

Publication Number Publication Date
WO2014115250A1 true WO2014115250A1 (ja) 2014-07-31

Family

ID=51227067

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/051220 WO2014115250A1 (ja) 2013-01-22 2013-01-22 データ転送装置、データ転送方法およびデータ転送プログラム

Country Status (1)

Country Link
WO (1) WO2014115250A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002207634A (ja) * 2001-01-10 2002-07-26 Fuji Xerox Co Ltd 記憶領域管理方法及び記憶装置
JP2005332250A (ja) * 2004-05-20 2005-12-02 Toshiba Corp データ処理装置およびフロー制御方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002207634A (ja) * 2001-01-10 2002-07-26 Fuji Xerox Co Ltd 記憶領域管理方法及び記憶装置
JP2005332250A (ja) * 2004-05-20 2005-12-02 Toshiba Corp データ処理装置およびフロー制御方法

Similar Documents

Publication Publication Date Title
US11636052B2 (en) Non-volatile memory express (NVMe) data processing method and system
US11403247B2 (en) Methods and apparatus for network interface fabric send/receive operations
US9405725B2 (en) Writing message to controller memory space
US8327047B2 (en) Buffer manager and methods for managing memory
US8677045B2 (en) Transaction reordering system and method with protocol indifference
JP6757808B2 (ja) インフィニバンド(IB)上で仮想ホストバスアダプタ(vHBA)を管理およびサポートするためのシステムおよび方法、ならびに単一の外部メモリインターフェイスを用いてバッファの効率的な使用をサポートするためのシステムおよび方法
JP2009540681A (ja) データ通信フロー制御の装置および方法
WO1996041266A1 (en) Split buffer architecture
EP3470971A1 (en) Method, apparatus, and system for accessing memory device
JP6523707B2 (ja) ラップ読出しから連続読出しを行うメモリサブシステム
CN112650558A (zh) 数据处理方法、装置、可读介质和电子设备
US9727521B2 (en) Efficient CPU mailbox read access to GPU memory
EP1970815A1 (en) Data transfering apparatus and information processing system
JP2022121525A (ja) 処理装置、処理方法及びプログラム
US9292456B2 (en) System and method for data synchronization across digital device interfaces
US10684965B2 (en) Method to reduce write responses to improve bandwidth and efficiency
CN110895517B (zh) 基于fpga的传输数据的方法、设备及系统
WO2014115250A1 (ja) データ転送装置、データ転送方法およびデータ転送プログラム
JP5987560B2 (ja) データ転送装置、データ転送方法およびデータ転送プログラム
US7451254B2 (en) System and method for adaptive buffer allocation in a memory device interface
US20150169325A1 (en) Providing, at least in part, at least one indication that at least one portion of data is available for processing
US20150193201A1 (en) Flow control with buffer reclamation
JP7363344B2 (ja) メモリ制御装置、および制御方法
CN116149453A (zh) 控制器、电子设备和数据传输系统
JP2020071729A (ja) 処理フレームワーク連携装置、処理フレームワーク連携方法および処理フレームワーク連携プログラム

Legal Events

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

Ref document number: 13872969

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13872969

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP