(57)【要約】【課題】ハードウェアの規模をあまり増大させずに、ＤＭＡエンジン数や転送データ数を増加することが可能なＤＭＡデータ転送装置を提供する。【解決手段】ＤＭＡデータ転送装置は、メモリ１３又は３０と、通信コントローラ１５と、各々がメモリ１３又は３０から通信コントローラ１５へのＤＭＡによるデータ転送を行う複数のＤＭＡエンジン１２０を備えるＤＭＡコントローラ１２と、ＤＭＡ制御部１１とを備える。ＤＭＡ制御部１１は、ＤＭＡエンジン１２０が転送可能なサイズになるように転送データの分割サイズを決定し、ＤＭＡコントローラ１２にＤＭＡによるデータ転送の指示を出し、ＤＭＡによるデータ転送を制御する。ＤＭＡ制御部１１は、データ転送の終了を判断するための判断情報を、通信コントローラ１５に送る。通信コントローラ１５は、ＤＭＡ制御部１１から送られた判断情報に基づいて、データ転送の終了判定を行う。【選択図】図２
2007233522.tif 000002
【特許請求の範囲】
【請求項１】
データの転送元であるメモリと、
データの転送先である転送先デバイスと、
各々が前記メモリから前記転送先デバイスへのＤＭＡによるデータ転送を行う複数のＤＭＡエンジンを備えるＤＭＡコントローラと、
前記ＤＭＡコントローラの前記複数のＤＭＡエンジンに対して、ＤＭＡによるデータ転送を指示するＤＭＡ制御部とを備え、
前記ＤＭＡ制御部が、転送すべきデータについて、そのデータ転送の終了を判断するための判断情報を前記転送先デバイスに送り、
前記転送先デバイスが、前記ＤＭＡ制御部から送られた前記判断情報に基づいて、前記転送すべきデータについて、そのデータ転送の終了判定を行う
ことを特徴とするＤＭＡデータ転送装置。
【請求項２】
請求項１に記載のＤＭＡデータ転送装置において、
前記ＤＭＡ制御部が、前記転送すべきデータを転送するために必要な転送回数である全データ転送回数が確定した後に、当該確定の結果に基づいて生成した前記判断情報を前記転送先デバイスに送る
ことを特徴とするＤＭＡデータ転送装置。
【請求項３】
請求項１に記載のＤＭＡデータ転送装置において、
前記判断情報が、前記転送すべきデータを転送するために必要な転送回数である全データ転送回数からなり、
前記転送先デバイスが、前記転送すべきデータについて終了したデータ転送の回数をカウントするデータ転送回数カウンタと、前記全データ転送回数を保持する全データ転送回数保持部とを備え、前記データ転送回数カウンタの値が前記全データ転送回数に達した場合、前記転送すべきデータのデータ転送が終了したものと判断する
ことを特徴とするＤＭＡデータ転送装置。
【請求項４】
請求項１に記載のＤＭＡデータ転送装置において、
前記転送先デバイスが、前記転送すべきデータについて終了したデータ転送の回数をカウントするデータ転送回数カウンタを備え、
前記判断情報が、前記データ転送回数カウンタがカウント可能な最大値であるカウンタＭＡＸ値から、前記転送すべきデータを転送するために必要な転送回数である全データ転送回数を引いた値であるデータ転送回数不足値からなり、
前記転送先デバイスが、前記データ転送回数不足値を前記データ転送回数カウンタの値に加算し、前記データ転送回数カウンタの値が前記カウンタＭＡＸ値に達した場合、前記転送すべきデータのデータ転送が終了したものと判断する
ことを特徴とするＤＭＡデータ転送装置。
【請求項５】
請求項１に記載のＤＭＡデータ転送装置において、
前記メモリが、ユーザにより作成されたデータが記憶された第１のメモリと、予めその内容が定められたデータが記憶された第２のメモリとを含み、
前記第２のメモリが、前記第１のメモリよりも、前記ＤＭＡ制御部に近い位置に設けられる
ことを特徴とするＤＭＡデータ転送装置。
【請求項６】
各々がメモリから転送先デバイスへのデータ転送を行う複数のＤＭＡエンジンを備えるＤＭＡコントローラと、前記ＤＭＡコントローラの前記複数のＤＭＡエンジンに対してＤＭＡによるデータ転送を指示するＤＭＡ制御部とを備えるＤＭＡデータ転送装置におけるＤＭＡデータ転送方法であって、
前記ＤＭＡ制御部が、前記複数のＤＭＡエンジンが転送可能なサイズになるように転送すべきデータの分割サイズを決定し、前記ＤＭＡコントローラの前記複数のＤＭＡエンジンに対してＤＭＡによるデータ転送を指示し、
前記ＤＭＡコントローラの前記複数のＤＭＡエンジンが、前記ＤＭＡ制御部の指示に従って、前記転送すべきデータを分割して前記転送デバイスに転送し、
前記ＤＭＡ制御部が、前記転送すべきデータについて、そのデータ転送の終了を判断するための判断情報を、前記転送先デバイスに送り、
前記転送先デバイスが、前記ＤＭＡ制御部から送られた前記判断情報に基づいて、前記転送すべきデータについて、そのデータ転送の終了判定を行う
ことを特徴とするＤＭＡデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＭＡデータ転送装置及びＤＭＡデータ転送方法に関し、特に、多重にＤＭＡデータ転送を行う場合においてＤＭＡデータ転送の終了判定を転送先デバイスで行うＤＭＡデータ転送装置及びＤＭＡデータ転送方法に関する。
【背景技術】
【０００２】
ＤＭＡ（ダイレクトメモリアクセス）によれば、ＣＰＵの介在なしにデータ転送を行うことができる。このため、メモリとデバイスとの間においてデータ転送中であっても、ＣＰＵが他の処理を並行して行うことができ、システムとして処理能力が増大する。近年、メモリの帯域幅（メモリのデータ転送能力）が増大し、また、データ通信の分野においても１０Ｇｂｉｔイーサネット（登録商標）などのようにデバイスの帯域幅が増大しているため、ＤＭＡについても高性能化が要望されている。
【０００３】
例えば、複数のメモリの間でのＤＭＡデータ転送を転送回数パラメータによって連続で実行することにより、高速で複数のメモリの間でのデータ転送を行うことが知られている（下記特許文献１参照）。
【０００４】
また、例えば、アドレスを保持する一群のレジスタを削減することにより、ＤＭＡコントローラの消費電力を低減させることが知られている（下記特許文献２参照）。
【特許文献１】特開平４−２３６６４９号公報
【特許文献２】特開２００３−３１６７２２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ＤＭＡにおいて、サイズの大きなデータの転送を行う場合がある。この場合、ＣＰＵが、当該データをＤＭＡコントローラが転送可能なサイズのブロックデータに分割し、ＤＭＡコントローラに対してデータ転送命令を連続して発行する必要がある。この時、転送データの転送元が仮想アドレスでマッピングされている場合、１個のブロックデータが仮想アドレスのページの境界に跨がらないように、分割しなければならない。
【０００６】
また、ＣＰＵ自身も、マルチスレッドを用いた処理において、複数のＤＭＡ命令発行処理を時分割で実行している。この結果、ＣＰＵが、ＤＭＡコントローラに対して、転送データが異なる複数の（多重の）ＤＭＡ要求を発行することになる。
【０００７】
以上のように、ＤＭＡコントローラは、ＤＭＡエンジンの数を増やし、並行して行うデータ転送の数（データ転送の多重度）を増やし、これらを誤りなく管理しなければ、その高性能化を図ることができない。そこで、本発明者は、図８〜図１１に示すＤＭＡデータ転送装置２００について検討した。このＤＭＡデータ転送装置２００におけるＤＭＡデータ転送について、簡単に説明する。
【０００８】
図８は本発明の背景となったＤＭＡデータ転送装置２００の構成図である。図９は図８のＤＭＡデータ転送装置におけるＤＭＡデータ転送の動作シーケンスである。
【０００９】
以下においては、１つの転送データＡに着目して説明する。複数の転送データが存在する場合、以下に説明するＤＭＡデータ転送が複数の転送データについて並行に行われる。以下の説明において、ＤＭＡエンジン２２１によって転送される分割されたデータを、ブロックデータと呼ぶ。Ａ１、Ａ２、... 、Ａｍ（１〜ｍは正の整数、以下において同じ）は、各々、ブロックデータであり、数字が小さいものほど転送データの先頭に近いブロックデータであることを示す。図９において、メモリコントローラ２３０から各々のＤＭＡエンジン２２１へのデータ読み出しは省略されている。
【００１０】
ＣＰＵ２１０は、まだデータ転送が割り当てられていないＤＭＡエンジン２２１にブロックデータＡ１の転送命令（ＤＭＡデータ転送要求）を出す（ステップＳ１００）。Ａ１の転送命令を受けたＤＭＡエンジン２２１は、転送先デバイス２４０にＡ１のデータ転送を行う（ステップＳ１０１）。この後、ＣＰＵ２１０は、ステップＳ１００と同様にして、Ａ２の転送命令を出し（ステップＳ１０２）、この転送命令を受けたＤＭＡエンジン２２１は、ステップＳ１０１と同様にして、Ａ２のデータ転送を行う（ステップＳ１０３）。そして、ブロックデータＡ１又はＡ２のデータ転送が終了したＤＭＡエンジン２２１は、各々、送信チェック処理部２２２に対して、転送終了通知を出す（ステップＳ１０４、ステップＳ１０５）。
【００１１】
以上のようにしてブロックデータの転送処理が進行する。そして、ＣＰＵ２１０は、ステップＳ１００と同様にして、最終ブロックデータＡｍの１個前のブロックデータＡｍ−１の転送命令を出し（ステップＳ１０６）、Ａｍ−１のデータ転送が行われる（ステップＳ１０７）。更に、ＣＰＵ２１０は、ステップＳ１００と同様にして、最終ブロックデータＡｍの転送命令を出し（ステップＳ１０８）、Ａｍのデータ転送が行われる（ステップＳ１０９）。この時、ステップＳ１０８において、ＣＰＵ２１０は、Ａｍのデータ転送を行うＤＭＡエンジン２２１に対して、Ａｍが最終ブロックデータである旨を通知する。
【００１２】
例えば、最終ブロックデータＡｍのデータサイズが１つ前のブロックデータＡｍ−１より小さいため、図９に示すように、Ａｍ−１より先にＡｍのデータ転送が終了する場合がある。このため、Ａｍ−１のデータ転送が終了するより先に、Ａｍのデータ転送を行うＤＭＡエンジン２２１が、Ａｍのデータ転送を終了して、送信チェック処理部２２２に対して最終ブロックデータ転送終了通知を出す（ステップＳ１１０）。この後、Ａｍ−１のデータ転送を行うＤＭＡエンジン２２１が、Ａｍ−１のデータ転送を終了して、送信チェック処理部２２２に対してＡｍ−１の転送終了通知を出す（ステップＳ１１１）。
【００１３】
送信チェック処理部２２２は、Ａｍを転送したＤＭＡエンジン２２１から最終ブロックデータ転送終了通知を受信し、更に、Ａｍ−１の転送終了通知の受信により全てのブロックデータの転送が終了したことを確認し、この後、転送先デバイス２４０に対して、転送データＡの全データ転送終了通知を出す（ステップＳ１１２）。転送先デバイス２４０は、データバッファ２４１を備え、これに受信したブロックデータＡ１〜Ａｍを格納する。転送先デバイス２４０は、送信チェック処理部２２２から全データ転送終了通知を受けた場合、転送データＡのデータ転送が終了したものと判定し、他の処理を行う。
【００１４】
以上のようなＤＭＡデータ転送を行うために、送信チェック処理部２２２は、図１０に示すように、ＤＭＡ転送制御部２２３と共に、ＤＭＡ転送管理テーブル２２４を備える必要がある。ＤＭＡ転送管理テーブル２２４は、図１１に示すように、転送データ数×ＤＭＡエンジン数のマトリクス状の管理領域を持ち、また、転送データ毎に最終ブロックデータ転送フラグを持つ。管理領域のマトリクスの各々において、“未割り当て”又は“転送中”の状態が記録される。最終ブロックデータ転送フラグは、ＤＭＡ転送制御部２２３が最終ブロックデータの転送を処理したＤＭＡエンジン２２１から最終ブロックデータ転送終了通知を受けた場合にセットされる。
【００１５】
送信チェック処理部２２２では、ＤＭＡ転送制御部２２３がＤＭＡ転送管理テーブル２２４の更新処理を行う。即ち、ＣＰＵ２１０からのデータ転送指示によって、転送に携わるＤＭＡエンジン２２１の割り当てが行われた場合、ＤＭＡ転送管理テーブル２２４の該当するマトリクスの部分の状態が、“未割り当て”から“転送中”に変更される。ブロックデータの転送が終了したＤＭＡエンジン２２１の解放が行われた場合、ＤＭＡ転送管理テーブル２２４の該当するマトリクスの部分の状態が、“転送中”から“未割り当て”に変更される。最終ブロックデータを転送したＤＭＡエンジン２２１から最終ブロックデータ転送終了通知を受信した場合、ＤＭＡ転送管理テーブル２２４の該当する転送データの最終ブロックデータ転送フラグが“１”に変更される。
【００１６】
ＤＭＡ転送制御部２２３は、ＤＭＡ転送管理テーブル２２４の各々の転送データの最終ブロックデータ転送フラグが“１”であるかをチェックする。ＤＭＡ転送制御部２２３は、最終ブロックデータ転送フラグが“１”である転送データについて、その状態が“転送中”であるＤＭＡエンジン２２１が存在しなければ、該当転送データの全データ転送終了通知を転送先デバイス２４０に出す。
【００１７】
本発明者が、図８〜図１１に示すＤＭＡデータ転送装置について更に検討したところ、ＤＭＡコントローラ２２０の性能を上げようとすると、送信チェック処理部２２２において、次のような問題が生じることが判った。
【００１８】
転送に携わっている全てのＤＭＡエンジン２２１について、転送先デバイス２４０へのブロックデータの転送が終了したかをチェックする必要がある。このため、ＤＭＡエンジン２２１の多重度を上げる（数を増やす）と、ＤＭＡ転送管理テーブル２２４においてＤＭＡエンジン数のエントリ、即ち、その列が増加する。
【００１９】
また、同時により多くの転送データを処理しようとすると、ＤＭＡ転送管理テーブル２２４において転送データ数のエントリ、即ち、その行が増加する。これは、転送データの数が多くそれらの転送データを動的に管理している場合、転送データの管理エントリを全て使用している状態では、たとえＤＭＡエンジン２２１に空きがであっても、すぐにデータ転送処理を行うことはできないからである。
【００２０】
また、ＤＭＡエンジン数や同時に処理することができる転送データの数を増加させると、これに付随する処理も増加してしまう。即ち、既に転送の終了しているＤＭＡエンジン２２１を次の転送に割り当てるための資源の獲得／解放処理等が、ＤＭＡエンジン数×転送データ数に比例して増加する。このため、回路が複雑になってしまう。
【００２１】
更に、ＤＭＡの性能向上のためには、ＤＭＡエンジン数と転送データ数とのバランスが取れた増加が必要になる。しかし、ＤＭＡエンジン数と転送データ数の増加によってＤＭＡデータ転送の性能向上を図ると、前述のように、ＤＭＡデータ転送回路の規模が増大し、複雑になってしまう。
【００２２】
本発明は、ハードウェアの規模をあまり増大させずに、ＤＭＡエンジン数や転送データ数を増加することが可能なＤＭＡデータ転送装置を提供することを目的とする。
【００２３】
また、本発明は、ハードウェアの規模をあまり増大させずに、ＤＭＡエンジン数や転送データ数を増加することが可能なＤＭＡデータ転送方法を提供することを目的とする。
【課題を解決するための手段】
【００２４】
本発明のＤＭＡデータ転送装置は、データの転送元であるメモリと、データの転送先である転送先デバイスと、各々が前記メモリから前記転送先デバイスへのＤＭＡによるデータ転送を行う複数のＤＭＡエンジンを備えるＤＭＡコントローラと、前記ＤＭＡコントローラの前記複数のＤＭＡエンジンに対して、ＤＭＡによるデータ転送を指示するＤＭＡ制御部とを備える。前記ＤＭＡ制御部が、転送すべきデータについて、そのデータ転送の終了を判断するための判断情報を前記転送先デバイスに送る。前記転送先デバイスが、前記ＤＭＡ制御部から送られた前記判断情報に基づいて、前記転送すべきデータについて、そのデータ転送の終了判定を行う。
【００２５】
また、好ましくは、本発明のＤＭＡデータ転送装置において、前記ＤＭＡ制御部が、前記転送すべきデータを転送するために必要な転送回数である全データ転送回数が確定した後に、当該確定の結果に基づいて生成した前記判断情報を前記転送先デバイスに送る。
【００２６】
また、好ましくは、本発明のＤＭＡデータ転送装置において、前記判断情報が、前記転送すべきデータを転送するために必要な転送回数である全データ転送回数からなり、前記転送先デバイスが、前記転送すべきデータについて終了したデータ転送の回数をカウントするデータ転送回数カウンタと、前記全データ転送回数を保持する全データ転送回数保持部とを備え、前記データ転送回数カウンタの値が前記全データ転送回数に達した場合、前記転送すべきデータのデータ転送が終了したものと判断する。
【００２７】
また、好ましくは、本発明のＤＭＡデータ転送装置において、前記転送先デバイスが、前記転送すべきデータについて終了したデータ転送の回数をカウントするデータ転送回数カウンタを備え、前記判断情報が、前記データ転送回数カウンタがカウント可能な最大値であるカウンタＭＡＸ値から、前記転送すべきデータを転送するために必要な転送回数である全データ転送回数を引いた値であるデータ転送回数不足値からなり、前記転送先デバイスが、前記データ転送回数不足値を前記データ転送回数カウンタの値に加算し、前記データ転送回数カウンタの値が前記カウンタＭＡＸ値に達した場合、前記転送すべきデータのデータ転送が終了したものと判断する。
【００２８】
また、好ましくは、本発明のＤＭＡデータ転送装置において、前記メモリが、ユーザにより作成されたデータが記憶された第１のメモリと、予めその内容が定められたデータが記憶された第２のメモリとを含み、前記第２のメモリが、前記第１のメモリよりも前記ＤＭＡ制御部に近い位置に設けられる。
【００２９】
本発明のＤＭＡデータ転送方法は、各々がメモリから転送先デバイスへのデータ転送を行う複数のＤＭＡエンジンを備えるＤＭＡコントローラと、前記ＤＭＡコントローラの前記複数のＤＭＡエンジンに対してＤＭＡによるデータ転送を指示するＤＭＡ制御部とを備えるＤＭＡデータ転送装置におけるＤＭＡ転送方法である。このＤＭＡ転送方法は、前記ＤＭＡ制御部が、前記複数のＤＭＡエンジンが転送可能なサイズになるように転送すべきデータの分割サイズを決定し、前記ＤＭＡコントローラの前記複数のＤＭＡエンジンに対してＤＭＡによるデータ転送を指示し、前記ＤＭＡコントローラの前記複数のＤＭＡエンジンが、前記ＤＭＡ制御部の指示に従って、前記転送すべきデータを分割して前記転送デバイスに転送し、前記ＤＭＡ制御部が、前記転送すべきデータについて、そのデータ転送の終了を判断するための判断情報を、前記転送先デバイスに送り、前記転送先デバイスが、前記ＤＭＡ制御部から送られた前記判断情報に基づいて、前記転送すべきデータについて、そのデータ転送の終了判定を行う。
【発明の効果】
【００３０】
本発明のＤＭＡデータ転送装置及びＤＭＡデータ転送方法によれば、転送先デバイスがＤＭＡ制御部から送られた判断情報に基づいてデータ転送の終了判定を行う。即ち、本発明においては、転送先デバイスがデータ転送の終了を判定する機能を備える。これにより、ＤＭＡコントローラがデータ転送の終了を判定するための回路（例えば、図８及び図１０に示す送信チェック処理部２２２）を不要とすることができる。従って、ＤＭＡコントローラにおいてＤＭＡデータ転送の性能を向上させるためにＤＭＡエンジンの多重度を上げる場合、ＤＭＡエンジンを増設するだけでよく、これ以外のハードウェアの増加は発生しない。更に、転送データ数が増えても、転送先デバイスにおいてデータ転送の終了を判定する機能を増設するだけでよく、これ以外のハードウェアの増加は発生しない。従って、例えばＤＭＡエンジン数×転送データ数のＤＭＡ転送管理テーブルを用意する必要はなく、回路の規模を極めて小さくすることができる。
【００３１】
また、本発明のＤＭＡデータ転送装置の一実施態様によれば、ＤＭＡ制御部が全データ転送回数に基づいて生成した判断情報を転送先デバイスに送る。これにより、転送先デバイスは、データ転送の終了前に判断情報を受け取り、データ転送の終了を正確に判断することができる。
【００３２】
また、本発明のＤＭＡデータ転送装置の一実施態様によれば、判断情報が全データ転送回数からなるので、データ転送の回数をカウントするのみでデータ転送が終了したことを判断することができる。これにより、転送先デバイスは、特に複雑な回路や処理を必要とすることなく、容易にデータ転送の終了を判断することができる。
【００３３】
また、本発明のＤＭＡデータ転送装置の一実施態様によれば、判断情報がデータ転送回数不足値からなるので、データ転送回数カウンタの値がカウンタＭＡＸ値に達した場合、データ転送が終了したものと判断することができる。これにより、全データ転送回数を保持する必要がないため、転送先デバイスにおける回路をより一層簡単な構成とすることができる。
【００３４】
また、本発明のＤＭＡデータ転送装置の一実施態様によれば、第２のメモリが第１のメモリよりもＤＭＡ制御部に近い位置に設けられる。これにより、ヘッダ情報などの予めその内容が定められたデータの転送時間を削減することができる。
【発明を実施するための最良の形態】
【００３５】
図１及び図２は、本発明の一実施形態によるＤＭＡデータ転送装置の構成図であり、併せて本発明の一実施形態によるＤＭＡデータ転送装置の構成を示す。特に、図１は本発明に従う情報処理装置の構成例を示し、図２は本発明に従う通信制御カードの構成例を示す図である。
【００３６】
図１において、情報処理装置１は、例えばそれ自体で独立して動作するコンピュータであり、ＣＰＵ（中央演算処理装置）２０、メモリ３０、第１ホストコントローラ４０、拡張スロット５０を備える。拡張スロット５０は、少なくとも１個設けられ、図示しないが、複数備えることができる。ＣＰＵ２０は、情報処理装置１の全体の制御／演算を行う。メモリ（第１のメモリ）３０は、例えば外部記憶装置からなり、例えばユーザにより作成された種々のデータ（又は大容量のデータ）を記憶する。メモリ３０はＤＭＡによるデータ転送の転送元となる。第１ホストコントローラ４０は、ＣＰＵ２０、メモリ３０、拡張スロット５０（従って、通信制御カード１０）に接続され、これらの間での通信を行う。拡張スロット５０は、情報処理装置１に種々の機能を付加するために、当該機能を実現するデバイスを接続するためのスロットであり、種々の拡張カード（又は、拡張ボード）を搭載する。
【００３７】
この例において、拡張カードの例として、ＤＭＡデータ転送機能をもつ通信制御カード１０が搭載される。通信制御カード１０は、接続配線や光ファイバーなどの通信媒体４を介して、例えば情報処理装置１の外部の通信スイッチ２に接続される。情報処理装置１は、通信スイッチ２を介して、他の情報処理装置３と接続される。又は、通信制御カード１０が、図１に点線で示すように、直接、他の情報処理装置３に接続されるようにしても良い。これにより、情報処理装置１は、通信制御カード（拡張カード）１０を介して、通信スイッチ２又は他の情報処理装置３と接続され、これらとの間で通信を行う。
【００３８】
図２において、通信制御カード１０は、ＤＭＡ制御部１１、ＤＭＡコントローラ１２、内蔵メモリ１３、メモリコントローラ１４、通信コントローラ１５及び第２ホストコントローラ１６を備える。ＤＭＡコントローラ１２は複数のＤＭＡエンジン１２０を備える。通信コントローラ１５はパケット生成回路１５０及び転送終了判定部１５１を備える。
【００３９】
ＤＭＡ制御部１１は、通信制御カード１０に搭載されたＣＰＵからなり、通信制御カード１０の全体を制御する。情報処理装置１のＣＰＵ２０からデータ転送指示を受けると、ＤＭＡ制御部１１は、ＤＭＡエンジン１２０が転送可能なサイズになるように、メモリ３０又は内蔵メモリ１３からの転送すべきデータ（以下、転送データ）の分割サイズを決定し、ＤＭＡコントローラ１２（の複数のＤＭＡエンジン１２０）にＤＭＡによるデータ転送の指示を出す。ＤＭＡエンジン１２０が転送可能なサイズ（データの最大長）は、予め定められ、各々のＤＭＡエンジン１２０において等しい。
【００４０】
ＤＭＡ制御部１１は、転送データについて、そのデータ転送の終了を判断するための判断情報を通信コントローラ１５に送る。具体的には、ＤＭＡ制御部１１は、転送データ毎のデータ転送の回数（全データ転送回数ｍ）が確定すると、転送終了判定部１５１に転送データ毎の判断情報を通知する。即ち、複数の転送データの各々について、判断情報が通知される。
【００４１】
ＤＭＡコントローラ１２は、実際にＤＭＡによるデータ転送を行う。このために、ＤＭＡコントローラ１２は、複数のＤＭＡエンジン１２０を備える。複数のＤＭＡエンジン１２０は、各々、ＤＭＡ制御部１１からの指示に従って、情報処理装置１のメモリ３０又は内蔵メモリ１３からの転送データを分割し、分割された転送データのブロックデータを通信コントローラ１５に転送する。以下の説明において、各々のＤＭＡエンジン１２０によって転送される分割された転送データの部分の各々を、ブロックデータと呼ぶ。
【００４２】
内蔵メモリ（第２のメモリ）１３は、パケットのヘッダ情報のように、予めその内容が定められたデータを記憶する。内蔵メモリ１３はＤＭＡデータ転送におけるデータの転送元となる。内蔵メモリ１３は、メモリ３０と比較すると、ＤＭＡ制御部１１であるＣＰＵ（及びＤＭＡコントローラ１２）に対して物理的に近い位置にあるので、キャッシュメモリであると考えて良い。メモリコントローラ１４は、内蔵メモリ１３とＤＭＡコントローラ１２との間のデータ転送を制御する。
【００４３】
通信コントローラ１５は、転送先デバイスであり、ＤＭＡによるデータ転送におけるデータの転送先となる。通信コントローラ１５において、パケット生成回路１５０は、転送されたブロックデータが全て揃うと、これに基づいてパケットを生成し、生成されたパケットを外部に送信する。これにより、通信コントローラ１５は、通信スイッチ２又は他の情報処理装置３との間でパケット通信を行う。転送終了判定部１５１は、ＤＭＡ制御部１１から送られた判断情報に基づいて、転送データについて、そのデータ転送の終了判定を行う。具体的には、転送終了判定部１５１は、ＤＭＡ制御部１１から受けた転送データ毎の判断情報に基づいて、データ転送の終了判定を行う。即ち、複数の転送データの各々について、そのデータ転送の終了判定を行う。転送終了判定部１５１は、データ転送が終了したと判定した場合、その旨をパケット生成回路１５０に通知する。これに応じて、例えばパケット生成回路１５０はパケットを送出する。
【００４４】
第２ホストコントローラ１６は、情報処理装置１の第１ホストコントローラ４０との通信を行う。情報処理装置１のＣＰＵ２０からのデータ転送指示は、第１ホストコントローラ４０、第２ホストコントローラ１６を介して、ＤＭＡ制御部１１に送られる。また、情報処理装置１のメモリ３０から転送されるデータは、第１ホストコントローラ４０、第２ホストコントローラ１６を介して、ＤＭＡコントローラ１２に送られる。
【００４５】
第２ホストコントローラ１６は、情報処理装置１の第１ホストコントローラ４０と拡張スロット５０を介して接続される。第２ホストコントローラ１６は、ＤＭＡ制御部１１、ＤＭＡコントローラ１２と内部バスで接続される。ＤＭＡコントローラ１２は、メモリコントローラ１４と内部バスで接続される。通信コントローラ１５は、ＤＭＡ制御部１１、ＤＭＡコントローラ１２と内部バスで接続される。
【００４６】
図３は、本発明の一実施形態によるＤＭＡデータ転送機能を備える通信制御カード１０の具体的な構成の一例を説明する図である。
【００４７】
この例は、判断情報が転送データを転送するために必要な転送回数である全データ転送回数ｍからなる例である。これに伴って、この例の転送終了判定部１５１は、データ転送回数カウンタ１５２と全データ転送回数保持部１５３とを備える。データ転送回数カウンタ１５２及び全データ転送回数保持部１５３は、データバッファ１５４毎（即ち、転送データ毎）に設けらる。
【００４８】
ＤＭＡ制御部１１は、情報処理装置１からの通信コマンドを解釈し、各々のＤＭＡエンジン１２０が転送可能なサイズになるように、転送データの分割サイズを決定し、ＤＭＡコントローラ１２にＤＭＡによるデータ転送の指示を出す。また、ＤＭＡ制御部１１は、全データ転送回数ｍが確定した場合、これを通信コントローラ１５に通知する。全データ転送回数ｍは、転送データの全体を転送するために必要な転送回数である。
【００４９】
転送先デバイスである通信コントローラ１５は、転送データ毎に、転送されたブロックデータを格納するデータバッファ１５４を備える。データバッファ１５４は、転送データ毎にＤＭＡコントローラ１２（のＤＭＡエンジン１２０）がアクセスすることができるメモリ領域である。通信コントローラ１５は、転送終了判定部１５１として、データ転送回数カウンタ１５２及び全データ転送回数保持部１５３を備える。データ転送回数カウンタ１５２は、転送データ毎に、当該転送データについて終了したデータ転送の回数をカウントする。全データ転送回数保持部１５３は、ＤＭＡ制御部１１から送られた全データ転送回数ｍを保持する。
【００５０】
データ転送回数カウンタ１５２は、転送データ毎に、ＤＭＡコントローラ１２からのデータ転送の回数（即ち、ＤＭＡエンジン１２０からの転送終了通知の数）をカウントする。通信コントローラ１５（又は、データ転送回数カウンタ１５２）は、データ転送回数カウンタ１５２の値と保持された全データ転送回数ｍとを比較し、両者が一致した場合（即ち、データ転送回数カウンタの値が全データ転送回数に達した場合）、データ転送の終了と判断し、パケット生成回路１５０にデータ転送終了通知を送る。従って、転送終了判定部１５１が判定の対象とする「データ転送の終了」は、各々のＤＭＡエンジン１２０におけるデータ転送の終了ではなく、１個の転送データの全体（全ブロックデータ）のデータ転送の終了である。
【００５１】
次に、図３の構成に従って、本発明の一実施形態によるＤＭＡデータ転送について説明する。なお、以下では、１つの転送データＡに着目して説明する。複数の転送データＡ及びＢが存在する場合、以下に説明するＤＭＡデータ転送が複数の転送データＡ及びＢについて並行に行われる。この場合、転送データＢ用のデータバッファ１５４が設けられ、これに応じてデータ転送回数カウンタ１５２及び全データ転送回数保持部１５３が設けられる。
【００５２】
情報処理装置１のＣＰＵ２０は、パケット送信命令を出す。このパケット送信命令は、情報処理装置１の第１ホストコントローラ４０経由で、通信制御カード１０の第２ホストコントローラ１６に伝達される。ＤＭＡ制御部１１は、第２ホストコントローラ１６からパケット送信命令を受け、情報処理装置１のメモリ３０にある通信コマンドを、第２ホストコントローラ１６及び第１ホストコントローラ４０経由で読み出す。そして、ＤＭＡ制御部１１は、読み出した通信コマンドを解釈し、ＤＭＡエンジン１２０が転送可能なサイズになるように転送データの分割サイズを決定し、ＤＭＡコントローラ１２にデータ転送指示を出す。
【００５３】
ＤＭＡコントローラ１２内のＤＭＡエンジン１２０は、各々、ＤＭＡ制御部１１からの指示に基づいて、例えばメモリコントローラ１４経由で内蔵メモリ１３からブロックデータを読み出し、通信コントローラ１５に転送する。例えば、図４に示すように、内蔵メモリ１３からブロックデータＡ１を読み出す。これにより、パケット生成回路１５０は、パケット１６０のヘッダ（制御データ）を内蔵メモリ１３からデータ転送されたデータにより構成する。
【００５４】
また、ＤＭＡエンジン１２０は、各々、ＤＭＡ制御部１１からの指示に基づいて、例えば第２ホストコントローラ１６経由で情報処理装置１のメモリ３０からブロックデータを読み出し、通信コントローラ１５に転送する。例えば、図４に示すように、メモリ３０からブロックデータＡ２〜Ａｍを読み出す。これにより、パケット生成回路１５０は、パケット１６０のボディ（実際のデータ）をメモリ３０からデータ転送されたデータにより構成する。これにより、パケット１６０が生成される。
【００５５】
複数のＤＭＡエンジン１２０の各々は並行して動作し、一方、図４に示すように、複数のＤＭＡエンジン１２０の各々が転送するブロックデータのデータ長は異なる。このため、図５に示すＡｍ−１とＡｍのように、ＤＭＡ制御部１１からのデータ転送の指示の順番と、データ転送が終了する順番は一致しない場合がある。これは、例えば、図４に示すように、Ａｍ−１はブロックデータの最大長のサイズであるのに対し、Ａｍは残りの小さいサイズのブロックデータからなるためである。
【００５６】
なお、図４において、ブロックデータＡ２、Ａ４、Ａ５及びＡｍ−１は、ブロックデータの最大長のサイズを有する。一方、ブロックデータＡ１、Ａ３及びＡｍは、各々の理由から、前記最大長のサイズよりも小さいサイズを有する。
【００５７】
ＤＭＡ制御部１１は、通常、データ転送指示を出す際に、ＤＭＡエンジン１２０が転送可能な最大サイズになるように転送データの分割サイズを決定する。しかし、図４に示すように、転送データがメモリ３０上でページの境界（点線で示す）を跨いで存在している場合、ブロックデータＡ３は、当該ページの境界を跨がないように、ＤＭＡエンジン１２０が転送可能な最大サイズより小さなサイズに分割される。そのため、全データ転送回数ｍの確定する時期は、転送データによって異なり、不定である。多くの場合、全データ転送回数ｍは、転送データの最終尾の近くまでデータ転送が行われた時点で確定する。
【００５８】
従って、本発明において、ＤＭＡ制御部１１は、複数のＤＭＡエンジンが転送可能なサイズになるように転送データの分割サイズを決定し、この決定の結果に基づいて全データ転送回数ｍを確定し、この確定の結果に基づいて判断情報を生成する。図３の例では、ＤＭＡ制御部１１は、全データ転送回数ｍが確定した時点で（又は、確定した後に）、判断情報として、通信コントローラ１５に対して全データ転送回数ｍを通知する。
【００５９】
通信コントローラ１５（又はデータ転送回数カウンタ１５２）は、ＤＭＡコントローラ１２からのデータ転送の回数が全データ転送回数ｍに達した場合、即ち、データ転送回数カウンタ１５２の値が全データ転送回数ｍに達した場合、その転送データについてのデータ転送を終了したと判断し、パケット１６０を送出する。
【００６０】
図５は、図３の例における本発明によるＤＭＡデータ転送の動作シーケンスである。図５の動作シーケンスは、転送データＡについてのＤＭＡデータ転送の例である。
【００６１】
以下の説明において、Ａ１、Ａ２、... 、Ａｍはそれぞれブロックデータであり、数字が若いものほど転送データの先頭に近いブロックデータであることを示す。図５において、ＣＰＵ２０からＤＭＡ制御部１１へのパケット送信命令や、メモリ３０又は内蔵メモリ１３からＤＭＡエンジン１２０へのデータ読み出しは省略されている。図５は１つの転送データＡのＤＭＡデータ転送について示すが、実際には、複数の転送データＡ、Ｂ、・・・のＤＭＡによるデータ転送が並行して行われる。
【００６２】
ＤＭＡ制御部１１は、ＤＭＡエンジン１２０が転送可能なサイズになるように転送データＡの分割サイズを決定し、ＤＭＡコントローラ１２に対して、転送データＡを指定サイズに分割して転送する旨のデータ転送指示（ＤＭＡデータ転送要求）を出す。即ち、ＤＭＡ制御部１１は、ＤＭＡコントローラ１２にＡ１の転送命令を出す（ステップＳ１０）。この命令において、データ転送元の内蔵メモリ１３又はメモリ３０及びデータ転送先である転送先デバイス例えば通信コントローラ１５も指示される。
【００６３】
ＤＭＡコントローラ１２において、ＤＭＡエンジン１２０は、各々、ＤＭＡ制御部１１の指示に従って、ＤＭＡによるデータ転送を行う。例えば、Ａ１の転送命令を受けたＤＭＡコントローラ１２は、まだデータ転送が割り当てられていないＤＭＡエンジン１２０を用いて、通信コントローラ１５へのＡ１のデータ転送を行う（ステップＳ１１）。具体的には、ＤＭＡエンジン１２０は、メモリコントローラ１４に対してリード要求を出すことによりＡ１を読み出し、これを通信コントローラ１５に転送する。ＤＭＡエンジン１２０にデータ転送が割り当てられているか否かは、例えばＤＭＡエンジン１２０毎に、割当中であるか否かを示すフラグを設けるようにすれば良い。
【００６４】
この後、ＤＭＡ制御部１１は、ステップＳ１０と同様にして、Ａ２の転送命令を出し（ステップＳ１２）、Ａ２の転送命令を受けたＤＭＡコントローラ１２は、ステップＳ１１と同様にして、Ａ２のデータ転送を行う（ステップＳ１３）。そして、ブロックデータＡ１又はＡ２のデータ転送が終了したＤＭＡエンジン１２０は、各々、通信コントローラ１５に対して転送終了通知を出す（ステップＳ１４、ステップＳ１５）。これに応じて、データ転送回数カウンタ１５２は、データ転送回数をカウントする。
【００６５】
ＤＭＡ制御部１１は、全データ転送回数ｍが確定した時点で、通信コントローラ１５に対して全データ転送回数ｍを通知する（ステップＳ１６）。これに応じて、全データ転送回数保持部１５３は、ＤＭＡ制御部１１から送られた全データ転送回数ｍを保持する。この後、通信コントローラ１５において、データ転送回数カウンタ１５２の値と、全データ転送回数ｍとが比較される。両者が一致した場合、データ転送が終了したと判断される。
【００６６】
以上のようにしてブロックデータの転送処理が進行する。そして、ＤＭＡ制御部１１は、ステップＳ１０と同様にして、Ａｍ−１の転送命令を出し（ステップＳ１７）、Ａｍ−１の転送命令を受けたＤＭＡコントローラ１２は、ステップＳ１１と同様にして、Ａｍ−１のデータ転送を行う（ステップＳ１８）。この後、ＤＭＡ制御部１１は、ステップＳ１０と同様にして、Ａｍの転送命令を出し（ステップＳ１９）、Ａｍの転送命令を受けたＤＭＡコントローラ１２は、ステップＳ１１と同様にして、Ａｍのデータ転送を行う（ステップＳ２０）。
【００６７】
Ａｍのデータ転送が終了すると、ＤＭＡコントローラ１２は、通信コントローラ１５に対して転送終了通知を出す（ステップＳ２１）。ここでは、最終ブロックデータＡｍのデータサイズが１つ前のブロックデータＡｍ−１より小さいため、Ａｍ−１より先にＡｍのデータ転送が終了する。このため、この時点でのデータ転送回数カウンタ１５２の値はｍ−１であり、まだ全データ転送回数ｍには満たない。
【００６８】
Ａｍ−１のデータ転送が終了すると、ＤＭＡコントローラ１２は、通信コントローラ１５に対して転送終了通知を出す（ステップＳ２２）。この時点で、データ転送回数カウンタ１５２の値がｍとなり、全データ転送回数ｍと一致する。そこで、転送終了判定部１５１（データ転送回数カウンタ１５２）は、転送データＡのデータ転送が終了したと判断する。
【００６９】
図６は、本発明の一実施形態によるＤＭＡデータ転送機能を備える通信制御カード１０の具体的な構成の他の一例を説明する図である。図６は、図３に対応する図であり、従って、図３と同一の部分についての説明は省略する。
【００７０】
この例は、判断情報がカウンタＭＡＸ値から全データ転送回数ｍを引いた値であるデータ転送回数不足値からなる例である。カウンタＭＡＸ値は、データ転送回数カウンタ１５２がカウント可能な最大値である。カウンタＭＡＸ値は、ＤＭＡによるデータ転送において、実行が許容されるデータ転送の回数の最大値に等しい。これに伴って、この例の転送終了判定部１５１は、転送終了判定部１５１としてデータ転送回数カウンタ１５２のみを備える。データ転送回数カウンタ１５２は、データバッファ１５４（即ち、転送データ）毎に設けられる。
【００７１】
ＤＭＡ制御部１１は、全データ転送回数ｍが確定した場合、カウンタＭＡＸ値から全データ転送回数ｍを引いた値（以下、データ転送回数不足値という）を通信コントローラ１５に通知する。通信コントローラ１５（データ転送回数カウンタ１５２）は、通知されたデータ転送回数不足値をその時点でのデータ転送回数カウンタ１５２の値に加算し、その値がカウンタＭＡＸ値に達した場合、転送データのデータ転送が終了したものと判断する。その後、データ転送回数カウンタ１５２は、データ転送回数をカウントし続け、そのカウント値がカウンタＭＡＸ値に達した場合、データ転送が終了したと判断して、パケット生成回路１５０にデータ転送終了通知を送る。
【００７２】
例えば、カウンタＭＡＸ値が１６であり、転送データＡの全データ転送回数ｍが１０である場合について考える。データ転送回数カウンタ１５２は、ブロックデータＡ１、Ａ２、・・・の転送終了毎にデータ転送回数を１、２、・・・とカウントする。ＤＭＡ制御部１１で全データ転送回数ｍが確定すると、カウンタＭＡＸ値から全データ転送回数ｍが引かれた値即ち１６−１０＝６がデータ転送回数不足値として通信コントローラ１５に送られる。ここで、データ転送回数カウンタ１５２の値が６の時点で、データ転送回数不足値が送られたとする。この場合、データ転送回数カウンタ１５２の値にデータ転送回数不足値が加算され、データ転送回数カウンタ１５２の値が６＋６＝１２とされる。その後、データ転送回数カウンタ１５２は、ブロックデータの転送終了毎に１３、１４、・・・とカウントし続け、データ転送回数カウンタ１５２値がカウンタＭＡＸ値即ち１６に達した場合、データ転送の終了と判断する。
【００７３】
次に、図６の構成に従って、本発明の一実施形態によるＤＭＡデータ転送について説明する。即ち、図３の例と同様にして、情報処理装置１のＣＰＵ２０からのパケット送信命令に従って、ＤＭＡ制御部１１は、ＤＭＡコントローラ１２にデータ転送指示を出す。ＤＭＡコントローラ１２のＤＭＡエンジン１２０は、各々、ＤＭＡ制御部１１からの指示に基づいて、内蔵メモリ１３又はメモリ３０からブロックデータを読み出し、通信コントローラ１５に転送する。データ転送回数カウンタ１５２は、ＤＭＡコントローラ１２からのデータ転送の回数をカウントする。
【００７４】
ＤＭＡ制御部１１は、全データ転送回数ｍが確定した時点で、カウンタＭＡＸ値から全データ転送回数ｍを引いた値即ちデータ転送回数不足値を、通信コントローラ１５に対して通知する。通信コントローラ１５は、ＤＭＡ制御部１１から受けたデータ転送回数不足値をデータ転送回数カウンタ１５２に加算する。その後も、データ転送回数カウンタ１５２は、ＤＭＡコントローラ１２からのデータ転送の回数をカウントし続け、そのカウント値がカウンタＭＡＸ値に達すると、その転送データについてのデータ転送が終了したと判断して、パケット１６０を送出する。
【００７５】
図７は、図６の例における本発明によるＤＭＡデータ転送の動作シーケンスの他の一例である。図７は図５に対応し、従って、図５と同一の部分についての説明は省略する。
【００７６】
ＤＭＡ制御部１１は、ステップＳ１０と同様にして、ＤＭＡコントローラ１２に対してＡ１の転送命令を出し（ステップＳ３０）、Ａ１の転送命令を受けたＤＭＡコントローラ１２は、ステップＳ１１と同様にして、Ａ１のデータ転送を行う（ステップＳ３１）。これに続けて、ＤＭＡ制御部１１は、ステップＳ１２と同様にして、Ａ２の転送命令を出し（ステップＳ３２）、Ａ２の転送命令を受けたＤＭＡコントローラ１２は、ステップＳ１３と同様にして、Ａ２のデータ転送を行う（ステップＳ３３）。そして、ブロックデータＡ１又はＡ２のデータ転送が終了したＤＭＡコントローラ１２は、各々、通信コントローラ１５に対して転送終了通知を出す（ステップＳ３４、ステップＳ３５）。これに応じて、データ転送回数カウンタ１５２は、データ転送の回数をカウントする。
【００７７】
ＤＭＡ制御部１１は、全データ転送回数ｍが確定した時点で、通信コントローラ１５に対してデータ転送回数不足値（Ｎｍａｘ−ｍ）を通知する（ステップＳ３６）。これに応じて、データ転送回数カウンタ１５２の値ｋにデータ転送回数不足値（Ｎｍａｘ−ｍ）が加算される。これにより、データ転送回数カウンタ１５２の値はＮｍａｘ−ｍ＋ｋとなる。この後、データ転送回数カウンタ１５２は、ＤＭＡコントローラ１２からの転送終了通知を受信する都度に、これをカウントし続ける。
【００７８】
以上のようにして、ブロックデータの転送処理が進行する。そして、ＤＭＡ制御部１１は、ステップＳ１７と同様にして、Ａｍ−１の転送命令を出し（ステップＳ３７）、Ａｍ−１の転送命令を受けたＤＭＡコントローラ１２は、ステップＳ１８と同様にして、Ａｍ−１のデータ転送を行う（ステップＳ３８）。この後、ＤＭＡ制御部１１は、ステップＳ１９と同様にして、Ａｍの転送命令を出し（ステップＳ３９）、Ａｍの転送命令を受けたＤＭＡコントローラ１２は、ステップＳ２０と同様にして、Ａｍのデータ転送を行う（ステップＳ４０）。
【００７９】
Ａｍのデータ転送が終了すると、ＤＭＡコントローラ１２は、通信コントローラ１５に対して転送終了通知を出す（ステップＳ４１）。前述のように、Ａｍ−１より先にＡｍのデータ転送が終了している。このため、この時点でのデータ転送回数カウンタ１５２の値はＮｍａｘ−１であり、まだカウンタＭＡＸ値には満たない。
【００８０】
Ａｍ−１のデータ転送が終了すると、ＤＭＡコントローラ１２は、通信コントローラ１５に対して転送終了通知を出す（ステップＳ４２）。この時点で、データ転送回数カウンタ１５２の値がＮｍａｘとなる。そこで、通信コントローラ１５（データ転送回数カウンタ１５２）は、転送データＡのデータ転送が終了したと判断する。
【００８１】
図６の例によれば、通信コントローラ１５にＤＭＡ制御部１１から通知された全データ転送回数を保持する全データ転送回数保持部１５３を設ける必要がない。このため、図３の例と比較して、通信コントローラ１５のデータ転送回数カウンタ１５２の周辺回路を削減することができる。
【００８２】
以上から判るように、以下のように本発明の実施の態様を把握することができる。
【００８３】
(付記１）データの転送元であるメモリと、
データの転送先である転送先デバイスと、
各々が前記メモリから前記転送先デバイスへのＤＭＡによるデータ転送を行う複数のＤＭＡエンジンを備えるＤＭＡコントローラと、
前記ＤＭＡコントローラの前記複数のＤＭＡエンジンに対して、ＤＭＡによるデータ転送を指示するＤＭＡ制御部とを備え、
前記ＤＭＡ制御部が、転送すべきデータについて、そのデータ転送の終了を判断するための判断情報を前記転送先デバイスに送り、
前記転送先デバイスが、前記ＤＭＡ制御部から送られた前記判断情報に基づいて、前記転送すべきデータについて、そのデータ転送の終了判定を行う
ことを特徴とするＤＭＡデータ転送装置。
【００８４】
（付記２）付記１に記載のＤＭＡデータ転送装置において、
前記ＤＭＡ制御部が、複数の転送すべきデータの各々について、前記判断情報を前記転送先デバイスに送り、
前記転送先デバイスが、前記判断情報に基づいて、前記複数の転送すべきデータの各々について、そのデータ転送の終了判定を行う
ことを特徴とするＤＭＡデータ転送装置。
【００８５】
（付記３）付記１に記載のＤＭＡデータ転送装置において、
前記ＤＭＡ制御部が、前記複数のＤＭＡエンジンが転送可能なサイズになるように前記転送すべきデータの分割サイズを決定し、前記決定の結果に基づいて前記転送すべきデータを転送するために必要な転送回数である全データ転送回数を確定し、前記確定の結果に基づいて前記判断情報を生成する
ことを特徴とするＤＭＡデータ転送装置。
【００８６】
（付記４）付記１に記載のＤＭＡデータ転送装置において、
前記ＤＭＡ制御部が、前記転送すべきデータを転送するために必要な転送回数である全データ転送回数が確定した後に、当該確定の結果に基づいて生成した前記判断情報を前記転送先デバイスに送る
ことを特徴とするＤＭＡデータ転送装置。
【００８７】
（付記５）付記１に記載のＤＭＡデータ転送装置において、
前記判断情報が、前記転送すべきデータを転送するために必要な転送回数である全データ転送回数からなり、
前記転送先デバイスが、前記転送すべきデータについて終了したデータ転送の回数をカウントするデータ転送回数カウンタと、前記全データ転送回数を保持する全データ転送回数保持部とを備え、前記データ転送回数カウンタの値が前記全データ転送回数に達した場合、前記転送すべきデータのデータ転送が終了したものと判断する
ことを特徴とするＤＭＡデータ転送装置。
【００８８】
（付記６）付記１に記載のＤＭＡデータ転送装置において、
前記転送先デバイスが、前記転送すべきデータについて終了したデータ転送の回数をカウントするデータ転送回数カウンタを備え、
前記判断情報が、前記データ転送回数カウンタがカウント可能な最大値であるカウンタＭＡＸ値から、前記転送すべきデータを転送するために必要な転送回数である全データ転送回数を引いた値であるデータ転送回数不足値からなり、
前記転送先デバイスが、前記データ転送回数不足値を前記データ転送回数カウンタの値に加算し、前記データ転送回数カウンタの値が前記カウンタＭＡＸ値に達した場合、前記転送すべきデータのデータ転送が終了したものと判断する
ことを特徴とするＤＭＡデータ転送装置。
【００８９】
（付記７）付記６に記載のＤＭＡデータ転送装置において、
前記カウンタＭＡＸ値は、前記転送すべきデータのデータ転送において実行が許容されるＤＭＡによるデータ転送の回数の最大値に等しい
ことを特徴とするＤＭＡデータ転送装置。
【００９０】
（付記８）付記１に記載のＤＭＡデータ転送装置において、
前記メモリが、ユーザにより作成されたデータが記憶された第１のメモリと、予めその内容が定められたデータが記憶された第２のメモリとを含み、
前記第２のメモリが、前記第１のメモリよりも、前記ＤＭＡ制御部に近い位置に設けられる
ことを特徴とするＤＭＡデータ転送装置。
【００９１】
（付記９）付記１に記載のＤＭＡデータ転送装置が、更に、
少なくとも１個の拡張スロットを備える情報処理装置と、
前記拡張スロットに搭載された拡張カードとからなり、
前記メモリが前記情報処理装置又は拡張カードに設けられ、前記転送先デバイス、前記ＤＭＡコントローラ及び前記ＤＭＡ制御部が、前記拡張カードに設けられる
ことを特徴とするＤＭＡデータ転送装置。
【００９２】
（付記１０）付記９に記載のＤＭＡデータ転送装置において、
前記メモリが、ユーザにより作成されたデータが記憶された第１のメモリと、予めその内容が定められたデータが記憶された第２のメモリとを含み、
前記第１のメモリが前記情報処理装置に設けられ、前記第２のメモリが前記拡張カードに設けられる
ことを特徴とするＤＭＡデータ転送装置。
【００９３】
（付記１１）付記９に記載のＤＭＡデータ転送装置において、
前記拡張カードが通信制御カードからなり、
前記転送先デバイスは通信コントローラからなり、
前記情報処理装置が、前記拡張カードを介して、通信スイッチ又は他の情報処理装置と接続され、これらとの間で通信を行う
ことを特徴とするＤＭＡデータ転送装置。
【００９４】
（付記１２）付記１１に記載のＤＭＡデータ転送装置において、
前記転送先デバイスが、パケットを生成するパケット生成回路を含み、前記通信スイッチ又は他の情報処理装置との間でパケット通信を行う
ことを特徴とするＤＭＡデータ転送装置。
【００９５】
（付記１３）付記１２に記載のＤＭＡデータ転送装置において、
前記メモリが、ユーザにより作成されたデータが記憶された第１のメモリと、予めその内容が定められたデータが記憶された第２のメモリとを含み、
前記第１のメモリが前記情報処理装置に設けられ、前記第２のメモリが前記拡張カードに設けられ、
前記パケット生成回路が、前記パケットのヘッダを前記第２のメモリからデータ転送されたデータにより構成し、前記パケットのボディを前記第１のメモリからデータ転送されたデータにより構成することにより、前記パケットを生成する
ことを特徴とするＤＭＡデータ転送装置。
【００９６】
（付記１４）各々がメモリから転送先デバイスへのデータ転送を行う複数のＤＭＡエンジンを備えるＤＭＡコントローラと、前記ＤＭＡコントローラの前記複数のＤＭＡエンジンに対してＤＭＡによるデータ転送を指示するＤＭＡ制御部とを備えるＤＭＡデータ転送装置におけるＤＭＡデータ転送方法であって、
前記ＤＭＡ制御部が、前記複数のＤＭＡエンジンが転送可能なサイズになるように転送すべきデータの分割サイズを決定し、前記ＤＭＡコントローラの前記複数のＤＭＡエンジンに対してＤＭＡによるデータ転送を指示し、
前記ＤＭＡコントローラの前記複数のＤＭＡエンジンが、前記ＤＭＡ制御部の指示に従って、前記転送すべきデータを分割して前記転送デバイスに転送し、
前記ＤＭＡ制御部が、前記転送すべきデータについて、そのデータ転送の終了を判断するための判断情報を、前記転送先デバイスに送り、
前記転送先デバイスが、前記ＤＭＡ制御部から送られた前記判断情報に基づいて、前記転送すべきデータについて、そのデータ転送の終了判定を行う
ことを特徴とするＤＭＡデータ転送方法。
【産業上の利用可能性】
【００９７】
以上、説明したように、本発明によれば、ＤＭＡデータ転送装置及びＤＭＡデータ転送方法において、転送先デバイスがデータ転送の終了判定を行う。これにより、転送先デバイスにおいて当該終了判定の機能を増設し、ＤＭＡコントローラにおいてＤＭＡによるデータ転送の多重度を上げるだけで、回路の規模を殆ど大きくすることなく、ＤＭＡによるデータ転送の性能を向上することができる。この結果、ＤＭＡによるデータ転送の性能を大幅に向上したコンピュータ等の情報処理装置を提供することができる。
【図面の簡単な説明】
【００９８】
【図１】本発明による情報処理装置の構成例を示す図である。
【図２】本実施の形態による通信制御カードの構成例を示す図である。
【図３】本発明によるＤＭＡデータ転送の一例を説明する図である。
【図４】本発明によるＤＭＡデータ転送を説明する図である。
【図５】本発明によるＤＭＡデータ転送の動作シーケンスの一例である。
【図６】本発明によるＤＭＡデータ転送の他の一例を説明する図である。
【図７】本発明によるＤＭＡデータ転送の動作シーケンス他の一例である。
【図８】本発明の背景となったＤＭＡデータ転送装置を示す図である。
【図９】図８のＤＭＡデータ転送装置におけるＤＭＡデータ転送の動作シーケンスである。
【図１０】図８のＤＭＡデータ転送装置の備える送信チェック処理部の構成例を示す図である。
【図１１】図８のＤＭＡデータ転送装置の備えるＤＭＡ転送管理テーブルの例を示す図である。
【符号の説明】
【００９９】
１  情報処理装置
２  通信スイッチ
３  情報処理装置
４  通信媒体
１０  通信制御カード
１１  ＤＭＡ制御部
１２  ＤＭＡコントローラ
１３  内蔵メモリ
１４  メモリコントローラ
１５  通信コントローラ
１６  第２ホストコントローラ
２０  ＣＰＵ
３０  メモリ
４０  第１ホストコントローラ
５０  拡張スロット
１２０  ＤＭＡエンジン
１５０  パケット生成回路
１５１  転送終了判定部
１５２  データ転送回数カウンタ
１５３  全データ転送回数保持部
【図１】
2007233522.tif 000003
【図２】
2007233522.tif 000004
【図３】
2007233522.tif 000005
【図４】
2007233522.tif 000006
【図５】
2007233522.tif 000007
【図６】
2007233522.tif 000008
【図７】
2007233522.tif 000009
【図８】
2007233522.tif 000010
【図９】
2007233522.tif 000011
【図１０】
2007233522.tif 000012
【図１１】
2007233522.tif 000013