(57)【要約】【課題】バスに複数のマスタモジュールとそれら複数のマスタモジュールに共有されるスレーブモジュールとが接続されるシステムにおいて、マスタモジュールとスレーブモジュールとの間で無駄なくデータ転送を行うことを可能にする。【解決手段】バスを介して各々データ転送を行う複数のマスタモジュールと前記複数のマスタモジュールに共有されるスレーブモジュールとを有するシステムにおいて、スレーブモジュールには、当該バスを介したデータ転送の制限の要否をマスタモジュール毎に判定させ、制限を要すると判定されたマスタモジュールに対してそのデータ転送の制限を指示する処理を当該スレーブモジュールに実行させる。一方、各マスタモジュールには、スレーブモジュールから与えられる指示にしたがって当該スレーブモジュールとの間のデータ転送を制限する処理を実行させる。【選択図】図１
2011095967.tif 000002
【特許請求の範囲】
【請求項１】
バスを介して各々データ転送を行う複数のマスタモジュールと前記複数のマスタモジュールに共有されるスレーブモジュールと、を有し、
前記スレーブモジュールは、前記バスを介したデータ転送の制限の要否をマスタモジュール毎に判定し、制限を要すると判定されたマスタモジュールにデータ転送の制限を指示し、
前記複数のマスタモジュールの各々は、前記スレーブモジュールから与えられる指示にしたがって、当該スレーブモジュールとの間のデータ転送を制限する
ことを特徴とするバス共有システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バスに接続される複数のマスタモジュールと複数のマスタモジュールに共有されるスレーブモジュールとの間のデータ転送を制御する技術に関する。
【背景技術】
【０００２】
複数のマスタモジュールとそれら複数のマスタモジュールに共有されるスレーブモジュールとがバスに接続され、そのバスを介してマスタモジュールとスレーブモジュールとの間でデータ転送が行われるシステムでは、複数のマスタモジュールからスレーブモジュールへのアクセス要求が競合する場合がある。従来、このようなアクセス要求の競合は、各マスタモジュールに優先順位を付けておき、その優先順位にしたがった調停により解消することが一般的であった。具体的には、スレーブモジュールに対してアクセス要求を行った複数のマスタモジュールのうち優先順位が最も高いもののアクセス要求を当該スレーブモジュールに引渡し、他のマスタモジュールについては、優先順位の最も高いマスタモジュールのデータ転送が終了するまでアイドル状態（待ち状態）にしておくのである。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平９−２７４６０１号公報
【特許文献２】特開２００８−４１０１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
優先順位等にしたがってアクセス要求の競合を調停する技術では、優先順位の低いマスタモジュールは長期間に亘ってアイドル状態のままとなる虞がある。このように長期間に亘ってアイドル状態のままとなると、他にアクセス可能なスレーブモジュールがある場合であっても、そのスレーブモジュールとの間のデータ転送を行わせることはできず、システム全体として無駄が多いといった問題があった。また、システムの性能設計を行う場合、複数のマスタモジュールの何れかのデータ転送量に依存した性能設計を行うことが求められる場合がある。しかし、優先順位等にしたがってアクセス要求の競合を調停する技術では特定のマスタモジュールについてデータ転送量の制御を行うことが難しく、そのようなシステム性能設計を行うことが難しい、といった問題もあった。
本発明は上記課題に鑑みて為されたものであり、複数のマスタモジュールとそれら複数のマスタモジュールに共有されるスレーブモジュールとがバスに接続されるシステムにおいて、マスタモジュールとスレーブモジュールとに無駄なくデータ転送を行わせるとともに、何れかのマスタモジュールのデータ転送量に依存した性能設計を容易にする技術を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するために本発明は、バスを介して各々データ転送を行う複数のマスタモジュールと前記複数のマスタモジュールに共有されるスレーブモジュールと、を有し、前記スレーブモジュールは、前記バスを介したデータ転送の制限の要否をマスタモジュール毎に判定し、制限を要すると判定されたマスタモジュールにデータ転送の制限を指示し、前記複数のマスタモジュールの各々は、前記スレーブモジュールから与えられる指示にしたがって、当該スレーブモジュールとの間のデータ転送を制限することを特徴とするバス共有システム、を提供する。
【０００６】
本発明によれば、スレーブモジュール側でマスタモジュール毎にデータ転送の制限の要否が判定され、制限を要すると判定されたマスタモジュールにはスレーブモジュールからその旨が指示される。そして、この指示を受けたマスタモジュールでは、当該スレーブモジュールとの間のデータ転送を制限する処理が実行される。このため、そのままデータ転送を継続したとすれば長期間に亘ってデータ転送帯域を使う可能性が高いマスタモジュール（例えば、優先順位の最も高いマスタモジュール等）のデータ転送を制限し、その他のマスタモジュールについて長期間に亘ってアイドル状態が継続したり、必要な帯域を確保できなくなったりすることを回避することが可能になる。また、上記バスに複数のスレーブモジュールが接続されている場合には、データ転送の制限の要否を判定する際の判定基準をスレーブモジュール毎に異ならせることで、データ転送を制限されるスレーブモジュールがマスタモジュール毎に異なり得ることになる。このため、あるスレーブモジュールとの間のデータ転送を継続する可能性が高いマスタモジュールについては、そのスレーブモジュールとの間のデータ転送に制限を課し、データ転送に何らの制限を課されていない他のスレーブモジュールとの間のデータ転送を行わせるようにするとともに、当該他のスレーブモジュールと他のマスタモジュールとのデータ転送に制限を課すようにすれば、各マスタモジュールに無駄なくデータ転送を行わせることを可能になる。
【０００７】
なお、特許文献１には、バスマスタ（マスタモジュール）がバススレーブ（スレーブモジュール）の現在の状態を認識することにより、同一のバススレーブを連続してアクセスしないようにし、無駄なウェイトをなくしてシステムを高速化する技術が開示されている。一方、特許文献２には、１つのバスマスタのみがバス幅をフルに使わないようなアクセス時においては、そのバスマスタにバスを占有させないようにすることで、システムの複雑化を防止しつつ、バス帯域の使用効率を向上させる技術が開示されている。しかし、これら各特許文献に開示された技術では、各マスタモジュールに無駄なくデータ転送を行わせることができるとは限らず、本願発明とは異なる発明である。
【０００８】
ここで、上記判定基準としては種々のものが考えられる。例えば、予め定められた一定の時間（以下、単位処理時間）におけるデータ転送量の上限値をマスタモジュール毎に定めておくとともに、スレーブモジュール側で単位処理時間における転送済みデータ量をマスタモジュール毎にカウントし、転送済みデータ量が上記上限値に達したか否を上記判定基準とすること（すなわち、転送済みデータ量が上限値に達した場合に制限をかける態様）が考えられる。また、スレーブモジュールとの間のデータ転送を制限する際の具体的な態様についても種々のものが考えられる。例えば、スレーブモジュール側から制限をかけることを指示された場合には、同スレーブモジュールから制限解除を指示されるまでデータ転送を停止する（そのスレーブモジュールへの新たなアクセス要求の送信を停止する）態様や、制限解除を指示されるまでデータ転送速度を低く抑える（例えば、アクセス要求の送信間隔を長くする）態様などが考えられる。また、スレーブモジュールがメモリコントローラであり、そのメモリコントローラによりアクセス制御を受けるメモリが複数のバンクを含むものである場合には、データ転送に特段の制限をかけない状態においては各マスタモジュールに対してそれら複数のバンクのうちの任意のものへのアクセスを許可し、制限をかけた状態ではそれら複数のバンクのうちの特定のものへのアクセスのみを許可するような態様であっても良い。
【０００９】
また、本発明の別の態様においては、バスを介して複数のマスタモジュールの各々との間でデータ転送を行うデータ転送手段と、前記複数のマスタモジュールの各々についてデータ転送の制限の要否を判定する判定手段と、前記判定手段により制限を要すると判定されたマスタモジュールが実行するデータ転送が制限されるように当該マスタモジュールに指示を与える転送制限手段とを有することを特徴とするスレーブモジュールを提供する態様であっても良い。同様に、バスを介してスレーブモジュールとの間でデータ転送を行うためのデータ転送手段と、前記データ転送手段によるデータ転送を実行する際には前記バスを介してアクセス要求を送信し、アクセス許可が与えられたことを契機としてそのデータ転送を開始するとともに、前記スレーブモジュールからデータ転送の制限を指示された場合には、その制限を解除する旨を当該スレーブモジュールから指示されるまで前記データ転送手段によるデータ伝送の実行を制限する処理を実行する転送制御手段とを有することを特徴とするマスタモジュールを提供する態様であっても良い。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施形態に係るバス共有システムの構成例を示すブロック図である。
【図２】同バス共有システムに含まれるマスタモジュール１０およびスレーブモジュール２０の構成例を示すブロック図である。
【図３】同バス共有システムの動作の概要を説明するための概念図である。
【図４】変形例（１）の動作の概要を説明するための概念図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照しつつ本発明の実施形態について説明する。
（Ａ：構成）
図１は、本発明の一実施形態のバス共有システムの構成例を示す図である。
このバス共有システムは、例えばゲーム機などの電子機器に組み込まれ、ゲーム等の進行に合わせて各シーンを構成する画像や音声の再生制御を行うものである。図１に示すように、このバス共有システムは、バス３０に接続された３つのマスタモジュール（マスタモジュール１０Ａ、１０Ｂおよび１０Ｃ）と、同じくバス３０に接続され、これら３つのマスタモジュールによって共有される２つのスレーブモジュール（スレーブモジュール２０Ｘおよび２０Ｙ）を含んでいる。
【００１２】
スレーブモジュール２０Ｘおよび２０Ｙは、メモリコントローラであり、各々異なるメモリ（例えば、ＤＲＡＭやＳＲＡＭなど）に接続されている。スレーブモジュール２０Ｘおよび２０Ｙは、各々の接続先のメモリに対する各マスタモジュールからのアクセス（データの読み出しやデータの書き込み）の制御を行う。以下、スレーブモジュール２０Ｘおよび２０Ｙの各々を区別する必要がない場合には「スレーブモジュール２０」と表記する。
【００１３】
マスタモジュール１０Ａ、１０Ｂおよび１０Ｃの各々は、ホストＣＰＵ（図示略）による制御の下、バス３０に接続されているスレーブモジュール２０との間でデータ転送を行う。これら３つのマスタモジュールは、各々異なる役割を担っている。マスタモジュール１０Ｃは、所謂ＤＭＡコントローラであり、ＵＳＢメモリなどの補助記憶装置（図１では図示略）に格納されている各種データを読み出し、スレーブモジュール２０を介して各メモリへＤＭＡ転送する。本実施形態にてＵＳＢメモリからメモリへＤＭＡ転送されるデータの一例としては、各シーンにて一定のフレームレート（１秒当たり３０フレーム等）で再生させる各画像の画像データに圧縮符号化を施して得られる圧縮符号化データや、同じく各シーンにて再生される音声を所定のサンプリング周期（４４．１ｋＨｚ等）でサンプリングして得られる音声データなどが挙げられる。このマスタモジュール１０Ｃは、各シーンにて再生する画像や音声に対応するデータをそのシーンの開始前に予め配下のメモリへＤＭＡ転送しておく役割を担う。ただし、次のシーンにて再生される音声や画像に対応するデータの全部または一部が既に配下のメモリに格納されている場合には、当該格納済みのデータに関して上記ＤＭＡ転送が再度実行されることはない。つまり、マスタモジュール１０Ｃが実行するデータ転送は、必要に応じて随時行われ、かつ、転送データ量もその時々に異なりえる非周期的なデータ転送である。
【００１４】
図１のマスタモジュール１０Ａは画像処理機能を担う。このマスタモジュール１０Ａは、マスタモジュール１０ＣによってメモリへＤＭＡ転送された圧縮符号化データをスレーブモジュール２０を介して読み出しデコードするデコーダと、そのデコード結果の画像データに応じた画像の表示制御を行う表示制御回路とを含んでいる（何れも図示略）。マスタモジュール１０Ｂは音声処理機能を担う。このマスタモジュール１０Ｂは、マスタモジュール１０ＣによってメモリへＤＭＡ転送された音声データをスレーブモジュール２０を介して読み出し、その音声データに応じた音声を音として出力する処理を実行する。マスタモジュール１０Ａ（或いはマスタモジュール１０Ｂ）によるデータ転送は、フレームレート等に応じて周期的に実行されるデータ転送である。以下では、マスタモジュール１０Ａ、１０Ｂおよび１０Ｃの各々を区別する必要がない場合には「マスタモジュール１０」と表記する。
【００１５】
バス３０は、所謂マルチプレクサである。マスタモジュール１０Ａ、１０Ｂおよび１０Ｃの各々は、スレーブモジュール２０との間でデータ転送を行う場合、従来のものと同様に、まず、アクセス要求を送信し、アクセス許可を受信するとそのデータ転送を開始するように構成されている。マスタモジュール１０Ａ、１０Ｂおよび１０Ｃの各々には予め優先順位が付けられている。例えば、マスタモジュール１０Ｃの優先順位が最も高く、次いでマスタモジュール１０Ｂの優先順位が高く、マスタモジュール１０Ａの優先順位が最も低い、といった具合である。複数のマスタモジュールからのアクセス要求が競合した場合、バス３０のバス調停回路（図示略）では優先順位にしたがってその調停が行われる。また、マスタモジュール１０Ａ、１０Ｂおよび１０Ｃの各々は、データ転送の停止を指示する旨のサブバンド信号（以下、停止指示信号）をバス３０を介してスレーブモジュール２０から受信すると、停止解除を指示する旨のサブバンド信号（停止解除信号）を当該スレーブモジュール２０から受信するまで、当該スレーブモジュール２０へのアクセス要求の送信を停止するように構成されている。
【００１６】
前述したように、マスタモジュール１０Ａ（或いはマスタモジュール１０Ｂ）とスレーブモジュール２０との間のデータ転送は、一定のフレームレート等に応じた周期で実行される周期的なデータ転送である。これに対して、マスタモジュール１０ＣによるＤＭＡ転送は必要に応じて随時行われる非周期的なデータ転送である。このような非周期的なデータ転送が無条件に行われてしまうと、周期的なデータ転送の実行時に十分な帯域を確保することができず、その実行が妨げられることがある。そこで、本実施形態では、単位処理時間における各マスタモジュールのデータ転送量を各スレーブモジュール２０に制御させ、非周期的なデータ転送の実行によって周期的なデータ転送の実行が妨げられないようにするとともに、マスタモジュール１０Ｃについても適正なデータ転送帯域が確保されるようにしているのである。以下、マスタモジュール１０およびスレーブモジュール２０の構成について詳細に説明する。
【００１７】
図２は、マスタモジュール１０とスレーブモジュール２０の構成例を示すブロック図である。図２に示すようにマスタモジュール１０は、データ転送部１１０と、転送制御部１２０を含んでいる。データ転送部１１０は、バス３０を介してスレーブモジュール２０との間でデータ転送を行う。転送制御部１２０は、ホストＣＰＵによる制御の下でデータ転送部１１０によるデータ転送の実行を制御する。転送制御部１２０は、スレーブモジュール２０との間のデータ転送の実行をホストＣＰＵから指示されると、アクセス要求を送信し、アクセス許可が与えられたことを契機として、そのデータ転送をデータ転送部１１０に開始させる。加えて、転送制御部１２０は、データ転送部１１０によるデータ転送の相手側デバイスであるスレーブモジュール２０から停止指示信号ＳＳを受信した場合に、当該スレーブモジュール２０から停止解除信号ＲＳを受け取るまでそのスレーブモジュール２０とのデータ転送を停止する処理も実行する。具体的には、転送制御部１２０は、停止指示信号ＳＳを受信した場合には、その停止指示信号ＳＳの送信元であるスレーブモジュール２０から停止解除信号ＲＳを受信するまで、そのスレーブモジュール２０に対する新たなアクセス要求の送信を停止するのである。
以上がマスタモジュール１０の構成である。
【００１８】
次いでスレーブモジュール２０の構成について説明する。図２に示すようにスレーブモジュール２０は、データ転送部２１０と、タイマ２２０と、転送量カウンタ２３０と、転送制御部２４０を含んでいる。データ転送部２１０は、バス３０を介してマスタモジュール１０から送られてくるデータをメモリへ書き込む処理、および同メモリから読み出したデータをバス３０を介してマスタモジュール１０に引渡す処理を実行する。タイマ２２０は、所定の単位処理時間を繰り返し計時する計時手段である。この単位処理時間は、所定周波数のクロック（例えば、バス共有システムのシステムクロック等）の何クロック分に相当するかの数値により表わされる。例えば、単位処理時間が上記所定周波数のクロックのＮクロック分に相当する場合、タイマ２２０は、上記所定周波数のクロックをカウントし、そのカウント値がＮになったことを契機としてパルスＰを発生させる。ここで、単位処理時間をどのような長さにするのかについては後に詳細に説明する。
【００１９】
転送量カウンタ２３０は、データ転送部２１０を介して転送されたデータのデータ量（転送済みデータ量）を相手側デバイスであるマスタモジュール１０毎にカウントする手段である。図２に示すように転送量カウンタ２３０にはタイマ２２０が発生させるパルスＰが与えられる。転送量カウンタ２３０はパルスＰを検出すると、それまでのカウント値をゼロにリセットし、その後、転送済みデータ量のカウントを再開する。つまり、図２の転送量カウンタ２３０は、単位処理時間における転送済みデータ量をマスタモジュール１０毎にカウントする手段として機能するのである。
【００２０】
転送制御部２４０は、バス３０を介して送信されてくるアクセス要求の送信元へアクセス許可を返信する処理の他に、本実施形態の特徴を顕著に示す処理を実行する。具体的には、転送制御部２４０は、転送量カウンタ２３０によりマスタモジュール１０毎にカウントされた転送済みデータ量の各々がマスタモジュール毎に予め定められた上限値に達したか否かを判定し、当該上限値に達したと判定されたマスタモジュール１０に停止指示信号ＳＳを送信する処理を実行する。図２に示すように、転送制御部２４０にはタイマ２２０が発生させるパルスＰが与えられる。転送制御部２４０は、パルスＰを検出すると、アクセスの停止を指示したマスタモジュールに対して停止解除信号ＲＳを与える。つまり、転送制御部２４０は、単位処理時間における転送済みデータ量が予め定められた上限値に達したマスタモジュールのデータ転送を、次の単位処理時間の計時が開始されるまで制限する（停止させる）制御手段の役割を果たすのである。なお、上限値については、例えば各スレーブモジュール２０の初期化ステップにおいて、ホストＣＰＵ等によるレジスタ（図示略）への書き込みで設定させるようにすれば良い（単位処理時間についても同様）。また、上限値をどのような値とするかについては後に詳細に説明する。
【００２１】
次いで、単位処理時間や各マスタモジュールのデータ転送量の上限値をどのように定めるかについて説明する。単位処理時間については、どの程度の時間単位で各マスタモジュールのデータ転送量を制御する必要があるのかといった要求仕様との兼ね合いで適宜定めるようにすれば良い。具体的には、周期的なデータ転送の実行周期に応じて定めるようにしても良いし、それら周期的なデータ転送の実行周期とは無関係に１ミリ秒や１０ミリ等としても良い。前者の態様であれば、本実施形態のように各々周期の異なる複数種の周期的なデータ転送が含まれている場合には、それらのうちの最も短い周期と等しくなるように単位処理時間を定める態様やそれら複数の周期の最大公約数となるように単位処理時間を定める態様等が考えられる。
【００２２】
一方、各マスタモジュール１０のデータ転送量の上限値については、単位処理時間の長さとの兼ね合いでバス共有システムに対する要求仕様を満たすように定めるようにすれば良い。ただし、非周期的なデータ転送の実行によって周期的なデータ転送の実行が妨げられないように各上限値を設定する必要がある。すなわち、スレーブモジュール２０との間のデータ転送の単位処理時間あたりの転送帯域幅に対して、周期的なデータ転送を実行するマスタモジュールについてはそのデータ転送を実現するために単位処理時間にて転送を完了するべきデータ量（以下、単位時間当たりの要求データ量）に対して余裕のある上限値を設定し、非周期的なデータ転送を実行するマスタモジュールについては十分に小さな上限値を設定するのである。例えば、単位処理時間がデータの転送周期の１／Ｎ（Ｎは２以上の整数）である場合には、周期的なデータ転送を実行するマスタモジュールについての上記上限値は一周期当たりのデータ転送量の１／Ｎ以上の値とすれば良い。なお、マスタモジュール１０とスレーブモジュール２０との間の単位処理時間当たりのデータ転送量に上限値を設けたのは非周期的なデータ転送が無制限に実行されることによって、周期的なデータ転送の実行が妨げられないようにするためである。したがって、周期的なデータ転送を実行するマスタモジュールについては転送量の制限を行わないようにしても良い。
【００２３】
例えば、本実施形態のように、画像や音声により構成される各シーンの再生制御を行うシステムの場合には、単位処理時間を周期的なデータ転送の実行周期よりも短くし、かつ、マスタモジュール１０Ｃが実行する非周期的なデータ転送に対して次のシーンの開始までにそのデータ転送が完了するように単位処理時間における上限値を設定することが好ましい。これは、マスタモジュール１０Ｃによるデータ転送は次のシーンの開始までに完了しておれば良いこと（すなわち、マスタモジュール１０Ａや１０Ｂによるデータ転送に比較して時間的な制約が緩いこと）に着目したものである。単位処理時間をこのように設定しておけば、マスタモジュール１０Ｃについての上限値を、次のシーンの開始までにデータ転送が完了する程度の大きさに設定することで、そのデータ転送に支障が生じること（すなわち、システム全体としての破綻が生じること）を回避しつつ、周期的なデータ転送の実行の妨げとならないようにすることが可能になる。
【００２４】
（Ｂ：動作）
以下、図３を参照しつつ、画像データの転送周期（フレーム周期）ＴＦに比較して単位処理時間Ｔが短い場合（例えば、ＴＦ＝Ｎ×Ｔ：Ｎは２以上の整数）の動作の概要を説明する。なお、以下に説明する動作例においては、１つのシーンには複数の画像（図３に示す例では、Ｍ（Ｍは２以上の整数）枚の画像）が含まれており、１つのシーンの時間長（シーン周期）ＴＳとフレーム周期ＴＦとの間には、ＴＳ＝Ｍ×ＴＦの関係があるものとする。また、以下に説明する動作例では、マスタモジュール１０Ｃについてのみ単位処理時間におけるデータ転送量に制限を課すものとする。これはマスタモジュール１０Ｃが行う非周期的なデータ転送によってマスタモジュール１０Ａおよび１０Ｂが実行する周期的なデータ転送が妨げられないようにするためである。ここで、マスタモジュール１０Ｃについての単位処理時間当たりのデータ転送量の上限値を十分に小さい値とする必要があることは前述した通りである。その一方、シーン周期ＴＳが経過するまでにマスタモジュール１０Ｃによるデータ転送が完了することを保証する必要もある。そこで、各シーンに含まれる画像や音声に対応するデータの全てを転送するとした場合のデータ量（すなわち、シーン周期ＴＳ内にマスタモジュール１０Ｃが転送するべきデータ量の最大値）がＤである場合には、マスタモジュール１０Ｃについての上限値をＤ／（Ｎ×Ｍ）と設定するのである。これにより、マスタモジュール１０Ｃによるデータ転送がシーン周期ＴＳ内に完了することを保証することができるのである。
【００２５】
図３は、単位処理時間Ｔ、フレーム周期ＴＦおよびシーン周期ＴＳの関係を表わすとともに、バス３０を介してマスタモジュール１０Ａ、１０Ｂおよび１０Ｃの各々とスレーブモジュール２０Ｘとの間で行われるデータ転送の概要を表わす図である。なお、図３においては、シーン周期ＴＳの先頭からｎ（ｎ＝１〜Ｎ）番目のフレーム周期ＴＦを「ＴＦ（ｎ）」と表現し、フレーム周期ＴＦ（ｎ）の先頭からｍ（ｍ＝１〜Ｍ）番目の単位処理時間Ｔを「Ｔ（ｍ）」と表記した。また、以下に説明する動作例では、マスタモジュール１０Ｂによる音声データの転送周期は単位処理時間Ｔよりも短く、かつ、一周期分当たりのデータ転送量もマスタモジュール１０Ａの一周期分のデータ転送量に比較して十分に少ないものとする（図３参照）。
【００２６】
図３に示す時刻ｔ０の時点において、マスタモジュール１０Ａ、１０Ｂおよび１０Ｃの各々からスレーブモジュール２０Ｘに対するアクセス要求が送信されると、バス３０のバス調停回路（図示略）によってそれらアクセス要求の競合が各マスタモジュールの優先順位にしたがって調停される。前述したように、本動作例では、マスタモジュール１０Ｃの優先順位が最も高いため、マスタモジュール１０Ｃからのアクセス要求がスレーブモジュール２０Ｘに与えられる。マスタモジュール１０Ｃは、スレーブモジュール２０Ｘからアクセス許可を与えられると、スレーブモジュール２０Ｘとの間のデータ転送を開始する。そして、マスタモジュールＣとスレーブモジュール２０Ｘとの間でデータ転送が行われている間、マスタモジュール１０Ａおよび１０Ｂはアイドル状態となる。このデータ転送が行われている間、転送済みのデータ量がスレーブモジュール２０Ｘの転送量カウンタ２３０によってカウントされ、そのカウント値が予め定められた上限値（本動作例では、Ｄ／（Ｎ×Ｍ））に達するとスレーブモジュール２０Ｘの転送制御部２４０からマスタモジュール１０Ｃに停止指示信号ＳＳが送信される。この停止指示信号ＳＳを受信するとマスタモジュール１０Ｃは、停止解除信号ＲＳをスレーブモジュール２０Ｘの転送制御部２４０から受け取るまで、バスアクセスを停止する。
【００２７】
単位処理時間Ｔ（１）のうち上記停止指示信号ＳＳがマスタモジュール１０Ｃに対して発せられた以降の期間においては、マスタモジュール１０Ａおよび１０Ｂの各々のデータ転送の実行がマスタモジュール１０Ｃによって妨げられることはない。なお、マスタモジュール１０Ｂはマスタモジュール１０Ａよりも高い優先順位を有しているが、前述したように一回当たりの転送データ量が少ないため、マスタモジュール１０Ａのデータ転送の実行を妨げることはない。マスタモジュール１０Ａおよび１０Ｂについては単位処理時間Ｔにおけるデータ転送量に上限値は定められていないため、マスタモジュール１０Ａおよび１０Ｂに対してデータ転送の停止が指示されることはなく、これらマスタモジュールとスレーブモジュール２０Ｘとの間のデータ転送は継続され、各々一定の転送帯域が確保されるのである。その結果、マスタモジュール１０Ａおよび１０Ｂは、所定のデータ処理期間（本動作例では、フレーム周期ＴＦ）内にデータ転送を実施することができる。
【００２８】
時刻ｔ０から単位処理時間Ｔが経過するとタイマ２２０はパルスＰを発生させる。スレーブモジュール２０Ｘの転送量カウンタ２３０は、このパルスＰを検出すると、そのカウント値をゼロにリセットした後に転送済みデータ量のカウントを再開する。また、スレーブモジュール２０Ｘの転送制御部２４０は、上記パルスＰを検出したことを契機として停止解除信号ＲＳをマスタモジュール１０Ｃに送信する。この停止解除信号ＲＳを受け取ったマスタモジュール１０Ｃはスレーブモジュール２０Ｘとの間のデータ転送を再開する。以降、単位処理時間Ｔ（２），Ｔ（３）・・・の各々において上記動作が繰り返し実行される。なお、図３に示すように、マスタモジュール１０Ａとスレーブモジュール２０Ｘとの間のデータ転送がフレーム周期ＴＦの経過前に完了した場合には、そのデータ転送が完了した時点からフレーム周期ＴＦの終端までの残りの期間においては、同データ転送に用いられていた帯域は余裕帯域となる。また、マスタモジュール１０Ｃとスレーブモジュール２０Ｘとの間のデータ転送は、図３に示すように単位処理時間毎に細切れに実行されることとなるが、マスタモジュール１０Ｃが実行するデータ転送はシーン周期ＴＳが経過するまでには完了するので、特段の問題が生じることはない。
【００２９】
前述したように、マスタモジュール１０Ｃが行うデータ転送は非周期的なデータ転送である。従来は、このような非周期的なデータ転送の実行に特段の制限を掛けてはいなかったため、マスタモジュール１０Ａやマスタモジュール１０Ｂの転送帯域幅はマスタモジュール１０Ｃによるデータ転送が実行されているときと、そうでないときとで大きく変化する。このため、マスタモジュール１０Ａおよび１０Ｂのデータ転送量（例えば、フレーム周期ＴＦ当たりのデータ転送量）に依存した性能設計を行うことは難しかったのである。これに対して、本実施形態では、次の単位処理時間Ｔの計時が開始されるまでマスタモジュール１０Ｃはスレーブモジュール２０Ｘとの間のデータ転送の実行を制限され、マスタモジュール１０Ａおよび１０Ｂが実行するデータ転送に対して一定の転送帯域が確保されるため、これらのデータ転送量に依存する性能設計が容易になるのである。
【００３０】
また、マスタモジュール１０Ｃは、スレーブモジュール２０Ｘとの間のデータ転送を制限された場合であっても、スレーブモジュール２０Ｙとの間のデータ転送が制限されるか否かについては、別個独立にスレーブモジュール２０Ｙの転送制御部２４０によって判定される。このため、マスタモジュール１０Ｃについては、スレーブモジュール２０Ｘとのデータ転送は制限されるものの、スレーブモジュール２０Ｙとのデータ転送は特段の制限を受けないといったことが起こり得る。同様にマスタモジュール１０Ａおよび１０Ｂについても、スレーブモジュール２０Ｘとのデータ転送は特段の制限を受けないものの、スレーブモジュール２０Ｙとのデータ転送には何らかの制限が課されるといったことも起こり得る。したがって、マスタモジュール１０との間のデータ転送に制限を課すか否かの判定基準をスレーブモジュール２０毎に適切に設定しておけば、マスタモジュール１０とスレーブモジュール２０とに無駄なくデータ転送を行わせることができるのである。
【００３１】
このように本実施形態では、マスタモジュール１０Ｃは、単位処理時間Ｔが経過するまでに予め定められた上限値に相当するデータをスレーブモジュール２０Ｘに転送した後は、その単位処理時間Ｔが経過するまでスレーブモジュール２０Ｘへのアクセス要求の送信が制限されるが、周期的に制限が緩和または解除されるため、スレーブモジュール２０Ｘに対するアクセス待ちによって長期間に亘ってアイドル状態となることはない。加えて、その間にスレーブモジュール２０Ｙとの間のデータ転送に制限が課されていなければ、マスタモジュール１０Ｃはスレーブモジュール２０Ｙとの間のデータ転送を実行することもできる。つまり、本実施形態によれば、マスタモジュール１０とスレーブモジュール２０とに無駄なくデータ転送を行わせることが可能になるとともに、何れかのマスタモジュール１０のデータ転送量に依存した性能設計を容易に行えるようになるのである。
【００３２】
（Ｃ：変形）
以上、本発明の一実施形態について説明した。しかし、かかる実施形態に以下に述べる変形を加えても良いことは勿論である。
（１）上述した実施形態では、単位処理時間Ｔを画像データの転送周期ＴＦよりも短く設定した。しかし、単位処理時間をシーン周期ＴＳよりは短く、かつ、フレーム周期ＴＦよりは長く設定しても勿論良い。図４は、単位処理時間Ｔをマスタモジュール１０Ａおよび１０Ｂの転送周期よりも長く（前者の転送周期はＴ／３に相当し、後者の転送周期はＴ／２に相当する）、かつシーン周期よりは短く（シーン間隔は数十〜数百Ｔ程度）設定し、マスタモジュール１０Ａおよび１０Ｂについての上限値を一周期分のデータ転送量よりも十分に大きくした場合の動作を概念的に示した図である。
【００３３】
図４に示す時刻ｔ０の時点において、マスタモジュール１０Ａ、１０Ｂおよび１０Ｃの各々から送信されたアクセス要求が競合すると、バス３０のアクセス調停回路（図示略）は、各マスタモジュールの優先順位にしたがってアクセス要求の競合を調停する。本変形例では前述した実施形態とは異なり、マスタモジュール１０Ａに最も高い優先順位が与えられており、マスタモジュール１０Ｂには次に高い優先順位が与えられており、マスタモジュール１０Ｃの優先順位が最も低くなっている。このため、上記バス調停回路は、マスタモジュール１０Ａ、１０Ｂおよび１０Ｃの各々からのアクセス要求が競合すると、マスタモジュール１０Ａにアクセス許可を与える。すると、マスタモジュール１０Ａは、バス３０を介してスレーブモジュール２０Ｘとの間のデータ転送を行う。このデータ転送が行われている間、転送済みのデータ量がスレーブモジュール２０Ｘの転送量カウンタ２３０によってカウントされる。前述したように単位処理時間Ｔにおけるマスタモジュール１０Ａについての上限値は一周期分のデータ転送量よりも十分に大きいため、同転送量カウンタ２３０のカウント値が当該上限値に達する前に一周期分のデータ転送が完了する。このため、このデータ転送の実行過程でスレーブモジュール２０Ｘの転送制御部２４０からマスタモジュール１０Ａに停止指示信号ＳＳが送信されることはない。
【００３４】
このようにマスタモジュール１０Ａには停止指示信号ＳＳは与えられないのであるから、一周期分のデータ転送が完了した後もマスタモジュール１０Ａはアクセス要求を送信することができる。しかし、マスタモジュール１０Ａが行うデータ転送の実行周期はＴ／３であるため、その実行周期Ｔ／３が経過するまでマスタモジュール１０Ａがアクセス要求を送信することはない。このため、優先順位に基づく調停の下、マスタモジュール１０Ｂにアクセス許可が与えられる。マスタモジュール１０Ｂとスレーブモジュール２０Ｘとの間のデータ転送についても同様に、そのデータ転送が行われている間、転送済みデータ量がスレーブモジュール２０Ｘの転送量カウンタ２３０によってカウントされる。前述したようにマスタモジュール１０Ｂについても上限値が十分に大きい値に設定されているため、一周期分のデータ転送量が当該上限値に達することはなく、スレーブモジュール２０Ｘの転送制御部２４０からマスタモジュール１０Ｂへ停止指示信号ＳＳが送信されることはない。
【００３５】
マスタモジュール１０Ｂとスレーブモジュール２０Ｘとの間の一周期分のデータ転送が完了すると、転送周期Ｔ／２が経過するまでマスタモジュール１０Ｂがアクセス要求を行うことはなく、マスタモジュール１０Ｃとスレーブモジュール２０Ｘとの間のデータ転送が開始される。このデータ転送が行われている間、転送済みデータ量がスレーブモジュール２０Ｘの転送量カウンタ２３０によってカウントされ、上限値に達すると同転送制御部２４０からマスタモジュール１０Ｃへ停止指示信号ＳＳが送信される。以後、マスタモジュール１０Ｃは、停止解除信号ＲＳを同転送制御部２４０から受信するまでアクセス要求を送信することはない。ここで、スレーブモジュール２０Ｘの転送制御部２４０は時刻ｔ０から単位処理時間Ｔが経過するまでは停止解除信号ＲＳを送信することはないのであるから、単位処理時間Ｔが経過するまで（すなわち、時刻ｔ０＋Ｔに到るまで）はマスタモジュール１０Ｃがアクセス要求を送信することはない。このように、次の単位処理時間Ｔの計時が開始されるまでマスタモジュール１０Ｃはデータ転送の実行を制限されるため、図４に示すように、マスタモジュール１０Ａによる２周期目のデータ転送やマスタモジュール１０Ｂによる２周期目のデータ転送の実行が妨げられることはなく、これらのデータ転送量に依存する性能設計が容易になる。
【００３６】
（２）上述した実施形態のスレーブモジュール２０Ｘは、これに接続するマスタモジュールに対して１つのタイマで単位処理時間を計時したが、スレーブモジュール２０Ｘ内にて各マスタモジュールに対して個別にタイマを持っても良い。また、上述した実施形態のようにスレーブモジュールが複数の場合、システム全体で１つのタイマを共有しても、各スレーブモジュールが１つのタイマを持っていても、各マスタモジュール、スレーブモジュールのペア毎にタイマを持っても良い。
【００３７】
（３）上述した実施形態では、転送量カウンタ２３０によりカウントされたデータ転送量が予め定められた上限値に達したマスタモジュール１０については、次の単位処理時間の計時が開始されるまでスレーブモジュール２０との間のデータ転送を停止させたが、転送速度を引き下げてデータ転送を継続させる（具体的には、アクセス要求の送信間隔を長くさせる）ようにしても良い。また、スレーブモジュール２０に接続されるメモリが複数のバンクを含むものである場合には、それら複数のバンクのうちアクセスを許可するバンクを制限する態様（例えば、単位処理時間におけるデータ転送量が上限値に達するまでは全てのバンクに対するアクセスを許可し、上限値に達した以降は特定のバンクに対するアクセスのみを許可する態様）であっても良い。要は、転送量カウンタによりカウントされたデータ転送量が予め定められた上限値に達したマスタモジュールについては、次の単位処理時間の計時が開始されるまでスレーブモジュールとの間のデータ転送に何らかの制限を加える態様であれば良い。
【００３８】
（４）上述した実施形態では、単位処理時間における各マスタモジュール１０のデータ転送量の上限値が固定されていたが、時間の経過とともに上記上限値を変化させるようにしても良い。また、上述した実施形態では、単位処理時間におけるデータ転送量が予め定められた上限値に達したマスタモジュール１０に対してデータ転送の停止をサブバンド信号の送信により指示したが、バスプロトコルにて予め用意されている停止指示コマンドを用いてその指示を行うようにしても良い。
【００３９】
（５）上述した実施形態では、データ転送に制限をかけるか否かの判定基準として、単位処理時間における転送済みデータ量が予め定められた上限値に達したか否かを用いたが、他の判定基準を採用しても良いことは勿論である。例えば、各マスタモジュールによるアクセスをアプリケーションの実行によるものか、それともＯＳ（Operating System）の実行によるものかに分類し、アプリケーションによるアクセスを実行している間はＯＳによるアクセスに制限をかけるといった態様（すなわち、アプリケーションの実行によるアクセスの有無を判定基準とする態様）が考えられる。他にも、省電力モードでの動作など電力制御を行っているか否かを判定基準とする態様や、スレーブモジュールに掛かっている処理負荷が所定の閾値を超えたか否かを判定基準とする態様などが考えられる。
【００４０】
（６）上述した実施形態では、バス３０に３つのマスタモジュール（画像処理機能を担うマスタモジュール１０Ａ、音声処理機能を担うマスタモジュール１０ＢおよびＤＭＡコントローラの役割を果たすマスタモジュール１０Ｃ）が接続される場合について説明したが、２つまたは４つ以上のマスタモジュールを接続しても良いことは言うまでもない。同様にバス３０に１つまたは３つ以上のスレーブモジュールが接続される態様であっても良い。また、マスタモジュールの種類も上記３種類に限定されるものではなく、ＣＰＵやＤＳＰであっても勿論良く、スレーブモジュールの種類もメモリコントローラに限定されるものではない。また、上述した実施形態では、バス３０に接続される複数のマスタモジュールのうちの１つが非周期的なデータ転送を行う場合について説明したが、それらのうちの複数のものが非周期的なデータ転送を行う態様であっても良く、また、それらの全てが周期的なデータ転送を行う態様であっても良い。
【００４１】
（７）スレーブモジュール２０によるアクセスコントロールの対象は、ＤＲＡＭやＳＲＡＭ等だけでなく、一般的なストレージデバイスやデータの読み出しのみが可能なＲＯＭであっても良い。また、スレーブモジュール２０によるアクセスコントロールの対象が比較的低速なＲＯＭなどのストレージデバイスである場合には、高速なアクセスを必要とするマスタモジュールに対するデータを必要に応じて別メモリに転送する形態も考えられる。限られた帯域を有効に使用し、システムの破綻を防止しつつ性能設計を容易にするという意味では、低速なストレージデバイスに対するアクセス制御に本発明を適用することによって顕著な効果が得られるからである。
【００４２】
（８）上述した実施形態では各マスタモジュールが実行するデータ転送を周期的に実行されるものと、非周期的に実行されるものとに分類し、後者に対してのみ単位処理時間当たりのデータ転送量に上限値を設定した。しかし、データ転送の開始からその完了までに許容される時間（以下、許容時間）が所定の閾値を超えるか否かによって各マスタモジュールを分類し、超えないものに対しては、許容時間内にデータ転送を完了するように定められる単位処理時間あたりのデータ転送量に対して余裕のある上限値を設定し（或いは、上限値を設定しない）、超えるものに対しては十分に小さな上限値を設定するようにしても良い。このような態様によれば、データ転送の開始からその完了までの許容時間が所定の閾値を超えるマスタモジュール（すなわち、時間的な制約が緩やかなデータ転送を実行するマスタモジュール）については単位処理時間におけるデータ転送の実行が厳しく制限され、許容時間が閾値を超えないマスタモジュール（すなわち、時間的な制約が厳しいデータ転送を実行するマスタモジュール）に対してデータ転送帯域が優先的に確保されることになる。なお、上記閾値としてどのような値を採用するのかについては、複数のマスタモジュールとスレーブモジュールとを含むシステム全体に対する要求仕様に基づいて定めるようにすれば良い。例えば、上述した実施形態は、本変形例における閾値としてシーン周期ＴＳよりは小さく、かつ、フレーム周期ＴＦよりは大きい値を採用した場合に相当する。
【符号の説明】
【００４３】
１０Ａ、１０Ｂ、１０Ｃ…マスタモジュール、２０Ｘ，２０Ｙ…スレーブモジュール、３０…バス、１１０，２１０…データ転送部、２２０…タイマ、２３０…転送量カウンタ、１２０，２４０…転送制御部。
【図１】
2011095967.tif 000003
【図２】
2011095967.tif 000004
【図３】
2011095967.tif 000005
【図４】
2011095967.tif 000006