WO2023105603A1 - 転送管理装置、転送管理方法、および、転送管理プログラム - Google Patents

転送管理装置、転送管理方法、および、転送管理プログラム Download PDF

Info

Publication number
WO2023105603A1
WO2023105603A1 PCT/JP2021/044832 JP2021044832W WO2023105603A1 WO 2023105603 A1 WO2023105603 A1 WO 2023105603A1 JP 2021044832 W JP2021044832 W JP 2021044832W WO 2023105603 A1 WO2023105603 A1 WO 2023105603A1
Authority
WO
WIPO (PCT)
Prior art keywords
transfer
priority
request
queue
size
Prior art date
Application number
PCT/JP2021/044832
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/JP2021/044832 priority Critical patent/WO2023105603A1/ja
Publication of WO2023105603A1 publication Critical patent/WO2023105603A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Definitions

  • the present invention relates to a transfer management device, a transfer management method, and a transfer management program.
  • Non-Patent Document 1 DMA hardware transfer enables high-speed and large-capacity data transfer (Non-Patent Document 2).
  • DMA often uses an application (APL) on a server as a transfer source and an accelerator or network device on the same server as a transfer destination.
  • APL application
  • Non-Patent Document 3 describes the XDMA specifications of Xilinx Corporation, which is an example of a transfer engine.
  • the Xilinx driver has multiple channels of queues that store requests to be transferred, and takes out requests from each channel in round robin (equally) and transfers them.
  • FIG. 26 is a configuration diagram of a conventional physical server 100z.
  • a plurality of threads 11z each issues a request (illustrated as a hatched rectangle) requesting DMA transfer of data to the host DRAM 12z.
  • the DMA transfer driver 1z reads each request and sequentially transfers them to the device DRAM 51z in the device 50z via the PCIe (Peripheral Component Interconnect Express) 59z.
  • An IP core 52z which is an FPGA (Field Programmable Gate Array) in the device 50z, reads and processes each request transferred to the device DRAM 51z.
  • FIG. 27 is a configuration diagram of the DMA transfer driver 1z in FIG.
  • the DMA transfer driver 1z has a reception queue 20z, a transfer queue 30z, and a transfer engine 40z.
  • the reception queue 20z stores a request issued from each thread 11z as a pointer pointing to a data storage destination in the host DRAM 12z.
  • the transfer queue 30z stores the pointer of the request read from the reception queue 20z to notify the transfer engine 40z.
  • the transfer engine 40z sequentially reads request data in the host DRAM 12z from the pointer in the transfer queue 30z and transfers the data to the device DRAM 51z.
  • a transfer wait for the next request occurs while a certain request is being transferred.
  • the following procedure has a transfer wait problem.
  • the file transfer application A1 (first thread 11z) requests the transfer engine 40z to make a request R1 for a file with a large data size.
  • the transfer engine 40z starts transferring the request R1 because there are no other requests to be transferred at this time.
  • the call application A2 (second thread 11z) issues a high-priority call data request R2 with a short delay (TAT: Turnaround Time) requirement to the transfer engine 40z.
  • the main object of the present invention is to satisfy the transfer efficiency and delay requirements of the transferred data in a well-balanced manner when transferring data from a plurality of transfer sources to the same transfer destination.
  • the present invention is a transfer management apparatus having a host section having a host memory in which transfer source data is stored, and a device section having a device memory as a data transfer destination,
  • the host unit has a transfer control unit that performs DMA transfer from the host memory to the device memory, and a plurality of transfer queues that store requests indicating transfer requests specifying data to be DMA transferred. cage,
  • the transfer control unit creates one or more subsets from the data in the host memory specified by the request in each of the transfer queues, and DMA transfers the selected subsets of each of the transfer queues in order to the device memory. characterized by
  • the present invention when transferring data from a plurality of transfer sources to the same transfer destination, it is possible to satisfy the transfer efficiency and delay requirements of the transferred data in a well-balanced manner.
  • FIG. 1 is a configuration diagram of a physical server related to this embodiment
  • FIG. 2 is a configuration diagram of a DMA transfer driver in FIG. 1 relating to the present embodiment
  • FIG. FIG. 27 is a time chart when high-priority requests are kept waiting when the conventional DMA transfer driver shown in FIG. 26 is used
  • FIG. FIG. 4 is a time chart when the waiting time of high-priority requests is shortened by data division of requests when the DMA transfer driver of the present embodiment shown in FIG. 1 is used
  • FIG. 5 is a time chart when the waiting time of high-priority requests is further reduced than in the case of FIG. 4 by changing the size of the subset of requests according to the present embodiment
  • It is a time chart when the subset size of an own request regarding this embodiment is large.
  • FIG. 4 is a time chart when the subset size of own requests is small according to the present embodiment; 3 is a detailed configuration diagram of a DMA transfer driver according to this embodiment; FIG. FIG. 9 is a table showing the state of transfer processing of the DMA transfer driver of FIG. 8 according to the present embodiment at each time;
  • FIG. 4 is a configuration diagram of a queue ID table according to this embodiment;
  • FIG. 4 is a configuration diagram of a transfer queue management table according to the embodiment;
  • FIG. 4 is a configuration diagram of a subset size table according to the embodiment;
  • FIG. 4 is a configuration diagram of a request counter table according to the embodiment;
  • FIG. 4 is a configuration diagram of a transfer engine table according to the embodiment;
  • FIG. 4 is a configuration diagram of a priority table according to the embodiment;
  • FIG. 3 is a hardware configuration diagram of a physical server according to the embodiment;
  • FIG. FIG. 5 is a sequence diagram showing request transfer processing of a physical server according to the embodiment;
  • FIG. 18 is a sequence diagram showing the request transfer processing of the physical server following FIG. 17;
  • FIG. 10 is a flow chart showing processing of notifying a request from a reception queue to a transfer queue according to the embodiment;
  • FIG. 11 is a flow chart showing processing for notifying a transfer engine of a subset of requests from a transfer queue according to the present embodiment;
  • FIG. FIG. 10 is a flowchart showing a process of DMA-transferring a subset from a transfer engine to a device according to this embodiment;
  • FIG. 7 is a flowchart illustrating a first example of processing for changing the subset size of requests according to the present embodiment
  • FIG. 23 is a time-series graph of subset sizes of high priority and low priority in the first example of FIG. 22
  • FIG. 11 is a flowchart illustrating a second example of processing for changing the subset size of requests according to the present embodiment
  • FIG. FIG. 25 is a time-series graph of subset sizes of high priority and low priority in the second example of FIG. 24
  • FIG. 1 is a configuration diagram of a conventional physical server
  • FIG. FIG. 27 is a configuration diagram of a DMA transfer driver in FIG. 26;
  • FIG. 1 is a configuration diagram of a physical server 100.
  • a physical server (transfer management device) 100 has a host (host unit) 10 having a host DRAM (host memory) 12 in which transfer source data is stored, and a device DRAM (device memory) 51 as a data transfer destination.
  • device 50 device section.
  • the thread 11 is, for example, a network application that speeds up data processing using the accelerator device 50, and operates according to the vRAN (virtual radio access network) standard.
  • vRAN virtual radio access network
  • a plurality of threads 11 each issues a request, which is a data transfer request, to the host DRAM 12 .
  • a DMA transfer driver (transfer control unit) 1 reads the data of each request and sequentially transfers the data to the device DRAM 51 in the device 50 via the PCIe 59 .
  • An IP core 52 which is an FPGA within the device 50, reads and processes the data of each request transferred to the device DRAM51.
  • FIG. 2 is a configuration diagram of the DMA transfer driver 1 of FIG.
  • the DMA transfer driver 1 has a reception queue 20 , a transfer queue 30 and a transfer engine 40 .
  • the DMA transfer driver 1 creates one or more subsets from the data in the host DRAM 12 specified by the request in each transfer queue 30 and DMA-transfers the sequentially selected subsets of each transfer queue 30 to the device DRAM 51 .
  • the reception queue 20 stores requests issued from each thread 11 as pointers in the host DRAM 12 .
  • the transfer queue 30 stores the pointer of the request read from the reception queue 20 to notify the transfer engine 40 .
  • one transfer queue 30z is provided in one DMA transfer driver 1z, but in FIG. 2, one DMA transfer driver 1 is provided with a plurality of transfer queues 30.
  • Each transfer queue 30 is prepared, for example, for each priority of a request, and one or more requests with the same priority are stored in the same transfer queue 30 . In this specification, a request with a higher priority value is prioritized over other requests in the DMA transfer process.
  • each queue in FIG. 2 is expanded from each queue in FIG. 27 as follows.
  • the reception queue 20 corresponds to a plurality of transfer queues 30, and a request can be distributed to any one of the transfer queues 30 according to an instruction from the transfer queue determination unit 21 of FIG.
  • Individual priorities are assigned to the plurality of transfer queues 30, and requests of the priorities are stored.
  • Each transfer queue 30 is extended to enqueue (insert into the queue) a single request and then dequeue (remove from the queue) the request divided into multiple subsets. Therefore, the transfer queue 30 may have separate areas for storing requests before division and areas for storing subsets after division.
  • the transfer engine 40 is extended so that subsets from a plurality of transfer queues 30 can be sequentially read and transferred according to instructions from the transfer queue selector 41 of FIG.
  • a "subset" of the request that is, one I will call it a split request.
  • the transfer engine 40 sequentially reads requests in the host DRAM 12 from pointers in the transfer queue 30 and transfers the requests to the device DRAM 51 . Each transfer engine 40 does not accept the next request until the transfer of the request accepted by itself is completed. When the transfer engine 40 enters a ready state in which no transfer is being performed, if there is only one transfer queue 30 with a subset, the transfer engine 40 takes out the subset from the transfer queue 30 and transfers it.
  • the transfer engine 40 takes out and transfers the subsets from the transfer queues 30 selected in order by a method such as round robin.
  • the selection method of the transfer queue 30 may be flexibly changed to round robin, weighted round robin, or the like, but logic with relatively light load is preferable.
  • a plurality of transfer engines 40 may be provided within one DMA transfer driver 1 . Each transfer engine 40 can perform transfer processing in parallel unless requests are transferred to the same transfer destination at the same time.
  • FIG. 3 is a time chart when high-priority requests R2 and R3 are kept waiting when the conventional DMA transfer driver 1z shown in FIG. 26 is used.
  • the horizontal axis of the time chart indicates time slots (time t0 to t9), and the vertical axis indicates requests stored in each component in physical server 100z at each time.
  • pointers are issued in the order of three types of requests R1, R2, and R3 in the reception queue 20z.
  • the request R1 has a large data size but has a low priority, and the requests R2 and R3 have a small data size but have a high priority (with strict TAT requirements).
  • the pointers of requests R1, R2, and R3 are enqueued from the reception queue 20z into the transfer queue 30z in this order.
  • the transfer engine 40z reads the request R1 from the transfer queue 30z and DMA transfers it from the host DRAM 12z to the device DRAM 51z.
  • the request R1 is first stored in the IP core 52z(#1) after time t6.
  • the transfer engine 40z reads the remaining requests R2 and R3 from the transfer queue 30z and DMA transfers them.
  • the request R2 arrives at the IP core 52z(#1) at time t6
  • the request R3 arrives at the IP core 52z(#2) at time t7.
  • the high-priority requests R2 and R3 failed to comply with the delay requirement due to the long waiting time caused by the request R1 from time t3 to t5.
  • FIG. 4 is a time chart when the waiting time of high-priority requests R2 and R3 is reduced by data division of requests when the DMA transfer driver 1 of this embodiment shown in FIG. 1 is used.
  • time t0 similarly to time t1 in FIG. 3, pointers are issued in the order of three types of requests R1, R2, and R3 in the reception queue 20 (the priority and size of each request, and the illustrated painting pattern are also (identical to FIG. 3).
  • a low-priority transfer queue 30 (#1) is assigned a low-priority request R1
  • a high-priority transfer queue 30 (#2) is assigned high-priority requests R2 and R3.
  • the pointer of each request is enqueued in the transfer queue 30, so the size of the requests is not directly shown in the time chart.
  • the requests in the transfer queue 30 are then divided into a plurality of subsets of the same determined size until they are dequeued.
  • Each of the high priority requests R2 and R3 is divided into two, and the low priority request R1 is divided into twelve.
  • the transfer engine 40 sequentially (round robin) reads subsets from the two transfer queues 30 and DMA transfers them from the host DRAM 12 to the device DRAM 51 .
  • the requests R2 and R3 that enter the DMA transfer driver 1 later at time t0 are transferred through the interval between the divisions of the request R1 that entered earlier at time t0, thereby suppressing the delay. rice field.
  • FIG. 5 is a time chart when the waiting time of high-priority requests is further reduced than in the case of FIG. 4 by changing the subset size of requests.
  • the DMA transfer driver 1 refers to the priority of each request to determine the size of the subset. Times t0 and t1 are the same in FIGS. One or more subsets are generated from the requests in the transfer queue 30 according to the size according to the priority of each request.
  • the DMA transfer driver 1 (transfer size determination unit 33 in FIG. 8) increases the subset size as the priority is higher.
  • the high-priority requests R2 and R3 are not divided and become subsets one by one.
  • a low-priority request R1 is divided into twelve.
  • the transfer engine 40 sequentially (round robin) reads subsets from the two transfer queues 30 and DMA transfers them from the host DRAM 12 to the device DRAM 51 .
  • FIG. 6 is a time chart when the subset size of own request R1 is large.
  • the subset size of its own request R1 it is divided into two subsets and DMA-transferred.
  • the other request R2 started DMA transfer at time t3 and arrived at the IP core 52 (#2) at time t4. Therefore, the amount of one-time transfer of the own request R1 increases, and the other request R2 cannot be transferred during that time, so transfer interruption (preemption) is less likely to occur. Therefore, the throughput of the own request R1 increases, and the TAT of the other request R2 deteriorates.
  • FIG. 7 is a time chart when the subset size of own request R1 is small.
  • the subset size of own request R1 it is divided into four subsets and DMA-transferred.
  • the other request R2 started DMA transfer at time t2 and arrived at the IP core 52 (#2) at time t3. Therefore, the amount of one-time transfer of the own request R1 is reduced, and the other request R2 can be transferred in between, making the transfer more likely to be interrupted. Therefore, the throughput of the own request R1 is reduced, and the TAT of the other request R2 is improved.
  • the subset size is a trade-off between throughput and TAT. Therefore, the DMA transfer driver 1 attempts optimization by flexibly changing the subset size. By changing the subset size, the frequency with which the request is interrupted by transfer requests from other requests is adjusted (details are shown in FIGS. 22 to 25).
  • FIG. 8 is a detailed block diagram of the DMA transfer driver 1.
  • the DMA transfer driver 1 includes, in addition to the reception queue 20, M transfer queues 30, and N transfer engines 40 described with reference to FIG. It has a counter 31 , a request division unit 32 , a transfer size determination unit 33 , a transfer queue selection unit 41 , an integrated control unit 42 and an external controller IF 61 .
  • each arrow of FIG. 8 is as follows. ⁇ Bold solid arrow: Request path ⁇ Bold dashed arrow: Management signal (m-plane) path ⁇ Thin solid arrow: Control signal (c-plane) path
  • the transfer queue determination unit 21 dequeues the request in the reception queue 20 and determines which transfer queue 30 to enqueue.
  • the request counter 31 counts the number of requests stored in each transfer queue 30 .
  • the priority determination unit 22 determines the priority of the request based on the content of the request or information from the external controller IF61.
  • the transfer size determination unit 33 determines the size of subsets when splitting a request based on the priority of the request and the communication requirements (TAT, throughput, etc.) required for the request. For example, the transfer size determining unit 33 desirably increases the size of the subset as the priority of the request is higher. As a result, the higher the priority of the request, the more data can be transferred at once, so the throughput and TAT of the high priority request can be improved.
  • the request division unit 32 divides the request based on the size determined by the transfer size determination unit 33 .
  • the transfer queue selector 41 determines from which transfer queue 30 an empty transfer engine 40 dequeues a subset.
  • the integrated control unit 42 sets setting information for the transfer size determining unit 33 (designation of the minimum and maximum size of the subset) and setting information for the transfer queue selection unit 41 (designation of the read count policy). control.
  • a control signal from the external controller 60 is notified inside the DMA transfer driver 1 such as the priority determining unit 22 via the external controller IF 61 .
  • external cooperation can be executed, such as the external controller 60 notifying the priority determining unit 22 of the priority of each request.
  • the DMA transfer driver 1 includes the request division unit 32 and the transfer queue selection unit 41, so that each request is divided into a plurality of subsets with a fixed size and then DMA-transferred as described with reference to FIG. .
  • the processing does not refer to the priority of each request, so the development cost for modifying the DMA transfer driver 1 can be eliminated.
  • the DMA transfer driver 1 includes the priority determination unit 22 and the transfer size determination unit 33 in addition to the request division unit 32 and the transfer queue selection unit 41, so that each Requests are divided into one or more subsets according to priority and then DMA transferred. As a result, the completion of the DMA transfer of the requests R2 and R3 could be made earlier than in FIG. On the other hand, some development costs are required for modifying the DMA transfer driver 1 to allow the DMA transfer driver 1 to recognize the priority of each request.
  • FIG. 9 is a table 70 showing the state of transfer processing of the DMA transfer driver 1 of FIG. 8 at each time.
  • Table 70 shows the data stored in reception queue 20, transfer queue 30 (#1 for low priority, #2 for high priority), transfer engine 40, and device DRAM 51, which are components for each of times T1 to T7. .
  • the components of the DMA transfer driver 1 shown in FIG. 8 will be clarified by explaining the contents of the table 70 along the time T1 to T7.
  • request B (low priority) is received in the reception queue 20 .
  • the two transfer queues 30 (#1, #2) are both empty (no stored entries), and the transfer engine 40 is also empty.
  • the transfer queue determination unit 21 enqueues the request B dequeued from the reception queue 20 to the transfer queue 30 (#1) determined by referring to the priority of the request determined by the priority determination unit 22 .
  • the transfer size determining unit 33 refers to the subset size table 73 of FIG. 12 and determines the division size and division number (here, 2) of the request B in the transfer queue 30 (#1).
  • the request dividing unit 32 divides the request B into two subsets of requests B1 and B2.
  • the transfer queue selection unit 41 dequeues the request B1 from the transfer queue 30 (#1) selected by referring to the transfer engine table 75 of FIG. 14, and requests the transfer engine 40 to perform DMA transfer.
  • the transfer engine 40 DMA-transfers the request B1 to the device DRAM 51 .
  • request A (high priority) is received in the reception queue 20 .
  • the transfer queue determination unit 21 enqueues the request A dequeued from the reception queue 20 to the transfer queue 30 (#2) determined by referring to the priority of the request determined by the priority determination unit 22 .
  • the request dividing unit 32 divides the request A in the transfer queue 30 (#2) into one subset because the original size is small.
  • the transfer queue selection unit 41 refers to the transfer engine table 75 and dequeues the request A of the transfer queue 30 (#2) instead of the request B2 of the transfer queue 30 (#1) as the next processing target.
  • the transfer engine 40 DMA-transfers the request A to the device DRAM 51 .
  • the request A which arrived at the reception queue 20 later than the request B, was transmitted with priority over the request B2, thereby keeping the TAT.
  • FIG. 10 is a configuration diagram of the queue ID table 71. As shown in FIG. A transfer queue ID is registered in the queue ID table 71 for each priority.
  • the transfer queue determination unit 21 refers to the queue ID table 71 and selects the transfer queue 30 of the transfer destination.
  • the integrated control unit 42 writes entries in the queue ID table 71 in advance.
  • FIG. 11 is a configuration diagram of the transfer queue management table 72. As shown in FIG. The transfer queue management table 72 registers the usage status for each transfer queue ID.
  • the transfer queue determination unit 21 refers to the transfer queue management table 72, which is held by the integrated control unit 42, and checks whether the transfer queue 30 can be used.
  • the integrated control unit 42 updates the latest status of the transfer queue 30 as an entry in the transfer queue management table 72 as needed.
  • FIG. 12 is a configuration diagram of the subset size table 73.
  • the subset size table 73 registers a subset size range (minimum size, maximum size) and a subset size for each time slot (slot 0, slot 1, . . . ) for each transfer queue ID.
  • the request dividing unit 32 refers to the subset size table 73 to determine the size to divide each request.
  • the integrated control unit 42 sets the subset size range of the subset size table 73 in advance. Based on the request counter table 74 (FIG. 13), the transfer size determining unit 33 writes the subset size for each time slot to the subset size table 73 within the range of the subset size.
  • FIG. 13 is a configuration diagram of the request counter table 74. As shown in FIG.
  • the request counter table 74 stores the total number of requests arriving at the transfer queue 30 and the number of requests in each time slot (slot 0, slot 1, . . . ) for each transfer queue ID (for each priority). ).
  • the transfer size determination unit 33 refers to the request counter table 74 to determine the size of the subset.
  • FIG. 14 is a configuration diagram of the transfer engine table 75.
  • a transfer engine table 75 is prepared for each transfer engine 40 .
  • the subset read count and the size of the subset are associated with each transfer queue ID. These contents are set from the integrated control unit 42 .
  • the transfer queue selector 41 refers to the transfer engine table 75 to determine from which transfer queue 30 a specific transfer engine 40 should dequeue the subset. For example, in the transfer engine table 75 of FIG. 14, the read count is 1 for each. Therefore, the transfer queue selection unit 41 reads one subset from the transfer queue (0) this time, and then reads one subset from the transfer queue (1) next time. Note that when the size of the subset read out reaches the value registered in the transfer engine table 75 instead of the number of times of reading, the transfer queue selection unit 41 switches to dequeue the subset from another transfer queue 30 next time. may
  • FIG. 15 is a configuration diagram of the priority table 76.
  • the priority determining unit 22 determines the priority of requests issued from each thread 11 as exemplified in (Method 1) to (Method 3) below.
  • the thread 11 individually passes the priority to the DMA transfer driver 1 as a parameter for each request without referring to the priority table 76 .
  • An API (Application Programming Interface) example of the thread 11 for parameter passing is implemented by a data write command "write(priority, *buf, size);”.
  • the API of this write command is an API to the effect that the data of the data size of size from the pointer position of *buf in the host DRAM 12 is written to the device DRAM 51 with the priority of priority.
  • Method 2 By referring to the base priority of the priority table 76, a fixed priority is set for each request of a specific thread ID, even over time. For example, in the priority table 76 of FIG. 15, it is determined that thread #1 has priority "0" and thread #2 has priority "2". (Method 3) Referring to the priority of each time slot (t1, t2, t3, . priority dynamically depending on the For example, in the priority table 76 of FIG. 15, when the time slot is t2, the thread #1 is assigned priority "1" and the thread #2 is assigned priority "2".
  • FIG. 16 is a hardware configuration diagram of the physical server 100.
  • Physical server 100 is configured as computer 900 having CPU 901 , RAM 902 , ROM 903 , HDD 904 , communication I/F 905 , input/output I/F 906 and media I/F 907 .
  • Accelerator 905 is device 50 ( FIG. 1 ) that processes at least one of data from communication I/F 908 and data from RAM 902 at high speed.
  • a type look-aside type that returns the execution result to the CPU 901 or the RAM 902 after executing the processing from the CPU 901 or the RAM 902 may be used.
  • accelerator 905 a type (in-line type) that performs processing by entering between the communication I/F 908 and the CPU 901 or the RAM 902 may be used.
  • Accelerator 905 is connected to external device 915 via communication I/F 908 .
  • Input/output I/F 906 is connected to input/output device 916 .
  • a media I/F 907 reads and writes data from a recording medium 917 .
  • the CPU 901 controls each processing unit by executing a program (also called an application or an app for short) read into the RAM 902 .
  • This program can be distributed via a communication line or recorded on a recording medium 917 such as a CD-ROM for distribution.
  • FIG. 17 is a sequence diagram showing request transfer processing of the physical server 100.
  • the priority determining unit 22 reads the metadata (description information) of the request from the reception queue 20 (S201), and notifies the transfer queue determining unit 21 of the extracted priority information of the request (S202). Based on the priority information of the request, the transfer queue determining unit 21 determines the storage destination of the request as the transfer queue information (#0) (S203). The transfer queue determination unit 21 enqueues the request dequeued from the reception queue 20 to the transfer queue 30 (#0) (S204).
  • FIG. 18 is a sequence diagram showing the request transfer processing of the physical server 100 following FIG.
  • the transfer queue selector 41 checks whether or not a request is stored in the transfer queue 30 (#0) (S211), and receives notification of the stored request (S212).
  • the transfer engine 40 (#0) is in an idle state, not in transfer, and notifies the transfer queue selector 41 that new requests can be accepted (S213).
  • the transfer queue selection unit 41 requests the transfer queue 30 (#0) to transfer the request notified in S212 to the transfer engine 40 (#0) notified in S213 (S214).
  • the request dividing unit 32 receives the request requested to be transferred in S214 (S215), divides it into subsets, and notifies the transfer engine 40 (#0) of the subsets (S216).
  • FIG. 19 is a flow chart showing the process of notifying the transfer queue 30 of a request from the reception queue 20 .
  • the transfer queue determination unit 21 determines whether or not a new request has been received from the thread 11 to the reception queue 20 (S101). If Yes in S101, the metadata (description information) of the request is transmitted from the reception queue 20 to the priority determination unit 22 (S102). If No in S101, proceed to S103.
  • the transfer queue determination unit 21 determines whether or not there is a request for which transfer queue information to be enqueued has been determined (S103). If No in S103, the process returns to S101.
  • the transfer queue determining unit 21 determines whether or not there is a vacancy in the transfer queue 30 indicated by the determined transfer queue information (S104). If No in S104, the process returns to S101. If Yes in S104, the transfer queue determining unit 21 transmits (enqueues) the request to the transfer queue 30 based on the transfer queue information (S105).
  • FIG. 20 is a flow chart showing the process of notifying the transfer engine 40 of a subset of requests from the transfer queue 30 .
  • the transfer queue selector 41 selects the transfer queue 30 to dequeue the request. Then, the transfer queue selection unit 41 determines whether or not it has received from the transfer engine 40 that is available (S111). If No in S111, the process returns to S111. If Yes in S111, the request dividing unit 32 divides the requests in the transfer queue 30 into subsets. The transfer size determination unit 33 determines the size of the subset. Then, the transfer queue selection unit 41 transmits the divided subsets to the transfer engine 40 that has received the reception availability notification in S111 (S112). Further, the transfer queue selection unit 41 notifies the number of sent subsets (the number of requests for each priority) to the request counter 31 to update the request counter table 74 (S113).
  • FIG. 21 is a flow chart showing the process of DMA transferring a subset from transfer engine 40 to device 50 .
  • the transfer engine 40 determines whether or not the previous subset is being transferred (S121). If Yes in S121, the process returns to S121. If No in S121, the transfer queue selection unit 41 determines whether or not data of a subset to be transferred exists in any of the transfer queues 30 serving as read destinations (S122). If No in S122, the process returns to S121. If Yes in S122, the transfer queue selection unit 41 refers to the transfer engine table 75 and the previous transfer history to determine the transfer queue 30 of the read destination this time (S123).
  • the transfer queue selection unit 41 transmits a subset transfer request to the transfer queue 30 (S124), and receives the subset from the transfer queue 30 (S125).
  • the transfer queue selector 41 transfers the subset of S125 to the transfer engine 40 (S126). As a result, the subset is DMA-transferred from the transfer engine 40 to the device 50 .
  • FIG. FIG. 22 is a flowchart illustrating a first example of processing for changing the subset size of requests.
  • the transfer size determining unit 33 sets the size of the subset created from the request data to the size of the subset with the low priority "1" during the period when the request with the high priority "2" does not enter the transfer queue 30.
  • the size of the low priority subset is controlled to be reduced. The details of subset size control will be described below with reference to the flowchart.
  • the transfer size determining unit 33 extracts a count value obtained by counting the number of requests currently stored in each transfer queue 30 (S301). When the count value of priority "2" has increased compared to the previous count value (Yes in S302), that is, when a burst request occurs, the transfer size determination unit 33 determines the transfer size corresponding to priority "1". The subset size of the queue 30 is returned to the initial value (S303). If No in S302 and the count value of priority "1" has increased by a certain amount or more compared to the previous count value (Yes in S304), the transfer size determining unit 33 determines the transfer queue corresponding to priority "1". Increase the subset size of 30 (S305). This subset size increasing process increases by a predetermined value (by +n) within a range not exceeding the maximum value.
  • FIG. 23 is a time-series graph of subset sizes of high priority and low priority in the first example of FIG.
  • the upper graph shows the count value c2(k) in time slot k with priority "2".
  • the lower graph shows the subset size s1(k) at time slot k with priority "1". This s1(k) increases to the maximum subset size s1max of priority "1" when throughput is prioritized.
  • the TAT with the other priority "2" has priority, it is reduced to the minimum subset size s1min with the priority "1".
  • period T11 priority "2" does not occur, so the subset size of priority "1” is increased to s1max to give priority to throughput.
  • period T12 priority "2” occurs, so the subset size of priority “1” is reduced to s1min, giving priority to TAT of priority "2".
  • period T13 priority "2” does not occur, so throughput is prioritized by gradually increasing the subset size of priority "1” to s1max.
  • priority "2” occurs, so the subset size of priority "1” is reduced to s1min, giving priority to TAT of priority "2".
  • period T15 priority "2” does not occur, so throughput is prioritized by gradually increasing the subset size of priority "1” to s1max.
  • FIG. 24 is a flowchart illustrating a second example of processing for changing the subset size of requests.
  • the priority "2" high priority
  • the transfer size determining unit 33 sets the size of the subset created from the request data to that of the low priority "1" while the number of high priority "2" requests entering the transfer queue 30 increases.
  • the size of the subset is reduced while the size of the low priority subset is increased during periods when the number of high priority requests entering the transfer queue 30 is reduced.
  • the transfer size determining unit 33 extracts the count value of the transfer queue 30 corresponding to the priority "2" of the time slot k (S402), and calculates s1(k) by (Equation 1) (S403).
  • the transfer size determination unit 33 updates the subset size in time slot k with priority "1" to s1(k) calculated in S403 (S404).
  • FIG. 25 is a time-series graph of subset sizes of high priority and low priority in the second example of FIG. Similar to FIG. 23, the upper graph shows c2(k) and the lower graph shows s1(k). Also, the threshold value c2P in the upper graph is a count threshold value with which priority "2" should be processed with the highest priority. In the period T21, since there is no request with the priority "2", the priority "1" is set to the maximum size s1max. In period T22, the number of requests with priority "2" increases, so the size of priority "1” is reduced. This improves the TAT for priority "2".
  • the present invention is a physical server 100 having a host 10 having a host DRAM 12 in which transfer source data is stored and a device 50 having a device DRAM 51 as a data transfer destination,
  • a host 10 has a DMA transfer driver 1 that performs DMA transfer from a host DRAM 12 to a device DRAM 51, and a plurality of transfer queues 30 that store requests indicating transfer requests for data to be DMA transferred,
  • the DMA transfer driver 1 creates one or more subsets from the data in the host DRAM 12 specified by the request in each transfer queue 30, and DMA-transfers the sequentially selected subsets of each transfer queue 30 to the device DRAM 51. characterized by
  • the transfer delay of each request is suppressed by dividing the request data before the DMA transfer.
  • the threads 11 request DMA transfer to the same device 50, while one thread 11 is transferring a large request, it is possible to transfer a request from another thread 11 that comes later. becomes. Therefore, since fairness among the threads 11 is maintained, the threads 11 with strict delay requirements can operate on the same physical server 100 as other threads 11 (noisy neighbors). In this way, regardless of the size of the data size of the request from each thread 11, by providing fair data transfer opportunities among the threads 11, when data is transferred from a plurality of transfer sources to the same transfer destination. , the transfer efficiency of the transferred data and the delay requirement can be met in a well-balanced manner.
  • each transfer queue 30 is assigned an individual priority and stores requests of that priority
  • the DMA transfer driver 1 is characterized in that the size of the subset created from the data of the request is increased as the priority of the request is higher.
  • the DMA transfer driver 1 has versatility so that it can handle the priority of each request, so it is implemented so that priority control (designation of transfer order and required bandwidth) is performed by directly linking between threads 11 Reduce development costs. Moreover, since the threads 11 with different priorities can be accommodated in the same physical server 100, the housing cost and power consumption can be reduced compared to a method in which a plurality of physical servers 100 are operated for each priority.
  • each transfer queue 30 is assigned an individual priority and stores requests of that priority
  • the DMA transfer driver 1 expands the size of the subset created from the data of the request while increasing the size of the subset with low priority while the high priority request does not enter the transfer queue 30. requests enter the transfer queue 30, the size of the low-priority subset is reduced.
  • each transfer queue 30 is assigned an individual priority and stores requests of that priority, As the size of the subset created from the request data, the DMA transfer driver 1 reduces the size of the low-priority subset while the number of high-priority requests entering the transfer queue 30 increases. It is characterized by controlling the size of the low-priority subset to be expanded during a period in which the number of high-priority requests entering the queue 30 decreases.
  • the subset size can be dynamically controlled to meet the transfer requirements of both high-priority and low-priority requests in a well-balanced manner.
  • DMA transfer driver (transfer control unit) 10 host (host part) 11 threads 12 host DRAM (host memory) 20 reception queue 21 transfer queue determination unit 22 priority determination unit 30 transfer queue 31 request counter 32 request division unit 33 transfer size determination unit 40 transfer engine 41 transfer queue selection unit 42 integrated control unit 50 device (device unit) 51 Device DRAM (device memory) 52 IP cores 59 PCIe 60 External controller 61 External controller IF 71 queue ID table 72 transfer queue management table 73 subset size table 74 request counter table 75 transfer engine table 76 priority table 100 physical server (transfer management device)

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

物理サーバ(100)のホスト(10)は、ホストDRAM(12)からデバイスDRAM(51)へのDMA転送を行うDMA転送ドライバ(1)と、DMA転送の対象となるデータの転送要求を示すリクエストを格納する複数の転送キュー(30)とを有しており、DMA転送ドライバ(1)は、各転送キュー(30)内のリクエストにより指定されたホストDRAM(12)のデータから1つ以上のサブセットを作成し、順番に選択した各転送キュー(30)のサブセットを、デバイスDRAM(51)にDMA転送する。

Description

転送管理装置、転送管理方法、および、転送管理プログラム
 本発明は、転送管理装置、転送管理方法、および、転送管理プログラムに関する。
 装置内のバスを介してデータ転送する方式は、データアクセス命令をCPUが中継するPIO(Programmed Input/Output)と、CPUを介さずにデバイスとメモリとの間でデータを直接転送するDMA(Direct Memory Access)とに分類される(非特許文献1)。
 DMAのハードウェア転送により、高速かつ大容量のデータ転送ができる(非特許文献2)。DMAは、サーバ上のアプリケーション(APL:application)を転送元とし、同一サーバ上のアクセラレータやネットワークデバイスを転送先とすることが多い。
 転送エンジンは、リクエストとして受け付けた転送対象のデータを1つずつ選択してDMA転送を行う。転送エンジンは、あるデータの転送中には、次の転送を受け付けないように調整(アービトレーション)を行う。これにより、同一の転送先を同時に使用するアプリケーションが複数ある場合でも、データの衝突を回避する。
 非特許文献3には、転送エンジンの一例であるXilinx社のXDMA仕様が記載されている。Xilinxのドライバでは、転送対象のリクエストを格納するキューが複数チャンネルあり、各チャンネルからラウンドロビン(均等)にリクエストを取り出して転送する。
東光高岳、"DMA対応と言われたら(1)"、[online]、[2021年11月26日検索]、インターネット<URL:https://uquest.tktk.co.jp/embedded/learning/lecture15-1.html> EDN Japan、"DMAのメリットって何?"、[online]、[2021年11月26日検索]、インターネット<URL:https://ednjapan.com/edn/articles/1608/18/news015.html> XILINX、"DMA/Bridge Subsystem for PCI Express v4.1 Product Guide"、[online]、[2021年11月26日検索]、インターネット<URL:https://www.xilinx.com/support/documentation/ip_documentation/xdma/v4_1/pg195-pcie-dma.pdf>
 図26は、従来の物理サーバ100zの構成図である。
 複数のスレッド11zは、それぞれデータのDMA転送を要求する旨のリクエスト(斜線が塗られた矩形として図示)をホストDRAM12zに発行する。DMA転送ドライバ1zは、各リクエストを読み取って、順番にPCIe(Peripheral Component Interconnect Express)59zを介して、デバイス50z内のデバイスDRAM51zに転送する。
 デバイス50z内のFPGA(Field Programmable Gate Array)であるIPコア52zは、デバイスDRAM51zに転送された各リクエストを読み取って処理する。
 図27は、図26のDMA転送ドライバ1zの構成図である。
 DMA転送ドライバ1zは、受付キュー20zと、転送キュー30zと、転送エンジン40zとを有する。
 受付キュー20zは、各スレッド11zから発行されたリクエストを、ホストDRAM12z内のデータの格納先を指すポインタとして格納する。転送キュー30zは、受付キュー20zから読み取ったリクエストのポインタを、転送エンジン40zに通知するために格納する。
 転送エンジン40zは、転送キュー30z内のポインタからホストDRAM12z内のリクエストのデータを順番に読み取り、そのデータをデバイスDRAM51zに向けて転送する。
 複数のアプリケーション(スレッド11z)が同じ転送先に対してDMA転送を行う際には、あるリクエストの転送中に、次のリクエストの転送待ちが発生する。例えば以下の手順では、転送待ちの問題がある。
 (手順1)ファイル転送アプリケーションA1(第1のスレッド11z)は、データサイズの大きいファイルのリクエストR1を、転送エンジン40zに依頼する。
 (手順2)転送エンジン40zは、現時点で他に転送対象のリクエストが存在しないので、リクエストR1の転送を開始する。
 (手順3)通話アプリケーションA2(第2のスレッド11z)は、遅延(TAT:Turnaround Time)要件が短い高優先な通話データのリクエストR2を、転送エンジン40zに依頼する。
 (手順4)転送エンジン40zは、リクエストR1の転送が終わるまで、リクエストR2の転送を待たせる。
 (手順5)転送エンジン40zは、リクエストR1の転送完了後に、リクエストR2の転送を完了するものの、転送待ちによりTAT要件を守れなかった。
 なお、ファイル転送アプリケーションA1と、通話アプリケーションA2とで事前に連携する仕組みを作成し、転送の順序を前もって制御するような拡張も検討する。しかし、このような拡張では、優先度の高いリクエストを先に出すことはできるものの、アプリケーションの作り込みが必要になり開発コストが高くなるので採用は避けたい。
 そこで、本発明は、複数の転送元から同じ転送先にデータ転送するときに、転送されるデータの転送効率と遅延要件とをバランスよく満たすことを主な課題とする。
 前記課題を解決するために、本発明の転送管理装置は、以下の特徴を有する。
 本発明は、転送元のデータが格納されるホストメモリを有するホスト部と、データの転送先であるデバイスメモリを有するデバイス部とを有する転送管理装置であって、
 前記ホスト部が、前記ホストメモリから前記デバイスメモリへのDMA転送を行う転送制御部と、DMA転送の対象となるデータを指定した転送要求を示すリクエストを格納する複数の転送キューとを有しており、
 前記転送制御部が、前記各転送キュー内のリクエストにより指定された前記ホストメモリのデータから1つ以上のサブセットを作成し、順番に選択した前記各転送キューのサブセットを、前記デバイスメモリにDMA転送することを特徴とする。
 本発明によれば、複数の転送元から同じ転送先にデータ転送するときに、転送されるデータの転送効率と遅延要件とをバランスよく満たすことができる。
本実施形態に関する物理サーバの構成図である。 本実施形態に関する図1のDMA転送ドライバの構成図である。 図26で示した従来のDMA転送ドライバを用いた場合に、高優先のリクエストが待たされる場合のタイムチャートである。 図1で示した本実施形態のDMA転送ドライバを用いた場合に、リクエストのデータ分割により、高優先のリクエストの待ち時間を短縮した場合のタイムチャートである。 本実施形態に関するリクエストのサブセットサイズ変更により、図4の場合よりもさらに高優先のリクエストの待ち時間を短縮した場合のタイムチャートである。 本実施形態に関する自リクエストのサブセットサイズが大きい場合のタイムチャートである。 本実施形態に関する自リクエストのサブセットサイズが小さい場合のタイムチャートである。 本実施形態に関するDMA転送ドライバの詳細な構成図である。 本実施形態に関する図8のDMA転送ドライバの転送処理の状態を各時刻で示すテーブルである。 本実施形態に関するキューIDテーブルの構成図である。 本実施形態に関する転送キュー管理テーブルの構成図である。 本実施形態に関するサブセットサイズテーブルの構成図である。 本実施形態に関するリクエストカウンタテーブルの構成図である。 本実施形態に関する転送エンジンテーブルの構成図である。 本実施形態に関する優先度テーブルの構成図である。 本実施形態に関する物理サーバのハードウェア構成図である。 本実施形態に関する物理サーバのリクエスト転送処理を示すシーケンス図である。 図17に続いて、物理サーバのリクエスト転送処理を示すシーケンス図である。 本実施形態に関する受付キューから転送キューにリクエストが通知される処理を示すフローチャートである。 本実施形態に関する転送キューから転送エンジンにリクエストのサブセットが通知される処理を示すフローチャートである。 本実施形態に関する転送エンジンからデバイスにサブセットがDMA転送される処理を示すフローチャートである。 本実施形態に関するリクエストのサブセットサイズの変更処理の第1例を示すフローチャートである。 図22の第1例における高優先および低優先それぞれのサブセットサイズの時系列グラフである。 本実施形態に関するリクエストのサブセットサイズの変更処理の第2例を示すフローチャートである。 図24の第2例における高優先および低優先それぞれのサブセットサイズの時系列グラフである。 従来の物理サーバの構成図である。 図26のDMA転送ドライバの構成図である。
 以下、本発明の一実施形態について、図面を参照して詳細に説明する。
 図1は、物理サーバ100の構成図である。
 物理サーバ(転送管理装置)100は、転送元のデータが格納されるホストDRAM(ホストメモリ)12を有するホスト(ホスト部)10と、データの転送先であるデバイスDRAM(デバイスメモリ)51を有するデバイス50(デバイス部)とを有する。
 スレッド11は、例えば、アクセラレータのデバイス50を用いてデータ処理を高速化するネットワークアプリケーションであり、vRAN(virtual Radio Access Network)の規格に従って動作する。
 複数のスレッド11は、それぞれデータの転送要求であるリクエストをホストDRAM12に発行する。DMA転送ドライバ(転送制御部)1は、各リクエストのデータを読み取って、順番にPCIe59を介して、デバイス50内のデバイスDRAM51に転送する。図26と図1とでは、DMA転送ドライバ1の内部構成に差異がある(詳細は図8)。
 デバイス50内のFPGAであるIPコア52は、デバイスDRAM51に転送された各リクエストのデータを読み取って処理する。
 図2は、図1のDMA転送ドライバ1の構成図である。
 DMA転送ドライバ1は、受付キュー20と、転送キュー30と、転送エンジン40とを有する。DMA転送ドライバ1は、各転送キュー30内のリクエストにより指定されたホストDRAM12のデータから1つ以上のサブセットを作成し、順番に選択した各転送キュー30のサブセットを、デバイスDRAM51にDMA転送する。
 受付キュー20は、各スレッド11から発行されたリクエストをホストDRAM12内のポインタとして格納する。転送キュー30は、受付キュー20から読み取ったリクエストのポインタを、転送エンジン40に通知するために格納する。
 ここで、図27では1つのDMA転送ドライバ1z内に1つの転送キュー30zを備える構成としたが、図2では、1つのDMA転送ドライバ1内に複数の転送キュー30を備える構成とした。なお、各転送キュー30は、例えば、リクエストの優先度ごとに用意され、同じ優先度となる1つ以上のリクエストが同じ転送キュー30に格納される。なお、本明細書では、優先度の数値が高いリクエストほど他のリクエストよりも優先されてDMA転送の処理が実行される。
 よって、図2の各キューは、図27の各キューから以下のように拡張される。
 受付キュー20は、複数の転送キュー30に対応し、図8の転送キュー決定部21からの指示により、それらの転送キュー30のいずれか1つにリクエストの振り分けを実行可能になる。
 複数の転送キュー30には、個別の優先度が割り当てられ、その優先度のリクエストを格納する。各転送キュー30は、1つのリクエストをエンキュー(キューに挿入)した後、そのリクエストを複数のサブセットに分割した状態でデキュー(キューから取り出し)できるように拡張される。そのため、転送キュー30は、分割前のリクエストを格納する領域と、分割後のサブセットを格納する領域とを別々に設けてもよい。
 転送エンジン40は、図8の転送キュー選択部41からの指示により、複数の転送キュー30からのサブセットを、順番に読み込んで転送できるように拡張される。
 なお、本明細書では、転送エンジン40によりDMA転送されるリクエストがもともとサイズが小さいなどの理由により、転送キュー30内で分割されなかった場合であっても、リクエストの「サブセット」(つまり、1分割のリクエスト)と呼ぶことにする。
 転送エンジン40は、転送キュー30内のポインタからホストDRAM12内のリクエストを順番に読み取り、そのリクエストをデバイスDRAM51に向けて転送する。
 各転送エンジン40は、自身が受け付けたリクエストを転送完了するまでは、次のリクエストを受け付けない。そして、転送エンジン40は、転送を行っていないready状態になった際、サブセットのある転送キュー30が1つであれば、その転送キュー30からサブセットを取り出して転送する。
 一方、DMA転送を待っているサブセットが格納されている転送キュー30が複数ある場合、転送エンジン40は、ラウンドロビンなどの方法で順番に選択した転送キュー30からサブセットを取り出して転送する。転送キュー30の選択方法は、ラウンドロビンや、重み付きラウンドロビンなど、柔軟に変更してもよいが、比較的負荷が軽いロジックが望ましい。
 なお、1つのDMA転送ドライバ1内に複数の転送エンジン40を備えてもよい。各転送エンジン40は、同時に同じ転送先にリクエストを転送しない限り、それぞれ並列に転送処理が可能である。
 以下、図3-図5のタイムチャートを参照して、図26で示した従来のDMA転送ドライバ1zと、図1で示した本実施形態のDMA転送ドライバ1とで効果の違いを説明する。
 図3は、図26で示した従来のDMA転送ドライバ1zを用いた場合に、高優先のリクエストR2,R3が待たされる場合のタイムチャートである。タイムチャートの横軸はタイムスロット(時刻t0~t9)を示し、縦軸は各時刻に物理サーバ100z内の各構成要素内に格納されるリクエストを示す。
 図3の時刻t1では、受付キュー20z内に、3種類のリクエストR1,R2,R3の順にポインタが発行される。リクエストR1はデータサイズが大きいが低優先であり、リクエストR2、R3はデータサイズが小さいが高優先(TAT要件が厳しい)である。
 時刻t2では、受付キュー20zから転送キュー30z内に、リクエストR1,R2,R3のポインタがこの順にエンキューされる。
 時刻t3~t5では、転送エンジン40zは、リクエストR1を転送キュー30zから読み取り、ホストDRAM12zからデバイスDRAM51zにDMA転送する。これにより、IPコア52z(#1)には、時刻t6以降にリクエストR1が最初に格納される。
 時刻t6では、転送エンジン40zは、残りのリクエストR2,R3を転送キュー30zから読み取り、それぞれDMA転送する。これにより、IPコア52z(#1)には、時刻t6にリクエストR2が到着し、IPコア52z(#2)には、時刻t7にリクエストR3が到着する。
 しかし、時刻t3~t5のリクエストR1による長い待ち時間の影響により、高優先のリクエストR2,R3は、遅延要件を守れなかった。
 図4は、図1で示した本実施形態のDMA転送ドライバ1を用いた場合に、リクエストのデータ分割により、高優先のリクエストR2,R3の待ち時間を短縮した場合のタイムチャートである。
 時刻t0では、図3の時刻t1と同様に、受付キュー20内に、3種類のリクエストR1,R2,R3の順にポインタが発行される(各リクエストの優先度、サイズや、図示する塗りパターンも図3と同一)。
 時刻t1では、受付キュー20内の各リクエストのポインタが2つの転送キュー30に振り分けられる。低優先の転送キュー30(#1)には、低優先のリクエストR1が振り分けられるとともに、高優先の転送キュー30(#2)には、高優先のリクエストR2,R3が振り分けられる。この時点では、各リクエストのポインタが転送キュー30にエンキューされるため、タイムチャートにはリクエストの大きさは直接は図示していない。
 そして、転送キュー30内のリクエストは、デキューされるまでに決められた同じサイズで複数のサブセットに分割される。高優先のリクエストR2,R3はそれぞれ2分割され、低優先のリクエストR1は12分割される。
 時刻t2~t3では、転送エンジン40は、2つの転送キュー30から順番に(ラウンドロビンで)サブセットを読み取り、ホストDRAM12からデバイスDRAM51にDMA転送する。
 これにより、IPコア52(#1)には、時刻t3にリクエストR2(=2つのサブセット)が到着し、IPコア52(#2)には、時刻t4にリクエストR3(=2つのサブセット)が到着する。
 一方、低優先のリクエストR1(=12個のサブセット)がIPコア52(#1)に到着するのは、時刻t6の時点となり、リクエストR2,R3の到着後になる。これにより、時刻t0で後からDMA転送ドライバ1に入ってきたリクエストR2,R3は、時刻t0で先に入っていたリクエストR1が分割された合間をぬって転送されることで、遅延を抑制できた。
 図5は、リクエストのサブセットサイズ変更により、図4の場合よりもさらに高優先のリクエストの待ち時間を短縮した場合のタイムチャートである。図5では、DMA転送ドライバ1は、リクエストごとの優先度を参照して、サブセットのサイズを決定する。
 時刻t0、t1は、図4と図5で同じである。
 転送キュー30内のリクエストからは、リクエストごとの優先度に応じたサイズに応じて、1つ以上のサブセットが生成される。ここでは、DMA転送ドライバ1(図8の転送サイズ決定部33)は、優先度が高いほど、サブセットのサイズも大きくする。その結果、高優先のリクエストR2,R3はそれぞれ分割されずに1つずつのサブセットとなる。低優先のリクエストR1は12分割される。
 時刻t2~t3では、転送エンジン40は、2つの転送キュー30から順番に(ラウンドロビンで)サブセットを読み取り、ホストDRAM12からデバイスDRAM51にDMA転送する。
 これにより、IPコア52(#1)には、時刻t2にリクエストR2(=1つのサブセット)が到着し、IPコア52(#2)には、時刻t3にリクエストR3(=1つのサブセット)が到着する。つまり、図4に比べて、高優先のリクエストR2,R3がさらに早くDMA転送を完了できた。
 なお、自リクエストのサブセットサイズの変更は、自リクエストのスループットと、他リクエストのTATとに影響する。
 図6は、自リクエストR1のサブセットサイズが大きい場合のタイムチャートである。自リクエストR1のサブセットサイズを大きくとった結果、2つのセブセットに分割してDMA転送した。その結果、他リクエストR2は、時刻t3にDMA転送を開始し、時刻t4にIPコア52(#2)に到着した。
 よって、自リクエストR1について一度の転送量が増え、その間は他リクエストR2を転送できないため、転送中断(プリエンプション)されにくくなる。そのため、自リクエストR1のスループットが大きくなり、他リクエストR2のTATが悪化する。
 図7は、自リクエストR1のサブセットサイズが小さい場合のタイムチャートである。自リクエストR1のサブセットサイズを小さくとった結果、4つのセブセットに分割してDMA転送した。その結果、他リクエストR2は、時刻t2にDMA転送を開始し、時刻t3にIPコア52(#2)に到着した。
 よって、自リクエストR1について一度の転送量が減り、他リクエストR2を合間に転送でき、転送中断されやすくなる。そのため、自リクエストR1のスループットが小さくなり、他リクエストR2のTATが向上する。
 つまり、サブセットサイズは、スループットとTATとのトレードオフとなる。よって、DMA転送ドライバ1は、サブセットサイズを柔軟に変更することで最適化を図る。サブセットサイズを変更することにより、そのリクエストが他のリクエストからの転送要求により転送中断される頻度を調整する(詳細は図22~図25)。
 図8は、DMA転送ドライバ1の詳細な構成図である。
 DMA転送ドライバ1は、図2で説明した受付キュー20と、M個の転送キュー30と、N個の転送エンジン40とに加えて、転送キュー決定部21と、優先度決定部22と、リクエストカウンタ31と、リクエスト分割部32と、転送サイズ決定部33と、転送キュー選択部41と、統合制御部42と、外部コントローラIF61とを有する。
 なお、図8の各矢印は、以下の通りである。
 ・太線実線の矢印:リクエストの経路
 ・太線破線の矢印:管理信号(m-plane)の経路
 ・細線実線の矢印:制御信号(c-plane)の経路
 転送キュー決定部21は、受付キュー20内のリクエストをデキューし、どの転送キュー30にエンキューするかを決定する。リクエストカウンタ31は、各転送キュー30に格納されるリクエストの数を計数する。優先度決定部22は、リクエストの中身または外部コントローラIF61からの情報を元に、リクエストの優先度を判断する。
 転送サイズ決定部33は、リクエストの優先度や、リクエストに求められる通信要件(TAT、スループットなど)をもとに、リクエストを分割するときのサブセットのサイズを決定する。
 例えば、転送サイズ決定部33は、リクエストの優先度が高いほど、サブセットのサイズを大きくすることが望ましい。これにより、高優先度のリクエストほど一度に多くのデータをまとめて転送できるので、その高優先度のリクエストのスループットやTATを向上できる。
 リクエスト分割部32は、転送サイズ決定部33が決定したサイズに基づいてリクエストを分割する。転送キュー選択部41は、空いた転送エンジン40が、どの転送キュー30からサブセットをデキューするかを決定する。
 統合制御部42は、転送サイズ決定部33に対する設定情報(サブセットの最小・最大サイズの指定)や、転送キュー選択部41に対する設定情報(読み出し回数ポリシーの指定)を設定するなどのDMA転送ドライバ1の制御を行う。
 外部コントローラ60からの制御信号は、外部コントローラIF61を介して、優先度決定部22などのDMA転送ドライバ1内部に通知される。これにより、外部コントローラ60が優先度決定部22に各リクエストの優先度を通知するなど、外部連携を実行できる。
 なお、DMA転送ドライバ1は、リクエスト分割部32と、転送キュー選択部41とを有することで、図4で説明したように、各リクエストを固定サイズで複数のサブセットに分割してからDMA転送する。その結果、リクエストR1よりも後着のリクエストR2,R3であってもリクエストサイズが小さいから、サブセットとしては先着となり、TAT要件を守れた。さらに、図4では、リクエストごとの優先度を参照しない処理なので、DMA転送ドライバ1への改変に伴う開発コストを不要にできた。
 また、DMA転送ドライバ1は、リクエスト分割部32と、転送キュー選択部41とに加え、優先度決定部22と、転送サイズ決定部33とを有することで、図5で説明したように、各リクエストを優先度に応じた1つ以上のサブセットにしてからDMA転送する。その結果、図4よりもさらにリクエストR2,R3のDMA転送完了を早めることができた。一方、各リクエストの優先度をDMA転送ドライバ1に認識させるためのDMA転送ドライバ1への改変に伴う開発コストが、若干必要となる。
 図9は、図8のDMA転送ドライバ1の転送処理の状態を各時刻で示すテーブル70である。
 テーブル70では、時刻T1~T7ごとに、各構成要素である受付キュー20、転送キュー30(低優先用の#1,高優先用の#2)、転送エンジン40、デバイスDRAM51の格納データを示す。
 以下、時刻T1~T7に沿ってテーブル70の内容を説明することで、図8のDMA転送ドライバ1の構成要素を明らかにする。
 時刻T1では、受付キュー20にリクエストB(低優先)を受け付ける。この時点では、2つの転送キュー30(#1,#2)はともに空(格納エントリ無し)であり、転送エンジン40も空である。
 時刻T2では、転送キュー決定部21は、受付キュー20からデキューしたリクエストBについて、優先度決定部22が決定したリクエストの優先度を参照して決定した転送キュー30(#1)にエンキューする。
 時刻T3では、転送サイズ決定部33は、図12のサブセットサイズテーブル73を参照して、転送キュー30(#1)内のリクエストBの分割サイズと分割数(ここでは2)を決定する。リクエスト分割部32は、リクエストBをリクエストB1,B2という2つのサブセットに分割する。
 時刻T4では、転送キュー選択部41は、図14の転送エンジンテーブル75を参照して選択した転送キュー30(#1)からリクエストB1をデキューし、転送エンジン40にDMA転送を依頼する。転送エンジン40は、リクエストB1をデバイスDRAM51にDMA転送する。このDMA転送中に、受付キュー20にリクエストA(高優先)を受け付ける。
 時刻T5では、転送キュー決定部21は、受付キュー20からデキューしたリクエストAについて、優先度決定部22が決定したリクエストの優先度を参照して決定した転送キュー30(#2)にエンキューする。リクエスト分割部32は、転送キュー30(#2)のリクエストAについては、もともとのサイズが小さいので分割せずに1つのサブセットとする。
 時刻T6では、リクエストB1のDMA転送が完了する。転送キュー選択部41は、転送エンジンテーブル75を参照して、転送キュー30(#1)のリクエストB2ではなく、転送キュー30(#2)のリクエストAを次の処理対象としてデキューする。転送エンジン40は、リクエストAをデバイスDRAM51にDMA転送する。
 時刻T7では、リクエストBよりも遅く受付キュー20に到着したリクエストAは、リクエストB2よりも優先的に送信されることでTATを守ることができた。
 以下、図10-図16を参照して、DMA転送ドライバ1が使用する各種のデータテーブルを説明する。
 図10は、キューIDテーブル71の構成図である。
 キューIDテーブル71には、優先度ごとに、転送キューIDが登録される。
 転送キュー決定部21は、キューIDテーブル71を参照して転送先の転送キュー30を選択する。統合制御部42は、キューIDテーブル71のエントリをあらかじめ書き込んでおく。
 図11は、転送キュー管理テーブル72の構成図である。
 転送キュー管理テーブル72には、転送キューIDごとに、その使用状況が登録される。
 統合制御部42が持っており、転送キュー決定部21は、転送キュー管理テーブル72を参照して、転送キュー30の使用可否を確認する。統合制御部42は、転送キュー30の最新状況を転送キュー管理テーブル72のエントリとして随時更新する。
 図12は、サブセットサイズテーブル73の構成図である。
 サブセットサイズテーブル73には、転送キューIDごとの、サブセットサイズの範囲(最小サイズ、最大サイズ)と各タイムスロット(スロット0、スロット1…)でのサブセットサイズが登録される。
 リクエスト分割部32は、サブセットサイズテーブル73を参照して、各リクエストを分割するサイズを決定する。統合制御部42は、サブセットサイズテーブル73のサブセットサイズの範囲を事前に設定する。転送サイズ決定部33は、リクエストカウンタテーブル74(図13)をもとに、サブセットサイズの範囲内で各タイムスロットでのサブセットサイズをサブセットサイズテーブル73に書き出す。
 図13は、リクエストカウンタテーブル74の構成図である。
 リクエストカウンタテーブル74は、転送キュー決定部21が、転送キュー30に到着したリクエストの合計数および各タイムスロット(スロット0、スロット1…)でのリクエスト数を、転送キューIDごとに(優先度ごとに)格納する。
 転送サイズ決定部33は、リクエストカウンタテーブル74を参照して、サブセットのサイズを決定する。
 図14は、転送エンジンテーブル75の構成図である。
 転送エンジンテーブル75は、転送エンジン40ごとに用意される。転送エンジンテーブル75には、転送キューIDごとに、サブセットの読み出し回数と、サブセットのサイズとが対応付けられている。これらの内容は、統合制御部42から設定される。
 転送キュー選択部41は、転送エンジンテーブル75を参照して、特定の転送エンジン40がどの転送キュー30からサブセットをデキューすればよいかを決定する。例えば、図14の転送エンジンテーブル75では、読み出し回数がそれぞれ1となっている。よって、転送キュー選択部41は、今回は転送キュー(0)からサブセットを1つ読み出したら、次回は転送キュー(1)からサブセットを1つ読み出す。
 なお、転送キュー選択部41は、読み出し回数の代わりに、読み出したサブセットサイズが転送エンジンテーブル75に登録された値に達したら、次回は別の転送キュー30からサブセットをデキューするように切り替えるようにしてもよい。
 図15は、優先度テーブル76の構成図である。
 優先度テーブル76には、スレッド11のスレッドIDごとに、ベースとなる優先度と、各タイムスロット(t1、t2、t3…)での優先度とが登録される。
 優先度決定部22は、以下の(方法1)~(方法3)に例示するように、各スレッド11から発行されるリクエストの優先度を決定する。
 (方法1)優先度テーブル76を参照せず、リクエストごとにスレッド11が個別に優先度をDMA転送ドライバ1にパラメータ渡しする。パラメータ渡しするためのスレッド11のAPI(Application Programming Interface)例は、データの書き込み命令「write(priority, *buf, size);」などで実装される。
 この書き込み命令のAPIは、ホストDRAM12内の*bufのポインタ位置からsizeのデータサイズ分のデータを、priorityの優先度でデバイスDRAM51に書き出す旨のAPIである。
 (方法2)優先度テーブル76のベースとなる優先度を参照して、特定のスレッドIDのリクエストごとに、時間経過でも固定の優先度を設定する。例えば、図15の優先度テーブル76では、スレッド#1では優先度「0」とし、スレッド#2では優先度「2」と決定する。
 (方法3)優先度テーブル76の各タイムスロット(t1、t2、t3…)での優先度を参照して、外部コントローラ60からのタイミング情報に応じたタイムスロットの優先度を設定する(時間経過に応じて動的に優先度を変更する)。例えば、図15の優先度テーブル76では、タイムスロット=t2の場合、スレッド#1では優先度「1」、スレッド#2では優先度「2」と決定する。
 図16は、物理サーバ100のハードウェア構成図である。
 物理サーバ100は、CPU901と、RAM902と、ROM903と、HDD904と、通信I/F905と、入出力I/F906と、メディアI/F907とを有するコンピュータ900として構成される。
 アクセラレータ905は、通信I/F908からのデータ、または、RAM902からのデータの少なくとも一方のデータを高速に処理するデバイス50(図1)である。なお、アクセラレータ905として、CPU901またはRAM902からの処理を実行した後にCPU901またはRAM902に実行結果を戻すタイプ(look-aside型)を用いてもよい。一方、アクセラレータ905として、通信I/F908とCPU901またはRAM902との間に入って、処理を行うタイプ(in-line型)を用いてもよい。
 アクセラレータ905は、通信I/F908を介して外部装置915と接続される。入出力I/F906は、入出力装置916と接続される。メディアI/F907は、記録媒体917からデータを読み書きする。さらに、CPU901は、RAM902に読み込んだプログラム(アプリケーションや、その略のアプリとも呼ばれる)を実行することにより、各処理部を制御する。そして、このプログラムは、通信回線を介して配布したり、CD-ROM等の記録媒体917に記録して配布したりすることも可能である。
 図17は、物理サーバ100のリクエスト転送処理を示すシーケンス図である。
 優先度決定部22は、リクエストのメタデータ(説明情報)を受付キュー20から読み取り(S201)、その中から抽出したリクエストの優先度情報を転送キュー決定部21に通知する(S202)。転送キュー決定部21は、リクエストの優先度情報をもとに、そのリクエストの格納先を転送キュー情報(#0)として決定する(S203)。
 転送キュー決定部21は、受付キュー20からデキューしたリクエストを、転送キュー30(#0)にエンキューする(S204)。
 図18は、図17に続いて、物理サーバ100のリクエスト転送処理を示すシーケンス図である。
 転送キュー選択部41は、転送キュー30(#0)内にリクエストが格納されているか否かを確認し(S211)、格納されているリクエストの通知を受ける(S212)。転送エンジン40(#0)は、転送中ではない空き状態であり、新たなリクエストの受付可能の旨を転送キュー選択部41に通知する(S213)。
 転送キュー選択部41は、S212で通知されたリクエストを、S213で通知された転送エンジン40(#0)に転送させるように、転送キュー30(#0)に要求する(S214)。
 リクエスト分割部32は、S214で転送要求されたリクエストを受けて(S215)、サブセットに分割し、そのサブセットを転送エンジン40(#0)に通知する(S216)。
 図19は、受付キュー20から転送キュー30にリクエストが通知される処理を示すフローチャートである。
 転送キュー決定部21は、スレッド11から受付キュー20に新規リクエストを受信したか否かを判定する(S101)。S101でYesなら、リクエストのメタデータ(説明情報)が、受付キュー20から優先度決定部22に送信される(S102)。S101でNoなら、S103に進む。
 転送キュー決定部21は、エンキュー先となる転送キュー情報を決定したリクエストがあるか否かを判定する(S103)。S103でNoなら、S101に戻る。
 S103でYesなら、転送キュー決定部21は、決定した転送キュー情報が示す転送キュー30に空きがあるか否かを判定する(S104)。S104でNoなら、S101に戻る。
 S104でYesなら、転送キュー決定部21は、転送キュー情報を元にリクエストを転送キュー30に送信(エンキュー)する(S105)。
 図20は、転送キュー30から転送エンジン40にリクエストのサブセットが通知される処理を示すフローチャートである。
 転送キュー選択部41は、リクエストをデキューする転送キュー30を選択する。そして、転送キュー選択部41は、空いた転送エンジン40から受付可能の旨を受信したか否かを判定する(S111)。S111でNoなら、S111に戻る。
 S111でYesなら、リクエスト分割部32は、転送キュー30内のリクエストをサブセットに分割する。サブセットのサイズは、転送サイズ決定部33が決定する。
 そして、転送キュー選択部41は、分割したサブセットを、S111で受付可能の通知を受けた転送エンジン40に送信する(S112)。また、転送キュー選択部41は、送付したサブセット数(優先度ごとのリクエスト数)をリクエストカウンタ31に通知して、リクエストカウンタテーブル74を更新させる(S113)。
 図21は、転送エンジン40からデバイス50にサブセットがDMA転送される処理を示すフローチャートである。
 転送エンジン40は、前回のサブセットを転送中か否かを判定する(S121)。S121でYesなら、S121に戻る。
 S121でNoなら、転送キュー選択部41は、読み出し先となるいずれかの転送キュー30の中に転送対象となるサブセットのデータが存在するか否かを判定する(S122)。S122でNoなら、S121に戻る。
 S122でYesなら、転送キュー選択部41は、転送エンジンテーブル75と、前回の転送履歴とを参照して、今回の読み出し先の転送キュー30を決定する(S123)。
 転送キュー選択部41は、サブセットの転送要求を転送キュー30に送信し(S124)、その転送キュー30からサブセットを受信する(S125)。転送キュー選択部41は、S125のサブセットを転送エンジン40に転送する(S126)。これにより、転送エンジン40からデバイス50にサブセットがDMA転送される。
 以下、転送サイズ決定部33によるリクエストのサブセットサイズを動的に変更する処理について、図22~図26を参照して説明する。
 図22は、リクエストのサブセットサイズの変更処理の第1例を示すフローチャートである。
 この第1例では、優先度「2」(高優先度)のリクエストの発生頻度が通常は少ないものの、ランダムな期間にバーストで(大量に)発生する場合を説明する。
 この場合、転送サイズ決定部33は、リクエストのデータから作成するサブセットのサイズとして、高優先度「2」のリクエストが転送キュー30に入ってこない期間には、低優先度「1」のサブセットのサイズを拡大し、一方、高優先度のリクエストが転送キュー30に入ってくる期間には、低優先度のサブセットのサイズを縮小するように制御する。以下、フローチャートに沿って、サブセットサイズの制御内容を説明する。
 転送サイズ決定部33は、現時点の各転送キュー30に格納されているリクエスト数をカウントしたカウント値を抽出する(S301)。
 優先度「2」のカウント値が前回のカウント値と比べて増加した場合(S302でYes)、つまりバーストでリクエストが発生した場合、転送サイズ決定部33は、優先度「1」に対応する転送キュー30のサブセットサイズを初期値に戻す(S303)。
 S302でNo、かつ、優先度「1」のカウント値が前回のカウント値と比べて一定以上増加した場合(S304でYes)、転送サイズ決定部33は、優先度「1」に対応する転送キュー30のサブセットサイズを増やす(S305)。このサブセットサイズの増加処理は、最大値を超えない範囲で所定値ずつ(+nずつ)増やす。
 図23は、図22の第1例における高優先および低優先それぞれのサブセットサイズの時系列グラフである。
 上側のグラフは、優先度「2」のタイムスロットkにおけるカウント値c2(k)を示す。
 下側のグラフは、優先度「1」のタイムスロットkにおけるサブセットサイズs1(k)を示す。このs1(k)は、スループット優先時には、優先度「1」の最大サブセットサイズs1maxまで増加する。一方、他優先度「2」のTATの優先時には、優先度「1」の最小サブセットサイズs1minまで減少する。
 期間T11では、優先度「2」が発生していないので、優先度「1」のサブセットサイズはs1maxまで増加することで、スループットを優先する。期間T12では、優先度「2」が発生したので、優先度「1」のサブセットサイズはs1minまで減少することで、優先度「2」のTATを優先する。
 期間T13では、優先度「2」が発生していないので、優先度「1」のサブセットサイズをs1maxまで徐々に増加することで、スループットを優先する。期間T14では、優先度「2」が発生したので、優先度「1」のサブセットサイズはs1minまで減少することで、優先度「2」のTATを優先する。
 期間T15では、優先度「2」が発生していないので、優先度「1」のサブセットサイズをs1maxまで徐々に増加することで、スループットを優先する。
 図24は、リクエストのサブセットサイズの変更処理の第2例を示すフローチャートである。
 この第2例では、優先度「2」(高優先度)が一定の周期で増減する場合を説明する。
 この場合、転送サイズ決定部33は、リクエストのデータから作成するサブセットのサイズとして、転送キュー30に入ってくる高優先度「2」のリクエストが増加する期間には、低優先度「1」のサブセットのサイズを縮小し、一方、転送キュー30に入ってくる高優先度のリクエストが減少する期間には、低優先度のサブセットのサイズを拡大するように制御する。以下、フローチャートに沿って、サブセットサイズの制御内容を説明する。
 転送サイズ決定部33は、ループ変数kについて、初期値k=0から、タイムスロット数未満の範囲で(k<タイムスロット数)1つずつ増加させる(k++)ループ処理を行う(S401~S405)。
 転送サイズ決定部33は、タイムスロットkの優先度「2」に対応する転送キュー30のカウント値を抽出し(S402)、s1(k)を(数式1)により計算する(S403)。
Figure JPOXMLDOC01-appb-M000001
 そして、転送サイズ決定部33は、優先度「1」のタイムスロットkにおけるサブセットサイズを、S403で計算したs1(k)に更新する(S404)。
 図25は、図24の第2例における高優先および低優先それぞれのサブセットサイズの時系列グラフである。
 図23と同様に、上側のグラフはc2(k)を示し、下側のグラフはs1(k)を示す。また、上のグラフの閾値c2Pは、優先度「2」を最優先で処理すべきカウント閾値である。
 期間T21では、優先度「2」のリクエストがないので、優先度「1」は最大サイズs1maxとする。
 期間T22では、優先度「2」のリクエストが増えてくるので、優先度「1」のサイズを縮小する。これにより、優先度「2」のTATを向上させる。
 期間T23では、優先度「2」のリクエストが閾値c2Pを超えた場合は、優先度「1」は最小サイズs1minとする。
 期間T24では、優先度「2」のリクエストが減ってくるので、優先度「1」のサイズを拡大する。これにより、優先度「1」のスループットを向上させる。
[効果]
 本発明は、転送元のデータが格納されるホストDRAM12を有するホスト10と、データの転送先であるデバイスDRAM51を有するデバイス50とを有する物理サーバ100であって、
 ホスト10が、ホストDRAM12からデバイスDRAM51へのDMA転送を行うDMA転送ドライバ1と、DMA転送の対象となるデータの転送要求を示すリクエストを格納する複数の転送キュー30とを有しており、
 DMA転送ドライバ1が、各転送キュー30内のリクエストにより指定されたホストDRAM12のデータから1つ以上のサブセットを作成し、順番に選択した各転送キュー30のサブセットを、デバイスDRAM51にDMA転送することを特徴とする。
 これにより、リクエストのデータをDMA転送前に分割することで、各リクエストの転送遅延が抑制される。例えば、複数のスレッド11が同じデバイス50に対してDMA転送をリクエストする際、片方のスレッド11からのサイズの大きなリクエストの転送中でも、後から入ってきた別のスレッド11からのリクエストの転送が可能となる。
 よって、スレッド11間の公平性が保たれるので、遅延要件の厳しいスレッド11を他のスレッド11(ノイジーネイバ)と同一の物理サーバ100上で動作できる。
 このように、各スレッド11からのリクエストのデータサイズの大小にもかかわらず、スレッド11間で公平にデータ転送の機会を提供することで、複数の転送元から同じ転送先にデータ転送するときに、転送されるデータの転送効率と遅延要件とをバランスよく満たすことができる。
 本発明は、各転送キュー30には、個別の優先度が割り当てられ、その優先度のリクエストを格納することとし、
 DMA転送ドライバ1が、リクエストのデータから作成するサブセットのサイズとして、リクエストの優先度が高いほど、サブセットのサイズを大きくすることを特徴とする。
 これにより、リクエストの優先度が高いほど、サブセットのサイズを大きくすることでデータ転送の効率が高まる。よって、DMA転送ドライバ1が各リクエストの優先度を扱えるように汎用性を持つので、スレッド11間で直接連携して優先度制御(転送順序の指定や必要帯域の指定)を行うように実装する開発コストを削減できる。
 また、互いに異なる優先度のスレッド11同士を同じ物理サーバ100に収容できるので、優先度ごとに複数の物理サーバ100を稼働させる方式に比べ、筐体コストや消費電力を削減できる。
 本発明は、各転送キュー30には、個別の優先度が割り当てられ、その優先度のリクエストを格納することとし、
 DMA転送ドライバ1が、リクエストのデータから作成するサブセットのサイズとして、高優先度のリクエストが転送キュー30に入ってこない期間には、低優先度のサブセットのサイズを拡大し、一方、高優先度のリクエストが転送キュー30に入ってくる期間には、低優先度のサブセットのサイズを縮小するように制御することを特徴とする。
 これにより、高優先度のリクエストの発生頻度が通常は少ないものの、ランダムな期間にバーストで発生する場合に、高優先度および低優先度のリクエスト双方の転送要件をバランスよく満たすようなサブセットのサイズを動的に制御できる。
 本発明は、各転送キュー30には、個別の優先度が割り当てられ、その優先度のリクエストを格納することとし、
 DMA転送ドライバ1が、リクエストのデータから作成するサブセットのサイズとして、転送キュー30に入ってくる高優先度のリクエストが増加する期間には、低優先度のサブセットのサイズを縮小し、一方、転送キュー30に入ってくる高優先度のリクエストが減少する期間には、低優先度のサブセットのサイズを拡大するように制御することを特徴とする。
 これにより、高優先度のリクエストが一定の周期で増減する場合に、高優先度および低優先度のリクエスト双方の転送要件をバランスよく満たすようなサブセットのサイズを動的に制御できる。
 1   DMA転送ドライバ(転送制御部)
 10  ホスト(ホスト部)
 11  スレッド
 12  ホストDRAM(ホストメモリ)
 20  受付キュー
 21  転送キュー決定部
 22  優先度決定部
 30  転送キュー
 31  リクエストカウンタ
 32  リクエスト分割部
 33  転送サイズ決定部
 40  転送エンジン
 41  転送キュー選択部
 42  統合制御部
 50  デバイス(デバイス部)
 51  デバイスDRAM(デバイスメモリ)
 52  IPコア
 59  PCIe
 60  外部コントローラ
 61  外部コントローラIF
 71  キューIDテーブル
 72  転送キュー管理テーブル
 73  サブセットサイズテーブル
 74  リクエストカウンタテーブル
 75  転送エンジンテーブル
 76  優先度テーブル
 100 物理サーバ(転送管理装置)

Claims (6)

  1.  転送元のデータが格納されるホストメモリを有するホスト部と、データの転送先であるデバイスメモリを有するデバイス部とを有する転送管理装置であって、
     前記ホスト部は、前記ホストメモリから前記デバイスメモリへのDMA転送を行う転送制御部と、DMA転送の対象となるデータを指定した転送要求を示すリクエストを格納する複数の転送キューとを有しており、
     前記転送制御部は、前記各転送キュー内のリクエストにより指定された前記ホストメモリのデータから1つ以上のサブセットを作成し、順番に選択した前記各転送キューのサブセットを、前記デバイスメモリにDMA転送することを特徴とする
     転送管理装置。
  2.  前記各転送キューには、個別の優先度が割り当てられ、その優先度のリクエストを格納することとし、
     前記転送制御部は、リクエストのデータから作成するサブセットのサイズとして、リクエストの優先度が高いほど、サブセットのサイズを大きくすることを特徴とする
     請求項1に記載の転送管理装置。
  3.  前記各転送キューには、個別の優先度が割り当てられ、その優先度のリクエストを格納することとし、
     前記転送制御部は、リクエストのデータから作成するサブセットのサイズとして、高優先度のリクエストが前記転送キューに入ってこない期間には、低優先度のサブセットのサイズを拡大し、一方、高優先度のリクエストが前記転送キューに入ってくる期間には、低優先度のサブセットのサイズを縮小するように制御することを特徴とする
     請求項1に記載の転送管理装置。
  4.  前記各転送キューには、個別の優先度が割り当てられ、その優先度のリクエストを格納することとし、
     前記転送制御部は、リクエストのデータから作成するサブセットのサイズとして、前記転送キューに入ってくる高優先度のリクエストが増加する期間には、低優先度のサブセットのサイズを縮小し、一方、前記転送キューに入ってくる高優先度のリクエストが減少する期間には、低優先度のサブセットのサイズを拡大するように制御することを特徴とする
     請求項1に記載の転送管理装置。
  5.  転送元のデータが格納されるホストメモリを有するホスト部と、データの転送先であるデバイスメモリを有するデバイス部とを有する転送管理装置が実行する転送管理方法であって、
     前記ホスト部は、前記ホストメモリから前記デバイスメモリへのDMA転送を行う転送制御部と、DMA転送の対象となるデータを指定した転送要求を示すリクエストを格納する複数の転送キューとを有しており、
     前記転送制御部は、前記各転送キュー内のリクエストにより指定された前記ホストメモリのデータから1つ以上のサブセットを作成し、順番に選択した前記各転送キューのサブセットを、前記デバイスメモリにDMA転送することを特徴とする
     転送管理方法。
  6.  コンピュータを、請求項1ないし請求項4のいずれか1項に記載の転送管理装置として機能させるための転送管理プログラム。
     
PCT/JP2021/044832 2021-12-07 2021-12-07 転送管理装置、転送管理方法、および、転送管理プログラム WO2023105603A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2021/044832 WO2023105603A1 (ja) 2021-12-07 2021-12-07 転送管理装置、転送管理方法、および、転送管理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2021/044832 WO2023105603A1 (ja) 2021-12-07 2021-12-07 転送管理装置、転送管理方法、および、転送管理プログラム

Publications (1)

Publication Number Publication Date
WO2023105603A1 true WO2023105603A1 (ja) 2023-06-15

Family

ID=86729777

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2021/044832 WO2023105603A1 (ja) 2021-12-07 2021-12-07 転送管理装置、転送管理方法、および、転送管理プログラム

Country Status (1)

Country Link
WO (1) WO2023105603A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03191453A (ja) * 1989-12-15 1991-08-21 Internatl Business Mach Corp <Ibm> データ処理システム
JP2010262526A (ja) * 2009-05-08 2010-11-18 Canon Inc メモリ制御装置
JP2011175621A (ja) * 2010-01-27 2011-09-08 Fujitsu Semiconductor Ltd データ転送制御装置およびデータ転送制御方法
US20150067087A1 (en) * 2013-08-29 2015-03-05 International Business Machines Corporation Automatic pinning and unpinning of virtual pages for remote direct memory access

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03191453A (ja) * 1989-12-15 1991-08-21 Internatl Business Mach Corp <Ibm> データ処理システム
JP2010262526A (ja) * 2009-05-08 2010-11-18 Canon Inc メモリ制御装置
JP2011175621A (ja) * 2010-01-27 2011-09-08 Fujitsu Semiconductor Ltd データ転送制御装置およびデータ転送制御方法
US20150067087A1 (en) * 2013-08-29 2015-03-05 International Business Machines Corporation Automatic pinning and unpinning of virtual pages for remote direct memory access

Similar Documents

Publication Publication Date Title
US7350004B2 (en) Resource management device
JP4723260B2 (ja) ソースデバイスに対するリクエストをスケジューリングする装置及び方法
US8838853B2 (en) Access buffer
US20140115254A1 (en) Access scheduler
JP6072783B2 (ja) メモリコントローラおよびかかるメモリコントローラの動作方法
EP2241979A1 (en) Interrupt arbitration for multiprocessors
JP4034969B2 (ja) 共通メモリのメモリ管理システム
KR20050020942A (ko) 연속 매체 우선순위 인식 저장장치 스케줄러
US11093352B2 (en) Fault management in NVMe systems
US6745262B1 (en) Method, system, program, and data structure for queuing requests having different priorities
JP2016195375A5 (ja)
JP6146128B2 (ja) データ処理装置
US20060047874A1 (en) Resource management apparatus
JP5565204B2 (ja) データ転送装置、データ転送方法およびプログラム、ならびに、画像形成装置
KR20080071840A (ko) 복수의 dma 요청 블록들을 가지는 직접 메모리 액세스장치의 우선 순위를 결정하는 방법 및 장치
KR20020008955A (ko) 버스 시스템 및 그 실행 순서 조정방법
EP3440547B1 (en) Qos class based servicing of requests for a shared resource
WO2023105603A1 (ja) 転送管理装置、転送管理方法、および、転送管理プログラム
JP2011232917A (ja) 半導体集積回路、及びリクエスト制御方法
CN116664377A (zh) 数据传输方法及相关装置
JP2000194683A (ja) 共有メモリの調停回路およびその調停方法
US20050066097A1 (en) Resource management apparatus
JP6036806B2 (ja) バスアクセス調停回路およびバスアクセス調停方法
KR20090128851A (ko) 버스 중재 방법 및 장치
US9977751B1 (en) Method and apparatus for arbitrating access to shared resources

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2023565710

Country of ref document: JP

Kind code of ref document: A