(57)【特許請求の範囲】
【請求項１】
メモリ上のデータを転送するダイレクトメモリアクセスを行うための情報であるディスクリプタを制御するディスクリプタ制御方法であって、
データの転送に前もって必要な情報である指示ディスクリプタ情報の領域を、転送したデータについて発生する情報である応答ディスクリプタ情報の領域から分離し、前記指示ディスクリプタ情報のみを２以上記憶領域に配置する指示ディスクリプタ設定ステップと、
前記指示ディスクリプタ設定ステップで前記記憶領域に配置された２以上の指示ディスクリプタ情報を、ダイレクトメモリアクセス制御装置にまとめて読み込む指示ディスクリプタ入力ステップと、
前記転送したデータについて発生した応答ディスクリプタ情報のみを２以上一括して記憶領域に書き込む応答ディスクリプタ書込ステップと、
を備えることを特徴とするディスクリプタ制御方法。
【請求項２】
前記指示ディスクリプタ設定ステップは、前記２以上の指示ディスクリプタ情報を連続する記憶領域に配置することを特徴とする請求項１に記載のディスクリプタ制御方法。
【請求項３】
前記応答ディスクリプタ書込ステップは、前記転送したデータについて発生し、前記指示ディスクリプタ情報の数とは異なる場合がある２以上の応答ディスクリプタ情報を連続する記憶領域に書き込むことを特徴とする請求項１または２に記載のディスクリプタ制御方法。
【請求項４】
データの転送に前もって必要な情報である指示ディスクリプタ情報の領域を、転送したデータについて発生する情報である応答ディスクリプタ情報の領域から分離し、前記指示ディスクリプタ情報のみを２以上記憶領域に配置する指示ディスクリプタ設定手段と、
前記指示ディスクリプタ設定手段で前記記憶領域に配置された２以上の指示ディスクリプタ情報を、ダイレクトメモリアクセス制御装置にまとめて読み込む指示ディスクリプタ入力手段と、
前記指示ディスクリプタ情報に従って転送したデータについて発生した応答ディスクリプタ情報のみを、２以上一括して記憶領域に書き込む応答ディスクリプタ書込手段と、
を備えることを特徴とするダイレクトメモリ転送装置。
【請求項５】
前記指示ディスクリプタ設定手段は、前記２以上の指示ディスクリプタ情報を連続する記憶領域に配置することを特徴とする請求項４に記載のダイレクトメモリ転送装置。
【請求項６】
前記応答ディスクリプタ書込手段は、前記転送したデータについて発生し、前記指示ディスクリプタ情報の数とは異なる場合がある２以上の応答ディスクリプタ情報を連続する記憶領域に書き込むことを特徴とする請求項４または５に記載のダイレクトメモリ転送装置。
【請求項７】
コンピュータを
データの転送に前もって必要な情報である指示ディスクリプタ情報の領域を、転送したデータについて発生する情報である応答ディスクリプタ情報の領域から分離し、前記指示ディスクリプタ情報のみを２以上記憶領域に配置する指示ディスクリプタ設定手段と、
前記指示ディスクリプタ設定手段で前記記憶領域に配置された２以上の指示ディスクリプタ情報を、ダイレクトメモリアクセス制御装置にまとめて読み込む指示ディスクリプタ入力手段と、
前記指示ディスクリプタ情報に従って転送したデータについて発生した応答ディスクリプタ情報のみを、２以上一括して記憶領域に書き込む応答ディスクリプタ書込手段
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ダイレクトメモリアクセスに用いるディスクリプタを制御するディスクリプタ制御方法、ダイレクトメモリ転送装置およびプログラムに関する。
【背景技術】
【０００２】
近年、より高速な通信が求められており、ダイレクトメモリアクセス（ＤＭＡ：Direct Memory Access。以下、ＤＭＡ転送という）の機能に加えて、ＣＰＵオフロードや信頼性向上などの付加機能が数多く考え出されている。これらの付加機能のため、ＤＭＡ転送に用いるディスクリプタ情報として様々なフィールドが追加されている。しかし、ディスクリプタのフィールド拡張を行うと、実際に通信されるデータ帯域に対して制御情報の帯域の割合が大きくなり、高速な通信を妨げてしまう。
【０００３】
ＤＭＡ転送の効率を向上するために、例えば、特許文献１の技術では、データおよびデータのＤＭＡ処理の制御に必要なディスクリプタをまとめて情報ブロックとしてメモリ上に設定して、ＤＭＡコントローラを起動する。起動されたＤＭＡコントローラは、メモリから情報ブロックを読み出してディスクリプタを抽出する。ディスクリプタをメモリに連続して配置することが、特許文献３および４にも記載されている。
【０００４】
特許文献２には、メモリ上のデータをＤＭＡにより読み出して送信する際の送信間隔を高い精度で調整することが記載されている。特許文献２の技術は、ディスクリプタには、対応するパケットのメモリにおける記録開始アドレスの上位３２ビットを示すaddress(high)および下位３２ビットを示す address(low)、並びにパケット長を示す１６ビットのlengthが記述され、さらにパケットのＤＭＡ転送の間隔を調整するための遅延時間を示すdelayが記述されている。ディスクリプタ取得部は、メモリに設けられたディスクリプタテーブルから、ディスクリプタ制御部のレジスタに記憶されている番号に対応する全てのディスクリプタを取得する。
【０００５】
また、特許文献５には、２つのプロセッサ間の通信制御方式として、コマンドやステータスデータの転送効率を向上する技術が記載されている。特許文献５の技術は、第１のプロセッサに送るべき１つ以上のステータスデータをまとめ、ステータスデータ群としてステータスキューに一度に書き込む。
【特許文献１】特開２００６−２０９４４８号公報
【特許文献２】特開２００６−２９３７９９号公報
【特許文献３】特開２００６−２９３８００号公報
【特許文献４】特開平０４−１７７４４５号公報
【特許文献５】特開平０７−１８２２７５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
関連する技術のディスクリプタ制御方法は、ディスクリプタのフィールド拡張がデータ転送性能の低下に顕著に影響してしまうものだった。また、データ転送速度の向上のために、ＣＰＵの負荷軽減なしに、送受信に共通して効果的に適用できる施策が存在しなかった。
【０００７】
関連する技術のディスクリプタ情報の構成の例を図６に示す。図６に示すディスクリプタのうち、アドレス、サイズ、追加機能が使用する領域は、ＤＭＡ転送を開始するために必要なディスクリプタ情報(以下、転送前ディスクリプタ情報と表現する)である。また、ステータスおよび追加機能が使用する領域の一部（例えば、信頼性向上のために使用する領域）は、転送処理デバイスがＤＭＡ転送を完了したのち、ＣＰＵへ報告しなければならないディスクリプタ情報(以下、転送後ディスクリプタ情報と表現する)である。関連する技術のディスクリプタ情報は、転送前ディスクリプタ情報と、転送後ディスクリプタ情報が１つのディスクリプタ領域に混在して存在している。
【０００８】
図７および図８は、関連する技術のＤＭＡ転送のシーケンスの例を示す。図７は送信シーケンスの例、図８は受信シーケンスの例である。図７および図８では、破線で囲んだシーケンスをＤＭＡ転送の数だけ繰り返す。
【０００９】
図７の送信シーケンスにおいて、図６に示すようなディスクリプタの構成であったとすると、ディスクリプタをまとめて読み出す場合に（ステップＣ１）、書き戻しのみ必要な領域（転送後ディスクリプタ情報の領域）も合わせて読み出す必要がある。そして、一連の転送を完了したのちにディスクリプタをまとめて書き戻すときに（ステップＣ２）、読み出しのみ必要な領域（転送前ディスクリプタ情報の領域）も書き戻す必要がある。
【００１０】
図８の受信シーケンスでは、ディスクリプタの書き戻し（ステップＣ３）は転送ごとに行う。データ受信のタイミングが外部デバイスに依存するので、一定数のＤＭＡ転送の受信完了をまとめる場合に、受信完了通知（ステップＣ４）が遅延する可能性がある。
【００１１】
関連する技術のディスクリプタ制御方法には、ＤＭＡ転送をより高速にする上で、いくつかの問題点がある。
【００１２】
第１の問題点は、転送処理デバイスが、転送前ディスクリプタ情報をメインメモリから取得する際に、複数のＤＭＡ転送分のディスクリプタ情報を一回のバーストリード要求によって取得するためには、不必要なディスクリプタ情報まで同時に取ってこなければならない、ということである。また、転送後ディスクリプタ情報をメインメモリへ格納する際に、複数のＤＭＡ転送分のディスクリプタ情報を一回のバーストライト要求によって格納するためには、不必要なディスクリプタ情報まで同時に書き上げなければならない、ということである。この問題が発生する原因は、ディスクリプタ情報はＤＭＡ転送を開始するために必要な情報の領域と、ＤＭＡ転送したのちに報告する情報の領域の両方を含み、転送前ディスクリプタ情報と転送後ディスクリプタ情報がメインメモリ上に混在して配置されているからである。
【００１３】
第２の問題点は、ランダムなタイミングでデータ受信またはデータ送信する場合、ＤＭＡ転送において、１つのＤＭＡ転送完了の都度、転送後ディスクリプタ情報をメインメモリに書き上げており、複数の転送分の転送後ディスクリプタ情報を同時にメインメモリに書き上げていない、ということである。この問題が発生する原因は、ＤＭＡ転送開始前に同時に用意したディスクリプタの個数によって、ＤＭＡ転送後同時に報告するディスクリプタの個数が決まってしまい、決められた個数分のデータ受信あるいは送信の完了するのを待っていると完了報告が大幅に遅延する可能性があることに起因する。
【００１４】
本発明は、上述のような事情に鑑みてなされたもので、ＣＰＵへの負荷なく、より高速なＤＭＡ転送を可能にするディスクリプタ制御方法、ダイレクトメモリ転送装置およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明の第１の観点に係るディスクリプタ制御方法は、
メモリ上のデータを転送するダイレクトメモリアクセスを行うための情報であるディスクリプタを制御するディスクリプタ制御方法であって、
データの転送に前もって必要な情報である指示ディスクリプタ情報の領域を、転送したデータについて発生する情報である応答ディスクリプタ情報の領域から分離し、前記指示ディスクリプタ情報のみを２以上記憶領域に配置する指示ディスクリプタ設定ステップと、
前記指示ディスクリプタ設定ステップで前記記憶領域に配置された２以上の指示ディスクリプタ情報を、ダイレクトメモリアクセス制御装置にまとめて読み込む指示ディスクリプタ入力ステップと、
前記転送したデータについて発生した応答ディスクリプタ情報のみを２以上一括して記憶領域に書き込む応答ディスクリプタ書込ステップと、
を備えることを特徴とする。
【００１６】
本発明の第２の観点に係るダイレクトメモリ転送装置は、
データの転送に前もって必要な情報である指示ディスクリプタ情報の領域を、転送したデータについて発生する情報である応答ディスクリプタ情報の領域から分離し、前記指示ディスクリプタ情報のみを２以上記憶領域に配置する指示ディスクリプタ設定手段と、
前記指示ディスクリプタ設定手段で前記記憶領域に配置された２以上の指示ディスクリプタ情報を、ダイレクトメモリアクセス制御装置にまとめて読み込む指示ディスクリプタ入力手段と、
前記指示ディスクリプタ情報に従って転送したデータについて発生した応答ディスクリプタ情報のみを、２以上一括して記憶領域に書き込む応答ディスクリプタ書込手段と、
を備えることを特徴とする。
【００１７】
本発明の第３の観点に係るプログラムは、コンピュータを
データの転送に前もって必要な情報である指示ディスクリプタ情報の領域を、転送したデータについて発生する情報である応答ディスクリプタ情報の領域から分離し、前記指示ディスクリプタ情報のみを２以上記憶領域に配置する指示ディスクリプタ設定手段と、
前記指示ディスクリプタ設定手段で前記記憶領域に配置された２以上の指示ディスクリプタ情報を、ダイレクトメモリアクセス制御装置にまとめて読み込む指示ディスクリプタ入力手段と、
前記指示ディスクリプタ情報に従って転送したデータについて発生した応答ディスクリプタ情報のみを、２以上一括して記憶領域に書き込む応答ディスクリプタ書込手段
として機能させることを特徴とする。
【発明の効果】
【００１８】
本発明によれば、ＤＭＡの送受信ともに共通して、制御情報の通信に必要な帯域を削減することが可能であり、実際に送受信するデータの帯域を拡大することができる。
【発明を実施するための最良の形態】
【００１９】
本発明では、ディスクリプタ情報のうち、ＤＭＡ転送を開始するために必要な情報を指示ディスクリプタ情報という。また、ＤＭＡ転送を完了したのち、ＣＰＵへ報告しなければならない情報を、応答ディスクリプタ情報という。本発明のディスクリプタ制御方法は、指示ディスクリプタ情報の領域を、応答ディスクリプタ情報の領域から分離する。そして、指示ディスクリプタ情報のみを２以上記憶領域に配置する。また、転送処理デバイスが指示ディスクリプタ情報を１転送分ずつメインメモリから読み出すのではなく、ＣＰＵが用意できている全てのディスクリプタを同時に読み出すようにする。さらに、転送処理デバイスが応答ディスクリプタ情報を１転送分ずつメインメモリに書き上げるのではなく、ある決められた時間内に発生した完了報告を同時に書き上げるようにする。
【００２０】
以下、本発明の実施の形態について図面を参照して詳細に説明する。なお、図中同一または相当部分には同一符号を付し、その説明は繰り返さない。
【００２１】
（実施の形態１）
図１は、本発明に係るダイレクトメモリ転送装置の構成例を示すブロック図である。ダイレクトメモリ転送装置１０は、ＣＰＵ１、主記憶２、外部バス接続装置３、ＩＯデバイス４、および外部デバイス６から構成される。外部バス接続装置３は、例えば、PCI Expressのルートコンプレックスである。PCI Expressのルートコンプレックスは、内部バス７と、Ｉ／ＯシリアルインターフェースであるPCI Expressバスを接続する。ＩＯデバイス４はさらにＤＭＡコントローラ５を含む。
【００２２】
ＤＭＡ転送の上位システム側はＣＰＵ１、主記憶２および外部バス接続装置３から構成される。外部バス接続装置３からＰＣＩExpressバスを経由した先にＩＯデバイス４が接続されており、そのＩＯデバイス４が外部デバイス６と通信を行う。
【００２３】
主記憶２はＲＡＭ（Random-Access Memory）等から構成され、ＤＭＡ制御用プログラム２０をロードし、ＣＰＵ１の作業領域として用いられる。主記憶２には、後述する指示ディスクリプタ領域２１および応答ディスクリプタ領域２２が配置される。
【００２４】
本発明のディスクリプタ情報は、指示ディスクリプタ情報と応答ディスクリプタ情報に分離し、それぞれ別に取り扱う。本発明のディスクリプタ情報の構成の例を図２に示す。図２（ａ）は指示ディスクリプタ領域２１の配置と構成の例を示す。図２（ｂ）は、応答ディスクリプタ領域２２の配置と構成の例を示す。指示ディスクリプタ情報をディスクリプタＡ、応答ディスクリプタ情報をディスクリプタＢとして、それぞれのディスクリプタ情報を連続あるいはチェーンされた領域として配置している。
【００２５】
実施の形態１では、ディスクリプタＡとディスクリプタＢはそれぞれ、記憶領域に独立に配置される。ディスクリプタＡは、ディスクリプタＡ＃０〜＃ｍ（ｍは０または正の整数）で構成される。ディスクリプタＢは、ディスクリプタＢ＃０〜＃ｎ（ｎは０または正の整数）で構成される。
【００２６】
ディスクリプタＡ＃ｉ（ｉは０〜ｍのいずれか）は、転送するデータのアドレスとデータサイズ、追加機能が使用する領域、およびポインタから構成される。追加機能が使用する領域は、例えば、ＣＰＵオフロードや信頼性向上のために使用する領域である。ポインタは、次のディスクリプタＡ＃ｊ（ｊ＝ｉ＋１）のアドレスを示す。
【００２７】
ディスクリプタＡはポインタによって、チェーンされている。一連の最後のディスクリプタは、ポインタが例えば先頭のディスクリプタＡ＃０のアドレスまたは終端記号（例えばｎｕｌｌ）である。図２（ａ）では、たまたまディスクリプタＡ＃２とディスクリプタＡ＃３が連続して配置されているが、ディスクリプタＡ＃ｉ同士は、別々に配置されて構わない。ディスクリプタＡを読み込むＩＯデバイス４は、ディスクリプタＡのポインタをたどって、主記憶２に配置されたディスクリプタＡを次々と一括して読み込むことができる。
【００２８】
ディスクリプタＢ＃ｉ（ｉは０〜ｎのいずれか）は、データを転送した結果のステータスと、追加機能が使用する領域、およびポインタから構成される。追加機能が使用する領域は、例えば、ＣＰＵオフロードや信頼性向上のために使用する領域である。ポインタは、次のディスクリプタＢ＃ｊ（ｊ＝ｉ＋１）のアドレスを示す。
【００２９】
ディスクリプタＢはポインタによって、チェーンされている。一連の最後のディスクリプタＢはポインタが、例えば、先頭のディスクリプタＢ＃０のアドレスまたは終端記号（例えばｎｕｌｌ）である。図２（ｂ）では、たまたまディスクリプタＢ＃１とディスクリプタＢ＃２が連続して配置されているが、ディスクリプタＢ＃ｉ同士は、別々に配置されて構わない。ディスクリプタＢを読み込むＣＰＵ１は、ディスクリプタＢのポインタをたどって、主記憶２に配置されたディスクリプタＢを次々と一括して読み込むことができる。
【００３０】
図３は、本実施の形態に係るＤＭＡ転送の動作の一例を示すシーケンス図である。まず、ＣＰＵ１は主記憶２上に複数の転送分のディスクリプタＡを用意する（ステップＳ１）。そして、準備完了をＩＯデバイス４へ通知する（ステップＳ２）。準備完了通知には、ディスクリプタＡの先頭（図２（ａ）のディスクリプタＡ＃０）のアドレスが含まれる。
【００３１】
ＩＯデバイス４は、読み出す必要がある指示ディスクリプタ領域２１に対してのみ、主記憶２へリード要求を行い（ステップＳ３）、指示ディスクリプタ情報を取得する（ステップＳ４）。図３では、チェーンされた指示ディスクリプタすべてを読み込むことを、複数の線で表しているが、チェーンされた指示ディスクリプタは連続して読み込まれる。
【００３２】
ＩＯデバイス４は、外部のデバイスとデータの転送を繰り返す（ステップＳ５）。この間、ＣＰＵ１は新たに用意した指示ディスクリプタ情報をＩＯデバイス４に通知することができる。一方、ＩＯデバイス４は最初の受信が完了してから、タイマのカウントを始める。タイマがタイムアウトしたタイミングで、それまでに行った転送のステータスやその他必要な情報をまとめて主記憶２へ書き込む（ステップＳ６）。その後、ＣＰＵ１に対して受信完了通知を行う（ステップＳ７）。
【００３３】
従って、一度に読み込んだ指示ディスクリプタ情報の個数と、受信完了通知を行ったときの応答ディスクリプタ情報の個数は異なる場合がある。指示ディスクリプタ情報の書込と、応答ディスクリプタ情報の書込は同期させる必要がなく、独立して行うことができる。
【００３４】
以上のように、本実施の形態によれば、ＤＭＡの送受信ともに共通して、制御情報の通信に必要な帯域を削減することが可能であり、実際に送受信するデータの帯域を拡大することができる。
【００３５】
また、ＣＰＵの一度に準備するディスクリプタの数に依らず、自由に送受信の完了報告をまとめて行うことができる。更に、タイマのカウント閾値を変動させることによってシステムの動作を考慮した転送速度のチューニングを行うことができる。
【００３６】
（実施の形態２）
図４は、本発明に係るディスクリプタ情報の構成例を示す図である。実施の形態２では、実施の形態１と同様のダイレクトメモリ転送装置１０の構成例を用いて、指示ディスクリプタ情報および応答ディスクリプタ情報をそれぞれ連続して配置する。
【００３７】
図４（ａ）は指示ディスクリプタ領域２１の配置と構成の例を示す。図４（ｂ）は、応答ディスクリプタ領域２２の配置と構成の例を示す。指示ディスクリプタ情報をディスクリプタＡ、応答ディスクリプタ情報をディスクリプタＢとして、それぞれのディスクリプタ情報を連続して配置している。
【００３８】
実施の形態２では、ディスクリプタＡとディスクリプタＢはそれぞれ、記憶領域に連続して配置される。ディスクリプタＡは、ディスクリプタＡ＃０〜＃ｍ（ｍは０または正の整数）で構成される。ディスクリプタＢは、ディスクリプタＢ＃０〜＃ｎ（ｎは０または正の整数）で構成される。
【００３９】
ディスクリプタＡ＃ｉ（ｉは０〜ｍのいずれか）は、転送するデータのアドレスとデータサイズ、追加機能が使用する領域から構成される。追加機能が使用する領域は、例えば、ＣＰＵオフロードや信頼性向上のために使用する領域である。実施の形態１と異なり連続した領域に配置するため、ディスクリプタＡ＃ｉにポインタはない。
【００４０】
ディスクリプタＡは連続領域に配置している。ディスクリプタＡを読み込むＩＯデバイス４は、先頭のディスクリプタＡ＃０から順に主記憶２に配置されたディスクリプタＡを一括して読み込む。ポインタをたどってディスクリプタＡを読み出す必要がないので、読み込み時間を短縮することができる。
【００４１】
ディスクリプタＢ＃ｉ（ｉは０〜ｎのいずれか）は、データを転送した結果のステータスと、追加機能が使用する領域から構成される。追加機能が使用する領域は、例えば、ＣＰＵオフロードや信頼性向上のために使用する領域である。実施の形態１と異なり連続した領域に配置するため、ディスクリプタＢ＃ｉにポインタはない。
【００４２】
ディスクリプタＢは連続領域に配置している。ディスクリプタＢを読み込むＣＰＵ１は、先頭のディスクリプタＢ＃０から順に主記憶２に配置されたディスクリプタＢを一括して読み込む。ポインタをたどってディスクリプタＢを読み出す必要がないので、読み込み時間を短縮することができる。
【００４３】
図５は、本実施の形態に係るＤＭＡ転送の動作の一例を示すシーケンス図である。図５のシーケンス図は、実施の形態１と同様のステップに同じ符号を付している。実施の形態１と異なるのは、主に、ステップＴ４およびステップＴ６である。
【００４４】
まず、ＣＰＵ１は主記憶２上に複数の転送分のディスクリプタＡを用意する（ステップＳ１）。そして、準備完了をＩＯデバイス４へ通知する（ステップＳ２）。準備完了通知には、ディスクリプタＡの先頭（図４（ａ）のディスクリプタＡ＃０）のアドレスと、指示ディスクリプタ情報のデータ量または個数が含まれる。あるいは、一連のディスクリプタＡの最後に終端記号（例えばｎｕｌｌ）などを付加して、データの末尾を表してもよい。
【００４５】
ＩＯデバイス４は、読み出す必要がある指示ディスクリプタ領域２１に対してのみ、主記憶２へリード要求を行い（ステップＳ３）、指示ディスクリプタ情報を取得する（ステップＴ４）。図５では、連続領域に配置した指示ディスクリプタすべてを連続して読み込むことを、中抜き太線で表している。
【００４６】
ＩＯデバイス４は、外部のデバイスとデータの転送を繰り返す（ステップＳ５）。この間、ＣＰＵ１は新たに用意した指示ディスクリプタ情報をＩＯデバイス４に通知することができる。一方、ＩＯデバイス４は最初の受信が完了してから、タイマのカウントを始める。タイマがタイムアウトしたタイミングで、それまでに行った転送のステータスやその他必要な情報をまとめて主記憶２へ書き込む（ステップＴ６）。その後、ＣＰＵ１に対して受信完了通知を行う（ステップＳ７）。図５では、連続領域に配置した応答ディスクリプタすべてを連続して書き込むことを、中抜き太線で表している。
【００４７】
実施の形態２においても、一度に読み込んだ指示ディスクリプタ情報の個数と、受信完了通知を行ったときの応答ディスクリプタ情報の個数は異なる場合がある。指示ディスクリプタ情報の書込と、応答ディスクリプタ情報の書込は同期させる必要がなく、独立して行うことができる。
【００４８】
以上説明したとおり、実施の形態２によれば、実施の形態１と異なり、ポインタ情報の取得とポインタをたどって、主記憶２に配置された次のディスクリプタを探す処理が不要となる。ＤＭＡの送受信ともに共通して、制御情報の通信に必要な帯域を削減することが可能であり、実際に送受信するデータの帯域を拡大することができる。
【００４９】
また、実施の形態２は、実施の形態１と同様に、ＣＰＵの一度に準備するディスクリプタの数に依らず、自由に送受信の完了報告をまとめて行うことができる。しかも、ポインタ情報の取得とポインタをたどって、主記憶２に配置された次のディスクリプタを探す処理が不要となるため、ＤＭＡ転送に要する時間をさらに短縮することができる。また、タイマのカウント閾値を変動させることによってシステムの動作を考慮した転送速度のチューニングを行うことができる。
【００５０】
以上のように、本発明のダイレクトメモリ転送装置１０によれば、ＣＰＵへの負荷なく、高速なＤＭＡ転送を行うことができる。
【００５１】
その他、本発明の好適な変形として、以下の構成が含まれる。
【００５２】
本発明の第１の観点に係るディスクリプタ制御方法について、
好ましくは、前記指示ディスクリプタ設定ステップは、前記２以上の指示ディスクリプタ情報を連続する記憶領域に配置することを特徴とする。
【００５３】
好ましくは、前記応答ディスクリプタ書込ステップは、前記転送したデータについて発生する２以上の応答ディスクリプタ情報を連続する記憶領域に書き込むことを特徴とする。
【００５４】
本発明の第２の観点に係るダイレクトメモリ転送装置について、
好ましくは、前記指示ディスクリプタ設定手段は、前記指示ディスクリプタ情報を連続する記憶領域に配置することを特徴とする。
【００５５】
好ましくは、前記応答ディスクリプタ書込手段は、前記転送したデータについて発生する応答ディスクリプタ情報を連続する記憶領域に書き込むことを特徴とする。
【００５６】
以上説明したように、本発明においては、ＤＭＡの送受信ともに共通して、制御情報の通信に必要な帯域を削減することが可能であり、実際に送受信するデータの帯域を拡大することができる。また、ＣＰＵの一度に準備するディスクリプタの数に依らず、自由に送受信の完了報告をまとめて行うことができる。更に、タイマのカウント閾値を変動させることによってシステムの動作を考慮した転送速度のチューニングを行うことができる。
【００５７】
その他、前記のハードウエア構成やフローチャートは一例であり、任意に変更及び修正が可能である。
【００５８】
ＣＰＵ１、主記憶部２、ＩＯデバイス４、および内部バス７などから構成される構成変更判定処理または設定流用処理を行う中心となる部分は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。たとえば、前記の動作を実行するためのコンピュータプログラムを、コンピュータが読み取り可能な記録媒体（フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等）に格納して配布し、当該コンピュータプログラムをコンピュータにインストールすることにより、前記の処理を実行するダイレクトメモリ転送装置を構成してもよい。また、インターネット等の通信ネットワーク上のサーバ装置が有する記憶装置に当該コンピュータプログラムを格納しておき、通常のコンピュータシステムがダウンロード等することでダイレクトメモリ転送装置を構成してもよい。
【００５９】
また、ダイレクトメモリ転送装置の機能を、ＯＳ（オペレーティングシステム）とアプリケーションプログラムの分担、またはＯＳとアプリケーションプログラムとの協働により実現する場合などには、アプリケーションプログラム部分のみを記録媒体や記憶装置に格納してもよい。
【００６０】
また、搬送波にコンピュータプログラムを重畳し、通信ネットワークを介して配信することも可能である。たとえば、通信ネットワーク上の掲示板(BBS, Bulletin Board System)に前記コンピュータプログラムを掲示し、ネットワークを介して前記コンピュータプログラムを配信してもよい。そして、このコンピュータプログラムを起動し、ＯＳの制御下で、他のアプリケーションプログラムと同様に実行することにより、前記の処理を実行できるように構成してもよい。
【図面の簡単な説明】
【００６１】
【図１】本発明の実施の形態１に係るダイレクトメモリ転送装置の構成例を示すブロック図である。
【図２】実施の形態１に係るディスクリプタ情報の構成の一例を示す図である。
【図３】実施の形態１に係るＤＭＡ転送の動作の一例を示すシーケンス図である。
【図４】本発明の実施の形態２に係るディスクリプタ情報の構成の一例を示す図である。
【図５】実施の形態２に係るＤＭＡ転送の動作の一例を示すシーケンス図である。
【図６】一般的なディスクリプタ情報の構成の一例を示す図である。
【図７】一般的なＤＭＡ転送の送信動作の一例を示すシーケンス図である。
【図８】一般的なＤＭＡ転送の受信動作の一例を示すシーケンス図である。
【符号の説明】
【００６２】
１  ＣＰＵ
２  主記憶
３  外部バス接続装置
４  ＩＯデバイス
５  ＤＭＡコントローラ
６  外部デバイス
７  内部バス
１０  ダイレクトメモリ転送装置
２０  ＤＭＡ制御用プログラム
２１  指示ディスクリプタ領域
２２  応答ディスクリプタ領域
【図１】
0004839489.tif 000002
【図２】
0004839489.tif 000003
【図３】
0004839489.tif 000004
【図４】
0004839489.tif 000005
【図５】
0004839489.tif 000006
【図６】
0004839489.tif 000007
【図７】
0004839489.tif 000008
【図８】
0004839489.tif 000009