(57)【要約】【課題】ＤＭＡ転送間に依存関係があるにもかかわらず適切な制御を実行することが出来ないおそれがある、という課題を解決すること。【解決手段】ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送を行うための転送情報が設定され、設定された前記転送情報に基づいてＤＭＡ転送を行う転送実行手段を備え、前記転送情報には、次のＤＭＡ転送を開始するまでの待機時間を示す待機時間情報と、他のＤＭＡ転送との依存関係を示す依存関係情報と、が含まれており、前記転送実行手段は、前記転送情報に基づいてＤＭＡ転送を開始してから、前記待機時間情報が示す待機時間待機した後、前記依存関係情報に基づいて依存関係があると判断される前記転送情報に基づくＤＭＡ転送を開始する。【選択図】図２
2019159750.tif 000002
【特許請求の範囲】
【請求項１】
ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送を行うための転送情報が設定され、設定された前記転送情報に基づいてＤＭＡ転送を行う転送実行手段を備え、
前記転送情報には、次のＤＭＡ転送を開始するまでの待機時間を示す待機時間情報と、他のＤＭＡ転送との依存関係を示す依存関係情報と、が含まれており、
前記転送実行手段は、前記転送情報に基づいてＤＭＡ転送を開始してから、前記待機時間情報が示す待機時間待機した後、前記依存関係情報に基づいて依存関係があると判断される前記転送情報に基づくＤＭＡ転送を開始する
データ転送装置。
【請求項２】
請求項１に記載のデータ転送装置であって、
前記転送実行手段は、前記依存関係情報に基づいて依存関係がないと判断される前記転送情報に基づくＤＭＡ転送を、前記待機時間情報が示す待機時間にかかわらず開始する
データ転送装置。
【請求項３】
請求項１又は請求項２に記載のデータ転送装置であって、
前記依存関係情報は、ＤＭＡ転送による転送先アドレスや転送元アドレスの重なりにかかわらず依存関係の有無を示す依存関係フラグである
データ転送装置。
【請求項４】
請求項１から請求項３までのいずれか１項に記載のデータ転送装置であって、
前記転送実行手段は、前記待機時間情報を含む前記転送情報に基づいてＤＭＡ転送を開始した後、前記依存関係情報が設定された前記転送情報に基づくＤＭＡ転送を行う場合、前記待機時間情報が示す待機時間待機した後、前記依存関係情報が設定された前記転送情報に基づくＤＭＡ転送を開始する
データ転送装置。
【請求項５】
請求項１から請求項４までのいずれか１項に記載のデータ転送装置であって、
前記転送実行手段は、前記待機時間情報を含む前記転送情報に基づいてＤＭＡ転送を開始した後、前記依存関係情報が設定されていない前記転送情報に基づくＤＭＡ転送を行う場合、前記待機時間情報が示す待機時間待機せずに前記依存関係情報が設定された前記転送情報に基づくＤＭＡ転送を開始する
データ転送装置。
【請求項６】
請求項１から請求項５までのいずれか１項に記載のデータ転送装置であって、
データ転送装置は、前記転送情報を設定する設定手段を有しており、
前記設定手段は、ＤＭＡ転送による転送先アドレスや転送元アドレスの重なりにかかわらず依存関係があると判断される場合に前記依存関係情報を設定する
データ転送装置。
【請求項７】
請求項１から請求項６までのいずれか１項に記載のデータ転送装置であって、
前記転送情報には、当該転送情報を設定した制御手段であるリクエスタを示す識別情報が含まれており、
前記転送実行手段は、前記識別情報に基づいて、先行する依存関係のあるＤＭＡ転送が完了した後、他のリクエスタが登録した後続のＤＭＡ転送を開始する
データ転送装置。
【請求項８】
データ転送装置が、
ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送を行うための転送情報が設定され、設定された前記転送情報に基づいてＤＭＡ転送を行い、
前記転送情報には、次のＤＭＡ転送を開始するまでの待機時間を示す待機時間情報と、他のＤＭＡ転送との依存関係を示す依存関係情報と、が含まれており、
前記転送情報に基づいてＤＭＡ転送を開始してから、前記待機時間情報が示す待機時間待機した後、前記依存関係情報に基づいて依存関係があると判断される前記転送情報に基づくＤＭＡ転送を開始する
データ転送方法。
【請求項９】
請求項８に記載のデータ転送方法であって、
前記依存関係情報に基づいて依存関係がないと判断される前記転送情報に基づくＤＭＡ転送を、前記待機時間情報が示す待機時間にかかわらず開始する
データ転送方法。
【請求項１０】
データ転送装置に、
ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送を行うための転送情報が設定され、設定された前記転送情報に基づいてＤＭＡ転送を行う転送実行手段を実現させ、
前記転送情報には、次のＤＭＡ転送を開始するまでの待機時間を示す待機時間情報と、他のＤＭＡ転送との依存関係を示す依存関係情報と、が含まれており、
前記転送実行手段は、前記転送情報に基づいてＤＭＡ転送を開始してから、前記待機時間情報が示す待機時間待機した後、前記依存関係情報に基づいて依存関係があると判断される前記転送情報に基づくＤＭＡ転送を開始する
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送装置、データ転送方法、プログラムに関する。
【背景技術】
【０００２】
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を介さずにメモリ・メモリ間やレジスタ・メモリ間、メモリ・Ｉ／Ｏデバイス間などのデータ転送を行うための技術として、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）が知られている。
【０００３】
ＤＭＡに関する技術としては、例えば、特許文献１がある。特許文献１には、設定された転送情報に基づいてＤＭＡ転送を行う転送実行手段を有するデータ転送装置が記載されている。特許文献１によると、転送実行手段は、転送情報に待機時間情報が含まれている場合、ＤＭＡ転送を開始した後、転送情報に含まれる待機時間情報が示す時間分待機して、別の転送情報に基づくＤＭＡ転送を開始する。なお、上記待機時間情報は、ＤＭＡ転送を実行する際の転送先アドレスが転送元アドレスに含まれる場合など転送先と転送元が所定の条件を満たす場合に設定される。
【０００４】
また、関連する技術として、例えば、特許文献２がある。特許文献２には、ＤＭＡ転送を行う際のアドレスが重なっている依存関係があるＤＭＡ要求を行う際に、依存関係のある後続リクエストの実行開始を遅らせるアービター装置が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１７−１６７６４４号公報
【特許文献２】特開２００６−２１５６２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＤＭＡ転送間の依存関係は、例えば、先行ＤＭＡ転送により制御を変更するフラグを変更してから後続リクエストを実行したい場合など、転送先アドレスや転送元アドレスなどに関係なく生じることがある。しかしながら、特許文献１、２に記載されている技術の場合、アドレスの重なりしか考慮していない。そのため、特許文献１、２に記載されている技術を用いた場合、ＤＭＡ転送間に依存関係があるにもかかわらず適切な制御を実行することが出来ないおそれがあった。
【０００７】
そこで、本発明の目的は、ＤＭＡ転送間に依存関係があるにもかかわらず適切な制御を実行することが出来ないおそれがある、という問題を解決するデータ転送装置、データ転送方法、プログラムを提供することにある。
【課題を解決するための手段】
【０００８】
かかる目的を達成するため本発明の一形態であるデータ転送装置は、
ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送を行うための転送情報が設定され、設定された前記転送情報に基づいてＤＭＡ転送を行う転送実行手段を備え、
前記転送情報には、次のＤＭＡ転送を開始するまでの待機時間を示す待機時間情報と、他のＤＭＡ転送との依存関係を示す依存関係情報と、が含まれており、
前記転送実行手段は、前記転送情報に基づいてＤＭＡ転送を開始してから、前記待機時間情報が示す待機時間待機した後、前記依存関係情報に基づいて依存関係があると判断される前記転送情報に基づくＤＭＡ転送を開始する
という構成をとる。
【０００９】
また、本発明の他の形態であるデータ転送方法は、
データ転送装置が、
ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送を行うための転送情報が設定され、設定された前記転送情報に基づいてＤＭＡ転送を行い、
前記転送情報には、次のＤＭＡ転送を開始するまでの待機時間を示す待機時間情報と、他のＤＭＡ転送との依存関係を示す依存関係情報と、が含まれており、
前記転送情報に基づいてＤＭＡ転送を開始してから、前記待機時間情報が示す待機時間待機した後、前記依存関係情報に基づいて依存関係があると判断される前記転送情報に基づくＤＭＡ転送を開始する
という構成をとる。
【００１０】
また、本発明の他の形態であるプログラムは、
データ転送装置に、
ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送を行うための転送情報が設定され、設定された前記転送情報に基づいてＤＭＡ転送を行う転送実行手段を実現させ、
前記転送情報には、次のＤＭＡ転送を開始するまでの待機時間を示す待機時間情報と、他のＤＭＡ転送との依存関係を示す依存関係情報と、が含まれており、
前記転送実行手段は、前記転送情報に基づいてＤＭＡ転送を開始してから、前記待機時間情報が示す待機時間待機した後、前記依存関係情報に基づいて依存関係があると判断される前記転送情報に基づくＤＭＡ転送を開始する
処理を実現させるためのプログラムである。
【発明の効果】
【００１１】
本発明は、以上のように構成されることにより、ＤＭＡ転送間に依存関係があるにもかかわらず適切な制御を実行することが出来ないおそれがある、という問題を解決するデータ転送装置、データ転送方法、プログラムを提供することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１の実施形態におけるシステムの構成の一例を示すブロック図である。
【図２】第１の実施形態におけるＤＭＡディスクリプタの構成の一例を示す図である。
【図３】システムが実行するＤＭＡ転送の一例を示す図である。
【図４】システムの動作の一例を示すシーケンス図である。
【図５】一般的なＤＭＡ転送の流れの一例を示すシーケンス図である。
【図６】一般的なＤＭＡ転送の流れの一例を示すシーケンス図である。
【図７】第２の実施形態におけるＤＭＡディスクリプタの構成の一例を示す図である。
【図８】システムが実行するＤＭＡ転送の一例を示す図である。
【図９】システムの動作の一例を示すシーケンス図である。
【図１０】本発明の第３の実施形態におけるデータ転送装置の構成の一例を示すブロック図である。
【発明を実施するための形態】
【００１３】
［第１の実施形態］
本発明の第１の実施形態を図１から図６までを参照して説明する。図１は、システム１の構成の一例を示すブロック図である。図２は、第１の実施形態におけるＤＭＡディスクリプタ３１２の構成の一例を示す図である。図３は、システム１が実行するＤＭＡ転送の一例を示す図である。図４は、システム１の動作の一例を示すシーケンス図である。図５、図６は、一般的なＤＭＡ転送の流れの一例を示すシーケンス図である。
【００１４】
第１の実施形態では、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送を行うことが可能なシステム１について説明する。本実施形態におけるシステム１においては、プロセッサ２がＤＭＡディスクリプタ３１２の設定を行うことで、ＤＭＡエンジン３１１がＤＭＡ転送を実行する。後述するように、本実施形態におけるＤＭＡディスクリプタ３１２は、依存関係フラグを有している。ＤＭＡディスクリプタ３１２が依存関係フラグを有することで、ＤＭＡエンジン３１１は、先行するＤＭＡ転送と依存関係のある後続ＤＭＡ転送の実行を待機させつつ、先行するＤＭＡ転送と依存関係のない後続ＤＭＡ転送を待機せず実行することが出来る。
【００１５】
図１は、本実施形態におけるシステム１の構成の一例を示している。図１を参照すると、本実施形態におけるシステム１（データ転送装置）は、ホストＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）２と、アクセラレーションプロセッサ３と、を有している。また、ホストＰＣ２とアクセラレーションプロセッサ３とは、通信ネットワーク４を介して互いに通信可能なよう接続されている。
【００１６】
ホストＰＣ２は、演算処理を実行するとともにＤＭＡ転送を実行する際の設定を行う制御手段であるプロセッサ２１と、情報を格納するホストメモリ２２と、を有している。なお、プロセッサ２１は、ＤＭＡディスクリプタ３１２の設定を行うため、リクエスタとも呼ぶ。
【００１７】
プロセッサ２１は、ＤＭＡ転送を実行する際、通信ネットワーク４を介して、転送情報であるＤＭＡディスクリプタ３１２の設定を行う。つまり、プロセッサ２１は、ＤＭＡ転送を実行する場合、アクセラレーションプロセッサ３が有するＤＭＡエンジン３１１のＤＭＡディスクリプタ３１２にＤＭＡ転送のリクエストを書き込む。リクエストがＤＭＡディスクリプタ３１２に書き込まれることで、ＤＭＡエンジン３１１はＤＭＡ転送を開始する。
【００１８】
なお、プロセッサ２１は、図示しない演算装置と記憶装置（ホストメモリ２２でも構わないし、ホストメモリ２２以外でも構わない）とを有している。プロセッサ２１は、例えば、記憶装置に格納されたプログラムを演算装置が実行することで、上記ＤＭＡディスクリプタ３１２の設定を行う機能を実現する。
【００１９】
プロセッサ２１が設定するＤＭＡディスクリプタ３１２には、例えば、ＤＭＡエンジン３１１がＤＭＡ転送を実行する際に必要となる情報と、ＤＭＡ転送の実行順序を保障する際に必要となる情報と、が含まれている。図２は、プロセッサ２１が設定するＤＭＡディスクリプタ３１２の一例を示している。図２を参照すると、ＤＭＡディスクリプタ３１２は、ＤＭＡエンジン３１１がＤＭＡ転送を実行する際に必要となる情報として、ライトデータ、転送先アドレス、転送元アドレス、転送リクエスト、転送長、などの情報を含んでいる。後述するＤＭＡエンジン３１１は、図２に示すＤＭＡディスクリプタ３１２上のライトデータ、転送元アドレス、転送先アドレス、転送リクエスト、転送長などの情報を基にデータ転送を実行する。
【００２０】
また、本実施形態におけるＤＭＡディスクリプタ３１２は、ＤＭＡ転送の実行順序を保障する際に必要となる情報として、実行順序の保証が必要である旨を示す情報である依存関係フラグ（依存関係情報、要順序保証情報）と、ライトリクエスト完了時間有効と、ライトリクエスト完了時間（待機時間情報）と、を示す情報を含んでいる。
【００２１】
ライトリクエスト完了時間は、依存関係にあるＤＭＡ転送を待機する時間を示している。換言すると、ライトリクエスト完了時間は、ＤＭＡディスクリプタ３１２上の情報に基づいてＤＭＡエンジン３１１がＤＭＡ転送を開始した後、依存関係にある後続のＤＭＡ転送の開始を待機する時間を示している。ライトリクエスト完了時間は、例えば、メモリ・メモリ間、レジスタ・メモリ間、レジスタ・レジスタ間など１つのＤＭＡディスクリプタ３１２に設定されたすべてのデータ転送が完了するまでに必要な時間に基づいて定められる。
【００２２】
ライトリクエスト完了時間有効は、ＤＭＡディスクリプタ３１２に含まれるライトリクエスト完了時間が有効であるか否か示す情報である。ライトリクエスト完了時間有効が有効であり、かつ、ライトリクエスト完了時間が設定されているＤＭＡディスクリプタ３１２に基づくＤＭＡ転送を開始した場合、ＤＭＡエンジン３１１は、依存関係のある後続ＤＭＡ転送をライトリクエスト完了時間分待機した後に開始することになる。
【００２３】
依存関係フラグは、先行のＤＭＡ転送と依存関係があるか否かを示している。例えば、プロセッサ２１は、実行順序の保証を行うことが必要であると判断される場合に、依存関係フラグを設定する。実行順序の保証を行うことが必要であると判断される場合とは、例えば、転送元アドレスや転送先アドレスの重なりが有る場合や、フラグの制御を行う場合などアドレスの重なりに関係なく先行のＤＭＡ転送と依存関係を持たせたい場合などがある。
【００２４】
依存関係フラグが設定されている場合、当該依存関係フラグが設定されたＤＭＡディスクリプタ３１２に基づくＤＭＡ転送は、先行のＤＭＡ転送に基づく待機の対象（実行順序保証の対象）となる。つまり、依存関係フラグが設定されているＤＭＡディスクリプタ３１２に基づくＤＭＡ転送は、先行のＤＭＡ転送に基づく待機時間（ライトリクエスト完了時間）が経過するまで待機した後開始される。一方、依存関係フラグが設定されていない場合、当該依存関係フラグが設定されていないＤＭＡディスクリプタ３１２に基づくＤＭＡ転送は、先行のＤＭＡ転送に基づく待機の対象（実行順序保証の対象）とならない。つまり、依存関係フラグが設定されていないＤＭＡディスクリプタ３１２に基づくＤＭＡ転送は、先行のＤＭＡ転送時のＤＭＡディスクリプタ３１２にライトリクエスト完了時間が設定されているか否かにかかわらず待機せず開始される。
【００２５】
ＤＭＡディスクリプタ３１２には、以上説明したような、ＤＭＡエンジン３１１がＤＭＡ転送を実行する際に必要となる情報と、ＤＭＡ転送の実行順序を保障する際に必要となる情報と、が含まれている。
【００２６】
なお、ＤＭＡディスクリプタ３１２とＤＭＡエンジン３１１とは、例えば、対応関係にある。例えば、同一のＤＭＡディスクリプタ３１２に基づくＤＭＡ転送は、同一のＤＭＡエンジン３１１が実行する。
【００２７】
アクセラレーションプロセッサ３は、ホストＰＣ２のプロセッサ２１が設定したＤＭＡディスクリプタ３１２に基づいて、プロセッサ２１を介さずにメモリ・メモリ間、レジスタ・メモリ間、レジスタ・レジスタ間などのＤＭＡ転送を実行する。つまり、アクセラレーションプロセッサ３は、ＤＭＡディスクリプタ３１２に基づいて、ホストメモリ２２とメモリ３３の間やレジスタ３２１の間、ホストメモリ２２やメモリ３３とレジスタ３２１の間などのデータ転送を実行する。
【００２８】
図１を参照すると、アクセラレーションプロセッサ３は、ＤＭＡ転送を実行するＤＭＡユニット３１と、複数のコア３２と、メモリ３３と、を有している。図１で示すように、ＤＭＡユニット３１とコア３２、コア３２とメモリ３３、コア３２と別のコア３２、メモリ３３とＤＭＡユニット３１とは、それぞれ、互いに通信可能なよう接続されている。
【００２９】
なお、図１では、アクセラレーションプロセッサ３が４つのコア３２（コア３２−０、コア３２−１、コア３２−２、コア３２−３）を有する場合について例示する。しかしながら、アクセラレーションプロセッサ３が有するコア３２の数は、４つに限定されない。アクセラレーションプロセッサ３は、任意の数のコア３２を有することが出来る。
【００３０】
ＤＭＡユニット３１は、複数のＤＭＡエンジン３１１と、複数のＤＭＡディスクリプタ３１２と、を有している。ＤＭＡユニット３１は、複数のＤＭＡエンジン３１１と複数のＤＭＡディスクリプタ３１２とにより、複数のＤＭＡ転送を並列して処理することが出来る。
【００３１】
ＤＭＡエンジン３１１は、ＤＭＡディスクリプタ３１２に基づいてＤＭＡ転送を実行する転送実行手段である。換言すると、ＤＭＡエンジン３１１は、図２に示すＤＭＡディスクリプタ３１２上のライトデータ、転送元アドレス、転送先アドレス、転送リクエスト、転送長などの情報を基にデータ転送を行う。ＤＭＡエンジン３１１によるデータ転送は、例えば、ホストメモリ２２とメモリ３３の間やレジスタ３２１の間、ホストメモリ２２やメモリ３３とレジスタ３２１との間などで行われる。
【００３２】
また、ＤＭＡエンジン３１１は、所定の条件を満たす先行ＤＭＡ転送を行った場合、所定の条件を満たす後続ＤＭＡ転送の開始を所定時間経過まで待機する。例えば、ＤＭＡエンジン３１１は、ライトリクエスト完了時間が設定され、かつ、ライトリクエスト完了時間有効が有効であるＤＭＡディスクリプタ３１２に基づくＤＭＡ転送を開始した場合、当該ＤＭＡ転送を開始してからライトリクエスト完了時間が示す時間（待機時間）が経過するまでの間、依存関係フラグが設定されたＤＭＡディスクリプタ３１２に基づく後続ＤＭＡ転送の開始を待機する。また、例えば、ＤＭＡエンジン３１１は、依存関係フラグが設定されていないＤＭＡディスクリプタ３１２に基づく後続ＤＭＡ転送については、上記ライトリクエスト完了時間が示す時間の経過前でも待機せず開始する。
【００３３】
このように、ＤＭＡエンジン３１１は、ライトリクエスト完了時間が設定され、かつ、ライトリクエスト完了時間有効が有効であるＤＭＡディスクリプタ３１２に基づくＤＭＡ転送を開始した場合、所定の条件を満たす後続ＤＭＡ転送の開始を所定時間経過まで待機する。また、ＤＭＡエンジン３１１は、所定の条件を満たす先行ＤＭＡ転送を行った場合、依存関係フラグが設定されたＤＭＡディスクリプタ３１２に基づくＤＭＡ転送の開始を、先行ＤＭＡ転送を開始する際に参照したＤＭＡディスクリプタ３１２に含まれるライトリクエスト完了時間が示す時間が経過するまで待機する。また、ＤＭＡエンジン３１１は、所定の条件を満たす先行ＤＭＡ転送を行った場合であっても、依存関係フラグが設定されていないＤＭＡディスクリプタ３１２に基づくＤＭＡ転送は待機せず開始する。
【００３４】
ＤＭＡディスクリプタ３１２は、ＤＭＡ転送を実行する際に必要となる情報やＤＭＡ転送の実行順序を保障する際に必要となる情報などを示している。上述したように、ＤＭＡディスクリプタ３１２には、ライトデータと、転送先アドレスと、転送元アドレスと、転送リクエストと、転送長と、依存関係フラグと、ライトリクエスト完了時間有効と、ライトリクエスト完了時間と、が含まれている。
【００３５】
なお、本実施形態の場合、上述したように、ＤＭＡディスクリプタ３１２はプロセッサ２１により設定される。また、ＤＭＡディスクリプタ３１２は、ＤＭＡエンジン３１１により参照される。上述したように、同一のＤＭＡディスクリプタ３１２に基づくＤＭＡ転送は、同一のＤＭＡエンジン３１１により行われる。
【００３６】
コア３２は、アドレスマップされたレジスタ３２１と、演算器３２２と、を有する。レジスタ３２１へのアクセスパスは３種類存在する。具体的には、例えば、ホストＰＣ２からのアクセスパスと、コア３２内に有する演算器３２２からのアクセスパスと、他のコア３２からのアクセスパスと、が存在する。
【００３７】
メモリ３３は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの記憶装置である。メモリ３３は、ＤＭＡ転送などの際に利用される。
【００３８】
システム１は、例えば、上記のような構成を有している。
【００３９】
なお、上述したシステム１では、コア３２が有するレジスタ３２１はＤＭＡ転送可能なメモリアドレス空間にマッピングされているものとする。また、ＤＭＡエンジン３１１からコア３２が有するレジスタ３２１へのアクセスは、固定時間内に処理が完了するものとする。
【００４０】
また、上述したシステム１では、原則として、ＤＭＡディスクリプタ３１２に設定された順番にＤＭＡ転送が行われるとする。一方で、複数のＤＭＡエンジン３１１により複数のＤＭＡディスクリプタ３１２が並列して処理されるため、実行順序は保障されないものとする。また、同一のＤＭＡディスクリプタ３１２を用いたＤＭＡ転送であっても、２つのＤＭＡ転送間でアドレス競合が存在する場合、原則として、実行順序は保障されないものとする。ただし、依存関係フラグやライトリクエスト完了時間有効、ライトリクエスト完了時間などを設定することで、実行順序を保障することが出来る。
【００４１】
次に、図３を参照して、システム１が同一のＤＭＡディスクリプタ３１２を用いたＤＭＡ転送を行う場合の動作の一例について説明する。
【００４２】
図３では、３つのＤＭＡ転送を行う場合について例示している。具体的には、図３のうち１番上のＤＭＡ転送では、転送元アドレス「０ｘ１０００」からデータをリードして転送先アドレス「０ｘ２０００」にデータをライトする。また、図３のうち２番目のＤＭＡ転送では、転送元アドレス「０ｘ２０００」からデータをリードして転送先アドレス「０ｘ３０００」にデータをライトする。また、図３のうち１番下のＤＭＡ転送では、転送元アドレス「０ｘ６０００」からデータをリードして転送先アドレス「０ｘ７０００」にデータをライトする。
【００４３】
また、図３で示す例では、１番上のＤＭＡディスクリプタ３１２には、ライトリクエスト完了時間有効を示す「０ｘ１」と、ライトリクエスト完了時間「０ｘ１００」と、が含まれている。つまり、１番上のＤＭＡディスクリプタ３１２において、ライトリクエスト完了時間が設定され、かつ、ライトリクエスト完了時間有効が有効である。また、２番目のＤＭＡディスクリプタ３１２には、依存関係フラグが設定されている旨を示す「０ｘ１」が含まれている。以上のような構成のため、ＤＭＡエンジン３１１は、１番上のＤＭＡディスクリプタ３１２に基づくＤＭＡ転送を開始した後ライトリクエスト完了時間が経過するまでの間、２番目のＤＭＡディスクリプタ３１２に基づくＤＭＡ転送の開始を待機する。つまり、ＤＭＡエンジン３１１は、１番上のＤＭＡディスクリプタ３１２に基づくＤＭＡ転送を開始した後ライトリクエスト完了時間が経過してから、２番目のＤＭＡディスクリプタ３１２に基づくＤＭＡ転送を開始する。一方、１番下のＤＭＡディスクリプタ３１２には、依存関係フラグが設定されていない旨を示す「０ｘ０」が含まれている。そのため、ＤＭＡエンジン３１１は、１番上のＤＭＡ転送を開始してからライトリクエスト完了時間が経過する前であっても、１番下のＤＭＡ転送を開始する。以上の結果、例えば、１番下のＤＭＡ転送は、２番目のＤＭＡ転送よりも早く開始される。
【００４４】
以上のように、システム１においては、実行順序の保証が必要な依存関係のあるＤＭＡ転送については実行順序の保証を行う一方で、依存関係のないＤＭＡ転送については、無駄な待機を行わずにＤＭＡ転送を開始することが出来る。
【００４５】
続いて、図４を参照して、システム１の動作の一例について説明する。図４においては、実行順序を保障したい依存関係のあるＤＭＡ転送と、実行順序を保障する必要がない依存関係のないＤＭＡ転送を行う場合について説明する。
【００４６】
図４を参照すると、プロセッサ２１は、同一のＤＭＡディスクリプタ３１２に対して、必要な設定を行う。具体的には、プロセッサ２１は、先行のＤＭＡ転送を指示する設定を行う（ステップＳ１０１）とともに、後続のＤＭＡ転送を指示する設定を行う（ステップＳ１０２）（ステップＳ１０３）。なお、プロセッサ２１は、先行の設定を行う際に、ライトリクエスト完了時間有効とライトリクエスト完了時間を含む設定を行う。また、プロセッサ２１は、後続の設定のうちステップＳ１０２の設定を行う際に、依存関係フラグを設定する旨を含む設定を行う。また、プロセッサ２１は、後続の設定のうちステップＳ１０３の設定を行う際に、依存関係フラグを設定しない旨を含む設定を行う。
【００４７】
アクセラレーションプロセッサ３のＤＭＡエンジン３１１は、ＤＭＡディスクリプタ３１２が設定されると、先行のＤＭＡ転送を指示するＤＭＡディスクリプタ３１２に基づいて、ＤＭＡ転送を開始する（ステップＳ２０１）。ＤＭＡ転送は、ＤＭＡリクエストを発行してＤＭＡディスクリプタ３１２が示す転送元から転送先にデータの転送を行うことで行われる。そして、データの転送が完了した後、ＤＭＡ転送は完了する。
【００４８】
また、ＤＭＡエンジン３１１は、先行のＤＭＡ転送を指示するＤＭＡディスクリプタ３１２にライトリクエスト完了時間が設定され、かつ、ライトリクエスト完了時間有効が有効であるため、依存関係フラグが設定されたステップＳ１０２に応じたＤＭＡ転送の開始を、ライトリクエスト完了時間が経過するまで待機する。そして、ＤＭＡエンジン３１１は、先行のＤＭＡ転送を開始してからライトリクエスト完了時間が経過した後、ステップＳ１０２に応じたＤＭＡ転送を開始する（ステップＳ２０２）。このような動作により、ＤＭＡエンジン３１１は、ステップＳ１０１に応じた先行のＤＭＡ転送が完了した後にステップＳ１０２に応じた後続のＤＭＡ転送を開始することになる。一方、ＤＭＡエンジン３１１は、依存関係フラグが設定されていないステップＳ１０３に応じたＤＭＡ転送については、ライトリクエスト完了時間の経過を待たずにＤＭＡ転送を開始する（ステップＳ２０３）。これにより、図４で示す場合、ステップＳ２０３のＤＭＡ転送は、ステップＳ２０２のＤＭＡ転送よりも早く開始する。
【００４９】
なお、２つのＤＭＡ転送の実行順序を保障する方法としては、本実施形態で説明した他に、ポーリングによる確認方法（図５参照）とＤＭＡ転送完了割込みによる確認方法（図６参照）とがある。
【００５０】
図５で示すように、ポーリングによる確認方法の場合、プロセッサ２１は、先行のＤＭＡ転送の終了を確認するためにポーリングを実施することになる。そのため、１つ目のＤＭＡ転送開始から２つ目のＤＭＡ転送開始までの間、ＤＭＡ転送の完了確認のためにプロセッサ２１は占有されることになる。
【００５１】
また、図６で示すように、ＤＭＡ転送完了割込みによる確認方法の場合、ＤＭＡ転送が完了するとアクセラレーションプロセッサ３からホストＰＣ２にＤＭＡ転送完了割込みが通知される。ホストＰＣ２では、ＤＭＡ転送完了割込みを検知するとプロセッサ２１が割込みハンドラのプロセスを起動する。その際、プロセッサ２１は割込み検出前までに行っていたプロセスの退避や新規プロセスの起動を行う必要がある。そのため、ＤＭＡ転送完了通知、ホストＰＣの割込み検出、後続のＤＭＡ転送開始までのレイテンシが悪くなる傾向にある。また、ＤＭＡ転送完了割込みは、ＤＭＡエンジン３１１からＤＭＡ転送のリクエスト発行が完了したことを知ることができるだけであり情報量が少ないため、別途どのＤＭＡディスクリプタ３１２が完了したか、データ転送は成功したかなど確認する必要がある。このように、ＤＭＡ転送完了割込みによる確認方法であっても、レイテンシが悪くなるなどの問題が生じることになる。
【００５２】
以上のように、ポーリングによる確認方法やＤＭＡ転送完了割込みによる確認方法の場合、プロセッサ２１の占有時間が長くなる等の問題が生じることになる。一方で、図４で示すように、本実施形態で説明したシステム１の場合、プロセッサ２１の占有時間が必要以上に生じることなく、ＤＭＡ転送の実行順序を保障することが出来る。つまり、プロセッサリソースを効率的に使用することが出来る。また、依存関係フラグを設定することで、依存関係のないＤＭＡ転送については、ライトリクエスト完了時間の経過を待つことなくＤＭＡ転送を開始することが出来る。
【００５３】
このように、本実施形態におけるシステム１は、依存関係フラグを含むＤＭＡディスクリプタ３１２とＤＭＡエンジン３１１とを有している。このような構成により、ＤＭＡエンジン３１１は、先行するＤＭＡ転送と依存関係のある、実行順序の保証が必要な後続ＤＭＡ転送の実行を待機させつつ、先行するＤＭＡ転送と依存関係のない後続ＤＭＡ転送を待機せず実行することが出来る。その結果、依存関係のあるＤＭＡ転送については実行順序の保証を行うことを可能とする一方で、依存関係のないＤＭＡ転送まで転送の開始を遅らせることを防ぐことが出来る。
【００５４】
また、ＤＭＡディスクリプタ３１２に依存関係フラグを含んでいるため、転送先アドレスと転送元アドレスが重なっているなど、アドレスの関係とは無関係に、複数のＤＭＡ転送間に依存関係を持たせることが可能となる。その結果、ＤＭＡ転送間の依存関係に応じた適切な制御を行うことが可能となる。例えば、本実施形態で説明したシステム１によると、依存関係フラグを設定する事で、アドレス比較を行わずに強制的にデータ転送の完了待ち合わせを行う事が可能となる。これにより、例えば、異なるアドレス位置のフラグ設定を完了してから、ＤＭＡ転送を開始することなども行うことが可能となる。
【００５５】
なお、本実施形態においては、２つのＤＭＡ転送の実行順序を保障する場合について説明した。しかしながら、システム１が実行順序を保障するＤＭＡ転送は２つに限定されない。システム１は、３つ以上の複数のＤＭＡ転送の実行順序を保障するよう構成することが出来る。
【００５６】
また、本実施形態においては、ソフトウェアがＤＭＡ転送間のアドレス競合など実行順序を保障すべきＤＭＡ転送であるか否かを判断する例について説明した。しかしながら、ハードウェアでＤＭＡ転送間のアドレスを比較するよう構成しても構わない。
【００５７】
また、図１で示すシステム１は、あくまで一例である。システム１は、複数のプロセッサ２１を有していても構わないし、複数のメモリ３３を有していても構わない。また、ＤＭＡユニット３１が有するＤＭＡエンジン３１１の数やＤＭＡディスクリプタ３１２の数は、特に限定されない。
【００５８】
［第２の実施形態］
次に、本発明の第１の実施形態を図７から図９までを参照して説明する。図７は、ＤＭＡディスクリプタ４１２の構成の一例を示す図である。図８は、システム１が実行するＤＭＡ転送の一例を示す図である。図９システム１の動作の一例を示すシーケンス図である。
【００５９】
第２の実施形態では、ＤＭＡ転送を実行する際の設定を行う制御手段（以下、リクエスタという）が複数ある場合について説明する。具体的には、本実施形態の場合、プロセッサ２の他にコア３２（コア３２−０、コア３２−１、コア３２−２、コア３２−３）もＤＭＡディスクリプタ４１２の設定を行う。後述するように、本実施形態におけるＤＭＡディスクリプタ４１２は、第１の実施形態で説明したＤＭＡディスクリプタ３１２が有する構成に加えて、使用リクエスタ識別子を有している。ＤＭＡディスクリプタ４１２が使用リクエスタ識別子を有することで、ＤＭＡエンジン３１１は、あるリクエスタが依存関係有りのＤＭＡ転送を実行している場合、他のリクエスタからのリクエストによるＤＭＡ転送を待機することが出来る。
【００６０】
本実施形態におけるシステム１は、第１の実施形態と同様、ホストＰＣ２と、アクセラレーションプロセッサ３と、を有している。本実施形態の場合、ホストＰＣ２が有するプロセッサ２１に加えて、アクセラレーションプロセッサ３が有するコア３２（コア３２−０、コア３２−１、コア３２−２、コア３２−３）もＤＭＡディスクリプタ４１２の設定を行うことが出来る。以下、本実施形態に特徴的な構成について説明する。
【００６１】
図７は、プロセッサ２１、コア３２が設定するＤＭＡディスクリプタ４１２の一例を示している。図７を参照すると、ＤＭＡディスクリプタ４１２は、第１の実施形態で説明したＤＭＡディスクリプタ３１２が有する構成に加えて、リクエスタを識別するための識別情報である使用リクエスタ識別子を有している。
【００６２】
使用リクエスタ識別子は、ＤＭＡディスクリプタ４１２を設定したリクエスタを識別するための識別子である。プロセッサ２１やコア３２などのリクエスタは、ＤＭＡディスクリプタ４１２の設定を行う際に、予め自身に割り振られた識別子を使用リクエスタ識別子として設定する。つまり、使用リクエスタ識別子は、例えば、プロセッサ２１がＤＭＡディスクリプタ４１２の設定を行った場合と、コア３２―０がＤＭＡディスクリプタ４１２の設定を行った場合と、で異なることになる。
【００６３】
使用リクエスタ識別子が設定されたＤＭＡディスクリプタ４１２に基づくＤＭＡ転送は、同一の使用リクエスタ識別子が付与されていない、他のリクエスタからのリクエストによる依存関係のあるＤＭＡ転送が完了するまで待機した後、開始する。つまり、使用リクエスタ識別子が設定されているＤＭＡディスクリプタ４１２の場合、先行の依存関係のあるＤＭＡ転送が完了した後、当該ＤＭＡディスクリプタ４１２に基づくＤＭＡ転送を開始する。なお、先行の依存関係のあるＤＭＡ転送の完了は、先行のＤＭＡ転送の完了フラグに基づいて判断して構わない。また、使用リクエスタ識別子が設定されていない場合、他のリクエスタからのリクエストにより依存関係有りのＤＭＡ転送を実行している場合であっても、待機せずＤＭＡ転送を開始する。
【００６４】
次に、図８を参照して、システム１が同一のＤＭＡディスクリプタ４１２を用いたＤＭＡ転送を行う場合の動作の一例について説明する。
【００６５】
図８では、４つのＤＭＡ転送を行う場合について例示している。具体的には、図８のうち１番上、２番目、１番下のＤＭＡ転送は、図３を参照して既に説明したＤＭＡ転送と同様の転送を行うことになる。一方、図８のうち３番目のＤＭＡ転送では、転送元アドレス「０ｘ４０００」からデータをリードして転送先アドレス「０ｘ５０００」にデータをライトする。
【００６６】
図８で示す例では、１番上、２番目、１番下のＤＭＡディスクリプタ４１２には、使用リクエスタ識別子「０ｘ１」が設定されている。そのため、１番上、２番目、１番下のＤＭＡディスクリプタ４１２は、同一のリクエスタにより設定されたことになる。一方、３番目のＤＭＡディスクリプタ４１２には、使用リクエスタ識別子「０ｘ２」が設定されている。そのため、３番目のＤＭＡディスクリプタ４１２は、１番上、２番目、１番下のＤＭＡディスクリプタ４１２とは異なるリクエスタにより設定されたことになる。
【００６７】
このような図８で示す状況の場合、異なる使用リクエスタ識別子を有する３番目のＤＭＡディスクリプタ４１２に基づくＤＭＡ転送は、先行する依存関係を有するＤＭＡ転送が完了した後、開始される。ここで、図８の場合、先行する依存関係を有するＤＭＡ転送として、１番上と２番目のＤＭＡ転送がある。そのため、ＤＭＡエンジン３１１は、１番上、２番目のＤＭＡディスクリプタ４１２に基づくＤＭＡ転送が終了した後、使用リクエスタ識別子が異なる３番目のＤＭＡディスクリプタ４１２に基づくＤＭＡ転送を開始する。例えば、ＤＭＡエンジン３１１は、２番目のＤＭＡディスクリプタ４１２に基づくＤＭＡ転送が完了した後、３番目のＤＭＡディスクリプタ４１２に基づくＤＭＡ転送を開始する。これにより、ＤＭＡエンジン３１１は、実行中のリクエストの順序保証を妨げることなく、他のリクエスタからのリクエストを実行することが出来る。
【００６８】
以上のように、本実施形態の場合、使用リクエスタ識別子が設定されている場合、依存関係があるＤＭＡ転送が完了した後、他のリクエスタが設定したＤＭＡディスクリプタ４１２に基づくＤＭＡ転送を開始する。これにより、例えば、プロセッサ２１が、依存関係があるＤＭＡ転送をＤＭＡディスクリプタ４１２に設定した後に、コア３２−０がＤＭＡ転送をＤＭＡディスクリプタ４１２に設定した場合、ＤＭＡエンジン３１１は、プロセッサ２１が設定した依存関係を有するＤＭＡ転送の完了後、コア３２−０が設定したＤＭＡ転送を実施する。このように、他リクエスタのＤＭＡ転送の邪魔をしないようにすることで、複数のリクエスタが有る場合でも、ＤＭＡ転送の実行順序を保障することができる。
【００６９】
続いて、図９を参照して、第２の実施形態におけるシステム１の動作の一例について説明する。図９においては、図４を参照して説明した場合に加えて、コア３２からのＤＭＡディスクリプタ４１２の設定が加わった場合について説明する。
【００７０】
図９を参照すると、プロセッサ２１は、先行のＤＭＡ転送を指示する設定を行う（ステップＳ１０１）とともに、後続のＤＭＡ転送を指示する設定を行う（ステップＳ１０２）（ステップＳ１０３）。また、コア３２は、プロセッサ２１によるステップＳ１０１の設定よりも後に、ＤＭＡ転送を指示する設定を行う（ステップＳ３０１）。
【００７１】
アクセラレーションプロセッサ３のＤＭＡエンジン３１１は、ＤＭＡディスクリプタ４１２が設定されると、先行のＤＭＡ転送を指示するＤＭＡディスクリプタ４１２に基づいて、ＤＭＡ転送を開始する（ステップＳ２０１）。ＤＭＡ転送は、ＤＭＡリクエストを発行してＤＭＡディスクリプタ４１２が示す転送元から転送先にデータの転送を行うことで行われる。そして、データの転送が完了した後、ＤＭＡ転送は完了する。
【００７２】
また、ＤＭＡエンジン３１１は、先行のＤＭＡ転送を指示するＤＭＡディスクリプタ４１２にライトリクエスト完了時間が設定され、かつ、ライトリクエスト完了時間有効が有効であるため、依存関係フラグが設定されたステップＳ１０２に応じたＤＭＡ転送の開始を、ライトリクエスト完了時間が経過するまで待機する。そして、ＤＭＡエンジン３１１は、ライトリクエスト完了時間経過後、ステップＳ１０２に応じたＤＭＡ転送を開始する（ステップＳ２０２）。その結果、先行のＤＭＡ転送が完了した後に、ＤＭＡエンジン３１１は、ステップＳ１０２に応じたＤＭＡ転送を開始することになる。
【００７３】
また、ＤＭＡエンジン３１１は、先行のＤＭＡ転送と使用リクエスタ識別子が異なるＤＭＡディスクリプタ４１２が登録されたため、依存関係のある先行のＤＭＡ転送が完了するまで、ステップＳ３０１に応じたＤＭＡ転送の開始を待機する。図９で示す場合、ＤＭＡエンジン３１１は、ステップＳ２０２のＤＭＡ転送が完了するまで、ステップＳ３０１に応じたＤＭＡ転送の開始を待機する。そして、ＤＭＡエンジン３１１は、依存関係のある先行のＤＭＡ転送が完了した後（例えば、ステップＳ２０２のＤＭＡ転送に完了フラグがたった後）、ステップＳ３０１に応じたＤＭＡ転送を開始する（ステップＳ２０４）。その結果、実行中のリクエストの順序保証を妨げることなく、他のリクエスタからのリクエストに応じたＤＭＡ転送を開始することが出来る。
【００７４】
また、ＤＭＡエンジン３１１は、依存関係フラグが設定されていないステップＳ１０３に応じたＤＭＡ転送については、ライトリクエスト完了時間の経過を待たずにＤＭＡ転送を開始する（ステップＳ２０３）。
【００７５】
このように、本実施形態におけるシステム１は、使用リクエスタ識別子を含むＤＭＡディスクリプタ４１２とＤＭＡエンジン３１１とを有している。このような構成により、ＤＭＡエンジン３１１は、先行する依存関係のあるＤＭＡ転送が完了した後、他のリクエスタが登録した後続のＤＭＡ転送を開始することが出来る。これにより、異なるリクエスタが、それぞれＤＭＡ転送を行った場合であってもアクセラレーションプロセッサ３で実行順序の保証を行うことが可能となる。なお、ＤＭＡ転送の実行順序の保障を行う必要がない場合、使用リクエスタ識別子を設定しなければ、同一のＤＭＡディスクリプタ４１２を用いたＤＭＡ転送間でも待機せずＤＭＡ転送を連続して行うことが出来る。
【００７６】
なお、第２の実施形態の場合も、第１の実施形態と同様に様々な変形例を採用することが出来る。
【００７７】
［第３の実施形態］
次に、図１０を参照して、本発明の第３の実施形態について説明する。図１０は、データ転送装置５の構成の一例を示すブロック図である。
【００７８】
図１０を参照すると、データ転送装置５は、転送実行手段５１を有している。転送実行手段５１は、ＤＭＡ転送を行うための転送情報が設定され、設定された転送情報に基づいてＤＭＡ転送を行う。ここで、転送情報には、次のＤＭＡ転送を開始するまでの待機時間を示す待機時間情報と、他のＤＭＡ転送との依存関係を示す依存関係情報と、が含まれている。例えば、転送実行手段５１は、転送情報に基づいてＤＭＡ転送を開始してから、待機時間情報が示す待機時間待機した後、依存関係情報に基づいて依存関係があると判断される転送情報に基づくＤＭＡ転送を開始する。
【００７９】
このように、本実施形態におけるデータ転送装置５は、転送情報に基づくＤＭＡ転送を行う転送実行手段５１を有している。また、転送情報には、待機時間情報と依存関係情報とが含まれている。このような構成により、転送実行手段５１は、転送情報に基づいてＤＭＡ転送を開始してから、待機時間情報が示す待機時間待機した後、依存関係情報に基づいて依存関係があると判断される転送情報に基づくＤＭＡ転送を開始することが出来る。その結果、依存関係のあるＤＭＡ転送については実行順序の保証を行うことを可能とする一方で、依存関係のないＤＭＡ転送まで転送の開始を遅らせることを防ぐことが可能となる。また、データ転送装置５は、依存関係情報を有している。そのため、アドレスの関係とは無関係に、複数のＤＭＡ転送間に依存関係を持たせることが可能となる。その結果、ＤＭＡ転送間の依存関係に応じた適切な制御を行うことが可能となる。
【００８０】
また、上述したデータ転送装置５は、当該データ転送装置５に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、データ転送装置に、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送を行うための転送情報が設定され、設定された転送情報に基づいてＤＭＡ転送を行う転送実行手段を実現させ、転送情報には、次のＤＭＡ転送を開始するまでの待機時間を示す待機時間情報と、他のＤＭＡ転送との依存関係を示す依存関係情報と、が含まれており、転送実行手段は、転送情報に基づいてＤＭＡ転送を開始してから、待機時間情報が示す待機時間待機した後、依存関係情報に基づいて依存関係があると判断される前記転送情報に基づくＤＭＡ転送を開始するプログラムである。
【００８１】
また、上述したデータ転送装置５により実行されるデータ転送方法は、データ転送装置が、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送を行うための転送情報が設定され、設定された転送情報に基づいてＤＭＡ転送を行い、転送情報には、次のＤＭＡ転送を開始するまでの待機時間を示す待機時間情報と、他のＤＭＡ転送との依存関係を示す依存関係情報と、が含まれており、転送情報に基づいてＤＭＡ転送を開始してから、待機時間情報が示す待機時間待機した後、依存関係情報に基づいて依存関係があると判断される転送情報に基づくＤＭＡ転送を開始する、という方法である。
【００８２】
上述した構成を有する、プログラム、又は、データ転送方法、の発明であっても、上記データ転送装置５と同様の作用を有するために、上述した本発明の目的を達成することが出来る。
【００８３】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるデータ転送装置などの概略を説明する。但し、本発明は、以下の構成に限定されない。
【００８４】
（付記１）
ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送を行うための転送情報が設定され、設定された前記転送情報に基づいてＤＭＡ転送を行う転送実行手段を備え、
前記転送情報には、次のＤＭＡ転送を開始するまでの待機時間を示す待機時間情報と、他のＤＭＡ転送との依存関係を示す依存関係情報と、が含まれており、
前記転送実行手段は、前記転送情報に基づいてＤＭＡ転送を開始してから、前記待機時間情報が示す待機時間待機した後、前記依存関係情報に基づいて依存関係があると判断される前記転送情報に基づくＤＭＡ転送を開始する
データ転送装置。
（付記２）
付記１に記載のデータ転送装置であって、
前記転送実行手段は、前記依存関係情報に基づいて依存関係がないと判断される前記転送情報に基づくＤＭＡ転送を、前記待機時間情報が示す待機時間にかかわらず開始する
データ転送装置。
（付記３）
付記１又は付記２に記載のデータ転送装置であって、
前記依存関係情報は、ＤＭＡ転送による転送先アドレスや転送元アドレスの重なりにかかわらず依存関係の有無を示す依存関係フラグである
データ転送装置。
（付記４）
付記１から付記３までのいずれか１項に記載のデータ転送装置であって、
前記転送実行手段は、前記待機時間情報を含む前記転送情報に基づいてＤＭＡ転送を開始した後、前記依存関係情報が設定された前記転送情報に基づくＤＭＡ転送を行う場合、前記待機時間情報が示す待機時間待機した後、前記依存関係情報が設定された前記転送情報に基づくＤＭＡ転送を開始する
データ転送装置。
（付記５）
付記１から付記４までのいずれか１項に記載のデータ転送装置であって、
前記転送実行手段は、前記待機時間情報を含む前記転送情報に基づいてＤＭＡ転送を開始した後、前記依存関係情報が設定されていない前記転送情報に基づくＤＭＡ転送を行う場合、前記待機時間情報が示す待機時間待機せずに前記依存関係情報が設定された前記転送情報に基づくＤＭＡ転送を開始する
データ転送装置。
（付記６）
付記１から付記５までのいずれか１項に記載のデータ転送装置であって、
データ転送装置は、前記転送情報を設定する設定手段を有しており、
前記設定手段は、ＤＭＡ転送による転送先アドレスや転送元アドレスの重なりにかかわらず依存関係があると判断される場合に前記依存関係情報を設定する
データ転送装置。
（付記７）
付記１から付記６までのいずれか１項に記載のデータ転送装置であって、
前記転送情報には、当該転送情報を設定した制御手段であるリクエスタを示す識別情報が含まれており、
前記転送実行手段は、前記識別情報に基づいて、先行する依存関係のあるＤＭＡ転送が完了した後、他のリクエスタが登録した後続のＤＭＡ転送を開始する
データ転送装置。
（付記８）
データ転送装置が、
ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送を行うための転送情報が設定され、設定された前記転送情報に基づいてＤＭＡ転送を行い、
前記転送情報には、次のＤＭＡ転送を開始するまでの待機時間を示す待機時間情報と、他のＤＭＡ転送との依存関係を示す依存関係情報と、が含まれており、
前記転送情報に基づいてＤＭＡ転送を開始してから、前記待機時間情報が示す待機時間待機した後、前記依存関係情報に基づいて依存関係があると判断される前記転送情報に基づくＤＭＡ転送を開始する
データ転送方法。
（付記９）
付記８に記載のデータ転送方法であって、
前記依存関係情報に基づいて依存関係がないと判断される前記転送情報に基づくＤＭＡ転送を、前記待機時間情報が示す待機時間にかかわらず開始する
データ転送方法。
（付記１０）
データ転送装置に、
ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送を行うための転送情報が設定され、設定された前記転送情報に基づいてＤＭＡ転送を行う転送実行手段を実現させ、
前記転送情報には、次のＤＭＡ転送を開始するまでの待機時間を示す待機時間情報と、他のＤＭＡ転送との依存関係を示す依存関係情報と、が含まれており、
前記転送実行手段は、前記転送情報に基づいてＤＭＡ転送を開始してから、前記待機時間情報が示す待機時間待機した後、前記依存関係情報に基づいて依存関係があると判断される前記転送情報に基づくＤＭＡ転送を開始する
プログラム。
【００８５】
なお、上記各実施形態及び付記において記載したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されていたりする。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【００８６】
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることが出来る。
【符号の説明】
【００８７】
１  システム
２  ホストＰＣ
２１  プロセッサ
２２  ホストメモリ
３  アクセラレーションプロセッサ
３１  ＤＭＡユニット
３１１  ＤＭＡエンジン
３１２  ＤＭＡディスクリプタ
３２  コア
３２１  レジスタ
３２２  演算器
３３  メモリ
４１２  ＤＭＡディスクリプタ
５  データ転送装置
５１  転送実行手段
【図１】
2019159750.tif 000003
【図２】
2019159750.tif 000004
【図３】
2019159750.tif 000005
【図４】
2019159750.tif 000006
【図５】
2019159750.tif 000007
【図６】
2019159750.tif 000008
【図７】
2019159750.tif 000009
【図８】
2019159750.tif 000010
【図９】
2019159750.tif 000011
【図１０】
2019159750.tif 000012