(57)【特許請求の範囲】
【請求項１】
周辺装置からメインメモリコントローラに転送するデータに関する全転送情報のうち、一部の転送情報を記憶する第１処理を行い、前記周辺装置にＤＭＡ転送を起動する信号を送信する第２処理を行い、残りの転送情報を記憶する第３処理を実行するとともに、前記周辺装置が前記データを転送することが可能なことを知らせるレディ信号を受信する第４処理を行う制御部と、
前記第４処理の後に前記周辺装置から前記メインメモリコントローラに前記データを転送するデータ転送部と
を備えるＤＭＡ転送装置。
【請求項２】
前記データ転送部は、前記全転送情報を記憶する複数のバッファを含み、
前記制御部は、前記一部の転送情報を一部の前記バッファが記憶するように制御すると共に、前記残りの転送情報を残りの前記バッファが記憶するように制御する
請求項１に記載のＤＭＡ転送装置。
【請求項３】
前記制御部は、前記第１処理に要する第１の時間と、前記第２処理から前記第４処理が完了するまでに要する第２の時間とを基に所定の算出方法により算出した見積り時間に応じて、前記第１処理を実施する
請求項１または請求項２に記載のＤＭＡ転送装置。
【請求項４】
前記制御部は、前記見積り時間を
前記見積り時間＝Ｎ―Ｄ
（ただし、
Ｄは、前記第２の時間、
Ｎは、「前記全転送情報を前記複数のバッファに記憶する処理に要する時間」を表す）、
なる式に従い算出し、
算出した前記見積り時間が正である場合に、
前記見積り時間÷Ｓ
（ただし、
Ｓは、「前記複数のバッファのうち１つバッファに転送情報を記憶する処理に要する時間」を表す）
なる式に従い算出した値の小数点以下を切り上げた数値以上であり、前記複数以下の整数値の１つを処理数とし、
前記算出した前記見積り時間が０以下である場合に、０を処理数とし、
前記処理数に応じて前記第１処理を行う
請求項３に記載のＤＭＡ転送装置。
【請求項５】
前記全転送情報のうち、前記一部の転送情報に相当する１段分の転送情報を記憶するまでに要する時間を測定する登録時間計測部を更に備える
請求項３または請求項４に記載のＤＭＡ転送装置。
【請求項６】
周辺装置ごとに前記第２の時間を測定する格納時間計測部を更に備え、
前記周辺装置に応じて、前記処理数を算出する
請求項３乃至請求項５のいずれか１項に記載のＤＭＡ転送装置。
【請求項７】
周辺装置から転送すべきデータに関する全転送情報のうち、一部の転送情報をバッファに記憶し、前記周辺装置にＤＭＡ転送を起動する信号を送信し、残りの転送情報を前記バッファに記憶するとともに、前記周辺装置が前記データを転送することが可能なことを知らせるレディ信号を前記周辺装置から受信し、その後、前記周辺装置からメインメモリコントローラにデータを転送する
ＤＭＡ転送方法。
【請求項８】
周辺装置からメインメモリコントローラに転送するデータに関する全転送情報のうち、一部の転送情報を記憶する第１処理を行い、前記周辺装置にＤＭＡ転送を起動する信号を送信する第２処理を行い、残りの転送情報を記憶する第３処理を実行するとともに、前記周辺装置が前記データを転送することが可能なことを知らせるレディ信号を受信する第４処理を行う制御機能と、
前記第４処理の後に前記周辺装置から前記メインメモリコントローラに前記データを転送するデータ転送機能と
をコンピュータに実現させるＤＭＡ転送プログラム。
【請求項９】
前記データ転送機能は、前記全転送情報を記憶する複数のバッファを用いて、
前記制御機能は、前記一部の転送情報を一部の前記バッファに記憶する処理を行い、前記残りの転送情報を、残りの前記バッファに記憶する処理を実現する
請求項８に記載のＤＭＡ転送プログラム。
【請求項１０】
前記制御機能は、前記第１処理に要する時間と、前記第２処理から前記第４処理が完了するまでに要する時間とから所定の算出方法により算出した見積り時間に応じて、前記第１処理を実現する
請求項８または請求項９に記載のＤＭＡ転送プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＭＡ転送を実施する装置等に関する。
【背景技術】
【０００２】
ピーシーアイエクスプレス（ＰＣＩ  Ｅｘｐｒｅｓｓ、以降、「ＰＣＩｅ」と表す）は、Ｉ／Ｏシリアルインターフェース（拡張バスの一種）である。ローカルエリアネットワーク（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ、以降、「ＬＡＮ」と表す）、ディクス（ＤＩＳＫ）、コンパクトディスク（Ｃｏｍｐａｃｔ  Ｄｉｓｋ等とも表す）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋなどと称されることもある）、カートリッジ磁気テープ（Ｃａｔｒｉｄｇｅ  Ｍａｇｎｅｔｉｃ  Ｔａｐｅ、以降、「ＣＧＭＴ」と表す）等を含む１つ以上の周辺装置（以降、これらの周辺装置をまとめて、「周辺装置」と略記する）は、ＰＣＩｅを介して、コンピュータシステムと結合する。また、中央演算処理装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、以降、「ＣＰＵ」と表す）は、ＰＣＩｅを介して、アドレス、カウント、フラグなどに関して転送すべき情報（以降、これらのデータをまとめて、「転送情報」と略記する）をファームウェア（Ｆｉｒｍｗａｒｅ、以降、「ＦＷ」と表す）制御部とやり取りする。
【０００３】
入出力処理装置（Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｐｒｏｃｅｓｓｏｒ、以降、「ＩＯＰ」と表す）は、ＣＰＵと、主記憶装置（メインメモリ、Ｍａｉｎ  Ｍｅｍｏｒｙなどとも表す）を制御するメインメモリコントローラ（Ｍａｉｎ  Ｍｅｍｏｒｙ  Ｃｏｎｔｒｏｌｌｅｒ、以降、「ＭＭＣ」と表す）とから独立して、コンピュータシステムに対して行われる入出力に関する処理を行う。
【０００４】
ＩＯＰは、周辺装置とＭＭＣとの間に存在する。ＩＯＰは、コンピュータシステムにおけるメインメモリと、１つ以上の周辺装置との間で、ダイレクトメモリアクセス（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ、以降、「ＤＭＡ」と表す）を利用しながら、入出力すべきデータを転送する機能を有する。
【０００５】
図１０を参照しながら、ＤＭＡ転送装置について説明を行う。図１０は、特許文献1乃至３に記載されたＤＭＡ転送装置の構成を示すブロック図である。
【０００６】
図１０を参照すると、ＩＯＰ８５は、ＩＯＰ全体を制御するＦＷ制御部９０と、周辺装置７５とメインメモリ６５と間で、ＤＭＡデータ転送を制御するデータ転送部（Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｃｏｎｔｒｏｌｌｅｒ、以降、「ＩＯＣ」と表す）９５と、周辺装置７５へ拡張するためのデバイスであるＰＣＩｅスイッチ４５と、周辺装置７５とＰＣＩｅスイッチ４５とを繋ぐホストバスアダプター５０と、ＬＡＮ８０とＰＣＩｅスイッチ４５とを繋ぐＩＯアダプター５５とから構成される。ＦＷ制御部９０とＩＯＣ９５は、ＰＣＩｅ２５を介して接続する。ＩＯＣ９５とＰＣＩｅスイッチ４５は、ＰＣＩｅ４０を介して接続する。
【０００７】
コンピュータシステムから見る場合、係るＤＭＡ転送装置において、ＰＣＩｅスイッチ４５の外側には、一つ以上の入出力（Ｉｎｐｕｔ  Ｏｕｔｐｕｔ、以降、「ＩＯ」と表す）アダプター５５（例えば、ＳＣＳＩカードやＬＡＮネットワークインターフェースカード（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ、以降ＮＩＣと略記する）などが存在する。加えて、ＩＯＰ８５は、Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ａｄａｐｔｏｒ、以降「ＩＯＡ」と略記する）、ホストチャネルアダプター（Ｈｏｓｔ＿Ｃｈａｎｎｅｌ＿Ａｄｏｐｔｅｒ、以降、「ＨＣＡ」と表す）、ホストバスアダプター５０（Ｈｏｓｔ＿Ｂｕｓ＿Ａｄａｐｔｏｒ、以降、「ＨＢＡ」と表す））等を有する。更に、ＩＯアダプター５５の外側には、ＬＡＮ８０が接続される。
【０００８】
ＩＯＰ８５とメインメモリコントローラ７０とは、ＰＣＩｅ１５を介して接続する。ＤＭＡライト（ｗｒｉｔｅ）転送を行う場合、まず、周辺装置７５は、ＩＯアダプター５５に転送データを送信する。次に、ＩＯＣ９５は、ＰＣＩｅスイッチ４５とＰＣＩｅ４０を介して、周辺装置７５が送信した転送データを受け取る。その後、ＩＯＣ９５は、さらに、ＰＣＩｅ１５を介して、受信した転送データをメインメモリコントローラ７０に送る。上述したような制御により、ＩＯＰ８５は、周辺装置７５からメインメモリ６５へ、ＣＰＵ６０を仲介することなく、転送データを転送する。
【０００９】
ＦＷ制御部９０は、コンピュータシステムにおけるＩＯ処理全般を制御するＦＷを搭載する制御機構であり、ＣＰＵ６０、あるいは、オペレーティングシステム（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ、以降、「ＯＳ」と表す）が行う入出力要求に対して、ＩＯＰ８５を構成するホストバスアダプター５０、ＰＣＩｅスイッチ４５、ＩＯＣ９５等を制御する。その制御により、ＩＯＣ９５は、ＰＣＩｅ４０を介して接続する周辺装置７５と、メインメモリ６５との間において、転送データを転送する。さらに、ＦＷ制御部９０は、チャネルプログラム（以降、「ＣＰ」と表す）が指定する論理アドレスを物理アドレスに変換する機能と、ＣＰから転送情報を生成してＩＯＣ９５に転送する機能を有する。
【００１０】
ＦＷ制御部９０は、ＣＰＵ６０から、ＩＯを起動する命令（以降、「ＩＯ起動命令」と記す）を受け取り、受け取ったＩＯ起動命令を実行するために必要なコマンドと、アドレスを指定する情報とから構成されるＣＰをメインメモリ６５から取得する。次に、ＦＷ制御部９０は、ＣＰが指定する論理アドレスを物理アドレスに変換し、次にＣＰから転送情報を生成し、その後、生成した転送情報をＩＯＣ９５に転送する。さらに、ＦＷ制御部９０は、ＩＯＣ９５から転送情報を登録する処理が完了したことを知らせる信号（以降、「転送情報登録完了信号」と表す。）を受信する。さらに、ＦＷ制御部９０は、ＩＯアダプター５５（例えば、ＮＩＣ、ＨＢＡ、ＨＣＡ等）から、ＤＭＡにおける転送が完了したことを知らせる通知（以降、「ＤＭＡ転送完了通知」と略記する）を受信する。ＦＷ制御部９０は、転送情報登録完了信号とＤＭＡ転送完了通知を受信したときに、ＣＰＵ６０に対して、ＤＭＡにおける転送（以降、「ＤＭＡ転送」とも表す）が完了したことを報告する。
【００１１】
ＩＯＣ９５は、ＦＷ制御部９０から読み取った転送情報を格納する転送情報バッファ３０と、周辺装置７５から送られて来る転送データを一時的に格納するトランザクション（Ｔｒａｎｓａｃｔｉｏｎ、以降、「Ｔｘｎ」と表す）バッファ３５とを有する。ＩＯＣ９５は、転送情報バッファ３０における転送情報に応じて、Ｔｘｎバッファ３５に存在する転送データを、メインメモリ６５へ転送する。
【００１２】
特許文献１が開示するＤＭＡ転送装置によれば、論理アドレスがメインメモリに存在するページを跨いでアクセスする結果生ずる効率低下を軽減することができる。特許文献１が開示するＤＭＡ転送装置は、効率低下を軽減するために、アドレスを物理アドレスとして保持するアドレスレジスタ等を備える。
【００１３】
特許文献２が開示するＤＭＡ転送装置（ＩＯＰとも表す）は、発行するコマンドにより生じる内部メモリにおけるオーバーフローやアンダーフローの発生を軽減する。発生を軽減する結果、特許文献２が開示するＤＭＡ転送装置は、転送データを転送する時間を短縮することができる。上述したような効果を実現するために、特許文献２が開示するＤＭＡ転送装置は、転送データ量を計測するデータカウンタを備えており、データカウンタの値が所定の範囲内であるときにのみ、コマンドを発行する。
【００１４】
特許文献３が開示するＤＭＡ転送装置は、同時期に全てのチャネルのバッファを全て占拠するような転送が行われることが少ないという特性を利用する。特許文献３が開示するＤＭＡ転送装置は、データバッファをパーティションに分割し、分割したパーティションに使用状態を示すフラグを備え、フラグの値に応じてデータバッファを動的に割り当てる。特許文献３が開示するＤＭＡ転送装置は、利用される可能性の少ないデータバッファを削減すことで無駄を削減する。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２０００−３５３１４６号公報
【特許文献２】特開２００８−０８３９１１号公報
【特許文献３】特開２０００−３３０９２３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
特許文献１乃至３に開示されたコンピュータシステムにおいて、ＩＯＰは、ＣＰに書かれている指示に従い動作をする。ＦＷ制御部９０は、ＣＰにおける転送情報を複数段の転送情報バッファ３０に登録し、その後にＤＭＡを起動する。
【００１７】
ここで、図１１を参照しながら、ＩＯＰにおける処理に要する時間の一例を示す。図１１は、特許文献などに開示されたＤＭＡ転送装置が、周辺装置７５などからの転送データをメインメモリ６５に転送（即ち、「ＤＭＡライト（ｗｒｉｔｅ）転送」と表す）する処理におけるタイミングの一例を表す図である。図１１における縦軸は、時刻の推移を表しており、下に行くほど時刻が進んでいることを示す。図１１における横軸は、ＣＰＵ６０，メインメモリ６５、ＦＷ制御部９０、ＩＯＣ９５、ホストバスアダプター５０、周辺装置７５を表す。図１１における横軸に平行な矢印は、各装置などから発生するアクセス要求を表しており、縦軸に平行な線は、各装置（横軸の値に対応する）が行う処理時間を示す。例えば、ＦＷ制御部９０が、ＣＰをメインメモリ６５から取得する処理を行うとき処理は、図１１において、ＦＷ制御部９０とメインメモリ６５との間において、ＦＷ制御部９０からメインメモリ６５に向いている矢印と、メインメモリ６５からＦＷ制御部９０に向いている矢印とが、時刻を経過して（縦軸の下方向に進んで）存在することにより、表現される。
【００１８】
例えば、最大６４段の転送情報バッファ（レジスタ）３０を有するコンピュータシステムにおいては、ＤＭＡを起動する前処理として、６４段分の転送情報を転送情報バッファ３０に登録する時間が、ＤＭＡを実行するごとに必要である。ここで、１段分の転送情報を転送情報バッファ３０に登録する時間、即ち、「ＦＷ制御部９０がＣＰを取得し、その後、ＣＰが指定する論理アドレスを物理アドレスに変換し、１段分の転送情報を転送情報バッファ３０に登録するまでの処理時間」が４（マイクロ秒／段、以降、マイクロ秒を「μｓ」と表す）であるとする。例えば、特許文献１、２または３が開示するＤＭＡ転送装置においては、４（μｓ／段）×６４（段分）＝２５６（μｓ）が、転送情報バッファ３０へ登録する時間として、ＤＭＡを起動する前処理に必要である。
【００１９】
ＦＷ制御部９０は、メインメモリ６５との間において、６４段分の転送情報を転送情報バッファ３０に登録した後（図１１における「転送情報登録完了」の時刻）、すなわち、ＦＷ制御部９０がＣＰを取得し始めてから２５６（μｓ）後に、周辺装置７５に対してＤＭＡを起動する処理を行う。その後、周辺装置７５は、転送データを転送することが可能なことを通知するレディ信号を発信する。ＦＷ制御部９０は、該レディ信号を受信し、その後にＩＯＣ９５を使って転送データを転送する。
【００２０】
一方、転送情報を転送情報バッファ３０に登録する処理と、ＤＭＡを起動する処理とが独立しているコンピュータシステムにおいては、ＤＭＡを起動する場合、転送情報を供給することが間に合わなくなることがある。供給が間に合わない場合、上述したようなコンピュータシステムは、時に、一時的にＰＣＩｅバスを停止するビジー状態（以降、単に「ビジー状態」と表す）になる。発生するビジー状態が原因となり、特許文献１、２または３が開示するＤＭＡ転送装置においては、ＤＭＡに関連する処理を実行する効率が低下する。
【００２１】
そこで、本発明の主たる目的は、処理効率の高いＤＭＡ転送装置等を提供することである。
【課題を解決するための手段】
【００２２】
前述の目的を達成するために、本発明に係るＤＭＡ転送装置は、以下の構成を備えることを特徴とする。
【００２３】
即ち、本発明に係るＤＭＡ転送装置は、
周辺装置からメインメモリコントローラにデータを転送するデータ転送部と、
前記データに関する全転送情報のうち、一部の転送情報を記憶する第１処理を行い、前記周辺装置にＤＭＡ転送を起動する信号を送信する第２処理を行い、残りの転送情報を記憶する第３処理を実行するとともに、前記周辺装置が前記データを転送することが可能なことを知らせるレディ信号を受信する第４処理を行い、その後、前記データ転送部を起動する制御部とを
備えることを特徴とする。
【００２４】
また、本発明の他の見地として、本発明に係るＤＭＡ転送方法は、
周辺装置から転送すべきデータに関する全転送情報のうち、一部の転送情報を記憶し、前記周辺装置にＤＭＡ転送を起動する信号を送信し、残りの転送情報を記憶するとともに、前記周辺装置が前記データを転送することが可能なことを知らせるレディ信号を受信し、その後、前記周辺装置からメインメモリコントローラにデータを転送
することを特徴とする。
【発明の効果】
【００２５】
本発明に係るＤＭＡ転送装置等によれば、ＤＭＡに関連する処理の効率を向上させることができる。
【発明を実施するための形態】
【００２６】
次に、発明を実施するための最良の形態について図面を参照して詳細に説明する。
【００２７】
＜第１の実施形態＞
本発明の第１の実施形態に係るＤＭＡ転送装置が有する構成について、図１を参照しながら詳細に説明を行う。図１は、本発明の第１の実施形態に係るＤＭＡ転送装置の構成を示すブロック図である。ＤＭＡ転送装置１０は、周辺装置７５からメインメモリコントローラ７０に転送データを転送するＩＯＣ１７と、制御部２０とを備える。まず、制御部２０は、一部の転送情報をバッファ（図１には不図示）に登録する。次に、制御部２０は、周辺装置７５にＤＭＡ転送を起動する信号を送信する。次に、制御部２０は、残りの転送情報をバッファ（図１には不図示）に登録する。
【００２８】
周辺装置７５は、ＤＭＡ転送を起動する信号を受け取る。次に、周辺装置７５は、転送データを転送する準備を行う。周辺装置７５は、その準備が終了すると、転送データを転送することが可能であることを知らせるレディ信号を発信する。次に、制御部２０は、ＩＯＣ１７に転送データを転送する処理を命じる。その後、ＩＯＣ１７は、周辺装置７５からメインメモリコントローラ７０に転送データを転送する。
【００２９】
ＤＭＡ転送装置１０は、メインメモリコントローラ７０を経て、ＣＰＵ６０とメインメモリ６５と情報をやり取り（アクセス）する。また、ＤＭＡ転送装置１０は、周辺装置７５とも情報をやり取りする。
【００３０】
次に、ＤＭＡ転送装置１０が行う処理の流れについて、図２あるいは図３を参照しながら詳細に説明を行う。図２は、本発明の第１の実施形態に係るＤＭＡ転送装置１０が、ＤＭＡライト転送を行う処理におけるタイミングの一例を表す図である。図３は、本発明の第１の実施形態に係るＤＭＡ転送装置における処理の流れを示すフローチャートである。図２は、上述した図１０と同種の図であるため、重複する説明は省略する。図２における縦軸は、時刻の推移を表しており、下に行くほど時刻が進んでいることを示す。図２における横軸は、ＣＰＵ６０，メインメモリ６５、制御部２０、ＩＯＣ１７、ＨＢＡ（図１には不図示）、周辺装置７５を表す。
【００３１】
例えば、コンピュータシステムには、６４段の転送情報が存在しているとする。図２を参照すると、制御部２０は、メインメモリ６５からＣＰを取得し、その後、ＣＰが指定する論理アドレスを物理アドレスに変換する処理を行う。図２に示す例においては、制御部２０は、１段分の転送情報を登録し（図３におけるステップＳ１０）、その後、周辺装置７５に対しＤＭＡ転送を起動する信号を送信する（図３におけるステップＳ２０）。その後、制御部２０は、残りの６３段の転送情報を登録する処理を行う（図３におけるステップＳ３０）。
【００３２】
周辺装置７５は、そのＤＭＡ転送を起動する信号を受け取る。次に、周辺装置７５は、転送データを転送する準備を行う。周辺装置７５は、その準備が終了すると、転送データを転送することが可能であることを知らせるレディ信号を発信する。次に、制御部２０は、周辺装置７５が発信したレディ信号を受信する（図３におけるステップＳ４０）。その後、ＩＯＣ１７は、周辺装置７５からメインメモリコントローラ７０を経てメインメモリ６５に転送データを転送する（図３におけるステップＳ５０）。
【００３３】
周辺装置７５が上述したような処理を行う間に、制御部２０は、残りの６３段分の転送情報を登録する処理を行う。制御部２０が、転送情報を登録する処理とＤＭＡ転送を開始する処理とを同期させながら行うことによって、ＰＣＩｅがビジー状態になる可能性を低下させつつ、転送情報を登録するターンアラウンドタイム（Ｔｕｒｎ  Ａｒｏｕｎｄ  Ｔｉｍｅ、以降「ＴＡＴ」と略記する）を短縮させることができる。
【００３４】
上述した例において、制御部２０は、１段分の転送情報を登録した後に、ＤＭＡ転送を開始する処理を行うが、必ずしも１段である必要はない。例えば２段であっても、３段であっても、あるいは、１段目から２段目の途中であっても、６３段（即ち、６４段の転送情報から１を引いた値）以下の転送情報を登録し、その後にＤＭＡ転送を開始する処理を行う場合には、周辺装置７５が行う処理と制御部２０が転送情報を登録する処理とが並行できるため、本発明の第１の実施形態に係るＤＭＡ転送装置により、ＴＡＴを短縮させることができる。
【００３５】
また、上述した例において、コンピュータシステムには、６４段の転送情報が存在すると仮定したが、必ずしも６４段である必要はない。
【００３６】
即ち、本発明における第１の実施形態に係るＤＭＡ転送装置によれば、ＤＭＡに関連する処理の効率を向上させることができる。
【００３７】
＜第２の実施形態＞
次に、上述した第１の実施形態を基本とする第２の実施形態について説明する。
【００３８】
以下の説明においては、本実施形態に係る特徴的な部分を中心に説明すると共に、上述した第１の実施形態と同様な構成については、同一の参照番号を付すことにより、重複する説明は省略する。
【００３９】
図４を参照しながら、本発明における第２の実施形態に係るＤＭＡ転送装置について説明を行う。図４は、本発明の第２の実施形態に係るＤＭＡ転送装置の構成を示すブロック図である。
【００４０】
図４を参照すると、ＤＭＡ転送装置１１は、更に、転送情報バッファ３０を備える。転送情報バッファ３０は、複数の段を有する構成である。制御部２１は、転送情報を転送情報バッファ３０に登録する。以下の説明においては、転送情報バッファ３０は、複数の段を有するとして説明を行うが、その段が１つの転送情報バッファに対応するとしても何ら得られる効果は変わらない。即ち、ＤＭＡ転送装置１１は、複数の転送情報バッファ３０を備えるとしてもよい。
【００４１】
第１の実施形態に係るＤＭＡ転送装置において説明した例と同様に、例えば、コンピュータシステムには、６４段の転送情報が存在するとする。制御部２１は、１段分の転送情報を１段の転送情報バッファ３０に登録し、その後、ＤＭＡ転送を起動する処理を実施する。その後、制御部２１は、残りの６３段の転送情報を転送情報バッファ３０に登録する処理を行う。
【００４２】
周辺装置７５は、ＤＭＡ転送が開始されてから、ＤＭＡ転送装置１１に転送データを送信するまでの処理を実施する。周辺装置７５が処理を行う間に、制御部２１は、残りの６３段分の転送情報を転送情報バッファ３０に登録する処理を行う。制御部２１が、転送情報バッファ３０に転送情報を登録する処理とＤＭＡ転送を開始する処理とを同期させながら行うことによって、ＰＣＩｅがビジー状態になる可能性を低下させつつ、転送情報を登録するＴＡＴを短縮させることができる。
【００４３】
また、上述した例において、コンピュータシステムには、６４段の転送情報が存在すると仮定したが、必ずしも６４段である必要はない。
【００４４】
即ち、本発明における第２の実施形態に係るＤＭＡ転送装置によれば、ＤＭＡに関連する処理の効率を向上させることができる。
【００４５】
＜第３の実施形態＞
次に、上述した第２の実施形態を基本とする第３の実施形態について説明する。
【００４６】
以下の説明においては、本実施形態に係る特徴的な部分を中心に説明すると共に、上述した第２の実施形態と同様な構成については、同一の参照番号を付すことにより、重複する説明は省略する。同様に、上述した特許文献１、２あるいは３と同様な構成についても、同一の参照番号を付すことにより、重複する説明は省略する。
【００４７】
図５を参照しながら、本発明における第３の実施形態に係るＤＭＡ転送装置について説明を行う。図５は、本発明の第３の実施形態に係るＤＭＡ転送装置の構成を示すブロック図である。
【００４８】
図５を参照すると、ＤＭＡ転送装置１２は、ＣＰの取得などの処理を行う制御部２２と、ＤＭＡ転送処理を行うＩＯＣ１７と、ＰＣＩｅスイッチ４５と、周辺装置７５を接続するＩＯアダプター５５（または、ホストバスアダプター５０）から構成される。
【００４９】
制御部２２は、所定の算出方法により、周辺装置７５にＤＭＡ転送を起動する信号を送信する前に行う、転送情報の処理量を算出する。例えば、転送情報を転送情報バッファ３０に登録する時間と、制御部２２がＤＭＡを起動する時点から、ＬＡＮ８０などの周辺装置７５に応じて、周辺装置７５から送られる転送データをＴｘｎバッファ３５に一時保存できる状態になるまでの時間とから、ＤＭＡを起動する処理を行う前に登録する転送情報バッファ３０の段数を算出する。
【００５０】
例えば、１段分の転送情報を転送情報バッファ３０に登録する処理に要する時間が４（μｓ／段）であり、転送情報バッファ３０の段数が最大６４（段）であり、ＤＭＡを起動してから周辺装置７５から送られる転送データをＴｘｎバッファ３５に一時保存できる状態になるまでの時間、即ち、周辺装置７５が行う処理に要する時間が２５０（μｓ）であると仮定する。
【００５１】
全ての転送情報を登録する処理に要する時間は、１段分の処理に要する時間と、段数を掛け合わせた値となる。即ち、制御部２２は、式１のように、全ての転送情報を登録する処理に要する時間を算出する。
【００５２】
６４（段）×４（μｓ）＝２５６（μｓ）・・・（式１）
上記の処理と、周辺装置７５が行う処理（所要時間は、２５０（μｓ））とは、ほぼ同時に実行することができる。そこで、制御部２２は、全ての転送情報を登録する処理に要する時間から、周辺装置７５から送られる転送データをＴｘｎバッファ３５に一時保存可能な状態になるまでの時間を差し引き、ＤＭＡを起動する以前に存在する時間を算出する。ここで、周辺装置７５から送られる転送データをＴｘｎバッファ３５に一時保存可能な状態になるまでの時間が２５０（μｓ）であるとする。上述した例において、制御部２２は、式２のように時間を算出する。
【００５３】
２５６（μｓ）―２５０（μｓ）＝６（μｓ）・・・（式２）
上述した処理に従って算出した値が正の値になる場合、周辺装置７５が行う処理に要する時間に比べて、全ての転送情報を登録する処理に要する時間の方が長いことになる。すなわち、制御部２２がＤＭＡを起動する処理を先に行う場合、ビジー状態が生じ、その結果、コンピュータシステムにおいては、ＤＭＡに関連する処理の効率が低下することになる。そこで、ビジー状態を軽減するため、制御部２２は、ＤＭＡを起動する処理を行う以前に、後述する処理に従って算出する段数に応じて転送情報を登録する処理を行う。制御部２２が、上述したように処理を行うことで、ビジー状態を軽減することができる。
【００５４】
また、式２に示した例に従って算出する値が０以下の値になる場合には、周辺装置７５が行う処理に要する時間に比べて、全ての転送情報を登録する処理に要する時間の方が短いことになる。このような場合には、制御部２２がＤＭＡを起動する処理を先に行う場合であっても、ビジー状態が生じることはない。制御部２２は、ＤＭＡを起動する処理を行い、その後に、転送情報を登録する処理を行う。
【００５５】
制御部２２は、式２に示した例に従って算出する値が正の値になると判定する場合に、式２により算出する値を、１段分の転送情報を登録する処理に要する時間で割り算を行い、見積り値を算出する。上述した例においては、制御部２２は、式３に従い、見積り値を算出する。
【００５６】
６（μｓ）÷４（μｓ／段）＝１．５（段）・・・（式３）
上述のように算出する見積り値において、小数点以下を切り下げる場合、すなわち、１（段）とする場合、ビジー状態が生じることになる。しかしながら、転送情報を登録する処理とＤＭＡを起動する処理とを独立して行う場合に比べて、ＤＭＡに関連する処理の効率を向上させる可能性が高い。
【００５７】
あるいは、上述のように算出する見積り値において、小数点以下を切り上げる場合、すなわち、２（段）とする場合、ビジー状態は生じない。制御部２２は、上述のように算出する段数分の転送情報を登録する処理を行い、その後に、ＤＭＡを起動する処理を行い、その後に、残りの段数の転送情報を登録する処理を行う。制御部２２が、このように処理を行うことで、ＤＭＡに関連する処理の効率を向上させることができる。
【００５８】
上述した例において、転送情報バッファ３０の段数が６４段である場合、２段乃至６３段（即ち、転送情報バッファ３０の段数から１を引いた値）の値であれば、ビジー状態が生じることはなく、さらに、転送情報を登録する処理と周辺装置７５が行う処理とを並行して行うことができる。従って、制御部２２は、ＤＭＡに関連する処理の効率を向上させることができる。
【００５９】
上述した例においては、転送情報バッファ３０の段数が６４（段）であり、周辺装置７５が行う処理に要する時間が２５０（μｓ）であり、１段分の転送情報を転送情報バッファ３０に登録する処理に要する時間が４（μｓ／段）であると仮定している。しかしながら、本発明の第３の実施形態に係るＤＭＡ転送装置の処理は、上記の数値に限定されるものではない。即ち、本発明の第３の実施形態に係るＤＭＡ転送装置の処理は、上述した数値以外の数値であっても同様に処理によって、ＤＭＡに関連する処理の効率を向上させることができる。
【００６０】
本発明の第３の実施形態に係るＤＭＡ転送装置が行う処理の流れを、図６を参照しながら説明する。図６は、本発明の第３の実施形態に係るＤＭＡ転送装置が、ＤＭＡライト転送を行うときの処理のタイミングを表す図である。図６は、上述した例における処理時間であるときのタイミングを表しており、図１１と同様の図である。
【００６１】
図６を参照すると、ＣＰＵ６０から制御部２２に、ＩＯ起動命令が発行されると、制御部２２は、メインメモリ６５からＣＰを取得する。ＣＰは、ＩＯを実行するコマンドと、アドレスを指定する情報（以降、「アドレス指定情報」と略記する）と、以降実施するコマンドがやり取りするデータが連続するか否かを示すデータチェインに関する情報等を含んでいる。
【００６２】
取得するＣＰにおけるアドレス指定情報が、論理アドレスで記述されている場合に、制御部２２は、１度以上、メインメモリ６５とアドレスに関する情報をやり取りする（以降、情報をやり取りすることを、「アクセスする」とも表現する）。制御部２２は、アクセスして得られる情報に従い、ＣＰが指定する論理アドレスをメインメモリ６５における物理アドレスに変換する。その後、制御部２２は、転送情報を作成し、作成した転送情報をＩＯＣ１７に転送する。
【００６３】
次に、ＩＯＣ１７は、上述した転送情報を受信すると、転送情報バッファ３０に格納した後に、１段目に関する転送情報登録完了信号を制御部２２に送信する。
【００６４】
仮に、制御部２２とメインメモリ６５との間を１回アクセスする処理に要する時間を１（μｓ／回段）とし、ＣＰを取得する処理から、ＣＰが指定する論理アドレスから物理アドレスへ変換する処理までの間に、４回アクセスして転送情報バッファ３０に登録するとする。その場合、１段分の転送情報を登録する処理に要する時間は、４（回）×１（μｓ／回段）＝４（μｓ／段）である。また、コンピュータシステムが、６４段の転送情報バッファ３０を有する構成である場合、転送情報を、全て、転送情報バッファ３０に格納する処理に要する時間は、先に算出した値を使って、６４（段）×４（μｓ／段）＝２５６（μｓ）となる。
【００６５】
一方、制御部２２が、ＩＯアダプター５５（例えば、ホストバスアダプター５０など）にＤＭＡ転送を開始する命令を発行すると、ＩＯアダプター５５は、周辺装置７５に対してアクセスを開始する。
【００６６】
転送データを転送する速度は、インターフェースの種類、周辺装置７５の種類、キャッシュが存在するか否かなどに応じて異なる。例えば、周辺装置７５の転送速度は、現時点では、１（Ｍｅｇａ  ｂｉｔ  ｐｅｒ  ｓｅｃｏｎｄ、以降「Ｍｂｐｓ」と表す）〜１（Ｇｉｇａ  ｂｉｔ  ｐｅｒ  ｓｅｃｏｎｄ、以降「Ｇｂｐｓ」と表す）であり、ＩＯアダプター５５に接続するＬＡＮの転送速度は、１０（Ｍｂｐｓ）〜１０（Ｇｂｐｓ）である。仮に、ＤＭＡを起動する処理から、データをアクセスし、Ｔｘｎバッファ３５にデータ転送を開始する処理までに要する時間、即ち、ＩＯアダプター５５から接続する周辺装置７５へアクセスする処理に要する時間が、２５０（μｓ）である場合、２５０（μｓ）後に、ＤＭＡライト転送が開始される。
【００６７】
例えば、本発明の第３の実施形態に係るＤＭＡ転送装置１２において、ＩＯＣ１７が６４段分の転送情報バッファ３０を有しており、１段分の転送情報バッファ３０における転送情報を登録する処理に要する時間が４（μｓ／段）であるとする（図６におけるメインメモリと制御部との間に存在する矢印）。さらに、ＤＭＡが起動する処理から、Ｔｘｎバッファ３５にデータ転送を開始する処理の前までに要する時間、即ち、周辺装置７５へのアクセス時間が２５０（μｓ）であるとする（図６に示す周辺装置の時間経過に表した波線）。
【００６８】
さらに、上述したように、制御部２２が、見積り値を２段であると算出すると、２段分の転送情報を転送情報バッファ３０に登録する（図６における転送情報登録完了（２段目））。即ち、ＩＯＣ１７は、８μｓ（＝４（μｓ／段）×２（段））後に、転送情報登録完了信号を制御部２２に発行できるため（図６におけるＤＭＡ起動）、本発明に係る第３の実施形態に係るＤＭＡ転送装置によれば、６２段分のＴＡＴ（すなわち、時間に換算すれば、６２段×４μｓ／段＝２４８μｓ）を改善することができる。さらに上述したように、本発明の第３の実施形態に係るＤＭＡ転送装置によれば、ビジー状態を軽減して性能低下を抑えることができる。
【００６９】
上記に例示した所定の算出方法は以下のようになる。即ち、周辺装置７５からレディ信号を受け取る時刻と、転送情報を転送情報バッファ３０に登録することが完了する時刻とを一致させるとすると、ＤＭＡを起動する以前に存在する時間Ｔ（「見積り時間」とも表現する）は、式３のように算出される。
【００７０】
Ｔ＝Ｎ×Ｓ―Ｄ・・・（式４）、
（ただし、
Ｄは、制御部２２が周辺装置７５にＤＭＡ転送を起動する信号を送信する処理から、制御部２２が周辺装置７５からレディ信号を受信する処理が完了するまでの時間、
Ｎは、転送情報バッファ３０を構成する段数、
Ｓは、制御部２２が１段分の転送情報バッファ３０における転送情報を登録する処理に要する時間である）。
【００７１】
式４において「Ｎ×Ｓ」は、「制御部２２が全ての段数（上記例においては６４段）分の転送情報を転送情報バッファ３０に登録する処理に要する時間」を表す。
【００７２】
時間Ｔが正である場合に、式５に従い段数Ｄに換算する。
【００７３】
Ｄ＝Ｔ÷Ｓ・・・（式５）。
【００７４】
（ただし、Ｄの値の小数点以下を切り上げる数値以上であり、第１の段の段数以下の整数値の１つを選ぶ）
また、時間Ｔが負である場合に、式５に従い段数Ｄに換算する。
【００７５】
Ｄ＝０。
【００７６】
所定の算出方法は、上述した方法に限られるものではなく、例えば、Ｓが複数段の転送情報バッファ３０における転送情報を登録する処理に要する時間であっても良い。その場合には、Ｓを１段の処理時間に換算を行い、その後に、得られる値を新たにＳとして、時間Ｔを式４に従い算出する。
【００７７】
即ち、本発明の第３の実施形態に係るＤＭＡ転送装置によれば、ＤＭＡに関連する処理の効率を向上させることができる。
【００７８】
＜第４の実施形態＞
次に、上述した第３の実施形態を基本とする第４の実施形態について説明する。
【００７９】
以下の説明においては、本実施形態に係る特徴的な部分を中心に説明すると共に、上述した第３の実施形態と同様な構成については、同一の参照番号を付すことにより、重複する説明は省略する。
【００８０】
図７を参照しながら、本発明の第４の実施形態に係るＤＭＡ転送装置の構成について説明する。図７は、本発明の第４の実施形態に係るＤＭＡ転送装置の構成を示すブロック図である。
【００８１】
図７を参照すると、ＤＭＡ転送装置１３は、１段分の転送情報を転送情報バッファ３０に登録するまでに要する登録時間を計測する登録時間計測部２３と、周辺装置７５が行う処理に要する時間を、周辺装置ごとに計測する格納時間計測部２４とを更に備える。
【００８２】
制御部２２は、ＣＰＵ６０からＩＯ起動命令を受け取り、その後、ＩＯＣ１７に対して、ＩＯを開始する信号（以降、「ＩＯ起動開始信号」と表す）を発行する。その後、ＩＯＣ１７は、ＩＯ起動開始信号を受け取り、その後に、登録時間計測部２３を起動する。
【００８３】
登録時間計測部２３は、起動すると時間の計測を開始し、１段分の転送情報を登録する処理が完了した時点で計測を終了する。その後、登録時間計測部２３は、計測した時間を制御部２２に送付する。
【００８４】
格納時間計測部２４は、例えば、制御ポートを使う、あるいは、周辺装置に関するポーリングを行うなどの手段を使って、各周辺装置へのアクセス時間（上述した各周辺装置７５などが行う処理に要する時間）を取得する。その後、格納時間計測部２４は、各周辺装置へのアクセス時間を制御部２２に送付する。格納時間計測部２４がアクセス時間を取得する方法は、上述した例に限定されるものではない。
【００８５】
図８を参照しながら、格納時間計測部２４が、各周辺装置へのアクセス時間を計測するタイミングについて説明する。図８は、本発明の第４の実施形態に係るＤＭＡ転送装置において、各周辺装置へのアクセス時間を計測する処理を表すタイミングチャートである。図８の横軸は、時刻を表しており、左に行くほど時刻が進むことを表す。図８の左側に存在する、縦方向に並んだ文字列が、各周辺装置の名称を表す。
【００８６】
図８を参照すると、ＩＯＣ１７は、ＦＷが発するＤＭＡ転送を起動する信号を受信すると（図８における「ＤＭＡ転送開始信号」のタイミング線）、格納時間計測部２４を起動する（図８における「カウンタ」のタイミング線）。ＩＯＣ１７は、各周辺装置に、ホストバスアダプター等を介して、ＤＭＡ転送を起動する信号を送る。格納時間計測部２４は、各周辺装置が発する信号を受信し、受信した信号を元に、各周辺装置へのアクセス時間を計測する。その後、格納時間計測部２４は、計測した時間を制御部２２に送付する。次に、ＩＯＣ１７は、リセット信号（図８における「リセット信号」のタイミング線）を受信し、状態を初期化する。
【００８７】
時間を計測するために転送するデータは、ダミーのデータであってもよいし、転送データのヘッダー部分のデータであっても良い。時間を計測するために転送するデータは、上記に示したデータに限定されるものではない。
【００８８】
また、各周辺装置へのアクセス時間を計測する方法は、上述した方法に限定されるものではない。例えば、予め、各周辺装置へのアクセス時間を計測し、その時間を記憶しておき、その記憶した時間を参照することにより、アクセス時間を取得しても良い。
【００８９】
登録時間計測部２３は、１段分の転送情報を登録する処理に要する時間を計測する。また、格納時間計測部２４は、各周辺装置へのアクセス時間を計測する。そのため、本発明の第４の実施形態に係るＤＭＡ転送装置によれば、周辺装置に応じて、ＤＭＡ転送開始以前に処理を行う転送情報の段数を算出することができるようになる。
【００９０】
即ち、本発明の第４の実施形態に係るＤＭＡ転送装置によれば、ＤＭＡに関連する処理の効率を向上させることができる。
【００９１】
（ハードウェア構成例）
図９は、実施形態に係るＤＭＡ転送装置を実現可能な計算処理装置のハードウェア構成を、概略的に示すブロック図である。
【００９２】
次に、上述した各実施形態におけるＤＭＡ転送装置を、１つの計算処理装置（情報処理装置、コンピュータ）を用いて実現するハードウェア資源の構成例について説明する。但し、係るＤＭＡ転送装置は、物理的または機能的に少なくとも２種類の計算処理装置を用いて実現してもよい。また、係るＤＭＡ転送装置は、専用の装置として実現してもよい。
【００９３】
図９は、第１の実施形態乃至第４の実施形態に係るＤＭＡ転送装置を実現可能な計算処理装置のハードウェア構成を概略的に示す図である。計算処理装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１０、メモリ１２０、ディスク１３０、出力装置１４０、および入力装置１５０を有する。
【００９４】
即ち、ＣＰＵ１１０は、ディスク１３０が記憶するソフトウェア・プログラム（コンピュータ・プログラム：以下、単に「プログラム」と称する）（図３）を、実行時にメモリ１２０にコピーし、演算処理を実行する。ＣＰＵ１１０は、プログラム実行に必要なデータをメモリ１２０から読み込む。表示が必要な場合には、ＣＰＵ１１０は、出力装置１４０に出力結果を表示する。外部からプログラムを入力する場合、ＣＰＵ１１０は、入力装置１５０からプログラムを読み取る。ＣＰＵ１１０は、メモリ１２０にあるＤＭＡ転送プログラム解釈し実行を行う。ＣＰＵ１１０は、上述した各実施形態において説明した処理を順次行う。
【図面の簡単な説明】
【００９５】
【図１】本発明の第１の実施形態に係るＤＭＡ転送装置の構成を示すブロック図である。
【図２】本発明の第１の実施形態に係るＤＭＡ転送装置が、ＤＭＡライト転送を行う処理におけるタイミングの一例を表す図である。
【図３】本発明の第１の実施形態に係るＤＭＡ転送装置における処理の流れを示すフローチャートである。
【図４】本発明の第２の実施形態に係るＤＭＡ転送装置の構成を示すブロック図である。
【図５】本発明の第３の実施形態に係るＤＭＡ転送装置の構成を示すブロック図である。
【図６】本発明の第３の実施形態に係るＤＭＡ転送装置が、ＤＭＡライト転送を行うときの処理のタイミングを表す図である。
【図７】本発明の第４の実施形態に係るＤＭＡ転送装置の構成を示すブロック図である。
【図８】本発明の第４の実施形態に係るＤＭＡ転送装置において、格納時間を計測する処理を表すタイミングチャートである。
【図９】実施形態に係るＤＭＡ転送装置を実現可能な計算処理装置のハードウェア構成を、概略的に示すブロック図である
【図１０】関連文献等に記載されたＤＭＡ転送装置の構成を示すブロック図である。
【図１１】関連文献等に記載されたＤＭＡ転送装置が、ＤＭＡライト転送を行う処理におけるタイミングの一例を表す図である。
【符号の説明】
【００９６】
１０    ＤＭＡ転送装置
１１    ＤＭＡ転送装置
１２    ＤＭＡ転送装置
１３    ＤＭＡ転送装置
１５    ＰＣＩｅ
１７    ＩＯＣ
２０    制御部
２１    制御部
２２    制御部
２３    登録時間計測部
２４    格納時間計測部
２５    ＰＣＩｅ
３０    転送情報バッファ
３５    Ｔｘｎバッファ
４０    ＰＣＩｅ
４５    ＰＣＩｅスイッチ
５０    ホストバスアダプター
５５    ＩＯアダプター
６０    ＣＰＵ
６５    メインメモリ
７０    メインメモリコントローラ
７５    周辺装置
８０    ＬＡＮ
８５    ＩＯＰ
９０    ＦＷ制御部
９５    ＩＯＣ
１００    計算処理装置
１１０    ＣＰＵ
１２０    メモリ
１３０    ディスク
１４０    出力装置
１５０    入力装置
【図１】
0005637178.tif 000002
【図２】
0005637178.tif 000003
【図３】
0005637178.tif 000004
【図４】
0005637178.tif 000005
【図５】
0005637178.tif 000006
【図６】
0005637178.tif 000007
【図７】
0005637178.tif 000008
【図８】
0005637178.tif 000009
【図９】
0005637178.tif 000010
【図１０】
0005637178.tif 000011
【図１１】
0005637178.tif 000012