JP6698353B2 - Information processing device, DMA transfer control method, and DMA transfer control program - Google Patents

Information processing device, DMA transfer control method, and DMA transfer control program Download PDF

Info

Publication number
JP6698353B2
JP6698353B2 JP2016000537A JP2016000537A JP6698353B2 JP 6698353 B2 JP6698353 B2 JP 6698353B2 JP 2016000537 A JP2016000537 A JP 2016000537A JP 2016000537 A JP2016000537 A JP 2016000537A JP 6698353 B2 JP6698353 B2 JP 6698353B2
Authority
JP
Japan
Prior art keywords
transfer
dma
information
engine
registered
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.)
Active
Application number
JP2016000537A
Other languages
Japanese (ja)
Other versions
JP2017122972A (en
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.)
NEC Platforms Ltd
Original Assignee
NEC Platforms 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 NEC Platforms Ltd filed Critical NEC Platforms Ltd
Priority to JP2016000537A priority Critical patent/JP6698353B2/en
Publication of JP2017122972A publication Critical patent/JP2017122972A/en
Application granted granted Critical
Publication of JP6698353B2 publication Critical patent/JP6698353B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Bus Control (AREA)

Description

本発明は、情報処理装置、DMA転送制御方法およびDMA転送制御プログラムに関し、特に、複数のDMA転送処理を並行して行う情報処理装置、DMA転送制御方法およびDMA転送制御プログラムに関する。   The present invention relates to an information processing device, a DMA transfer control method and a DMA transfer control program, and more particularly to an information processing device, a DMA transfer control method and a DMA transfer control program that perform a plurality of DMA transfer processes in parallel.

情報処理装置のメインメモリ、周辺機器接続部などの間でのデータ転送方式の一つである、DMA(「Direct Memory Access」の略称)転送が一般的に知られている。DMA転送では、CPU(「Central Processing Unit」の略称)の負荷を軽減するため、CPUを介さずにメインメモリ、周辺機器接続部などの間で直接データ転送を行う。   DMA (abbreviation of "Direct Memory Access") transfer, which is one of the data transfer methods between the main memory of the information processing apparatus and the peripheral device connection unit, is generally known. In the DMA transfer, in order to reduce the load on the CPU (abbreviation of “Central Processing Unit”), direct data transfer is performed between the main memory and the peripheral device connection unit without going through the CPU.

すなわち、CPUが、DMA転送専用のコントローラ(以降、「DMAエンジン」とも言う。)にデータ転送の指示を出す。そして、その指示を受けたコントローラが、DMA転送処理の内容が格納されたディスクリプタから情報を取得し、その情報に従ってデータの読み書きを行う。ここで、ディスクリプタは、転送元や転送先の情報および転送データの情報などが格納された所定の記憶領域である。   That is, the CPU issues a data transfer instruction to a controller dedicated to DMA transfer (hereinafter, also referred to as “DMA engine”). Then, the controller receiving the instruction acquires information from the descriptor in which the content of the DMA transfer process is stored, and reads/writes data according to the information. Here, the descriptor is a predetermined storage area in which information of a transfer source and a transfer destination, information of transfer data, and the like are stored.

このようなDMA転送処理のスループットを向上するために、特許文献1に記載の技術では、1つのディスクリプタを複数のサブディスクリプタに分割する。そして、各サブディスクリプタに基づいたDMA転送処理を複数のコントローラが並行して行う。   In order to improve the throughput of such a DMA transfer process, in the technique described in Patent Document 1, one descriptor is divided into a plurality of subdescriptors. Then, the plurality of controllers perform the DMA transfer processing based on the subdescriptors in parallel.

なお、関連する技術として、特許文献2に記載の技術では、複数のディスクリプタの連続実行時に、ホストシステムに対しエラーフレームを受信したことを報告せずに有効受信フレームのみを報告する。これにより、ホストシステムは、エラーフレーム処理に関するオーバーヘッドを低減することができる。   As a related technique, in the technique described in Patent Document 2, when a plurality of descriptors are continuously executed, only a valid reception frame is reported to the host system without reporting that an error frame has been received. This allows the host system to reduce the overhead associated with error frame processing.

特許文献3に記載の技術では、DMAコントローラ上で1つのDMA転送を複数の転送要求に分割することにより、実行するDMA転送のサイズを小さくする。そして、DMAコントローラが、複数回にわたって内部バスにDMA転送要求を出す。これにより、プロセッサが、転送速度の遅い周辺IO(「Input−Output」の略称)デバイスのDMA転送処理の終了を長時間待ち合わせることがなくなり、プロセッサの実行性能を向上させることができる。   In the technique described in Patent Document 3, one DMA transfer is divided into a plurality of transfer requests on the DMA controller to reduce the size of the DMA transfer to be executed. Then, the DMA controller issues a DMA transfer request to the internal bus multiple times. As a result, the processor does not wait for a long time until the end of the DMA transfer processing of a peripheral IO (abbreviation of “Input-Output”) device having a low transfer speed, and the execution performance of the processor can be improved.

特許文献4に記載の技術では、連続して実行すべきDMA転送処理がある場合に、全てのDMA転送処理が終了した場合にのみDMA転送処理の終了をCPUに通知する。これにより、DMA転送処理の終了を通知されるCPUにおける処理負担を軽減する。   In the technique described in Patent Document 4, when there is a DMA transfer process to be continuously executed, the CPU is notified of the end of the DMA transfer process only when all the DMA transfer processes are completed. This reduces the processing load on the CPU that is notified of the end of the DMA transfer processing.

特許文献5に記載の技術では、転送先デバイスが、DMA制御部から送られた判断情報に基づいてデータ転送の終了判定を行う。これにより、DMAコントローラがデータ転送の終了を判定するための回路を不要とすることができるなど、ハードウェアの規模をあまり増大させずに、DMAエンジン数や転送データ数を増加することが可能となる。   In the technique described in Patent Document 5, the transfer destination device determines whether to end the data transfer based on the determination information sent from the DMA control unit. As a result, it is possible to increase the number of DMA engines and the number of transfer data without significantly increasing the scale of hardware, such as eliminating the need for a circuit for the DMA controller to determine the end of data transfer. Become.

特許文献6に記載の技術では、DMA転送時の転送データのバンドサイズおよび分割数の最適化を図ることにより、ネットワークや外部デバイス等の外部へのデータ送出時の記憶手段の利用効率を向上させることができる。   In the technique disclosed in Patent Document 6, the band size and the number of divisions of transfer data at the time of DMA transfer are optimized to improve the utilization efficiency of the storage unit at the time of sending data to the outside such as a network or an external device. be able to.

特開2006−195823号公報JP, 2006-195823, A 特開平04−277850号公報JP 04-277850 A 特許第5040050号公報Japanese Patent No. 5040050 特開2005−071104号公報JP, 2005-071104, A 特開2007−233522号公報JP, 2007-233522, A 特開2010−198138号公報JP, 2010-198138, A

しかしながら、特許文献1に記載された技術において、コントローラ(DMAエンジン)の内部に設けられたデータバッファが十分大きい場合や、転送するデータが小さい場合には、次の問題が生じる。すなわち、ディスクリプタを複数のサブディスクリプタに分割し、各サブディスクリプタに基づく複数のDMA転送処理を並行して実行すると、コントローラのCPUやメモリリソースの競合による使用効率の低下を招く場合があるという問題がある。   However, in the technique described in Patent Document 1, the following problem occurs when the data buffer provided inside the controller (DMA engine) is sufficiently large or when the data to be transferred is small. That is, when a descriptor is divided into a plurality of subdescriptors and a plurality of DMA transfer processes based on the respective subdescriptors are executed in parallel, there is a problem that the efficiency of use may be deteriorated due to competition of CPU and memory resources of the controller. is there.

また、複数のディスクリプタと複数のコントローラとが存在する場合に、1つのディスクリプタを複数のサブディスクリプタに分割し、分割されたサブディスクリプタが複数のコントローラを占有してしまうと、他のディスクリプタの処理が滞留し、システム全体のスループットが低下するという問題がある。   Further, when there are a plurality of descriptors and a plurality of controllers, one descriptor is divided into a plurality of subdescriptors, and if the divided subdescriptors occupy the plurality of controllers, the processing of other descriptors is There is a problem that the system stays and the throughput of the entire system is reduced.

なお、特許文献2乃至6には、複数のDMA転送処理を並行して行う際に、リソースの競合による使用効率の低下やシステム全体のスループットの低下を招かずにDMA転送処理を行うための技術については、何ら記載がない。   Note that in Patent Documents 2 to 6, a technique for performing a DMA transfer process without causing a decrease in usage efficiency due to resource competition or a decrease in throughput of the entire system when a plurality of DMA transfer processes are performed in parallel. Is not described at all.

本発明の目的は、リソースの競合による使用効率の低下やシステム全体のスループットの低下を招かずに複数のDMA転送処理を行うことのできる、情報処理装置、DMA転送制御方法およびDMA転送制御プログラムを提供することにある。   An object of the present invention is to provide an information processing device, a DMA transfer control method, and a DMA transfer control program capable of performing a plurality of DMA transfer processes without causing a decrease in usage efficiency due to resource competition and a decrease in overall system throughput. To provide.

本発明の情報処理装置は、
DMA(Direct Memory Access)転送処理に必要な第1の転送情報が格納された少なくとも1つの転送情報記憶手段と、
前記第1の転送情報に基づき前記DMA転送処理を実行する、少なくとも1つのDMAエンジンと、
転送情報制御手段と
を含み、
前記DMAエンジンは、前記DMA転送処理で読み出した転送データを一時的に保持する転送データバッファを備え、
前記転送情報制御手段は、
前記第1の転送情報を分割すべきか否かを、前記転送データの大きさと、前記DMA転送処理が完了するまでの転送時間と、前記転送データバッファの大きさとに基づいて判定し、
前記第1の転送情報を分割すべきと判定した場合は、前記第1の転送情報の分割数を、前記転送データの大きさと、前記転送時間と、前記転送データバッファの大きさと、前記DMA転送処理を実行していない未使用DMAエンジンの数と、前記DMAエンジンによってDMA転送処理が実行されていない前記第1の転送情報の数とに基づいて決定し、
前記決定した分割数で1つの前記第1の転送情報を分割して複数の第2の転送情報を生成し、
前記第2の転送情報の各々を前記DMAエンジンの各々に送付し、各々の前記DMAエンジンを起動する。
The information processing apparatus of the present invention is
At least one transfer information storage unit in which first transfer information necessary for a DMA (Direct Memory Access) transfer process is stored;
At least one DMA engine that performs the DMA transfer process based on the first transfer information;
And transfer information control means,
The DMA engine includes a transfer data buffer that temporarily holds the transfer data read in the DMA transfer process,
The transfer information control means,
Whether to divide the first transfer information is determined based on the size of the transfer data, the transfer time until the DMA transfer processing is completed, and the size of the transfer data buffer,
When it is determined that the first transfer information should be divided, the number of divisions of the first transfer information is set to the size of the transfer data, the transfer time, the size of the transfer data buffer, and the DMA transfer. Determining based on the number of unused DMA engines that are not performing processing and the number of the first transfer information that is not performing DMA transfer processing by the DMA engine,
Dividing the one piece of the first transfer information by the determined number of divisions to generate a plurality of second transfer information,
Each of the second transfer information is sent to each of the DMA engines, and each of the DMA engines is activated.

また、本発明のDMA転送制御方法は、
DMA(Direct Memory Access)エンジンによって実行されるDMA転送処理に必要な第1の転送情報を分割すべきか否かを、前記DMA転送処理で読み出す転送データの大きさと、前記DMA転送処理が完了するまでの転送時間と、前記転送データを一時的に保持する転送データバッファの大きさとに基づいて判定し、
前記第1の転送情報を分割すべきと判定した場合は、前記第1の転送情報の分割数を、前記転送データの大きさと、前記転送時間と、前記転送データバッファの大きさと、前記DMA転送処理を実行していない未使用DMAエンジンの数と、前記DMAエンジンによってDMA転送処理が実行されていない前記第1の転送情報の数とに基づいて決定し、
前記決定した分割数で1つの前記第1の転送情報を分割して複数の第2の転送情報を生成し、
前記第2の転送情報の各々を前記DMAエンジンの各々に送付し、各々の前記DMAエンジンを起動する。
Further, the DMA transfer control method of the present invention is
Whether the first transfer information necessary for the DMA transfer process executed by a DMA (Direct Memory Access) engine should be divided or not is determined by the size of transfer data read by the DMA transfer process and the completion of the DMA transfer process. Of the transfer data and the size of the transfer data buffer that temporarily holds the transfer data,
When it is determined that the first transfer information should be divided, the number of divisions of the first transfer information is set to the size of the transfer data, the transfer time, the size of the transfer data buffer, and the DMA transfer. Determining based on the number of unused DMA engines that are not performing processing and the number of the first transfer information that is not performing DMA transfer processing by the DMA engine,
Dividing the one piece of the first transfer information by the determined number of divisions to generate a plurality of second transfer information,
Each of the second transfer information is sent to each of the DMA engines, and each of the DMA engines is activated.

また、本発明のDMA転送制御プログラムは、
DMA(Direct Memory Access)エンジンによって実行されるDMA転送処理に必要な第1の転送情報を分割すべきか否かを、前記DMA転送処理で読み出す転送データの大きさと、前記DMA転送処理が完了するまでの転送時間と、前記転送データを一時的に保持する転送データバッファの大きさとに基づいて判定する判定処理と、
前記第1の転送情報を分割すべきと判定した場合は、前記第1の転送情報の分割数を、前記転送データの大きさと、前記転送時間と、前記転送データバッファの大きさと、前記DMA転送処理を実行していない未使用DMAエンジンの数と、前記DMAエンジンによってDMA転送処理が実行されていない前記第1の転送情報の数とに基づいて決定する算出処理と、
前記決定した分割数で1つの前記第1の転送情報を分割して複数の第2の転送情報を生成する生成処理と、
前記第2の転送情報の各々を前記DMAエンジンの各々に送付し、各々の前記DMAエンジンを起動するDMAエンジン起動処理と
をコンピュータに実行させる。
Further, the DMA transfer control program of the present invention is
Whether the first transfer information necessary for the DMA transfer process executed by a DMA (Direct Memory Access) engine should be divided or not is determined by the size of transfer data read by the DMA transfer process and the completion of the DMA transfer process. Determination process based on the transfer time and the size of the transfer data buffer that temporarily holds the transfer data,
When it is determined that the first transfer information should be divided, the number of divisions of the first transfer information is set to the size of the transfer data, the transfer time, the size of the transfer data buffer, and the DMA transfer. A calculation process that is determined based on the number of unused DMA engines that are not performing the process and the number of the first transfer information that is not performing the DMA transfer process by the DMA engine;
A generation process of dividing one piece of the first transfer information by the determined division number to generate a plurality of second transfer information;
Each of the second transfer information is sent to each of the DMA engines, and the computer is caused to execute a DMA engine starting process for starting each of the DMA engines.

本発明には、リソースの競合による使用効率の低下やシステム全体のスループットの低下を招かずに複数のDMA転送を行うことができるという効果がある。   The present invention has an effect that a plurality of DMA transfers can be performed without lowering the use efficiency or the throughput of the entire system due to resource competition.

本発明の第1の実施形態を示すブロック図である。It is a block diagram which shows the 1st Embodiment of this invention. 第1の実施形態における、ディスクリプタ制御部200の構成を示すブロック図である。3 is a block diagram showing a configuration of a descriptor control unit 200 in the first embodiment. FIG. 第1の実施形態における、エンジン使用状況テーブル2021の一例を示す図である。It is a figure which shows an example of the engine use condition table 2021 in 1st Embodiment. 第1の実施形態における、DMA転送部10の動作を示すフローチャートである。6 is a flowchart showing the operation of the DMA transfer unit 10 in the first embodiment. 第1の実施形態における、DMA転送開始時のディスクリプタ制御部200の動作を示すフローチャートである。6 is a flowchart showing the operation of the descriptor control unit 200 at the start of DMA transfer in the first embodiment. 第1の実施形態における、DMA転送完了時のディスクリプタ制御部200の動作を示すフローチャートである。6 is a flowchart showing an operation of the descriptor control unit 200 when the DMA transfer is completed in the first embodiment. 本発明の第2の実施形態を示すブロック図である。It is a block diagram which shows the 2nd Embodiment of this invention.

次に、本発明の実施形態について図面を参照して詳細に説明する。   Next, embodiments of the present invention will be described in detail with reference to the drawings.

[第1の実施形態]
図1は本発明の第1の実施形態を示すブロック図である。
[First Embodiment]
FIG. 1 is a block diagram showing a first embodiment of the present invention.

図1を参照すると、情報処理装置1は、DMA転送部10と、トランザクション制御部20と、少なくとも1つのCPU30と、メモリ40と、少なくとも1つの入出力部50とを含む。DMA転送部10と、CPU30と、メモリ40と、入出力部50とは、トランザクション制御部20を介して相互に接続されている。   Referring to FIG. 1, the information processing device 1 includes a DMA transfer unit 10, a transaction control unit 20, at least one CPU 30, a memory 40, and at least one input/output unit 50. The DMA transfer unit 10, the CPU 30, the memory 40, and the input/output unit 50 are connected to each other via the transaction control unit 20.

DMA転送部10は、それぞれを識別する固有の識別情報が割り当てられた複数のディスクリプタ101からなるディスクリプタ群100と、ディスクリプタ制御部200と、それぞれを識別する固有の識別情報が割り当てられた複数のDMAエンジン300とを含む。   The DMA transfer unit 10 includes a descriptor group 100 including a plurality of descriptors 101 to which unique identification information for identifying each is assigned, a descriptor control unit 200, and a plurality of DMAs to which unique identification information for identifying each is assigned. The engine 300 is included.

ディスクリプタ101は、DMA転送処理の実行に必要な情報(以降、「DMA転送情報」、または「第1の転送情報」と称する)が格納された所定の記憶領域である。以降、ディスクリプタ101は、「転送情報記憶部」とも呼ばれる。DMA転送情報は、転送するべきデータの場所を示す転送元アドレスと、転送先の場所を示す転送先アドレスと、転送するべきデータの長さを示す転送データ長と、このDMA転送情報が実行対象であるか否かを示す実行バリッドと、このDMA転送情報の転送処理が終了したことを示す転送完了フラグとを含む。なお、本実施形態では、ディスクリプタ101を示す識別情報は、例えば、「ディスクリプタA」、「ディスクリプタB」、「ディスクリプタC」・・・とする。また、実行バリッドは、「1」が登録されている場合は、そのDMA転送情報が実行対象であることを示し、「0(ゼロ)」が登録されている場合は実行対象ではないことを示す。特に、実行バリッドに「1」が登録されているディスクリプタを「有効ディスクリプタ」と称する。転送完了フラグは、「1」が登録されている場合は転送完了を示し、「0(ゼロ)」が登録されている場合は転送が完了していないことを示す。   The descriptor 101 is a predetermined storage area in which information necessary for executing the DMA transfer process (hereinafter, referred to as “DMA transfer information” or “first transfer information”) is stored. Hereinafter, the descriptor 101 is also referred to as a “transfer information storage unit”. The DMA transfer information includes a transfer source address indicating the location of the data to be transferred, a transfer destination address indicating the location of the transfer destination, a transfer data length indicating the length of the data to be transferred, and the DMA transfer information to be executed. And an execution valid flag indicating that the transfer processing of the DMA transfer information is completed. In the present embodiment, the identification information indicating the descriptor 101 is, for example, "descriptor A", "descriptor B", "descriptor C",.... Further, the execution valid indicates that the DMA transfer information is the execution target when “1” is registered, and indicates that the DMA transfer information is not the execution target when “0 (zero)” is registered. . In particular, a descriptor in which “1” is registered in the execution valid is called “valid descriptor”. The transfer completion flag indicates that the transfer is completed when “1” is registered, and indicates that the transfer is not completed when “0 (zero)” is registered.

ディスクリプタ制御部200は、ディスクリプタ101のうち実行すべきディスクリプタを選択し、そのディスクリプタに格納されているDMA転送情報を基にしたDMA転送処理を実行するDMAエンジン300の選択および起動を行う。以降、ディスクリプタ制御部200は、「転送情報制御部」とも呼ばれる。   The descriptor control unit 200 selects a descriptor to be executed from the descriptors 101, and selects and starts the DMA engine 300 that executes the DMA transfer processing based on the DMA transfer information stored in the descriptor. Hereinafter, the descriptor control unit 200 is also referred to as a “transfer information control unit”.

DMAエンジン300は、DMAリクエスト制御部301とデータバッファ302とを含む。なお、本実施形態では、DMAエンジン300を示す識別情報は、例えば、「DMAエンジンA」、「DMAエンジンB」、「DMAエンジンC」・・・とする。   The DMA engine 300 includes a DMA request control unit 301 and a data buffer 302. In the present embodiment, the identification information indicating the DMA engine 300 is, for example, “DMA engine A”, “DMA engine B”, “DMA engine C”...

DMAリクエスト制御部301は、ディスクリプタ101に格納されているDMA転送情報に含まれる転送元アドレスが示す場所から、トランザクション制御部20を介して、予め設定された所定の大きさのデータ(以降、「データブロック」と称する)を読み出す。なお、以降、本動作を「リード」(読み出し)と称し、リードの動作を指示する命令を「リード命令」と称する。また、DMAリクエスト制御部301は、そのデータブロックを、トランザクション制御部20を介してDMA転送情報に含まれる転送先アドレスが示す場所に書き込む。以降、本動作を「ライト」(書き込み)と称し、ライトの動作を指示する命令を「ライト命令」と称する。   The DMA request control unit 301, via the transaction control unit 20, starts from a location indicated by the transfer source address included in the DMA transfer information stored in the descriptor 101, and sets a predetermined size of data (hereinafter, “ Data block”). Hereinafter, this operation will be referred to as a "read" (read), and an instruction for instructing a read operation will be referred to as a "read instruction". The DMA request control unit 301 also writes the data block via the transaction control unit 20 to the location indicated by the transfer destination address included in the DMA transfer information. Hereinafter, this operation will be referred to as a “write” (write), and an instruction for instructing a write operation will be referred to as a “write instruction”.

また、DMAリクエスト制御部301が、転送元にリード命令を送付してから、実際にデータブロックを受け取るまで、または、転送先にライト命令とデータブロックとを送付してから命令実行完了を示す通知を受け取るまでには、待ち時間が生じる。この待ち時間がDMAエンジンの命令サイクルの何サイクルにあたるかを示す値を、以降、「レイテンシ」と称する。例えば、転送先がメモリ40であり、ライト命令とデータブロックとを送付してから、命令実行完了を示す通知が届くまで8命令サイクルであった場合は、メモリ40のレイテンシは8となる。   Further, the DMA request control unit 301 sends a read instruction to the transfer source and then actually receives the data block, or sends a write command and a data block to the transfer destination and then notifies the instruction execution completion. There is a waiting time before receiving the. Hereinafter, a value indicating how many instruction cycles of the DMA engine this waiting time corresponds to will be referred to as “latency”. For example, if the transfer destination is the memory 40 and it takes 8 instruction cycles from the sending of the write instruction and the data block to the arrival of the notification indicating the completion of instruction execution, the latency of the memory 40 is 8.

DMAリクエスト制御部301は、予め転送元および転送先の装置毎にレイテンシを測定する。そして、ディスクリプタ制御部200は、DMAリクエスト制御部301が測定したレイテンシを所定の記憶場所(図示せず)に保持する。   The DMA request control unit 301 measures latency in advance for each of the transfer source and transfer destination devices. Then, the descriptor control unit 200 holds the latency measured by the DMA request control unit 301 in a predetermined storage location (not shown).

データバッファ302は、DMAリクエスト制御部301が、転送元アドレスが示す場所から読み出したデータブロックを転送先アドレスが示す場所に書き込むまでの間、一時的に保持するための記憶領域である。このデータバッファ302の容量により、DMAエンジン300が一度に処理できるデータ量が決まる。また、データバッファ302が格納可能なデータブロックの数を、「データバッファの深さ」と称する。例えば、データブロックの大きさが8KB(キロバイト)であり、データバッファの大きさが32KBである場合は、データバッファの深さは4となる。   The data buffer 302 is a storage area for the DMA request control unit 301 to temporarily hold until the data block read from the location indicated by the transfer source address is written to the location indicated by the transfer destination address. The capacity of the data buffer 302 determines the amount of data that the DMA engine 300 can process at one time. Further, the number of data blocks that can be stored in the data buffer 302 is referred to as “data buffer depth”. For example, when the size of the data block is 8 KB (kilobytes) and the size of the data buffer is 32 KB, the depth of the data buffer is 4.

トランザクション制御部20は、DMA転送部10と、CPU30と、メモリ40と、入出力部50とに接続されている。トランザクション制御部20は、DMA転送部10に含まれる各DMAエンジン300からのリードの指示およびライトの指示を受信し、各指示に従って各接続先からデータブロックを受信し、受信したデータブロックを指定の接続先に送付する。   The transaction control unit 20 is connected to the DMA transfer unit 10, the CPU 30, the memory 40, and the input/output unit 50. The transaction control unit 20 receives a read instruction and a write instruction from each DMA engine 300 included in the DMA transfer unit 10, receives a data block from each connection destination according to each instruction, and specifies the received data block. Send to the connection destination.

CPU30は、ディスクリプタ101にDMA転送情報を登録し、ディスクリプタ制御部200にDMA転送処理を開始する旨の指示を送付する。   The CPU 30 registers the DMA transfer information in the descriptor 101, and sends an instruction to start the DMA transfer process to the descriptor control unit 200.

ディスクリプタ制御部200は、プログラムを記憶する記憶デバイス(図示せず)と、そのプログラムをメモリに読み込んで命令を実行する少なくとも1つのプロセッサ(図示せず)とを含む。   The descriptor control unit 200 includes a storage device (not shown) that stores a program, and at least one processor (not shown) that reads the program into a memory and executes an instruction.

図2は、本実施形態におけるディスクリプタ制御部200の構成を示すブロック図である。   FIG. 2 is a block diagram showing the configuration of the descriptor control unit 200 in this embodiment.

図2を参照すると、ディスクリプタ制御部200は、ディスクリプタ選択部201、エンジン使用状況管理部202、エンジン設定部203、完了通知部204を含む。   Referring to FIG. 2, the descriptor control unit 200 includes a descriptor selection unit 201, an engine usage status management unit 202, an engine setting unit 203, and a completion notification unit 204.

ディスクリプタ選択部201は、ディスクリプタ群100に含まれるディスクリプタ101のうち1つのディスクリプタを選択し、そのディスクリプタに格納されたDMA転送情報をエンジン設定部203に送付する。   The descriptor selection unit 201 selects one of the descriptors 101 included in the descriptor group 100 and sends the DMA transfer information stored in the descriptor to the engine setting unit 203.

エンジン使用状況管理部202は、エンジン使用状況テーブル2021を記憶する。エンジン使用状況テーブル2021には、DMAエンジン300を示す識別情報と、そのDMAエンジン300が参照しているDMA転送情報が含まれるディスクリプタ101を示す識別情報とが関連付けられたレコードが登録される。   The engine usage status management unit 202 stores an engine usage status table 2021. A record in which the identification information indicating the DMA engine 300 and the identification information indicating the descriptor 101 including the DMA transfer information referred to by the DMA engine 300 are associated with each other is registered in the engine usage status table 2021.

エンジン設定部203は、エンジン使用状況テーブル2021を参照し、DMAエンジン300のうち、現在未使用のDMAエンジンを検索する。そして、エンジン設定部203は、検索した未使用のDMAエンジン300に、ディスクリプタ選択部201から受け取ったDMA転送情報を送付する。また、転送データ長、未使用のDMAエンジン数などが所定の条件に当てはまる場合には、エンジン設定部203は、DMA転送情報の内容を基に、DMA転送情報を所定の方法で求めた数に分割したDMA転送情報を表す分割DMA転送情報(以降、「第2の転送情報」とも言う。)を生成する。そして、エンジン設定部203は、複数のDMAエンジン300の各々に、生成した分割DMA転送情報の各々を送付する。   The engine setting unit 203 refers to the engine usage status table 2021, and searches the DMA engine 300 for a currently unused DMA engine. Then, the engine setting unit 203 sends the DMA transfer information received from the descriptor selecting unit 201 to the unused DMA engine 300 searched. In addition, when the transfer data length, the number of unused DMA engines, and the like satisfy a predetermined condition, the engine setting unit 203 sets the number of DMA transfer information to a number obtained by a predetermined method based on the content of the DMA transfer information. Divided DMA transfer information (hereinafter, also referred to as “second transfer information”) representing the divided DMA transfer information is generated. Then, the engine setting unit 203 sends each of the generated divided DMA transfer information to each of the plurality of DMA engines 300.

完了通知部204は、DMAエンジン300からDMA転送処理が終了した旨の通知を受信すると、エンジン使用状況テーブル2021を更新するとともに、必要な場合はディスクリプタ101の転送完了フラグおよび実行バリッドを更新する。   Upon receiving the notification that the DMA transfer processing is completed from the DMA engine 300, the completion notifying unit 204 updates the engine usage status table 2021 and, if necessary, updates the transfer completion flag and execution valid of the descriptor 101.

図3は、本実施形態におけるエンジン使用状況テーブル2021の一例を示す図である。   FIG. 3 is a diagram showing an example of the engine usage status table 2021 in the present embodiment.

図3を参照すると、エンジン使用状況テーブル2021は、エンジン識別欄と、ディスクリプタ識別欄と、複数エンジン使用フラグ欄とを含む。   Referring to FIG. 3, the engine usage status table 2021 includes an engine identification field, a descriptor identification field, and a multiple engine usage flag field.

エンジン識別欄には、DMA転送部10に含まれる各DMAエンジン300に割り当てられた識別情報が事前に登録される。   The identification information assigned to each DMA engine 300 included in the DMA transfer unit 10 is registered in advance in the engine identification column.

ディスクリプタ識別欄には、エンジン識別欄に登録された識別情報が示すDMAエンジンが参照するDMA転送情報が登録されているディスクリプタ101に割り当てられた識別情報が登録される。   In the descriptor identification field, the identification information assigned to the descriptor 101 in which the DMA transfer information referred to by the DMA engine indicated by the identification information registered in the engine identification field is registered.

複数エンジン使用フラグ欄には、ディスクリプタ識別欄に登録された識別情報が示すディスクリプタに登録されているDMA転送情報が、複数に分割されて、そのうちの1つがエンジン識別欄に登録されている識別情報が示すDMAエンジンで実行されている場合に「1」が登録される。そして、DMA転送情報が複数に分割されずに、エンジン識別欄に登録されている識別情報が示すDMAエンジンが、そのDMA転送情報を基にDMA転送処理を実行している場合は「0(ゼロ)」が登録される。   In the multiple engine use flag field, the DMA transfer information registered in the descriptor indicated by the identification information registered in the descriptor identification field is divided into a plurality of pieces, and one of them is registered in the engine identification field. "1" is registered when executed by the DMA engine indicated by. If the DMA transfer information is not divided into a plurality of pieces and the DMA engine indicated by the identification information registered in the engine identification column is executing the DMA transfer processing based on the DMA transfer information, “0 (zero )” is registered.

エンジン使用状況テーブル2021の各行のレコードにおけるそれぞれの識別情報およびフラグ「1」、「0」は、互いに関連付けて記憶されている。例えば、図3の1行目のレコードを参照すると、エンジン識別欄には「DMAエンジンA」が登録され、ディスクリプタ識別欄には「ディスクリプタA」が登録され、複数エンジン使用フラグ欄には、「1」が登録されている。すなわち、DMAエンジンAという識別情報が示すDMAエンジン300は、ディスクリプタAという識別情報が示すディスクリプタに格納されているDMA転送情報を複数に分割した分割DMA転送情報を、エンジン設定部203から受け取り、その分割DMA転送情報を基にDMA転送処理を実行していることが判る。なお、ディスクリプタ識別欄に識別情報が登録されていないレコードのエンジン識別欄に登録されている識別情報が示すDMAエンジンBが、現在未使用のDMAエンジンである。   The respective identification information and the flags “1” and “0” in the records of each row of the engine usage status table 2021 are stored in association with each other. For example, referring to the record on the first line of FIG. 3, “DMA engine A” is registered in the engine identification field, “descriptor A” is registered in the descriptor identification field, and “DMA engine A” is registered in the multiple engine use flag field. 1” is registered. That is, the DMA engine 300 indicated by the identification information of the DMA engine A receives from the engine setting unit 203 the divided DMA transfer information obtained by dividing the DMA transfer information stored in the descriptor indicated by the identification information of the descriptor A into a plurality of pieces, and It can be seen that the DMA transfer processing is executed based on the divided DMA transfer information. The DMA engine B indicated by the identification information registered in the engine identification field of the record in which the identification information is not registered in the descriptor identification field is a DMA engine that is currently unused.

次に、DMA転送部10の動作について図4乃至図6のフローチャートを参照して説明する。   Next, the operation of the DMA transfer unit 10 will be described with reference to the flowcharts of FIGS.

図4は、DMA転送処理を実行する際のDMA転送部10の動作を示すフローチャートである。   FIG. 4 is a flowchart showing the operation of the DMA transfer unit 10 when executing the DMA transfer process.

図4を参照すると、まず、ディスクリプタ制御部200に含まれるディスクリプタ選択部201が、CPU30からDMA転送処理の開始指示を受け取る。なお、ディスクリプタ選択部201は、エンジン使用状況テーブル2021を参照し、現在未使用のDMAエンジンが無い場合(すなわち、全てのレコードのディスクリプタ識別欄に識別情報が登録されている場合。)は、DMA転送処理の開始を待ち合わせる。   Referring to FIG. 4, first, the descriptor selecting unit 201 included in the descriptor control unit 200 receives a DMA transfer process start instruction from the CPU 30. The descriptor selecting unit 201 refers to the engine usage status table 2021, and if there is no DMA engine that is currently unused (that is, if the identification information is registered in the descriptor identification field of all records), the DMA. Wait for the start of transfer processing.

未使用のDMAエンジン300がある場合には、ディスクリプタ選択部201は、ディスクリプタ群100に含まれるディスクリプタ101のうち、有効ディスクリプタ(実行バリッドに「1」が登録されているディスクリプタ)であり、且つ、エンジン使用状況テーブル2021に含まれる各レコードのディスクリプタ識別欄に、そのディスクリプタを示す識別情報が登録されていないディスクリプタを1つ選択する(ステップS101)。そして、ディスクリプタ選択部201は、選択したディスクリプタ101に登録されているDMA転送情報をエンジン設定部203に送付する。   If there is an unused DMA engine 300, the descriptor selecting unit 201 is an effective descriptor (descriptor in which “1” is registered in the execution valid) of the descriptors 101 included in the descriptor group 100, and In the descriptor identification field of each record included in the engine usage status table 2021, one descriptor for which identification information indicating the descriptor is not registered is selected (step S101). Then, the descriptor selecting unit 201 sends the DMA transfer information registered in the selected descriptor 101 to the engine setting unit 203.

次に、エンジン設定部203は、エンジン使用状況テーブル2021のレコードを参照し、現在未使用のDMAエンジン300を検索する。エンジン設定部203は、検索した未使用のDMAエンジン300に、ディスクリプタ選択部201から受け取ったDMA転送情報を送付し、そのDMAエンジンを起動する。   Next, the engine setting unit 203 refers to the record of the engine usage status table 2021 and searches for the currently unused DMA engine 300. The engine setting unit 203 sends the DMA transfer information received from the descriptor selecting unit 201 to the unused DMA engine 300 thus searched, and activates the DMA engine.

なお、DMA転送情報に含まれる情報等が所定の条件に当てはまる場合には、エンジン設定部203は、ディスクリプタ選択部201から受け取ったDMA転送情報の内容を基に、所定の方法で求めた数の分割DMA転送情報を生成する。所定の条件および所定の方法については、式を使って後述されるので、ここでは説明を省略する。そして、エンジン設定部203は、生成した分割DMA転送情報の各々を複数のDMAエンジン300の各々に送付し、各DMAエンジン300を起動する(ステップS102)。   If the information included in the DMA transfer information meets a predetermined condition, the engine setting unit 203 determines the number of pieces obtained by a predetermined method based on the content of the DMA transfer information received from the descriptor selecting unit 201. The divided DMA transfer information is generated. The predetermined condition and the predetermined method will be described later by using an equation, and thus the description thereof will be omitted here. Then, the engine setting unit 203 sends each of the generated divided DMA transfer information to each of the plurality of DMA engines 300, and activates each DMA engine 300 (step S102).

なお、ステップS101およびS102で説明した、DMA転送処理の開始の際のディスクリプタ制御部200の動作の詳細については、図5のフローチャートを基に後述する。   The details of the operation of the descriptor control unit 200 at the start of the DMA transfer process described in steps S101 and S102 will be described later based on the flowchart of FIG.

次に、エンジン設定部203によって起動されたDMAエンジン300のDMAリクエスト制御部301は、送付されたDMA転送情報または分割DMA転送情報に含まれる転送元アドレスなどの情報を含むリード命令を発行し、トランザクション制御部20に送付する(ステップS103)。   Next, the DMA request control unit 301 of the DMA engine 300 activated by the engine setting unit 203 issues a read command including information such as a transfer source address included in the sent DMA transfer information or divided DMA transfer information, It is sent to the transaction control unit 20 (step S103).

次に、ステップS103で送付したリード命令への応答として、トランザクション制御部20からデータブロックを受け取ると、DMAリクエスト制御部301は、受け取ったデータブロックをデータバッファ302に格納する(ステップS104)。そして、DMAリクエスト制御部301は、DMA転送情報または分割DMA転送情報に含まれる転送先アドレスなどと、データバッファ302に格納されているデータブロックとを含むライト命令を発行し、トランザクション制御部20に送付する(ステップS105)。   Next, when a data block is received from the transaction control unit 20 as a response to the read command sent in step S103, the DMA request control unit 301 stores the received data block in the data buffer 302 (step S104). Then, the DMA request control unit 301 issues a write command including the transfer destination address included in the DMA transfer information or the divided DMA transfer information, and the data block stored in the data buffer 302, to the transaction control unit 20. It is sent (step S105).

次に、トランザクション制御部20から、ステップS105で送付したライト命令が完了した旨の通知を受信したDMAリクエスト制御部301は、完了通知部204にDMA転送処理の実行が完了した旨の通知を送付する(ステップS106)。なお、DMA転送情報または分割DMA転送情報に含まれる転送データ長が、データブロックの大きさより大きい場合は、ステップS103乃至S105の処理が複数回繰り返される。   Next, the DMA request control unit 301, which has received the notification that the write command sent in step S105 has been completed from the transaction control unit 20, sends a notification that the execution of the DMA transfer processing has been completed to the completion notification unit 204. (Step S106). If the transfer data length included in the DMA transfer information or the divided DMA transfer information is larger than the size of the data block, the processes of steps S103 to S105 are repeated multiple times.

DMA転送処理の実行が完了した旨の通知を受信した完了通知部204は、エンジン使用状況テーブル2021のレコードの情報を更新するとともに、必要な場合は、ディスクリプタ101の転送完了フラグと実行バリッドとを更新することで、ディスクリプタの完了を設定する(ステップS107)。なお、ステップS106およびS107で説明した、DMA転送処理の完了時のディスクリプタ制御部200の動作の詳細については、図6のフローチャートを基に後述する。   Upon receiving the notification that the execution of the DMA transfer process is completed, the completion notifying unit 204 updates the information in the record of the engine usage status table 2021 and, if necessary, sets the transfer completion flag and the execution valid of the descriptor 101. By updating, the completion of the descriptor is set (step S107). The details of the operation of the descriptor control unit 200 upon completion of the DMA transfer process described in steps S106 and S107 will be described later with reference to the flowchart of FIG.

このようにして、ディスクリプタ101に格納されたDMA転送情報に基づくDMA転送処理が行われる。   In this way, the DMA transfer processing based on the DMA transfer information stored in the descriptor 101 is performed.

次に、ステップS101およびS102で説明した、DMA転送処理の開始の際のディスクリプタ制御部200の動作について図5のフローチャートを参照して説明する。   Next, the operation of the descriptor control unit 200 when starting the DMA transfer process described in steps S101 and S102 will be described with reference to the flowchart of FIG.

図5を参照すると、まず、ディスクリプタ選択部201が、ディスクリプタ群100に含まれる有効ディスクリプタの総数を算出する。そして、ディスクリプタ選択部201は、エンジン使用状況テーブル2021を参照し、DMAエンジン300の総数、すなわちエンジン使用状況テーブル2021に登録されているレコードの数を計数する。そして、ディスクリプタ選択部201は、算出した有効ディスクリプタの総数がDMAエンジン300の総数以上か否かの判定を行う(ステップS201)。   Referring to FIG. 5, first, the descriptor selecting unit 201 calculates the total number of valid descriptors included in the descriptor group 100. Then, the descriptor selection unit 201 refers to the engine usage status table 2021, and counts the total number of DMA engines 300, that is, the number of records registered in the engine usage status table 2021. Then, the descriptor selection unit 201 determines whether or not the calculated total number of valid descriptors is equal to or larger than the total number of DMA engines 300 (step S201).

算出した有効ディスクリプタの総数がDMAエンジン300の総数以上の場合(ステップS201で「YES」の場合。)は、ディスクリプタ選択部201は、選択した有効ディスクリプタに登録されているDMA転送情報をエンジン設定部203に送付する。そして、エンジン設定部203は、エンジン使用状況テーブル2021を参照し、現在未使用のDMAエンジン300を選択する。すなわち、エンジン使用状況テーブル2021のディスクリプタ識別欄に識別情報が登録されていないレコードを検索し、検索したレコードのエンジン識別欄に格納されている識別情報が示すDMAエンジン300を選択する。   If the calculated total number of valid descriptors is greater than or equal to the total number of DMA engines 300 (“YES” in step S201), the descriptor selecting unit 201 sets the DMA transfer information registered in the selected valid descriptors to the engine setting unit. Send to 203. Then, the engine setting unit 203 refers to the engine usage status table 2021 and selects the currently unused DMA engine 300. That is, the record whose identification information is not registered in the descriptor identification field of the engine usage status table 2021 is searched, and the DMA engine 300 indicated by the identification information stored in the engine identification field of the searched record is selected.

エンジン設定部203は、選択した未使用のDMAエンジン300に、ディスクリプタ選択部201から受け取ったDMA転送情報を送付し、そのDMAエンジンを起動する(ステップS207)。また、エンジン設定部203は、エンジン使用状況テーブル2021の検索したレコードのディスクリプタ識別欄に、ディスクリプタ選択部201から送付されたDMA転送情報が登録されているディスクリプタを示す識別情報を登録する。そして、エンジン設定部203は、そのレコードの複数エンジン使用フラグ欄に0(ゼロ)を登録する。   The engine setting unit 203 sends the DMA transfer information received from the descriptor selecting unit 201 to the selected unused DMA engine 300, and activates the DMA engine (step S207). Further, the engine setting unit 203 registers the identification information indicating the descriptor in which the DMA transfer information sent from the descriptor selection unit 201 is registered, in the descriptor identification field of the searched record in the engine usage status table 2021. Then, the engine setting unit 203 registers 0 (zero) in the multiple engine use flag column of the record.

一方、算出した有効ディスクリプタの数がDMAエンジン300の総数より少ない場合(ステップS201で「NO」の場合。)は、ディスクリプタ選択部201は、ディスクリプタ群100に含まれるディスクリプタ101のうち、有効ディスクリプタであり、且つ、エンジン使用状況テーブル2021のディスクリプタ識別欄に識別情報が登録されていないディスクリプタ(以降、「未実行ディスクリプタ」と称する)を1つ選択する。なお、選択すべきディスクリプタが複数存在する場合は、ラウンドロビン方式等の予め定めた所定のルールで選択するディスクリプタを決定する。   On the other hand, when the calculated number of valid descriptors is less than the total number of DMA engines 300 (“NO” in step S201), the descriptor selecting unit 201 selects the valid descriptors among the descriptors 101 included in the descriptor group 100. One descriptor (hereinafter, referred to as “unexecuted descriptor”) that is present and whose identification information is not registered in the descriptor identification field of the engine usage status table 2021 is selected. When there are a plurality of descriptors to be selected, the descriptor to be selected is determined by a predetermined rule such as the round robin method.

次に、ディスクリプタ選択部201は、選択した有効ディスクリプタに登録されているDMA転送情報をエンジン設定部203に送付する。そして、エンジン設定部203は、エンジン使用状況テーブル2021を参照し、現在未使用のDMAエンジン300が2つ以上あるか否かを判定する(ステップS202)。すなわち、エンジン使用状況テーブル2021を検索し、ディスクリプタ識別欄に識別情報が登録されていないレコードが2つ以上あるか否かを判定する。   Next, the descriptor selecting unit 201 sends the DMA transfer information registered in the selected valid descriptor to the engine setting unit 203. Then, the engine setting unit 203 refers to the engine usage status table 2021 and determines whether or not there are two or more currently unused DMA engines 300 (step S202). That is, the engine usage status table 2021 is searched to determine whether or not there are two or more records for which identification information is not registered in the descriptor identification field.

現在未使用のDMAエンジン300が1つしか無い場合(ステップS202で「NO」の場合。)は、エンジン設定部203は、そのDMAエンジン300を選択する。そして、選択した未使用のDMAエンジン300に、ディスクリプタ選択部201から受け取ったDMA転送情報を送付し、そのDMAエンジンを起動する(ステップS207)。また、エンジン使用状況テーブル2021を更新する。   When there is only one DMA engine 300 that is currently unused (“NO” in step S202), the engine setting unit 203 selects the DMA engine 300. Then, the DMA transfer information received from the descriptor selecting unit 201 is sent to the selected unused DMA engine 300, and the DMA engine is activated (step S207). Further, the engine usage status table 2021 is updated.

現在未使用のDMAエンジン300が2つ以上ある場合(ステップS202で「YES」の場合。)、エンジン設定部203は、ディスクリプタ選択部201から受け取ったDMA転送情報を分割すべきか否かを、前述の所定の方法で判定する(ステップS203)。ここで、DMA転送情報を分割すべきか否かを判定する方法の一例を以下に説明する。   When there are two or more currently unused DMA engines 300 (“YES” in step S202), the engine setting unit 203 determines whether or not the DMA transfer information received from the descriptor selecting unit 201 should be divided as described above. (Step S203). Here, an example of a method for determining whether or not the DMA transfer information should be divided will be described below.

エンジン設定部203は、データバッファ302の大きさから算出されるデータバッファの深さと、DMA転送情報に含まれる転送データ長、およびデータブロックの大きさから算出した、転送データのデータブロック数(以降、「転送データブロック数」と称する。)と、転送元アドレスが示す転送元のレイテンシの値とを基に、そのDMA転送情報を分割すべきか否かを判定する。   The engine setting unit 203 calculates the data buffer depth calculated from the size of the data buffer 302, the transfer data length included in the DMA transfer information, and the data block number of the transfer data calculated from the size of the data block (hereinafter referred to as “data block number”). , "The number of transfer data blocks") and the latency value of the transfer source indicated by the transfer source address, and whether or not the DMA transfer information should be divided is determined.

すなわち、以下の式(1)および式(2)の両方が満たされる場合に、エンジン設定部203は、DMA転送情報を分割すべきと判定する。   That is, the engine setting unit 203 determines that the DMA transfer information should be divided when both the following Expressions (1) and (2) are satisfied.

データバッファの深さ < 転送データブロック数・・・(1)
データバッファの深さ < 転送元のレイテンシの値・・・(2)
例えば、データバッファの深さが4であり、転送元のメモリ40のレイテンシの値が8である場合、エンジン設定部203は、転送データブロック数が5以上の場合は分割すべきであると判定し、4以下の場合は分割すべきではないと判定する。
Data buffer depth <Number of transferred data blocks (1)
Data buffer depth <Transfer source latency value (2)
For example, when the depth of the data buffer is 4 and the latency value of the memory 40 of the transfer source is 8, the engine setting unit 203 determines that the data should be divided when the number of transfer data blocks is 5 or more. However, if it is 4 or less, it is determined that division should not be performed.

ステップS203でDMA転送情報を分割すべきではないと判定された場合(ステップS203で「NO」の場合。)は、エンジン設定部203は、現在未使用のDMAエンジン300のうち、1つのDMAエンジン300を選択する。そして、選択した未使用のDMAエンジン300に、ディスクリプタ選択部201から受け取ったDMA転送情報を送付し、そのDMAエンジンを起動する(ステップS207)。また、エンジン使用状況テーブル2021を更新する。   If it is determined in step S203 that the DMA transfer information should not be divided (“NO” in step S203), the engine setting unit 203 determines that one of the currently unused DMA engines 300 is one DMA engine. Select 300. Then, the DMA transfer information received from the descriptor selecting unit 201 is sent to the selected unused DMA engine 300, and the DMA engine is activated (step S207). Further, the engine usage status table 2021 is updated.

一方、ステップS203でDMA転送情報を分割すべきであると判定された場合(ステップS203で「YES」の場合。)は、エンジン設定部203は、ディスクリプタ選択部201から受け取ったDMA転送情報の分割数を、所定の方法で算出する。そして、エンジン設定部203は、当該DMA転送情報を基に、算出した分割数と同じ数の分割DMA転送情報を生成する(ステップS204)。ここで、DMA転送情報の分割数を算出する方法の一例を以下に説明する。   On the other hand, if it is determined in step S203 that the DMA transfer information should be divided (in the case of “YES” in step S203), the engine setting unit 203 divides the DMA transfer information received from the descriptor selecting unit 201. The number is calculated by a predetermined method. Then, the engine setting unit 203 generates the same number of divided DMA transfer information as the calculated divided number based on the DMA transfer information (step S204). Here, an example of a method of calculating the division number of the DMA transfer information will be described below.

エンジン設定部203は、ディスクリプタ選択部201から受け取ったDMA転送情報に含まれる転送データ長から算出した転送データブロック数と、データバッファ302の大きさから算出したデータバッファの深さと、未使用DMAエンジン300の数と、未実行ディスクリプタ101の数と、転送元のレイテンシの値とを基に、分割数を算出する。   The engine setting unit 203 determines the number of transfer data blocks calculated from the transfer data length included in the DMA transfer information received from the descriptor selecting unit 201, the data buffer depth calculated from the size of the data buffer 302, and the unused DMA engine. The number of divisions is calculated based on the number of 300, the number of unexecuted descriptors 101, and the latency value of the transfer source.

すなわち、以下の式(3)を満たす場合は、エンジン設定部203は、以下の式(4)の計算結果を切り上げて整数にした値を求め、その値を、分割する最大の数(以降、「最大分割数」と称する。)とする。   That is, when the following formula (3) is satisfied, the engine setting unit 203 rounds up the calculation result of the following formula (4) to obtain an integer value, and the value is divided into the maximum number (hereinafter, It is referred to as the "maximum number of divisions."

転送データブロック数 < 転送元のレイテンシの値・・・(3)
転送データブロック数/データバッファの深さ・・・(4)
また、上記式(3)を満たさない場合は、エンジン設定部203は、以下の式(5)の計算結果を切り上げて整数にした値を求め、その値を最大分割数とする。
Transfer data block count <Transfer source latency value (3)
Number of transferred data blocks/depth of data buffer (4)
When the above equation (3) is not satisfied, the engine setting unit 203 rounds up the calculation result of the following equation (5) to obtain an integer value, and sets the value as the maximum number of divisions.

転送元のレイテンシの値/データバッファの深さ・・・(5)
例えば、データバッファの深さが4であり、転送元の入出力部50のレイテンシの値が20であり、転送データブロック数が12である場合、上記式(3)を満たすので、エンジン設定部203は、上記式(4)を適用し最大分割数の3を求める。
Transfer source latency value/data buffer depth (5)
For example, when the depth of the data buffer is 4, the latency value of the transfer source input/output unit 50 is 20, and the number of transfer data blocks is 12, the above equation (3) is satisfied, so the engine setting unit 203 applies the above equation (4) to obtain the maximum division number of 3.

次に、エンジン設定部203は、求めた最大分割数と、未使用のDMAエンジン300の数とを比較し、以下の式(6)を満たす場合は、未使用DMAエンジンの数を分割数とする。   Next, the engine setting unit 203 compares the obtained maximum number of divisions with the number of unused DMA engines 300, and if the following expression (6) is satisfied, the number of unused DMA engines is set as the number of divisions. To do.

最大分割数 > 未使用DMAエンジンの数・・・(6)
次に、他に未実行ディスクリプタがある場合は、エンジン設定部203は、以下の式(7)を満たし、且つ、最大分割数以下である分割数を求める。
Maximum number of divisions> Number of unused DMA engines (6)
Next, when there is another unexecuted descriptor, the engine setting unit 203 obtains a division number that satisfies the following expression (7) and is equal to or less than the maximum division number.

分割数+他の未実行ディスクリプタ数 <= 未使用DMAエンジンの数・・・(7)
そして、式(6)、および式(7)のどちらも満たさない場合は、エンジン設定部203は、求めた最大分割数を分割数とする。
Number of divisions + number of other unexecuted descriptors <= number of unused DMA engines (7)
If neither Expression (6) nor Expression (7) is satisfied, the engine setting unit 203 sets the obtained maximum number of divisions as the number of divisions.

図5のフローチャートの説明に戻り、次に、エンジン設定部203は、算出した分割数と同じ数の未使用DMAエンジン300を選択する。   Returning to the description of the flowchart in FIG. 5, the engine setting unit 203 then selects the unused DMA engines 300 in the same number as the calculated division number.

そして、エンジン設定部203は、エンジン使用状況テーブル2021を参照し、各選択したDMAエンジン300を示す識別情報がエンジン識別欄に登録されているレコードのディスクリプタ識別欄に、生成した分割DMA転送情報の基となったDMA転送情報が格納されているディスクリプタを示す識別情報を登録する。さらに、エンジン設定部203は、各該レコードの複数エンジン使用フラグ欄に、複数に分割されていることを示す「1」を登録する(ステップS205)。   Then, the engine setting unit 203 refers to the engine usage status table 2021, and identifies the selected DMA engine 300 in the descriptor identification field of the record in which the identification information indicating the selected DMA engine 300 is registered in the engine identification field. The identification information indicating the descriptor in which the base DMA transfer information is stored is registered. Further, the engine setting unit 203 registers "1" indicating that the record is divided into a plurality of pieces in the multiple engine use flag column of each record (step S205).

次に、エンジン設定部203は、ステップS205で選択したDMAエンジン300の各々に、生成した分割DMA転送情報の各々を送付し、各DMAエンジンを起動する(ステップS206)。   Next, the engine setting unit 203 sends each of the generated divided DMA transfer information to each of the DMA engines 300 selected in step S205, and activates each DMA engine (step S206).

このようにして、1つのディスクリプタ101に登録されたDMA転送情報が、適切な分割数の分割DMA転送情報に分割され、それぞれが別のDMAエンジン300で並行して実行される。   In this way, the DMA transfer information registered in one descriptor 101 is divided into the appropriate number of pieces of divided DMA transfer information, and the divided DMA transfer information is executed in parallel by different DMA engines 300.

次に、ステップS106およびS107で説明した、DMA転送処理の完了時のディスクリプタ制御部200の動作について図6のフローチャートを参照して説明する。   Next, the operation of the descriptor control unit 200 upon completion of the DMA transfer processing described in steps S106 and S107 will be described with reference to the flowchart of FIG.

図6を参照すると、まず、DMAリクエスト制御部301は、ディスクリプタ制御部200に含まれる完了通知部204にDMA転送処理の実行が完了した旨の通知を送付する。   Referring to FIG. 6, first, the DMA request control unit 301 sends a notification that the execution of the DMA transfer process is completed to the completion notification unit 204 included in the descriptor control unit 200.

完了通知部204は、エンジン使用状況テーブル2021を参照し、完了通知を送付したDMAリクエスト制御部301が含まれるDMAエンジン300を示す識別情報がエンジン識別欄に格納されているレコードの、複数エンジン使用フラグ欄に「0(ゼロ)」が格納されているか否か(すなわち、使用したDMAエンジンは1つか否か)を判定する(ステップS301)。   The completion notification unit 204 refers to the engine usage status table 2021 and uses a plurality of engines in a record in which the identification information indicating the DMA engine 300 including the DMA request control unit 301 that has sent the completion notification is stored in the engine identification field. It is determined whether or not "0 (zero)" is stored in the flag column (that is, whether or not there is one DMA engine used) (step S301).

複数エンジン使用フラグ欄に「0(ゼロ)」が格納されている場合(ステップS301で「YES」の場合。)、完了通知部204は、そのレコードのディスクリプタ識別欄に格納されている識別情報を削除する(ステップS302)。そして、完了通知部204は、その削除した識別情報が示すディスクリプタ101に含まれる実行バリッドに「0(ゼロ)」を登録するとともに、転送完了フラグに「1」を登録する(ステップS305)。   When "0 (zero)" is stored in the multiple engine use flag column (in the case of "YES" in step S301), the completion notifying unit 204 sets the identification information stored in the descriptor identification column of the record. It is deleted (step S302). Then, the completion notification unit 204 registers “0 (zero)” in the execution valid included in the descriptor 101 indicated by the deleted identification information, and also registers “1” in the transfer completion flag (step S305).

ステップS301で、複数エンジン使用フラグ欄に「1」が格納されている場合(ステップS301で「NO」の場合。)、完了通知部204は、そのレコードのディスクリプタ識別欄に格納されている識別情報と、複数エンジン使用フラグ欄に格納されている値とを削除する(ステップS303)。このとき、完了通知部204は、削除した識別情報と同じ識別情報が、他のレコードのディスクリプタ識別欄に登録されているか否かを判別する(ステップS304)。   When “1” is stored in the multiple engine use flag column in step S301 (“NO” in step S301), the completion notifying unit 204 determines the identification information stored in the descriptor identification column of the record. And the value stored in the multiple engine use flag column are deleted (step S303). At this time, the completion notification unit 204 determines whether the same identification information as the deleted identification information is registered in the descriptor identification field of another record (step S304).

他のレコードのディスクリプタ識別欄に、同じ識別情報が登録されていない場合(ステップS304で「NO」の場合。)、完了通知部204は、その削除した識別情報が示すディスクリプタ101に含まれる実行バリッドに「0(ゼロ)」を登録するとともに、転送完了フラグに「1」を登録する(ステップS305)。   When the same identification information is not registered in the descriptor identification fields of other records (in the case of “NO” in step S304), the completion notifying unit 204 causes the execution validator included in the descriptor 101 indicated by the deleted identification information. "0 (zero)" is registered in, and "1" is registered in the transfer completion flag (step S305).

以上、本実施形態には、リソースの競合による使用効率の低下やシステム全体のスループットの低下を招かずに、複数のDMA転送処理を行うことができるという効果がある。   As described above, the present embodiment has an effect that it is possible to perform a plurality of DMA transfer processes without causing a decrease in usage efficiency due to resource competition and a decrease in throughput of the entire system.

その理由としては、ディスクリプタ制御部201が、有効ディスクリプタの総数とDMAエンジン300の総数とを比較し、有効ディスクリプタの総数がDMAエンジン300の総数以上の場合はディスクリプタの分割を行わずに、有効ディスクリプタの並列処理を妨げないようにする。そして、未使用のDMAエンジン300が2つ以上ある場合に、エンジン設定部203が、ディスクリプタ101を分割すべきか否かを、データバッファの深さと、転送データブロック数と、転送元のレイテンシの値とを基にした所定の判定方法で判定する。そして、分割する場合は、ディスクリプタ101の適切な分割数を、転送データブロック数と、データバッファの深さと、未使用DMAエンジン300の数と、未実行のディスクリプタ数と、転送元のレイテンシの値とを基にした所定の算出方法で求める。そして、エンジン設定部203が、求めた適切な分割数でディスクリプタ101を分割し、分割したディスクリプタを基にDMA転送処理が行われるからである。   The reason is that the descriptor control unit 201 compares the total number of valid descriptors with the total number of DMA engines 300, and when the total number of valid descriptors is equal to or larger than the total number of DMA engines 300, the descriptors are not divided and the valid descriptors are not divided. Do not disturb the parallel processing of. When there are two or more unused DMA engines 300, the engine setting unit 203 determines whether the descriptor 101 should be divided, the depth of the data buffer, the number of transfer data blocks, and the latency value of the transfer source. It is determined by a predetermined determination method based on When dividing, the appropriate number of divisions of the descriptor 101 is set to the number of transfer data blocks, the depth of the data buffer, the number of unused DMA engines 300, the number of unexecuted descriptors, and the latency value of the transfer source. It is calculated by a predetermined calculation method based on and. Then, the engine setting unit 203 divides the descriptor 101 by the determined appropriate division number, and the DMA transfer process is performed based on the divided descriptor.

[第2の実施形態]
次に、本発明の第1の実施形態の基本的な構成を含む、第2の実施形態について説明する。
[Second Embodiment]
Next, a second embodiment including the basic configuration of the first embodiment of the present invention will be described.

図7は本実施形態を示すブロック図である。   FIG. 7 is a block diagram showing this embodiment.

図7を参照すると、情報処理装置2は、複数の転送情報記憶部110と、転送情報制御部210と、複数のDMAエンジン310とを含む。   Referring to FIG. 7, the information processing device 2 includes a plurality of transfer information storage units 110, a transfer information control unit 210, and a plurality of DMA engines 310.

転送情報記憶部110には、DMA転送処理の実行に必要な第1の転送情報が格納されている。   The transfer information storage unit 110 stores the first transfer information necessary for executing the DMA transfer process.

DMAエンジン310は、転送情報記憶部110に格納された第1の転送情報に基づきDMA転送処理を行う。また、DMAエンジン310は、DMA転送処理で読み出した転送データを一時的に保持する転送データバッファ(図示せず)を備える。   The DMA engine 310 performs a DMA transfer process based on the first transfer information stored in the transfer information storage unit 110. The DMA engine 310 also includes a transfer data buffer (not shown) that temporarily holds the transfer data read in the DMA transfer process.

転送情報制御部210は、プログラムを記憶する記憶デバイス(図示せず)と、そのプログラムをメモリに読み込んで命令を実行する少なくとも1つのプロセッサ(図示せず)とを含む。   The transfer information control unit 210 includes a storage device (not shown) that stores a program, and at least one processor (not shown) that reads the program into a memory and executes an instruction.

転送情報制御部210は、転送情報記憶部110に格納された第1の転送情報を分割すべきか否かを、転送データの大きさと、DMA転送処理が完了するまでの転送時間と、転送データバッファの大きさとに基づいて判定する。なお、第1の転送情報を分割すべきか否かを判定する判定方法の一例については、第1の実施形態で説明した、DMA転送情報を分割すべきか否かを判定する方法の一例と同一であるので、ここでの説明は省略する。   The transfer information control unit 210 determines whether to divide the first transfer information stored in the transfer information storage unit 110, the size of the transfer data, the transfer time until the DMA transfer process is completed, and the transfer data buffer. Based on the size of. Note that an example of the determination method for determining whether or not to divide the first transfer information is the same as the example of the method for determining whether or not to divide the DMA transfer information described in the first embodiment. Therefore, the description thereof is omitted here.

第1の転送情報を分割すべきと判定した場合、転送情報制御部210は、第1の転送情報の分割数を、転送データの大きさと、DMA転送処理が完了するまでの転送時間と、転送データバッファの大きさと、DMA転送処理を実行していない未使用DMAエンジンの数と、DMAエンジンによってDMA転送処理が実行されていない第1の転送情報の数とに基づいて決定する。なお、第1の転送情報の分割数を決定する方法の一例については、第1の実施形態で説明した、DMA転送情報の分割数を算出する方法の一例と同一であるので、ここでの説明は省略する。   When determining that the first transfer information should be divided, the transfer information control unit 210 determines the number of divisions of the first transfer information, the size of the transfer data, the transfer time until the DMA transfer process is completed, and the transfer. It is determined based on the size of the data buffer, the number of unused DMA engines that are not executing the DMA transfer process, and the number of first transfer information items that are not executing the DMA transfer process by the DMA engine. It should be noted that an example of the method of determining the division number of the first transfer information is the same as the example of the method of calculating the division number of the DMA transfer information described in the first embodiment. Is omitted.

そして、転送情報制御部210は、決定した分割数で、1つの転送情報記憶部110に格納された第1の転送情報を分割し、複数の第2の転送情報を生成する。   Then, the transfer information control unit 210 divides the first transfer information stored in one transfer information storage unit 110 by the determined division number, and generates a plurality of second transfer information.

次に、転送情報制御部210は、生成した第2の転送情報の各々を、DMAエンジン310の各々に送付する。   Next, the transfer information control unit 210 sends each of the generated second transfer information to each of the DMA engines 310.

そして、転送情報制御部210は、第2の転送情報を送付した各DMAエンジンを起動する。   Then, the transfer information control unit 210 activates each DMA engine that has sent the second transfer information.

以上、本実施形態には、第1の実施形態と同様に、リソースの競合による使用効率の低下やシステム全体のスループットの低下を招かずに、複数のDMA転送処理を行うことができるという効果がある。   As described above, according to the present embodiment, as in the first embodiment, it is possible to perform a plurality of DMA transfer processes without causing a decrease in usage efficiency due to resource competition and a decrease in overall system throughput. is there.

その理由としては、転送情報制御部210が、第1の転送情報を分割すべきか否かを、転送データの大きさと、DMA転送処理が完了するまでの転送時間と、転送データバッファの大きさとに基づいて判定する。そして、分割する場合は、第1の転送情報の適切な分割数を、転送データの大きさと、DMA転送処理が完了するまでの転送時間と、転送データバッファの大きさと、DMA転送処理を実行していない未使用DMAエンジンの数と、DMAエンジンによってDMA転送処理が実行されていない第1の転送情報の数とに基づいて決定する。そして、決定した適切な分割数で第1の転送情報を分割し、分割した第2の転送情報を基にDMA転送処理が行われるからである。   The reason is that the transfer information control unit 210 determines whether or not the first transfer information should be divided based on the size of the transfer data, the transfer time until the DMA transfer process is completed, and the size of the transfer data buffer. Judgment based on When dividing, the appropriate number of divisions of the first transfer information is set to the size of the transfer data, the transfer time until the completion of the DMA transfer process, the size of the transfer data buffer, and the DMA transfer process. It is determined based on the number of unused DMA engines that are not used and the number of first transfer information for which the DMA transfer processing is not executed by the DMA engine. Then, the first transfer information is divided by the determined appropriate division number, and the DMA transfer processing is performed based on the divided second transfer information.

1 情報処理装置
2 情報処理装置
10 DMA転送部
20 トランザクション制御部
30 CPU
40 メモリ
50 入出力部
100 ディスクリプタ群
101 ディスクリプタ
110 転送情報記憶部
200 ディスクリプタ制御部
201 ディスクリプタ選択部
202 エンジン使用状況管理部
203 エンジン設定部
204 完了通知部
210 転送情報制御部
300 DMAエンジン
301 DMAリクエスト制御部
302 データバッファ
310 DMAエンジン
2021 エンジン使用状況テーブル
1 Information Processing Device 2 Information Processing Device 10 DMA Transfer Unit 20 Transaction Control Unit 30 CPU
40 memory 50 input/output unit 100 descriptor group 101 descriptor 110 transfer information storage unit 200 descriptor control unit 201 descriptor selection unit 202 engine usage status management unit 203 engine setting unit 204 completion notification unit 210 transfer information control unit 300 DMA engine 301 DMA request control Part 302 data buffer 310 DMA engine 2021 engine usage status table

Claims (7)

DMA(Direct Memory Access)転送処理に必要な第1の転送情報が格納された少なくとも1つの転送情報記憶手段と、
前記第1の転送情報に基づき前記DMA転送処理を実行する、少なくとも1つのDMAエンジンと、
転送情報制御手段と
を含み、
前記DMAエンジンは、前記DMA転送処理で読み出した転送データを一時的に保持する転送データバッファを備え、
前記転送情報制御手段は、
前記第1の転送情報を分割すべきか否かを、前記転送データの大きさと、前記DMA転送処理が完了するまでの転送時間と、前記転送データバッファの大きさとに基づいて判定し、
前記第1の転送情報を分割すべきと判定した場合は、前記第1の転送情報の分割数を、前記転送データの大きさと、前記転送時間と、前記転送データバッファの大きさと、前記DMA転送処理を実行していない未使用DMAエンジンの数と、前記DMAエンジンによってDMA転送処理が実行されていない前記第1の転送情報の数とに基づいて決定し、
前記決定した分割数で1つの前記第1の転送情報を分割して複数の第2の転送情報を生成し、
前記第2の転送情報の各々を前記DMAエンジンの各々に送付し、各々の前記DMAエンジンを起動する
情報処理装置。
At least one transfer information storage unit in which first transfer information necessary for a DMA (Direct Memory Access) transfer process is stored;
At least one DMA engine that performs the DMA transfer process based on the first transfer information;
And transfer information control means,
The DMA engine includes a transfer data buffer that temporarily holds the transfer data read in the DMA transfer process,
The transfer information control means,
Whether to divide the first transfer information is determined based on the size of the transfer data, the transfer time until the DMA transfer processing is completed, and the size of the transfer data buffer,
When it is determined that the first transfer information should be divided, the number of divisions of the first transfer information is set to the size of the transfer data, the transfer time, the size of the transfer data buffer, and the DMA transfer. Determining based on the number of unused DMA engines that are not performing processing and the number of the first transfer information that is not performing DMA transfer processing by the DMA engine,
Dividing the one piece of the first transfer information by the determined number of divisions to generate a plurality of second transfer information,
An information processing apparatus, which sends each of the second transfer information to each of the DMA engines, and activates each of the DMA engines.
前記転送情報記憶手段のそれぞれを識別する記憶手段識別情報と、前記DMAエンジンのそれぞれを識別するエンジン識別情報と、前記第1の転送情報が複数の前記第2の転送情報に分割されていることを表すフラグとが関連づけられて登録されているエンジン使用状況管理手段と、
前記分割数を前記未使用DMAエンジンの数以下に決定して前記分割数と同じ数の前記未使用DMAエンジンを選択し、前記エンジン使用状況管理手段に登録されている、前記選択した未使用DMAエンジンを示すエンジン識別情報に関連づけて、前記第2の転送情報の生成元である前記第1の転送情報が格納されている前記転送情報記憶手段を示す記憶手段識別情報と、複数の第2の転送情報に分割されていることを示す分割情報が格納された前記フラグとを登録し、前記第2の転送情報の各々を前記選択した未使用DMAエンジンの各々に送付し、各々のDMAエンジンを起動するエンジン設定手段と、
前記DMAエンジンのDMA転送処理が完了した場合、前記エンジン使用状況管理手段に登録されている、前記DMA転送処理が完了したDMAエンジンを示す第1のエンジン識別情報に関連づけられた前記フラグに前記分割情報が登録されている場合、その分割情報と、前記第1のエンジン識別情報に関連づけて登録されている記憶手段識別情報とを削除し、前記削除した記憶手段識別情報と同じ識別情報が、前記エンジン使用状況管理手段に登録されていない場合は、前記削除した記憶手段識別情報が示す転送情報記憶手段に登録されている前記第1の転送情報に関する前記DMA転送処理の実行対象であることを示す情報を削除する完了設定手段と
を含む請求項1に記載の情報処理装置。
Storage means identification information for identifying each of the transfer information storage means, engine identification information for identifying each of the DMA engines, and the first transfer information is divided into a plurality of second transfer information. An engine usage status management means registered in association with a flag indicating
The number of divisions is determined to be equal to or less than the number of unused DMA engines, the same number of the unused DMA engines as the number of divisions are selected, and the selected unused DMAs registered in the engine usage status management means Storage unit identification information indicating the transfer information storage unit in which the first transfer information, which is a generation source of the second transfer information, is stored in association with the engine identification information indicating the engine; The flag storing division information indicating that the transfer information is divided is registered, and each of the second transfer information is sent to each of the selected unused DMA engines. Engine setting means to start,
When the DMA transfer processing of the DMA engine is completed, the division is performed in the flag associated with the first engine identification information registered in the engine usage status management unit and indicating the DMA engine for which the DMA transfer processing is completed. When the information is registered, the division information and the storage unit identification information registered in association with the first engine identification information are deleted, and the same identification information as the deleted storage unit identification information is the If not registered in the engine usage status management means, it indicates that the DMA transfer processing is to be executed for the first transfer information registered in the transfer information storage means indicated by the deleted storage means identification information. The information processing apparatus according to claim 1, further comprising a completion setting unit that deletes information.
前記未使用DMAエンジンは、前記エンジン使用状況管理手段に登録されているエンジン識別情報のうち、記憶手段識別情報が関連づけて登録されていないエンジン識別情報が示すDMAエンジンである
請求項2に記載の情報処理装置。
The unused DMA engine is a DMA engine indicated by engine identification information that is not registered in association with storage unit identification information among the engine identification information registered in the engine usage status management unit. Information processing device.
DMA(Direct Memory Access)エンジンによって実行されるDMA転送処理に必要な第1の転送情報を分割すべきか否かを、前記DMA転送処理で読み出す転送データの大きさと、前記DMA転送処理が完了するまでの転送時間と、前記転送データを一時的に保持する転送データバッファの大きさとに基づいて判定し、
前記第1の転送情報を分割すべきと判定した場合は、前記第1の転送情報の分割数を、前記転送データの大きさと、前記転送時間と、前記転送データバッファの大きさと、前記DMA転送処理を実行していない未使用DMAエンジンの数と、前記DMAエンジンによってDMA転送処理が実行されていない前記第1の転送情報の数とに基づいて決定し、
前記決定した分割数で1つの前記第1の転送情報を分割して複数の第2の転送情報を生成し、
前記第2の転送情報の各々を前記DMAエンジンの各々に送付し、各々の前記DMAエンジンを起動する
DMA転送制御方法。
Whether the first transfer information necessary for the DMA transfer process executed by a DMA (Direct Memory Access) engine should be divided or not is determined by the size of transfer data read by the DMA transfer process and the completion of the DMA transfer process. Of the transfer data and the size of the transfer data buffer that temporarily holds the transfer data,
When it is determined that the first transfer information should be divided, the number of divisions of the first transfer information is set to the size of the transfer data, the transfer time, the size of the transfer data buffer, and the DMA transfer. Determining based on the number of unused DMA engines that are not performing processing and the number of the first transfer information that is not performing DMA transfer processing by the DMA engine,
Dividing the one piece of the first transfer information by the determined number of divisions to generate a plurality of second transfer information,
A DMA transfer control method, which sends each of the second transfer information to each of the DMA engines, and activates each of the DMA engines.
前記分割数を前記未使用DMAエンジンの数以下に決定して前記分割数と同じ数の前記未使用DMAエンジンを選択し、
前記選択した未使用DMAエンジンを示すエンジン識別情報と、前記第2の転送情報の生成元である前記第1の転送情報が格納されている転送情報記憶手段を示す記憶手段識別情報と、複数の第2の転送情報に分割されていることを示す分割情報が格納されたフラグとを関連づけてエンジン使用状況管理手段に登録し、
前記第2の転送情報の各々を前記選択した未使用DMAエンジンの各々に送付し、各々のDMAエンジンを起動し、
前記DMAエンジンのDMA転送処理が完了した場合、前記エンジン使用状況管理手段に登録されている、前記DMA転送処理が完了したDMAエンジンを示す第1のエンジン識別情報に関連づけられた前記フラグに前記分割情報が登録されている場合、その分割情報と、前記第1のエンジン識別情報に関連づけて登録されている記憶手段識別情報とを削除し、
前記削除した記憶手段識別情報と同じ識別情報が、前記エンジン使用状況管理手段に登録されていない場合は、前記削除した記憶手段識別情報が示す転送情報記憶手段に登録されている前記第1の転送情報に関する前記DMA転送処理の実行対象であることを示す情報を削除する
請求項4に記載のDMA転送制御方法。
The number of divisions is determined to be equal to or less than the number of unused DMA engines, and the same number of unused DMA engines as the number of divisions are selected.
Engine identification information indicating the selected unused DMA engine, storage unit identification information indicating a transfer information storage unit storing the first transfer information that is a generation source of the second transfer information, and a plurality of storage unit identification information. The second transfer information is registered in the engine usage status managing means in association with a flag storing division information indicating that the second transfer information is divided,
Sending each of the second transfer information to each of the selected unused DMA engines, activating each DMA engine,
When the DMA transfer process of the DMA engine is completed, the division is performed in the flag associated with the first engine identification information registered in the engine usage status management unit and indicating the DMA engine for which the DMA transfer process is completed. When the information is registered, the division information and the storage unit identification information registered in association with the first engine identification information are deleted,
When the same identification information as the deleted storage unit identification information is not registered in the engine usage status management unit, the first transfer registered in the transfer information storage unit indicated by the deleted storage unit identification information The DMA transfer control method according to claim 4, wherein information indicating that the DMA transfer process is executed is deleted from information .
DMA(Direct Memory Access)エンジンによって実行されるDMA転送処理に必要な第1の転送情報を分割すべきか否かを、前記DMA転送処理で読み出す転送データの大きさと、前記DMA転送処理が完了するまでの転送時間と、前記転送データを一時的に保持する転送データバッファの大きさとに基づいて判定する判定処理と、
前記第1の転送情報を分割すべきと判定した場合は、前記第1の転送情報の分割数を、前記転送データの大きさと、前記転送時間と、前記転送データバッファの大きさと、前記DMA転送処理を実行していない未使用DMAエンジンの数と、前記DMAエンジンによってDMA転送処理が実行されていない前記第1の転送情報の数とに基づいて決定する算出処理と、
前記決定した分割数で1つの前記第1の転送情報を分割して複数の第2の転送情報を生成する生成処理と、
前記第2の転送情報の各々を前記DMAエンジンの各々に送付し、各々の前記DMAエンジンを起動するDMAエンジン起動処理と
をコンピュータに実行させるDMA転送制御プログラム。
Whether the first transfer information necessary for the DMA transfer process executed by a DMA (Direct Memory Access) engine should be divided or not is determined by the size of transfer data read by the DMA transfer process and the completion of the DMA transfer process. Determination process based on the transfer time and the size of the transfer data buffer that temporarily holds the transfer data,
When it is determined that the first transfer information should be divided, the number of divisions of the first transfer information is set to the size of the transfer data, the transfer time, the size of the transfer data buffer, and the DMA transfer. A calculation process that is determined based on the number of unused DMA engines that are not performing the process and the number of the first transfer information that is not performing the DMA transfer process by the DMA engine;
A generation process of dividing one piece of the first transfer information by the determined division number to generate a plurality of second transfer information;
A DMA transfer control program that sends each of the second transfer information to each of the DMA engines, and causes a computer to execute a DMA engine starting process for starting each of the DMA engines.
前記分割数を前記未使用DMAエンジンの数以下に決定して前記分割数と同じ数の前記未使用DMAエンジンを選択し、前記選択した未使用DMAエンジンを示すエンジン識別情報と、前記第2の転送情報の生成元である前記第1の転送情報が格納されている転送情報記憶手段を示す記憶手段識別情報と、複数の第2の転送情報に分割されていることを示す分割情報が格納されたフラグとを関連づけてエンジン使用状況管理手段に登録する使用状況登録処理と、
前記第2の転送情報の各々を、前記選択した未使用DMAエンジンの各々に送付し、各々のDMAエンジンを起動するエンジン制御処理と、
前記DMAエンジンのDMA転送処理が完了した場合、前記エンジン使用状況管理手段に登録されている、前記DMA転送処理が完了したDMAエンジンを示す第1のエンジン識別情報に関連づけられた前記フラグに前記分割情報が登録されている場合、その分割情報と、前記第1のエンジン識別情報に関連づけて登録されている記憶手段識別情報とを削除する使用状況削除処理と、
前記削除した記憶手段識別情報と同じ識別情報が、前記エンジン使用状況管理手段に登録されていない場合は、前記削除した記憶手段識別情報が示す転送情報記憶手段に登録されている前記第1の転送情報に関する前記DMA転送処理の実行対象であることを示す情報を削除する転送情報削除処理と
をコンピュータに実行させる請求項6に記載のDMA転送制御プログラム。
The number of divisions is determined to be equal to or less than the number of unused DMA engines, the same number of unused DMA engines as the number of divisions are selected, engine identification information indicating the selected unused DMA engine, and the second Storage means identification information indicating the transfer information storage means that stores the first transfer information that is the generation source of the transfer information, and division information indicating that the transfer information is divided into a plurality of second transfer information are stored. Usage status registration processing of associating with the flag and registering in the engine usage status management means,
An engine control process of sending each of the second transfer information to each of the selected unused DMA engines and activating each of the DMA engines;
When the DMA transfer processing of the DMA engine is completed, the division is performed in the flag associated with the first engine identification information registered in the engine usage status management unit and indicating the DMA engine for which the DMA transfer processing is completed. If the information is registered, a usage status deleting process of deleting the division information and the storage unit identification information registered in association with the first engine identification information,
When the same identification information as the deleted storage unit identification information is not registered in the engine usage status management unit, the first transfer registered in the transfer information storage unit indicated by the deleted storage unit identification information 7. The DMA transfer control program according to claim 6, which causes a computer to execute transfer information deletion processing for deleting information indicating that the information indicates that the DMA transfer processing is to be executed.
JP2016000537A 2016-01-05 2016-01-05 Information processing device, DMA transfer control method, and DMA transfer control program Active JP6698353B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016000537A JP6698353B2 (en) 2016-01-05 2016-01-05 Information processing device, DMA transfer control method, and DMA transfer control program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016000537A JP6698353B2 (en) 2016-01-05 2016-01-05 Information processing device, DMA transfer control method, and DMA transfer control program

Publications (2)

Publication Number Publication Date
JP2017122972A JP2017122972A (en) 2017-07-13
JP6698353B2 true JP6698353B2 (en) 2020-05-27

Family

ID=59306562

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016000537A Active JP6698353B2 (en) 2016-01-05 2016-01-05 Information processing device, DMA transfer control method, and DMA transfer control program

Country Status (1)

Country Link
JP (1) JP6698353B2 (en)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004079583A1 (en) * 2003-03-05 2004-09-16 Fujitsu Limited Data transfer controller and dma data transfer control method
JP4456490B2 (en) * 2005-01-14 2010-04-28 富士通株式会社 DMA equipment
JP2009009186A (en) * 2007-06-26 2009-01-15 Nec Electronics Corp Dma transfer controller and dma transfer method
JP4445535B2 (en) * 2007-09-19 2010-04-07 富士通株式会社 DATA TRANSFER DEVICE, INFORMATION PROCESSING SYSTEM, DATA TRANSFER PROGRAM, AND COMPUTER-READABLE RECORDING MEDIUM CONTAINING THE PROGRAM
JP2010198138A (en) * 2009-02-23 2010-09-09 Ricoh Co Ltd Data transfer device, data transfer control method, data transfer control program, and recording medium

Also Published As

Publication number Publication date
JP2017122972A (en) 2017-07-13

Similar Documents

Publication Publication Date Title
US9256448B2 (en) Process grouping for improved cache and memory affinity
CN100349150C (en) System and method for accessing controller communication data through direct memory
US10402114B2 (en) Information processing system, storage control apparatus, storage control method, and storage control program
US11360705B2 (en) Method and device for queuing and executing operation commands on a hard disk
US8898422B2 (en) Workload-aware distributed data processing apparatus and method for processing large data based on hardware acceleration
JP6172649B2 (en) Information processing apparatus, program, and information processing method
CN110119304B (en) Interrupt processing method and device and server
CN107430628B (en) Acceleration framework with direct data transfer mechanism
US10331499B2 (en) Method, apparatus, and chip for implementing mutually-exclusive operation of multiple threads
US10049035B1 (en) Stream memory management unit (SMMU)
US10592148B2 (en) Information processing system, storage control apparatus, storage control method, and storage control program for evaluating access performance to a storage medium
JP6885193B2 (en) Parallel processing device, job management method, and job management program
JP2018528515A (en) A method for a simplified task-based runtime for efficient parallel computing
US10467162B2 (en) Interrupt based on a last interrupt request indicator and a work acknowledgement
US10146783B2 (en) Using file element accesses to select file elements in a file system to defragment
US10367886B2 (en) Information processing apparatus, parallel computer system, and file server communication program
WO2017054714A1 (en) Method and apparatus for reading disk array
JP6698353B2 (en) Information processing device, DMA transfer control method, and DMA transfer control program
JP6189266B2 (en) Data processing apparatus, data processing method, and data processing program
JPWO2008149657A1 (en) I / O control system, I / O control method, and I / O control program
US20180329756A1 (en) Distributed processing system, distributed processing method, and storage medium
US20180129672A1 (en) Method and apparatus for accessing file, and storage system
US10824640B1 (en) Framework for scheduling concurrent replication cycles
CN112416826A (en) Special computing chip, DMA data transmission system and method
WO2014206234A1 (en) Caching method and device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190917

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190911

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191113

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200407

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200428

R150 Certificate of patent or registration of utility model

Ref document number: 6698353

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150