(57)【要約】【課題】ＤＭＡ転送制御装置において、１回のＤＭＡ転送設定で一時的な転送内容の変更を可能とする。【解決手段】ＤＭＡ転送制御装置は、転送内容を設定するための設定レジスタ群２〜５と、転送実施回数を設定し且つ１回のＤＭＡ転送完了毎に値を更新する転送回数レジスタ１と、転送制御部１２０とを備える。更に、前記ＤＭＡ転送制御装置は、前記転送内容とは異なる他の転送内容を設定するための二次設定レジスタ群１２〜１５と、指定回数レジスタ６とを備える。１回のＤＭＡ転送を開始する毎に、前記転送回数レジスタ１の値と前記指定回数レジスタ６の値との演算結果に従って、前記設定レジスタ群２〜５と前記二次設定レジスタ群１２〜１５との何れかの値を、各転送内容毎に選択して転送制御部１２０に入力する。【選択図】図１
2009151487.tif 000002
【特許請求の範囲】
【請求項１】
転送内容を設定するための設定レジスタ群と、
転送実施回数を設定し且つＤＭＡ転送完了毎に値を更新する転送回数レジスタと、
転送制御部とを備えたＤＭＡ転送制御装置であって、
前記転送内容とは異なる他の転送内容を設定するための二次設定レジスタ群と、
指定回数レジスタとを備え、
ＤＭＡ転送を開始する毎に、前記転送回数レジスタの値と前記指定回数レジスタの値との演算結果に従って、前記設定レジスタ群と前記二次設定レジスタ群の何れかの値が、各転送内容毎に選択されて前記転送制御部に入力される
ことを特徴とするＤＭＡ転送制御装置。
【請求項２】
前記請求項１記載のＤＭＡ転送制御装置において、
前記指定回数レジスタ及び二次設定レジスタ群は、各々、複数設けられ、
前記転送回数レジスタの値と前記複数の指定回数レジスタの値との演算結果に従って、前記設定レジスタ群と前記複数の二次設定レジスタ群の何れかの値が、
各転送内容毎に選択される
ことを特徴とするＤＭＡ転送制御装置。
【請求項３】
前記請求項１又は２記載のＤＭＡ転送制御装置において、
転送サイズ、転送元開始アドレス、転送先開始アドレス、転送モードの一部又は全部が前記設定レジスタ群に格納される
ことを特徴とするＤＭＡ転送制御装置。
【請求項４】
前記請求項１又は２記載のＤＭＡ転送制御装置において、
前記転送回数レジスタと前記指定回数レジスタとの値の一致を前記演算で行う
ことを特徴とするＤＭＡ転送制御装置。
【請求項５】
前記請求項１又は２記載のＤＭＡ転送制御装置において、
前記転送回数レジスタの一部のビットと前記指定回数レジスタの値とを前記演算に用いる
ことを特徴とするＤＭＡ転送制御装置。
【請求項６】
前記請求項１又は２記載のＤＭＡ転送制御装置において、
前記演算内容を決定するための演算レジスタを有する
ことを特徴とするＤＭＡ転送制御装置。
【請求項７】
前記請求項１記載のＤＭＡ転送制御装置において、
前記設定レジスタ群、前記転送回数レジスタ、及び指定回数レジスタを、各々、複数チャネル有し、
チャネル毎に、使用する設定レジスタ群、転送回数レジスタ及び指定回数レジスタを切り替える
ことを特徴とするＤＭＡ転送制御装置。
【請求項８】
前記請求項７記載のＤＭＡ転送制御装置において、
チャネル毎に、前記演算を実施するか、その演算を実施せずに前記設定レジスタ群の該当するチャネルの値を使用するかを制御する
ことを特徴とするＤＭＡ転送制御装置。
【請求項９】
前記請求項１記載のＤＭＡ転送制御装置において、
前記二次設定レジスタ群は、二次転送サイズレジスタを有し、
前記転送回数レジスタの値が最後のＤＭＡ転送でない場合には、前記設定レジスタ群の前記転送サイズレジスタの値を前記転送制御部に入力し、一方、
前記転送回数レジスタの値が最後のＤＭＡ転送となる場合には、前記二次転送サイズレジスタの値を前記転送制御部に入力する
ことを特徴とするＤＭＡ転送制御装置。
【請求項１０】
前記請求項１〜９の何れかに記載のＤＭＡ転送制御装置と、
前記ＤＭＡ転送制御装置の転送元又は転送先としての周辺デバイスとを備えた
ことを特徴とするデータ転送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイス間でデータを転送するＤＭＡ転送制御装置に関する。
【背景技術】
【０００２】
従来、ＣＰＵを経由させずにデータ転送を転送デバイス間で直接行うＤＭＡ転送方法が広く知られており、メモリ同士のデータ転送を両メモリ間で直接行う等において使われている。
【０００３】
ＤＭＡ転送では、データ転送元開始アドレス、データ転送先開始アドレス、データ転送サイズ等の転送に必要な情報をＤＭＡ転送制御装置のレジスタ等に設定し、その後、ＣＰＵ等が転送開始を制御することにより、転送動作を実行する。転送時にはＣＰＵによる転送制御の必要はないため、ＣＰＵを経由する場合に比べて高速にデータ転送を行うことができ、また、ＣＰＵの負担を減らすことができる。レジスタ等に設定された転送サイズだけ転送が完了すれば、ＤＭＡ転送制御装置の設定によって、ＤＭＡ転送終了割り込みをアサートする。ＣＰＵは、ＤＭＡ転送終了割り込みを検知すると、ＤＭＡ転送制御装置のレジスタ等を読み込んで、ＤＭＡ転送の結果やステータスを監視する。
【０００４】
ＤＭＡ転送の使われ方として、複数の転送要求が送られて、同じ内容の転送又は続きのアドレスからの転送を複数回ＤＭＡ転送する場合が多い。例えば、周辺デバイスからメモリにデータを転送する場合、周辺デバイスの持つＦＩＦＯに蓄積されるデータ量を見て転送要求が発生し、それに応じてＤＭＡ転送が行われる。この処理を、決められた総転送数分実施する。
【０００５】
前記の構成において、一回のＤＭＡ転送完了毎にＣＰＵに割り込みを発生させていると、その都度転送内容を設定する必要があり、転送効率が悪くなる。また、ＤＭＡ転送制御装置に転送内容を再設定してＤＭＡ転送する前に、ＦＩＦＯのデータが蓄積されてしまうと、ＦＩＦＯがオーバーフローを起こして、システムとして不具合が生じてしまう。
【０００６】
このような課題に対し、従来、特許文献１に記載されたＤＭＡ転送制御装置がある。このＤＭＡ転送制御装置では、転送回数レジスタに設定した回数だけＤＭＡ転送を繰り返す。具体的には、図１１に示すように、１回のＤＭＡ転送要求に対するデータ転送回数を設定するためのＣＹＣレジスタ６０と、データ転送を行った回数を計数するＣＹＣカウンタ６１と、ＣＹＣレジスタ６０に保持されている回数だけデータ転送を行う毎に、保持している値を更新するＴＲＮカウンタ５２とを設け、ＴＲＮカウンタ６２が所定値になるまで前記の動作を繰り返してデータ転送を行っている。
【特許文献１】特開２００２−７３５２７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、前記従来の転送制御装置では、ＤＭＡの総転送量は、ＣＹＣレジスタ６０の設定値（Ａ）×ＴＲＮカウンタ６２の設定値（Ｂ）となるが、転送させたいＤＭＡの総転送量が（Ａ）の整数倍であるとは限らないため、（Ａ）×（Ｂ）に合わず、端数が生じる場合がある。この時の転送方法として、以下の幾つかの方法が考えられる。
【０００８】
１．（Ａ）×（Ｂ）の転送完了後にＣＰＵに割込みを出して、再び端数分の転送を行うように設定して実行する。
【０００９】
２．端数に合わせて転送データ量を小さくするよう設定値を変更し、（Ａ'）×（Ｂ'）とする。
【００１０】
３．ダミー転送を混ぜて、（Ａ）×（Ｂ）の大きさになるよう調整する。
【００１１】
しかし、前記各々の方法では、デメリットも発生する。例えば、前記１．では、端数以外の転送を実施した後に、再度端数転送用の設定をする必要があり、ソフト設定の手間が発生する。また、前記２．では、一度のＤＭＡ転送要求で転送できるデータ量が小さくなるため、やはり転送が遅くなってしまう。また必要な転送速度に足らなくなり、データがあふれて取り込めない場合が発生することもある。更に、前記３．では、ダミー転送により必要なデータが上書きされてしまう場合もある。
【００１２】
また、前記従来技術では、各ＤＭＡ転送要求により行うＤＭＡ転送に用いる設定レジスタは毎回同じであり、転送元開始アドレスや転送先開始アドレス等も固定又は前回の続きとなるため、一時的に転送量を調整したい場合や転送アドレスを変更したい場合において、柔軟な設定変更ができない。
【００１３】
本発明の目的は、前記で述べたデメリットがなく、端数を含む様々な転送の実現など、柔軟に設定内容を変更できるようにし、より高度なＤＭＡ転送制御装置を提供することにある。
【課題を解決するための手段】
【００１４】
前記目的を達成するため、本発明では、変更したい転送内容を設定する二次設定レジスタを設け、元々の転送内容とこの変更したい転送内容とを転送回数に応じて適宜変更可能な構成を採用する。
【００１５】
具体的に、請求項１記載の発明のＤＭＡ転送制御装置は、転送内容を設定するための設定レジスタ群と、転送実施回数を設定し且つＤＭＡ転送完了毎に値を更新する転送回数レジスタと、転送制御部とを備えたＤＭＡ転送制御装置であって、前記転送内容とは異なる他の転送内容を設定するための二次設定レジスタ群と、指定回数レジスタとを備え、ＤＭＡ転送を開始する毎に、前記転送回数レジスタの値と前記指定回数レジスタの値との演算結果に従って、前記設定レジスタ群と前記二次設定レジスタ群の何れかの値が、各転送内容毎に選択されて前記転送制御部に入力されることを特徴とする。
【００１６】
従って、請求項１記載の発明のＤＭＡ転送制御装置では、ＤＭＡ転送を始める際には、各種レジスタに値を設定し、その後、転送要求によってＤＭＡ転送を開始する際には、先ず、現在の転送回数レジスタの値と指定回数レジスタを用いて演算を行い、その結果によって、設定レジスタ群又は二次設定レジスタ群かを選択し、レジスタの値を転送制御部へ入力する。選択する内容は、転送元開始アドレス、転送先開始アドレス、転送サイズ、転送モードなどの各転送内容毎に異なっていても良い。そして、１回のＤＭＡ転送が完了すれば、転送回数レジスタの値を更新し、再び演算を行って次のＤＭＡ転送時に使用するためのレジスタの値を決定する。転送回数レジスタが０などの所定値に達すれば、ＤＭＡ転送を完了させてＣＰＵに割込みを出力する。よって、ある特定の転送回数においてのみ転送内容の設定を変更することが、１回のＤＭＡ転送設定のみで可能となる。
【００１７】
請求項２記載の発明は、前記請求項１記載のＤＭＡ転送制御装置において、前記指定回数レジスタ及び二次設定レジスタ群は、各々、複数設けられ、前記転送回数レジスタの値と前記複数の指定回数レジスタの値との演算結果に従って、前記設定レジスタ群と前記複数の二次設定レジスタ群の何れかの値が、各転送内容毎に選択されることを特徴とする。
【００１８】
従って、請求項２記載の発明のＤＭＡ転送制御装置では、複数の指定回数において、その各々で異なる転送内容に設定を変更することが、１回のＤＭＡ転送設定のみで可能となる。
【００１９】
請求項３記載の発明は、前記請求項１又は２記載のＤＭＡ転送制御装置において、転送サイズ、転送元開始アドレス、転送先開始アドレス、転送モードの一部又は全部が前記設定レジスタ群に格納されることを特徴とする。
【００２０】
従って、請求項３記載の発明のＤＭＡ転送制御装置では、転送サイズ、転送元開始アドレス、転送先開始アドレスを入れ替えることにより、総転送数が転送サイズの整数倍とならない場合の転送や、複数アドレスからのデータマージや、複数アドレスへのデータ分散が１回のＤＭＡ設定のみで可能となる。また、ある転送回数での転送モードを転送元開始アドレス固定とすることにより、特定アドレスのデータを再取得して転送先開始アドレスに転送すること等が、１回のＤＭＡ設定のみで可能となる。
【００２１】
請求項４記載の発明は、前記請求項１又は２記載のＤＭＡ転送制御装置において、前記転送回数レジスタと前記指定回数レジスタとの値の一致を前記演算で行うことを特徴とする。
【００２２】
従って、請求項４記載の発明のＤＭＡ転送制御装置では、容易に所望の転送回数において転送設定を変更できる。
【００２３】
請求項５記載の発明は、前記請求項１又は２記載のＤＭＡ転送制御装置において、前記転送回数レジスタの一部のビットと前記指定回数レジスタの値とを前記演算に用いることを特徴とする。
【００２４】
従って、請求項５記載の発明のＤＭＡ転送制御装置では、演算結果を周期的に変化させることが可能となる。
【００２５】
請求項６記載の発明は、前記請求項１又は２記載のＤＭＡ転送制御装置において、前記演算内容を決定するための演算レジスタを有することを特徴とする。
【００２６】
従って、請求項６記載の発明のＤＭＡ転送制御装置では、演算内容を転送途中で変更したり、チャネル毎に演算内容を変えることが可能となる。
【００２７】
請求項７記載の発明は、前記請求項１記載のＤＭＡ転送制御装置において、前記設定レジスタ群、前記転送回数レジスタ、及び指定回数レジスタを、各々、複数チャネル有し、チャネル毎に、使用する設定レジスタ群、転送回数レジスタ及び指定回数レジスタを切り替えることを特徴とする。
【００２８】
従って、請求項７記載の発明のＤＭＡ転送制御装置では、指定回数レジスタや二次設定レジスタ群を、複数のチャネル間で共用使用することができる。
【００２９】
請求項８記載の発明は、前記請求項７記載のＤＭＡ転送制御装置において、チャネル毎に、前記演算を実施するか、その演算を実施せずに前記設定レジスタ群の該当するチャネルの値を使用するかを制御することを特徴とする。
【００３０】
従って、請求項８記載の発明のＤＭＡ転送制御装置では、特定のチャネルのみ設定内容の変更を実施することが可能となる。
【００３１】
請求項９記載の発明は、前記請求項１記載のＤＭＡ転送制御装置において、前記二次設定レジスタ群は、二次転送サイズレジスタを有し、前記転送回数レジスタの値が最後のＤＭＡ転送でない場合には、前記設定レジスタ群の前記転送サイズレジスタの値を前記転送制御部に入力し、一方、前記転送回数レジスタの値が最後のＤＭＡ転送となる場合には、前記二次転送サイズレジスタの値を前記転送制御部に入力することを特徴とする。
【００３２】
従って、請求項９記載の発明のＤＭＡ転送制御装置では、転送サイズレジスタの値の端数を二次転送サイズレジスタに設定することにより、総転送数が転送サイズの整数倍とならない場合の転送が１回のＤＭＡ転送設定で可能となり、また二次転送レジスタ群を用いるための演算も容易となる。
【００３３】
請求項１０記載の発明のデータ転送装置は、前記請求項１〜９の何れかに記載のＤＭＡ転送制御装置と、前記ＤＭＡ転送制御装置の転送元又は転送先としての周辺デバイスとを備えたことを特徴とする。
【００３４】
従って、請求項１０記載の発明のデータ転送装置では、周辺デバイスの設定によって１回のＤＭＡ転送における転送サイズの値が決定されるが、総転送数は転送サイズの値の整数倍とならないようなＤＭＡ転送においても、１回のＤＭＡ転送設定で可能となる。
【発明の効果】
【００３５】
以上説明したように、請求項１〜１０記載の発明のＤＭＡ転送制御装置によれば、１つ以上の特定の転送回数においてのみ転送内容を変更することを容易に可能としたので、総転送数が転送サイズの整数倍とならない場合や、複数アドレスからのデータマージや、複数アドレスへのデータ分散などの複雑なデータ転送が、１回のＤＭＡ設定のみで可能となる効果を奏する。
【発明を実施するための最良の形態】
【００３６】
以下、本発明のＤＭＡ転送制御装置の実施形態を図面に基づいて説明する。尚、本発明の実施形態において使用される手法、構成は一例であり、本発明はこれらに限定されるものでない。
【００３７】
（実施形態１）
図１は、本発明の実施形態１におけるＤＭＡ転送制御装置１００の概略構成を示すブロック図である。
【００３８】
図１において、１１０は転送情報を格納する設定レジスタ、１２０は設定レジスタ１１０より入力される情報を元にデータ転送を制御する転送制御部である。
【００３９】
前記設定レジスタ１１０内には、転送回数レジスタ１、転送サイズレジスタ２、転送元開始アドレスレジスタ３、転送先開始アドレスレジスタ４、転送モードレジスタ５の５個のレジスタがあり、これ等のレジスタに格納されている転送回数、転送サイズ、転送元開始アドレス、転送先開始アドレス、転送モードは基本転送情報である。尚、これ等の基本転送情報についても、説明に便宜上、それ等を格納するレジスタと同一番号を付しておく。
【００４０】
また、前記設定レジスタ１１０内には、何回数目であるかを指定する指定回数レジスタ６と、前記転送回数１と指定回数６とを入力して演算する演算回路７が備えられる。更に、設定レジスタ１１０内には、他に、二次的な転送情報の格納レジスタとして、二次転送サイズレジスタ１２、二次転送元開始アドレスレジスタ１３、二次転送先開始アドレスレジスタ１４、二次転送モードレジスタ１５の４個のレジスタが備えられる。これ等のレジスタに格納されている二次的な転送情報（二次転送サイズ、二次転送元開始アドレス、二次転送先開始アドレス、二次転送モード）や前記指定回数についても、以下、それ等を格納するレジスタと同一番号を付して説明する。
【００４１】
更に、図１において、２２は、演算回路７の出力により、転送サイズ２か二次転送サイズ１２の何れかを選択して転送制御部１２０に出力するセレクタ、２３は、演算回路７の出力により、転送元開始アドレス３か二次転送元開始アドレス１３の何れかを選択して転送制御部１２０に出力するセレクタ、２４は演算回路７の出力により、転送先開始アドレス４か二次転送先開始アドレス１４の何れかを選択して転送制御部１２０に出力するセレクタ、２５は演算回路７の出力により、転送モード５か二次転送モード１５の何れかを選択して転送制御部１２０に出力するセレクタである。
【００４２】
尚、転送に必要な情報を格納している設定レジスタ１１０が有している各種レジスタについては、これ等に限るものではなく、例えば、外部端子より転送情報が入力される等、異なる方法により転送情報を与えるように構成しても構わない。また、転送で選択される基本的な転送情報は前記に限らず、転送先連続領域サイズ、転送元データ幅、転送先データ幅など、高度な転送を行うために必要な追加情報も含まれる。
【００４３】
次に、前記のように構成された本実施形態のＤＭＡ転送制御装置の動作を説明する。
【００４４】
ＤＭＡ転送を開始する前に、設定レジスタ１１０にある各種レジスタに値を設定する。転送回数レジスタ１には、転送制御部１２０にてＤＭＡ転送する回数を設定する。転送制御部１２０にて実際にＤＭＡ転送する内容を、基本転送情報（転送サイズ２、転送元開始アドレス３、転送先開始アドレス４、転送モード５）に設定し、一時的に変更したい転送情報を二次転送情報（二次転送サイズ１２、二次転送元開始アドレス１３、二次転送先開始アドレス１４、二次転送モード１５）に設定する。
【００４５】
また、指定回数レジスタ６には、二次転送情報（二次転送サイズ１２、二次転送元開始アドレス１３、二次転送先開始アドレス１４、二次転送モード１５）によって転送したい転送回数（何番目の転送回数目かを示す値）を設定する。
【００４６】
ＤＭＡ転送要求が来てＤＭＡ転送が開始されると、設定レジスタ１１０より転送制御部１２０へ必要な情報を送るが、この際に、演算回路７にて転送回数１と指定回数６との比較を行う。比較した結果が一致しない場合、セレクタ２２〜２５では、基本転送情報（転送サイズ２、転送元開始アドレス３、転送先開始アドレス４、転送モード５）を選択し、転送制御部１２０に出力する。一方、一致した場合は、セレクタ２２〜２５では、二次転送情報（二次転送サイズ１２、二次転送元開始アドレス１３、二次転送先開始アドレス１４、二次転送モード１５）を選択し、転送制御部１２０に出力する。
【００４７】
尚、この際、全ての転送情報において二次転送情報を用いる必要はなく、セレクタ２２〜２５では各々異なる選択をして、基本転送情報と二次転送情報とを混在させても良い。
【００４８】
転送制御部１２０では、得られた転送情報の内容でＤＭＡ転送を行う。ＤＭＡ転送が完了すると、設定レジスタ１１０に通知し、転送回数１を１減算する。また必要に応じて、転送元開始アドレス３、転送先開始アドレス４を更新する。次のＤＭＡ転送要求が入力された際には、再び転送回数１と指定回数６とを比較し、転送制御部１２０に入力する転送情報を決定する。転送回数１が０回となったら、終了割込みを出力してＣＰＵに通知し、全転送完了となる。
【００４９】
尚、これらの説明はあくまで一例であって限定されるものではない。例えば、終了割込みについては、割込みという形態である必要はなく、ＤＭＡ転送制御装置内のレジスタをポーリングするなどの異なる方法であっても構わない。また、ＤＭＡ転送要求が別の制御で行われたり、ＤＭＡ転送要求を必要としない制御であっても構わない。
【００５０】
前記の構成により、本実施形態では、演算回路７の結果によって、基本転送情報でなく二次転送情報を用いてＤＭＡ転送できるので、一時的な転送情報の柔軟な設定変更が、１回のＤＭＡ転送設定のみで可能となる。
【００５１】
また、演算回路７で転送回数１と指定回数６との比較一致を演算することにより、指定回数にて設定した転送回数においてのみ、転送情報を変更することが容易に可能となる。
【００５２】
（実施形態２）
図２は、本発明の実施形態２におけるＤＭＡ転送制御装置１００の概略構成を示すブロック図である。
【００５３】
本実施形態のＤＭＡ転送制御装置１００の構成については、前記実施形態１の図１の構成に加えて、演算回路７における演算を指定する演算内容レジスタ２６を持ち、また、指定回数６と二次転送情報（二次転送サイズ１２、二次転送元開始アドレス１３、二次転送先開始アドレス１４、二次転送モード１５）を各々ｍ個分備えている。
【００５４】
次に、前記のように構成された本実施形態のＤＭＡ転送制御装置の動作を説明する。
【００５５】
指定回数レジスタ６では、１〜ｍの複数の指定回数を演算回路７に入力する。
【００５６】
演算回路７では、演算内容レジスタ２６において設定された演算内容に基づき、入力された複数の指定回数６を参考にして、演算される。尚、演算回路７の出力は、真か偽のみではなく、複数ビット幅を持った結果を持つことができる。
【００５７】
セレクタ２２〜２５では、この演算回路７の出力に応じて、実行チャネルの基本転送情報（転送サイズ２、転送元開始アドレス３、転送先開始アドレス４、転送モード５）又は二次転送情報（二次転送サイズ１２、二次転送元開始アドレス１３、二次転送先開始アドレス１４、二次転送モード１５）の１〜ｍの何れかを選択し、転送制御部１２０に出力する。
【００５８】
尚、これらの説明はあくまで一例であって限定されるものではない。例えば、保有するレジスタの数が転送情報毎に異なっていても構わない。また、セレクタ２２〜２５では、各々異なる構成を持つことにより、基本転送情報や１〜ｍの複数の二次転送情報を混在させても構わない。その他の動作については、実施形態１と同様である。
【００５９】
前記の構成により、本実施形態では、複数の転送回数に応じて、使用する二次転送情報を変更し、それぞれ異なる転送情報に一時的に変更することが、１回のＤＭＡ転送設定のみで可能となる。尚、演算情報の変更は、転送回数１の変化など、他の要因を参照して変更することも可能である。
【００６０】
また、転送回数１と複数の指定回数６との比較一致を演算する旨を演算内容レジスタ２６に設定し、演算回路７で比較一致演算を行うことにより、指定回数６にて設定した複数の転送回数においてのみ、転送情報をそれぞれ異なる転送情報に変更することが容易に可能となる。
【００６１】
更に、演算回路７の出力が基本転送情報のみを選択するよう、演算内容レジスタ２６に設定することにより、転送情報の一時的な変更を行わず、基本転送情報のみを用いることが可能となる。
【００６２】
（実施形態３）
図３は、本発明の実施形態３におけるＤＭＡ転送制御装置１００の概略構成を示すブロック図である。
【００６３】
本実施形態のＤＭＡ転送制御装置１００の構成については、前記実施形態１の図１の構成に加えて、実行するチャネルを決定するための調停部１３０、演算回路７における演算を指定するチャネル数（ｎ個）分の演算内容レジスタ２６、転送内容の変更を行うかどうかを決定するチャネル数（ｎ個）分のイネーブルレジスタ２７を持ち、また、転送回数１と基本転送情報（転送サイズ２、転送元開始アドレス３、転送先開始アドレス４、転送モード５）は各々チャネル数（ｎ個）分備え、指定回数６と二次転送情報（二次転送サイズ１２、二次転送元開始アドレス１３、二次転送先開始アドレス１４、二次転送モード１５）は各々ｍ個分備えている。
【００６４】
次に、前記のように構成された本実施形態のＤＭＡ転送制御装置の動作を説明する。
【００６５】
基本転送情報（転送サイズ２、転送元開始アドレス３、転送先開始アドレス４、転送モード５）では、調停部１３０にて決定された、次の実行チャネルの基本転送情報を使用する。
【００６６】
次の実行チャネルのイネーブルレジスタ２７がオフの時は、転送情報の一時的な変更を行わず基本転送情報を用いて転送を実施する。
【００６７】
また、指定回数レジスタ６では、実行チャネルに応じて１〜ｍの中から１つ以上の指定回数を選び、演算回路７に入力する。
【００６８】
更に、演算内容レジスタ２６では、調停部１３０で決定された次の実行チャネルの演算内容を演算回路７に入力する。尚、演算回路７の出力は、真か偽のみではなく、複数ビット幅を持った結果を持つことができる。
【００６９】
セレクタ２２〜２５では、この演算回路７の出力に応じて、実行チャネルの基本転送情報（転送サイズ２、転送元開始アドレス３、転送先開始アドレス４、転送モード５）又は二次転送情報（二次転送サイズ１２、二次転送元開始アドレス１３、二次転送先開始アドレス１４、二次転送モード１５）の１〜ｍの何れかを選択し、転送制御部１２０に出力する。
【００７０】
尚、これらの説明はあくまで一例であって限定されるものではない。例えば、保有するレジスタの数が転送情報毎に異なっていても構わない。また、セレクタ２２〜２５では、各々異なる構成を持つことにより、実行チャネルの基本転送情報や１〜ｍの複数の二次転送情報を混在させても構わない。また、演算内容レジスタ２６を用いず、調停部１３０で決定される実行チャネルを演算回路７に直接入力して、演算内容を決定しても構わない。また、演算回路７の出力が基本転送情報のみを選択するよう、演算内容レジスタ２６に設定することにより、イネーブルレジスタ２７を用いずに、転送情報の一時的な変更を行わず基本転送情報のみを用いることが可能となる。その他の動作については、実施形態１と同様である。
【００７１】
前記の構成により、本実施形態では、実行チャネルが変化する毎に、基本転送情報、転送回数と指定回数との演算内容、使用する二次転送情報を変更することが、１回のＤＭＡ転送設定のみで可能となる。尚、演算情報の変更は、チャネルの変化だけでなく、転送回数１の変化など、他の要因を参照して変更することも可能でなる。
【００７２】
また、複数の指定回数６を演算回路７に加えて複数の出力を得て、複数の二次転送情報を用いることにより、複数の異なる転送情報に一時的に変更することが、１回のＤＭＡ転送設定のみで可能となる。
【００７３】
更に、演算回路７の出力が基本転送情報のみを選択するように、演算内容レジスタ２６に設定することにより、任意実行チャネルにおいて、転送情報の一時的な変更を行わず、基本転送情報のみを用いることが可能となる。
【００７４】
（実施形態４）
図４は、本発明の実施形態４におけるＤＭＡ転送制御装置１００の概略構成を示すブロック図である。
【００７５】
図４において、１１０は転送情報を格納する設定レジスタであり、１２０は設定レジスタ１１０より入力される情報を元にデータ転送を制御する転送制御部である。
【００７６】
前記設定レジスタ１１０で格納されている基本転送情報としては、転送回数１、転送サイズ２、転送元開始アドレス３、転送先開始アドレス４、転送モード５の５つの情報がある。
【００７７】
また、転送サイズ２の値が１であるかを判定する判定回路８がある。他に二次的な転送情報として、二次転送サイズ１２がある。２２は、判定回路８の出力により、転送サイズ２と二次転送サイズ１２との何れかを選択して転送制御部１２０に出力するセレクタである。
【００７８】
尚、データ転送に必要な情報を格納している設定レジスタ１１０が有している各種レジスタについては、これに限るものではなく、例えば、外部端子より転送情報が入力される等、異なる方法により転送情報を与えるように構成しても構わない。また、データ転送で選択される基本的な転送情報は前記に限らず、転送先連続領域サイズ、転送元データ幅、転送先データ幅など、高度な転送を行うために必要な追加情報も含まれる。
【００７９】
次に、前記のように構成された本実施形態のＤＭＡ転送制御装置の動作を説明する。
【００８０】
ＤＭＡ転送を開始する前に、設定レジスタ１１０にある各種レジスタに値を設定する。転送回数１には、転送制御部１２０にてＤＭＡ転送する回数を設定する。転送制御部１２０にて実際にＤＭＡ転送する内容を、転送サイズ２、転送元開始アドレス３、転送先開始アドレス４、転送モード５に設定する。この際、転送させたい総転送数が、転送サイズ２の整数倍に一致しない場合、つまり総転送数がＱｓｕｍ＝Ｑｓ×Ｑｎ＋Ｑｆ（Ｑｓが転送サイズ）となって端数が発生する場合には、図５に示すように、Ｑｓを転送サイズ２に、Ｑｎ＋１を転送回数１に、端数であるＱｆを二次転送サイズ１２に各々設定する。
【００８１】
ＤＭＡ転送要求が来てＤＭＡ転送が開始されると、設定レジスタ１１０より転送制御部１２０へ必要な情報を送るが、この際に、判定回路８にて転送回数１が１であるかどうか判定する。判定結果が不一致の場合、セレクタ２２では、基本転送情報である転送サイズ２を選択し、Ｑｓだけ転送するよう転送制御部１２０に出力する。一致した場合、セレクタ２２では、二次転送情報である二次転送サイズ１２を選択し、Ｑｆだけ転送するよう転送制御部１２０に出力する。
【００８２】
転送元開始アドレス３、転送先開始アドレス４、転送モード５の値はそのまま転送制御部１２０に送られる。
【００８３】
転送制御部１２０では、得られた転送情報の内容でＤＭＡ転送を行う。ＤＭＡ転送が完了すれば、設定レジスタ１１０に通知し、転送回数１を１減算する。また、必要に応じて、転送元開始アドレス３、転送先開始アドレス４を更新する。次のＤＭＡ転送要求が入力された際には、再び、転送回数１が１回であるか判定し、転送制御部１２０に入力する転送サイズを決定する。転送回数１が０回となれば、終了割込みを出力してＣＰＵに通知し、全転送完了となる。
【００８４】
尚、これらの説明はあくまで一例であって限定されるものではない。例えば、終了割込みについては、割込みという形態である必要はなく、ＤＭＡ転送制御装置内のレジスタをポーリングするなどの異なる方法であっても構わない。また、ＤＭＡ転送要求が別の制御で行われたり、ＤＭＡ転送要求を必要としない制御であっても構わない。
【００８５】
前記の構成により、本実施形態では、最後の転送回数においては、転送サイズ２でなく二次転送サイズ１２を用いてＤＭＡ転送できるので、総転送数が転送回数×転送サイズとならずに端数が生じる場合においても、１回のＤＭＡ転送設定のみで可能となる。また、少ないハードウェアの増加のみで実現できる。
【００８６】
（実施形態５）
図６は、本発明の実施形態５におけるＤＭＡ転送制御装置１００の概略構成を示すブロック図である。
【００８７】
図６において、１１０は転送情報を格納する設定レジスタ、１２０は設定レジスタ１より入力される情報を元にデータ転送を制御する転送制御部である。
【００８８】
前記設定レジスタ１１０で格納されている基本転送情報としては、転送回数１、転送サイズ２、転送元開始アドレス３、転送先開始アドレス４、転送モード５の情報がある。
【００８９】
また、転送サイズ２の最下位ビットが１かどうかを判定する判定回路８がある。他に、二次的な転送情報として、二次転送サイズ１２と、二次転送元開始アドレス１３の情報がある。また、２２は、判定回路８の出力により、転送サイズ２か二次転送サイズ１２の何れかを選択して転送制御部１２０に出力するセレクタ、２３は、判定回路８の出力により、転送元開始アドレス３か二次転送元開始アドレス１３の何れかを選択して転送制御部１２０に出力するセレクタである。
【００９０】
尚、転送に必要な情報を格納している設定レジスタ１１０が有している各種レジスタについては、これに限るものではなく、例えば、外部端子より転送情報が入力される等、異なる方法により転送情報を与えるように構成しても構わない。また、転送で選択される基本的な転送情報は前記に限らず、転送先連続領域サイズ、転送元データ幅、転送先データ幅など、高度な転送を行うために必要な追加情報も含まれる。
【００９１】
次に、前記のように構成された本実施形態のＤＭＡ転送制御装置の動作を説明する。
【００９２】
ＤＭＡ転送を開始する前に、設定レジスタ１１０にある各種レジスタに値を設定する。転送回数レジスタ１には、転送制御部１２０にてＤＭＡ転送する回数を設定する。転送制御部１２０にて実際にＤＭＡ転送する内容を、転送サイズ２、転送元開始アドレス３、転送先開始アドレス４、転送モード５に設定する。ここで、２箇所の転送元開始アドレスのデータを１箇所の転送先開始アドレスへマージさせたい場合に、二次転送元開始アドレス１３にもう一つの転送元開始アドレスと、二次転送サイズ１２にその時に取得したい転送サイズを設定する。
【００９３】
ＤＭＡ転送要求が来てＤＭＡ転送が開始されると、設定レジスタ１１０より転送制御部１２０へ必要な情報を送るが、この際に、判定回路８にて転送回数１の最下位ビットが１であるかどうか判定を行う。判定結果が不一致の場合には、セレクタ２２では転送サイズ２を、セレクタ２３では転送元開始アドレス３を選択して、転送制御部１２０に出力する。一方、一致した場合には、セレクタ２２では二次転送サイズ１２を、セレクタ２３では二次転送元開始アドレス１３を選択し、転送制御部１２０に出力する。
【００９４】
転送先開始アドレス４、転送モード５の値はそのまま転送制御部１２０に送られる。
【００９５】
転送制御部１２０では、得られた転送情報の内容でＤＭＡ転送を行う。ＤＭＡ転送が完了すれば、設定レジスタ１１０に通知し、転送回数１を１減算する。また必要に応じて、転送元開始アドレス３、転送先開始アドレス４、二次転送元開始アドレス１３を更新する。次のＤＭＡ転送要求が入力された際は、再び転送回数１が１であるか判定を行い、転送制御部１２０に入力する転送サイズを決定する。転送回数１が０回となれば、終了割込みを出力してＣＰＵに通知し、全転送完了となる。転送の様子を図７に示す。転送回数毎に、転送サイズ２及び転送元開始アドレス３、又は、二次転送サイズ１２及び二次転送元開始アドレス１３が交互に用いられ、図中の[１]〜[８]の順序で転送が行われるため、二箇所の転送元データがマージされて転送先へ送られる。
【００９６】
尚、これらの説明はあくまで一例であって限定されるものではない。例えば、終了割込みについては、割込みという形態である必要はなく、ＤＭＡ転送制御装置内のレジスタをポーリングするなどの異なる方法であっても構わない。また、ＤＭＡ転送要求が別の制御で行われたり、ＤＭＡ転送要求を必要としない制御であっても構わない。
【００９７】
前記の構成により、本実施形態では、転送先には、２箇所の転送元から異なるサイズのデータを交互に送ることができる。従って、画素情報などのデータをマージしたい場合に、１回のＤＭＡ転送設定のみで可能であり、少しのハードウェア増加のみで実現できる。
【００９８】
また、図１の指定回数レジスタ６を複数個備え、判定回路８による出力結果を複数とし、二次転送元開始アドレス２３を複数持つことにより、３つ以上の転送元開始アドレスから選択することが可能となる。３箇所以上の転送元からデータをマージして転送先に送るという複雑な転送が可能となる。
【００９９】
更に、二次転送元開始アドレスの代わりに、二次転送先開始アドレスを備えることにより、図８に示すように、１箇所の転送元データを、二箇所以上の転送先データに振り分けることが可能となる。図中の[１]〜[８]の順序で転送が行われるため、１箇所の転送元データが２箇所の転送先に振り分けて送られる。
【０１００】
また、二次転送元開始アドレスの代わりに、二次転送先開始アドレスと二次転送モードとを備えて、転送モードで転送元開始アドレスの更新あり／更新なしを切り替えることができる場合、図９に示すように、一部の転送元データを２回取得して、各々の転送先に送ることが可能となる。図中の[１]〜[８]の順序で転送が行われるので、一部の転送元データが２箇所の転送先にコピーされて転送される。また、転送先開始アドレスを同一にすれば、一部のデータをコピーして転送することが可能となる。尚、転送モードについては、前記の切り替えに限らないことは明らかである。
【０１０１】
（実施形態６）
図１０は、本発明の実施形態６におけるデータ転送装置２００の概略構成を示すブロック図である。
【０１０２】
図１０において、本実施形態のデータ転送装置２００は、集積回路３０、ＳＤＲＡＭ４０、周辺デバイス５０を有する。集積回路３０は、ＣＰＵ３１、ＤＭＡ転送制御装置１００、メモリコントローラ３２、周辺コントローラ３３を有しており、各々がバス３４により相互接続されている。メモリコントローラ３２は、ＳＤＲＡＭ４０と接続されており、周辺コントローラ３３は周辺デバイス５０と接続されている。また、ＤＭＡ転送制御装置１００は、前記実施形態１〜５の何れかで説明したものである。
【０１０３】
本データ転送装置２００では、ＤＭＡ転送制御装置１００を用いて、周辺デバイス５０からＳＤＲＡＭ４０へデータを引き抜く場合では、ＤＭＡ転送制御装置１００にて設定される転送サイズは、周辺コントローラ３３にあるデータＦＩＦＯの容量と周辺デバイス５０からＦＩＦＯに入るデータ転送速度に依存して決定される。
【０１０４】
ここで、引き抜きたいデータの総数が、前記で決定される転送サイズの整数倍でない場合では、転送サイズに対して端数が生じる。この時、前記実施形態４にて説明した方法で二次転送サイズに前記の端数を設定し、転送回数の最後においては二次転送サイズを使用する。この方法により、一回のＤＭＡ転送設定で総転送量のデータを引き抜くことができる。また、引き抜く途中で新たにＤＭＡ転送設定をすることにより、データの引き抜きが間に合わないというリスク要因がなくなる。
【０１０５】
また、ＳＤＲＡＭ４０から周辺デバイス５０へデータを転送する場合においても、ＤＭＡ転送制御装置１００にて設定される転送サイズは、周辺コントローラ３３にあるデータＦＩＦＯの容量とＳＤＲＡＭ４０からＦＩＦＯに入るデータ転送速度に依存して決定される。
【０１０６】
ここで、転送したいデータの総数が、前記で決定される転送サイズの整数倍でない場合では、転送サイズに対して端数が生じる。この時、前記実施形態４にて説明した方法で二次転送サイズに前記の端数を設定し、転送回数の最後においては二次転送サイズを使用する。この方法により、一回のＤＭＡ転送設定で総転送量のデータを転送することができる。また、転送する途中で新たにＤＭＡ転送設定をすることにより、周辺デバイス５０へのデータ転送が間に合わないというリスク要因がなくなる。
【０１０７】
このように、転送サイズの設定が周辺デバイスなどＤＭＡ転送制御装置外の要因により決定されるような場合に、本発明は有効であり、外部記憶装置や周辺デバイスに限らないことは明らかであり、集積回路３０の内部の機能ブロック等にアクセスする場合にも有効である。
【０１０８】
尚、実現の方法については、前記実施形態で述べた複数の構成を組み合わせて実現することも当然可能である。また、上述した本発明の実施形態において使用される手法や構成は一例であり、本発明はこれらに限定されるものでない。
【産業上の利用可能性】
【０１０９】
本発明に係るＤＭＡ転送制御装置は、転送内容を一時的に変更することが僅かなハードウェアの追加で容易に可能となるので、総転送数が転送サイズの整数倍とならない場合の転送や、複数アドレスからのデータマージや、複数アドレスへのデータ分散などの複雑な転送が１回のＤＭＡ設定のみで実現できるＤＭＡ転送制御装置として有用である。
【図面の簡単な説明】
【０１１０】
【図１】本発明の実施形態１のＤＭＡ転送制御装置の概略構成を示すブロック図である。
【図２】本発明の実施形態２のＤＭＡ転送制御装置の概略構成を示すブロック図である。
【図３】本発明の実施形態３のＤＭＡ転送制御装置の概略構成を示すブロック図である。
【図４】本発明の実施形態４のＤＭＡ転送制御装置の概略構成を示すブロック図である。
【図５】同実施形態の総転送数と設定レジスタとの関係を示した図である。
【図６】本発明の実施形態５のＤＭＡ転送制御装置の概略構成を示すブロック図である。
【図７】同実施形態のデータマージと設定レジスタとの関係を示した図である。
【図８】同実施形態の変形例によるデータ振り分けと設定レジスタとの関係を示した図である。
【図９】同実施形態の変形例による一部データのコピー振り分けと設定レジスタとの関係を示した図である。
【図１０】本発明の実施形態６のデータ転送装置の概略構成を示すブロック図である。
【図１１】従来のＤＭＡ転送制御装置の概略構成を示すブロック図である。
【符号の説明】
【０１１１】
１            転送回数レジスタ
２            転送サイズレジスタ
３            転送元開始アドレスレジスタ
４            転送先開始アドレスレジスタ
５            転送モードレジスタ
６            指定回数レジスタ
７            演算回路
８            判定回路
１２          二次転送サイズレジスタ
１３          二次転送元開始アドレスレジスタ
１４          二次転送先開始アドレスレジスタ
１５          二次転送モードレジスタ
２２〜２５     セレクタ
２６          演算内容レジスタ
２７          イネーブルレジスタ
３０          集積回路
３１          ＣＰＵ
３２          メモリコントローラ
３３          周辺コントローラ
３４          バス
４０          ＳＤＲＡＭ
５０          周辺デバイス
１００        ＤＭＡ転送制御装置
１１０        設定レジスタ
１２０        転送制御部
１３０        調停部
２００        データ転送装置
【図１】
2009151487.tif 000003
【図２】
2009151487.tif 000004
【図３】
2009151487.tif 000005
【図４】
2009151487.tif 000006
【図５】
2009151487.tif 000007
【図６】
2009151487.tif 000008
【図７】
2009151487.tif 000009
【図８】
2009151487.tif 000010
【図９】
2009151487.tif 000011
【図１０】
2009151487.tif 000012
【図１１】
2009151487.tif 000013