(57)【要約】【課題】小刻みなデータ転送の多発を防止して、データ転送効率を改善できるデータ転送装置を提供する。【解決手段】データ転送装置（１０００）において、転送先デバイス（１２）は転送元デバイス（１１）にデータ（Ｄ）とアドレス（Ａ）が多重されたバス（２００）で接続され、メモリ（１３）は転送先デバイス（１２）に接続されて転送元デバイス（１１）から転送されたデータ（ＡＤ）を格納し、転送元デバイス（１１）は、転送先デバイス（１２）のデータ受信状況に応じてメモリ（１３）対するデータ（ＡＤ）の転送を制御する。【選択図】図１
2009015566.tif 000002
【特許請求の範囲】
【請求項１】
第１のデバイスと、
前記第１のデバイスにデータとアドレスが多重されたバスで接続される第２のデバイスと、
前記第２のデバイスに接続されて前記第１のデバイスから転送されたデータを格納するメモリと備えるデータ転送装置であって、
前記第１のデバイスは、前記第２のデバイスのデータ受信状況に応じて前記メモリ対する前記データの転送を制御することを特徴とするデータ転送装置。
【請求項２】
前記第２のデバイスは、
前記第１のデバイスとの間の信号交換を制御するデバイスインターフェースと、
前記デバイスインターフェースと前記メモリに接続されて、前記第１のデバイスから当該メモリへのデータ転送を制御するメモリインターフェースと、
前記第１のデバイスからのデータ転送終了割込信号に基づいて、データ転送の終了を認識する制御用ＣＰＵとを備える請求項１に記載のデータ転送装置。
【請求項３】
前記デバイスインターフェースは、
前記バスとの信号交換を制御するバスインターフェースと、
前記バスインターフェースに接続されて、前記バスから出力されるアドレス／データ多重信号をバッファリングする受信バッファと、
前記バスインターフェースに接続されて、前記バスから出力されるアドレスもしくはコマンドを抽出した第１の抽出信号をバッファリングすると共に、前記受信バッファでバッファリングされたアドレスもしくはコマンドを抽出した第２の抽出信号を出力する制御バッファと、
前記バスインターフェースに接続されて、前記バスから出力されるコマンド／バイトイネーブル多重信号をバッファリングするＣＭＤ／ＢＥ＃バッファと、
前記受信バッファに接続されて、当該受信バッファから出力される前記アドレス／データ多重信号からアドレスとデータを分離するＡＤ分離回路と、
前記ＣＭＤ／ＢＥ＃バッファに接続されて、当該ＣＭＤ／ＢＥ＃バッファから出力されるコマンド／バイトイネーブル多重信号よりコマンドとバイトイネーブルとを分離するＣＭＤ／ＢＥ＃分離回路と、
前記ＡＤ分離回路に接続されて、当該ＡＤ分離回路から出力される前記データをバッファリングするＤＭＡ用バッファと、
前記ＡＤ分離回路から出力されるアドレスと、前記ＣＭＤ／ＢＥ＃分離回路から出力されるコマンドおよびバイトイネーブル信号が入力されると共に、前記メモリへのデータ転送を制御するメモリインターフェース制御回路と、
前記コマンドと、前記第１の抽出信号と、前記第２の抽出信号と、前記ＣＭＤ／ＢＥ＃バッファでバッファリングされたコマンドと、前記制御用ＣＰＵによって設定される閾値とに基づいて、前記受信バッファのデータプロトコルを解析する受信バッファデータプロトコル解析回路とを備える請求項２に記載のデータ転送装置。
【請求項４】
前記受信バッファデータプロトコル解析回路は、
前記第１の抽出信号に基づいて転送されてくるアドレスの数をカウントし、
前記第２の抽出信号に基づいてアドレスの数をカウントし、
前記２つのカウント値の差分を算出して前記受信バッファに滞留されているアドレス数もしくはコマンド数を抽出し、
前記制御用ＣＰＵによって設定される閾値レジスタの閾値と前記アドレス数もしくはコマンド数との大小関係を算出し、
前記閾値が、前記アドレス数もしくはコマンド数より大きく、さらに前記受信バッファがバッファフルでない場合にのみ前記第１のデバイスからのデータ転送を許可する信号を出力することを特徴とする請求項３に記載のデータ転送装置。
【請求項５】
前記デバイスインターフェースは、前記バスよりアドレスが転送されてくることをトリガとして、ＤＭＡを起動して前記受信バッファから前記ＤＭＡ用バッファまでデータ転送を行うことを特徴とする請求項４に記載のデータ転送装置。
【請求項６】
前記バスはＰＣＩバスであることを特徴とする請求項１に記載のデータ転送装置。
【請求項７】
前記第１のデバイスからのデータ転送を許可する信号は、ＰＣＩバスのＴＲＤＹ＃信号を使用することを特徴とする請求項４に記載のデータ転送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイス間でデータを転送するデータ転送装置に関する。
【背景技術】
【０００２】
データバッファを介してデータ転送を行うデータ通信装置としては、データバッファがフルの場合はデータ転送元に対してデータバッファへの書き込み待ち信号をアサ―トしてデータ転送を待機させ、データバッファがフルでなくなると書き込み待ち信号をネゲートしてデータ転送を再開する技術（特許文献１）が提案されている。
【特許文献１】特開平０３−１５６５６０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上述の技術においては、データバッファがフルか否かに基づいて、データ転送が制御される。しかしながら、ＰＣＩバスのようなデータとアドレスが多重されたプロトコルをもつデータ通信において、データバッファからのデータ読み出しをＤＭＡで行う場合には、以下に述べる問題が発生する。
【０００４】
具体的には、データバッファ内に複数のアドレスが格納された状態（ＰＣＩバス上で転送数の少ないバースト転送が多発）に陥ると、データバッファ内にＤＭＡ転送コマンドが滞留し（アドレス１個に対しＤＭＡコマンドが１回発生）、データ転送効率が落ちる。特にリアルタイムデータ転送においては、ＤＭＡ１回あたりの転送時間はデータ転送数に関わらず一定である。それゆえに、上記状態に陥るとデータバッファからのデータ読み出し効率が悪くなり、リアルタイム転送ができなくなる。
【０００５】
また、デジタル機器のシステムＬＳＩは、高機能化により複数機能でシェアリングして使用される。そのため、デジタル機器のシステムＬＳＩ用メモリとのデータ転送においては、データ転送許可信号の待ち時間が増える。さらに、外部デバイスとデジタル機器のシステムＬＳＩとの間でのデータ転送も高速化しており、受信バッファがフルになるケースが増大している。そのために、受信バッファフルによるデータ転送制御だけでは、結果小刻みなデータ転送が多発し、データ転送効率が悪化する場合がある。
【０００６】
上述の問題に鑑みて、本発明は小刻みなデータ転送の多発を防止して、データ転送効率を改善できるデータ転送装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記の課題を解決するために本発明は、
第１のデバイスと、
前記第１のデバイスにデータとアドレスが多重されたバスで接続される第２のデバイスと、
前記第２のデバイスに接続されて前記第１のデバイスから転送されたデータを格納するメモリと備えるデータ転送装置であって、
前記第１のデバイスは、前記第２のデバイスのデータ受信状況に応じて前記メモリ対する前記データの転送を制御することを特徴とする。
【０００８】
前記第２のデバイスは、
前記第１のデバイスとの間の信号交換を制御するデバイスインターフェースと、
前記デバイスインターフェースと前記メモリに接続されて、前記第１のデバイスから当該メモリへのデータ転送を制御するメモリインターフェースと、
前記第１のデバイスからのデータ転送終了割込信号に基づいて、データ転送の終了を認識する制御用ＣＰＵとを備えることが望ましい。
【０００９】
前記デバイスインターフェースは、
前記バスとの信号交換を制御するバスインターフェースと、
前記バスインターフェースに接続されて、前記バスから出力されるアドレス／データ多重信号をバッファリングする受信バッファと、
前記バスインターフェースに接続されて、前記バスから出力されるアドレスもしくはコマンドを抽出した第１の抽出信号をバッファリングすると共に、前記受信バッファでバッファリングされたアドレスもしくはコマンドを抽出した第２の抽出信号を出力する制御バッファと、
前記バスインターフェースに接続されて、前記バスから出力されるコマンド／バイトイネーブル多重信号をバッファリングするＣＭＤ／ＢＥ＃バッファと、
前記受信バッファに接続されて、当該受信バッファから出力される前記アドレス／データ多重信号からアドレスとデータを分離するＡＤ分離回路と、
前記ＣＭＤ／ＢＥ＃バッファに接続されて、当該ＣＭＤ／ＢＥ＃バッファから出力されるコマンド／バイトイネーブル多重信号よりコマンドとバイトイネーブルとを分離するＣＭＤ／ＢＥ＃分離回路と、
前記ＡＤ分離回路に接続されて、当該ＡＤ分離回路から出力される前記データをバッファリングするＤＭＡ用バッファと、
前記ＡＤ分離回路から出力されるアドレスと、前記ＣＭＤ／ＢＥ＃分離回路から出力されるコマンドおよびバイトイネーブル信号が入力されると共に、前記メモリへのデータ転送を制御するメモリインターフェース制御回路と、
前記コマンドと、前記第１の抽出信号と、前記第２の抽出信号と、前記ＣＭＤ／ＢＥ＃バッファでバッファリングされたコマンドと、前記制御用ＣＰＵによって設定される閾値とに基づいて、前記受信バッファのデータプロトコルを解析する受信バッファデータプロトコル解析回路とを備えることが望ましい。
【００１０】
前記受信バッファデータプロトコル解析回路は、
前記第１の抽出信号に基づいて転送されてくるアドレスの数をカウントし、
前記第２の抽出信号に基づいてアドレスの数をカウントし、
前記２つのカウント値の差分を算出して前記受信バッファに滞留されているアドレス数もしくはコマンド数を抽出し、
前記制御用ＣＰＵによって設定される閾値レジスタの閾値と前記アドレス数もしくはコマンド数との大小関係を算出し、
前記閾値が、前記アドレス数もしくはコマンド数より大きく、さらに前記受信バッファがバッファフルでない場合にのみ前記第１のデバイスからのデータ転送を許可する信号を出力することを特徴とすることが望ましい。
【００１１】
前記デバイスインターフェースは、前記バスよりアドレスが転送されてくることをトリガとして、ＤＭＡを起動して前記受信バッファから前記ＤＭＡ用バッファまでデータ転送を行うことを特徴とすることが望ましい。
【００１２】
前記バスはＰＣＩバスであることを特徴とすることが望ましい。
【００１３】
前記第１のデバイスからのデータ転送を許可する信号は、ＰＣＩバスのＴＲＤＹ＃信号を使用することが望ましい。
【発明の効果】
【００１４】
本発明では、データとアドレスが多重されたプロトコルをもつデータ通信において、今後のシステムＬＳＩの大規模多機能化やデバイス間のデータ転送速度がアップした場合においても、データ転送性能劣化の改善可能である。
【発明を実施するための最良の形態】
【００１５】
以下に、図１、図２、図３、図４、図５、図６、図７、および図８を参照して、本発明の実施の形態にかかるデータ転送装置について説明する。図１に示すように、データ転送装置１０００は、データ転送元であるデバイス（以降、「転送元デバイス」）１１、データ転送先であるデバイス（以降、「転送先デバイス」）１２、およびメモリ１３を含む。
【００１６】
転送先デバイス１２は、デバイスインターフェース（図１においては、「デバイスＩ／Ｆ」と表示）１２１、メモリインターフェース（図１においては、「メモリＩ／Ｆ」と表示）１２２、およびＣＰＵ１２３を含む。デバイスインターフェース１２１は、ＰＣＩバス２００によって転送元デバイス１１に接続されて、転送元デバイス１１と転送先デバイス１２との間の信号交換を制御する。なお、デバイスインターフェース１２１は、第１のメモリインターフェースバス２０１を介してメモリインターフェース１２２と信号を交換する。メモリインターフェース１２２は、メモリバス２０４によってメモリ１３に接続されて、メモリ１３と転送先デバイス１２との間の信号交換を制御する。
【００１７】
ＣＰＵ１２３は、ＣＰＵバス２０２によってデバイスインターフェース１２１およびメモリインターフェース１２２と接続される。ＣＰＵ１２３はさらに第２のメモリインターフェースバス２０３によってメモリインターフェース１２２と接続されて、転送先デバイス１２の制御を行う。
【００１８】
転送元デバイス１１から転送先デバイス１２に転送されるデータは、ＰＣＩバス２００を介して、デバイスインターフェース１２１に入力される。そして、デバイスインターフェース１２１は、転送元デバイス１１から入力されたデータをメモリ１３に転送するために、転送元デバイス１１から入力されるＰＣＩバスプロトコル信号を第１のメモリインターフェースバス信号Ｓ２０１に変換する。第１のメモリインターフェースバス信号Ｓ２０１は、第１のメモリインターフェースバス２０１を介してメモリインターフェース１２２に入力される。
【００１９】
ＣＰＵ１２３は、ＣＰＵバス２０２を介してデバイスインターフェース１２１（転送元デバイス１１）から入力されるＰＣＩバスプロトコル信号を第２のメモリインターフェースバス信号Ｓ２０３に変換する。第２のメモリインターフェースバス信号Ｓ２０３は、第２のメモリインターフェースバス２０３を介してメモリインターフェース１２２に入力される。
【００２０】
メモリインターフェース１２２は、デバイスインターフェース１２１およびＣＰＵ１２３のそれぞれから入力される第１のメモリインターフェースバス信号Ｓ２０１および第２のメモリインターフェースバス信号Ｓ２０３に基づいて、メモリバス２０４をメモリ１３のインターフェースプロトコルに適合させて、転送元デバイス１１から転送されたデータをメモリ１３に転送する。
【００２１】
転送元デバイス１１からの転送先デバイス１２に対するデータ転送（送出）が終了した際に、転送元デバイス１１は転送先デバイス１２に対して転送終了割込信号ＳＩｅを出力する。転送先デバイス１２から出力された転送終了割込信号ＳＩｅは、デバイスインターフェース１２１を介してＣＰＵ１２３に入力される。
【００２２】
ＣＰＵ１２３においては、転送終了割込信号ＳＩｅに基づいて、転送元デバイス１１から転送先デバイス１２へのデータ転送の終了が認識される。そして、ＣＰＵ１２３は、転送元デバイス１１から入力された転送終了割込信号ＳＩｅをクリアする。なお、転送元デバイス１１による転送終了割込クリアは、ＣＰＵバス２０２、デバイスインターフェース１２１、およびＰＣＩバス２００を経由して行われる。
【００２３】
次に、図２および図３を参照して、デバイスインターフェース１２１について説明する。デバイスインターフェース１２１は、ＰＣＩバスインターフェース回路（図では、「ＰＣＩバスＩ／Ｆ」と表示）２１、受信バッファ２２、制御バッファ２３、ＣＭＤ／ＢＥ＃バッファ２４、ＡＤ分離回路２５、ＣＭＤ／ＢＥ＃分離回路２６、ＤＭＡ用バッファ２７、メモリインターフェース制御回路２８（図では、「メモリＩ／Ｆ制御回路」と表示）、受信バッファデータプロトコル解析回路２９、および閾値レジスタ３０を含む。
【００２４】
ＰＣＩバスインターフェース回路２１は、ＰＣＩバス２００に対するインターフェースである。受信バッファ２２は、ＰＣＩバスインターフェース回路２１のアドレス／データ多重信号ＡＤをバッファリングする。制御バッファ２３は、ＰＣＩバスインターフェース回路２１から出力されるＡＣフェーズ信号ＡＣとＥＮＤフェーズ信号ＥＮＤのバッファリングを制御する。なお、ＡＣフェーズ信号ＡＣは、ＰＣＩバス２００のアドレス／データ多重部のアドレス情報の部分とＣＭＤ／ＢＥ＃多重部のコマンドを示すものである。
【００２５】
ＣＭＤ／ＢＥ＃バッファ２４は、ＰＣＩバスインターフェース回路２１から出力されるコマンド／バイトイネーブル多重信号Ｃ／ＢＥをバッファリングする。ＡＤ分離回路２５は、受信バッファ２２から出力されるアドレス／データ多重信号ＡＤをアドレス信号Ａとデータ信号Ｄとに分離する。
【００２６】
ＣＭＤ／ＢＥ＃分離回路２６は、ＣＭＤ／ＢＥ＃バッファ２４から出力されるコマンド／バイトイネーブル多重信号Ｃ／ＢＥをコマンド信号ＣＭＤとバイトイネーブル信号ＢＥ＃とに分離する。ＤＭＡ用バッファ２７は、ＡＤ分離回路２５から出力されるデータ信号Ｄをメモリインターフェース１２２に転送する際にバッファリングする。メモリインターフェース制御回路２８はＤＭＡ制御信号を生成して、ＤＭＡ用バッファ２７のメモリインターフェース１２２に対する動作を制御する。
【００２７】
受信バッファデータプロトコル解析回路２９は、コマンド信号ＣＭＤと、制御バッファ２３に入力されるＡＣフェーズ信号ＡＣと、制御バッファ２３から出力されるＡＣフェーズＤ信号ＡＣＤと、ＣＭＤ／ＢＥ＃バッファ２４でバッファリングされたコマンド信号ＣＭＤと、制御用ＣＰＵ１２３によって設定される閾値レジスタの閾値ＴＨとに基づいて、受信バッファ（２２）のデータプロトコルを解析する。
【００２８】
受信バッファデータプロトコル解析回路２９は、転送元デバイス１１からのＰＣＩバス信号が受信バッファ２２に入力される際のアドレスＡの数と、受信バッファ２２から読み出される際のアドレスＡの数とに基づいて、転送元デバイス１１からのデータ転送を許可する。具体的には、受信バッファデータプロトコル解析回路２９は、ＰＣＩバスインターフェース回路２１から出力されるＡＣフェーズ信号ＡＣに基づいて、アドレスＡが受信バッファ２２に入力される際に、そのアドレスの数（以降、入力アドレス数ＡＣ＿Ｎｕｍ）をカウントする。
【００２９】
さらに、受信バッファデータプロトコル解析回路２９は、制御バッファ２３から出力されるＡＣフェーズＤ信号ＡＣＤに基づいて、受信バッファ２２からアドレスＡが読み出される際に、そのアドレス数（以降、出力アドレス数ＡＣＤ＿Ｎｕｍ）をカウントする。
【００３０】
そして、受信バッファデータプロトコル解析回路２９は、入力アドレス数ＡＣ＿Ｎｕｍと出力アドレス数ＡＣＤ＿Ｎｕｍの差分を算出して前記受信バッファ２２に滞留されているアドレス数もしくはコマンド数を抽出する。抽出されたアドレス数およびコマンド数を滞留アドレス数Ａ＿Ｎｕｍと総称する。受信バッファデータプロトコル解析回路２９は、滞留アドレス数Ａ＿Ｎｕｍが閾値ＴＨより大きく、且つ受信バッファ２２がバッファフルでない場合にのみ転送元デバイス１１からのデータ転送を許可する転送許可信号ＳｐをＰＣＩバスインターフェース回路２１に対して出力する。なお、転送許可信号Ｓｐは、ＰＣＩバスのＴＲＤＹ＃信号が使用される。
【００３１】
図３を参照して、ＰＣＩバスインターフェース回路２１によるＡＣフェーズ信号ＡＣおよびＥＮＤフェーズ信号ＥＮＤの生成について説明する。同図に示す「ＣＬＫ」、「ＲＥＱ＃」、「ＧＮＴ＃」、「ＦＬＡＭＥ＃」、「ＩＲＤＹ＃」、「ＴＲＤＹ＃」、「ＤＥＶＳＥＬ＃」、「ＡＤ」、および「Ｃ／ＢＥ＃」はＰＣＩバスの規格に準ずる信号であるので、詳しい説明は割愛する。
【００３２】
ＡＣフェーズ信号ＡＣは、ＰＣＩバス２００のアドレス／データ多重信号ＡＤとコマンド／バイトイネーブル多重信号Ｃ／ＢＥ＃から、アドレスＡとコマンドＣＭＤのポジションを示す信号である。ＡＣフェーズ信号ＡＣは、ＦＬＡＭＥ＃、ＩＲＤＹ＃、ＴＲＤＹ＃、ＤＥＶＳＥＬ＃に基づいて生成される（ＦＬＡＭＥ＃＝“０”、ＩＲＤＹ＃＝“１”、ＴＲＤＹ＃＝“１”、ＤＥＶＳＥＬ＃＝“１”）。
【００３３】
ＥＮＤフェーズ信号ＥＮＤもＡＣフェーズ信号ＡＣと同様に、ＦＬＡＭＥ＃、ＩＲＤＹ＃、ＴＲＤＹ＃、およびＤＥＶＳＥＬ＃に基づいて生成される（ＦＬＡＭＥ＃、ＩＲＤＹ＃、ＴＲＤＹ＃、ＤＥＶＳＥＬ＃の全ての信号が立ち上がったことを検出）。また、ＰＣＩバスインターフェース回路２１におけるバッファ制御信号は、ＦＬＡＭＥ＃＝“０”、
ＩＲＤＹ＃＝“０”、ＴＲＤＹ＃＝“０”およびＤＥＶＳＥＬ＃＝“０”で、それぞれの
バッファへの書き込みをアクティブにする。
【００３４】
メモリインターフェース制御回路２８は、デバイスインターフェース１２１とメモリインターフェース１２２との間の信号交換を制御する。具体的には、メモリインターフェース制御回路２８がメモリインターフェース１２２に対してデータ転送要求信号Ｒｄを出力する。データ転送要求信号Ｒｄに応答して、メモリインターフェース１２２はデータ転送許可信号ＰｄがアクティブになればデータＤを転送する。つまり、ＤＭＡ用バッファ２７に格納されたデータＤがメモリインターフェース１２２に出力される。
【００３５】
なお、メモリインターフェース１２２に対して、メモリインターフェース制御回路２８からアドレスＡ、コマンドＣＭＤ、バイトイネーブルＥＮｂが出力される。アドレスＡはメモリ１３のどの領域にアクセスするかを指示し、コマンドＣＭＤはメモリ１３にライトするかリードするかを指示し、バイトイネーブルＥＮｂはメモリ１３にライトする際にバイト単位でのアクセスを指示する。よって、本実施の形態においては、転送元デバイス１１からアドレスＡが送付されてくることをトリガとして、メモリインターフェース１２２へのＤＭＡ転送が行われる。
【００３６】
次に、図４および図５を参照して、上述のデータ転送装置１０００におけるデータ転送について説明する。図４において、縦軸は、データ転送装置１０００の各構成要素から出力される信号を表しており、横軸は時間の経過を表している。同図においては、時間は左から右に向かって経過する。
【００３７】
具体的には、第１段目のＡＤは、受信バッファ２２からの出力されるアドレス／データ多重信号ＡＤを表している。なお、１１個の□はそれぞれ、アドレス／データ多重信号ＡＤの内容を表している。なお、表現の都合上、１１個の□の中に表示されている文字で、それぞれを識別するものとする。つまり、２つの「Ａ」はアドレス信号Ａを表しており、「１」、「２」、「３」、「４」、「５」、「６」、「７」、および「８」はデータ信号Ｄを表している。これらの８つのデータを、データ信号Ｄ１、Ｄ２、Ｄ３、Ｄ４、Ｄ５、Ｄ６、Ｄ７、およびＤ８と識別する。また、「Ｅ」はデータ終了転送フラグＥを表している。
【００３８】
時間的に最初のアドレス信号Ａは、データＤ１〜Ｄ８のデータ転送開始のためのトリガとして転送元デバイス１１から入力されたものである。後のアドレス信号Ａは、データ終了転送フラグＥのデータ転送開始のためのトリガとして転送元デバイス１１から入力されたものである。
【００３９】
第２段目は、受信バッファ２２から出力されるアドレス／データ多重信号ＡＤを表している。この段に表されている２つのアドレス信号Ａおよびデータ信号Ｄ１〜Ｄ８は、上述した第１段に表されている２つのアドレス信号Ａおよびデータ信号Ｄ１〜Ｄ８にそれぞれ対応している。
【００４０】
第３段目は、受信ＡＤ分離回路２５から出力されるデータ信号Ｄを表している。第４段目は、ＡＤ分離回路２５から出力されるアドレス信号Ａを表している。第５段目は、ＣＭＤ／ＢＥ＃分離回路２６から出力されるコマンド信号ＣＭＤ（なお、紙面の都合上、図においてはＣと表示）を表している。第６段目はＤＭＡ用バッファ２７に入力されるデータ信号Ｄを表している。
【００４１】
第７段目はデータ転送要求信号Ｒｄを表し、第８段目はデータ転送許可信号Ｐｄを表している。第９段目はＤＭＡ用バッファ２７からの出力を表し、第１０段目はメモリデータ入力を表している。
【００４２】
上述の図４においては、転送元デバイス１１からアドレスＡとデータＤ（１、２、３、４、５、６、７、８）が転送先デバイス１２に転送されてきた場合の動作が表されている。転送元デバイス１１は、データ転送終了後に、データ転送終了フラグをメモリ１３の予め設定された所定のアドレスに書き込む。そして、転送先デバイス１２のＣＰＵ１２３は、メモリ１３の所定のアドレスにデータ転送終了フラグが書き込まれていることを確認することで、転送元デバイス１１からメモリ１３へのデータ転送が終了したことを確認する。
【００４３】
図４において、転送元デバイス１１からはアドレスＡとデータＤ１〜Ｄ８が転送された後に、データ終了転送フラグＥが予め決められたデータ転送終了フラグ書き込みアドレスに転送される。上述のように、転送元デバイス１１からアドレスＡが送られてくることをトリガに、ＤＭＡ転送が起動される。図４では、データＤ１〜Ｄ８とデータＥ（データ終了転送フラグＥ）の２回のＤＭＡ転送が発生する（メモリインターフェース１２２に対して、データ転送要求信号Ｒｄが２回発生する）。
【００４４】
次に、図５を参照して、データ転送装置１０００によるデータ転送動作について説明する。データ転送装置１０００が起動すると、先ず、ステップＳ２１において、制御バッファ２３から出力されるＡＣフェーズＤ信号ＡＣＤによって、ＤＭＡ用バッファ２７へのデータ転送が開始される。そして、制御は次のステップＳ２２に進む。なお、ＡＣフェーズＤ信号ＡＣＤは、ＡＣフェーズ信号ＡＣを制御バッファ２３で遅延させたものである。
【００４５】
ステップＳ２２において、データ転送の判断がなされる。具体的には、図３を参照して説明したように、ＦＬＡＭＥ＃＝ＴＲＡＤＹ＃＝ＴＲＥＡＤＹ＃＝ＤＥＶＳＥＬ＃＝０が成立しているか否かが判断される。成立している場合には、実際にデータが転送される。そして、制御は次のＳ２３に進む。
【００４６】
ステップＳ２３において、メモリ１３に当該ＤＭＡのデータが全て転送されたか否かが判断される。具体的には、制御バッファ２３からＥＮＤフェーズＤ信号ＥＮＤＤとして“
１”が出力されることによって、ＤＭＡ転送が完了する。そして、制御は次のステップＳ
２４に進む。
【００４７】
一方、ＥＮＤフェーズＤ信号ＥＮＤＤとして“０”が出力されている場合では、データ
の全てがまだ転送されてないので、制御はステップＳ２２に戻り、ＦＬＡＭＥ＃＝ＴＲＡＤＹ＃＝ＴＲＥＡＤＹ＃＝ＤＥＶＳＥＬ＃＝０が成立しているか否かが再度判断される。成立している場合には、実際にデータが転送されて、制御は再度Ｓ２３に進む。
【００４８】
なお、ＥＮＤフェーズＤ信号ＥＮＤＤは、ＥＮＤフェーズ信号ＥＮＤを制御バッファ２３で遅延させたものである。このように、ＤＭＡ転送開始から、ＤＭＡ転送終了までは、ソフトウェアの介在を必要としない。そして、制御は次のステップＳ２４に進む。
【００４９】
ステップＳ２４において、ＣＰＵ１２３が転送終了割込信号ＳＩｅを認識したか否かが判断される。転送終了割込信号ＳＩｅが認識されると、Ｙｅｓと判断されて、制御はステップＳ２５に進む。このように、ＤＭＡ転送は、ＣＰＵ１２３が転送終了割込信号ＳＩｅを認識する（Ｓ２４）まで行われる。つまり、現行のＤＭＡ転送が終了するまでは、次のＤＭＡ転送は開始しない。そして、ＣＰＵ１２３が転送終了割込信号ＳＩｅを認識（Ｓ２４）した時点で、ＣＰＵ１２３で転送終了割込信号ＳＩｅがネゲートされる（ソフトウェア処理：Ｓ２５）。
【００５０】
図６を参照して、転送元デバイスから小刻みなデータ転送が行われた場合のデータ転送の効率悪化について説明する。図６は上述の図４と同様に、転送元デバイス１１からアドレスＡとデータＤが転送先デバイス１２に転送されてきた場合に、受信バッファ２２の格納データ数を８とし、受信バッファ２２がフルかどうかでデータ転送を制御した場合の一例を示している。
【００５１】
図６においては、図４に受信バッファ状況を表すパラメータが追加されている。同パラメータのＬｏｗは受信バッファ２２がフルで受信不可の状態にあることを示し、Ｈｉｇｈは受信バッファ２２がフルではなく受信可能な状態にあることを示している。
【００５２】
先ず、１回目のデータ転送（アドレスＡの後にデータ１、２、３、４、５、６、７が転送）が行われ、受信バッファ２２がフルになり受信不可の状態になり、その後は受信バッファ２２からデータがＤＭＡバッファ２７に転送されるごとに、受信バッファ２２がフルでなくなり受信可能な状態になる。この際、転送元デバイス１１から転送先デバイス１２への転送はアドレス付でデータが転送されるので、少なくとも受信バッファが２個以上空きにならないと受信バッファ２２は受信可能な状態に遷移しない。
【００５３】
受信バッファ２２が受信可能な状態になると、次に受信バッファ２２がフルになるまではデータ転送が行われる。本例においては、受信バッファ２２のデータ格納数は最大８に設定されており、受信バッファ２２に滞留する最大アドレス数は４となる。結果、受信バッファ２２にアドレスＡが４個滞留した場合には、図６に示すようにＤＭＡ転送は１つのデータに対して１回のＤＭＡ転送が行われることになり、データ転送効率が悪い。
【００５４】
図７を参照して、上述の受信バッファがフルか否かの判断に加え、受信データバッファのプロトコルの解析結果に基づいて、閾値を２とした場合のデータ転送について説明する。本例においては、受信バッファ２２に滞留するアドレス数が２になると、受信バッファ２２への転送が禁止され、受信バッファ２２に滞留するアドレス数が１に減った時点で、転送が許可される。つまり、３個のデータに対して１回のＤＭＡが行われるので、図６に示した例に比べて、データ数当たりのＤＭＡ転送率が１／３になり、データ転送効率が改善されていることがわかる。
【００５５】
以下に、図８を参照して、図７で説明した受信バッファがフルかどうかに加え、受信データバッファのプロトコルを解析した転送制御方法に関して説明する。
先ず、ステップＳ３１において、パラメータの初期化がされる。つまり、ＡＣフェーズ信号ＡＣのカウンタＡＣ＿Ｎｕｍ（入力アドレス数ＡＣ＿Ｎｕｍ）、ＡＣフェーズＤ信号ＡＣＤのカウンタＡＣＤ＿Ｎｕｍ（出力アドレス数ＡＣＤ＿Ｎｕｍ）、および受信バッファ２２に滞留するアドレス信号ＡのカウンタＡ＿Ｎｕｍ（滞留アドレス数Ａ＿Ｎｕｍ）がそれぞれ０にセットされる。そして、制御はステップＳ３２およびステップＳ３４に進む。
【００５６】
ステップＳ３２において、ＡＣフェーズ信号ＡＣが１（Ｈｉｇｈ）であるか否かが判断される。Ｙｅｓの場合にのみ制御は次のステップＳ３３に進む。
ステップＳ３３において、カウンタＡＣ＿Ｎｕｍが１だけインクリメントされる。そしにて、制御は次のステップＳ３６に進む。
【００５７】
ステップＳ３４において、ＡＣフェーズＤ信号ＡＣＤが１（Ｈｉｇｈ）であるか否かが判断される。Ｙｅｓの場合にのみ制御は次のステップＳ３５に進む。
ステップＳ３５において、カウンタＡＣＤ＿Ｎｕｍが１だけインクリメントされる。そして、制御は次のステップＳ３６に進む。
【００５８】
ステップＳ３６において、受信バッファ２２に滞留するアドレス数が算出される。アドレス数（カウンタＡ＿Ｎｕｍ）は、ステップＳ３３で求められたカウンタＡＣ＿Ｎｕｍから、ステップＳ３５で求められたカウンタＡＣＤ＿Ｎｕｍを減算することによって求められる。そして、制御は次のステップＳ３７に進む。
【００５９】
ステップＳ３７において、カウンタＡ＿Ｎｕｍと閾値レジスタ３０に格納された値とを比較する。カウンタＡ＿Ｎｕｍが閾値レジスタに格納されている閾値ＴＨ以下の場合は、制御はステップＳ３８に進む。カウンタＡ＿Ｎｕｍが閾値レジスタの値より大きい場合、制御はステップＳ３９に進む。
【００６０】
ステップＳ３８において、受信バッファ２２がフルであるか否かが判断される。フルの場合、制御はステップＳ３９に進む。受信バッファ２２がフルでない場合に、制御はステップＳ４０に進む。
【００６１】
ステップＳ３９においては、転送元デバイス１１から受信バッファ２２へのデータ転送が禁止される。そして、制御はステップＳ３２およびステップＳ３４に戻る。
【００６２】
ステップＳ４０においては、転送元デバイス１１から受信バッファ２２へのデータ転送が許可される。そして、制御はステップＳ３２およびステップＳ３４に戻る。
【００６３】
なお、転送元デバイス１１からのデータ転送の許可／禁止は、ＰＣＩバスのＴＲＤＹ＃を加工して行われる。具体的には、元のＴＲＤＹ＃（加工前）が“Ｌｏｗ”の時に、転送
元デバイス１１からのデータ転送が許可される場合は、ＴＲＤＹ＃は“Ｌｏｗ”に設定さ
れる。その他のケースでは、ＴＲＤＹ＃は“Ｈｉｇｈ”に設定される。
【００６４】
さらに、リアルタイム転送を想定した場合には、ＤＭＡのデータ転送要求に対する、ＤＭＡのデータ転送許可が、一定の時間間隔で発生するので、小刻みなデータ転送が発生しない方がリアルタイム転送においては有効になる。つまり、本発明にかかるデータ転送装置は小刻みなデータ転送の多発を防止して、データ転送効率を改善できる。
【００６５】
さらに、本発明にかかるデータ転送装置は、ＰＣＩバスのようなデータとアドレスが多重されたプロトコルをもつデータ通信において、今後のシステムＬＳＩの大規模多機能化やデバイス間のデータ転送速度がアップした場合においても、データ転送性能劣化を改善可能であり、更にリアルタイム転送に有効である。なお、上述の実施の形態においては、ＰＣＩバスでデバイス間の接続を行っているが、データとアドレスが多重されたバスであれば本発明は有用に適応できる。
【産業上の利用可能性】
【００６６】
本発明は、デジタル機器における、デジタル放送機器のシステムＬＳＩとＵＳＢやＥｔｈｅｒなどのデバイス間でのデータ転送システム等に応用することができる。
【図面の簡単な説明】
【００６７】
【図１】本発明の実施の形態にかかるデータ転送装置の構成を示すブロック図
【図２】図１のデバイスインターフェースの構成を示すブロック図
【図３】図１のＰＣＩバスインターフェース回路の動作を表すタイミングチャート
【図４】図１のデータ転送装置におけるデータ転送の説明図
【図５】図１のデータ転送装置によるデータ転送動作を表すフローチャート
【図６】図１のデータ転送装置によるデータ転送動作の説明図１
【図７】図１のデータ転送装置によるデータ転送動作の説明図２
【図８】図１のデータ転送装置によるデータ転送制御を表すフローチャート
【符号の説明】
【００６８】
１１    転送元デバイス
１２    転送先デバイス
１２１  デバイスインターフェース
１２２  メモリインターフェース
１２３  ＣＰＵ
１３    メモリ
２１    ＰＣＩバスインターフェース回路
２２    受信バッファ
２３    制御バッファ
２４    ＣＭＤ／ＢＥ＃バッファ
２５    ＡＤ分離回路
２６    ＣＭＤ／ＢＥ＃分離回路
２７    ＤＭＡ用バッファ
２８    メモリインターフェース制御回路
２９    受信バッファデータプロトコル解析回路
３０    閾値レジスタ
１０００    データ転送装置
【図１】
2009015566.tif 000003
【図２】
2009015566.tif 000004
【図３】
2009015566.tif 000005
【図４】
2009015566.tif 000006
【図５】
2009015566.tif 000007
【図６】
2009015566.tif 000008
【図７】
2009015566.tif 000009
【図８】
2009015566.tif 000010