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 PDFInfo
- 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
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
なお、関連する技術として、特許文献2に記載の技術では、複数のディスクリプタの連続実行時に、ホストシステムに対しエラーフレームを受信したことを報告せずに有効受信フレームのみを報告する。これにより、ホストシステムは、エラーフレーム処理に関するオーバーヘッドを低減することができる。
As a related technique, in the technique described in
特許文献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.
しかしながら、特許文献1に記載された技術において、コントローラ(DMAエンジン)の内部に設けられたデータバッファが十分大きい場合や、転送するデータが小さい場合には、次の問題が生じる。すなわち、ディスクリプタを複数のサブディスクリプタに分割し、各サブディスクリプタに基づく複数のDMA転送処理を並行して実行すると、コントローラのCPUやメモリリソースの競合による使用効率の低下を招く場合があるという問題がある。
However, in the technique described in
また、複数のディスクリプタと複数のコントローラとが存在する場合に、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
本発明の目的は、リソースの競合による使用効率の低下やシステム全体のスループットの低下を招かずに複数の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.
次に、本発明の実施形態について図面を参照して詳細に説明する。 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
DMA転送部10は、それぞれを識別する固有の識別情報が割り当てられた複数のディスクリプタ101からなるディスクリプタ群100と、ディスクリプタ制御部200と、それぞれを識別する固有の識別情報が割り当てられた複数のDMAエンジン300とを含む。
The
ディスクリプタ101は、DMA転送処理の実行に必要な情報(以降、「DMA転送情報」、または「第1の転送情報」と称する)が格納された所定の記憶領域である。以降、ディスクリプタ101は、「転送情報記憶部」とも呼ばれる。DMA転送情報は、転送するべきデータの場所を示す転送元アドレスと、転送先の場所を示す転送先アドレスと、転送するべきデータの長さを示す転送データ長と、このDMA転送情報が実行対象であるか否かを示す実行バリッドと、このDMA転送情報の転送処理が終了したことを示す転送完了フラグとを含む。なお、本実施形態では、ディスクリプタ101を示す識別情報は、例えば、「ディスクリプタA」、「ディスクリプタB」、「ディスクリプタC」・・・とする。また、実行バリッドは、「1」が登録されている場合は、そのDMA転送情報が実行対象であることを示し、「0(ゼロ)」が登録されている場合は実行対象ではないことを示す。特に、実行バリッドに「1」が登録されているディスクリプタを「有効ディスクリプタ」と称する。転送完了フラグは、「1」が登録されている場合は転送完了を示し、「0(ゼロ)」が登録されている場合は転送が完了していないことを示す。
The
ディスクリプタ制御部200は、ディスクリプタ101のうち実行すべきディスクリプタを選択し、そのディスクリプタに格納されているDMA転送情報を基にしたDMA転送処理を実行するDMAエンジン300の選択および起動を行う。以降、ディスクリプタ制御部200は、「転送情報制御部」とも呼ばれる。
The
DMAエンジン300は、DMAリクエスト制御部301とデータバッファ302とを含む。なお、本実施形態では、DMAエンジン300を示す識別情報は、例えば、「DMAエンジンA」、「DMAエンジンB」、「DMAエンジンC」・・・とする。
The
DMAリクエスト制御部301は、ディスクリプタ101に格納されているDMA転送情報に含まれる転送元アドレスが示す場所から、トランザクション制御部20を介して、予め設定された所定の大きさのデータ(以降、「データブロック」と称する)を読み出す。なお、以降、本動作を「リード」(読み出し)と称し、リードの動作を指示する命令を「リード命令」と称する。また、DMAリクエスト制御部301は、そのデータブロックを、トランザクション制御部20を介してDMA転送情報に含まれる転送先アドレスが示す場所に書き込む。以降、本動作を「ライト」(書き込み)と称し、ライトの動作を指示する命令を「ライト命令」と称する。
The DMA
また、DMAリクエスト制御部301が、転送元にリード命令を送付してから、実際にデータブロックを受け取るまで、または、転送先にライト命令とデータブロックとを送付してから命令実行完了を示す通知を受け取るまでには、待ち時間が生じる。この待ち時間がDMAエンジンの命令サイクルの何サイクルにあたるかを示す値を、以降、「レイテンシ」と称する。例えば、転送先がメモリ40であり、ライト命令とデータブロックとを送付してから、命令実行完了を示す通知が届くまで8命令サイクルであった場合は、メモリ40のレイテンシは8となる。
Further, the DMA
DMAリクエスト制御部301は、予め転送元および転送先の装置毎にレイテンシを測定する。そして、ディスクリプタ制御部200は、DMAリクエスト制御部301が測定したレイテンシを所定の記憶場所(図示せず)に保持する。
The DMA
データバッファ302は、DMAリクエスト制御部301が、転送元アドレスが示す場所から読み出したデータブロックを転送先アドレスが示す場所に書き込むまでの間、一時的に保持するための記憶領域である。このデータバッファ302の容量により、DMAエンジン300が一度に処理できるデータ量が決まる。また、データバッファ302が格納可能なデータブロックの数を、「データバッファの深さ」と称する。例えば、データブロックの大きさが8KB(キロバイト)であり、データバッファの大きさが32KBである場合は、データバッファの深さは4となる。
The
トランザクション制御部20は、DMA転送部10と、CPU30と、メモリ40と、入出力部50とに接続されている。トランザクション制御部20は、DMA転送部10に含まれる各DMAエンジン300からのリードの指示およびライトの指示を受信し、各指示に従って各接続先からデータブロックを受信し、受信したデータブロックを指定の接続先に送付する。
The
CPU30は、ディスクリプタ101にDMA転送情報を登録し、ディスクリプタ制御部200にDMA転送処理を開始する旨の指示を送付する。
The
ディスクリプタ制御部200は、プログラムを記憶する記憶デバイス(図示せず)と、そのプログラムをメモリに読み込んで命令を実行する少なくとも1つのプロセッサ(図示せず)とを含む。
The
図2は、本実施形態におけるディスクリプタ制御部200の構成を示すブロック図である。
FIG. 2 is a block diagram showing the configuration of the
図2を参照すると、ディスクリプタ制御部200は、ディスクリプタ選択部201、エンジン使用状況管理部202、エンジン設定部203、完了通知部204を含む。
Referring to FIG. 2, the
ディスクリプタ選択部201は、ディスクリプタ群100に含まれるディスクリプタ101のうち1つのディスクリプタを選択し、そのディスクリプタに格納されたDMA転送情報をエンジン設定部203に送付する。
The
エンジン使用状況管理部202は、エンジン使用状況テーブル2021を記憶する。エンジン使用状況テーブル2021には、DMAエンジン300を示す識別情報と、そのDMAエンジン300が参照しているDMA転送情報が含まれるディスクリプタ101を示す識別情報とが関連付けられたレコードが登録される。
The engine usage
エンジン設定部203は、エンジン使用状況テーブル2021を参照し、DMAエンジン300のうち、現在未使用のDMAエンジンを検索する。そして、エンジン設定部203は、検索した未使用のDMAエンジン300に、ディスクリプタ選択部201から受け取ったDMA転送情報を送付する。また、転送データ長、未使用のDMAエンジン数などが所定の条件に当てはまる場合には、エンジン設定部203は、DMA転送情報の内容を基に、DMA転送情報を所定の方法で求めた数に分割したDMA転送情報を表す分割DMA転送情報(以降、「第2の転送情報」とも言う。)を生成する。そして、エンジン設定部203は、複数のDMAエンジン300の各々に、生成した分割DMA転送情報の各々を送付する。
The
完了通知部204は、DMAエンジン300からDMA転送処理が終了した旨の通知を受信すると、エンジン使用状況テーブル2021を更新するとともに、必要な場合はディスクリプタ101の転送完了フラグおよび実行バリッドを更新する。
Upon receiving the notification that the DMA transfer processing is completed from the
図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エンジンが参照するDMA転送情報が登録されているディスクリプタ101に割り当てられた識別情報が登録される。
In the descriptor identification field, the identification information assigned to the
複数エンジン使用フラグ欄には、ディスクリプタ識別欄に登録された識別情報が示すディスクリプタに登録されている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転送部10の動作について図4乃至図6のフローチャートを参照して説明する。
Next, the operation of the
図4は、DMA転送処理を実行する際のDMA転送部10の動作を示すフローチャートである。
FIG. 4 is a flowchart showing the operation of the
図4を参照すると、まず、ディスクリプタ制御部200に含まれるディスクリプタ選択部201が、CPU30からDMA転送処理の開始指示を受け取る。なお、ディスクリプタ選択部201は、エンジン使用状況テーブル2021を参照し、現在未使用のDMAエンジンが無い場合(すなわち、全てのレコードのディスクリプタ識別欄に識別情報が登録されている場合。)は、DMA転送処理の開始を待ち合わせる。
Referring to FIG. 4, first, the
未使用のDMAエンジン300がある場合には、ディスクリプタ選択部201は、ディスクリプタ群100に含まれるディスクリプタ101のうち、有効ディスクリプタ(実行バリッドに「1」が登録されているディスクリプタ)であり、且つ、エンジン使用状況テーブル2021に含まれる各レコードのディスクリプタ識別欄に、そのディスクリプタを示す識別情報が登録されていないディスクリプタを1つ選択する(ステップS101)。そして、ディスクリプタ選択部201は、選択したディスクリプタ101に登録されているDMA転送情報をエンジン設定部203に送付する。
If there is an
次に、エンジン設定部203は、エンジン使用状況テーブル2021のレコードを参照し、現在未使用のDMAエンジン300を検索する。エンジン設定部203は、検索した未使用のDMAエンジン300に、ディスクリプタ選択部201から受け取ったDMA転送情報を送付し、そのDMAエンジンを起動する。
Next, the
なお、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
なお、ステップS101およびS102で説明した、DMA転送処理の開始の際のディスクリプタ制御部200の動作の詳細については、図5のフローチャートを基に後述する。
The details of the operation of the
次に、エンジン設定部203によって起動されたDMAエンジン300のDMAリクエスト制御部301は、送付されたDMA転送情報または分割DMA転送情報に含まれる転送元アドレスなどの情報を含むリード命令を発行し、トランザクション制御部20に送付する(ステップS103)。
Next, the DMA
次に、ステップS103で送付したリード命令への応答として、トランザクション制御部20からデータブロックを受け取ると、DMAリクエスト制御部301は、受け取ったデータブロックをデータバッファ302に格納する(ステップS104)。そして、DMAリクエスト制御部301は、DMA転送情報または分割DMA転送情報に含まれる転送先アドレスなどと、データバッファ302に格納されているデータブロックとを含むライト命令を発行し、トランザクション制御部20に送付する(ステップS105)。
Next, when a data block is received from the
次に、トランザクション制御部20から、ステップS105で送付したライト命令が完了した旨の通知を受信したDMAリクエスト制御部301は、完了通知部204にDMA転送処理の実行が完了した旨の通知を送付する(ステップS106)。なお、DMA転送情報または分割DMA転送情報に含まれる転送データ長が、データブロックの大きさより大きい場合は、ステップS103乃至S105の処理が複数回繰り返される。
Next, the DMA
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
このようにして、ディスクリプタ101に格納されたDMA転送情報に基づくDMA転送処理が行われる。
In this way, the DMA transfer processing based on the DMA transfer information stored in the
次に、ステップS101およびS102で説明した、DMA転送処理の開始の際のディスクリプタ制御部200の動作について図5のフローチャートを参照して説明する。
Next, the operation of the
図5を参照すると、まず、ディスクリプタ選択部201が、ディスクリプタ群100に含まれる有効ディスクリプタの総数を算出する。そして、ディスクリプタ選択部201は、エンジン使用状況テーブル2021を参照し、DMAエンジン300の総数、すなわちエンジン使用状況テーブル2021に登録されているレコードの数を計数する。そして、ディスクリプタ選択部201は、算出した有効ディスクリプタの総数がDMAエンジン300の総数以上か否かの判定を行う(ステップS201)。
Referring to FIG. 5, first, the
算出した有効ディスクリプタの総数が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
エンジン設定部203は、選択した未使用のDMAエンジン300に、ディスクリプタ選択部201から受け取ったDMA転送情報を送付し、そのDMAエンジンを起動する(ステップS207)。また、エンジン設定部203は、エンジン使用状況テーブル2021の検索したレコードのディスクリプタ識別欄に、ディスクリプタ選択部201から送付されたDMA転送情報が登録されているディスクリプタを示す識別情報を登録する。そして、エンジン設定部203は、そのレコードの複数エンジン使用フラグ欄に0(ゼロ)を登録する。
The
一方、算出した有効ディスクリプタの数が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
次に、ディスクリプタ選択部201は、選択した有効ディスクリプタに登録されているDMA転送情報をエンジン設定部203に送付する。そして、エンジン設定部203は、エンジン使用状況テーブル2021を参照し、現在未使用のDMAエンジン300が2つ以上あるか否かを判定する(ステップS202)。すなわち、エンジン使用状況テーブル2021を検索し、ディスクリプタ識別欄に識別情報が登録されていないレコードが2つ以上あるか否かを判定する。
Next, the
現在未使用のDMAエンジン300が1つしか無い場合(ステップS202で「NO」の場合。)は、エンジン設定部203は、そのDMAエンジン300を選択する。そして、選択した未使用のDMAエンジン300に、ディスクリプタ選択部201から受け取ったDMA転送情報を送付し、そのDMAエンジンを起動する(ステップS207)。また、エンジン使用状況テーブル2021を更新する。
When there is only one
現在未使用の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
エンジン設定部203は、データバッファ302の大きさから算出されるデータバッファの深さと、DMA転送情報に含まれる転送データ長、およびデータブロックの大きさから算出した、転送データのデータブロック数(以降、「転送データブロック数」と称する。)と、転送元アドレスが示す転送元のレイテンシの値とを基に、そのDMA転送情報を分割すべきか否かを判定する。
The
すなわち、以下の式(1)および式(2)の両方が満たされる場合に、エンジン設定部203は、DMA転送情報を分割すべきと判定する。
That is, the
データバッファの深さ < 転送データブロック数・・・(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
ステップ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
一方、ステップ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
エンジン設定部203は、ディスクリプタ選択部201から受け取ったDMA転送情報に含まれる転送データ長から算出した転送データブロック数と、データバッファ302の大きさから算出したデータバッファの深さと、未使用DMAエンジン300の数と、未実行ディスクリプタ101の数と、転送元のレイテンシの値とを基に、分割数を算出する。
The
すなわち、以下の式(3)を満たす場合は、エンジン設定部203は、以下の式(4)の計算結果を切り上げて整数にした値を求め、その値を、分割する最大の数(以降、「最大分割数」と称する。)とする。
That is, when the following formula (3) is satisfied, the
転送データブロック数 < 転送元のレイテンシの値・・・(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
転送元のレイテンシの値/データバッファの深さ・・・(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/
次に、エンジン設定部203は、求めた最大分割数と、未使用のDMAエンジン300の数とを比較し、以下の式(6)を満たす場合は、未使用DMAエンジンの数を分割数とする。
Next, the
最大分割数 > 未使用DMAエンジンの数・・・(6)
次に、他に未実行ディスクリプタがある場合は、エンジン設定部203は、以下の式(7)を満たし、且つ、最大分割数以下である分割数を求める。
Maximum number of divisions> Number of unused DMA engines (6)
Next, when there is another unexecuted descriptor, the
分割数+他の未実行ディスクリプタ数 <= 未使用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
図5のフローチャートの説明に戻り、次に、エンジン設定部203は、算出した分割数と同じ数の未使用DMAエンジン300を選択する。
Returning to the description of the flowchart in FIG. 5, the
そして、エンジン設定部203は、エンジン使用状況テーブル2021を参照し、各選択したDMAエンジン300を示す識別情報がエンジン識別欄に登録されているレコードのディスクリプタ識別欄に、生成した分割DMA転送情報の基となったDMA転送情報が格納されているディスクリプタを示す識別情報を登録する。さらに、エンジン設定部203は、各該レコードの複数エンジン使用フラグ欄に、複数に分割されていることを示す「1」を登録する(ステップS205)。
Then, the
次に、エンジン設定部203は、ステップS205で選択したDMAエンジン300の各々に、生成した分割DMA転送情報の各々を送付し、各DMAエンジンを起動する(ステップS206)。
Next, the
このようにして、1つのディスクリプタ101に登録されたDMA転送情報が、適切な分割数の分割DMA転送情報に分割され、それぞれが別のDMAエンジン300で並行して実行される。
In this way, the DMA transfer information registered in one
次に、ステップS106およびS107で説明した、DMA転送処理の完了時のディスクリプタ制御部200の動作について図6のフローチャートを参照して説明する。
Next, the operation of the
図6を参照すると、まず、DMAリクエスト制御部301は、ディスクリプタ制御部200に含まれる完了通知部204にDMA転送処理の実行が完了した旨の通知を送付する。
Referring to FIG. 6, first, the DMA
完了通知部204は、エンジン使用状況テーブル2021を参照し、完了通知を送付したDMAリクエスト制御部301が含まれるDMAエンジン300を示す識別情報がエンジン識別欄に格納されているレコードの、複数エンジン使用フラグ欄に「0(ゼロ)」が格納されているか否か(すなわち、使用したDMAエンジンは1つか否か)を判定する(ステップS301)。
The
複数エンジン使用フラグ欄に「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
ステップ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
他のレコードのディスクリプタ識別欄に、同じ識別情報が登録されていない場合(ステップ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
以上、本実施形態には、リソースの競合による使用効率の低下やシステム全体のスループットの低下を招かずに、複数の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
[第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
転送情報記憶部110には、DMA転送処理の実行に必要な第1の転送情報が格納されている。
The transfer
DMAエンジン310は、転送情報記憶部110に格納された第1の転送情報に基づきDMA転送処理を行う。また、DMAエンジン310は、DMA転送処理で読み出した転送データを一時的に保持する転送データバッファ(図示せず)を備える。
The
転送情報制御部210は、プログラムを記憶する記憶デバイス(図示せず)と、そのプログラムをメモリに読み込んで命令を実行する少なくとも1つのプロセッサ(図示せず)とを含む。
The transfer
転送情報制御部210は、転送情報記憶部110に格納された第1の転送情報を分割すべきか否かを、転送データの大きさと、DMA転送処理が完了するまでの転送時間と、転送データバッファの大きさとに基づいて判定する。なお、第1の転送情報を分割すべきか否かを判定する判定方法の一例については、第1の実施形態で説明した、DMA転送情報を分割すべきか否かを判定する方法の一例と同一であるので、ここでの説明は省略する。
The transfer
第1の転送情報を分割すべきと判定した場合、転送情報制御部210は、第1の転送情報の分割数を、転送データの大きさと、DMA転送処理が完了するまでの転送時間と、転送データバッファの大きさと、DMA転送処理を実行していない未使用DMAエンジンの数と、DMAエンジンによってDMA転送処理が実行されていない第1の転送情報の数とに基づいて決定する。なお、第1の転送情報の分割数を決定する方法の一例については、第1の実施形態で説明した、DMA転送情報の分割数を算出する方法の一例と同一であるので、ここでの説明は省略する。
When determining that the first transfer information should be divided, the transfer
そして、転送情報制御部210は、決定した分割数で、1つの転送情報記憶部110に格納された第1の転送情報を分割し、複数の第2の転送情報を生成する。
Then, the transfer
次に、転送情報制御部210は、生成した第2の転送情報の各々を、DMAエンジン310の各々に送付する。
Next, the transfer
そして、転送情報制御部210は、第2の転送情報を送付した各DMAエンジンを起動する。
Then, the transfer
以上、本実施形態には、第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
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
40
Claims (7)
前記第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エンジンの数以下に決定して前記分割数と同じ数の前記未使用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.
請求項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.
前記第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エンジンを示すエンジン識別情報と、前記第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 .
前記第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.
前記第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.
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)
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 |
-
2016
- 2016-01-05 JP JP2016000537A patent/JP6698353B2/en active Active
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 |