(57)【要約】【課題】バススレーブを共有するシステムにおいてアクセスの競合によるシステム全体の処理速度の低下を改善する。【解決手段】ＤＭＡコントローラ１００は、転送元のバススレーブに格納された一群のデータを所定のデータ量のブロックに分割して転送先のバススレーブに転送する転送回路１１０と、転送回路１１０が一のブロックを転送するのに要した時間を計測する計測部１３０と、計測結果に基づいて、転送回路１１０が一のブロックの転送を完了してから次のブロックの転送を開始するまでのウェイト時間Ｔｗを調整するタイミング制御部１２０とを備える。【選択図】図２
2016181124.tif 000002
【特許請求の範囲】
【請求項１】
転送元のバススレーブに格納された一群のデータを所定のデータ量のブロックに分割して転送先のバススレーブに転送する転送回路と、
前記転送回路が一のブロックを転送するのに要した転送時間を計測する計測部と、
前記計測部で計測した前記転送時間に基づいて、前記転送回路が前記一のブロックの転送を完了してから次のブロックの転送を開始するまでのウェイト時間を調整するタイミング制御部とを、
備えることを特徴とするＤＭＡコントローラ。
【請求項２】
前記タイミング制御部は、前記計測部で計測した前記転送時間と予め定められたしきい値とを比較し、前記転送時間が前記しきい値を上回る場合は、前記転送時間が前記しきい値を下回る場合と比較して、前記ウェイト時間が長くなるように調整する、ことを特徴とする請求項１に記載のＤＭＡコントローラ。
【請求項３】
前記転送回路は、前記転送元のバススレーブおよび前記転送先のバススレーブに対するアクセスの競合が発生していない状態において、テストデータを転送し、
前記計測部は前記テストデータを転送するのに要したテスト時間を計測し、
前記タイミング制御部は、前記計測部が計測した前記テスト時間に基づいて、前記しきい値を決定する、
ことを特徴とする請求項２に記載のＤＭＡコントローラ。
【請求項４】
前記タイミング制御部は、前記計測部で計測した前記転送時間が長くなるほど、前記ウェイト時間が長くなるように調整することを特徴とする請求項１に記載のＤＭＡコントローラ。
【請求項５】
前記タイミング制御部は、前記一群のデータの総データ量と、当該一群のデータを転送するのに要する時間の上限を示す転送制限時間とに基づいて、前記転送時間と前記ウェイト時間との関係を定める、ことを特徴とする請求項４に記載のＤＭＡコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＭＡ（Direct Memory Access）方式によりデータを転送するＤＭＡコントローラに関する。
【背景技術】
【０００２】
ＤＭＡコントローラを含む複数のバスマスタが、各々のタイミングで共有するバススレーブに対してアクセスを行うシステムがある。バススレーブは、複数のバスマスタの共有リソースとして機能する。ＤＭＡコントローラが共有リソースに対してデータ転送を開始すると、共有リソースに対する他のバスマスタのアクセスが滞り、他のバスマスタにおいて処理待ちが発生する場合がある。即応性が求められる、動画デコーダ、音源、ＣＰＵ（Central Processing Unit）、描画回路、通信インタフェースなどをバスマスタとするシステムでは、それらのバスマスタに処理待ちが発生すると、各バスマスタに対して要求される即応性を満たすことができなくなり、システムのパフォーマンスが低下する、という不都合が生じる。
【０００３】
そこで、バス調停器が、各バスマスタによって発行されるリードコマンド、ライトコマンドが競合したときに、バスマスタのアクセス頻度や、バスマスタのレイテンシに応じて、各バスマスタにバス使用権を与えるための優先順位を決定する手法が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第４８４７０３６号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、上記手法は、優先順位が低いコマンド、すなわち優先順位が低いバスマスタによって発行されるコマンドと、優先順位が高いコマンド、すなわち優先順位が高いバスマスタによって発行されるコマンドとが同時にバス調停器に入力され、アクセスの競合が発生した時のみ有効に機能する。よって、上記手法では、優先順位が低いコマンドの実行中に優先順位が高いコマンドが発行された場合、優先順位が高いコマンドが待ち状態になり、当該コマンドを発行したバスマスタに処理待ちが発生する。従って、上記手法を上記システムに適用したとしても、ＤＭＡ転送の実行中は相変わらず他のバスマスタは共有リソースにアクセスすることができず、システム全体の処理速度が低下するおそれがある。
【０００６】
本発明は、この点に着目してなされたものであり、バススレーブを共有するシステムにおいてアクセスの競合によるシステム全体の処理速度の低下を改善することを解決課題の一つとする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明の一態様に係るＤＭＡコントローラは、転送元のバススレーブに格納された一群のデータを所定のデータ量のブロックに分割して転送先のバススレーブに転送する転送回路と、前記転送回路が一のブロックを転送するのに要した転送時間を計測する計測部と、前記計測部で計測した前記転送時間に基づいて、前記転送回路が前記一のブロックの転送を完了してから次のブロックの転送を開始するまでのウェイト時間を調整するタイミング制御部とを含むことを特徴とする。
【０００８】
この態様によれば、ＤＭＡコントローラと他のバスマスタとが、共有リソースにアクセスする場合、共有リソースへのアクセス負荷が高くなると、ＤＭＡコントローラが一のブロックを転送するのに要する時間が長くなる。したがって、計測部の計測結果に基づいて、共有リソースのアクセス負荷の程度を知ることが可能となる。タイミング制御部は、計測部の計測結果に基づいて、ウェイト時間を調整するから、他のバスマスタの共有リソースへのアクセス負荷が高くなると、ＤＭＡコントローラはデータ転送を制限することができる一方、アクセス負荷が低いタイミングを見計らって集中的にデータ転送を行うことができる。従って、ＤＭＡコントローラが他のバスマスタとリソースを共有するシステムにおいて、当該リソースに対するアクセスの競合によるシステム全体の処理速度の低下を改善することができる。
なお、一のブロックを転送するのに要した時間とは、一のブロックを転送元のバススレーブから読み出すのに要する時間と転送先のバススレーブに一のブロックを書き込むのに要した時間の合計、または、転送元のバススレーブから一のブロックを読み出してから転送先のバススレーブに一のブロックを書き込むまでの時間のいずれであってもよい。
【０００９】
上述したＤＭＡコントローラの一態様において、前記計測部で計測した前記転送時間と予め定められたしきい値とを比較し、前記転送時間が前記しきい値を上回る場合は、前記転送時間が前記しきい値を下回る場合と比較して、前記ウェイト時間が長くなるように調整することが好ましい。
この態様によれば、しきい値を適切に設定することによって共有リソースに対するアクセスの競合の発生を確実に検出することができるので、アクセス負荷が低い状態において、より集中的にデータ転送を行うことができる。なお、ウェイト時間を調整するとは、ウェイト時間をゼロに設定する場合を含む。すなわち、所定のウェイト時間が経過した後、次のブロックを転送する場合と、ウェイト時間をゼロにして連続してブロックを転送する場合とを比較結果に応じて切り替えてもよい。
さらに、前記タイミング制御部は、前記計測部で計測した前記転送時間が連続して前記しきい値を上回った場合に、連続した回数に応じて、前記ウェイト時間が長くなるように調整することが好ましい。転送時間がしきい値を上回る回数が連続するほど、共有リソースに対するアクセス負荷が高いといえる。この態様によれば、転送時間が連続してしきい値を上回った回数に応じてウェイト時間が長くなるように調整するので、共有リソースに対するアクセス負荷が高くなるほど、ＤＭＡコントローラはデータ転送をより制限するので、当該共有リソースに対するアクセスの競合によるシステム全体の処理速度の低下をより改善することができる。
【００１０】
上述したＤＭＡコントローラの一態様において、前記転送回路は、前記転送元のバススレーブおよび前記転送先のバススレーブに対するアクセスの競合が発生していない状態において、テストデータを転送し、前記計測部は前記テストデータを転送するのに要したテスト時間を計測し、前記タイミング制御部は、前記計測部が計測した前記テスト時間に基づいて、前記しきい値を決定することが好ましい。
このＤＭＡコントローラによれば、アクセスの競合が発生していない状態におけるテスト時間の計測結果に基づいてしきい値を決定するので、アクセスの競合の発生の有無を正確に判定することができる。例えば、一つのブロックのデータ量をＳ、テストデータのデータ量をＤｔ、テスト時間をＴtestとしたとき、しきい値Ｔrefは、Ｔref＝Ｓ・Ｔtest／Ｄｔとしてもよい。なお、テストデータのデータ量Ｄｔと一つのブロックのデータ量Ｓが一致する場合には、テスト時間Ｔtestとしきい値Ｔrefとを等しくしてもよい。
【００１１】
上述したＤＭＡコントローラの一態様において、前記タイミング制御部は、前記計測部で計測した前記転送時間が長くなるほど、前記ウェイト時間が長くなるように調整してもよい。
一般に、ＤＭＡ転送に要した時間が長ければ長いほど、共有リソースに対するアクセス負荷が高い、すなわちアクセスの競合の度合いが大きいといえる。本発明によれば、共有リソースに対するアクセスの競合の度合いに応じたウェイト時間の設定ができるので、アクセスの競合が発生しているときのＤＭＡコントローラによるデータ転送をより制限することができ、システム全体の処理速度を向上させることができる。
【００１２】
上述したＤＭＡコントローラの一態様において、前記タイミング制御部は、前記一群のデータの総データ量と、当該一群のデータを転送するのに要する時間の上限を示す転送制限時間とに基づいて、前記転送時間と前記ウェイト時間との関係を定めることが好ましい。
この態様によれば、共有リソースに対するアクセスの競合の度合いに応じたウェイト時間の設定ができるだけでなく、転送すべきデータの総データ量と転送制限時間とを考慮したウェイト時間の設定をすることができるので、転送制限時間に応じてＤＭＡ転送速度を低下させることが可能となる。この結果、システム全体の処理速度をさらに向上させることができる。
【図面の簡単な説明】
【００１３】
【図１】第１実施形態に係るＤＭＡコントローラを含むシステムの全体の構成を示すブロック図である。
【図２】第１実施形態に係るＤＭＡコントローラの構成を示すブロック図である。
【図３】第１実施形態に係るＤＭＡコントローラにおける転送処理を示すフローチャートである。
【図４】共有リソースに対する各バスマスタのアクセス状況を示す説明図である。
【図５】第２実施形態に係るＤＭＡコントローラの構成を示すブロック図である。
【図６】第２実施形態に係るＤＭＡコントローラにおける転送処理を示すフローチャートである。
【図７】係数と転送制限時間との対応関係を示す説明図である。
【図８】第１変形例に係るＤＭＡコントローラにおける転送処理を示すフローチャートである。
【発明を実施するための形態】
【００１４】
＜第１実施形態＞
本発明の第１実施形態を以下に説明する。図１は、第１実施形態に係るＤＭＡコントローラ１００を含むシステム１の全体の構成を示すブロック図である。
図１に示されるようにシステム１は、ＣＰＵ１０、ＲＯＭ（Read Only Memory）２０、メモリ３０、描画回路４０、音源５０、動画デコーダ６０、およびＤＭＡコントローラ１００を含み、これらは、バスＢを介して互いに接続されている。なお、図１には、ＲＯＭ２０がバスＢに接続される構成が例示されているが、例えば、ＲＯＭ２０がＤＭＡコントローラ１００を介してバスＢと接続され、ＲＯＭ２０とバスＢとが切り離された構成となっていてもよい。
【００１５】
ＲＯＭ２０は、画像データ、音データなどの各種のデータが記憶されている。ＲＯＭ２０は、書き替え可能なフラッシュメモリであってもよい。ＤＭＡコントローラ１００は、詳細については後述するが、ＲＯＭ２０に記憶されたデータを読み出して、メモリ３０に転送する。メモリ３０は、アクセス（読出および書込）が高速な記憶素子であって、例えばＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）が該当する。ＣＰＵ１０、描画回路４０、音源５０、動画デコーダ６０、およびＤＭＡコントローラ１００は、メモリ３０を共有する。すなわち、図１に示されるシステム１では、ＣＰＵ１０、描画回路４０、音源５０、動画デコーダ６０、およびＤＭＡコントローラ１００がバスマスタであり、ＲＯＭ２０およびメモリ３０がバススレーブである。ＣＰＵ１０は、メモリ３０を一時作業領域として各種の演算等を実行する。
【００１６】
一般に、ＣＰＵは、演算処理等を実行する際、必要なデータをＲＯＭ等の周辺デバイスから読み出して、ＲＡＭ等の作業メモリに書き込む。記憶素子においてアクセス速度と容量とは互いにトレードオフの関係にあるので、ＲＯＭが大容量である場合には、ＲＯＭからのアクセス（読出）は比較的低速にならざるを得ない。従って、ＣＰＵ自身がＲＯＭとＲＡＭ（Random Access Memory）間のデータ転送を管理する方式では、ＣＰＵの処理負荷が増大する可能性がある。そこで、ＣＰＵの処理負荷を低減させるために、図１に示されるようなＤＭＡ方式が採用される。
【００１７】
すなわち、本実施形態では、ＣＰＵ１０は、ＲＯＭ２０に格納されたデータが必要となったとき、ＤＭＡコントローラ１００に対してＤＭＡコマンドを送出して、ＲＯＭ２０から必要なデータをメモリ３０に転送させる。ＤＭＡ転送では、転送すべき一群のデータを複数のブロックに分割し、ブロックごとにデータ転送を実行する。ＤＭＡコマンドには、転送元アドレス、転送先アドレス、転送ブロックサイズＳ、および転送回数Ｎが含まれる。転送ブロックサイズＳは、一つのブロックのデータ量を示している。例えば、転送ブロックサイズＳをバス幅とバースト長（バースト転送１回あたりのデータ転送回数）とによって指定することもできる。転送回数Ｎは、ブロックを転送する回数を示している。なお、この例では、転送するデータ量を、ブロックサイズＳの整数倍に制限することにする。
【００１８】
本実施形態におけるＤＭＡ転送では、一つのブロックを転送するのに要する転送時間Ｔｘを計測し、計測された転送時間Ｔｘをしきい値Ｔrefと比較し、転送時間Ｔｘがしきい値Ｔrefを上回る場合には、あるブロックの転送が完了してからウェイト時間Ｔｗが経過した後、次のブロックの転送を開始する。一方、転送時間Ｔｘがしきい値Ｔref以下である場合には、あるブロックの転送が完了すると、次のブロックの転送を開始する。これは、ウェイト時間Ｔｗをゼロに設定することと等価である。以下、ＤＭＡコントローラ１００について詳細に説明する。
【００１９】
図２は、第１実施形態に係るＤＭＡコントローラ１００の構成を示すブロック図である。図２に示されるように、第１実施形態に係るＤＭＡコントローラ１００は、転送回路１１０と、タイミング制御部１２０と、計測部１３０と、ＤＭＡコマンドなどを記憶するレジスタ１４０とを備える。また、転送回路１１０は、リードインターフェイス１１１と、ライトインターフェイス１１２と、バッファ１１３とを含む。
【００２０】
転送回路１１０は、タイミング制御部１２０からの指示に応じて、リード転送とライト転送とを実行する。リード転送において、リードインターフェイス１１１は、転送元のバススレーブであるＲＯＭ２０からデータを読み出して、読み出したデータをバッファ１１３に格納する。また、ライト転送において、ライトインターフェイス１１２は、タイミング制御部１２０からの指示に応じて、バッファ１１３からデータを読み出し、読み出したデータを転送先のバススレーブであるメモリ３０に書き込む。
【００２１】
タイミング制御部１２０は、レジスタ１４０に記憶されたＤＭＡコマンドを参照して、転送回路１１０が転送処理を実行するタイミングを制御する。タイミング制御部１２０は、ブロックの転送回数をカウントする転送回数カウンタ１２１と、転送回数カウンタ１２１の計数値と転送回数Ｎとを比較する比較部１２２と、しきい値Ｔrefを記憶する内部メモリ１２３とを含む。タイミング制御部１２０は、レジスタ１４０に記憶された転送元アドレスおよび転送ブロックサイズＳに基づいて、リードインターフェイス１１１にリード転送開始指示Ｒsbおよびリード転送終了指示Ｒebを出力し、転送先アドレスおよび転送ブロックサイズＳに基づいてライトインターフェイス１１２にライト転送開始指示Ｗsbおよびライト転送終了指示Ｗebを出力する。さらに、タイミング制御部１２０は、比較部１２２の比較結果が、転送回数カウンタ１２１の計数値と転送回数Ｎとが一致を示すまで、ブロックの転送を繰り返すように、転送回路１１０を制御する。
【００２２】
計測部１３０は、転送回路１１０における転送時間Ｔｘを計測する。本実施形態では、計測部１３０は、転送時間Ｔｘとして、転送回路１１０がリード転送を開始してからライト転送を完了するまでに要した時間を計測する。なお、計測部１３０は、転送時間Ｔｘとして、転送回路１１０がリード転送に要した時間とライト転送に要した時間との合計時間を転送時間Ｔｘとして計測するようにしてもよい。
【００２３】
リードインターフェイス１１１は、タイミング制御部１２０からリード転送開始指示Ｒsbを入力すると、リード転送を開始するとともに、リード転送の開始を示すリード転送開始通知Ｒsaを計測部１３０に通知する。また、リードインターフェイス１１１は、タイミング制御部１２０からリード転送終了指示Ｒebを入力すると、リード転送を終了するとともに、リード転送の完了を示すリード転送完了通知Ｒeaを計測部１３０に通知する。
【００２４】
ライトインターフェイス１１２は、タイミング制御部１２０からライト転送開始指示Ｗsbを入力すると、ライト転送を開始するとともに、ライト転送の開始を示すライト転送開始通知Ｗsaを計測部１３０に通知する。また、ライトインターフェイス１１２は、タイミング制御部１２０からライト転送終了指示Ｗebを入力すると、ライト転送を終了するとともに、ライト転送の完了を示すライト転送完了通知Ｗeaを計測部１３０に通知する。バッファ１１３としては、例えばＦＩＦＯ（Fast In Fast Out）メモリを採用することができる。
【００２５】
本実施形態において転送時間Ｔｘは、リード転送を開始してからライト転送を完了するまでに要した時間であるので、上述した計測部１３０は、リード転送開始通知Ｒsaからライト転送完了通知Ｗeaまでの時間を計測する。なお、転送時間Ｔｘをリード転送に要した時間とライト転送に要した時間との合計時間とする場合、計測部１３０は、リード転送開始通知Ｒsaからリード転送完了通知Ｒeaまで時間と、ライト転送開始通知Ｗsaからライト転送完了通知Ｗeaまでの時間とを計測し、それらの合計を演算して転送時間Ｔｘとしてタイミング制御部１２０に出力する。
【００２６】
次に、本実施形態の動作を説明する。ＤＭＡコントローラ１００は、ＣＰＵ１０からＤＭＡコマンドが入力されると、ＤＭＡコマンドに従って、ＤＭＡ転送を開始する。ＤＭＡコマンドには、上述したように転送ブロックサイズＳと転送回数Ｎとが含まれる。ＤＭＡコントローラ１００は、転送ブロックサイズＳで指定されたデータ量のブロックの転送処理を、Ｎ回繰り返し実行する。これにより、ＤＭＡコントローラ１００は、一群のデータを、転送元のバススレーブであるＲＯＭ２０から転送先のバススレーブであるメモリ３０へ転送する。
【００２７】
図３は、第１実施形態に係るＤＭＡコントローラ１００における転送処理を示すフローチャートである。
ＣＰＵ１０からＤＭＡコマンドがＤＭＡコントローラ１００に入力されると、タイミング制御部１２０は、初期設定を実行する（ステップＳ１１）。具体的には、タイミング制御部１２０は、転送回数カウンタ１２１の計数値を「０」にリセットする。
【００２８】
次いで、タイミング制御部１２０は、転送が終了していないブロックがあるか否かを判定する（ステップＳ１２）。本実施形態では、比較部１２２が、転送回数カウンタ１２１の計数値と転送回数Ｎとを比較し、比較結果に基づいて転送が終了していないブロックがあるか否かを判定する。
【００２９】
転送回数カウンタ１２１の計数値が転送回数Ｎに達している場合は（ステップＳ１２のＮＯ）、タイミング制御部１２０は、全てのブロックの転送処理が完了していると判断し、ＤＭＡ転送を終了する。
【００３０】
転送回数カウンタ１２１の計数値が転送回数Ｎに達していない場合は（ステップＳ１２のＹＥＳ）、タイミング制御部１２０は、転送回数カウンタ１２１を「１」インクリメントするとともに（ステップＳ１３）、転送回路１１０に、第ｎブロックの転送処理を開始させる（ステップＳ１４）。但し、「ｎ」は転送回数を表す。すなわち「ｎ」は転送回数カウンタ１２１の計数値である。このとき、転送回路１１０は、第ｎブロックの転送処理の開始を計測部１３０に通知する。具体的には、転送回路１１０のリードインターフェイス１１１が、リード転送開始通知Ｒsaを計測部１３０へ出力する。
【００３１】
転送回路１１０は、タイミング制御部１２０から入力される指示に基づいて第ｎブロックの転送処理（リード転送およびライト転送）を実行し、当該転送処理を完了すると、当該転送処理の完了を計測部１３０に通知する。具体的には、転送回路１１０のライトインターフェイス１１２が、ライト転送完了通知Ｗeaを計測部１３０に入力する。
【００３２】
計測部１３０は、第ｎブロックのリード転送開始通知Ｒsaが入力された時刻と、第ｎブロックのライト転送完了通知Ｗeaが入力された時刻とに基づいて、第ｎブロックの転送時間Ｔｘを算出する。そして、計測部１３０は、転送時間Ｔｘをタイミング制御部１２０に出力する。
【００３３】
この後、タイミング制御部１２０は、第ｎブロックの転送時間Ｔｘとしきい値Ｔrefとを比較する（ステップＳ１５）。
【００３４】
第ｎブロックの転送時間Ｔｘがしきい値Ｔrefを上回っている場合には（ステップＳ１５のＮＯ）、ＤＭＡコントローラ１００以外の他のバスマスタがメモリ３０にアクセスしていることにより、メモリ３０へのアクセス速度が低下している可能性が高い。そこで、タイミング制御部１２０は、共有リソースに対するアクセスの競合が発生していると判断し、ウェイト処理を実行する（ステップＳ１６）。
【００３５】
ウェイト処理では、あるブロックの転送が終了しても直ちに次のブロックの転送を実行するのではなく、あるブロックの転送が終了してから、所定のウェイト時間Ｔｗが経過するまで処理を待機させる。そして、ウェイト時間Ｔｗが経過すると、タイミング制御部１２０は、処理をステップＳ１２に戻す。第ｎブロックの転送処理が完了した後、ウェイト時間Ｔｗが経過するまでの期間は、ＤＭＡコントローラ１００がバススレーブ（メモリ３０）を開放するので、他のバスマスタがバススレーブを専有することが可能となる。よって、ＤＭＡコントローラ１００と他のバスマスタとの間のアクセスの競合の発生を低減させることができる。なお、ウェイト時間Ｔｗは、要求されるＤＭＡ転送速度を満たすように定められ、内部メモリ１２３に格納されている。
【００３６】
第ｎブロックの転送時間Ｔｘがしきい値Ｔref以下である場合には（ステップＳ１５のＹＥＳ）、タイミング制御部１２０は、アクセスの競合が発生していないと判断し、ウェイトをかけずに処理をステップＳ１２に戻す。
【００３７】
以上に説明したように、本実施形態では、ＤＭＡ転送において、一のブロックの転送時間Ｔｘが予め設定したしきい値Ｔrefを超えた場合には、アクセスの競合が発生していると判断し、次のブロックの転送開始を遅らせる。これにより、アクセスの競合の発生を抑制することができるので、アクセスの競合による他のバスマスタの即応性の低下を回避することができる。また、アクセスの競合が発生していない時に集中してＤＭＡ転送を行うことができるので、要求されるＤＭＡ転送速度を満たすことができる。よって、システム１のパフォーマンスが向上する。
【００３８】
また、転送時間Ｔｘを計測することによりアクセス状況を間接的に監視するようにしているので、アクセス状況を監視するための複雑な制御を必要としない。さらに、制御が容易であるので、ＤＭＡコントローラ１００としての汎用性を維持することができる。
【００３９】
ここで、本実施形態に係るＤＭＡコントローラ１００の優位性を具体的に説明する。図４は、共有リソースに対する各バスマスタのアクセス状況を示す説明図である。図４には、描画回路４０、音源５０、動画デコーダ６０、およびＤＭＡコントローラ１００をバスマスタとするシステム１における、各バスマスタの共有リソースであるメモリ３０に対するアクセスの時間的推移が示されている。図４（ａ）は、従来のＤＭＡコントローラをバスマスタに含むシステムのアクセス状況を示す。図４（ｂ）は、本実施形態に係るＤＭＡコントローラ１００をバスマスタに含むシステムのアクセス状況を示す。
【００４０】
図４（ａ）に示されるように、従来のＤＭＡコントローラをバスマスタに含むシステムでは、ＤＭＡコントローラによる共有リソースに対するアクセスが頻繁に行われるため、期間Ｔａにおいてアクセスの競合が発生する。この結果、他のバスマスタの共有リソースに対するアクセスが滞ってしまい、他のバスマスタは、要求される即応性を満たせなくなる可能性がある。一方、図４（ｂ）に示されるように、本実施形態に係るＤＭＡコントローラ１００をバスマスタに含むシステム１では、ＤＭＡコントローラ１００によるウェイト処理により、期間ＴｂにおいてＤＭＡコントローラ１００の共有リソースに対するアクセスが時間的に分散される。そのため、他のバスマスタが共有リソースに対してアクセスしているときには、ＤＭＡコントローラ１００による共有リソースに対するアクセスが制限されるので、他のバスマスタは、要求される即応性を十分に満たすことができる。また、バスが解放されたときにＤＭＡコントローラ１００は集中してデータ転送を実行するので、要求されるＤＭＡ転送速度を十分に確保することができる。
【００４１】
＜第２実施形態＞
次に、本発明の第２実施形態を説明する。図５は、第２実施形態に係るＤＭＡコントローラ２００の構成を示すブロック図である。第２実施形態に係るＤＭＡコントローラ２００は、タイミング制御部１２０がウェイト時間生成部１２４を備える点を除いて、図２に示す第１実施形態のＤＭＡコントローラ１００と同様に構成されている。また、図１に示すシステム１において、ＤＭＡコントローラ１００に替わり第２実施形態のＤＭＡコントローラ２００を用いることができる。
【００４２】
一般に、ＤＭＡコントローラと他のバスマスタとがバススレーブを共有する場合、ＤＭＡコントローラと他のバスマスタとは、当該バススレーブに対して同時にアクセスすることができない。そのため、図１に示されるシステム１において、音源５０がバスを占有している場合には、ＤＭＡコントローラ１００の転送回路１１０がライト転送を開始したとしても、バスが解放されるまで転送回路１１０はメモリ３０にアクセスすることができず、待機時間が発生する。従って、アクセスの競合発生時に計測部１３０によって計測される転送時間Ｔｘは、アクセスの競合が発生していないときに比べて長くなる。また、アクセスの競合の度合いが大きいと、それに応じて待機時間が長くなり転送時間Ｔｘが長くなる。
【００４３】
このような事情に鑑みて、本実施形態に係るＤＭＡコントローラ２００は、転送時間Ｔｘを計測して、アクセス状況を間接的に監視する。そして、その監視結果に基づいてウェイト時間生成部１２４はウェイト時間Ｔｗを生成する。
【００４４】
また、本実施形態のＤＭＡコマンドは、一群のデータを転送するのに要する時間の上限である転送制限時間Ｌを含む。転送制限時間Ｌが長い（例えば１０秒）場合と転送制限時間Ｌが短い（例えば１秒）場合とでは、許容されるウェイト時間Ｔｗが相違する。転送制限時間Ｌが長い場合にはウェイト時間Ｔｗを比較的長くしても一群のデータを転送制限時間Ｌの範囲内で転送できるが、転送制限時間Ｌが短い場合にはウェイト時間Ｔｗをそれほど長くすることができない。そこで、ウェイト時間生成部１２４は、転送制限時間Ｌを考慮してウェイト時間Ｔｗを生成する。ウェイト時間Ｔｗの詳細な生成方法については、後述する。
【００４５】
図６は、第２実施形態に係るＤＭＡコントローラ２００における転送処理を示すフローチャートである。図６に示されるステップＳ２１〜Ｓ２４およびＳ２６の処理は、図３に示されるステップＳ１１〜Ｓ１４およびＳ１６の処理と同様であるため、説明を省略する。
【００４６】
ステップＳ２４の処理の後、ウェイト時間生成部１２４は、第ｎブロックの転送時間Ｔｘを係数Ｋで除して、ウェイト時間Ｔｗを算出する（ステップＳ２５）。係数Ｋは、要求されるＤＭＡ転送速度を満たすように決定される。
まず、ウェイト時間生成部１２４は、レジスタ１４０が記憶するＤＭＡコマンドから、転送ブロックサイズＳと転送回数Ｎと転送制限時間Ｌとを取得する。次いで、ウェイト時間生成部１２４は、転送ブロックサイズＳに転送回数Ｎを乗じて、転送すべきデータの総データ量を算出し、算出した総データ量を転送制限時間Ｌで除して係数Ｋを算出する。すなわち、係数Ｋは以下の式により算出される。
Ｋ＝（Ｓ×Ｎ）÷Ｌ
【００４７】
図７は、係数Ｋと転送制限時間Ｌとの対応関係を示す説明図である。図７には、転送すべき総データ量が等しく転送制限時間が異なる、２つのＤＭＡ転送のグラフが例示されている。図７におけるＹ軸は転送すべきデータの総データ量を表し、Ｘ軸は転送制限時間Ｌを表す。また、図７におけるグラフの傾きは、係数Ｋを表す。
図７に示されるように、上記の式により係数Ｋを算出した場合、転送制限時間Ｌが「Ａ」（ここで、Ａ＜Ｂとする）であるＤＭＡ転送の係数（Ｋ１）の方が、転送制限時間Ｌが「Ｂ」であるＤＭＡ転送の係数（Ｋ２）より大きくなる。
【００４８】
従って、ステップＳ２５の処理において算出されるウェイト時間Ｔｗの値は、転送制限時間Ｌが「Ａ」であるＤＭＡ転送より転送制限時間Ｌが「Ｂ」であるＤＭＡ転送の方が大きくなる。すなわち上記の式により係数Ｋを算出することにより、転送すべきデータの総量と転送制限時間Ｌとを考慮したウェイト時間Ｔｗの設定が可能となる。この結果、転送制限時間Ｌに応じてＤＭＡ転送速度を低下させることができるので、他のバスマスタの即応性をより高めることができ、システム１のパフォーマンスをさらに向上させることができる。
【００４９】
＜変形例＞
以上、各実施形態に基づいて本発明を説明したが、本発明は上述した実施形態に限定されるものではなく、例えば、以下の変形が可能である。また、上述した各実施形態と各変形例とを適宜組み合わせてもよいことは勿論である。
（１）第１変形例
例えば、第１実施形態におけるステップＳ１５の処理において、ブロックの転送時間Ｔｘとしきい値Ｔrefとを比較するとともに、ブロックの転送時間Ｔｘがしきい値Ｔrefを連続して超えた回数、すなわちアクセスの競合が連続して検出された回数である連続検出回数をカウントするようにして、ステップＳ１６の処理において、連続検出回数に応じたウェイトをかけるようにしてもよい。なお、第１変形例におけるタイミング制御部１２０は、連続検出回数をカウントするための連続検出回数カウンタ（図示せず）を含む。
【００５０】
図８は、第１変形例に係るＤＭＡコントローラ１００における転送処理を示すフローチャートである。図８に示されるステップＳ３１〜Ｓ３５の処理は、図３に示されるステップＳ１１〜Ｓ１５と同様であるため、説明を省略する。
ステップＳ３５の処理において、第ｎブロックの転送時間Ｔｘがしきい値Ｔrefを上回っている場合には（ステップＳ３５のＮＯ）、タイミング制御部１２０は、連続検出回数カウンタを「１」インクリメントするとともに（ステップＳ３６）、連続検出回数カウンタの計数値に応じたウェイトをかける（ステップＳ３７）。例えば、タイミング制御部１２０は、以下の式を用いて、連続検出回数カウンタの計数値ｃに比例するウェイト時間Ｔｗを算出する。なお、ａは任意の定数であって、予めレジスタ１４０または内部メモリ１２３に格納される。また、連続検出回数カウンタの計数値ｃは、ステップＳ３１の初期設定において「０」にリセットされる。
Ｔｗ＝ａ×ｃ
【００５１】
第ｎブロックの転送時間Ｔｘがしきい値Ｔref以下である場合には（ステップＳ３５のＹＥＳ）、タイミング制御部１２０は、アクセスの競合が発生していないと判断し、連続検出回数カウンタの計数値ｃを「０」にリセットして（ステップＳ３８）、ウェイトをかけずに処理をステップＳ３２に戻す。
【００５２】
この変形例によれば、共有リソースに対するアクセス負荷が高い状態が継続しているときに、ＤＭＡコントローラ１００による共有リソースに対するデータ転送がより抑制されるので、他のバスマスタに対して要求される即応性がより満たされやすくなり、システム１のパフォーマンスが向上する。
【００５３】
（２）第２変形例
上述した第1実施形態において、しきい値Ｔrefは内部メモリ１２３に格納されていたが、本発明はこれに限定されるものではなく、タイミング制御部１２０が設定してもよい。第２変形例では、転送元のバススレーブであるＲＯＭ２０にテストデータを記憶しておく。そして、タイミング制御部１２０は、転送元のバススレーブであるＲＯＭ２０および転送先のバススレーブであるメモリ３０に対するアクセスの競合が発生していない状態、例えばシステム初期化時において、ＲＯＭ２０からテストデータを読み出してメモリ３０にテストデータを転送するように制御する。このとき、計測部１３０は、テストデータを転送するのに要したテスト時間Ｔtestを計測し、タイミング制御部１２０は、計測部１３０が計測したテスト時間Ｔtestに基づいて、しきい値Ｔrefを決定する。しきい値Ｔrefは、タイミング制御部１２０の内部メモリ１２３に記憶する。
ここで、一つのブロックのデータ量（転送ブロックサイズ）をＳ、テストデータのデータ量をＤｔ、テスト時間をＴtestとしたとき、しきい値Ｔrefは、Ｔref＝Ｓ・Ｔtest／Ｄｔとしてもよい。なお、テストデータのデータ量Ｄｔと一つのブロックのデータ量Ｓが一致する場合には、テスト時間Ｔtestとしきい値Ｔrefとを等しくしてもよい。
【００５４】
（３）第３変形例
上述した第1実施形態において、タイミング制御部１２０は、転送時間Ｔｘがしきい値Ｔrefを上回る場合にウェイト処理を施し、転送時間Ｔｘがしきい値Ｔrefを下回る場合に
ウェイト処理を施すことなく、次のブロックの転送を開始した。ここで、ウェイト処理を施さない場合は、ウェイト時間Ｔｗをゼロに設定した考えることができる。このため、タイミング制御部１２０は、転送時間Ｔｘがしきい値Ｔrefを上回る場合は、転送時間Ｔｘがしきい値Ｔrefを下回る場合と比較して、ウェイト時間Ｔｗが長くなるように制御していると捉えることができる。また、転送時間Ｔｘがしきい値Ｔrefを下回る場合にウェイト時間Ｔｗを完全にゼロにするのではなく、時間Ｔｗ１に設定し、転送時間Ｔｘがしきい値Ｔrefを上回る場合にウェイト時間Ｔｗを時間Ｔｗ１より長い時間Ｔｗ２に設定してもよい。
【００５５】
（４）第４変形例
上述した第２実施形態では、転送制限時間Ｌを考慮して、ウェイト時間Ｔｗを設定したが、本発明はこれに限定されるものではなく、タイミング制御部１２０は、計測部１３０で計測した転送時間Ｔｘが長くなるほど、ウェイト時間Ｔｗが長くなるように転送回路１１０を制御するものであればよい。この場合、ウェイト時間Ｔｗは転送時間Ｔｘに比例してもよいし、比例しなくてもよい。
さらに、アクセス競合が発生しない場合に一つのブロックを転送するのに要する転送時間をＴｇ、係数をαとしたとき、ウェイト時間Ｔｗは、計測部１３０で計測した転送時間Ｔｘを用いて、以下に示す式で算出してもよい。
Ｔｗ＝α（Ｔｘ−Ｔｇ）
くわえて、タイミング制御部１２０は、一群のデータの総データ量と転送制限時間Ｌとに基づいて、転送制限時間Ｌの範囲内で一群のデータの転送が完了するように計測部１３０で計測される転送時間Ｔｘとウェイト時間Ｔｗとの関係を定めてもよい。
【符号の説明】
【００５６】
１…システム、１０…ＣＰＵ、２０…ＲＯＭ、３０…メモリ、１００,２００…ＤＭＡコントローラ、１１０…転送回路、１１１…リードインターフェイス、１１２…ライトインターフェイス、１１３…バッファ、１２０…タイミング制御部、１２１…転送回数カウンタ、１２２…比較部、１２３…内部メモリ、１２４…ウェイト時間生成部、１３０…計測部、１４０…レジスタ。
【図１】
2016181124.tif 000003
【図２】
2016181124.tif 000004
【図３】
2016181124.tif 000005
【図４】
2016181124.tif 000006
【図５】
2016181124.tif 000007
【図６】
2016181124.tif 000008
【図７】
2016181124.tif 000009
【図８】
2016181124.tif 000010