(57)【特許請求の範囲】
【請求項１】
データを複数に分割することによって、ＤＭＡ転送を繰り返して行うデータ転送装置であって、
前記データのＤＭＡ転送の転送時間を計測するタイマーと、
前記タイマーによって計測したＤＭＡ転送の１回当たりの転送時間を転送終了毎に測定する転送時間測定手段と、
該測定された転送時間に基づいて、今回と前回の単位バイト数あたりの転送時間を比較し、前回より今回の単位バイト数あたりの転送時間が短くなった場合は、今回よりデータ転送サイズを大きくしてＤＭＡ転送させ、前回より今回の単位バイト数当たりの転送時間が長くなった場合は前回のデータ転送サイズを最適な転送サイズとして決定する転送サイズ決定手段とを具え、該決定されたデータ転送サイズに従ってＤＭＡ転送を繰り返して行うことを特徴とするデータ転送装置。
【請求項２】
前記データの転送エラーが生じた場合、起動したタイマーのタイムアウトにより異常を検知する手段と、
該異常の検知によって前記データのＤＭＡ転送を停止させる手段と
をさらに具えたことを特徴とする請求項１記載のデータ転送装置。
【請求項３】
データを複数に分割することに
よって、ＤＭＡ転送を繰り返して行うデータ転送方法であって、
ＤＭＡ転送の１回当たりの転送時間を転送終了毎に測定する工程と、
該測定された転送時間に基づいて、今回と前回の単位バイト数あたりの転送時間を比較し、前回より今回の単位バイト数あたりの転送時間が短い場合は、データ転送サイズを大きくしてＤＭＡ転送させ、前回より今回の単位バイト数当たりの転送時間が長くなった場合は前回のデータ転送サイズを最適な転送サイズとして決定する工程とを具え、該決定されたデータ転送サイズに従ってＤＭＡ転送を繰り返して行うことを特徴とするデータ転送方法。
【請求項４】
前記データの転送エラーが生じた場合、起動したタイマーのタイムアウトにより異常を検知する工程と、
該異常の検知によって前記データのＤＭＡ転送を停止させる工程とをさらに具えたことを特徴とする請求項３記載のデータ転送方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、大容量のデータをＤＭＡ（Ｄirect Ｍemory Ａccess ）を用いて転送するデータ転送装置に関する。
【０００２】
【従来の技術】
従来から大容量のデータ転送を高速に行うには、ＤＭＡ転送は必須の技術である。この種のデータ転送を高速に行う技術としては、バスマスタデバイスでバスを継続的に使用するバーストモード方式が一般的である。
【０００３】
近年、このバースト転送の性能向上のために、クロックと同期することによって、高速転送を行えるＳＤＲＡＭ（Ｓynchronous  ＤＲＡＭ）を用いる技術がある。
【０００４】
【発明が解決しようとする課題】
しかしながら、高速転送が可能なＳＤＲＡＭは、クロックパルスと同期するため、電圧降下などによるハードウェアのわずかなタイミングの狂いが生じた場合でも、データ転送エラーという致命的な欠陥が発生しやすく、データに影響を及ぼすという問題点がある。
【０００５】
また、転送エラーを起こした場合、必要なデータサイズの転送が終了しないので、ホストＣＰＵは、終了を認識できない。このような場合は、ＤＭＡコントローラを停止させ、ＳＤＲＡＭのモード切り換えを指示する必要がある。このモード切り換え処理を行わず、他のメモリアクセスを実行すると、ローカルバスがロックし、システム全体がハングアップする場合がある。
【０００６】
さらに、ホストＣＰＵやＤＭＡコントローラの制限によって、１４ＭＢのＤＭＡ転送を一度に実行できない場合がほとんどであり、また、バーストモード方式は、転送時間が長くなると、バスを占有する時間が長いため、ホストＣＰＵ上で動作するＯＳ（Ｏperating  Ｓystem ）やアプリケーションのレスポンスが悪くなる傾向がある。
【０００７】
そこで、本発明の目的は、データのＤＭＡ転送における総転送時間を短縮させ、最適なバス使用効率を設定することが可能なデータ転送装置を提供することにある。
【０００８】
【課題を解決するための手段】
本発明は、データを複数に分割することによって、ＤＭＡ転送を繰り返して行うデータ転送装置であって、前記データのＤＭＡ転送の転送時間を計測するタイマーと、前記タイマーによって計測したＤＭＡ転送の１回当たりの転送時間を転送終了毎に測定する転送時間測定手段と、該測定された転送時間に基づいて、今回と前回の単位バイト数あたりの転送時間を比較し、前回より今回の単位バイト数あたりの転送時間が短くなった場合は、今回よりデータ転送サイズを大きくしてＤＭＡ転送させ、前回より今回の単位バイト数当たりの転送時間が長くなった場合は前回のデータ転送サイズを最適な転送サイズとして決定する転送サイズ決定手段とを具え、該決定されたデータ転送サイズに従ってＤＭＡ転送を繰り返して行うことによって、データ転送装置を構成する。
【００１０】
前記データの転送エラーが生じた場合、起動したタイマーのタイムアウトにより異常を検知する手段と、該異常の検知によって前記データのＤＭＡ転送を停止させる手段とをさらに具えることができる。
【００１２】
本発明は、データを複数に分割することによって、ＤＭＡ転送を繰り返して行うデータ転送方法であって、ＤＭＡ転送の１回当たりの転送時間を転送終了毎に測定する工程と、該測定された転送時間に基づいて、今回と前回の単位バイト数あたりの転送時間を比較し、前回より今回の単位バイト数あたりの転送時間が短い場合は、データ転送サイズを大きくしてＤＭＡ転送させ、前回より今回の単位バイト数当たりの転送時間が長くなった場合は前回のデータ転送サイズを最適な転送サイズとして決定する工程とを具え、該決定されたデータ転送サイズに従ってＤＭＡ転送を繰り返して行うことによって、データ転送方法を提供する。
【００１４】
前記データの転送エラーが生じた場合、起動したタイマーのタイムアウトにより異常を検知する工程と、該異常の検知によって前記データのＤＭＡ転送を停止させる工程とをさらに具えることができる。
【００１８】
前記データの転送エラーが生じた場合、起動させたタイマーのタイムアウトにより異常を検知させ、該異常の検知によって前記データのＤＭＡ転送を停止させることができる。
【００１９】
【発明の実施の形態】
以下、図面を参照して、本発明の実施の形態を詳細に説明する。
【００２０】
図２は、大画面固体撮像素子を備えた医療用のＸ線撮影装置６のシステム構成例を示す。このＸ線撮影装置６は、ＬＡＮ１００と双方向通信可能に接続されている。このＬＡＮ１００としては、例えばＥthenet等の病院内に張り巡らされたネットワークを想定できる。
【００２１】
本例では、Ｘ線撮影装置６内におけるデータ転送処理を例に挙げる。
【００２２】
Ｘ線撮影装置６において、大画面固体撮像素子を含むセンサユニット１と、撮影した画像データを蓄えるキャプチャボード２とが、画像転送専用のバス３を介して接続されている。キャプチャボード２上に転送された画像データは、さらにＰＣＩバス７を通じて、ホストＣＰＵボード４上に転送され、画像処理後、ネットワークインターフェース５を通じて、ＬＡＮ１００に接続された外部装置、例えば、医療用のプリンタ２００や、他の診断装置２０１に転送され、医療用の画像診断に利用される。
【００２３】
図１は、図２のＸ線撮影装置６におけるデータ転送処理部の構成を示す。
【００２４】
このデータ転送処理部は、キャプチャボード２と、ホストＣＰＵボード４とのシステムによって構成される。
【００２５】
キャプチャボード２において、１１は、ボード内の処理を統括制御するためのローカルＣＰＵである。１２は、ローカルＣＰＵ１１と、ホストＣＰＵ２０との通信に使用するためのＤＰＲＡＭである。１３は、センサユニット１からデータが入力され記憶されるＳＤＲＡＭである。１４は、ＳＤＲＡＭ１３のモードを切り替えるモードレジスタである。１５は、ＳＤＲＡＭ１３に入力される基準クロック（ＣＬＫ）である。１６は、ＳＤＲＡＭ１３からのデータが入力されるＦＩＦＯメモリである。１７は、ＰＣＩバスインターフェースである。このＰＣＩバスインターフェース１７内には、ＦＩＦＯメモリ１６内のデータのＤＭＡ転送制御を行うためのＤＭＡコントローラ（ＤＭＡＣ）１８が設けられている。
【００２６】
ホストＣＰＵボード４において、２０は、本発明に係る図７〜図９のＤＭＡ処理を実行するためのホストＣＰＵである。なお、本例では、ホストＣＰＵ１８上で動作するＯＳ（オペレーティングシステム）として、ＷｉｎｄｏｗｓＮＴを採用している。２１は、ＦＩＦＯメモリ１６からＤＭＡ転送されたデータが入力されるホストメモリである。２２は、本発明に係る図７〜図９の制御プログラム２２ａが記憶されるＲＡＭである。２３は、ＤＭＡ処理の際に用いられるマップレジスタである。２４は、ＰＣＩバスインターフェースである。２５は、キャッシュメモリである。なお、制御プログラム２２ａは、ＲＡＭ２２の他に、ＲＯＭ（図示せず）に記憶したり、また、別体として、フロッピーディスク等の記憶媒体に記憶してもよい。
【００２７】
以下、データ転送処理部の動作について説明する。
【００２８】
データ転送処理部は、ＤＭＡ転送の設定とともにタイマー（制御プログラム２２ａにより実行されるソフト的な手段であるが、ハード的な手段でも構成が可能である）を起動し、ＤＭＡ終了割込み毎に転送に要した転送時間と転送バイト数を記憶する。
【００２９】
異常が生じた場合には、タイマーのタイムアウト割込みが入るので、ＤＭＡ転送を停止してバスの開放およびＳＤＲＡＭ１３のモード切り換えをするとともに、転送異常をユーザに通知することができる。
【００３０】
正常時には、次のＤＭＡ設定とタイマーを初期化し、以後すべてのデータ転送を終了するまで繰り返す。
【００３１】
以上の基本シーケンスを用いてデータ転送を繰り返すが、ホストＣＰＵ２０のクロックバスのメモリコントローラのウェイト時間、メモリの速度や種類などハードウェアによって、ＤＭＡ転送の時間が異なる。すなわち、一般にはＤＭＡ転送を設定するオーバヘッドを最小にする方が効率良く転送ができるはずだが、ハードウェアの組み合わせを変えて転送サイタルを計測すると、１度に転送するデータサイズと割込み回数の組み合わせにおいて、転送時間が異なる。
【００３２】
（メモリ空間）
次に、ＤＭＡ転送に係るメモリ空間を、図３に基づいて説明する。
【００３３】
Ｘ線撮影装置６を制御するユーザプロセスは、ＯＳ上の仮想メモリ空間で動作しており、撮影データを画像処理するために１４ＭＢ（メガバイト）の画像データをキャプチャボード２上のＳＤＲＡＭ１３からホストメモリ２１にＤＭＡ転送する。
【００３４】
しかし、ＳＤＲＡＭ１３、ＤＭＡコントローラ１８、ホストメモリ２１などは、物理メモリ空間でアドレスを指定して動作しているため、ユーザプロセスヘデータ転送を実現するためには、図３に示すように、ユーザ仮想メモリ３００と、物理メモリ３０１と、論理メモリ３０２との間においてメモリアドレスの変換が必要となる。この図３は、全転送要求されたバイト数Ｂr に対して、各アドレスで示す所定サイズのブロックに分割してデータを転送する例である。
【００３５】
ここで、ホストＣＰＵ２０の一例としてＰentiumを用いた場合には、１度にアクセス可能なサイズは４ＫＢのページサイズという制限があるが、ＷindowsＮＴには、ホストメモリ２１を論理的にＯＳの空間内に連続領域に割り付けることで、データ転送を１度のＤＭＡ起動に対して行う機能がある。この論理的なアドレス変換を行うのがマップレジスタであり、ｍ個使用して、４×ｍＫＢ単位でバースト転送を可能にしている。
【００３６】
そして、ＳＤＲＡＭ１３のモードをモードレジスタ１４で切り替え、バースト転送を行うために、ローカルＣＰＵ１１は、ＦＩＦＯメモリ１６にデータを入れる初期化を行う。その後、ＰＣＩバスＩインターフェース１７に内蔵されたＤＭＡコントローラ１８が、ＦＩＦＯ１６からホストメモリ１９へデータを順次バースト転送するだけの処理になる。このとき、ローカルＣＰＵ１１は、そのデータ転送中においても、他のプロセスを実行できる。また、ホストＣＰＵ２０は、所定のＤＭＡサイズに分割されたデータに対して割り込み処理を行い、次のＤＭＡ転送の設定および起動以外は、他のプロセスを実行することができる。
【００３７】
（実験例）
次に、センサユニット１で撮影した１４ＭＢの画像データをＤＭＡ転送するために、分割するサイズについて考える。
【００３８】
図４は、マップレジスタ２３の個数を変え、１回のＤＭＡ転送のサイズを変化させて、１４ＭＢ（ただし、１ＭＢ＝１０２４ＫＢ）の画像データ全体の転送時間を計測した一例である。
【００３９】
転送サイズを規定するマップレジスタ２３の個数がｍ＝４のときは、（１４×１０２４）／１６ＫＢ＝８９６回のＤＭＡ起動および割込み後処理などのＩ／Ｏ処理を行わなければならない。また、ｍ＝１６のときは、２２４回のＩ／Ｏ処理になる。
【００４０】
しかしながら、ＯＳの論理的連続メモリ空間にあるＤＭＡ転送されたデータを、仮想メモリ空間にあるユーザプロセスに対してデータを渡すためには、ＤＭＡコントローラ１８内のキャッシュメモリ、および、ホストメモリ２１内の論理空間あるいはホストＣＰＵボード４上のキャッシュメモリ２５を明示的にメモリフラッシュ（キャッシュメモリ上のデータを吐き出すためのメモリコピー）する必要がある。このメモリフラッシュ中は、次のＤＭＡ転送を行えないため、ＰＣＩバス７上は遊んでいる状態が継続し、メモリフッシュ終了後に次のＤＭＡ転送を起動できる。
【００４１】
図５および図６は、回路上の信号線の状態を示す。図５は、６４ＫＢ単位でＤＭＡ転送を行う場合の例である。３０は、ＤＭＡ転送サイズのレジスタにアクセスする時間を計測したものである。１回の転送について実際にバースト転送している転送時間は３１のように短く、３０から３１を引いた３２の部分が、転送終了割り込み後の処理になる。このとき、割り込みの後処理時間比は、
【００４２】
【数１】
0004046825.tif 000002
【００４３】
となる。
【００４４】
また、図６は、１６ＫＢ単位でＤＭＡ転送を行う場合の例である。このとき、割り込みの後処理時間比は、
【００４５】
【数２】
0004046825.tif 000003
【００４６】
となる。この場合、割込み後処理に時間がかかっているが、その割合が図５に比べて７２％から約６５％と少なくなっている。この後処理時間のほとんどがメモリフラッシュにかかっていることから、ＤＭＡ転送先であるＯＳの論理空間がキャッシュ上にある場合に、キャッシュメモリからホストメモリ２１へのメモリコピーになるため、高速に転送できると推測できる。
【００４７】
以上の実験結果から、ＣＰＵクロック、バスクロック、メモリスピード、メモリアクセスウェイト、キャッシュサイズなどのハードウェア構成によって、１度にＤＭＡ転送を行う最適なサイズ、すなわち、マップレジスタ２３の個数ｍが異なる結果になる。
【００４８】
すなわち、ホストＣＰＵ２０やホストメモリ２１が十分に速い場合、さらにメモリアクセスウェイトが小さい場合やキャッシュメモリ２５が多い場合は、ＤＭＡ転送の起動および割込み後処理にかかるＣＰＵオーバヘッドが多くても、ＰＣＩバス７の使用率を高める方が全体の転送時間を短くすることができる。一方、このオーバヘッドが多くなりすぎると、ホストＣＰＵ１８が遅い場合や、チップセットの性能により、かえって転送時間がかかる結果になる。
【００４９】
（ＤＭＡ転送処理）
次に、ＤＭＡ転送の処理を、図７〜図１１に基づいて説明する。以下に示す処理は、ホストＣＰＵ２０が制御プログラム２２ａを用いて行う制御例である。
【００５０】
本処理では、画像データを複数に分割してＤＭＡ転送を繰り返して行う場合において、自動的に最適な転送サイズに近づける処理を行う。
【００５１】
まず、図７に示すように、ステップＳ１０１において、ユーザプロセスからの要求により、初期化処理を行う。この場合、係数は、以下のような内容とする。
【００５２】
ｍ：マップレジスタの個数
Ｆ：最適な転送サイズが決定済か否かを示すフラグ
Ｔｐ：前回のＤＭＡ転送に要した単位バイト数当たり（ここでは４ＫＢ）の転送時間
Ｔｎ：今回のＤＭＡ転送に要した単位バイト数当たり（ここでは４ＫＢ）の転送時間
ｔ：今回のＤＭＡ転送に要した転送時間
Ｂｎ：今回のＤＭＡ転送に要したバイト数
Ｂｔ：現在までの転送済のバイト数
Ｂｒ：全転送要求されたバイト数
また、転送先アドレスを計算し、ＤＭＡ転送の設定および起動を行う。これにより、タイマーがスタートし、ＦＩＦＯメモリ１６からホストメモリ２１への画像データのＤＭＡ転送が開始される。
【００５３】
次に、図８に示すように、ステップＳ１０２では、ＤＭＡ終了割込み処理に入る。そして、ステップＳ１０３では、ＤＭＡコントローラ１８がＤＭＡ転送処理終了を示す割り込み信号を発生したかをチェックする。
【００５４】
ＤＭＡ終了割り込みを発生した場合には、ステップＳ１０４に進む。ステップＳ１０４では、タイマーを停止し、ＤＭＡ転送に要した転送時間ｔを記憶する。
ステップＳ１０５では、現在までに転送済のバイト数Ｂｔを算出する。
【００５５】
ステップＳ１０６では、現在までの転送済のバイト数Ｂｔが、全転送要求されたバイト数Ｂｒを超えているか否かをチェックする。
【００５６】
ステップＳ１０６において、現在までのバイト数Ｂｔが全バイト数Ｂｒを超えた場合は、ステップＳ１０７に進み、ＳＤＲＡＭ１３のモード切り換えを行う。そして、ステップＳ１０８にて、ＤＭＡ転送を正常な状態で終了する。
【００５７】
一方、現在までのバイト数Ｂｔが全バイト数Ｂｒを超えていない場合は、図９に示すステップＳ１１０に進む。ステップＳ１１０以降の処理は、最適な転送サイズを決定する処理である。
【００５８】
ステップＳ１１０では、画像データの転送サイズが最適な転送サイズになっているか否かをチェックする。最適な転送サイズになっていない場合には、ステップＳ１１１に進む。
【００５９】
ステップＳ１１１では、単位バイト数当たりの転送時間Ｔｐを算出する。そして、ステップＳ１１２に進み、前回の転送時間が有効か否かをチェックする。
【００６０】
ステップＳ１１２において、前回の転送時間が有効でない場合は、ステップＳ１１３に進み、個数ｍと、前回の転送時間Ｔｐとの値を入れ替える。一方、前回の転送時間が有効である場合は、ステップＳ１１４に進み、前回の転送時間Ｔｐと今回の転送時間Ｔｎとを比較する。
【００６１】
ステップＳ１１４において、今回の転送時間Ｔｎが前回の転送時間Ｔｐよりも短い場合は、ステップＳ１１３に進む。一方、今回の転送時間Ｔｎが前回の転送時間Ｔｐよりも長い場合は、ステップＳ１１５に進み、個数ｍを入れ替えると共に、フラグＦをＴＲＵＥとすることにより、最適な転送サイズが決定される。
【００６２】
その後、ステップＳ１１６に進む。このステップＳ１１６は、初期ルーチンのステップＳ１０１に対応するものである。この場合、今回の転送バイト数Ｂｔを新たに算出する。そして、ＤＭＡ転送の設定および起動を行い、タイマーをスタートさせて、前回と同様に、ＦＩＦＯメモリ１６からホストメモリ２１への画像データのＤＭＡ転送を開始する。以後、ステップＳ１０２に進み、同様な処理を繰り返す。
【００６３】
また、ステップＳ１１０において、最適な転送サイズになっていた場合には、ステップＳ１１６に直接進んで処理を続行する。
【００６４】
以上述べたように、最適な転送サイズを動的に探しながら、ＤＭＡ転送を繰り返して行う。
【００６５】
また、万一、ＤＭＡコントローラ１８等のハードウェアの不具合が生じた場合には、ステップＳ１０３において、ＤＭＡ転送処理終了を示す割り込みがないと判断して、ステップＳ２０１に進み、ＤＭＡタイムアウト処理を実行する。
【００６６】
ステップＳ２０１では、タイマーを停止し、ＳＤＲＡＭ１３のモード切り換えを行う。そして、ステップＳ２０２に進んで、ユーザに異常状態を通知し、全ての処理を終了する（ステップＳ２０３）。このようなタイムアウト処理により、システム全体を誤動作させることなく、ユーザに異常を通知し、保守点検を促すことができる。
【００６７】
また、図１０〜図１１は、上述した最適な転送サイズを決定する処理を模式的に示したものである。
【００６８】
図１０の例では、初期設定の後、２回目の処理で最適な転送サイズを決定し、以後ｍ＝１として最後の処理まで転送処理を続行する。
【００６９】
図１１の例では、初期設定の後、４回目の処理で最適な転送サイズを決定し、以後ｍ＝４として最後の処理まで転送処理を続行する。
【００７０】
なお、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。また、本発明はシステム或いは装置にプログラムを供給することによって達成される場合にも適用できることはいうまでもない。この場合、本発明を達成するためのソフトウェアによって表されるプログラムを格納した記憶媒体を該システム或いは装置に読み出すことによって、そのシステム或いは装置が、本発明の効果を享受することが可能となる。
【００７１】
【発明の効果】
以上説明したように、本発明によれば、データを複数に分割してＤＭＡ転送を繰り返して行う場合において、ＤＭＡ転送の１回当たりの転送時間および転送バイト数を逐次比較監視しながら、転送サイズを各転送単位で動的に変化させるようにしたので、データのＤＭＡ転送の総転送時間を短縮させることができる。
【００７２】
また、これにより、ハードウェアの組み合わせが幾通りあっても、何度も実験を繰り返して最適値を求めなくても、自動的に最適値に近似することが可能なため、バス上のデータ転送が多くなっている場合にも、自動的に最適なバス使用効率に近づけることができる。
【図面の簡単な説明】
【図１】本発明の実施の形態であるデータ転送装置の構成を示すブロック図である。
【図２】本発明に適用される医療用システムの構成例を示すブロック図である。
【図３】ＤＭＡ転送に係るメモリ空間を説明する説明図である。
【図４】ＤＭＡ転送のサイズと転送時間との関係を示す説明図である。
【図５】ＤＭＡ転送の設定と転送時間との関係を示す説明図である。
【図６】ＤＭＡ転送の設定と転送時間との関係を示す説明図である。
【図７】ＤＭＡ転送の制御を示すフローチャートである。
【図８】図７に続くＤＭＡ転送の制御を示すフローチャートである。
【図９】図８に続くＤＭＡ転送の制御を示すフローチャートである。
【図１０】最適な転送サイズを決定する処理を模式的に説明する説明図である。
【図１１】最適な転送サイズを決定する処理を模式的に説明する説明図である。
【符号の説明】
２０  ホストＣＰＵ
２２ａ  制御プログラム
【図１】
0004046825.tif 000004
【図２】
0004046825.tif 000005
【図３】
0004046825.tif 000006
【図４】
0004046825.tif 000007
【図５】
0004046825.tif 000008
【図６】
0004046825.tif 000009
【図７】
0004046825.tif 000010
【図８】
0004046825.tif 000011
【図９】
0004046825.tif 000012
【図１０】
0004046825.tif 000013
【図１１】
0004046825.tif 000014