[go: up one dir, main page]

WO2015008354A1 - データ転送装置、データ転送方法及び情報処理装置 - Google Patents

データ転送装置、データ転送方法及び情報処理装置 Download PDF

Info

Publication number
WO2015008354A1
WO2015008354A1 PCT/JP2013/069435 JP2013069435W WO2015008354A1 WO 2015008354 A1 WO2015008354 A1 WO 2015008354A1 JP 2013069435 W JP2013069435 W JP 2013069435W WO 2015008354 A1 WO2015008354 A1 WO 2015008354A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
data size
storage unit
size information
copy
Prior art date
Legal status (The legal status 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 status listed.)
Ceased
Application number
PCT/JP2013/069435
Other languages
English (en)
French (fr)
Inventor
省吾 大神
良晃 小笠原
黒田 康弘
健二 白瀬
徹 吉永
達彦 根岸
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015527105A priority Critical patent/JP6011727B2/ja
Priority to PCT/JP2013/069435 priority patent/WO2015008354A1/ja
Publication of WO2015008354A1 publication Critical patent/WO2015008354A1/ja
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 data transfer device, a data transfer method, and an information processing device.
  • FIG. 13 is a diagram illustrating a configuration of an information processing apparatus 500 including a conventional I / O (Input / Output) subsystem.
  • the information processing apparatus 500 includes a processor 504, a memory 503, a system controller 502, an I / O subsystem 510, and I / O devices 507 and 508.
  • the I / O devices 507 and 508 are input / output devices.
  • the I / O device 507 is a disk device
  • the I / O device 508 is a network interface.
  • the memory 503 is a storage device including a ROM and a RAM.
  • the processor 504 is a processing device, and implements various functions by executing an OS or a program stored in the memory 503 or the like.
  • the system controller 502 connects the processor 504 and the memory 503 to the I / O subsystem 510 and controls data communication. In addition, the system controller 502 also performs writing and reading of data to and from the memory 503 in response to requests from the processor 504, an end point 506 described later, and the like. *
  • the I / O subsystem 510 is a bus system that connects the processor 504 and the memory 503 and the I / O devices 507 and 508 inside the information processing apparatus 500. As its standard, for example, Peripheral Component Interconnect Express (PCIe) It has been known.
  • PCIe Peripheral Component Interconnect Express
  • the I / O subsystem 510 includes a root complex 501, a switch 505, and one or more endpoints 506.
  • the root complex 501 is an I / O host bridge, and performs conversion between a data transfer protocol between the processor 504, the memory 503, and the root complex 501 and a data transfer protocol in the I / O subsystem 510.
  • the root complex 501 is connected to the processor 504 and the memory 503 via the system controller 502.
  • An interface connecting the root complex 501 and the system controller 502 is called a system interface 501a, and an interface connecting the root complex 501 and the switch 505 is called an I / O interface 501b.
  • the switch 505 is a device for route aggregation and provides a fan-out function for the I / O bus.
  • Endpoint 506 is a device located at the end of the I / O bus structure. This end point 506 is an interface to which the I / O devices 507 and 508 are connected. In the I / O subsystem 510, data transfer is performed using packets.
  • the endpoint 506 generally employs a direct memory access (DMA) method in order to realize high-throughput data transfer between the memory 503 and the I / O devices 507 and 508.
  • DMA direct memory access
  • FIG. 14 is a diagram showing processing of the route complex 501 when a DMA read request is made by the end point 506 in the conventional information processing apparatus.
  • the DMA read request packet issued by the endpoint 506 is received via the switch 505 at the input of the I / O interface 501b of the route complex 501.
  • the DMA read request packet is composed of only a header portion without a payload portion.
  • the root complex 501 After receiving the DMA read request packet, the root complex 501 issues a read request to the memory 503 via the system interface 501a and receives response data from the memory 503. After receiving the data, the root complex 501 generates a DMA read response packet and sends it to the I / O interface 501b.
  • the DMA read response packet includes a read response command, a header portion specifying a response destination ID, and a payload.
  • the DMA read response packet reaches the end point 506 that made the read request via the switch 505, and the DMA read processing is completed.
  • the upper limit of the size of the payload (payload size) added to one packet can be set as follows, for example. That is, the upper limit of the payload size can be set in consideration of the maximum payload size (MPSS: Max Payload Size Supported) that can be processed per packet by each device of the root complex 501, the switch 505, and the endpoint 506. .
  • MPSS is a device-specific value.
  • the upper limit value of the set payload size is called an MPS (Max Payload Size) setting value or simply MPS.
  • Each device in the I / O subsystem 510 can arbitrarily set the MPS setting value as 128 bytes, 256 bytes, 512 bytes, etc. within a range not exceeding MPSS.
  • the MPS setting value can be individually set for each device.
  • the MPS setting values of the root complex 501 and the switch 505 are each 512 bytes
  • the MPSs of the three endpoints 506 are 512 bytes, 256 bytes, and 128 bytes, respectively.
  • the MPS set value is mainly used for the following uses (1) and (2).
  • (1) Checking payload size of received packet A device (receiving device) that has received a packet with a payload compares the payload size of the received packet with the MPS setting value of the receiving device itself. Then, only a packet having a payload size equal to or smaller than the MPS set value is processed, and when the payload size of the packet is large, the received device discards the packet as an error. As a result, data transfer fails.
  • a device that transmits a packet with a payload determines the payload size of the packet based on the MPS setting value of the transmission device so that the transmission destination device can process it.
  • a plurality of packets having a payload size with the MPS setting value as an upper limit are transmitted in multiple times.
  • Each device in the I / O subsystem 510 includes a setting register (not shown) for limiting the data size of the read request.
  • the maximum read request data size (Max-Read-Request-Size: MRRS setting value) can be set to any size such as 128 bytes, 256 bytes, 512 bytes, etc.
  • a setting value can be specified.
  • the packet has a fixed header length and a variable payload length, so that the larger the payload size per packet, the more efficiently data can be transferred.
  • the payload size of the DMA read response packet is maximized within the possible range based on the MPS setting value of the root complex 501. This increases the efficiency of data transfer.
  • FIG. 15 is a diagram showing data transfer processing when a read request is received from an end point in a conventional information processing apparatus.
  • FIG. 15 shows an example of data transfer when the MPS setting of the root complex 501 is 512 bytes and a 2 Kbyte read request packet is received from the endpoint 506.
  • the root complex 501 receives one DMA read request packet of 2 Kbytes from the endpoint 506 via the I / O interface 501b.
  • the root complex 501 issues a memory read request divided in units of 128 bytes to the system controller 502 a total of 16 times from the output of the system interface 501a.
  • the root complex 501 Triggered by the data response from the memory 503 input to the system interface 501a, the root complex 501 generates a DMA read response packet having a payload size of up to 512 bytes.
  • the created response packet is sent to the I / O interface 501b.
  • the response packet is transmitted a minimum of four times.
  • the MPSS may be different for each device, and the MPS setting value can be set for each device. Therefore, if the MPS setting value is freely set, data transfer may fail. That is, as shown in the above-described use (1), data transmission fails when a packet is transmitted with a payload size exceeding the MPS setting value on the data receiving side.
  • the MPS setting value of the root complex 501 is set to 512 bytes and the MPSS of the endpoint 506 is set to 128 bytes and the MPS setting value is also set to 128 bytes. If the root complex 501 issues a DMA read response packet with a payload size of 512 bytes when the endpoint 506 makes a DMA read request of, for example, 2 Kbytes, this payload size is larger than the MPS setting value (128 bytes) of the endpoint 506. large. Therefore, the endpoint 506 treats the received DMA read response packet as an error, and data transfer fails.
  • This data transfer failure is caused by the fact that the MPS setting value in the I / O subsystem 510 can be set independently. Therefore, in the conventional information processing apparatus 500, one of the following (a1) and (a2) is shown. Using such a technique, data transfer failures are avoided in system operation.
  • (A1) Unifying MPS setting values in accordance with the minimum MPSS in the I / O subsystem 510 The minimum MPSS in the I / O subsystem 510 is set as the MPS setting value for all devices.
  • the route complex 501 issues a DMA read response packet that can be received by the endpoint 506 regardless of which endpoint 506 performs a DMA read of an arbitrary size.
  • FIG. 16 is a diagram showing data transfer processing when a read request is received from an end point in a conventional information processing apparatus.
  • FIG. 16 shows an example of data transfer when a 2 Kbyte read request is received from the endpoint 506, and shows a specific example of data transfer when the MPS set value is unified with 128 bytes.
  • the root complex 501 receives one DMA read request packet of 2 Kbytes from the endpoint 506 via the I / O interface 501b.
  • the root complex 501 issues a memory read request divided in units of 128 bytes to the system controller 502 a total of 16 times from the output of the system interface 501a.
  • the root complex 501 Triggered by the data response from the memory 503 input to the system interface 501a, the root complex 501 generates a DMA read response packet having a payload size of 128 bytes.
  • the created response packet is sent to the I / O interface 501b.
  • the response packet is sent out at least 16 times.
  • (A2) Setting the upper limit of the data size of the DMA read request of the endpoint 506 The MPS setting value of each endpoint 506 is set within a range not exceeding its own MPSS, and the MRRS setting value of the endpoint 506 is set to the MPS setting value. Make them the same size. In this case, the data size of the DMA read does not exceed the MPS setting value of the endpoint 506, and the payload size of the DMA read response packet of the root complex 501 does not exceed the MPS setting value of the request source endpoint 506. Therefore, the DMA read is successful.
  • FIG. 17 is a diagram showing data transfer processing when a read request is received from an end point in a conventional information processing apparatus.
  • FIG. 17 shows an example of data transfer when a 2 Kbyte read request is received from the endpoint 506, and the data transfer when the MPS setting value and MRRS setting value of the endpoint 506 are unified with 512 bytes. A specific example is shown.
  • the endpoint 506 issues a 512-byte DMA read request at least four times even when it wants to perform a DMA read of 2 Kbytes.
  • the root complex 501 issues memory read requests divided in units of 128 bytes to the system controller 502 a total of 16 times from the output of the system interface 501a.
  • the root complex 501 In response to a data response from the memory 503 input to the system interface 501a, the root complex 501 generates a DMA read response packet having a payload size of 512 bytes.
  • the created response packet is sent to the I / O interface 501b. The response packet is transmitted a minimum of four times.
  • an extra packet header is generated at the output or input of the I / O interface 501b of the root complex 501, and there is a problem that the data transfer efficiency is lowered. That is, as shown in FIG. 16, in order to use the method (a1) for unifying the MPS setting value in accordance with the minimum MPSS in the I / O subsystem 510, the payload size of the response packet for the read request becomes small. Therefore, the data throughput on the output bus of the I / O interface 501b of the root complex 501 is reduced. Further, the increased header portion of the response packet imposes data transfer on the output bus of the I / O interface 501b of the root complex 501.
  • the data size of the DMA read can be designated as an arbitrary size (see FIG. 15).
  • the number of DMA read requests issued is increased (4 times in the example shown in FIG. 17) as compared to once in the example shown. Therefore, the increased header portion of the DMA read request packet imposes data transfer on the input bus of the I / O interface 501b of the root complex 501.
  • an object of the present invention is to improve data transfer efficiency.
  • the present invention is not limited to the above-described object, and other effects of the present invention can be achieved by the functions and effects derived from the respective configurations shown in the embodiments for carrying out the invention which will be described later. It can be positioned as one of
  • the data transfer device receives a data acquisition request from the input / output control device provided in the input / output bus
  • the read copy of the first data size information related to the input / output control device is compared with the second data size information that can be processed by the data transfer apparatus, and the data acquisition is performed based on the smaller data size information.
  • a determination unit that determines a response data size for a request, a generation unit that generates response data based on the response data size determined by the determination unit, and a transmission unit that transmits the response data generated by the generation unit With.
  • FIG. 6 is a flowchart illustrating a DMA read response packet transmission process by an egress processing unit in the information processing apparatus as an example of the first embodiment; 6 is a flowchart illustrating an outline of a technique for determining a payload size of a DMA read response packet in the information processing apparatus as an example of the first embodiment.
  • FIG. 1 is a diagram illustrating a functional configuration of an information processing apparatus 1 as an example of a first embodiment.
  • the information processing apparatus 1 includes, for example, a PCIe bus as an I / O bus system.
  • the information processing apparatus 1 according to the first embodiment includes a processor 32, a memory 31, a system controller 30, a route complex 50, a switch 33, and one or more endpoints 34.
  • the root complex 50, the switch 33, and the end point 34 are referred to as an I / O subsystem 2.
  • the memory 31 is a storage device including a ROM and a RAM. Various software programs and data for these programs are written in the ROM of the memory 31. The software program on the memory 31 is appropriately read into the processor 32 and executed.
  • a RAM (main storage device) of the memory 31 is used as a primary storage memory or a working memory.
  • the processor 32 is a processing device that performs various controls and operations, and is, for example, a CPU (Central Processing Unit).
  • the processor 32 implements various functions by executing an OS or a program stored in the memory 31 or a storage device (not shown).
  • the system controller 30 connects the processor 32 and the memory 31 to the root complex 50 and controls data communication.
  • the system controller 30 also writes data to and reads data from the memory 31 in response to requests from the processor 32, the endpoint 34, and the like.
  • the system controller 30 has functions as, for example, a host bridge and a memory controller.
  • the switch 33 is a device for route aggregation and provides a fan-out function for the I / O bus. That is, the switch 33 connects the end point 34 and the route complex 50 and controls data communication.
  • the end point 34 is an input / output device located at the end of the I / O bus (input / output bus) structure, and is connected to an I / O device (not shown) such as a storage device or a network interface device.
  • the endpoint 34 may be an I / O device using PCIe, or may be an interface for connecting a device other than PCIe. For example, when receiving a DMA (Direct Memory Access) request from a subordinate I / O device, the endpoint 34 transmits the request to the root complex 50.
  • DMA Direct Memory Access
  • the DMA read request is made by transmitting a DMA read request packet from the end point 34.
  • the route complex 50 is connected to the end point 34 via the switch 33.
  • the root complex 50 is also connected to the memory 31 and the processor 32 via the system controller 30.
  • the root complex 50 is a root device having an I / O bus structure, and performs protocol conversion to mutually transfer a PCIe packet transmitted from the endpoint 34 and a packet according to the protocol of the memory 31 or the processor 32. To do.
  • the root complex 50 includes a system interface 26 that connects to the system controller 30 and an I / O interface 25 that connects to the switch 33.
  • the endpoint 34 receives a DMA request from an I / O device under the endpoint 34, the endpoint 34 transmits the DMA request to the root complex 50.
  • the route complex 50 transfers the DMA request received from the end point 34 to the system controller 30.
  • the root complex 50 divides the DMA request received from the end point 34 into one or more DMA requests (divided requests). Specifically, the route complex 50 divides the data requested by the read request received from the end point 34 so that the data finally becomes a size that can be transmitted to and received from the system controller 30, and the divided data. A new read request (split request) is generated every time. Then, the root complex 50 transmits the read request generated by the division to the system controller 30.
  • the system controller 30 When the system controller 30 receives a read request from the root complex 50, the system controller 30 reads data requested by the read request from the memory 31. Then, the system controller 30 transmits the data read from the memory 31 to the root complex 50 as read data (response).
  • the root complex 50 receives read data for the read request from the system controller 30.
  • the route complex 50 generates a DMA read response packet having a predetermined payload size and transfers it to the endpoint 34 when the received one or more read data reaches a predetermined payload size described later.
  • the endpoint 34 receives the DMA read response packet from the root complex 50, the endpoint 34 transmits data to the I / O device that requested the DMA.
  • the root complex 50 includes an ingress processing unit 10, a scoreboard 14, and an egress processing unit 15.
  • the ingress processing unit 10 includes a reception unit 11, a packet division unit 12, and a system interface transmission unit 13.
  • the receiving unit 11 receives a DMA read request (DMA read request packet) from the end point 34. Then, the reception unit 11 outputs the received DMA read request to the packet division unit 12.
  • DMA read request packet DMA read request packet
  • the packet dividing unit 12 divides the DMA read request into one or more DMA read requests (divided requests). For example, if the DMA request is a DMA read request, the DMA read request is divided into one or more read requests (divided requests). Specifically, the packet division unit 12 divides the DMA read request from the end point 34 into data sizes that can be processed by the system controller 30 and divides it into one or more read requests. The packet division unit 12 divides the DMA read request into one or more read requests having a size (for example, 128 kbytes) that can be processed by the system controller 30.
  • a size for example, 128 kbytes
  • the packet division unit 12 stores information on the read request (division request) in the scoreboard 14 to be described later with reference to FIG.
  • the system interface transmission unit 13 performs a process of sequentially transmitting the read requests created by the packet division unit 12 to the system controller 30 via the system interface 26.
  • the read request created by dividing is also a DMA read request to the memory 31.
  • the system controller 30 reads data requested by the read request from the memory 31, and transmits response data including the read data (read data) to the root complex 50.
  • the score board 14 stores information on the read request created by the packet dividing unit 12.
  • FIG. 2 is a diagram illustrating an example of the scoreboard 14 in the information processing apparatus 1 as an example of the first embodiment. As illustrated in FIG. 2, the score board 14 is configured by associating fields of a reception request number “No.”, a command, a Requester-ID, a division number, and a count number.
  • the reception request number “No.” is identification information for specifying a reception request (read request).
  • the scoreboard 14 stores information including a command, a Requester-ID, a division number, and a count number in association with each reception request number “No.”.
  • the scoreboard 14 can be a volatile memory such as a RAM.
  • the reception request number “No.” is identification information assigned to reception requests in the order of reception.
  • the command is a command included in the reception request. If the reception request is a read request, a read command is stored.
  • the number of divisions is the number of division requests finally divided from the reception request by the packet division unit 12.
  • the count value is a value indicating the number of split requests that have not been transmitted as a response.
  • the Requester-ID is included in the DMA read request packet and serves as identification information (request source identification information, ID) indicating the request source of the DMA read request. That is, Requester-ID functions as a request source ID of a read request.
  • FIG. 3 shows a configuration example of the DMA read request packet.
  • the DMA read request packet (Memory Read) shown in FIG. 3 is configured as a 96-bit packet.
  • a 16-bit Requester-ID is included in a DMA read request packet, and this Requester-ID functions as identification information of a packet issuer device.
  • This Requester-ID includes an 8-bit Bus-ID, a 5-bit Device-ID, and a 3-bit Function-ID.
  • the Requester-ID extracted from the DMA read request packet is stored in the Requester-ID of the scoreboard 14.
  • the information stored in the scoreboard 14 is not limited to these, and for example, a tag for identifying a reception request may be stored.
  • the egress processing unit 15 includes a system interface reception unit 16, a response queue 17, a data buffer 18, a control unit 19, a transmission unit 20, a monitoring unit 24, and an MPS setting table 51.
  • the system interface receiving unit 16 receives response data from the system controller 30.
  • the system interface reception unit 16 stores the header part included in the response data in the response queue 17. Further, the system interface receiving unit 16 stores the data part included in the response data in the data buffer 18.
  • the data part stored in the data buffer 18 and the header part stored in the response queue 17 are stored in a one-to-one correspondence.
  • the MPS setting table (storage unit) 51 records a copy of the MPS setting values (first data size information) of all devices in the I / O subsystem 2. That is, the MPS setting table 51 centrally manages copies of MPS setting values of all devices in the / O subsystem 2.
  • the MPS setting table 51 is stored in a register provided in the egress processing unit 15.
  • FIG. 4 is a diagram for explaining the configuration of the MPS setting table 51 in the information processing apparatus 1 as an example of the first embodiment.
  • the MPS setting table 51 is configured by associating an MPS setting with a Bus-ID.
  • the Bus-ID is identification information that uniquely identifies a device in the I / O subsystem 2, and is included in the Requester-ID of the DMA read request packet.
  • the Bus-ID entry preferably uses the same value as the MPS register defined by PCIe.
  • the MPS setting is information indicating MPS, and is, for example, 3-bit information.
  • the MPS setting is represented by a binary number with “b” added to the tail.
  • the MPS value is referred to as the MPS setting value.
  • the control unit 19 described later refers to the MPS setting table 51 based on the 8-bit Bus-ID included in the Requester-ID, using the Requester-ID in the scoreboard 14. Then, the control unit 19 selects an entry that matches the Bus-ID included in the Requester-ID from the MPS setting table 51, and extracts the corresponding MPS setting value.
  • the MPS setting table 51 for example, a copy of each MPS setting value is set in the process of setting the MPS setting value of each endpoint 34 by the processor 32 executing the control program.
  • the MPS setting table 51 shown in FIG. 4 includes the Bus-ID and the MPS setting value, but is not limited to this, and other information may be stored. For example, Device-ID and Function-ID included in the Requester-ID may be stored in the MPS setting table 51.
  • the control unit 19 determines the payload size of the response transmitted to the end point 34.
  • the control unit 19 includes an MPS register 191.
  • the MPS register 191 stores the MPS setting value (second data size information) of the root complex 50.
  • the MPS register 191 is connected to the processor 32 via, for example, the system controller 30 or directly. When the processor 32 executes the OS, the MPS setting value can be written in the MPS register 191 by the function.
  • the control unit (decision unit) 19 refers to the MPS setting table 51 based on the Bus-ID included in the Requester-ID of the read request from the read request source, and acquires a copy of the MPS setting value of the read request source. Then, the obtained copy of the MPS setting value is compared with the MPS setting value stored in the MPS register 191. Then, as a result of the comparison, the control unit 19 determines the payload size based on the smaller MPS setting value. Details of the method for determining the payload size by the control unit 19 will be described later with reference to FIG.
  • extracting the copy of the MPS setting value of the read request source from the MPS setting table 51 by the control unit 19 is simply referred to as extracting the MPS setting value of the read request source.
  • the control unit 19 notifies the transmission unit 20 of the determined payload size. Further, the control unit 19 detects that the packet can be issued based on the reception state of the response data. In this case, the control unit 19 instructs the transmission unit 20 to issue a packet.
  • control unit 19 refers to the scoreboard 14 to be described later every time transmission of the DMA read response packet (response) to the end point 34 by the transmission unit 20 is completed, and the division source of the response whose transmission has been completed Decrement the count value of the reception request. Note that the number of divisions can be used as the initial value of the count value.
  • the control unit 19 determines that the transmission of the response to the reception request whose count value is 0 has been completed. The control unit 19 clears the packet information of the reception request for which the transmission of the response has been completed from the scoreboard 14.
  • the transmission unit (creation unit) 20 generates a DMA read response packet based on the payload size notified from the control unit 19 and sends it to the switch 33 via the I / O interface 25.
  • the transmission unit 20 includes a payload generation unit 21, a packet generation unit 22, and an output buffer 23.
  • the payload generation unit 21 When the payload generation unit 21 receives the response data extracted from the data buffer 18, the payload generation unit 21 generates a payload having a payload size notified from the control unit 19. Note that a method for creating a payload having a predetermined payload size is known, and a detailed description thereof will be omitted. Then, the payload generation unit 21 outputs the generated payload to the packet generation unit 22.
  • the packet generation unit 22 When receiving the payload from the payload generation unit 21, the packet generation unit 22 generates header information and generates response data (DMA read response packet) to the endpoint 34 including the payload received from the payload generation unit 21. .
  • the packet generator 22 stores the generated response data in the output buffer 23.
  • the output buffer 23 is a storage device that stores response data.
  • the transmission unit 20 When the response is stored in the output buffer 23, the transmission unit 20 outputs the response data stored in the output buffer 23 to the endpoint 34.
  • the monitoring unit 24 monitors the output buffer 23 and detects the busy state of the transmission unit 20. When the busy state is detected, the monitoring unit 24 generates busy information and notifies the control unit 19 (busy notification).
  • the busy information includes, for example, information indicating that the transmission unit 20 is busy.
  • the monitoring unit 24 determines that the transmission unit 20 is busy based on the availability of the output buffer 23 when, for example, the available capacity of the output buffer 23 for storing new packets is below a certain level. to decide. In addition, the monitoring unit 24 determines that the transmission unit 20 is busy, for example, when the communication line is busy based on the communication status of the communication line that sends a packet from the output buffer 23 to the endpoint 34. May be.
  • the DMA read response packet transmission processing by the egress processing unit 15 in the information processing apparatus 1 as an example of the first embodiment configured as described above will be described according to the flowchart (steps A1 to A5) shown in FIG.
  • the control unit 19 monitors the busy state of the monitoring unit 24 (step A1). When busy notification is not performed from the monitoring unit 24, the control unit 19 determines the payload size and notifies the determined payload size to the transmission unit 20 (step A2).
  • the payload generation unit 21 In the transmission unit 20, the payload generation unit 21 generates a payload using the data unit stored in the data buffer 18 in accordance with the payload size notified from the control unit 19 (step A3).
  • the payload generation unit 21 extracts one or more response data from the data buffer 18 according to the notified payload size, and generates a payload.
  • the packet generator 22 generates header information using the header stored in the response queue 17, and generates a DMA read response packet using the payload created by the payload generator 21 (step A4).
  • the header information is generated based on, for example, information included in the header portion of the response data used for the payload, for example, a transmission destination address.
  • the packet generator 22 stores the generated DMA read response packet in the output buffer 23, and the transmitter 20 transmits the DMA read response packet to the requesting endpoint 34 via the switch 33 (step A5).
  • step A5 an outline of a technique for determining the payload size of the DMA read response packet in the information processing apparatus 1 as an example of the first embodiment will be described according to the flowchart (steps B1 to B7) shown in FIG.
  • step B1 the control unit 19 extracts the request source MPS setting value from the MPS setting table 51 using the Bus-ID of the Requester-ID of the DMA read request packet.
  • step B2 the control unit 19 reads the MPS setting value of the root complex 50 from the MPS register 191 and compares it with the MPS setting value of the request source extracted in step B1. Then, the control unit 19 sets the smaller MPS setting value of the MPS setting value of the request source and the MPS setting value of the root complex 50 as the checking MPS.
  • the check MPS is a value temporarily used to determine the payload size.
  • step B3 the control unit 19 confirms whether the read response packet can be generated by the check MPS. If the read response packet can be generated (see YES route in step B3), the control MPS at that time is determined as the payload size. (Step B4). The control unit 19 notifies the transmission unit 20 of the determined payload size. The transmission unit 20 generates a DMA read response packet having the notified check MPS as a payload size.
  • the control unit 19 reduces the check MPS step by step until reaching the minimum value, and the read response Check if the packet can be generated. That is, the control unit 19 confirms whether or not the checking MPS is the minimum value (step B5). If the check MPS is not the minimum value (see the NO route in step B5), the check MPS is decreased by a predetermined amount in step B7, and the process returns to step B3. Note that the amount of decrease and the minimum value are assumed to be arbitrary, for example, both are 128 bytes.
  • step B5 If the check MPS is the minimum value (see YES route in step B5), that is, if the read response packet cannot be generated even with the minimum check MPS, the payload size is not determined (step B6). ). That is, the processing is terminated without generating the DMA read response packet, and the determination of the payload size and the generation of the DMA read response packet are left to the next timing.
  • step C1 the control unit 19 determines whether or not the egress processing unit 15 (transmission unit 20) is busy based on the busy information notified from the monitoring unit 24.
  • step C1 If it is determined that the transmission unit 20 is busy (see YES route in step C1), the process returns to step C1. In this case, for example, after a certain period of time, the control unit 19 performs the process of step C1 again. The control part 19 repeats the process of step C1 until the busy state of the transmission part 20 is cancelled
  • step C2 the control unit 19 uses the Requester-ID (identification information) of the DMA read request packet (DMA read request).
  • the MPS setting value of the corresponding request source is extracted from the MPS setting table 51.
  • step C3 the control unit 19 compares the MPS set value of the request source with the MPS set value stored in the MPS register 191, and sets the smaller MPS set value as the check MPS.
  • the check MPS is a value temporarily used to determine the payload size.
  • step C6 the control unit 19 determines the payload size to be 512 bytes. If the check MPS is smaller than 512 bytes (see NO route in step C4), it is confirmed in step C8 whether the check MPS is 256 bytes or more which is the second threshold value. When the checking MPS is 256 bytes or more (see YES route in Step C8), the control unit 19 shifts the processing to Step C9. In step C9, the control unit 19 determines whether a response having a payload size of 256 bytes can be generated. If it is determined that a response having a payload size of 512 bytes cannot be generated (see NO route in step C5), the process proceeds to step C9.
  • step C8 When the MPS for check is smaller than 256 bytes (refer to the NO route in step C8), or when it is determined that a response having a payload size of 256 bytes cannot be generated (refer to the NO route in step C9), the control unit 19 The process proceeds to step C11. In step C11, the control unit 19 determines whether a response with a payload size of 128 bytes can be generated.
  • step C11 If it is determined that a response having a payload size of 128 bytes cannot be generated (see the NO route in step C11), the control unit 434 returns the process to step C1. In this case, when new response data is stored in the response queue 17, the control unit 19 starts processing from step C1. When the payload size is determined (steps C6, C10, and C12), in step C7, the control unit 19 notifies the payload generation unit 21 of the determined payload size. When the above process ends, the control unit 19 ends the process for determining the payload size.
  • the ingress processing unit 10 described above performs pipeline processing by connecting processing elements such as reception processing in the reception unit 11, packet division processing in the packet division unit 12, and transmission processing in the system interface transmission unit 13 in series. Can do.
  • the receiving process, the packet dividing process, and the transmitting process can be further divided into a plurality of processing elements to perform pipeline processing.
  • pipeline processing can be performed by connecting processing elements such as reception processing in the system interface reception unit 16 and transmission processing in the transmission unit 20 in series.
  • the reception process and the transmission process can be further divided into a plurality of processing elements to perform pipeline processing.
  • the scoreboard 14, the response queue 17, the data buffer 18, and the like are described separately.
  • the scoreboard 14, the response queue 17, the data buffer 18 and the like may be realized by one memory, or two or more as necessary. It may be realized with a memory.
  • copies of the MPS setting values of all the devices in the I / O subsystem 2 are recorded in the MPS setting table 51, and the control unit 19 With reference to this MPS setting table 51, the MPS setting value of the device that issued the DMA read request packet is acquired. Then, the control unit 19 acquires the MPS setting value of the read request source, compares the acquired MPS setting value with the MPS setting value stored in the MPS register 191, and based on the smaller MPS setting value. To determine the payload size.
  • FIG. 8 is a diagram illustrating a configuration of an information processing apparatus 1 as an example of a second embodiment.
  • the information processing apparatus 1 illustrated in FIG. 8 includes the MPS setting table 51 in the memory 31 instead of including the MPS setting table 51 in the egress processing unit 15 of the information processing apparatus 1 of the first embodiment illustrated in FIG.
  • the MPS setting table base address register 52 is provided, and the ingress processing unit 10 is provided with an MPS setting reading unit 53.
  • a score board 14 a is provided instead of the score board 14.
  • the MPS setting table base address register (third storage unit) 52 stores address information (MPS setting table address information, base address, access information) indicating the storage location of the MPS setting table 31 on the memory 31.
  • the MPS setting table address information is address information indicating the position where the MPS setting table 51 is stored on the memory 31, and indicates, for example, the head position (base address) of the MPS setting table 51.
  • the MPS setting reading unit 53 can access the MPS setting table 51 in the memory 31 by referring to the MPS setting table address information.
  • the MPS setting reading unit (acquisition unit) 53 refers to the MPS table base address information and accesses the MPS setting table 51 on the memory 31. Then, the MPS setting reading unit 53 refers to the MPS setting table 51 based on the Requester-ID of the DMA read request packet, and reads a copy of the MPS setting value corresponding to the Requester-ID.
  • the storage location of each MPS setting value in the MPS setting table 51 is indicated by a value obtained by adding a predetermined offset value to the base address (the head address of the MPS setting table 51) indicated by the MPS setting table address information.
  • the predetermined offset value corresponds to Requester-ID (Bus-ID). That is, the value obtained by adding the Requester-ID of the request source device to the base address indicates the storage location of the MPS setting value of the request source device in the MPS setting table 51.
  • the Requester-ID of the request source device may be referred to as a request source ID offset.
  • the reading of the MPS set value from the memory 31 is performed, for example, by notifying the base address and the request source ID offset from the ingress processing unit 10 via the system controller 30.
  • the MPS setting value read from the memory 31 is delivered to the MPS setting reading unit 53 via the system controller 30 and the system interface receiving unit 16.
  • the MPS setting value read from the MPS setting table 51 of the memory 31 is transferred to the packet dividing unit 12, and the packet dividing unit 12 sends the MPS setting value to the requester-ID of the request source on the scoreboard 14a. Store in association with.
  • FIG. 9 is a diagram illustrating an example of the scoreboard 14a in the information processing apparatus 1 as an example of the second embodiment.
  • the scoreboard (second storage unit) 14a includes an MPS set value (MPS) field in the scoreboard 14 of the first embodiment shown in FIG.
  • MPS setting value has a data size of 3 bits, for example.
  • the packet dividing unit 12 registers the corresponding MPS setting value together with the read request information (Requester-ID or the like) in the scoreboard 14a.
  • the control unit 19 of the egress processing unit 15 refers to the scoreboard 14a based on the Requester-ID, and the MPS setting value field of the scoreboard 14a. Are extracted and used as MPS set values.
  • FIG. 10 is a sequence diagram illustrating data transfer in the information processing apparatus as an example of the second embodiment.
  • the route complex 50 After receiving the DMA read request packet via the I / O interface 25 (see P1), the route complex 50 causes the MPS setting reading unit 53 to read the corresponding MPS setting value from the MPS setting table 51 on the memory 31. Is issued (see P2).
  • the system controller 30 reads the MPS setting value from the MPS setting table 51 in the memory 31 and responds to the MPS setting reading unit 53 (see P3).
  • the packet dividing unit 12 stores the MPS setting value in the scoreboard 14a.
  • the root complex 50 After the reading of the corresponding MPS setting value from the memory 31 is completed, the root complex 50 starts reading the data of the DMA read request (see P4), and the system interface receiving unit 16 receives the read response (see P5).
  • the control unit 19 uses the Requester-ID of the DMA read request packet (DMA read request) to extract the MPS setting value of the corresponding request source from the scoreboard 14a.
  • control unit 19 compares the MPS setting value of the request source with the MPS setting value stored in the MPS register 191, and sets the smaller MPS setting value as the checking MPS.
  • control unit 19 determines that a response having the payload size set as the check MPS can be generated, the control unit 19 determines the check MPS as the payload size and notifies the transmission unit 20 of the determination.
  • the transmission unit 20 creates a response packet having the notified payload size and transmits a DMA read response packet to the I / O interface 25 (see P6).
  • the MPS setting table 51 is stored in the memory (main storage device) 31 having a larger memory resource than the register of the egress processing unit 15. Thereby, it is easy to increase the number of table entries. Thereby, there is an advantage that the MPS setting value to be extracted can be set with a fine granularity for each Requester-ID.
  • the MPS setting reading unit 53 reads the MPS setting value from the MPS setting table 51 of the memory 31, and the packet dividing unit 12 stores the MPS setting value in the scoreboard 14a. Thereby, in the root complex 50, the control unit 19 can extract the MPS setting value of the request source of the DMA read request with reference to the score board 14a. That is, it is not necessary for the control unit 19 to read out the MPS setting value from the MPS setting table 51 of the memory 31, and the processing speed can be improved.
  • FIG. 11 is a diagram illustrating a configuration of an information processing apparatus 1 as an example of a third embodiment.
  • the information processing apparatus 1 shown in FIG. 11 includes an MPS setting table cache 54 in the root complex 50 of the information processing apparatus 1 of the second embodiment shown in FIG.
  • the MPS setting table cache 54 is a cache memory that stores MPS setting values read from the memory 31.
  • the MPS setting table cache 54 stores the MPS setting value read from the memory 31 in association with the corresponding Requester-ID. That is, the MPS setting reading unit 53 is configured to read the MPS setting value from the MPS setting table cache 54 using the Requester-ID as a tag.
  • the MPS setting reading unit 53 refers to the MPS setting table cache 54 based on the Requester-ID of the DMA read request packet. .
  • the MPS setting value is read from the MPS setting table cache 54. Thereby, the reading process of the MPS set value to the memory 31 can be omitted.
  • the MPS setting reading unit 53 reads the MPS setting value from the MPS setting table 51 of the memory 31. Thereafter, a DMA read response packet is generated as in the second embodiment.
  • the DMA setting value is read from the MPS setting table 51 on the memory 31 each time a DMA read request occurs.
  • the MPS setting table cache 54 is provided in the root complex 50, and the MPS setting value read by the MPS setting reading unit 53 is cached in the MPS setting table cache 54.
  • the MPS setting reading unit 53 reads the MPS setting value from the MPS setting table cache 54, so that the MPS setting value reading process from the memory 31 can be omitted.
  • the processor 32 When setting the MPS setting value for each device, the processor 32 sets the same setting value as the MPS setting content set for each device in the Requester-ID or Bus-ID entry corresponding to the corresponding device in the MPS setting table 51. Is stored. If the endpoint 34 does not have an MPS setting value, the processor 32 sets the smallest possible value (for example, 128 bytes for the PCIe interface) in the corresponding entry of the MPS setting table 51.
  • the minimum setting value is set.
  • the processor 32 sets the same MPS setting value as the content set in the device on the memory address corresponding to the Requester-ID of each device in the I / O subsystem.
  • the endpoint 34 may be added / deleted while the system is operating.
  • adding an end point 34 in such a system for example, when the processor 32 performs setting for incorporating the added end point 34, it is desirable to set the corresponding entry in the MPS setting table 51 as well.
  • deleting the endpoint 34 it is desirable that the corresponding entry in the MPS setting table 51 is cleared to zero or not operated.
  • FIG. 12 is a diagram illustrating a configuration of an information processing apparatus 1a as an example of a fourth embodiment.
  • the information processing apparatus 1a illustrated in FIG. 12 includes a plurality of (three or more in the example illustrated in FIG. 12) processing units 100-1 to 100-3 including a processor 32, a memory 31, a system controller 30, and a route complex 50. ing.
  • the plurality of processing units 100-1 to 100-3 are connected via a switch 33.
  • the processing unit 100-1 has the same configuration as the information processing apparatus 1 as an example of the third embodiment described above.
  • the plurality of processing units 100-1 to 100-3 have the same configuration.
  • FIG. 12 for the sake of convenience, the configuration of the egress processing unit 15 in the processing unit 100-1 is not shown. Further, in FIG. 12, only the processing unit 100-1 shows the configuration of the root complex 50 and the memory 31, and the illustration of these configurations in the other processing units 100-2 and 100-3 is omitted. .
  • reference numerals 100-1 to 100-3 are used when one of the plurality of processing units needs to be specified, but reference numeral 100 is used when referring to an arbitrary processing unit.
  • the MPS setting values of all the root complex 50 devices are registered in the MPS setting table of the memory 31 of each processing unit 100.
  • the MPS setting value of each device of each route complex 50 of the information processing apparatus 1a is stored in the MPS setting table 51 on the memory 31 of each processing unit.
  • the root complex 50 responding to the read is read as in the third embodiment.
  • the payload size corresponding to the MPS setting value of the request source root complex 50 can be determined.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Abstract

 入出力バスに備えられる入出力制御デバイス(34)からデータ取得要求を受信すると、入出力制御デバイス(34)が処理可能な第1のデータサイズ情報のコピーを格納する格納部(51)から読み出した入出力制御デバイス(34)に関する第1のデータサイズ情報のコピーと、データ転送装置(50)が処理可能な第2のデータサイズ情報(MPS設定値)とを比較し、小さい方のデータサイズ情報に基づいて前記データ取得要求に対する応答データサイズを決定する決定部(19)と、決定部(19)によって決定された前記応答データサイズに基づいて応答データを作成する作成部(20)とを備えることで、データ転送効率を向上できるようにする。

Description

データ転送装置、データ転送方法及び情報処理装置
 本発明は、データ転送装置、データ転送方法及び情報処理装置に関する。
 図13は従来のI/O(Input/Output:入出力)サブシステムを備える情報処理装置500の構成を示す図である。
 この情報処理装置500は、プロセッサ504,メモリ503,システムコントローラ502,I/Oサブシステム510及びI/Oデバイス507,508を備える。
 I/Oデバイス507,508は入出力装置であり、例えば、I/Oデバイス507はディスク装置であり、I/Oデバイス508はネットワークインタフェースである。
 メモリ503は、ROM及びRAMを含む記憶装置である。プロセッサ504は、処理装置であり、メモリ503等に格納されたOSやプログラムを実行することにより、種々の機能を実現する。システムコントローラ502は、プロセッサ504やメモリ503とI/Oサブシステム510とを接続し、データの通信制御を行なう。又、システムコントローラ502は、プロセッサ504や後述するエンドポイント506等からのリクエストに応じて、メモリ503へのデータの書込み、読み出し等も行なう。 
 I/Oサブシステム510は、情報処理装置500の内部でプロセッサ504やメモリ503とI/Oデバイス507,508とを接続するバスシステムであり、その規格として、例えば、Peripheral Component Interconnect Express(PCIe)が知られている。
 I/Oサブシステム510は、ルートコンプレックス(Root Complex)501,スイッチ505及び1つ以上のエンドポイント506を備える。
 ルートコンプレックス501は、I/Oホストブリッジであり、プロセッサ504,メモリ503及びルートコンプレックス501の間のデータ転送プロトコルとI/Oサブシステム510内のデータ転送プロトコルとの間の変換を行なう。ルートコンプレックス501は、システムコントローラ502を介してプロセッサ504やメモリ503と接続される。
 なお、ルートコンプレックス501とシステムコントローラ502との間を接続するインタフェースをシステムインタフェース501aといい、ルートコンプレックス501とスイッチ505との間を接続するインタフェースをI/Oインタフェース501bという。
 スイッチ505は、経路集約用のデバイスであり、I/Oバスに対しファンアウト機能を提供する。
 エンドポイント506は、I/Oバス構造の末端に位置する装置である。このエンドポイント506は、I/Oデバイス507,508が接続されるインタフェースである。
 I/Oサブシステム510においては、データ転送はパケットを用いて行なわれる。エンドポイント506は、メモリ503とI/Oデバイス507,508との間で高スループットのデータ転送を実現するため、一般にDMA(Direct Memory Access)方式を採用している。
 図14は従来の情報処理装置においてエンドポイント506によりDMAリード要求が行なわれた際のルートコンプレックス501の処理を示す図である。
 エンドポイント506が発行したDMA リード要求パケットは、スイッチ505を経由して、ルートコンプレックス501のI/Oインタフェース501bの入力で受信される。DMAリード要求パケットはペイロード部がないヘッダ部のみで構成される。
 ルートコンプレックス501は、DMAリード要求パケットの受信後、システムインタフェース501aを介してメモリ503にリード要求を発行し、メモリ503から応答データを受信する。データ受信後、ルートコンプレックス501は、DMAリード応答パケットを生成し、I/Oインタフェース501bに送出する。ここで、DMAリード応答パケットは、リード応答コマンド,応答先のIDを指定したヘッダ部及びペイロードを備える。
 DMAリード応答パケットは、スイッチ505を経由して、リード要求を行なったエンドポイント506に到達し、DMAリード処理が完了する。
 ここで、1つのパケットに付加されるペイロードのサイズ(ペイロードサイズ)は、例えば、以下のようにその上限を設定することができる。すなわち、ペイロードサイズの上限は、ルートコンプレックス501,スイッチ505,及びエンドポイント506の各デバイスが1パケット当りに処理できる最大のペイロードサイズ(MPSS;Max Payload Size Supported)を考慮して設定することが出来る。MPSSは、デバイス固有の値である。設定されたペイロードサイズの上限値をMPS(Max Payload Size)設定値もしくは単にMPSという。
 I/Oサブシステム510内の各デバイスは、MPS設定値を、MPSSを超えない範囲で128バイト,256バイト,512バイト,・・・などと任意に設定できる。また、MPSSはI/Oサブシステム510内の各デバイスで異なる場合があるので、MPS設定値をデバイス毎に個別に設定することができる。図13に示す例においては、ルートコンプレックス501及びスイッチ505のMPS設定値がそれぞれ512バイトであり、又、3つのエンドポイント506のMPSがそれぞれ512バイト,256バイト,128バイトである。
 MPS設定値は、主に以下に示す用途(1),(2)に用いられる。
 (1)受信パケットのペイロードサイズチェック
 ペイロード付きパケットを受信したデバイス(受信デバイス)は、受信したパケットのペイロードサイズと当該受信デバイス自身のMPS設定値とを比較する。そして、MPS設定値以下のペイロードサイズのパケットのみを処理し、パケットのペイロードサイズが大きい場合は、エラーとして、受信したデバイスがパケットを破棄する。この結果、データ転送が失敗することになる。
 (2)送信パケットに付加するペイロードサイズの上限
 ペイロード付きパケットを送信するデバイスは、送信先のデバイスが処理できるように、送信デバイスのMPS設定値に基づきパケットのペイロードサイズを決定する。MPS設定値より大きなサイズのデータを転送したい場合には、MPS設定値を上限としたペイロードサイズを有する複数のパケットを複数回に分けて送信する。
 また、I/Oサブシステム510内の各デバイスは、リード要求のデータサイズを制限するための図示しない設定レジスタを備えている。リード要求のデータサイズの最大値(Max-Read-Request-Size:MRRS設定値)は、128バイト,256バイト,512バイト,・・・などと任意の大きさに設定でき、各デバイスで個別の設定値を指定できる。
 パケットは、ヘッダ部が固定長に対してペイロードは可変長であるので、1パケット当りのペイロードサイズが大きい程、効率良くデータを転送できる。従来の情報処理装置500においては、ルートコンプレックス501がエンドポイント506のDMAリード要求に応答する際に、ルートコンプレックス501のMPS設定値を基にDMAリード応答パケットのペイロードサイズを可能な範囲で最大にすることで、データ転送の効率を上げている。
 図15は従来の情報処理装置において、エンドポイントからリード要求を受けた場合のデータ転送処理を示す図である。この図15においては、ルートコンプレックス501のMPS設定が512バイトであり、エンドポイント506から2Kバイトのリード要求パケットを受けた場合のデータ転送例を示す。
 ルートコンプレックス501は、I/Oインタフェース501bを介してエンドポイント506から2Kバイトの1つのDMAリード要求パケットを受信する。ルートコンプレックス501は、128バイト単位で分割されたメモリリード要求を、システムコントローラ502に対してシステムインタフェース501aの出力から合計で16回発行する。
 システムインタフェース501aに入力されたメモリ503からのデータ応答を契機に、ルートコンプレックス501は、最大512バイト のペイロードサイズを持つDMAリード応答パケットを生成する。そして、ルートコンプレックス501においては、作成した応答パケットをI/Oインタフェース501bに送出する。応答パケットの送出回数は最小で4回となる。
 ルートコンプレックス501においては、スループットを向上させるために効率よくデータ転送を行ないたい。そのためにMPS設定値を大きくすることが有効である。
 しかし、情報処理装置においては、デバイス毎にMPSSが異なる場合があり、且つMPS設定値をデバイス毎に設定できるため、自由にMPS設定値を設定するとデータ転送に失敗する場合がある。すなわち、上述した用途(1)に示したように、データ受信側のMPS設定値を超えるペイロードサイズでパケット送信するとデータ転送に失敗する。
 例えば、ルートコンプレックス501のMPS設定値が512バイトで設定されているI/O サブシステム510で、エンドポイント506のMPSSが128バイトでMPS設定値も128バイトと設定されるシステムを想定する。
 エンドポイント506が例えば2Kバイト のDMAリード要求した場合に、ルートコンプレックス501がペイロードサイズ512バイトのDMAリード応答パケットを発行すると、このペイロードサイズは、エンドポイント506のMPS設定値(128バイト)よりも大きい。従って、エンドポイント506においては、この受信したDMAリード応答パケットをエラーとして扱い、データ転送が失敗する。
 このデータ転送失敗はI/Oサブシステム510内のMPS設定値を独立して設定できることに起因するので、従来の情報処理装置500においては、以下の(a1),(a2)のいずれかに示すような手法を用いてシステム運用でデータ転送の失敗を回避している。
 (a1)I/Oサブシステム510内で最小のMPSSに合わせてMPS設定値を統一
 I/Oサブシステム510内において最小のMPSSを全デバイスのMPS設定値とする。これにより、どのエンドポイント506が任意のサイズのDMAリードを行なっても、ルートコンプレックス501はエンドポイント506が受信可能なDMAリード応答パケットを発行する。
 図16は従来の情報処理装置において、エンドポイントからリード要求を受けた場合のデータ転送処理を示す図である。この図16においては、エンドポイント506から2Kバイトのリード要求を受けた場合のデータ転送例であって、MPS設定値が128バイトで統一された場合のデータ転送の具体例を示す。
 ルートコンプレックス501は、I/Oインタフェース501bを介してエンドポイント506から2Kバイトの1つのDMAリード要求パケットを受信する。ルートコンプレックス501は、128バイト単位で分割されたメモリリード要求を、システムコントローラ502に対してシステムインタフェース501aの出力から合計で16回発行する。
 システムインタフェース501aに入力されたメモリ503からのデータ応答を契機に、ルートコンプレックス501は、128バイト のペイロードサイズを持つDMAリード応答パケットを生成する。そして、ルートコンプレックス501においては、作成した応答パケットをI/Oインタフェース501bに送出する。応答パケットの送出回数は最小でも16回となる。
 (a2)エンドポイント506のDMAリード要求のデータサイズの上限を設ける
 各エンドポイント506のMPS設定値は自身のMPSSを超えない範囲で設定するとともに、エンドポイント506のMRRS設定値をMPS設定値と同じ大きさにする。この場合、DMAリードのデータサイズがエンドポイント506のMPS設定値を超えることはなく、ルートコンプレックス501のDMAリード応答パケットのペイロードサイズも要求元エンドポイント506のMPS設定値を超えない。従って、DMAリードは成功する。
 図17は従来の情報処理装置において、エンドポイントからリード要求を受けた場合のデータ転送処理を示す図である。この図17においては、エンドポイント506から2Kバイトのリード要求を受けた場合のデータ転送例であって、エンドポイント506のMPS設定値及びMRRS設定値が512バイトで統一された場合のデータ転送の具体例を示す。
 この図17に示すように、エンドポイント506は、2Kバイト分のDMA リードをしたい場合であっても、512バイト のDMAリード要求を最低4回発行する。
 その後、ルートコンプレックス501は、128バイト単位で分割されたメモリリード要求を、システムコントローラ502に対してシステムインタフェース501aの出力から合計で16回発行する。
 システムインタフェース501aに入力されたメモリ503からのデータ応答を契機に、ルートコンプレックス501は、512バイト のペイロードサイズを持つDMAリード応答パケットを生成する。そして、ルートコンプレックス501においては、作成した応答パケットをI/Oインタフェース501bに送出する。応答パケットの送出回数は最小で4回となる。
特開2012-205142号公報
 従来の情報処理装置においては、ルートコンプレックス501のI/Oインタフェース501bの出力もしくは入力に余分なパケットのヘッダ部が発生してしまうため、データ転送効率を低下させるという課題がある。
 すなわち、図16に示したように、I/Oサブシステム510内で最小のMPSSに合わせてMPS設定値を統一する手法(a1)を用いるには、リード要求に対する応答パケットのペイロードサイズが小さくなるため、ルートコンプレックス501のI/Oインタフェース501bの出力バスにおけるデータスループットが減少する。又、増加した応答パケットのヘッダ部が、ルートコンプレックス501のI/Oインタフェース501bの出力バスのデータ転送を圧迫する。
 また、図17に示したように、エンドポイント506のDMA リード要求のデータサイズの上限を設ける手法(a2)を用いる場合には、DMAリードのデータサイズを任意サイズに指定できる場合(図15に示す例では1回)に比べて、DMAリード要求の発行回数が増加する(図17に示す例では4回)。従って、増加したDMAリード要求パケットのヘッダ部が、ルートコンプレックス501のI/Oインタフェース501bの入力バスのデータ転送を圧迫する。
 1つの側面では、本発明は、データ転送効率を向上できるようにすることを目的とする。
 なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の1つとして位置付けることができる。
 このため、このデータ転送装置は、入出力バスに備えられる入出力制御デバイスからデータ取得要求を受信すると、前記入出力制御デバイスが処理可能な第1のデータサイズ情報のコピーを格納する格納部から読み出した前記入出力制御デバイスに関する前記第1のデータサイズ情報のコピーと、当該データ転送装置が処理可能な第2のデータサイズ情報とを比較し、小さい方のデータサイズ情報に基づいて前記データ取得要求に対する応答データサイズを決定する決定部と、前記決定部によって決定された前記応答データサイズに基づいて応答データを作成する作成部と、前記作成部によって作成された前記応答データを送信する送信部とを備える。
 開示の技術によれば、データ転送効率を向上できる利点がある。
第1実施形態の一例としての情報処理装置の機能構成を例示する図である。 第1実施形態の一例としての情報処理装置におけるスコアボードの例を示す図である。 DMAリード要求パケットの構成例を示す図である。 第1実施形態の一例としての情報処理装置におけるMPS設定テーブルの構成を説明するための図である。 第1実施形態の一例としての情報処理装置におけるイーグレス処理部によるDMAリード応答パケットの送信処理を示すフローチャートである。 第1実施形態の一例としての情報処理装置におけるDMAリード応答パケットのペイロードサイズの決定手法の概要を示すフローチャートである。 第1実施形態の一例としての情報処理装置の制御部によるペイロードサイズの決定方法を示すフローチャートである。 第2実施形態の一例としての情報処理装置の構成を示す図である。 第2実施形態の一例としての情報処理装置におけるスコアボードの例を示す図である。 第2実施形態の一例としての情報処理装置におけるデータ転送を示すシーケンス図である。 第3実施形態の一例としての情報処理装置の構成を示す図である。 第4実施形態の一例としての情報処理装置の構成を示す図である。 従来のI/Oサブシステムを備える情報処理装置の構成を示す図である。 従来の情報処理装置においてエンドポイントによりDMAリード要求が行なわれた際のルートコンプレックスの処理を示す図である。 従来の情報処理装置において、エンドポイントからリード要求を受けた場合のデータ転送処理を示す図である。 従来の情報処理装置において、エンドポイントからリード要求を受けた場合のデータ転送処理を示す図である。 従来の情報処理装置において、エンドポイントからリード要求を受けた場合のデータ転送処理を示す図である。
 以下、図面を参照して本データ転送装置、データ転送方法及び情報処理装置に係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形(実施形態を組み合わせる等)して実施することができる。又、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
 (A)第1実施形態
 図1は第1実施形態の一例としての情報処理装置1の機能構成を例示する図である。本情報処理装置1は、I/Oバスシステムとして、例えばPCIeバスを備える。
 第1実施形態の情報処理装置1は、図1に示すように、プロセッサ32,メモリ31,システムコントローラ30,ルートコンプレックス50,スイッチ33及び1つ以上のエンドポイント34を備える。又、情報処理装置1において、ルートコンプレックス50,スイッチ33及びエンドポイント34をI/Oサブシステム2という。
 メモリ31は、ROM及びRAMを含む記憶装置である。メモリ31のROMには、種々のソフトウェアプログラムやこのプログラム用のデータ類が書き込まれている。メモリ31上のソフトウェアプログラムは、プロセッサ32に適宜読み込まれて実行される。又、メモリ31のRAM(主記憶装置)は、一次記憶メモリあるいはワーキングメモリとして利用される。
 プロセッサ32は、種々の制御や演算を行なう処理装置であり、例えば、CPU(Central Processing Unit)である。プロセッサ32は、メモリ31や図示しない記憶装置等に格納されたOSやプログラムを実行することにより、種々の機能を実現する。
 システムコントローラ30は、プロセッサ32やメモリ31とルートコンプレックス50とを接続し、データの通信制御を行なう。システムコントローラ30は、プロセッサ32やエンドポイント34等からのリクエストに応じて、メモリ31へのデータの書込み、読み出し等も行なう。システムコントローラ30は、例えば、ホストブリッジやメモリコントローラとしての機能を備える。
 スイッチ33は、経路集約用のデバイスであり、I/Oバスに対しファンアウト機能を提供する。すなわち、スイッチ33は、エンドポイント34とルートコンプレックス50とを接続し、データの通信制御を行なう。
 エンドポイント34は、I/Oバス(入出力バス)構造の末端に位置する入出力デバイスであり、ストレージ装置やネットワークインタフェース装置等の図示しないI/O装置が接続される。
 エンドポイント34は、PCIeを利用したI/O装置であってもよく、又、PCIe以外のデバイスを接続するためのインタフェースであってもよい。
 エンドポイント34は、例えば、配下のI/O装置からDMA(Direct Memory Access)要求を受けると、要求をルートコンプレックス50に送信する。
 以下、I/O装置からのDMA要求として、特に、メモリ31のデータをリードするDMAリード要求が行なわれる場合について説明する。DMAリード要求は、エンドポイント34からDMAリード要求パケットを送信することにより行なわれる。
 ルートコンプレックス50は、スイッチ33を介してエンドポイント34と接続されている。又、ルートコンプレックス50は、システムコントローラ30を介してメモリ31及びプロセッサ32とも接続されている。
 ルートコンプレックス50は、I/Oバス構造のルートデバイスであり、プロトコル変換を行なって、エンドポイント34から送信されるPCIeのパケットと、メモリ31やプロセッサ32のプロトコルにしたがったパケットとを相互に転送する。
 ルートコンプレックス50は、システムコントローラ30との間を接続するシステムインタフェース26と、スイッチ33との間を接続するI/Oインタフェース25とを備える。
 エンドポイント34は、エンドポイント34配下のI/O装置からDMA要求を受けると、DMA要求をルートコンプレックス50に送信する。
 ルートコンプレックス50は、エンドポイント34からDMA要求を受信すると、このエンドポイント34から受信したDMA要求をシステムコントローラ30に転送する。
 この際、ルートコンプレックス50は、エンドポイント34から受信したDMA要求を1または2以上のDMA要求(分割リクエスト)に分割する。具体的には、ルートコンプレックス50は、エンドポイント34から受信したリード要求が要求するデータを、最終的に、システムコントローラ30との間で送受信可能なサイズ以下となるように分割し、分割したデータ毎に新たなリード要求(分割リクエスト)を生成する。そして、ルートコンプレックス50は、分割して生成したリード要求をシステムコントローラ30に送信する。
 システムコントローラ30は、ルートコンプレックス50からリード要求を受信すると、そのリード要求で要求されるデータをメモリ31から読み出す。そして、システムコントローラ30は、メモリ31から読み出したデータを、リードデータ(レスポンス)として、ルートコンプレックス50に送信する。
 ルートコンプレックス50は、システムコントローラ30からリード要求に対するリードデータを受信する。そして、ルートコンプレックス50は、受信した1または2以上のリードデータが、後述する所定のペイロードサイズになると、所定のペイロードサイズを有するDMAリード応答パケットを生成してエンドポイント34に転送する。エンドポイント34は、ルートコンプレックス50からDMAリード応答パケットを受信すると、DMA要求のあったI/O装置にデータを送信する。
 なお、上記DMA転送の処理では、ルートコンプレックス50とエンドポイント34との間、及び、ルートコンプレックス50とシステムコントローラ30との間は、それぞれパケット形式でデータの送受信が行なわれる。
 ルートコンプレックス50は、図1に示すように、イングレス処理部10,スコアボード14及びイーグレス処理部15を備える。
 イングレス処理部10は、受信部11,パケット分割部12及びシステムインタフェース送信部13を備える。
 受信部11は、エンドポイント34からDMAリード要求(DMAリード要求パケット)を受信する。そして、受信部11は、受信したDMAリード要求をパケット分割部12に出力する。
 パケット分割部12は、DMAリード要求を1または2以上のDMAリード要求(分割リクエスト)に分割する。例えば、DMA要求がDMAリード要求である場合には、このDMAリード要求を1または2以上のリード要求(分割リクエスト)に分割する。具体的には、パケット分割部12は、エンドポイント34からのDMAリード要求をシステムコントローラ30が処理可能なデータサイズに分割して、1または2以上のリード要求に分割する。パケット分割部12は、DMAリード要求を、システムコントローラ30が処理可能なサイズ(例えば、128kバイト)の1または2以上のリード要求に分割する。
 パケット分割が完了すると、パケット分割部12は、図2を用いて後述するスコアボード14にリード要求(分割リクエスト)についての情報を記憶する。
 システムインタフェース送信部13は、パケット分割部12が作成したリード要求を、順次、システムインタフェース26を介してシステムコントローラ30に送信する処理を行なう。
 エンドポイント34から受信したDMA要求がメモリ31に対するDMAリード要求である場合、分割して作成されたリード要求もメモリ31に対するDMAリード要求となる。この場合、システムコントローラ30は、ルートコンプレックス50から受信したリード要求に基づき、リード要求が要求するデータをメモリ31から読み出し、読み出したデータ(リードデータ)を含むレスポンスデータをルートコンプレックス50に送信する。
 スコアボード14は、パケット分割部12によって作成されたリード要求についての情報を格納する。
 図2は第1実施形態の一例としての情報処理装置1におけるスコアボード14の例を示す図である。
 スコアボード14は、図2に例示するように、受信リクエスト番号「No.」,コマンド,Requester-ID,分割数及びカウント数の各フィールドを対応付けて構成されている。受信リクエスト番号「No.」は、受信リクエスト(リード要求)を特定するための識別情報である。スコアボード14は、受信リクエスト番号「No.」毎に、コマンド,Requester-ID,分割数及びカウント数を含む情報を対応させて記憶する。スコアボード14には、RAMなどの揮発性メモリを使用することができる。
 受信リクエスト番号「No.」は、受信順に受信リクエストに割り当てる識別情報である。コマンドは、受信リクエストに含まれるコマンドである。受信リクエストがリード要求である場合には、リード命令が格納される。分割数は、パケット分割部12により受信リクエストから最終的に分割された分割リクエストの数である。カウント値は、レスポンスとして未送信である分割リクエストの数を示す値である。
 Requester-IDは、DMAリード要求パケットに含まれ、DMAリード要求の要求元を示す識別情報(要求元識別情報,ID)の役割をする。すなわち、Requester-IDはリード要求の要求元IDとして機能する。
 図3はDMAリード要求パケットの構成例を示す。この図3に示すDMAリード要求パケット(Memory Read)は96ビットのパケットとして構成されている。PCIeでは、DMAリード要求パケット内に16ビットのRequester-IDが含まれており、このRequester-IDがパケット発行元デバイスの識別情報として機能する。このRequester-IDには、8ビットのBus-ID,5ビットのDevice-ID及び3ビットのFunction-IDが含まれている。
 スコアボード14のRequester-IDには、このDMAリード要求パケットから抽出されたRequester-IDが格納される。
 なお、スコアボード14に格納する情報は、これらに限定されるものではなく、例えば、受信リクエストを識別するためのタグ等を格納してもよい。
 イーグレス処理部15は、システムインタフェース受信部16,レスポンスキュー17,データバッファ18,制御部19,送信部20,監視部24及びMPS設定テーブル51を備える。
 システムインタフェース受信部16は、システムコントローラ30からレスポンスデータを受信する。システムインタフェース受信部16は、レスポンスデータに含まれるヘッダ部を、レスポンスキュー17に格納する。又、システムインタフェース受信部16は、レスポンスデータに含まれるデータ部を、データバッファ18に格納する。データバッファ18に格納されるデータ部と、レスポンスキュー17に格納されるヘッダ部とは、1対1に対応づけて格納される。
 MPS設定テーブル(格納部)51は、I/Oサブシステム2内の全デバイスのMPS設定値(第1のデータサイズ情報)のコピーを記録する。すなわち、MPS設定テーブル51は、/Oサブシステム2内の全デバイスのMPS設定値のコピーを一元管理する。このMPS設定テーブル51は、イーグレス処理部15に備えられたレジスタに格納される。
 図4は第1実施形態の一例としての情報処理装置1におけるMPS設定テーブル51の構成を説明するための図である。
 MPS設定テーブル51は、この図4に示すように、Bus-IDに対してMPS設定を対応付けて構成されている。Bus-IDは、I/Oサブシステム2内のデバイスを一意に特定する識別情報であり、DMAリード要求パケットのRequester-IDに含まれている。
 図4に示す例においては、Bus-IDとして0~255の整数を用いた256のエントリが示されている。なお、このBus-IDのエントリは、PCIeで規定されているMPSレジスタと同様の値を用いることが望ましい。
 MPS設定は、MPSを示す情報であり、例えば、3ビットの情報である。図4に示す例においては、MPS設定を、尾部に“b”を付した2進数で表している。この図4に示す例においては、例えば、MPS設定“000b”がMPS=128バイトを示し、MPS設定“001b”がMPS=256バイトを示す。MPSの値をMPS設定値という。
 後述する制御部19は、スコアボード14内のRequester-IDを用いて、Requester-IDに含まれる8ビットのBus-IDに基づいてMPS設定テーブル51を参照する。そして、制御部19は、MPS設定テーブル51からRequester-IDに含まれるBus-IDと一致するエントリを選択し、その対応するMPS設定値を抽出する。
 このMPS設定テーブル51には、例えば、プロセッサ32が制御プログラムを実行することにより、各エンドポイント34のMPS設定値の設定を行なう過程で、各MPS設定値のコピーを設定する。
 なお、図4に示すMPS設定テーブル51は、Bus-IDとMPS設定値とを備えているが、これに限定されるものではなく、他の情報を格納してもよい。例えば、MPS設定テーブル51に、Requester-IDに含まれるDevice-IDやFunction-IDを格納してもよい。
 制御部19は、エンドポイント34に送信するレスポンスのペイロードサイズを決定する。制御部19は、MPSレジスタ191を備える。MPSレジスタ191はルートコンプレックス50のMPS設定値(第2のデータサイズ情報)を格納する。MPSレジスタ191は、例えば、システムコントローラ30を介して、又は、直接、プロセッサ32と接続されている。プロセッサ32がOSを実行することにより、その機能によってMPSレジスタ191にMPS設定値を書き込むことができる。
 制御部(決定部)19は、リード要求元からのリード要求のRequester-IDに含まれるBus-IDに基づいてMPS設定テーブル51を参照して、リード要求元のMPS設定値のコピーを取得し、この取得したMPS設定値のコピーと、MPSレジスタ191に格納されたMPS設定値とを比較する。
 そして、制御部19は、この比較の結果、小さい方のMPS設定値に基づいて、ペイロードサイズを決定する。なお、この制御部19によるペイロードサイズの決定方法の詳細は、図7を用いて後述する。
 なお、以下、制御部19がMPS設定テーブル51からリード要求元のMPS設定値のコピーを抽出することを、単に、リード要求元のMPS設定値を抽出するという。
 制御部19は、決定したペイロードサイズを送信部20に通知する。
 また、制御部19は、レスポンスデータの受信状態等に基づいて、パケットが発行可能であることを検出する。この場合、制御部19は、送信部20にパケットの発行を指示する。
 また、制御部19は、送信部20による、エンドポイント34へのDMAリード応答パケット(レスポンス)の送信が完了する毎に、後述するスコアボード14を参照し、送信が完了したレスポンスの分割元の受信リクエストのカウント値をデクリメントする。
 なお、カウント値の初期値には、分割数を使用することができる。カウント値が0になると、制御部19は、カウント値が0となった受信リクエストに対するレスポンスの送信が完了したと判断する。制御部19は、レスポンスの送信が完了した受信リクエストのパケット情報を、スコアボード14からクリアする。
 送信部(作成部)20は、制御部19から通知されたペイロードサイズに基づき、DMAリード応答パケットを生成し、I/Oインタフェース25を介してスイッチ33に送出する。
 送信部20は、図1に示すように、ペイロード生成部21,パケット生成部22及び出力バッファ23を備える。
 ペイロード生成部21は、データバッファ18から取り出したレスポンスデータを受信すると、制御部19から通知されたペイロードサイズのペイロードを生成する。なお、所定のペイロードサイズのペイロードを作成する手法は既知であり、その詳細な説明は省略する。そして、ペイロード生成部21は、生成したペイロードをパケット生成部22に出力する。
 パケット生成部22は、ペイロード生成部21からペイロードを受信すると、ヘッダ情報を生成して、ペイロード生成部21から受信したペイロードを含む、エンドポイント34へのレスポンスデータ(DMAリード応答パケット)を生成する。パケット生成部22は、生成したレスポンスデータを出力バッファ23に格納する。出力バッファ23は、レスポンスデータを格納する記憶装置である。
 送信部20は、出力バッファ23にレスポンスが格納されると、出力バッファ23に格納されたレスポンスデータを、エンドポイント34に出力する。
 監視部24は、出力バッファ23を監視して、送信部20のビジー(busy)状態を検出する。ビジー状態を検出すると、監視部24は、ビジー情報を生成して制御部19に通知(ビジー通知)する。このビジー情報には、例えば送信部20がビジー状態であることを示す情報が含まれる。
 なお、監視部24は、出力バッファ23の空き状況に基づいて、例えば、出力バッファ23の、新たなパケットを格納するための空き容量が一定以下の場合に、送信部20がビジー状態であると判断する。また、監視部24は、出力バッファ23からエンドポイント34へパケットを送出する通信回線の通信状況に基づいて、例えば、通信回線がビジー状態の場合に、送信部20がビジー状態であると判断してもよい。
 上述の如く構成された第1実施形態の一例としての情報処理装置1におけるイーグレス処理部15によるDMAリード応答パケットの送信処理を、図5に示すフローチャート(ステップA1~A5)に従って説明する。
 制御部19は監視部24のビジー状態を監視している(ステップA1)。監視部24からビジー通知が行なわれていない場合に、制御部19がペイロードサイズを決定し、決定したペイロードサイズを送信部20に通知する(ステップA2)。
 送信部20において、ペイロード生成部21が、制御部19から通知されたペイロードサイズに従って、データバッファ18に格納されているデータ部を用いてペイロードを生成する(ステップA3)。ペイロード生成部21は、通知されたペイロードサイズに従い、データバッファ18から1又は2以上のレスポンスデータを取りだして、ペイロードを生成する。
 パケット生成部22が、レスポンスキュー17に格納されたヘッダ部を用いてヘッダ情報を生成し、ペイロード生成部21によって作成されたペイロードを用いて、DMAリード応答パケットを生成する(ステップA4)。ヘッダ情報は、例えば、ペイロードに使用したレスポンスデータのヘッダ部に含まれる情報、例えば、送信先アドレス等に基づいて生成される。
 パケット生成部22は、生成したDMAリード応答パケットを出力バッファ23に格納し、送信部20は、このDMAリード応答パケットをスイッチ33を介して要求元のエンドポイント34に送信する(ステップA5)。
 次に、第1実施形態の一例としての情報処理装置1におけるDMAリード応答パケットのペイロードサイズの決定手法の概要を、図6に示すフローチャート(ステップB1~B7)に従って説明する。
 まず、ステップB1において、制御部19は、DMAリード要求パケットのRequester-IDのBus-IDを用いて、MPS設定テーブル51から要求元のMPS設定値を抽出する。
 ステップB2において、制御部19は、MPSレジスタ191からルートコンプレックス50のMPS設定値を読み出し、ステップB1において抽出した要求元のMPS設定値と比較する。そして、制御部19は、要求元のMPS設定値とルートコンプレックス50のMPS設定値とのうち、小さい方のMPS設定値をチェック用MPSとする。チェック用MPSはペイロードサイズを決定するために暫定的に用いられる値である。
 ステップB3において、制御部19は、チェック用MPSでリード応答パケットを生成可能かを確認し、生成可能であれば(ステップB3のYESルート参照)、その時点でのチェック用MPSをペイロードサイズとして決定する(ステップB4)。制御部19は、決定したペイロードサイズを送信部20に通知する。送信部20は、通知されたチェック用MPSをペイロードサイズとするDMAリード応答パケットを生成する。
 一方、チェック用MPSでパケット生成可能でない場合には(ステップB3のNOルート参照)、制御部19は、チェック用MPSを、その最小値となるまでの間で段階的に減少させながら、リード応答パケットが生成可能かをチェックしていく。
 すなわち、制御部19は、チェック用MPSが最小値であるか否かを確認する(ステップB5)。チェック用MPSが最小値ではない場合には(ステップB5のNOルート参照)、ステップB7において、チェック用MPSを所定量減少させ、ステップB3に戻る。なお、減少量と最小値は任意の大きさを想定しており、例えば両者を128バイトとする。
 また、チェック用MPSが最小値である場合(ステップB5のYESルート参照)、すなわち、最小となるチェック用MPSでもリード応答パケットを生成可能ではない場合は、ペイロードサイズの決定は行なわない(ステップB6)。すなわち、DMAリード応答パケットの生成は行なわずに処理を終了し、ペイロードサイズの決定やDMAリード応答パケットの生成は次のタイミングに任せる。
 次に、第1実施形態の一例としての情報処理装置1の制御部19によるペイロードサイズの決定方法を、図7に示すフローチャート(ステップC1~C12)に従って説明する。
 ステップC1において、制御部19は、監視部24から通知されるビジー情報に基づき、イーグレス処理部15(送信部20)がビジー状態か否かを判別する。
 送信部20がビジー状態であると判別すると(ステップC1のYESルート参照)、ステップC1に戻る。この場合、例えば、一定期間経過後に、制御部19は、再度ステップC1の処理を行なう。制御部19は、送信部20のビジー状態が解除されるまで、ステップC1の処理を繰り返す。なお、送信部20がビジー状態の間も、受信部11は、システムコントローラ30からレスポンスデータを受信し、レスポンスデータに含まれるヘッダ部およびデータ部を、それぞれ、レスポンスキュー17及びデータバッファ18に格納することができる。ただし、レスポンスキュー17及びデータバッファ18に空き領域がある場合に限る。
 一方、送信部20がビジー状態でないと判別すると(ステップC1のNOルート参照)、ステップC2において、制御部19は、DMAリード要求パケット(DMAリード要求)のRequester-ID(識別情報)を用いて、MPS設定テーブル51から該当する要求元のMPS設定値を抽出する。
 ステップC3において、制御部19は、要求元のMPS設定値と、MPSレジスタ191に格納されたMPS設定値とを比較し、小さい方のMPS設定値をチェック用MPSとして設定する。チェック用MPSはペイロードサイズを決定するために暫定的に用いられる値である。
 ステップC4において、チェック用MPSが第1の閾値である512バイト以上であるか否かを確認する。チェック用MPSが512バイト以上の場合(ステップC4のYESルート参照)、制御部19は、処理をステップC5に移行する。ステップC5において、制御部19は、ペイロードサイズが512バイトのレスポンスを生成可能か判別する。例えば、レスポンスデータのペイロードサイズが128バイトの場合、制御部19は、システムコントローラ30から4つ(4×128バイト=512バイト)以上レスポンスデータを受信している場合に、ペイロードサイズが512バイトのレスポンスを生成可能と判別できる。なお、このようなペイロードサイズが所定のレスポンスデータを作成可能であるか否かの判断は、既知の種々の手法を用いて行なうことができる。
 ペイロードサイズが512バイトのレスポンスを生成可能と判別した場合(ステップC5のYESルート参照)には、ステップC6において、制御部19は、ペイロードサイズを512バイトに決定する。
 チェック用MPSが512バイトより小さい場合には(ステップC4のNOルート参照)、ステップC8において、チェック用MPSが第2の閾値である256バイト以上であるか否かを確認する。チェック用MPSが256バイト以上の場合(ステップC8のYESルート参照)、制御部19は、処理をステップC9に移行する。ステップC9において、制御部19は、ペイロードサイズが256バイトのレスポンスを生成可能か判別する。又、ペイロードサイズが512バイトのレスポンスを生成できないと判別した場合にも(ステップC5のNOルート参照)、ステップC9に移行する。
 例えば、レスポンスデータのペイロードサイズが128バイトの場合、制御部19は、システムコントローラ30から2つ(2×128バイト=256バイト)以上レスポンスデータを受信している場合に、ペイロードサイズが256バイトのレスポンスを生成可能と判別できる。
 ペイロードサイズが256バイトのレスポンスを生成可能と判別した場合(ステップC9のYESルート参照)には、ステップC10において、制御部19は、ペイロードサイズを256バイトに決定する。
 チェック用MPSが256バイトより小さい場合には(ステップC8のNOルート参照)、又は、ペイロードサイズが256バイトのレスポンスを生成できないと判別した場合(ステップC9のNOルート参照)、制御部19は、処理をステップC11に移行する。ステップC11において、制御部19は、ペイロードサイズが128バイトのレスポンスを生成可能か判別する。
 例えば、レスポンスデータのペイロードサイズが128バイトの場合、制御部19は、システムコントローラ30から少なくとも1つ(1×128バイト=128バイト)以上レスポンスデータを受信している場合に、ペイロードサイズが128バイトのレスポンスを生成可能と判別できる。
 ペイロードサイズが128バイトのレスポンスを生成可能と判別した場合(ステップC11のYESルート参照)、ステップC12において、制御部19は、ペイロードサイズを128バイトに決定する。
 また、ペイロードサイズが128バイトのレスポンスを生成できないと判別した場合(ステップC11のNOルート参照)、制御部434は、処理をステップC1に戻る。この場合、新たなレスポンスデータがレスポンスキュー17に格納されると、制御部19は、ステップC1から処理を開始する。
 ペイロードサイズを決定すると(ステップC6,C10及びC12)、ステップC7において、制御部19は、決定したペイロードサイズをペイロード生成部21に通知する。以上の処理が終了すると、制御部19は、ペイロードサイズを決定する処理を終了する。
 以上に説明したイングレス処理部10は、受信部11における受信処理、パケット分割部12におけるパケット分割処理およびシステムインタフェース送信部13における送信処理などの処理要素を直列に連結してパイプライン処理を行なうことができる。この場合、受信処理、パケット分割処理および送信処理を、さらに複数の処理要素に分割してパイプライン処理を行なうこともできる。
 同様に、イーグレス処理部15においても、システムインタフェース受信部16における受信処理、送信部20における送信処理などの処理要素を直列に連結してパイプライン処理を行なうことができる。この場合、受信処理および送信処理を、さらに複数の処理要素に分割してパイプライン処理を行なうこともできる。
 また、図1に示す例においては、スコアボード14、レスポンスキュー17およびデータバッファ18等を別々に記載しているが、1つのメモリで実現してもよいし、必要に応じて、2以上のメモリで実現してもよい。
 このように、実施形態の一例としての情報処理装置1によれば、MPS設定テーブル51にI/Oサブシステム2内の全デバイスのMPS設定値のコピーを記録しておき、制御部19が、このMPS設定テーブル51を参照して、DMAリード要求パケットの発行元デバイスのMPS設定値を取得する。そして、制御部19が、リード要求元のMPS設定値を取得して、この取得したMPS設定値と、MPSレジスタ191に格納されたMPS設定値とを比較し、小さい方のMPS設定値に基づいて、ペイロードサイズを決定する。
 これにより、I/Oサブシステム2内の各デバイスが異なるMPSSを有する場合でも、各デバイスに応じた最適なペイロードサイズのレスポンスデータを作成することができ、データ転送効率を向上させることができる。その結果、ルートコンプレックス50-エンドポイント34間のバスを効率的に使用してスループットを向上させることができる。
 (B)第2実施形態
 図8は第2実施形態の一例としての情報処理装置1の構成を示す図である。この図8に示す情報処理装置1は、図1に示した第1実施形態の情報処理装置1のイーグレス処理部15にMPS設定テーブル51を備える代わりに、メモリ31にMPS設定テーブル51を備える。又、MPS設定テーブルベースアドレスレジスタ52を備えるとともに、イングレス処理部10にMPS設定読出部53を備える。更に、スコアボード14に代えてスコアボード14aを備える。
 なお、図中、既述の符号と同一の符号は同様の部分を示しているので、その説明は省略する。
 MPS設定テーブルベースアドレスレジスタ(第3格納部)52には、メモリ31上のMPS設定テーブル31の格納場所を示すアドレス情報(MPS設定テーブルアドレス情報,ベースアドレス,アクセス情報)が格納される。MPS設定テーブルアドレス情報は、メモリ31上においてMPS設定テーブル51が格納されている位置を示すアドレス情報であり、例えば、MPS設定テーブル51の先頭位置(ベースアドレス)を示す。
 MPS設定読出部53は、このMPS設定テーブルアドレス情報を参照することにより、メモリ31におけるMPS設定テーブル51にアクセスすることができる。
 MPS設定読出部(取得部)53は、受信部11からDMAリード要求が転送されると、MPSテーブルベースアドレス情報を参照して、メモリ31上のMPS設定テーブル51にアクセスする。そして、MPS設定読出部53は、DMAリード要求パケットのRequester-IDに基づいてMPS設定テーブル51を参照して、Requester-IDに対応するMPS設定値のコピーを読み出す。
 なお、MPS設定テーブル51における各MPS設定値の格納位置は、MPS設定テーブルアドレス情報によって示されるベースアドレス(MPS設定テーブル51の先頭アドレス)に所定のオフセット値を加算した値で示される。そして、本第2実施形態において、その所定のオフセット値は、Requester-ID(Bus-ID)に相当する。すなわち、ベースアドレスに要求元デバイスのRequester-IDを加算した値が、MPS設定テーブル51において当該要求元デバイスのMPS設定値の格納位置を示す。以下、要求元デバイスのRequester-IDを要求元IDオフセットという場合がある。
 このメモリ31からのMPS設定値の読み出しは、例えば、イングレス処理部10からシステムコントローラ30を介してベースアドレスと要求元IDオフセットとを通知することにより行なわれる。メモリ31から読み出されたMPS設定値は、システムコントローラ30及びシステムインタフェース受信部16を介してMPS設定読出部53に送達される。
 なお、メモリ31からのMPS設定値の読み出しには、既知の種々のメモリ読み出し手法を用いることができる。
 また、メモリ31のMPS設定テーブル51から読み出されたMPS設定値はパケット分割部12に受け渡され、パケット分割部12は、このMPS設定値を、スコアボード14aに、要求元のRequester-IDに対応付けて格納する。
 図9は第2実施形態の一例としての情報処理装置1におけるスコアボード14aの例を示す図である。
 スコアボード(第2格納部)14aは、この図9に示すように、図2に示した第1実施形態のスコアボード14にMPS設定値(MPS)のフィールドを備える。MPS設定値は、例えば3ビットのデータサイズを有する。
 MPS設定読出部53によるメモリ31からMPS設定値の読み出しが完了すると、パケット分割部12が該当するMPS設定値をリード要求情報(Requester-ID等)とともにスコアボード14aに登録する。
 本第2実施形態においては、イーグレス処理部15の制御部19は、MPS設定テーブル51を参照する変わりに、Requester-IDに基づいてスコアボード14aを参照し、このスコアボード14aのMPS設定値フィールドの値を抽出してMPS設定値として使用する。
 ルートコンプレックス50による該当MPS設定値の取得は、DMAリード応答パケットを生成する前に行なう必要がある。そのため、イングレス処理部10からメモリ31へリード要求を行なう前にMPS設定テーブル51を読み出し、スコアボード14aへ格納する。
 図10は第2実施形態の一例としての情報処理装置におけるデータ転送を示すシーケンス図である。
 ルートコンプレックス50は、I/Oインタフェース25を介してDMAリード要求パケットを受信した後(P1参照)、MPS設定読出部53が、メモリ31上のMPS設定テーブル51から該当するMPS設定値のリード要求を発行する(P2参照)。システムコントローラ30はメモリ31のMPS設定テーブル51からMPS設定値を読み出し、MPS設定読出部53に応答する(P3参照)。パケット分割部12は、スコアボード14aにMPS設定値を格納する。
 メモリ31から該当MPS設定値の読み出しが完了した後、ルートコンプレックス50はDMAリード要求のデータ読み出しを開始し(P4参照)、システムインタフェース受信部16がリード応答を受信する(P5参照)。制御部19は、DMAリード要求パケット(DMAリード要求)のRequester-IDを用いて、スコアボード14aから該当する要求元のMPS設定値を抽出する。
 制御部19は、第1実施形態と同様に、要求元のMPS設定値と、MPSレジスタ191に格納されたMPS設定値とを比較し、小さい方のMPS設定値をチェック用MPSとして設定する。
 そして、制御部19は、チェック用MPSとして設定したペイロードサイズのレスポンスを生成可能と判別した場合に、チェック用MPSをペイロードサイズとして決定し、送信部20に通知する。
 送信部20が、通知されたペイロードサイズの応答パケットを作成して、I/Oインタフェース25にDMAリード応答パケットを送信する(P6参照)。
 このように、第2実施形態の情報処理装置1によれば、MPS設定テーブル51を、イーグレス処理部15のレジスタよりもメモリ資源が大きいメモリ(主記憶装置)31に格納する。これにより、テーブルエントリ数を増やすことが容易である。これにより、抽出するMPS設定値をRequester-ID毎の細かい粒度で設定できる利点がある。
 またMPS設定読出部53が、メモリ31のMPS設定テーブル51からMPS設定値を読み出し、パケット分割部12がこのMPS設定値をスコアボード14aに格納する。これにより、ルートコンプレックス50において制御部19がスコアボード14aを参照して、DMAリード要求の要求元のMPS設定値を抽出することができる。すなわち、制御部19がメモリ31のMPS設定テーブル51からMPS設定値を読み出す必要がなく、処理速度を向上させることができる。
 (C)第3実施形態
 図11は第3実施形態の一例としての情報処理装置1の構成を示す図である。この図11に示す情報処理装置1は、図8に示した第2実施形態の情報処理装置1のルートコンプレックス50にMPS設定テーブルキャッシュ54を備える。
 MPS設定テーブルキャッシュ54は、メモリ31から読み出したMPS設定値を格納するキャッシュメモリである。このMPS設定テーブルキャッシュ54には、メモリ31から読み出したMPS設定値を、対応するRequester-IDに関連付けて格納する。すなわち、MPS設定読出部53が、このMPS設定テーブルキャッシュ54からRequester-IDをタグとしてMPS設定値を読み出すことができるよう構成されている。
 イングレス処理部10の受信部11からDMAリード要求がMPS設定読出部53に転送されると、MPS設定読出部53は、DMAリード要求パケットのRequester-IDに基づき、MPS設定テーブルキャッシュ54を参照する。
 このMPS設定テーブルキャッシュ54内に該当するMPS設定値が存在する場合には、このMPS設定値をMPS設定テーブルキャッシュ54から読み出す。これにより、メモリ31へのMPS設定値の読み出し処理を省略することができる。一方、MPS設定テーブルキャッシュ54に対応するMPS設定値が存在しない場合には、MPS設定読出部53は、メモリ31のMPS設定テーブル51からMPS設定値の読み出しを行なう。その後、第2実施形態と同様にDMAリード応答パケットを生成する。
 上述した第2実施形態の一例としての情報処理装置1においては、DMAリード要求が起きるたびにメモリ31上のMPS設定テーブル51からDMA設定値の読み出しを実行している。これにより、メモリ31とルートコンプレックス50との間でのデータ転送手順が増加する。
 本第3実施形態の一例としての情報処理装置1においては、ルートコンプレックス50にMPS設定テーブルキャッシュ54を備え、MPS設定読出部53が読み出したMPS設定値をこのMPS設定テーブルキャッシュ54にキャッシュする。これにより、MPS設定読出部53がMPS設定テーブルキャッシュ54からMPS設定値を読み出すことで、メモリ31からのMPS設定値の読み出し処理を省略することが可能となる。
 (D)第1~第3実施形態での運用について
 上述した第1~第3実施形態において、データ転送の効率を向上させるには、以下の(1),(2)に示す運用指針を適用することが望ましい。
 (1)I/O サブシステム内のMPS設定値はMPSSを超えない範囲で最大にする。ただし、システムのI/OリードにあたるDMAライト転送を成功させるためにエンドポイント34のMPS設定値はルートコンプレックス50のMPS設定値以下とする。
 (2)各デバイスのMRRS設定値は可能な限り大きくする。なお、PCIeインタフェースでは4Kバイト が最大のMRRS設定値となる。
 MPS設定テーブル51の初期化及びエントリの登録は、プロセッサ32が設定用プログラム(ソフトウェア)を実行することで実現する。具体的には、I/Oサブシステムの初期設定時に、かかる設定用ソフトウェアを併せて実行する。
 プロセッサ32は、各デバイスのMPS設定値をセットする際に、MPS設定テーブル51内の該当デバイスに対応したRequester-IDまたはBus-IDのエントリに、各デバイスにセットしたMPS設定内容と同じ設定値を格納する。
 エンドポイント34がMPS設定値を有していない場合には、プロセッサ32は、出来る限り最小の値(例えば、PCIeインタフェースでは128バイト)をMPS設定テーブル51の該当エントリにセットする。
 また、I/Oサブシステム内のデバイス構成によりMPS設定テーブル51の同一エントリに複数回設定する場合は、最小の設定値をセットする。
 上述した第2実施形態及び第3実施形態の情報処理装置1においては、メモリ31上にMPS設定テーブル51を設けるために、例えば、MPS設定テーブルアドレス情報によって示されるアドレスを先頭に連続するアドレス領域内にMPS設定テーブル51を用意する。プロセッサ32は、このMPS設定テーブル51において、I/Oサブシステム内の各デバイスのRequester-IDに対応するメモリアドレス上に、当該デバイスにセットされた内容と同じMPS設定値をセットする。
 また、情報処理装置によっては、システムが稼働中にエンドポイント34が追加・削除される場合がある。そのようなシステムにおいてエンドポイント34を追加する場合には、例えば、追加したエンドポイント34を組み込むための設定をプロセッサ32が行なう際に、MPS設定テーブル51の該当エントリも設定することが望ましい。
 一方、エンドポイント34を削除する場合は、MPS設定テーブル51の該当エントリをゼロクリアするか、もしくは操作しないでおくことが望ましい。
 (E)第4実施形態
 図12は第4実施形態の一例としての情報処理装置1aの構成を示す図である。この図12に示す情報処理装置1aは、プロセッサ32,メモリ31,システムコントローラ30及びルートコンプレックス50を備える複数(図12に示す例では3つ以上)の処理ユニット100-1~100-3を備えている。これらの複数の処理ユニット100-1~100-3は、スイッチ33を介して接続されている。
 図中、既述の符号と同一の符号は同様の部分を示しているので、その説明は省略する。すなわち、処理ユニット100-1は、上述した第3実施形態の一例としての情報処理装置1と同様の構成を有する。そして、複数の処理ユニット100-1~100-3は、互いに同様の構成を有する。
 なお、図12中においては、便宜上、処理ユニット100-1におけるイーグレス処理部15の構成の図示を省略している。又、この図12中においては、処理ユニット100-1についてのみ、ルートコンプレックス50やメモリ31の構成を示し、他の処理ユニット100-2,100-3におけるこれらの構成の図示を省略している。
 以下、処理ユニットを示す符号としては、複数の処理ユニットのうち1つを特定する必要があるときには符号100-1~100-3を用いるが、任意の処理ユニットを指すときには符号100を用いる。
 この図12に示す情報処理装置1aにおいて、各処理ユニット100のメモリ31のMPS設定テーブルに、全ルートコンプレックス50デバイスのMPS設定値が登録されている。
 各処理ユニットのメモリ31上のMPS設定テーブル51には、情報処理装置1aの各ルートコンプレックス50の各デバイスのMPS設定値がそれぞれ格納されている。これにより、あるルートコンプレックス50からスイッチ33を介して他のルートコンプレックス50上のメモリ31に対してリード要求をする場合に、前記第3実施形態と同様に、リード応答するルートコンプレックス50は、リード要求元のルートコンプレックス50のMPS設定値に応じたペイロードサイズを決定することが出来る。
 このように、本第4実施形態の一例としての情報処理装置1aによれば、複数のルートコンプレックス50が異なるMPS設定値をもつ場合でも、ルートコンプレックス50間でリードのデータ転送を効率よく行なうことができる。
 (F)その他
 そして、開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
 また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
 1,1a  情報処理装置
 2  I/Oサブシステム
 10  イングレス処理部
 11  受信部
 12  パケット分割部
 13  システムインタフェース送信部
 14,14a  スコアボード(第2格納部)
 15  イーグレス処理部
 16  システムインタフェース受信部
 17  レスポンスキュー
 18  データバッファ
 19  制御部(決定部)
 20  送信部(作成部)
 21  ペイロード生成部
 22  パケット生成部
 23  出力バッファ
 24  監視部
 25  I/Oインタフェース
 26  システムインタフェース
 30  システムコントローラ
 31  メモリ(主記憶装置)
 32  プロセッサ
 33  スイッチ
 34  エンドポイント(入出力制御デバイス)
 50  ルートコンプレックス(データ転送装置)
 51  MPS設定テーブル(格納部)
 52  MPS設定テーブルベースアドレスレジスタ(第3格納部)
 53  MPS設定読出部(取得部)
 54  MPS設定テーブルキャッシュ(キャッシュメモリ)
 100-1~100-3,100  処理ユニット
 

Claims (21)

  1.  入出力バスに備えられる入出力制御デバイスからデータ取得要求を受信すると、前記入出力制御デバイスが処理可能な第1のデータサイズ情報のコピーを格納する格納部から読み出した前記入出力制御デバイスに関する前記第1のデータサイズ情報のコピーと、当該データ転送装置が処理可能な第2のデータサイズ情報とを比較し、小さい方のデータサイズ情報に基づいて前記データ取得要求に対する応答データサイズを決定する決定部と、
     前記決定部によって決定された前記応答データサイズに基づいて応答データを作成する作成部と、
     前記作成部によって作成された前記応答データを送信する送信部と
    を備えることを特徴とする、データ転送装置。
  2.  前記決定部が、前記小さい方のデータサイズ情報に基づき、前記応答データを生成可能であるか否かを判断し、前記応答データを生成不可であると判断した場合に、前記データサイズを減少させることを特徴する、請求項1記載のデータ転送装置。
  3.  前記格納部において、前記入出力制御デバイスの前記第1のデータサイズ情報のコピーが、前記入出力制御デバイスの識別情報に関連付けて格納され、
     前記決定部が、前記リード要求に含まれる要求元識別情報に基づいて、前記格納部から、前記データ取得要求を発行した入出力制御デバイスの前記第1のデータサイズ情報のコピーを読み出すことを特徴とする、請求項1又は2記載のデータ転送装置。
  4.  前記格納部を備えることを特徴とする、請求項1~3のいずれか1項に記載のデータ転送装置。
  5.  前記格納部が当該データ転送装置の外部の主記憶装置に備えられ、
     前記データ転送装置が、
      前記主記憶装置の前記格納部から前記第1のデータサイズ情報のコピーを取得する取得部と、
      前記格納部から読み出された前記第1のデータサイズ情報のコピーを格納する第2格納部とを備え、
     前記決定部が、前記第2格納部から前記第1のデータサイズ情報のコピーを取得することを特徴とする、請求項1~3のいずれか1項に記載のデータ転送装置。
  6.  前記主記憶装置から読み出された前記第1のデータサイズ情報のコピーを格納するキャッシュメモリを備え、
     前記取得部が、前記主記憶装置の前記格納部に代えて前記キャッシュメモリから前記第1のデータサイズ情報のコピーを取得することを特徴とする、請求項5記載のデータ転送装置。
  7.  前記格納部へのアクセス情報を格納する第3格納部を備え、
     前記取得部が、前記第3格納部から読み出した前記アクセス情報を用いて、前記主記憶装置の前記格納部から前記第1のデータサイズ情報のコピーを取得することを特徴とする、請求項5又は6記載のデータ転送装置。
  8.  入出力バスに備えられるデータ転送装置におけるデータ転送方法であって、
     前記入出力バスに備えられる入出力制御デバイスからデータ取得要求を受信する処理と、
     前記入出力制御デバイスが処理可能な第1のデータサイズ情報のコピーを格納する格納部から読み出した前記入出力制御デバイスに関する前記第1のデータサイズ情報のコピーと、前記データ転送装置が処理可能な第2のデータサイズ情報とを比較して、小さい方のデータサイズ情報に基づいて前記データ取得要求に対する応答データサイズを決定する処理と、
     決定された前記応答データサイズに基づいて応答データを作成する処理と、
     作成された前記応答データを送信する処理と
    を備えることを特徴とする、データ転送方法。
  9.  前記小さい方のデータサイズ情報に基づき、前記応答データを生成可能であるか否かを判断し、前記応答データを生成不可であると判断した場合に、前記データサイズを減少させる処理を備えることを特徴する、請求項8記載のデータ転送方法。
  10.  前記格納部において、前記入出力制御デバイスの前記第1のデータサイズ情報のコピーが、前記入出力制御デバイスの識別情報に関連付けて格納され、
     前記リード要求に含まれる要求元識別情報に基づいて、前記格納部から、前記データ取得要求を発行した入出力制御デバイスの前記第1のデータサイズ情報のコピーを読み出す処理を備えることを特徴とする、請求項8又は9記載のデータ転送方法。
  11.  前記データ転送装置が、前記格納部を備えることを特徴とする、請求項8~10のいずれか1項に記載のデータ転送方法。
  12.  前記格納部が前記データ転送装置の外部の主記憶装置に備えられ、
     前記主記憶装置の前記格納部から前記第1のデータサイズ情報のコピーを取得する処理と、
     前記格納部から取得された前記第1のデータサイズ情報のコピーを第2格納部に格納する処理と、
     前記第2格納部から前記第1のデータサイズ情報のコピーを取得して、前記データ取得要求に対する応答データサイズを決定する処理と
    を備えることを特徴とする、請求項8~11のいずれか1項に記載のデータ転送方法。
  13.  前記主記憶装置の前記格納部から読み出された前記第1のデータサイズ情報のコピーをキャッシュメモリに格納する処理と、
     前記主記憶装置の前記格納部に代えて前記キャッシュメモリから前記第1のデータサイズ情報のコピーを取得する処理と
    を備えることを特徴とする、請求項12記載のデータ転送方法。
  14.  第3格納部に前記データ転送装置が、前記格納部へのアクセス情報を格納する処理と、
     前記第3格納部から読み出した前記アクセス情報を用いて、前記主記憶装置の前記格納部から前記第1のデータサイズ情報のコピーを取得する処理と
    を備えることを特徴とする、請求項12又は13記載のデータ転送方法。
  15.  プロセッサと、
     主記憶装置と、
     データ転送装置及び入出力制御デバイスを備える入出力バスと、
     前記入出力制御デバイスが処理可能な第1のデータサイズ情報のコピーを格納する格納部と、
     前記入出力制御デバイスからデータ取得要求を受信すると、前記格納部から読み出した前記入出力制御デバイスに関する前記第1のデータサイズ情報のコピーと、前記データ転送装置が処理可能な第2のデータサイズ情報とを比較し、小さい方のデータサイズ情報に基づいて前記データ取得要求に対する応答データサイズを決定する決定部と、
     前記決定部によって決定された前記応答データサイズに基づいて応答データを作成する作成部と、
     前記作成部によって作成された前記応答データを送信する送信部と
    を備えることを特徴とする、情報処理装置。
  16.  前記決定部が、前記小さい方のデータサイズ情報に基づき、前記応答データを生成可能であるか否かを判断し、前記応答データを生成不可であると判断した場合に、前記データサイズを減少させることを特徴する、請求項15記載の情報処理装置。
  17.  前記格納部において、前記入出力制御デバイスの前記第1のデータサイズ情報のコピーが、前記入出力制御デバイスの識別情報に関連付けて格納され、
     前記決定部が、前記リード要求に含まれる要求元識別情報に基づいて、前記データ取得要求を発行した入出力制御デバイスの前記第1のデータサイズ情報を読み出すことを特徴とする、請求項15又は16記載の情報処理装置。
  18.  前記データ転送装置が、前記格納部を備えることを特徴とする、請求項15~17のいずれか1項に記載の情報処理装置。
  19.  前記格納部が前記主記憶装置に備えられ、
     前記データ転送装置が、
      前記格納部から読み出した前記第1のデータサイズ情報を格納する第2格納部と、
      前記主記憶装置から前記第1のデータサイズ情報を取得し、前記第2格納部に格納する取得部とを備え、
     前記決定部が、前記第2格納部から前記第1のデータサイズ情報を取得することを特徴とする、請求項15~17のいずれか1項に記載の情報処理装置。
  20.  前記主記憶装置から読み出された前記第1のデータサイズ情報のコピーを格納するキャッシュメモリを備え、
     前記取得部が、前記主記憶装置の前記格納部に代えて前記キャッシュメモリから前記第1のデータサイズ情報のコピーを取得することを特徴とする、請求項19記載の情報処理装置。
  21.  前記データ転送装置が、前記格納部へのアクセス情報を格納する第3格納部を備え、
     前記取得部が、前記第3格納部から読み出した前記アクセス情報を用いて、前記主記憶装置の前記格納部から前記第1のデータサイズ情報のコピーを取得することを特徴とする、請求項19又は20記載の情報処理装置。
PCT/JP2013/069435 2013-07-17 2013-07-17 データ転送装置、データ転送方法及び情報処理装置 Ceased WO2015008354A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015527105A JP6011727B2 (ja) 2013-07-17 2013-07-17 データ転送装置、データ転送方法及び情報処理装置
PCT/JP2013/069435 WO2015008354A1 (ja) 2013-07-17 2013-07-17 データ転送装置、データ転送方法及び情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/069435 WO2015008354A1 (ja) 2013-07-17 2013-07-17 データ転送装置、データ転送方法及び情報処理装置

Publications (1)

Publication Number Publication Date
WO2015008354A1 true WO2015008354A1 (ja) 2015-01-22

Family

ID=52345849

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/069435 Ceased WO2015008354A1 (ja) 2013-07-17 2013-07-17 データ転送装置、データ転送方法及び情報処理装置

Country Status (2)

Country Link
JP (1) JP6011727B2 (ja)
WO (1) WO2015008354A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019159751A (ja) * 2018-03-13 2019-09-19 日本電気株式会社 データ転送装置、データ転送方法、プログラム
US12210781B2 (en) 2022-03-31 2025-01-28 Hitachi Vantara, Ltd. Storage device and protocol conversion method by storage device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009093636A (ja) * 2007-10-03 2009-04-30 Internatl Business Mach Corp <Ibm> Pciエキスプレス帯域幅を動的に平衡化するためのシステム
JP2012133643A (ja) * 2010-12-22 2012-07-12 Sony Corp 情報処理装置、情報処理システム、情報処理方法、およびプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009093636A (ja) * 2007-10-03 2009-04-30 Internatl Business Mach Corp <Ibm> Pciエキスプレス帯域幅を動的に平衡化するためのシステム
JP2012133643A (ja) * 2010-12-22 2012-07-12 Sony Corp 情報処理装置、情報処理システム、情報処理方法、およびプログラム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019159751A (ja) * 2018-03-13 2019-09-19 日本電気株式会社 データ転送装置、データ転送方法、プログラム
JP7003752B2 (ja) 2018-03-13 2022-01-21 日本電気株式会社 データ転送装置、データ転送方法、プログラム
US12210781B2 (en) 2022-03-31 2025-01-28 Hitachi Vantara, Ltd. Storage device and protocol conversion method by storage device
JP7640491B2 (ja) 2022-03-31 2025-03-05 日立ヴァンタラ株式会社 ストレージ装置及びそのプロトコル変換方法

Also Published As

Publication number Publication date
JP6011727B2 (ja) 2016-10-19
JPWO2015008354A1 (ja) 2017-03-02

Similar Documents

Publication Publication Date Title
JP6475256B2 (ja) コンピュータ、制御デバイス及びデータ処理方法
CN108062285B (zh) 一种访问NVMe存储设备的方法和NVMe存储设备
CN109582614B (zh) 针对远程存储器访问的nvm express控制器
JP6014271B2 (ja) データ処理システム及びデータ処理方法
US10491672B2 (en) Data transfer device, data receiving system and data receiving method
JP5204195B2 (ja) データ送信システムおよびデータ送信プログラム
CN108701004A (zh) 一种数据处理的系统、方法及对应装置
WO2018102967A1 (zh) NVMe over Fabric架构中数据读写命令的控制方法、存储设备和系统
US20150378640A1 (en) Nvm express controller for remote access of memory and i/o over ethernet-type networks
WO2021063160A1 (zh) 访问固态硬盘的方法及存储设备
CN106484652A (zh) 一种基于ntb硬件的多队列通信方法及系统
JP6011727B2 (ja) データ転送装置、データ転送方法及び情報処理装置
US9164947B1 (en) Method and system for inserting cookies in I/O commands
JP5836229B2 (ja) ストリーム処理装置、サーバ、及び、ストリーム処理方法
US20160267050A1 (en) Storage subsystem technologies
US20150242160A1 (en) Memory system, control method of memory system, and controller
CN117971526A (zh) 中断触发设备确定方法和装置
JP2018504689A5 (ja)
JP2014048810A (ja) ホストシステム、ストレージデバイス、および通信方法
US20160266813A1 (en) Storage subsystem technologies
US20120246263A1 (en) Data transfer apparatus, data transfer method, and information processing apparatus
JP6115253B2 (ja) プリントシステム、スプールサーバ、スプール方法、及びプログラム
US20160050236A1 (en) Data receiving device, data receiving method, and non-transitory computer readable medium
JP6625735B2 (ja) 計算機システム及び不揮発性メモリの冗長化方法
CN101741699B (zh) 加速因特网小型计算机接口数据的通信方法及其处理系统

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2015527105

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13889568

Country of ref document: EP

Kind code of ref document: A1