(57)【要約】【課題】データ転送性能を向上させることができるメモリアクセス制御装置を提供する。【解決手段】複数のメモリアクセスリクエストのデータ転送元のアドレスの重複部分をアドレス比較部で検出し、重複部分が検出された複数のメモリアクセスリクエストを、重複部分に対するデータ転送元へのリードアクセスをまとめるように統合要求部で統合し、統合したメモリアクセスリクエストに従ったデータ転送を実行し、転送されたデータの統合前のメモリアクセスリクエストのデータ転送先のアドレスへの書き込みを統合管理部が指示するようにして、重複部分に対するアクセスを１回のリードアクセスで実現し、データ転送性能を向上させる。【選択図】図１
2018190277.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリアクセスリクエストのデータ転送元のアドレスの重複部分を検出する検出部と、
前記検出部により前記重複部分が検出された複数のメモリアクセスリクエストを、前記重複部分に対するデータ転送元へのリードアクセスをまとめるように統合する統合部と、
前記統合部により統合したメモリアクセスリクエストに従ったデータ転送を実行する実行部と、
前記実行部によるデータ転送で転送されたデータの、統合前のメモリアクセスリクエストのデータ転送先のアドレスへの書き込みを指示する管理部とを有するメモリアクセス制御装置。
【請求項２】
前記管理部は、統合後のメモリアクセスリクエストのデータ転送元のアドレスに対するデータ転送先のアドレスの対応を示すテーブル情報を参照し、前記データ転送で転送されたデータの書き込みを指示することを特徴とする請求項１記載のメモリアクセス制御装置。
【請求項３】
前記管理部は、前記データ転送で転送された前記重複部分のデータの、複数のデータ転送先のアドレスへの一斉書き込みを指示する請求項１又は２記載のメモリアクセス制御装置。
【請求項４】
前記管理部からの指示に基づいて、前記データ転送で転送された前記重複部分のデータの書き込みを前記複数のデータ転送先のアドレスに対してマルチキャスト送信する送信部を有する請求項３記載のメモリアクセス制御装置。
【請求項５】
前記統合部は、前記重複部分に対するデータ転送元へのリードアクセスを１回で実行するよう前記複数のメモリアクセスリクエストを統合する請求項１〜４の何れか１項に記載のメモリアクセス制御装置。
【請求項６】
前記統合部は、追い越し禁止のメモリアクセスリクエストより以前の追い越し可能なメモリアクセスリクエスト毎に、前記重複部分が検出された複数のメモリアクセスリクエストを統合する請求項１〜５の何れか１項に記載のメモリアクセス制御装置。
【請求項７】
メモリアクセス制御装置が有する検出部が、複数のメモリアクセスリクエストのデータ転送元のアドレスの重複部分を検出し、
前記メモリアクセス制御装置が有する統合部が、前記重複部分が検出された複数のメモリアクセスリクエストを、前記重複部分に対するデータ転送元へのリードアクセスをまとめるように統合し、
前記メモリアクセス制御装置が有する実行部が、前記統合したメモリアクセスリクエストに従ったデータ転送を実行し、
前記メモリアクセス制御装置が有する管理部が、前記データ転送で転送されたデータの、統合前のメモリアクセスリクエストのデータ転送先のアドレスへの書き込みを指示するメモリアクセス制御装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリアクセス制御装置及びその制御方法に関する。
【背景技術】
【０００２】
ホスト装置のＣＰＵ（Central Processing Unit）を介さずに、周辺機器がホスト装置に接続されたメモリ（ホストメモリ）との間で直接データ転送を行うダイレクトメモリアクセス（Direct Memory Access：ＤＭＡ）転送方式がある（例えば、特許文献１〜３参照）。ＤＭＡ転送方式では、ＣＰＵが周辺機器の内部あるいはバス上に存在するＤＭＡ制御装置（ＤＭＡコントローラ）にデータ転送要求（ＤＭＡリクエスト）を通知し、それに従ってＤＭＡ制御装置がデータ転送を行う。
【０００３】
ホスト装置のＣＰＵが、転送元となるソースアドレス、転送先となるデスティネーションアドレス、及び転送サイズ等の情報からなるＤＭＡリクエストをＤＭＡ制御装置に送信する。これらのＤＭＡ転送に必要な情報をまとめてＤＭＡディスクリプタ（転送記述子）と呼ぶ。ＤＭＡリクエストを受けたＤＭＡ制御装置がＤＭＡ転送処理を開始すると、まずＤＭＡディスクリプタに示されるソースアドレスに対するメモリリードリクエストを、ホストメモリへのメモリアクセスを行うホスト装置側のメモリコントローラに送信する。
【０００４】
メモリリードリクエストを受けたホスト装置側のメモリコントローラは、ホストメモリに対するリードアクセスを行い、読み出したデータを応答データとしてＤＭＡ制御装置に送信する。応答データを受けたＤＭＡ制御装置は、ＤＭＡディスクリプタに示されるデスティネーションアドレスに対して応答データを書き込む。これらの動作を順次アドレスを変化させてＤＭＡディスクリプタに示される転送サイズ分繰り返し行うことでＤＭＡ転送によるデータ転送が完了する。なお、周辺機器の内部にＤＭＡ制御装置が存在する場合、周辺機器からホストメモリへのデータ移動をＤＭＡライトと呼び、ホストメモリから周辺機器へのデータ移動をＤＭＡリードと呼ぶ。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−１３４２８７号公報
【特許文献２】特開２００５−１４１２９９号公報
【特許文献３】特開２０１０−１５２８３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
周辺機器としてのデバイスからホストメモリに対して、図９（Ａ）に示すＤＭＡリードを行う場合を考える。ＤＭＡリクエストＡでは、ホストメモリのアドレス０〜９にリードアクセスを行い、ＤＭＡリクエストＢでは、ホストメモリのアドレス１〜１０にリードアクセスを行う。図９（Ｂ）に示すように、ＤＭＡリクエストＡによりリードアクセスされる領域（Ａ）９０１と、ＤＭＡリクエストＢによりリードアクセスされる領域（Ｂ）９０２とは、アドレス１〜９の領域（Ｃ）９０３が重複している。
【０００７】
従来のＤＭＡ制御装置は、図１０に示すように、ＤＭＡリクエストＡ及びＤＭＡリクエストＢのそれぞれについて、ホスト装置側のメモリコントローラにメモリリードリクエストを逐一送信し、その応答データをデバイスのメモリの対応する領域に書き込む。したがって、図１０に示すように、ホストメモリのアドレス１〜９に対するリードアクセスが２回発生することとなる。
【０００８】
例えば、画像に対するフィルタ処理を行う際のメモリアクセスでは、前述のような重複する領域へのアクセスが頻発する。画像に対するフィルタ処理をホスト装置とは別のデバイスに行わせる場合、処理対象のデータをＤＭＡリードリクエストによりホストメモリからデバイスに転送するが、重複するアドレスへのアクセスが逐一発生して時間がかかり、データ転送処理がボトルネックとなってしまう。
【０００９】
１つの側面では、本発明の目的は、データ転送性能を向上させることができるメモリアクセス制御装置を提供することにある。
【課題を解決するための手段】
【００１０】
メモリアクセス制御装置の一態様は、複数のメモリアクセスリクエストのデータ転送元のアドレスの重複部分を検出する検出部と、重複部分が検出された複数のメモリアクセスリクエストを、重複部分に対するデータ転送元へのリードアクセスをまとめるように統合する統合部と、統合したメモリアクセスリクエストに従ったデータ転送を実行する実行部と、転送されたデータの統合前のメモリアクセスリクエストのデータ転送先のアドレスへの書き込みを指示する管理部とを有する。
【発明の効果】
【００１１】
発明の一態様においては、データ転送性能を向上させることができるメモリアクセス制御装置を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、本発明の実施形態におけるＤＭＡ制御装置の構成例を示す図である。
【図２】図２は、本実施形態におけるＤＭＡリクエストの重複部分の検出を説明する図である。
【図３】図３は、本実施形態における統合後のＤＭＡディスクリプタを説明する図である。
【図４】図４（Ａ）及び図４（Ｂ）は、本実施形態における統合アドレステーブルの例を示す図である。
【図５】図５は、本実施形態におけるＤＭＡ制御装置によるデータ転送動作の例を示す図である。
【図６】図６は、本実施形態におけるＤＭＡ制御装置の動作例を示すフローチャートである。
【図７】図７（Ａ）及び図７（Ｂ）は、本実施形態における統合アドレステーブルの例を示す図である。
【図８】図８は、本実施形態におけるＤＭＡ制御装置を有するコンピュータシステムの構成例を示す図である。
【図９】図９（Ａ）及び図９（Ｂ）は、重複部分を有するＤＭＡリクエストを説明する図である。
【図１０】図１０は、従来のＤＭＡ制御装置によるデータ転送動作を示す図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態を図面に基づいて説明する。
【００１４】
図１は、本発明の一実施形態におけるダイレクトメモリアクセス（Direct Memory Access：ＤＭＡ）制御装置の構成例を示す図である。本実施形態におけるＤＭＡ制御装置１００は、ホストメモリ１０８に対するメモリアクセスを行うホスト装置１０７のメモリコントローラと接続される。また、ＤＭＡ制御装置１００は、スイッチ１１２を介して、図示しないデバイスメモリに対するメモリアクセスを行うメモリコントローラ（ＭＡＣ）１１３と接続される。
【００１５】
送信部としてのスイッチ１１２は、ＤＭＡリクエストの応答データのデバイスメモリへの書き込みを要求するメモリライトリクエストを、デスティネーションアドレスに対応するメモリコントローラ１１３に発行する。本実施形態において、スイッチ１１２は、複数のメモリコントローラ１１３に対してメモリライトリクエストを一斉に発行するマルチキャスト機能を有する。なお、図１には、２つのメモリコントローラ１１３−０、１１３−１が存在する例を示しているが、ＤＭＡ制御装置１００が、スイッチ１１２を介して接続されるメモリコントローラ１１３の数は任意である。また、ＤＭＡ制御装置１００の内部にスイッチ１１２を設けるようにしてもよい。
【００１６】
ＤＭＡ制御装置１００は、ＤＭＡキュー１０１、アドレス比較部１０２、統合要求部１０３、統合管理部１０４、セレクタ１０５、ＤＭＡエンジン１０６、デマルチプレクサ１０９、バッファ１１０、及び書き込み制御部１１１を有する。ＤＭＡキュー１０１は、ホスト装置１０７のＣＰＵから通知されるＤＭＡ転送方式でのデータ転送要求（ＤＭＡリクエスト）が格納される。具体的には、ＤＭＡキュー１０１は、ＣＰＵから通知されるＤＭＡリクエストに係るＤＭＡディスクリプタ（転送記述子）を格納し、順に出力する。
【００１７】
ＤＭＡディスクリプタは、ＤＭＡ転送におけるデータ転送元となるソースアドレス、データ転送先となるデスティネーションアドレス、及び転送サイズ等の情報を含む。また、ＤＭＡディスクリプタに、後続のＤＭＡリクエストが追い越し可能であるかを示す追い越し可能フラグを含ませてもよく、例えばフラグの値が“１”である場合には後続のＤＭＡリクエストは追い越し禁止としてもよい。追い越し可能フラグは、例えばホスト装置側で後続のＤＭＡリクエストによる追い越しが可能であるか否かを判断してＤＭＡディスクリプタに付与すればよい。
【００１８】
検出部としてのアドレス比較部１０２は、ＤＭＡキュー１０１に格納されたＤＭＡディスクリプタのアドレス情報等を比較し、格納されたＤＭＡディスクリプタにおけるデータ転送元のアドレスの重複部分を検出する。アドレス比較部１０２は、ＤＭＡキュー１０１内の先頭のＤＭＡリクエストとそれ以降のＤＭＡリクエストとでデータ転送元のアドレスの重複部分を検出する。
【００１９】
アドレス比較部１０２は、開始アドレス＿Ａ、転送サイズＳｉｚｅ＿ＡのＤＭＡリクエストと、開始アドレス＿Ｂ、転送サイズＳｉｚｅ＿ＢのＤＭＡリクエストとが、（開始アドレス＿Ａ＋Ｓｉｚｅ＿Ａ）−（開始アドレス＿Ｂ）＞０の関係を満たすとき、データ転送元のアドレスに重複部分があると判断する。このとき、アドレス比較部１０２は、図２に示すように開始アドレス＿Ｂから（開始アドレス＿Ａ＋Ｓｉｚｅ＿Ａ）までの領域（Ｃ）２０３をデータ転送元のアドレスの重複部分として検出する。なお、図２において、領域（Ａ）２０１は、開始アドレス＿Ａ、転送サイズＳｉｚｅ＿ＡのＤＭＡリクエストによりリードアクセスされる領域であり、領域（Ｂ）２０２は、開始アドレス＿Ｂ、転送サイズＳｉｚｅ＿ＢのＤＭＡリクエストによりリードアクセスされる領域である。
【００２０】
統合部としての統合要求部１０３は、アドレス比較部１０２によりデータ転送元のアドレスに重複部分を有する複数のＤＭＡリクエストが検出された場合、それらのＤＭＡリクエストを統合して、統合後のＤＭＡリクエストに係るＤＭＡディスクリプタを生成し内部のキューバッファに格納する。また、統合要求部１０３は、統合前のＤＭＡリクエストをＤＭＡキュー１０１から解放（リリース）させるとともに、統合後のＤＭＡリクエストに係るＤＭＡディスクリプタの情報を統合管理部１０４に出力する。
【００２１】
統合要求部１０３は、例えば図２に示したように２つのＤＭＡリクエストがアドレスの重複部分を有する場合、この２つのＤＭＡリクエストの重複部分に対するリードアクセスをまとめるように統合して図３に示すようなＤＭＡディスクリプタを生成する。すなわち、領域Ａの単独部分についての開始アドレス＿Ａ、転送サイズ（開始アドレス＿Ｂ−開始アドレス＿Ａ）のＤＭＡリクエストと、領域ＡとＢの重複部分（Ｃ）についての開始アドレス＿Ｂ、転送サイズ（（開始アドレス＿Ａ＋Ｓｉｚｅ＿Ａ）−開始アドレス＿Ｂ）のＤＭＡリクエストと、領域Ｂの単独部分についての（開始アドレス＿Ａ＋Ｓｉｚｅ＿Ａ）、転送サイズ（（開始アドレス＿Ｂ＋Ｓｉｚｅ＿Ｂ）−（開始アドレス＿Ａ＋Ｓｉｚｅ＿Ａ））のＤＭＡリクエストとを生成する。
【００２２】
また、ＤＭＡディスクリプタに追い越し可能フラグを有する場合には、統合要求部１０３は、データ転送元のアドレスに重複部分を有する２つのＤＭＡリクエストが追い越し可能であるか否かを調べて、ＤＭＡリクエストの統合を行う。ＤＭＡキュー１０１の（Ｎ−１）番目までのＤＭＡリクエストが追い越し可能であり、Ｎ番目のＤＭＡリクエストが追い越し不可能であるならば、（Ｎ−１）番目までのＤＭＡリクエストについて統合が可能となる。
【００２３】
すなわち、ＤＭＡディスクリプタの追い越し可能フラグの値が“１”であるＤＭＡリクエスト以降のＤＭＡリクエストは、それ以前のＤＭＡリクエストとは統合できないようにする。例えば、先頭（１番目）のＤＭＡリクエストと後続の３番目のＤＭＡリクエストに重複部分があるとしても、後続の２番目のＤＭＡリクエストが追い越し禁止である場合、３番目のＤＭＡリクエストが２番目のＤＭＡリクエストを追い越しできないため、１番目のＤＭＡリクエストと３番目のＤＭＡリクエストとを統合できない。
【００２４】
管理部としての統合管理部１０４は、統合要求部１０３からの統合後のＤＭＡリクエストに係るＤＭＡディスクリプタの情報を受けて統合アドレステーブルに格納する。図４（Ａ）に統合アドレステーブルの例を示す。統合アドレステーブルは、統合後のＤＭＡリクエストにおけるソースアドレスに対するデスティネーションアドレスの対応を示すテーブルである。統合アドレステーブルでは、ソースアドレスに対して複数のデスティネーションアドレスが記述でき、統合したＤＭＡリクエストの数だけデスティネーションアドレスを記述可能となっている。
【００２５】
図４（Ａ）に示す例では、エントリ０にＤＭＡディスクリプタが格納されたＤＭＡリクエストのソースアドレスＡに対してデスティネーションアドレスＸ０が対応付けられてい
る。また、エントリ１にＤＭＡディスクリプタが格納されたＤＭＡリクエストのソースアドレスＢに対してデスティネーションアドレスＸ１、Ｙ０が対応付けられ、エントリ２に
ＤＭＡディスクリプタが格納されたＤＭＡリクエストのソースアドレスＣに対してデスティネーションアドレスＹ１が対応付けられている。さらに、重複している部分（エントリ１のＤＭＡリクエスト）については、マルチキャストフラグＭＣがＹｅｓとなっており、この部分の応答データはデバイスメモリへマルチキャストライトすることが可能となっている。
【００２６】
統合管理部１０４は、統合後のＤＭＡリクエストに対する応答データが返ってきたとき、統合アドレステーブルを参照して、対応するデスティネーションアドレスを取得し、そのアドレスに対するメモリライトリクエストを発行して応答データの書き込みを指示する。例えば、図４（Ａ）に示した統合アドレステーブルを参照することで、図４（Ｂ）に示すように応答データがデバイスメモリへ書き込まれる。
【００２７】
セレクタ１０５は、ＤＭＡキュー１０１から出力されるＤＭＡディスクリプタ又は統合要求部１０３から出力される統合後のＤＭＡリクエストのＤＭＡディスクリプタを選択して出力する。セレクタ１０５は、通常はＤＭＡキュー１０１から出力されるＤＭＡディスクリプタを選択して出力し、統合後のＤＭＡリクエストが存在する場合、統合要求部１０３から出力されるＤＭＡディスクリプタを選択して出力する。
【００２８】
ＤＭＡエンジン１０６は、セレクタ１０５から出力されるＤＭＡディスクリプタに従ってメモリリードリクエストをホスト装置１０７のメモリコントローラに発行する。ＤＭＡエンジン１０６からのメモリリードリクエストを受けたホスト装置１０７のメモリコントローラは、ホストメモリ１０８に対するリードアクセスを行い、読み出したデータを応答データとしてＤＭＡ制御装置１００に返す。また、ＤＭＡエンジン１０６は、統合後のＤＭＡリクエストのＤＭＡディスクリプタに基づくＤＭＡ処理が完了した場合、統合要求部１０３に完了通知を行う。
【００２９】
ホスト装置１０７からの応答データは、統合されていないＤＭＡリクエストのものであれば書き込み制御部１１１に出力され、統合後のＤＭＡリクエストのものであればデマルチプレクサ１０９を介して統合管理部１０４及びバッファ１１０に出力される。バッファ１１０は、ホスト装置１０７からの応答データを保持するバッファである。書き込み制御部１１１は、ホスト装置１０７から応答データが返ってきたとき、その応答データのデバイスメモリへの書き込み処理を制御する。
【００３０】
ここで、本実施形態では、統合後のＤＭＡリクエストに対する応答データが返ってきたとき、複数のデスティネーションアドレスに対する同じデータの書き込みが発生する。異なるメモリコントローラに接続されたデバイスメモリに書き込む場合にはマルチキャスト方式による一括でのライト処理を行い、同じメモリコントローラに接続されたデバイスメモリに書き込む場合には、バッファ１１０を用いてシリアルにライト処理を行う。
【００３１】
詳細には、異なるメモリコントローラに接続されたデバイスメモリに書き込む場合、スイッチ１１２に統合後の応答データを“マルチキャストライト”として送信することで、スイッチ１１２が各メモリコントローラ１１３にマルチキャストする。マルチキャストライトを受け取ったそれぞれのメモリコントローラ１１３は、それぞれデータをデバイスメモリに書き込む。なお、マルチキャストライトによる書き込みを指示したが、ビジー状態等で書き込みできなかった場合には、書き込み可能な状態になった後にバッファ１１０に保持した応答データを書き込むようにすればよい。また、同じメモリコントローラに接続されたデバイスメモリに書き込む場合、重複部分の応答データに対して、ある単位毎に分割してそれぞれデバイスメモリへ書き込む。この場合、後続の応答データがあふれないようにバッファ１１０を用いてオーバーフローしないように制御する。
【００３２】
本実施形態におけるＤＭＡ制御装置１００は、ＤＭＡキュー１０１に格納された複数のＤＭＡディスクリプタにおけるデータ転送元のアドレスの重複部分を検出する機能を設ける。そして、データ転送元のアドレスの重複部分を検出すると、その重複部分を有する複数のＤＭＡリクエストを統合することで、重複するアドレス部分に対するアクセスを１回のリードアクセスで実現する。重複部分の応答データは、ＤＭＡ制御装置１００が管理し、デスティネーションアドレスに対応するそれぞれのデバイスメモリへマルチキャスト方式等で書き込む。このように重複部分へのＤＭＡリードを１回のリードアクセスで行うことができるため、重複部分に対してＤＭＡリクエスト毎に逐一アクセスする場合に比べて転送時間を短縮でき、転送処理のボトルネックを改善しデータ転送性能を向上させることができる。
【００３３】
例えば、図９（Ａ）に示したＤＭＡリードを行う場合、本実施形態におけるＤＭＡ制御装置１００は、図５に示すようにホストメモリのアドレス１〜９に対するリードアクセスが重複しているので、ＤＭＡリクエストＡ及びＤＭＡリクエストＢについて、まとめてメモリリードリクエストを送信する。さらに、重複部分ではマルチキャストフラグ（図５中に白丸で示す）が立っているので、デバイスメモリ０及びデバイスメモリ１に応答データをマルチキャストライトする。したがって、本実施形態におけるＤＭＡ制御装置１００は、ＤＭＡリクエストＡ及びＤＭＡリクエストＢに対する処理を期間Ｔ５１で完了することができ、図１０に示した従来のＤＭＡ制御装置による処理時間Ｔ５２と比較すると、データ転送効率が向上し、転送時間が短縮されていることがわかる。
【００３４】
図６は、本実施形態におけるＤＭＡ制御装置でのＤＭＡリードの動作例を示すフローチャートである。ホスト装置１０７からの命令によりＤＭＡキュー１０１にＤＭＡディスクリプタが書き込まれると、ステップＳ６０１にて、アドレス比較部１０２は、ＤＭＡキュー１０１に格納されたＤＭＡディスクリプタのアドレス情報等を比較し、格納されたＤＭＡディスクリプタにおけるデータ転送元のアドレスの重複部分を検出する。次に、ステップＳ６０２にて、統合要求部１０３は、アドレス比較部１０２での検出結果等に基づいて、ＤＭＡキュー１０１にデータ転送元のアドレスが重複する統合可能なＤＭＡリクエストがある否かを判断する。
【００３５】
データ転送元のアドレスが重複する統合可能なＤＭＡリクエストがあると判断した場合、ステップＳ６０３にて、統合要求部１０３は、データ転送元のアドレスが重複するＤＭＡリクエストを統合し、統合管理部１０４の統合アドレステーブルに登録する。また、統合後のＤＭＡリクエストに対してマルチキャストフラグの設定を行う。続いて、ステップＳ６０４にて、ＤＭＡエンジン１０６が、統合要求部１０３からのＤＭＡディスクリプタに従って、統合されたアドレスへのＤＭＡリードを実行し、ステップＳ６０５にて、ホスト装置１０７からＤＭＡリードに対する応答データが返ってくる。
【００３６】
次に、ステップＳ６０６にて、統合管理部１０４の統合アドレステーブルに対して応答データとマルチキャストフラグとの対応の問い合わせが行われる。そして、ステップＳ６０７にて、統合管理部１０４は、マルチキャストフラグがオン（Ｙｅｓ）であるか否かを判断する。判断の結果、マルチキャストフラグがオンであると判断した場合、ステップＳ６０８にて、ＤＭＡ制御装置は、メモリコントローラ１１３に対して応答データのマルチキャストライトを発行する。例えば、ＤＭＡ制御装置がスイッチ１１２にマルチキャストフラグを立てたパケットを送出することで、対象の各メモリコントローラに対してスイッチ１１２がメモリライトリクエストを同時に実行する。また、マルチキャストフラグがオンでないと判断した場合、ＤＭＡ制御装置は、ステップＳ６０９にて、応答データに対して１個ずつメモリコントローラ１１３にメモリライトリクエストを発行する。その後、統合要求部１０３に格納されたＤＭＡディスクリプタを解放する。
【００３７】
ステップＳ６０２において、統合可能なＤＭＡリクエストがないと判断した場合、ステップＳ６１０にて、ＤＭＡエンジン１０６が、ＤＭＡキュー１０１における先頭のＤＭＡリクエスト（先頭のＤＭＡディスクリプタ）に従って、ＤＭＡリードを実行し、ステップＳ６１１にて、ホスト装置１０７からＤＭＡリードに対する応答データが返ってくる。そして、ステップＳ６１２にて、ＤＭＡ制御装置は、メモリコントローラ１１３に対して応答データのメモリライトリクエストを発行する。その後、ＤＭＡキュー１０１に格納されたＤＭＡディスクリプタを解放する。
【００３８】
なお、前述した実施形態では、２つのＤＭＡリクエストでデータ転送元のアドレスが重複する例を示したが、これに限定するものではなく、３つ以上のＤＭＡリクエストでデータ転送元のアドレスが重複する場合も同様に適用可能である。例えば、統合アドレステーブルを拡張し、３つ以上のＤＭＡリクエストにおける重複部分のアドレスを登録することで重複部分について一斉ＤＭＡリードが可能となる。
【００３９】
例えば、図７（Ａ）に示す例では、エントリ０にＤＭＡディスクリプタが格納されたＤＭＡリクエストのソースアドレスＡに対してデスティネーションアドレスＸ０が対応付け
られ、エントリ１にＤＭＡディスクリプタが格納されたＤＭＡリクエストのソースアドレスＢに対してデスティネーションアドレスＸ１、Ｙ０が対応付けられている。また、エン
トリ２にＤＭＡディスクリプタが格納されたＤＭＡリクエストのソースアドレスＣに対してデスティネーションアドレスＸ２、Ｙ１、Ｚ０が対応付けられ、エントリ３にＤＭＡデ
ィスクリプタが格納されたＤＭＡリクエストのソースアドレスＤに対してデスティネーションアドレスＹ２、Ｚ１が対応付けられている。エントリ４にＤＭＡディスクリプタが格納されたＤＭＡリクエストのソースアドレスＥに対してデスティネーションアドレスＺ２が対応付けられている。さらに、重複している部分（エントリ１、２、３のＤＭＡリクエスト）については、マルチキャストフラグＭＣがＹｅｓとなっており、この部分の応答データはデバイスメモリへマルチキャストライトすることが可能となっている。そして、図７（Ａ）に示した統合アドレステーブルを参照することで、図７（Ｂ）に示すように応答データがデバイスメモリへ書き込まれる。
【００４０】
また、本実施形態では、バッファ１１０は、統合後のＤＭＡリクエストに対する応答データを保持するようにしているが、次のように追い越し不可能なＤＭＡディスクリプタ同士の重複部分でのデータ共用に用いることも可能である。例えば、１番目のＤＭＡリクエストと３番目のＤＭＡリクエストとでデータ転送元のアドレスに重複部分を有し、２番目のＤＭＡリクエストが追い越し禁止であるとする。この場合、１番目のＤＭＡリクエストの応答データをバッファ１１０に退避させておき、２番目のＤＭＡリクエストが完了し３番目のＤＭＡリクエストを実行するときに、１番目のＤＭＡリクエストと重複する部分のデータを除外してＤＭＡリクエストを発行することで余計なホストメモリへのアクセスを抑えることができる。
【００４１】
また、ホスト装置側で予めＤＭＡディスクリプタに応答データのマルチキャスト指示を記述しておき、バッファ１１０を用いることで複数のメモリコントローラ１１３に同じ応答データを一斉送信することが可能である。書き込み制御部１１１に「応答データがホスト装置の指示したマルチキャストするデータである」という情報を保持しておき、スイッチ１１２が対応するすべてのメモリコントローラにメモリライトリクエストを発行することでマルチキャストによるライト処理を実現できる。
【００４２】
図８は、本実施形態におけるＤＭＡ制御装置を有するコンピュータシステムの構成例を示す図である。ホスト装置８１０からデバイス８３０が有するＤＭＡ制御装置８３１にＤＭＡリクエストを通知することで、ＤＭＡ制御装置８３１がホストメモリコントローラ８１１にホストメモリ８２０に対するメモリリードリクエストを発行する。それに応じて、ホストメモリコントローラ８１１がホストメモリ８２０に対してリードアクセスを行い、応答データをデバイスメモリ８４０に書き込む。
【００４３】
図８に示す例では、デバイス８３０内にメモリコントローラ８３３が４個あり、それぞれに付随するデバイスメモリが４個ある。ホスト装置８１０がデバイス８３０のＤＭＡ制御装置８３１にＤＭＡリクエストを複数通知し、それぞれのＤＭＡリクエストがホストメモリ８２０の同一アドレスのデータをデバイスメモリ８４０−Ａ〜デバイスメモリ８４０−Ｄに転送する場合、本実施形態におけるＤＭＡリクエストの統合を行うことにより、４個のＤＭＡリクエストが統合され、１回のデータ転送ですべてのデバイスメモリ８４０にデータを書き込むことが可能となる。
【００４４】
なお、前述した実施形態では、ＤＭＡキュー１０１が６段の例を示したが、これに限定されず、ＤＭＡキュー１０１は仕様等に応じて何段となってもよい。また、ホスト装置とデバイスとの間のＤＭＡ転送を例に示したが、デバイス間のＤＭＡ転送やホスト装置間のＤＭＡ転送についても、同様に適用可能であり、転送効率を向上させデータ転送性能を向上させることが可能である。
【００４５】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００４６】
１００  ダイレクトメモリアクセス（ＤＭＡ）制御装置
１０１  ＤＭＡキュー
１０２  アドレス比較部
１０３  統合要求部
１０４  統合管理部
１０５  セレクタ
１０６  ＤＭＡエンジン
１０７  ホスト装置
１０８  ホストメモリ
１０９  デマルチプレクサ
１１０  バッファ
１１１  書き込み制御部
１１２  スイッチ
１１３  メモリコントローラ
【図１】
2018190277.tif 000003
【図２】
2018190277.tif 000004
【図３】
2018190277.tif 000005
【図４】
2018190277.tif 000006
【図５】
2018190277.tif 000007
【図６】
2018190277.tif 000008
【図７】
2018190277.tif 000009
【図８】
2018190277.tif 000010
【図９】
2018190277.tif 000011
【図１０】
2018190277.tif 000012