(57)【要約】【課題】従来のＤＭＡコントローラは、効果的なデータ転送の最適化を行うことができないという問題があった。【解決手段】本発明にかかるＤＭＡコントローラは、外部メモリ１１とバス９を介して接続された複数のＤＭＡ部４０−０〜４０−ｍが実行するデータ転送を制御するＤＭＡコントローラであって、ＤＭＡ部４０−０〜４０−ｍからのデータ転送の要求に対してバス９の調停を行う調停回路１２と、複数のＤＭＡ部４０−０〜４０−ｍのうち選択されたいずれか一つのＤＭＡ部と、外部メモリ１１と、の間において転送される転送データのバースト長を当該転送データのデータ転送間隔に基づいて制御するバス観測回路１３と、を備える。このような回路構成により、効果的なデータ転送の最適化を行うことができる。【選択図】図１
2011028479.tif 000002
【特許請求の範囲】
【請求項１】
共有メモリとバスを介して接続された複数のＤＭＡ部が実行するデータ転送を制御するＤＭＡコントローラであって、
前記複数のＤＭＡ部からのデータ転送の要求に対して前記バスの調停を行う調停回路と、
前記複数のＤＭＡ部のうち選択されたいずれか一つのＤＭＡ部と、前記共有メモリと、の間において転送される第１の転送データのバースト長を当該第１の転送データのデータ転送間隔に基づいて制御するバス観測回路と、を備えたＤＭＡコントローラ。
【請求項２】
前記ＤＭＡ部は、
前記共有メモリとの間でバスを介してデータ転送を行うＤＭＡ回路と、
当該ＤＭＡ回路と前記共有メモリとの間の転送データの受け渡しを行うＦＩＦＯ回路と、を備え、
前記ＤＭＡ回路と前記ＦＩＦＯ回路との間のデータ転送は第２の転送データによって行われ、前記ＦＩＦＯ回路と前記共有メモリとの間のデータ転送は前記第１の転送データによって行われることを特徴とする請求項１に記載のＤＭＡコントローラ。
【請求項３】
前記バス観測回路は、
前記第１の転送データのデータ転送間隔に加え、さらに前記第１の転送データを転送するための第１のクロックと、前記第２の転送データを転送するための第２のクロックと、の比に基づいて当該第１の転送データのバースト長を制御することを特徴とする請求項２に記載のＤＭＡコントローラ。
【請求項４】
前記バス観測回路は、
さらに前記第２の転送データのデータ長に基づいて前記第１の転送データのバースト長を制御することを特徴とする請求項２又は３に記載のＤＭＡコントローラ。
【請求項５】
前記バス観測回路は、
前記第１の転送データのデータ転送間隔と、当該第１の転送データのバースト長と、に基づく当該第１の転送データのデータ転送完了時間がテーブル化して記憶された記憶部を備えた請求項１〜４のいずれか一項に記載のＤＭＡコントローラ。
【請求項６】
前記記憶部は、
さらに前記第２の転送データのデータ長と、前記第１のクロックと前記第２のクロックとの比と、に基づく当該第１の転送データのデータ転送完了時間がテーブル化して記憶されたことを特徴とする請求項５に記載のＤＭＡコントローラ。
【請求項７】
前記第１及び前記第２のクロック信号を生成するクロック生成回路をさらに備えた請求項３〜６のいずれか一項に記載のＤＭＡコントローラ。
【請求項８】
共有メモリと、
前記共有メモリとバスを介して接続された複数のＤＭＡ部と、
前記複数のＤＭＡ部が実行するデータ転送を制御するＤＭＡコントローラであって、
前記複数のＤＭＡ部からのデータ転送の要求に対して前記バスの調停を行う調停回路と、
前記複数のＤＭＡ部のうち選択されたいずれか一つのＤＭＡ部と、前記共有メモリと、の間において転送される第１の転送データのバースト長を当該第１の転送データのデータ転送間隔に基づいて制御するバス観測回路と、を備えたバスシステム。
【請求項９】
共有メモリとバスを介して接続された複数のＤＭＡ部が実行するデータ転送を制御するＤＭＡコントローラの制御方法であって、
前記複数のＤＭＡ部からのデータ転送の要求に対して前記バスの調停を行い、
前記複数のＤＭＡ部のうち選択されたいずれか一つのＤＭＡ部と、前記共有メモリと、の間において転送される第１の転送データのバースト長を当該第１の転送データのデータ転送間隔に基づいて制御するＤＭＡコントローラの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＤＭＡコントローラ及びその制御方法に関する。
【背景技術】
【０００２】
近年、半導体装置において、画像、音声、不揮発メモリのデータ転送を高速に行うためにメモリを効率良く使用する必要がある。そのため、複数のＤＭＡ転送元（ＤＭＡマスター）がバスを介して外部メモリ（転送先）を共有する共有メモリ方式を用いたＤＭＡ転送装置（ＤＭＡコントローラ）が一般的である。このＤＭＡ転送装置は、複数のＤＭＡ転送元からの転送要求のうち、いずれかの転送要求元に転送許可を与える調停機構を備える。またＤＭＡマスターとバスとの間には、異なるデータ帯域の緩衝と、ＤＭＡマスターと外部メモリとの間の非同期クロック間転送と、のためにＦＩＦＯ回路が設けられることが一般的である。
【０００３】
ここでＤＭＡ転送装置では、決められた時間内に決められたデータ転送を完了させる必要がある。しかし、所定のＤＭＡマスターがＦＩＦＯ回路へデータ転送を開始してから、外部メモリにデータ転送を完了するまでの時間は、バスの転送帯域に対して実際に転送されているデータ数の割合（以降バスの混雑度と記す）と、ＤＭＡマスター及びバスの動作周波数と、により大きく変動するという問題がある。そのためバスが混雑している場合において、優先度の低いＤＭＡマスターの転送時間が長くなることによるシステム全体のパフォーマンス劣化が生じないようにすることが望まれる。
【０００４】
このような要求に対する解決策として特許文献１が開示されている。特許文献１は、複数のＤＭＡ回路（ＤＭＡマスター）が共通のメモリをアクセスするコントローラ装置（ＤＭＡコントローラ）において、優先度の低いＤＭＡ回路が他のＤＭＡ回路と競合したとき、優先度の低いＤＭＡ回路のメモリアクセスデータのバースト長を長くする。特許文献１のＤＭＡコントローラは、バースト長のメモリアクセスデータを１メモリコマンドでアクセスすることにより、メモリアクセス終了を早める。
【０００５】
また、特許文献２には情報処理装置に用いられるバスシステムが開示されている。このバスシステムは、バス使用権の調停を行うバスアービタと、複数個のバス接続デバイスと、を備える。そして、これらのバス接続デバイスは、バスアービタにバス使用権要求の発生と転送を予定するデータ量とを通知する手段を有する。またバスアービタは、これらのバス接続デバイスから通知された情報に基づいて、指定されたアルゴリズムでバス使用権の制御を行う。それにより、情報処理装置の使用用途に適したデータ転送性能を持つバスシステムを実現する。
【０００６】
その他、特許文献３には、同一バス上に存在する複数の周辺装置からのＤＭＡ要求を一回のバス使用権獲得時に一度に処理するＤＭＡコントローラが開示されている。このＤＭＡコントローラは、複数のＤＭＡチャネル別のデータ転送量を設定するデータ量設定手段と、アクティブなＤＭＡチャネルを判断するチャネル選択制御手段と、アクティブと判断されたＤＭＡチャネルの各データを設定されたデータ転送量に従いデータ転送するデータ転送制御手段と、を備える。それにより、一回のバス使用権獲得で転送される全体のデータ量に対して、各ＤＭＡチャネルのデータ転送量を固定のデータ量、あるいは各チャネル別の割合に従い転送する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００２−２６９０２８号公報
【特許文献２】特開平０９−１８５５８０号公報
【特許文献３】特開２００４−０９４４５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１に記載の従来技術では、優先度の低いＤＭＡ回路のバースト長を長くすることによりメモリアクセスの終了を早める。しかし、実際にはデータ転送が完了するまでの時間は、バースト長に応じて非単調に変動する。つまり、他のＤＭＡ回路の転送要求等の影響により最適なバースト長は異なる。したがって、従来技術では効果的なデータ転送の最適化をできないという問題があった。
【課題を解決するための手段】
【０００９】
本発明にかかるＤＭＡコントローラは、共有メモリとバスを介して接続された複数のＤＭＡ部が実行するデータ転送を制御するＤＭＡコントローラであって、前記複数のＤＭＡ部からのデータ転送の要求に対して前記バスの調停を行う調停回路と、前記複数のＤＭＡ部のうち選択されたいずれか一つのＤＭＡ部と、前記共有メモリと、の間において転送される第１の転送データのバースト長を当該第１の転送データのデータ転送間隔に基づいて制御するバス観測回路と、を備える。
【００１０】
また、本発明にかかるＤＭＡコントローラの制御方法は、共有メモリとバスを介して接続された複数のＤＭＡ部が実行するデータ転送を制御するＤＭＡコントローラの制御方法であって、前記複数のＤＭＡ部からのデータ転送の要求に対して前記バスの調停を行い、前記複数のＤＭＡ部のうち選択されたいずれか一つのＤＭＡ部と、前記共有メモリと、の間において転送される第１の転送データのバースト長を当該第１の転送データのデータ転送間隔に基づいて制御する。
【００１１】
上述のような回路構成及びその制御方法により、効果的なデータ転送の最適化を行うことができる。
【発明の効果】
【００１２】
本発明により、効果的なデータ転送の最適化を行うことが可能なＤＭＡコントローラ及びその制御方法を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態１にかかるＤＭＡコントローラのブロック図である。
【図２】本発明の実施の形態１にかかるＦＩＦＯの構成図である。
【図３】本発明の実施の形態１にかかるバス観測回路の構成図である。
【図４】本発明の実施の形態１にかかるバス・プロトコルのタイミングチャートである。
【図５】本発明の実施の形態１にかかるバス観測回路の制御方法を示すフローチャートである。
【図６】本発明の実施の形態１にかかるスレッシュ値および変換テーブル値の導出方法を示すフローチャートである。
【図７】本発明の実施の形態１にかかるＤＭＡデータ転送のタイミングチャートである。
【図８】本発明の実施の形態１にかかるＤＭＡデータ転送のタイミングチャートである。
【図９】本発明の実施の形態１にかかるＤＭＡデータ転送のタイミングチャートである。
【図１０】本発明の実施の形態１にかかるＤＭＡデータ転送のタイミングチャートである。
【図１１Ａ】本発明の実施の形態１にかかるＤＭＡデータ転送のタイミングチャートである。
【図１１Ｂ】本発明の実施の形態１にかかるＤＭＡデータ転送のタイミングチャートである。
【図１２】本発明の実施の形態１にかかるＤＭＡデータ転送のタイミングチャートである。
【図１３】本発明の実施の形態１にかかるＤＭＡ転送時間の期待値を示すグラフである。
【図１４】本発明の実施の形態１にかかるＤＭＡ転送時間の期待値を示すグラフである。
【図１５】本発明の実施の形態２のＤＭＡコントローラのブロック図である。
【図１６】本発明の実施の形態２のバス観測回路の構成図である。
【図１７】変換テーブルの構成図である。
【発明を実施するための形態】
【００１４】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。信号線とそれに対応する信号とは同一の符号により表される。
【００１５】
実施の形態１
本発明の実施の形態１に係るＤＭＡコントローラとそれを備えバスシステムを図１に示す。図１に示すバスシステムは、ＤＭＡ転送元であるＤＭＡマスター（ＤＭＡ回路）５０−０〜５０−Ｎ（Ｎは自然数）と、それに対応するＦＩＦＯ回路６０−０〜６０−Ｎと、バス９と、メモリコントローラ１０と、外部メモリ（共有メモリ）１１と、調停回路１２と、バス観測回路１３と、ＣＰＵ１４と、を備える。なお調停回路１２とバス観測回路１３とにより、各ＤＭＡマスター５０−０〜５０−Ｎと外部メモリ１１との間のデータ転送を制御するＤＭＡコントローラを構成する。また各ＤＭＡマスター５０−０〜５０−Ｎとそれに対応するＦＩＦＯ回路６０−０〜６０−Ｎとにより、それぞれＤＭＡ部４０−０〜４０−Ｎを構成する。
【００１６】
ＤＭＡマスター５０−０〜５０−Ｎは、データ（第２の転送データ）転送用の信号線を介して、対応するＦＩＦＯ回路６０−０〜６０−Ｎに接続される。ＦＩＦＯ回路６０−０〜６０−Ｎは、データ（第１の転送データ）転送用の信号線を介してバス９に接続される。そして、バス９はメモリコントローラ１０を介して外部メモリ１１に接続される。
【００１７】
ＦＩＦＯ回路６０−０〜６０−Ｎは、対応するＤＭＡマスター５０−０〜５０−Ｎからのデータ転送要求に応じた要求信号ＢＵＳ＿ＲＥＱ［Ｎ：０］を、調停回路１２及びバス観測回路１３に対して出力する。
【００１８】
調停回路１２は、転送許可信号ＢＵＳ＿ＡＣＫ［Ｎ：０］を、ＦＩＦＯ回路６０−０〜６０−Ｎ及びバス観測回路１３に対して出力する。ＦＩＦＯ回路６０−０〜６０−Ｎは、データ有効状態信号ＢＵＳ＿ＶＡＬＩＤ［Ｎ：０］を、バス観測回路１３に対して出力する。ＣＰＵ１４はレジスタ設定信号をバス観測回路１３に対して出力する。
【００１９】
バス観測回路１３は、バースト長情報ＢＬをＦＩＦＯ回路６０−０〜６０−Ｎに対して出力する。またバス観測回路１３は、バースト長情報更新信号ＢＬ＿ＣＨＡＮＧＥ［Ｎ：０］を、対応するＦＩＦＯ回路６０−０〜６０−Ｎに対して出力する。マスター側クロック（第２のクロック）であるＣＬＫ＿ｍａｓｔｅｒは、ＤＭＡマスター５０−０〜５０−Ｎ及びＦＩＦＯ回路６０−０〜６０−Ｎのクロック入力端子に入力される。また、バスインタフェース側クロック（第１のクロック）であるＣＬＫ＿ｂｕｓは、ＦＩＦＯ回路６０−０〜６０−Ｎ、調停回路１２、及びバス観測回路１３のクロック入力端子に入力される。
【００２０】
図２は、ＦＩＦＯ回路６０−０のブロック図である。なお、他のＦＩＦＯ回路は図１に示すブロック図と同様の構成であるため、説明を省略する。図２に示す回路は、ＤＭＡマスターインタフェース回路１６と、ＦＩＦＯメモリ１５と、バスインタフェース回路１７と、を備える。
【００２１】
ＤＭＡマスターインタフェース回路１６は、データ転送用の信号線を介して、ＤＭＡマスター５０−０に接続される。また、ＤＭＡマスターインタフェース回路１６は、ＦＩＦＯメモリ１５と互いに接続され、データの送受信を行う。ＦＩＦＯメモリ１５は、バスインタフェース回路１７と互いに接続され、データの送受信を行う。バスインタフェース回路１７は、入出力信号アドレス／データで構成されるバス９と互いに接続され、データの送受信を行う。またバスインタフェース回路１７は、バス観測回路１３からのバースト長情報ＢＬ及びバースト長情報更新信号ＢＬ＿ＣＨＡＮＧＥ［０］と、調停回路１２からの転送許可信号ＢＵＳ＿ＡＣＫ［０］と、を入力とし、データ有効状態信号ＢＵＳ＿ＶＡＬＩＤ［０］と、転送要求信号ＢＵＳ＿ＲＥＱ［０］と、を出力する。なお、クロックＣＬＫ＿ｍａｓｔｅｒは、ＤＭＡマスターインタフェース回路１６と、ＦＩＦＯメモリ１５と、に入力される。クロックＣＬＫ＿ｂｕｓは、ＦＩＦＯメモリ１５と、バスインタフェース回路１７と、に入力される。
【００２２】
ＦＩＦＯメモリ１５は、クロックＣＬＫ＿ｍａｓｔｅｒとクロックＣＬＫ＿ｂｕｓとに同期したデータの受け渡しを行う。バスインタフェース回路１７は、バス９を介して外部メモリ１１との間でデータ転送を行う。このときバスインタフェース回路１７は、データ有効状態信号ＢＵＳ＿ＶＡＬＩＤ［０］と、調停回路１２への転送要求信号ＢＵＳ＿ＲＥＱ［０］と、調停回路１２からの転送許可信号ＢＵＳ＿ＡＣＫ［０］と、によりデータ転送が制御される。また、データ転送のバースト長は、バス観測回路１３から通知されるバースト長情報ＢＬにより決定される。なおデータ転送のバースト長は、バースト長情報更新信号ＢＬ＿ＣＨＡＮＧＥ［０］が入力されることにより更新される。
【００２３】
図３は、バス観測回路１３の詳細な構成を示す。図３に示す回路は、マルチセレクタ１８，１９と、選択レジスタ２０と、転送要求信号カウンタ２２と、転送許可信号カウンタ２３と、インターバルカウンタ２４と、コンペアレジスタ２５と、比較回路２６と、演算回路２８と、スレッシュ値設定部３０と、比較部３１と、変換テーブル（記憶部）３２と、デマルチセレクタ３４と、を備える。
【００２４】
ＣＰＵ１４はバス観測回路１３に対してレジスタ設定信号を出力する（図１）。このレジスタ設定信号は、選択レジスタ２０と、コンペアレジスタ２５と、スレッシュ値設定部３０と、変換テーブル３２と、に入力される。なお、ＣＰＵ１４はレジスタ設定信号を制御可能である。図３に示す回路の例では、複数のＤＭＡマスターのうち何れか一つのＤＭＡマスターが選択され、当該ＤＭＡマスターはＤＭＡ転送時間（データ転送完了時間）の制御対象となる。なお、レジスタ設定信号は、選択するＤＭＡマスターの情報を含み、その情報はレジスタ設定回路０２に格納される。
【００２５】
マルチセレクタ１８は、選択レジスタ２０からの出力信号２１に基づいて、データ有効状態信号ＢＵＳ＿ＶＡＬＩＤ［Ｎ：０］と転送要求信号ＢＵＳ＿ＲＥＱ［Ｎ：０］のうち、何れかのビットのデータ有効状態信号ＢＵＳ＿ＶＡＬＩＤ，転送要求信号ＢＵＳ＿ＲＥＱを出力する。マルチセレクタ１９は、選択レジスタ２０からの出力信号２１に基づいて、転送許可信号ＢＵＳ＿ＡＣＫ［Ｎ：０］のうち、何れかのビットの転送許可信号ＢＵＳ＿ＡＣＫを出力する。
【００２６】
マルチセレクタ１８からの出力信号は、転送要求信号カウンタ２２の一方の入力端子に入力される。マルチセレクタ１９からの出力信号は、転送許可信号カウンタ２３の一方の入力端子に入力される。インターバルカウンタ２４は、クロックＣＬＫ＿ｂｕｓによってカウントアップされるカウント情報を、比較回路２６の一方の入力端子に対して出力する。また、コンペアレジスタ２５は、レジスタ設定信号によって設定されるバースト長の更新周期の情報を、比較回路２６の他方の入力端子に対して出力する。
【００２７】
比較回路２６の出力信号２７は、インターバルカウンタ２４とコンペアレジスタ２５の一致を通知する信号である。この出力信号２７は、転送要求信号カウンタ２２の他方の入力端子と、転送許可信号カウンタ２３の他方の入力端子と、デマルチセレクタ３４の一方の入力端子と、に入力される。演算回路２８は、転送要求信号カウンタ２２の出力信号と転送許可信号カウンタ２３の出力信号とを入力とし、出力信号２９を比較部３１に対して出力する。なお演算回路２８は、比較回路２６からの出力信号２７によって出力が制御される。つまり演算回路２８は、インターバルカウンタ２４とコンペアレジスタ２５との出力が一致した場合に、出力信号２９を比較部３１に対して出力する。
【００２８】
デマルチセレクタ３４の他方の入力端子（制御端子）には、選択レジスタ２０の出力信号２１が制御信号として入力される。またデマルチセレクタ３４の出力端子には、バースト長情報更新信号ＢＬ＿ＣＨＡＮＧＥ［Ｎ：０］が接続される。ここでデマルチセレクタ３４は、制御信号（出力信号２１）によって選択されたＦＩＦＯ回路に向けてバースト長情報更新信号ＢＬ＿ＣＨＡＮＧＥを出力する。
【００２９】
スレッシュ値設定部３０は、後述する転送データの転送間隔のスレッシュ値（しきい値）が設定される複数のスレッシュ値設定回路３０−０〜３０−ｍ（ｍは自然数）を有する。比較部３１は、複数のスレッシュ値設定回路３０−０〜３０−ｍに対応する複数の比較回路３１−０〜３１−ｍを有する。スレッシュ値設定部３０は、ＣＰＵ１４からのレジスタ設定信号を入力とする。つまり、スレッシュ値設定回路３０−０〜３０−ｍは、レジスタ設定信号に基づいてそれぞれのしきい値が設定される。比較部３１は、複数のスレッシュ値設定回路３０−０〜３０−ｍからの出力信号を入力とする。具体的には、複数のスレッシュ値設定回路３０−０〜３０−ｍからの出力信号は、それに対応する複数の比較回路３１−０〜３１−ｍの一方の端子にそれぞれ入力される。なお、複数の比較回路３１−０〜３１−ｍの他方の端子には、演算回路２８からの出力信号２９がそれぞれ入力される。
【００３０】
比較部３１の出力信号、つまり複数の比較回路３１−０〜３１−ｍの出力信号Ｃ−０〜Ｃ−ｍと、ＣＰＵ１４からのレジスタ設定信号と、が変換テーブル３２に入力される。そして変換テーブル３２は、バースト長情報ＢＬ（３３）を出力する。
【００３１】
バス観測回路１３では、ＤＭＡ転送時間（データ転送完了時間）の制御対象となるＤＭＡマスターがマルチセレクタ１８，１９及びデマルチセレクタ３４によって選択される。つまり、当該ＤＭＡマスターに対応するＦＩＦＯ回路から出力されたデータ有効状態信号ＢＵＳ＿ＶＡＬＩＤ及び転送要求信号ＢＵＳ＿ＲＥＱが、マルチセレクタ１８によって選択される。また調停回路１２から出力された当該ＤＭＡマスターに対応する転送許可信号ＢＵＳ＿ＡＣＫが、マルチセレクタ１９によって選択される。また当該ＤＭＡマスターに対応するＦＩＦＯ回路に対して出力するバースト長情報更新信号ＢＬ＿ＣＨＡＮＧＥが、デマルチセレクタ３４によって選択される。
【００３２】
マルチセレクタ１８、１９の出力信号は、それぞれ転送要求信号カウンタ２２、転送許可信号カウンタ２３をインクリメントする。一方、比較回路２６は、インターバルカウンタ２４によるクロックＣＬＫ＿ｂｕｓのカウント情報と、レジスタ設定信号によってコンペアレジスタ２５に設定されるバースト長の更新周期の情報と、を比較する。それにより、インターバルカウンタ２４とコンペアレジスタ２５の出力結果が一致する一定周期毎に通知信号（出力信号２７）が出力される。演算回路２８は、この通知信号がアクティブになる毎に、転送要求信号カウンタ２２の出力と、転送許可信号カウンタ２３の出力と、の演算結果を出力信号２９として生成する。
【００３３】
スレッシュ値設定部３０はレジスタ設定信号により設定可能なレジスタである。スレッシュ値設定部３０において設定されたスレッシュ値０〜ｍと、演算回路２８の出力信号２９と、が比較部３１において比較され、比較結果Ｃ−０〜Ｃ−ｍが変換テーブル３２に入力される。変換テーブル３２は、レジスタ設定信号により設定可能なレジスタから構成される変換テーブルであり、例えば図１７に示すような構成である。
【００３４】
変換テーブル３２は、比較結果Ｃ−０〜Ｃ−ｍに基づいてバースト長情報ＢＬ（３３）を生成し、出力する。一方、デマルチセレクタ３４は、選択レジスタ２０の出力信号２１によって選択されたＦＩＦＯ回路に向けてバースト長情報更新信号ＢＬ＿ＣＨＡＮＧＥを出力する。このバースト長情報更新信号ＢＬ＿ＣＨＡＮＧＥは、制御対象となるＦＩＦＯ回路から出力される転送データのバースト長情報ＢＬを更新する。
【００３５】
バス９のデータ転送はバスの転送規則（バス・プロトコル）により様々であるが、基本的に図１，７に図示する信号で動作する。図４は、ＤＭＡマスター５０−０が８個の転送データＭＡＳＴＥＲ＿ＤＡＴＡ（データ長ＤＬが８；第２の転送データ）を転送する場合の例である。ＤＭＡマスター５０−０は、バースト長情報ＢＬで示される転送個数（図４の場合では４個）のデータをＦＩＦＯ回路６０−０へ転送する。そして、ＦＩＦＯ回路６０−０は、調停回路１２に対して転送要求信号ＢＵＳ＿ＲＥＱを通知する。
【００３６】
調停回路１２は、他のバスインタフェース回路１７との調停をおこない、転送許可信号ＢＵＳ＿ＡＣＫをＦＩＦＯ回路６０−０に返す。ＦＩＦＯ回路６０−０は、転送許可信号ＢＵＳ＿ＡＣＫを受けとった場合、次のクロックからバースト長情報ＢＬ（図４では４個）の転送データＢＵＳ＿ＤＡＴＡ（図４では実線で囲む４個；第１の転送データ）を、データ有効信号ＢＵＳ＿ＶＡＬＩＤとともにバス９へ出力する。
【００３７】
なお、バス観測回路１３は、バス９の動作状態を示すデータ有効信号ＢＵＳ＿ＶＡＬＩＤ［Ｎ：０］、転送要求信号ＢＵＳ＿ＲＥＱ［Ｎ：０］、転送許可信号ＢＵＳ＿ＡＣＫ［Ｎ：０］を入力とし、バースト長情報ＢＬとバースト長情報更新信号ＢＬ＿ＣＨＡＮＧＥを生成する。ＦＩＦＯ回路６０−０に備えられたバスインタフェース回路１７は、バス観測回路１３からのバースト長情報ＢＬ及びバースト長情報更新信号ＢＬ＿ＣＨＡＮＧＥが入力される毎にデータ転送のバースト長を更新する。このような動作は、他のＤＭＡマスターについても同様である。
【００３８】
図５は、バス観測回路１３がバースト長情報ＢＬとバースト長更新信号ＢＬ＿ＣＨＡＮＧＥを生成するフローチャートである。レジスタ設定信号による選択レジスタ２０の設定によりＤＭＡ転送時間を制御する対象となるＤＭＡマスターを選択する（ステップＳ１）。
【００３９】
スレッシュ値設定部３０と、比較部３１の比較結果とバースト長情報ＢＬとの対応付けをおこなう変換テーブル３２と、をレジスタ設定値に応じた値に設定する（ステップＳ２）。コンペアレジスタ２５を、バースト長情報ＢＬの更新信号であるＢＬ＿ＣＨＡＮＧＥを発生させる周期に設定を行う（ステップＳ３）。
【００４０】
インターバルカウンタ２４を０に初期化する（ステップＳ４）。転送要求信号カウンタ２２、転送許可信号カウンタ２３を０に初期化する（ステップＳ５）。以上のレジスタ設定と初期化が完了した後、インターバルカウンタ２４がクロック入力毎にインクリメントを開始する（ステップＳ６）。
【００４１】
図１のＤＭＡマスター５０−０〜５０−Ｎが、ＦＩＦＯ回路６０−０〜６０−Ｎを介してバス９へのＤＭＡデータ転送を行う。データ転送が行われている間、ＤＭＡ転送時間の制御対象となるＤＭＡマスター及びそれに対応するＦＩＦＯ回路が選択される。そして、選択されたＦＩＦＯ回路からのデータ有効信号ＢＵＳ＿ＶＡＬＩＤ、転送要求信号ＢＵＳ＿ＲＥＱのＡＮＤ信号が転送要求信号カウンタ２２をインクリメントする（ステップＳ７）。
【００４２】
また、選択されたＢＵＳ＿ＡＣＫ信号が入力される転送許可信号カウンタ２３は、アクティブレベルが入力される毎にインクリメント動作をする（ステップＳ８）。比較回路２６は、ステップＳ６においてインクリメント動作を開始したインターバルカウンタ２４のカウント情報と、コンペアレジスタ２５の設定値と、が一致するかの判定をする（ステップＳ９）。
【００４３】
これより一定周期毎に通知信号２７が比較回路２６から出力される。判定結果がＮｏの場合、バースト長情報ＢＬは更新されずにステップＳ７に戻る。一方、比較結果がＹｅｓの場合、演算回路２８は、転送要求信号カウンタ２２のカウント情報と転送許可信号カウンタ２３のカウント情報とに基づいて１転送許可あたりの転送要求信号のアクティブレベル期間（転送データの転送間隔）を算出し、算出した値２９を出力する。比較部３１は、スレッシュ値設定部３０から出力される転送データの転送間隔のしきい値と、演算回路２８の出力結果２９と、をそれぞれ比較する。そして変換テーブル３２は、比較部３１の比較結果に基づいてバースト長情報ＢＬ（３３）を出力する。同時に、デマルチセレクタ３４は、選択レジスタ２０の出力信号２１によって選択されたＦＩＦＯ回路に向けてバースト長情報更新信号ＢＬ＿ＣＨＡＮＧＥを出力する（ステップＳ１０）。
【００４４】
その後、制御対象のバスインタフェースの変更が発生したかを判定する（ステップＳ１１）。ステップＳ１１の判定結果がＹｅｓの場合はステップＳ１に戻り、判定結果がＮｏの場合はスレッシュ値、変換テーブル、コンペアレジスタの設定変更が発生したか判定（ステップＳ１２）する。ステップＳ１２の判定結果がＹｅｓの場合はステップＳ２に戻り、判定結果がＮｏの場合はＤＭＡ転送が完了しているかの判定を行う（ステップＳ１３）。ステップＳ１３の判定結果がＹｅｓの場合はＤＭＡ転送を終了し、判定結果がＮｏならばステップＳ４に戻る。
【００４５】
図１２に示すデータ転送のタイミングチャートの例では、ＤＭＡマスターがＤＬ個のデータ転送を行う。ここで、バスインタフェース回路１７において、最後のＢＵＳ＿ＤＡＴＡのデータ転送が完了するまでの時間をＴとする。クロックＣＬＫ＿ｍａｓｔｅｒの周期をＣｍａｓｔｅｒ、クロックＣＬＫ＿ｂｕｓの周期をＣｂｕｓ、バスインタフェース回路１７と外部メモリ１１との間の転送データのバースト長をバースト長情報ＢＬとする。バスインタフェース回路１７がｉ番目の転送要求信号ＢＵＳ＿ＲＥＱを調停回路１２に対して出力してから、ｉ番目の転送許可信号ＢＵＳ＿ＡＣＫを得るまでのクロック数を調停待ちクロック数Ｗｉとする。また、転送要求信号ＢＵＳ＿ＲＥＱが常に活性化されている状態において、ｉ番目の転送許可信号ＢＵＳ＿ＡＣＫからｉ＋１番目の転送許可信号ＢＵＳ＿ＡＣＫの間のクロック数も調停待ちクロック数Ｗｉとする。
【００４６】
調停待ちクロック数Ｗｉから実際にデータ転送に要したクロック数のバースト長情報ＢＬを減算したものをＷＥｉとする。このＷＥｉは、他のＤＭＡマスターの転送との競合による待ちクロック数（データ転送間隔）を示す。このとき、ＴはＷＥｉとバースト長情報ＢＬの関数として定式化することができる。ＷＥｉの一定クロック数の期間における平均値をＡｖｅ（ＷＥｉ）としたときＴの期待値をＥｘｐ（Ｔ）とするとＥｘｐ（Ｔ）はＡｖｅ（ＷＥｉ）とバースト長情報ＢＬの関数として表すことができる。総転送時間Ｔを短くするためには、ＤＭＡマスターからＦＩＦＯ回路への転送データ数ＤＬ、ＤＭＡマスター側クロックの周期Ｃｍａｓｔｅｒ、バスインタフェース側クロックの周期Ｃｂｕｓ、および待ちクロック数（データ転送間隔）の平均値Ａｖｅ（ＷＥｉ）に応じてＥｘｐ（Ｔ）を最小にするようなバースト長情報ＢＬを決定することにより得ることができる。
【００４７】
図６はＥｘｐ（Ｔ）を最小にするバースト長情報ＢＬを決定するために、スレッシュ値設定部３０に設定するスレッシュ値（しきい値）０〜ｍと、変換テーブル３２に設定するバースト長情報ＢＬ［ｍ：０］と、を導出するフローチャートである。関数Ｅｘｐ（Ｔ）が与えられると、平均値Ａｖｅ（ＷＥｉ）を示すＡｖｅＷＥ（ｌ）（ｌ＝０、１、２、〜Ｌ）と、ＢＬ（ｎ）（ｎ＝０、１、２、・・・Ｎ）と、によりＥｘｐ（Ｔ）の値が対応付けられる。なおＡｖｅＷＥ（ｌ）及びＢＬ（ｎ）は、ともにｌとｎに対して昇順の値をとるものとする。また、この関係をＥｘｐ（Ｔ）＝（（ＡｖｅＷＥ（ｌ）、ＢＬ（ｎ））と表すものとする。
【００４８】
変数ＥｘｐＴｍｉｎ（Ｅｘｐ（Ｔ）に対応）は、変数Ｉｎｄｅｘ、Ｉｎｄｅｘ＿ｐｒｅ、ｍとともにフローチャートにおいて一時的に値を格納する変数であり、ＥｘｐＴｍｉｎ＝（ＡｖｅＷＥ（０）、ＢＬ（０））、Ｉｎｄｅｘ＝０、Ｉｎｄｅｘ＿ｐｒｅ＝０、ｍ＝０に初期化される（ステップ１４）。
【００４９】
ステップＳ１５とステップＳ２２からなるループＬと、ステップＳ１６とステップＳ１９からなるループＮと、はそれぞれｌとｎの値を１ずつインクリメントしながら繰り返されるループである。ステップＳ１５がスタートすると、次にステップＳ１６とステップＳ１９からなるループＮが実行され、ＥｘｐＴｍｉｎの値と（ＡｖｅＷＥ（ｌ）、ＢＬ（ｎ））の値を比較する（ステップＳ１７）。
【００５０】
ＥｘｐＴｍｉｎが（ＡｖｅＷＥ（ｌ）、ＢＬ（ｎ））より大きい場合は、ＥｘｐＴｍｉｎの値を（ＡｖｅＷＥ（ｌ）、ＢＬ（ｎ））に更新する。そして、そのときのｎの値をＩｎｄｅｘに格納する（ステップＳ１８）。ループＮがＮ回ループを終了した時点（ステップＳ１９）で、ＩｎｄｅｘにはＡｖｅＷＥ（ｌ）においてＥｘｐ（Ｔ）を最小にするＢＬ（ｎ）のｎの値が格納されている。ループＮがＮ回ループした後、Ｉｎｄｅｘ＿ｐｒｅの値とＩｎｄｅｘの値を比較して、値の更新があったかを判定する（ステップＳ２０）。
【００５１】
ステップＳ２０の判定がＮｏすなわち更新があった場合、スレッシュ値ｍの値をＡｖｅＷＥ（ｉｎｄｅｘ＿ｐｒｅ）、ＢＬ［ｍ］の値をＢＬ（ｉｎｄｅｘ＿ｐｒｅ）とし、ｍの値を１つインクリメントする。そして、Ｉｎｄｅｘ＿ｐｒｅにｉｎｄｅｘを格納（ステップＳ２１）し、次のループに入る（ステップＳ２２）。また、ステップＳ２０の判定がＹｅｓの場合も次のループに入る（ステップＳ２２）。ループＬがＬ回ループしたらステップＳ２２を抜ける。その結果、スレッシュ値設定回路３０−０〜３０−ｍに対して設定される値はそれぞれスレッシュ値０〜ｍとなる。また、それらに対応して変換テーブル３２に設定される値はそれぞれＢＬ［０］〜ＢＬ［ｍ］となる。
【００５２】
図１３に示すグラフは、ＤＭＡマスター側クロックの周期Ｃｍａｓｔｅｒが１０、バスインタフェース側クロックの周期Ｃｂｕｓが１０、転送データ数ＤＬが１６の場合におけるＥｘｐ（Ｔ）とＡｖｅ（ＷＥｉ）とＢＬとの関係である。Ｅｘｐ（Ｔ）とＡｖｅ（ＷＥｉ）とＢＬとにより構成される関数に対して図６のフローチャートを適用することにより、スレッシュ値０が０、スレッシュ値１が１、スレッシュ値２が２、スレッシュ値３が１５、が求められる。また、それに対応するバースト長情報として、ＢＬ［０］が２、ＢＬ［１］が４、ＢＬ［２］が８、ＢＬ［３］が１６、が求められる。
【００５３】
したがって、図３のスレッシュ値０は０、スレッシュ値１は１、スレッシュ値２は２、スレッシュ値３は１５が設定される。また、変換テーブル３２で示す変換テーブルの値は、比較部３１のＣ−０〜Ｃ−ｍにおいて、Ｃ−０が１、Ｃ−１が０、Ｃ−２が０、Ｃ−３が０の場合バースト長情報ＢＬは２を示す。Ｃ−０が１、Ｃ−１が１、Ｃ−２が０、Ｃ−３が０の場合バースト長情報ＢＬは４を示す。Ｃ−０が１、Ｃ−１が１、Ｃ−２が１、Ｃ−３が０の場合バースト長情報ＢＬは８を示す。Ｃ−０が１、Ｃ−１が１、Ｃ−２が１、Ｃ−３が１の場合バースト長情報ＢＬは１６を示す。なお、上述のようなスレッシュ値設定部３０及び変換テーブル３２に対する設定情報は、ＣＰＵ１４からのレジスタ設定信号に基づいて予め設定される。
【００５４】
例えば、図１３に示す動作条件において、図３の演算回路２８の出力信号２９の値が１０である場合、この出力信号２９の値は、スレッシュ値０の設定値０、スレッシュ値１の設定値１、スレッシュ値２の設定値５を超える値である。そのため、比較部３１の比較結果Ｃ−０〜Ｃ−ｍは、Ｃ−０が１、Ｃ−１が１、Ｃ−２が１、Ｃ−３が０となり、変換テーブル３２において、バースト長情報ＢＬの８が索引される。
【００５５】
バースト長の制御対象であるＦＩＦＯ回路のバスインタフェース回路１７は、バースト長情報ＢＬとバースト長情報更新信号ＢＬ＿ＣＨＡＮＧＥとをバス観測回路１３から受け取ると、次にバースト長更新信号ＢＬ＿ＣＨＡＮＧＥが入力されるまでバースト長をＢＬ値としバス９へのデータ転送を行う。
【００５６】
図７〜図１０は、図１に示す回路が３個のＤＭＡマスター５０−０〜５０−２を有する場合のデータ転送のタイミングチャートである。なお、図７〜図１０に示すタイミングチャートは、ＤＭＡマスター５０−０のみがデータ転送を行い、バースト長が固定された場合の例である。また、動作条件は図１３に示す動作条件とする。ここでＣＮはＤＭＡマスターがＭＡＳＴＥＲ＿ＤＡＴＡの最初のデータ転送を開始してから、バスインタフェース回路１７が当該ＭＡＳＴＥＲ＿ＤＡＴＡに対応するＢＵＳ＿ＤＡＴＡの最後のデータ転送が完了するまでのクロック数を示す。ＤＭＡマスター５０−０は、データ長ＤＬが１６にてＦＩＦＯ回路６０−０に対しデータ転送を行う。
【００５７】
図７の場合、ＦＩＦＯ回路６０−０に備えられたバスインタフェース回路１７は、バースト長情報ＢＬが２にてデータ転送をおこなう。このときクロックＣＬＫ＿ｍａｓｔｅｒとクロックＣＬＫ＿ｂｕｓが等しいため、クロック数２０にて最後のＢＵＳ＿ＤＡＴＡのデータ転送が完了する。同様に図８、図９、図１０ではＦＩＦＯ回路６０−０に備えられたバスインタフェース回路１７は、それぞれバースト長情報ＢＬが４、ＢＬ値が８、ＢＬ値が１６にてデータ転送をおこなう。このときそれぞれクロック数２２、クロック数２６、クロック数３４にてデータ転送が完了する。つまり、バースト長情報ＢＬが２の場合が最も短い時間でデータ転送が完了する。以下にさらに詳細に説明する。
【００５８】
図７〜図１０に示すように、ＤＭＡ転送時間を制御する対象がＤＭＡマスター５０−０である場合、本実施の形態にかかるＤＭＡコントローラは、図５の制御フローチャートに従ってバス観測回路１３が動作する。ステップＳ１において、データ有効信号ＢＵＳ＿ＶＡＬＩＤ［０］と、転送要求信号ＢＵＳ＿ＲＥＱ［０］と、転送許可信号ＢＵＳ＿ＡＣＫ［０］と、がＣＰＵ１４からのレジスタ設定信号によって選択される。また、バースト長更新信号ＢＬ＿ＣＨＡＮＧＥ［０］がレジスタ設定信号によって選択される。
【００５９】
ステップＳ２において、スレッシュ値０が０、スレッシュ値１が１、スレッシュ値２が２、スレッシュ値３が１５に設定される。また、変換テーブル３２に設定される値は、比較部３１のＣ−０〜Ｃ−ｍにおいて、Ｃ−０が１、Ｃ−１が０、Ｃ−２が０、Ｃ−３が０の場合、バースト長情報ＢＬは２である。Ｃ−０が１、Ｃ−１が１、Ｃ−２が０、Ｃ−３が０の場合バースト長情報ＢＬは４である。Ｃ−０が１、Ｃ−１が１、Ｃ−２が１、Ｃ−３が０の場合バースト長情報ＢＬは８である。Ｃ−０が１、Ｃ−１が１、Ｃ−２が１、Ｃ−３が１の場合バースト長情報ＢＬは１６である。
【００６０】
ステップＳ３において、バースト長更新信号ＢＬ＿ＣＨＡＮＧＥの更新周期がレジスタ設定信号によってコンペアレジスタ２５に設定される。ステップＳ４、ステップＳ５において、インターバルカウンタ２４、転送要求信号カウンタ２２、転送許可信号カウンタ２３を０に初期化する。その後ステップＳ６において、インターバルカウンタ２４は、クロックＣＬＫ＿ｂｕｓを入力するたびにインクリメント動作を行う。
【００６１】
ステップＳ７において、データ有効信号ＢＵＳ＿ＶＡＬＩＤ［０］、転送要求信号ＢＵＳ＿ＲＥＱ［０］のＡＮＤ信号が入力される転送要求信号カウンタ２２は、インクリメント動作をする。また、ステップＳ８において、転送許可信号ＢＵＳ＿ＡＣＫ［０］が入力される転送許可信号カウンタ２３は、アクティブレベルが入力される毎にインクリメント動作をする（ステップＳ８）。
【００６２】
ステップＳ９において、インターバルカウンタ２４及びコンペアレジスタ２５の出力結果が一致するまでステップＳ７、ステップＳ８のインクリメント動作を継続する。ステップＳ９において、これらの出力結果が一致した場合、比較回路２６から出力される通知信号２７により、ステップＳ１０にて演算回路２８の演算結果２９が更新される。
【００６３】
図７示す回路の例では、ＤＭＡマスター５０−０のみが転送をおこなっておりバスが空いている状態である。具体的には、Ｗｉが２、バースト長情報ＢＬが２であることからＷｅｉが１未満の値である。つまり、演算回路２８の出力信号２９であるＡｖｅ（ＷＥｉ）も同じく１未満の値である。このとき、ステップＳ２にて設定したスレッシュ値と、出力信号２９と、を比較した比較結果はＣ−０が１、Ｃ−１が０、Ｃ−２が０、Ｃ−３が０である。そのため、変換テーブル３２の出力信号３３であるバースト長情報ＢＬは２となる。またデマルチセレクタ３４は、ＦＩＦＯ回路６０−０に向けてバースト長情報更新信号ＢＬ＿ＣＨＡＮＧＥ［０］を出力する。
【００６４】
ＦＩＦＯ回路６０−０のバスインタフェース回路１７は、バス観測回路１３からバースト長情報ＢＬ（値が２）とバースト長情報更新信号ＢＬ＿ＣＨＡＮＧＥ［０］とが入力されると、それ以降バースト長が２でデータ転送が継続される。これにより図７に示すとおりＤＭＡマスター５０−０はクロック数２０にてデータ転送を完了し、図８、図９、図１０で示すクロック数よりも短くデータ転送することができる。
【００６５】
次に、ＤＭＡマスター５０−０に加えてＤＭＡマスター１、ＤＭＡマスター２がデータ転送を行うことによりバス９が混雑する場合の例を図１１Ａ、図１１Ｂに示す。なお、動作条件は図１３に示す動作条件とする。これら３つのＤＭＡマスター間のデータ転送の調停は調停回路１２によって行われる。ここでは、転送許可が与えられたＤＭＡマスターの転送が完了すると、当該ＤＭＡマスターは常に最下位の優先順となり、それ以外のＤＭＡマスターの優先順がそれぞれ１つ高くなることで全てのＤＭＡマスターへ均等に転送許可の機会を与える調停方式（ラウンドロビン方式）が用いられる。
【００６６】
図１１Ａの例では、ＤＭＡマスター５０−０は、ＤＬが１６、バースト長情報ＢＬが２で固定されている。ＤＭＡマスター５０−１は、ＤＬが１６、バースト長情報ＢＬが４である。ＤＭＡマスター５０−２は、ＤＬが１６、バースト長情報ＢＬが２である。このとき、ＤＭＡマスター５０−０は、バスが空いている状態ではクロック数２０にてデータ転送が完了していた（図７）。一方、図１１Ａではクロック数６５にてデータ転送が完了する。
【００６７】
図１１Ｂの例では、本実施の形態にかかるＤＭＡコントローラが、Ａｖｅ（ＷＥｉ）の値に基づいてデータ転送のバースト長を制御している。図１１Ａに示すようにＢＬ値が２の場合、Ａｖｅ（ＷＥｉ）は５〜６の範囲の値である。ここで、スレッシュ値０が０、スレッシュ値１は１、スレッシュ値２は２、スレッシュ値３は１５であることから、変換テーブル３２への入力はＣ０が１、Ｃ１が１、Ｃ２が１、Ｃ３が０となる。そのため、変換テーブル３２の出力信号３３であるバースト長情報ＢＬは８となる。またデマルチセレクタ３４は、ＦＩＦＯ回路６０−０に向けてバースト長情報更新信号ＢＬ＿ＣＨＡＮＧＥ［０］を出力する。
【００６８】
ＦＩＦＯ回路６０−０のバスインタフェース回路１７は、バス観測回路１３からバースト長情報ＢＬ（値が８）とバースト長情報更新信号ＢＬ＿ＣＨＡＮＧＥ［０］とが入力されると、それ以降バースト長が８でデータ転送が継続される。これにより図１１Ｂに示すとおりＤＭＡマスター５０−０はクロック数３３にてデータ転送を完了し、図１１Ａで示すクロック数よりも短くデータ転送することができる。
【００６９】
なお、前述のように図１３に示すグラフは、ＤＭＡマスター側クロックの周期Ｃｍａｓｔｅｒが１０、バスインタフェース側クロックの周期Ｃｂｕｓが１０、転送データ数ＤＬが１６のときのＢＬとＡｖｅ（ＷＥｉ）とＥｘｐ（Ｔ）との関係を示す。一方、図１４に示すグラフは、ＤＭＡマスター側クロックの周期Ｃｍａｓｔｅｒが１０、バスインタフェース側クロックの周期Ｃｂｕｓが５、転送データ数ＤＬが３２のときのＢＬとＡｖｅ（ＷＥｉ）とＥｘｐ（Ｔ）の関係を示す。この関係が示すようにＥｘｐ（Ｔ）はバースト長情報ＢＬに対して非単調な値をとる。このことは従来技術で示している「バースト長を長くすれば転送時間が短くなる」とは限らないことを示している。同時に、Ａｖｅ（ＷＥｉ）と、ＤＭＡマスター側クロックの周期Ｃｍａｓｔｅｒと、バスインタフェース側クロックの周期Ｃｂｕｓと、に基づいてＥｘｐ（Ｔ）を最小にするバースト長情報ＢＬが存在することを示している。
【００７０】
また、Ａｖｅ（ＷＥｉ）は一定クロック数の間のＷＥｉの平均値であることから、図３の演算回路２８の出力信号２９にて得ることが可能である。対象となるＤＭＡマスターのデータ転送時間を最も短くするバースト長情報ＢＬを得るために、バス観測回路１３は、Ｅｘｐ（Ｔ）が最小値を示すバースト長情報ＢＬをＡｖｅ（ＷＥｉ）に基づいて決定する。スレッシュ値設定部３０は、図６のフローチャートに従ってスレッシュ値０〜ｍを算出する。つまり、Ｅｘｐ（Ｔ）が最小値を示すバースト長情報ＢＬを取得できるように、Ａｖｅ（ＷＥｉ）の値に応じてスレッシュ値０〜ｍが設定される。変換テーブル３２は、図６のフローチャートに従ってＥｘｐ（Ｔ）を最小にするバースト長情報ＢＬの値ＢＬ［ｍ：０］が設定される。
【００７１】
このように、本実施の形態では、選択されたいずれか一つのＤＭＡマスターのデータ転送の転送時間を、データ転送間隔に基づいて制御することにより、効果的にデータ転送の最適化を行うことができる。それにより、システム全体のパフォーマンスの劣化を抑制することができる。
【００７２】
実施の形態２
本発明の実施の形態２に係るＤＭＡコントローラとそれを備えバスシステムを図１５に示す。図１５に示す回路は、図１に示す回路と比較して、バス観測回路１３の代わりにバス観測回路１００を備える。また、図１５に示す回路は、図１に示す回路と比較して、クロック生成回路１０１をさらに備える。その他の回路構成については、図１の場合と同様であるため説明を省略する。クロック生成回路１０１は、クロックＣＬＫ＿ｍａｓｔｅｒ及びクロックＣＬＫ＿ｂｕｓを生成するとともに、これらの周波数比（ＣＬＫ＿ｂｕｓ／ＣＬＫ＿ｍａｓｔｅｒ）の信号Ｆｒを生成し、バス観測回路１００に対して出力する。クロック周波数比であるＦｒ信号はクロック周波数が切り替えられるたびに更新される。バス観測回路１００には、さらにＤＭＡマスター５０−０〜５０−Ｎの転送データ数（データ長）ＤＬが入力される。
【００７３】
図１６はバス観測回路１００の詳細な構成を示す。図１６に示す回路は、図２に示す回路と比較して、スレッシュ値設定部３０の代わりにスレッシュ値設定部１０２、変換テーブル３２の代わりに変換テーブル１０３、を備える。また、図１６に示す回路は、図２に示す回路と比較して、マルチセレクタ１０４をさらに備える。
【００７４】
マルチセレクタ１０４は、選択レジスタ２０からの出力信号２１に基づいて、各ＤＭＡマスターから出力される転送データ数ＤＬ［Ｎ：０］のうち、何れかの転送データ数ＤＬを出力する。スレッシュ値設定部１０２及び変換テーブル１０３は、レジスタ設定信号に代えて、転送データ数ＤＬと周波数比信号Ｆｒとを入力とする。ＤＭＡ転送が行われている間、スレッシュ値設定回路１０２と変換テーブル１０３は、レジスタ設定信号に代えて、転送データ数ＤＬ［Ｎ：０］と周波数比信号Ｆｒとにより出力結果が索引される。その他の回路構成については、図２の場合と同様であるため説明を省略する。
【００７５】
スレッシュ値設定部１０２は、マルチセレクタ３５にて選択されたＤＭＡマスターの転送データ数（データ長）ＤＬ［Ｎ：０］と、周波数比信号Ｆｒと、により設定可能なレジスタである。同様に変換テーブル１０３は、マルチセレクタ３５にて選択されたＤＭＡマスターの転送データ数（データ長）ＤＬ［Ｎ：０］と、周波数比信号Ｆｒと、により設定可能なレジスタによって構成される。
【００７６】
図１５に示すＤＭＡ転送装置において、ＤＭＡマスター側クロックの周期Ｃｍａｓｔｅｒが１０、バスインタフェース側クロックの周期Ｃｂｕｓが１０、転送データ数ＤＬ［Ｎ：０］が１６の場合、スレッシュ値設定回路１０２と変換テーブル１０３の設定値は、図１３に示すグラフに基づいて決定される。また、ＤＭＡマスター側クロックの周期Ｃｍａｓｔｅｒが１０、バスインタフェース側クロックの周期Ｃｂｕｓが５、転送データ数ＤＬ［Ｎ：０］が１６の場合、スレッシュ値設定回路１０２と変換テーブル１０３の設定値は、図１４に示すグラフに基づいて決定される。
【００７７】
つまり、図１３のグラフは、周波数比信号Ｆｒが１、転送データ数ＤＬが１６のときのＡｖｅ（ＷＥｉ）とＥｘｐ（Ｔ）の関係を示す。また、図１４のグラフは、周波数比信号Ｆｒが０．５、転送データ数ＤＬが３２のときのＡｖｅ（ＷＥｉ）とＥｘｐ（Ｔ）の関係を示す。
【００７８】
図１３のグラフより、周波数比信号Ｆｒが１、転送データ数ＤＬが１６の場合、スレッシュ値０は０、スレッシュ値１は１、スレッシュ値２は２、スレッシュ値３は１５に設定される。周波数比信号Ｆｒが１、転送データ数ＤＬが１６の場合、変換テーブル３２に設定される値は、比較部３１の比較結果Ｃ−０〜Ｃ−ｍにおいてＣ−０が１、Ｃ−１が０、Ｃ−２が０、Ｃ−３が０の場合、バースト長情報ＢＬが２である。Ｃ０が１、Ｃ１が１、Ｃ２が０、Ｃ３が０の場合、バースト長情報ＢＬが４である、Ｃ０が１、Ｃ１が１、Ｃ２が１、Ｃ３が０の場合、バースト長情報ＢＬが８である。Ｃ０が１、Ｃ１が１、Ｃ２が１、Ｃ３が１の場合、バースト長情報ＢＬが１６である。
【００７９】
図１４のグラフより、周波数比信号Ｆｒが０．５、転送データ数ＤＬが３２の場合、スレッシュ値０は０、スレッシュ値１は２、スレッシュ値２は５、スレッシュ値３は１５に設定される。周波数比信号Ｆｒが０．５、転送データ数ＤＬが３２の場合、変換テーブル１０３に設定される値は、比較部３１の比較結果Ｃ−０〜Ｃ−ｍにおいてＣ０が１、Ｃ１が０、Ｃ２が０、Ｃ３が０の場合、バースト長情報ＢＬが２である。Ｃ０が１、Ｃ１が１、Ｃ２が０、Ｃ３が０の場合、バースト長情報ＢＬが８である。Ｃ０が１、Ｃ１が１、Ｃ２が１、Ｃ３が０の場合、バースト長情報ＢＬが１６である。Ｃ０が１、Ｃ１が１、Ｃ２が１、Ｃ３が１の場合、バースト長情報ＢＬが３２である。
【００８０】
このように、周期Ｃｍａｓｔｅｒと周期Ｃｂｕｓとの比Ｆｒに基づいて、スレッシュ値設定回路１０２及び変換テーブル１０３に設定する情報を切り替えることにより、効果的なバースト長の最適化が可能である。なお、図１６に示す回路の場合、ＣＰＵ１４からのレジスタ設定信号によりスレッシュ値設定回路１０２及び変換テーブル１０３を制御する必要はない。
【００８１】
以上のように、上記実施の形態では、転送時間の制御対象である一つのＤＭＡマスターの転送時間を短くすることができる。それにより、ＤＭＡ転送の性能向上させることができる。例えば、図１１Ａのようにバスが混雑している場合、ＤＭＡマスター５０−０の転送時間ＣＮは６５クロックであった（バースト長は２）。一方、本実施の形態では図１１Ｂのように、バス観測回路１３，１００により自動的に最適なバースト長である８が設定される。この場合、ＤＭＡマスター５０−０の転送時間ＣＮは３４クロックである。さらに図７のようにバスが空いている場合、バス観測回路１３，１００により自動的に最適なバースト長である２が設定される。それにより、ＤＭＡマスター５０−０の転送時間ＣＮは２０クロックである。このように、転送時間の制御対象であるＤＭＡマスターのバースト長情報ＢＬを、転送データの転送間隔（ＷＥｉ）に基づいて最適に制御することができる。
【００８２】
つまり、上記実施の形態では、レジスタ設定信号等により予めテーブル値が設定された変換テーブル３２，１０３を参照することにより自動的にバースト長を決定する。すなわち、ＤＭＡマスターとバス９、メモリインタフェース、クロックの周波数比等に応じて総転送時間を最小にするようなバースト長が求められる。それにより、効果的なデータ転送時間の最適化を行うことができる。
【００８３】
また上記実施の形態では、バスに接続された複数のＤＭＡマスターのうち調停の優先度の低いＤＭＡマスターの転送時間を制御することにより、システム全体のパフォーマンス劣化が生じることを防止できる。なお上記実施の形態では、ラウンドロビン方式によるバスの調停において、ＤＭＡマスター５０−０のデータ転送時間を短くする場合を例に説明した。しかし、バス観測回路１３、１００は調停の優先順位に依存しない。そのため調停方式が固定優先方式であって、ＤＭＡマスター５０−０の優先順位が最下位の場合でも、効果的なデータ転送時間の最適化を行うことができる。
【００８４】
ここで特許文献２に記載の従来技術では、起動時にバスアクセスを発生させてテーブルを作成する技術が提案されている。しかしこの場合、起動時にテーブル作成が行われているため、テーブルの精度がバスアクセスに用いられる転送データのパタンに依存する可能性がある。一方、本実施の形態では、予めテールブル化された情報がバス観測回路１３，１００に記憶されている。そのため、バスの混雑度（データ転送間隔）とバースト長とを変数とした期待値Ｔの関数により最適なバースト長を求めることができる。
【００８５】
また特許文献２に記載の従来技術は、データ転送の要求信号と転送予定のデータ量とに基づいてテーブルからバースト長情報を出力する。しかしこの場合、転送予定のデータ量には時間的な概念が考慮されていない。そのため、時間の経過とともに変動するバスの混雑度に対して効果的なバースト長の最適化ができない可能性がある。一方、本実施の形態では、１転送許可信号あたりのクロック数を動的に算出し、そのたびに更新してバースト長の切り替えを行っている。そのため、特に複数回に分割してデータ転送が行われる場合には、平均して効果的なデータ転送時間の最適化を行うことができる。
【００８６】
また特許文献２に記載の従来技術は、複数デバイスがバスアクセスする場合、それぞれが調整の対象となる。しかしこの場合、ある一つのＤＭＡマスターのバースト長を変更したことによるバスの混雑度の状況の変化を、他のＤＭＡマスターのバースト長の制御のために考慮されない。そのため、他のＤＭＡマスターでは、効果的なバースト長の最適化を行うことができない可能性がある。一方、本実施の形態では、転送時間の制御対象となるＤＭＡ回路は１つのみである。そのため、他のＤＭＡ回路のバースト長の制御の影響を受けることがない。同様に、他のＤＭＡ回路のバースト長の制御に影響を与えることも当然にない。
【００８７】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上記実施の形態では、図３に示すバス観測回路１３と図１６に示すバス観測回路１００との場合を例に説明したが、これに限られない。変換テーブル及びスレッシュ値設定回路に代わる回路として、少なくともバースト長情報ＢＬとデータ転送間隔Ａｖｅ（ＷＥｉ）とに基づいてＥｘｐ（Ｔ）が求められるような回路構成を有していれば、適宜変更可能である。
【符号の説明】
【００８８】
９  バス
１０  メモリコントローラ
１１  外部メモリ（共有メモリ）
１２  調停回路
１３  バス観測回路
１４  ＣＰＵ
１５  ＦＩＦＯメモリ
１６  ＤＭＡマスターインタフェース回路
１７  バスインタフェース回路
１８、１９、１０４  マルチセレクタ
２０  選択レジスタ
２２  転送要求信号カウンタ
２３  転送許可信号カウンタ
２４  インターバルカウンタ
２５  コンペアレジスタ
２６  比較回路
２８  演算回路
３０、１０２  スレッシュ値設定部
３０−０〜３０−ｍ  スレッシュ値設定回路
３１  比較部
３１−０〜３１−ｍ  比較回路
３２、１０３  変換テーブル（記憶部）
３４  デマルチセレクタ
４０−０〜４０−Ｎ  ＤＭＡ部
５０−０〜５０−Ｎ  ＤＭＡマスター（ＤＭＡ回路）
６０−０〜６０−Ｎ  ＦＩＦＯ回路
１０１  クロック生成回路
【図１】
2011028479.tif 000003
【図２】
2011028479.tif 000004
【図３】
2011028479.tif 000005
【図４】
2011028479.tif 000006
【図５】
2011028479.tif 000007
【図６】
2011028479.tif 000008
【図７】
2011028479.tif 000009
【図８】
2011028479.tif 000010
【図９】
2011028479.tif 000011
【図１０】
2011028479.tif 000012
【図１１Ａ】
2011028479.tif 000013
【図１１Ｂ】
2011028479.tif 000014
【図１２】
2011028479.tif 000015
【図１３】
2011028479.tif 000016
【図１４】
2011028479.tif 000017
【図１５】
2011028479.tif 000018
【図１６】
2011028479.tif 000019
【図１７】
2011028479.tif 000020