(57)【要約】  【課題】  小規模な回路構成で共有バスの調停を実現すると共に、チップサイズの縮小化に寄与し、更に共有バスを共有するＣＰＵ等の数の変更に対して簡単に対応できる共有バス調停システムを提供することを目的とする。  【解決手段】  システムクロックを発生するシステムクロック発生回路６と、複数のＣＰＵ（１、２及び３）と、各ＣＰＵの駆動条件を記憶するレジスタ２１、２２及び２３と、ＣＰＵ１、２及び３に共有される共有バス８と、システムクロックに同期してカウント値を更新するカウンタ７とが備えられている。各ＣＰＵは、カウント値が自身の駆動条件を満たす時に共有バス８の使用権を獲得し、駆動条件の夫々は、同一のカウント値に対して２以上のＣＰＵの駆動条件が同時に満足することがないように定められている。【選択図】      図１
2006031426.tif 000002
【特許請求の範囲】
【請求項１】
システムクロックを発生するシステムクロック発生手段と、
所定の演算処理を行う複数の演算手段と、
前記複数の演算手段の夫々の駆動条件を記憶する第１のレジスタと、
前記複数の演算手段に共有され、前記複数の演算手段の夫々の入出力信号を伝達可能な共有バスと、
前記システムクロックに同期してカウント値を更新するカウンタと、を備え、
各演算手段は、前記カウント値が自身の駆動条件を満たす時に前記共有バスの使用権を獲得し、
前記駆動条件の夫々は、同一のカウント値に対して２以上の演算手段の駆動条件が同時に満足することがないように定められている
ことを特徴とする共有バス調停システム。
【請求項２】
各演算手段は、前記システムクロックを構成するパルスの内、前記カウント値が自身の駆動条件を満たす時におけるパルスを、自身への動作クロックとして入力する
ことを特徴とする請求項１に記載の共有バス調停システム。
【請求項３】
前記駆動条件は駆動番号として与えられており、前記カウント値が自身の駆動条件を満たす時とは、前記カウント値が前記駆動番号に一致する時に相当する
ことを特徴とする請求項２に記載の共有バス調停システム。
【請求項４】
前記共有バスを介して各演算手段が出力するデータを入力可能であるか、または各演算手段にデータを出力可能な周辺装置と、
前記周辺装置の駆動条件を記憶する第２のレジスタと、を更に備え、
前記周辺装置は、前記システムクロックを構成するパルスの内、前記カウント値が自身の駆動条件を満たす時におけるパルスを自身への動作クロックとして入力するとともに、前記カウント値が自身の駆動条件を満たす時に前記共有バスの使用権を獲得する
ことを特徴とする請求項２に記載の共有バス調停システム。
【請求項５】
前記複数の演算手段の駆動条件の夫々、及び／または前記周辺装置の駆動条件を可変とした
ことを特徴とする請求項４に記載の共有バス調停システム。
【請求項６】
請求項１〜請求項５の何れかに記載された共有バス調停システムを備えたことを特徴とする電気機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のＣＰＵ（Central Processing Unit；中央処理装置）等に共有される共有バスの調停機能を備えた共有バス調停システムに関する。
【背景技術】
【０００２】
複数のＣＰＵを備えたシステム（マルチＣＰＵシステム）の従来例として、図８に示すようなものがある。図８のシステムは、２つのＣＰＵ１０１及び１０２、ＣＰＵ１０１専用のＲＡＭ（Random Access Memory）１０３、入出力ポート１０４及び専用バス１０８、並びにＣＰＵ１０２専用のＲＡＭ１０５、入出力ポート１０６及び専用バス１０９、を備えており、ＣＰＵ１０１とＣＰＵ１０２は、デュアルポートメモリ１０７でインターフェースされている。
【０００３】
通常、ＣＰＵ１０１とＣＰＵ１０２との一方にでもメモリ不足が発生することがないように、ＲＡＭ１０３は、ＣＰＵ１０１が最大負荷（最も大きなサイズのＲＡＭ領域を使用する状態）になった時のメモリサイズを有する必要があり、ＲＡＭ１０４は、ＣＰＵ１０２が最大負荷になった時のメモリサイズを有する必要がある。
【０００４】
また、ＣＰＵ１０１とＣＰＵ１０２の双方に入出力ポートが必要となる場合は、図８に示す如く、各ＣＰＵに専用の入出力ポート（入出力ポート１０４、１０５）を設ける必要がある。このため、システム全体のチップサイズが大きくなり、チップコストの増大や歩留まりの低下を招いてしまう。
【０００５】
そこで、図９に示すような調停回路を備えたシステムが実用化されている（例えば、下記特許文献１参照）。ＣＰＵ１１１とＣＰＵ１１２は、ＲＡＭ１２１や入出力ポート１２２を共有して使用する。例えば、ＣＰＵ１１１、１１２がＲＡＭ１２１へのアクセス（データの読出し及び／又は書込み）を希望する場合の動作について簡単に説明する。まず、ＣＰＵ１１１、１１２の夫々は、アクセス要求信号１３１、１３２を調停回路１１７に送出する。
【０００６】
調停回路１１７は、アクセス要求信号１３１、１３２が競合しない時には、アクセス要求信号を発したＣＰＵ（ＣＰＵ１１１又は１１２）にアクセス許可の応答信号１３３、１３４を与えて共有バス１２０の使用権を与える。共有バス１２０の使用権を獲得したＣＰＵ１１１又は１１２は、専用バス１１８又は専用バス１１９と共有バス１２０を介してＲＡＭ１２１にアクセスを行う。
【０００７】
しかし、アクセス要求信号１３１、１３２が競合した時には、調停回路１１７は予め定められた優先順位に従ってＣＰＵ１１１又は１１２に共有バス１２０の使用権を与える。使用権を得たＣＰＵ１１１又は１１２は、アクセス要求信号が競合しない時と同様の動作を行うが、使用権を獲得できなかったＣＰＵ１１１又は１１２は、ウエイト要求の応答信号１３３、１３４によってウエイト状態となり、使用権を獲得できるまでデータ転送のプログラムの実行は中断される。
【０００８】
尚、図９のシステムにおいても、ＣＰＵ１１１専用のＲＡＭ１１３、入出力ポート１１４及び専用バス１１８と、ＣＰＵ１１２専用のＲＡＭ１１５、入出力ポート１１６及び専用バス１１９と、が設けられている。
【０００９】
【特許文献１】特公平０６−０２８０５２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上記の図９の動作例は、比較的単純な動作例であるが、調停回路１１７は実際、各ＣＰＵからのアクセス要求信号の有無、使用権を与える優先順位、共有バス１２０の使用状態だけでなく、システム全体のステートが現在どのステートにあるかを参照しつつ応答信号１３３、１３４の内容を決定するため、複数の条件に応じた応答信号の生成やバスの制御が必要となり、回路は複雑且つ大規模なものとなっている。
【００１１】
そして、共有バス１２０を共有するＣＰＵの数が増えると、専用バスと共有バスとの接続の切り替えが多くなる上、アクセス要求信号の受信回路と応答信号を生成する回路は極めて複雑且つ大規模になるし、調停回路１１７に大規模な変更を加える必要がありシステムの変更のための設計時間及び設計コストが極めて大きい。
【００１２】
また、ＣＰＵ１１１、１１２がＲＡＭ１２１にアクセスを希望しても拒否されることを考慮すると、結局、ＣＰＵ１１１の最大負荷時に必要なメモリサイズに近いサイズを有するＲＡＭ１１３をＣＰＵ１１１専用に設け、ＣＰＵ１１２の最大負荷時に必要なメモリサイズに近いサイズを有するＲＡＭ１１５をＣＰＵ１１２専用に設ける必要がある。このため、図９のシステムにおいても、チップサイズの軽減効果は十分とはいえない。同様に、入出力ポート１２２にアクセスしたいタイミングに、必ずしも共有バス１２０の使用権が得られるとは限らないため、別途ＣＰＵ１１１専用の入出力ポート１１４や、ＣＰＵ１１２専用の入出力ポート１１６を設ける必要があり、このこともチップサイズを小さくすることを妨げる。
【００１３】
本発明は、上記の点に鑑み、小規模な回路構成で共有バスの調停を実現すると共に、チップサイズの縮小化に寄与し、更に共有バスを共有するＣＰＵ等の数の変更に対して簡単に対応できる共有バス調停システムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記目的を達成するために本発明に係る共有バス調停システムは、システムクロックを発生するシステムクロック発生手段と、所定の演算処理を行う複数の演算手段と、前記複数の演算手段の夫々の駆動条件を記憶する第１のレジスタと、前記複数の演算手段に共有され、前記複数の演算手段の夫々の入出力信号を伝達可能な共有バスと、前記システムクロックに同期してカウント値を更新するカウンタと、を備え、各演算手段は、前記カウント値が自身の駆動条件を満たす時に前記共有バスの使用権を獲得し、前記駆動条件の夫々は、同一のカウント値に対して２以上の演算手段の駆動条件が同時に満足することがないように定められている。
【００１５】
これにより、共有バスの競合は生じない。つまり、比較的小規模の回路構成にて実装できるカウンタの機能を応用することにより共有バスの調停機能が実現されており、従来例のような複雑な調停回路を設ける必要がない。
【００１６】
また、カウント値のカウント方法を変形したり、第１のレジスタの記憶内容を変更したりすることで、各演算手段の稼働率を変更することが可能となる。そうすると、各演算手段に前記共有バスを介して共有される周辺装置としてＲＡＭ等のメモリを設けた場合、各演算手段の稼動状況に応じたメモリ領域の配分が可能となる。これにより、図８や図９に示される従来例のように、演算手段（従来例のＣＰＵに相当）毎に最大負荷時に必要なメモリサイズ（又は最大負荷時に必要なメモリサイズに近いサイズ）を有する専用のメモリ設ける必要はなくなる。このことは、上記共有バス調停システムを半導体基板上に形成した場合、チップサイズの縮小化に寄与する。
【００１７】
また、前記共有バスに各演算手段の周辺装置としてのＲＡＭ等のメモリを接続した場合、そのメモリは各演算手段に共有されることになるため、各演算手段はそのメモリにアクセスすることにより演算手段間のデータ転送は不要となる。このため、各演算手段はウエイト状態を従来例よりも長い時間維持することができ、システムの低消費電力化が図られる。
【００１８】
また、上記のように構成すれば、前記共有バスを共有する前記演算手段が変化した場合でも、前記カウンタのビット数を変更し、前記カウント値をデコードするデコータを変更する等の程度の小規模な変更で対応が可能である。即ち、共有バスを共有する演算手段の数の変化に対して容易な設計変更で対応が可能である。
【００１９】
また、例えば、各演算手段は、前記システムクロックを構成するパルスの内、前記カウント値が自身の駆動条件を満たす時におけるパルスを、自身への動作クロックとして入力するとよい。
【００２０】
各演算手段は、前記システムクロックを構成するパルスの内、前記カウント値が自身の駆動条件を満たす時におけるパルスを自身への動作クロックとして入力して動作する。そして、各演算手段は、前記カウント値が自身の駆動条件を満たす時に前記共有バスの使用権を獲得する。従って、各演算手段に動作クロックが入力されて動作するタイミングにおいては、各演算手段には必ず共有バスの使用権が与えられることになるので、各演算手段は共有バスをあたかも自身の専用バスのよう用いることができる。
【００２１】
つまり、各演算手段は、共有バスを使用するに当たって、従来例のようにアクセス要求信号を送出して共有バスの使用の可否を問い合わせる必要もないし、他の演算手段の動作によって共有バスの使用の可否が変動することもない（カウント値と自身の駆動条件のみによって共有バスの使用の可否は決定する）。これにより、演算手段の処理の高速化及び簡素化が図られる。
【００２２】
また、具体的な一例として、前記駆動条件は駆動番号として与えられており、前記カウント値が自身の駆動条件を満たす時とは、前記カウント値が前記駆動番号に一致する時に相当する。
【００２３】
また、例えば、前記共有バスを介して各演算手段が出力するデータを入力可能であるか、または各演算手段にデータを出力可能な周辺装置と、前記周辺装置の駆動条件を記憶する第２のレジスタと、を更に備え、前記周辺装置は、前記システムクロックを構成するパルスの内、前記カウント値が自身の駆動条件を満たす時におけるパルスを自身への動作クロックとして入力するとともに、前記カウント値が自身の駆動条件を満たす時に前記共有バスの使用権を獲得するようにするとよい。
【００２４】
例えば、複数の演算手段が第１演算手段と第２演算手段とから成るとし、第１演算手段の駆動条件と前記周辺装置の駆動条件とが一致するようにしておけば、前記周辺装置は第１演算手段に用いられる周辺装置として動作することになる。そして、前記第１のレジスタの記憶内容を書き換えて第１演算手段及び第２演算手段の駆動条件を変化させることにより、または前記第２のレジスタの記憶内容を書き換えて前記周辺装置の駆動条件を変化させることにより、前記周辺装置を第２演算手段に用いられる周辺装置として動作させることもできる。
【００２５】
つまり、前記複数の演算手段の駆動条件の夫々、及び／または前記周辺装置の駆動条件を可変としておくとよい。即ち、前記複数の演算手段の駆動条件の夫々を可変とするか、前記周辺装置の駆動条件を可変とするか、又は前記複数の演算手段の駆動条件の夫々及び前記周辺装置の駆動条件を可変とするとよい。
【００２６】
これにより、前記周辺装置と各演算手段との組み合わせを自由に且つ簡単に変更することができる。
【発明の効果】
【００２７】
上述した通り、本発明に係る時定数自動調整回路によれば、小規模な回路構成で共有バスの調停を実現すると共に、チップサイズの縮小化に寄与することができる。更に共有バスを共有するＣＰＵ等の数の変更に対して簡単に対応できる。
【発明を実施するための最良の形態】
【００２８】
＜＜第１実施形態＞＞
以下、本発明に係る共有バス調停システムの第１実施形態を、図面を参照して説明する。図１は、本発明の第１実施形態に係る共有バス調停システム１０のブロック構成図である。
【００２９】
共有バス調停システム１０は、共有バス調停システム１０が行うタスクに応じて夫々に所定の演算処理（プログラムの実行、データ転送等）を行うＣＰＵ１、２及び３（演算手段）と、半導体メモリから成るＲＡＭ４と、外部からのデータを入力して、そのデータをＣＰＵ１、２又は３に出力（伝送）可能であると共に、ＣＰＵ１、２又は３が出力するデータを入力して、外部にそのデータを出力することが可能な入出力ポート５と、システムクロックを発生するシステムクロック発生回路（システムクロック発生手段）６と、そのシステムクロックを入力し、システムクロックに同期してカウント値を更新するカウンタ７と、ＣＰＵ１、２及び３に共有され、ＲＡＭ４や入出力ポート５から送出される信号をＣＰＵ１、２又は３に入力信号として伝送すると共に、ＣＰＵ１、２又は３からの出力信号をＲＡＭ４や入出力ポート５に伝送するための共有バス８と、調停回路１１、１２及び１３と、レジスタ２１、２２及び２３と、から概略構成されている。ＲＡＭ４と入出力ポート５は、ＣＰＵ１、２、３で共有されるＣＰＵ１、２又は３の周辺装置として機能する。
【００３０】
システムクロック発生回路６が発生するシステムクロックは、調停回路１１、１２及び１３の夫々に与えられていると共に、ＲＡＭ４及び入出力ポート５の夫々の動作クロックとしてＲＡＭ４及び入出力ポート５の夫々にそのまま与えられている。カウンタ７が出力するカウント値は調停回路１１、１２及び１３の夫々に与えられている。
【００３１】
レジスタ２１は、ＣＰＵ１用の駆動番号を記憶しており、その駆動番号を調停回路１１に与えている。同様に、レジスタ２２、２３は、夫々ＣＰＵ２用の駆動番号、ＣＰＵ３用の駆動番号を記憶しており、それらの駆動番号は、夫々調停回路１２、１３に与えられている。今、ＣＰＵ１用の駆動番号、ＣＰＵ２用の駆動番号、ＣＰＵ３用の駆動番号は、夫々１、２、３であるとする。
【００３２】
調停回路１１は、カウンタ７から供給されるカウント値とレジスタ２１から供給されるＣＰＵ１用の駆動番号とに基づいてシステムクロックの一部を抜き取り、そのシステムクロックの一部を動作クロック５１としてＣＰＵ１に供給する。同様に、調停回路１２はカウント値とＣＰＵ２用の駆動番号とに基づいてシステムクロックの一部を抜き取り、そのシステムクロックの一部を動作クロック５２としてＣＰＵ２に供給し、調停回路１３はカウント値とＣＰＵ３用の駆動番号とに基づいてシステムクロックの一部を抜き取り、そのシステムクロックの一部を動作クロック５３としてＣＰＵ３に供給する。
【００３３】
図２を用いて各動作クロックの様子を説明する。図２は、上から、システムクロックの電圧波形、カウンタ７が出力するカウント値、ＣＰＵ１の動作クロック５１の電圧波形、ＣＰＵ２の動作クロック５２の電圧波形、ＣＰＵ３の動作クロック５３の電圧波形を示している。
【００３４】
図２に示す如く、カウント値はシステムクロックの電圧の立ち上がり（アップエッジ）に同期してインクリメントされ（１だけ増加し）、カウント値が３の時、システムクロックの電圧が立ち上がると、カウント値は０に戻る。つまり、カウンタ７はサーキュラタイプのカウンタであって、カウント値は、システムクロックに同期して０→１→２→３→０→１→２→３→０・・・、のようにループ状に変化する。
【００３５】
そして、システムクロックを構成するパルスの内、カウント値が１の時におけるパルスがＣＰＵ１の動作クロック５１となる。つまり、システムクロックを構成するパルスの内、カウント値がＣＰＵ１用の駆動番号である１と一致する時におけるパルスがＣＰＵ１の動作クロック５１となる。
【００３６】
同様に、システムクロックを構成するパルスの内、カウント値がＣＰＵ２用の駆動番号である２と一致する時におけるパルスがＣＰＵ２の動作クロック５２となり、カウント値がＣＰＵ３用の駆動番号である３と一致する時におけるパルスがＣＰＵ３の動作クロック５３となる。
【００３７】
また、図１において、４１、４２、４３は、夫々ＣＰＵ１、２、３が入出力する信号を伝送するための専用の入出力バスである。ＲＡＭ４、入出力ポート５の夫々の各入出力端子は、共有バス８に接続されており、ＣＰＵ１、２、３は、夫々入出力バス４１と調停回路１１、入出力バス４２と調停回路１２、入出力バス４３と調停回路１３を介し、更に共有バス８を介してＲＡＭ４、入出力ポート５の夫々とアクセスが可能となっている。
【００３８】
ＣＰＵ１は、調停回路１１の機能により、カウント値がＣＰＵ１用の駆動番号である１と一致する時に共有バス８の使用権を獲得する一方、カウント値がＣＰＵ１用の駆動番号である１と異なる時には共有バス８の使用権を有しないようになっている。ここにおいて、「共有バス８の使用権を獲得する」とは、「共有バス８が伝送する信号を調停回路（ＣＰＵ１なら調停回路１１）及び入出力バス（ＣＰＵ１なら入出力バス４１）を介して入力可能となる」、または「共有バス８に所望の信号を入出力バス（ＣＰＵ１なら入出力バス４１）及び調停回路（ＣＰＵ１なら調停回路１１）を介して出力可能となる」ことを意味し、その入力及び出力の双方が可能になることも含む。
【００３９】
同様に、ＣＰＵ２、ＣＰＵ３は、夫々調停回路１２、１３の機能により、カウント値が自身の駆動番号と一致する時に共有バス８の使用権を獲得する一方、カウント値が自身の駆動番号と異なる時には共有バス８の使用権を有しないようになっている。
【００４０】
そして、ＣＰＵ１、２、３の駆動番号の夫々は、互いに異なっており（上述のとおり、ＣＰＵ１、２、３の駆動番号は、夫々１、２、３）、同一のカウント値に対して２以上のＣＰＵに対応する駆動番号が一致することのないように設定されている。従って、共有バス８の競合が生じることはない。つまり、カウンタ７と、カウント値及びレジスタ２１等の記憶内容に従ってバス接続の切り替えやシステムクロックのマスクを行う調停回路１１等とによる単純な回路構成により、共有バスの調停機能が実現されている。
【００４１】
また、システムクロックの電圧波形の立ち上がりに同期したカウント値のカウント方法を変形すれば、各ＣＰＵの稼働率を容易に変化させることが出来る。例えば、ＣＰＵ１が最大負荷（最も大きなサイズのＲＡＭ領域を使用する状態）になる一方、ＣＰＵ２及びＣＰＵ３が、それほどＲＡＭ領域を必要としない場合には、システムクロックの電圧波形の立ち上がりに同期してカウント値が０→１→１→１→１→２→３→０→１→１→１→１→２→３→０・・・と変化するようにカウント値のカウント方法を変形する。これにより、ＣＰＵ１は、ＣＰＵ２やＣＰＵ３よりも優先的にＲＡＭ４を使用することが可能となり、各ＣＰＵは必要とするＲＡＭ領域を確保することができる。この場合、勿論ＣＰＵ１はＣＰＵ２やＣＰＵ３よりも優先的に入出力ポート５を使用することも可能となる。
【００４２】
また、システムクロックの電圧波形の立ち上がりに同期してカウント値が０→１→２→３→４→５→６→０→１→２→・・・と、０から６までループ状に変化するようにしておき、レジスタ２１に記憶されるＣＰＵ１用の駆動番号を１と４に、レジスタ２２に記憶されるＣＰＵ２用の駆動番号を２と５に、レジスタ２３に記憶されるＣＰＵ３用の駆動番号を３と６としてもよい。そして、ＣＰＵ１が最大負荷になる一方、ＣＰＵ２及びＣＰＵ３が、それほどＲＡＭ領域を必要としない場合には、図示しない駆動番号変更回路により、レジスタ２１、２２及び２３の記憶内容を変更して、ＣＰＵ１用の駆動番号を１と２と３と４に、ＣＰＵ２用の駆動番号を５に、ＣＰＵ３用の駆動番号を６にする。これによっても、ＣＰＵ１はＣＰＵ２やＣＰＵ３よりも優先的にＲＡＭ４を使用することが可能となり、各ＣＰＵは必要とするＲＡＭ領域を確保することができる。この場合、勿論ＣＰＵ１はＣＰＵ２やＣＰＵ３よりも優先的に入出力ポート５を使用することも可能となる。
【００４３】
上記のように、システムクロックの電圧波形の立ち上がりに同期したカウント値のカウント方法を変形したり、レジスタ２１、２２及び２３の記憶内容を変更したりすることで、各ＣＰＵの稼働率を容易に変更することが可能であり、各ＣＰＵの稼働状況に応じたＲＡＭ領域の配分が可能である。
【００４４】
図８や図９に示すシステム(従来例)や共有バス調停システム１０のようなシステムを半導体基板上に形成した場合、ＲＡＭの面積の大きさは、チップサイズに大きな影響を与えるが、共有バス調停システム１０によれば、各ＣＰＵの稼働状況に応じたＲＡＭ領域の配分が可能となるため、従来例のようにＣＰＵ毎に最大負荷時に必要なメモリサイズ（または、最大負荷時に必要なメモリサイズに近いサイズ）を有する専用ＲＡＭを設ける必要がない。従って、半導体のチップサイズを小さくすることができる。また、ＣＰＵ１、２、３は入出力ポート５も共有しており、このこともチップサイズの縮小化に寄与する。
【００４５】
また、図９のシステム（従来例）において、ＲＡＭ１２１に格納されていないデータは、このＲＡＭ１２１にＤＭＡ（ダイレクトメモリアクセス）機能などの転送機能を使ってデータ転送する必要がある（ＲＡＭ１２１を用いてＣＰＵ間のデータ転送を行う必要がある）。ところが、共有バス調停システム１０においては、ＲＡＭ４がＣＰＵ１、２及び３に共有されているため、各ＣＰＵがＲＡＭ４にアクセスすることによりデータ転送は不要となる。従って、各ＣＰＵはウエイト状態を従来例よりも長い時間維持することができ、これにより、システムの低消費電力化が図られる。
【００４６】
また、各ＣＰＵは、システムクロックを構成するパルスの内、「カウント値が自身の駆動番号と一致する時」におけるパルスを自身の動作クロックとして入力して動作する。そして、各ＣＰＵは、「カウント値が自身の駆動番号と一致する時」に共有バス８の使用権を獲得する。従って、各ＣＰＵに動作クロックが入力されて動作するタイミングにおいては、各ＣＰＵには必ず共有バス８の使用権が与えられることになるので、各ＣＰＵは共有バス８をあたかも自身の専用バスのよう用いることができる。
【００４７】
つまり、各ＣＰＵは、共有バス８を使用するに当たって、従来例のようにアクセス要求信号を送出して共有バス８の使用の可否を問い合わせる必要もないし、他のＣＰＵであるＣＰＵ２及びＣＰＵ３の動作によって共有バス８の使用の可否が変動することもない（カウント値と自身の駆動番号のみによって共有バス８の使用の可否は決定する）。これにより、ＣＰＵの処理の高速化及び簡素化が図られる。
【００４８】
また、カウント値が０、２又は３となって、カウント値がＣＰＵ１用の駆動番号と一致しない時、調停回路１１は共有バス８への電圧の出力を停止している。同様に、カウント値がＣＰＵ２用の駆動番号と一致しない時、調停回路１２は共有バス８への電圧の出力を停止し、カウント値がＣＰＵ３用の駆動番号と一致しない時、調停回路１３は共有バス８への電圧の出力を停止する。
【００４９】
これは、調停回路１１、１２、１３の夫々に、ＣＰＵ１用の駆動番号、ＣＰＵ２用の駆動番号、ＣＰＵ３用の駆動番号の夫々とカウント値との一致／不一致によって制御されるスリーステートバッファを設けることで実現され、これにより、調停回路１１、１２、１３からの出力信号同士が衝突しないようになっている。
【００５０】
この出力信号同士の衝突を防止するために、図１の共有バス調停システム１０を図３の共有バス調停システム１０ａのように変形してもよい。図３において、図１と同一の部分には同一の符号を付しており、その詳細な説明は省略する。調停回路６０は、入出力バス４１、４２、４３の夫々と接続されたマルチプレクサ６１を備え、マルチプレクサ６１は、カウント値が１の時に入出力バス４１を共有バス８に接続し、カウント値が２の時に入出力バス４２を共有バス８に接続し、カウント値が３の時に入出力バス４３を共有バス８に接続する。これにより、スリーステートバッファを用いることなく、出力信号同士の衝突が防止される。
【００５１】
尚、調停回路６０は、システムクロック及びカウント値、レジスタ２１、２２、２３が夫々記憶するＣＰＵ１、２、３用の駆動番号を入力して、図１の調停回路１１、１２、１３と同様に、ＣＰＵ１、２、３に夫々動作クロック５１、５２、５３を与えている。
【００５２】
＜＜第２実施形態＞＞
次に、本発明に係る共有バス調停システムの第２実施形態を、図面を参照して説明する。図４は、本発明の第２実施形態に係る共有バス調停システム１０ｂのブロック構成図である。図４において、図１と同一の部分には同一の符号を付し、その詳細な説明を省略する。  図４において、ＣＰＵ１、２、３と、システムクロック発生回路６と、カウンタ７と、共有バス８と、調停回路１１、１２、１３と、レジスタ２１、２２、２３との関係は、図１におけるものと同様である。
【００５３】
図４における共有バス調停システム１０ｂでは、調停回路１４及び１５、レジスタ２４及び２５が新たに設けられている。ＲＡＭ４の入出力信号は専用の入出力バス４４及び調停回路１４を介して共通バス８に伝送され、入出力ポート５の入出力信号は専用の入出力バス４５及び調停回路１５を介して共有バス８に伝送される。
【００５４】
システムクロック発生回路６が発生するシステムクロックは、調停回路１４及び１５の夫々に与えられている。カウンタ７が出力するカウント値も調停回路１４及び１５の夫々に与えられている。
【００５５】
レジスタ２４は、ＲＡＭ４用の駆動番号を記憶しており、その駆動番号を調停回路１４に与えている。同様に、レジスタ２５は、入出力ポート５用の駆動番号を記憶しており、その駆動番号を調停回路１５に与えている。今、ＣＰＵ１用の駆動番号、ＣＰＵ２用の駆動番号、ＣＰＵ３用の駆動番号は、第１実施形態と同様に夫々１、２、３であり、ＲＡＭ４用の駆動番号、入出力ポート５用の駆動番号は、夫々１、２であるとする。
【００５６】
調停回路１４は、調停回路１１、１２及び１３と同様に、カウンタ７から供給されるカウント値とレジスタ２４から供給されるＲＡＭ４用の駆動番号とに基づいてシステムクロックの一部を抜き取り、そのシステムクロックの一部を動作クロック５４としてＲＡＭ４に供給する。同様に、調停回路１５は、カウント値と入出力ポート５用の駆動番号とに基づいてシステムクロックの一部を抜き取り、そのシステムクロックの一部を動作クロック５５として入出力ポート５に供給する。
【００５７】
図５を用いて各動作クロックの様子を説明する。図５は、上から、システムクロックの電圧波形、カウンタ７が出力するカウント値、ＣＰＵ１の動作クロック５１の電圧波形、ＣＰＵ２の動作クロック５２の電圧波形、ＣＰＵ３の動作クロック５３の電圧波形、ＲＡＭ４の動作クロック５４の電圧波形、入出力ポート５の動作クロック５５の電圧波形を示している。
【００５８】
システムクロック及びカウント値との関係における動作クロック５１、５２、５３の電圧波形の夫々は、図２におけるものと同様である。そして、ＣＰＵ１用の駆動番号とＲＡＭ４用の駆動番号は同じであり、ＣＰＵ２用の駆動番号と入出力ポート５用の駆動番号は同じであるので、図５に示す如く、ＣＰＵ１の動作クロック５１の電圧波形とＲＡＭ４の動作クロック５４の電圧波形は同じであり、ＣＰＵ２の動作クロック５２の電圧波形と入出力ポート５の動作クロック５５の電圧波形は同じである。
【００５９】
ＲＡＭ４は、調停回路１４の機能により、カウント値がＲＡＭ４用の駆動番号である１と一致する時に共有バス８の使用権を獲得する一方、カウント値がＲＡＭ４用の駆動番号である１と異なる時には共有バス８の使用権を有しない。同様に、入出力ポート５は、調停回路１５の機能により、カウント値が自身の駆動番号と一致する時に共有バス８の使用権を獲得する一方、カウント値が自身の駆動番号と異なる時には共有バス８の使用権を有しない。
【００６０】
（図６、図７；ＲＡＭ４への書き込み動作例）
図４のように構成される共有バス調停システム１０ｂにおいて、ＣＰＵ１がＲＡＭ４のアドレス０ｘ１０Ｈ、０ｘ１１Ｈ（１６進数表示であり、１０進数表示では夫々１６、１７）に、夫々８ビットデータ０ｘ０ＡＨ、０ｘ０ＢＨ（１６進数表示であり、１０進数表示では夫々１０、１１）を書き込む動作について、図６及び図７を用いて説明する。
【００６１】
図６は、図４の共有バス調停システム１０ｂを構成するＣＰＵ１、ＣＰＵ２、ＣＰＵ３、ＲＡＭ４及び入出力ポート５の内、ＣＰＵ１及びＲＡＭ４の部分を詳細に表した共有バス調停システム１０ｂのブロック構成図である。図６において、図４と同一の部分には同一の符号を付してある。図６においては、図示の煩雑化防止のため、ＣＰＵ２、ＣＰＵ３及び入出力ポート５、調停回路１２、１３及び１５、並びにレジスタ２２、２３及び２５の記載を省略している。
【００６２】
ＣＰＵ１専用の入出力バス４１は、ＣＰＵ１専用の専用アドレスバス４１ａ、専用データバス４１ｂ及び専用ライト信号線４１ｃ、とを含んでいる。ＲＡＭ４専用の入出力バス４４は、ＲＡＭ４専用の専用アドレスバス４４ａ、専用データバス４４ｂ及び専用ライト信号線４４ｃ、とを含んでいる。共有バス８は、共有アドレスバス８ａ、共有データバス８ｂ及び共有ライト信号線８ｃ、とを含んでいる。
【００６３】
ＣＰＵ１専用の専用アドレスバス４１ａ、専用データバス４１ｂ、専用ライト信号線４１ｃは、それぞれ調停回路１１を介して共有アドレスバス８ａ、共有データバス８ｂ、共有ライト信号線８ｃに接続されており、ＲＡＭ４専用の専用アドレスバス４４ａ、専用データバス４４ｂ、専用ライト信号線４４ｃは、それぞれ調停回路１４を介して共有アドレスバス８ａ、共有データバス８ｂ、共有ライト信号線８ｃに接続されている。
【００６４】
図７は、横軸を時間として、上から、システムクロックの電圧波形、カウント値、ＣＰＵ１の動作クロック５１の電圧波形、ＣＰＵ１専用の専用アドレスバス４１ａの状態（信号伝送状態）、専用データバス４１ｂの状態、専用ライト信号線４１ｃの状態、共有アドレスバス８ａの状態、共有データバス８ｂの状態、共有ライト信号線８ｃの状態、ＲＡＭ４の動作クロック５４の電圧波形、ＲＡＭ４専用の専用アドレスバス４４ａの状態、専用データバス４４ｂの状態、専用ライト信号線４４ｃの状態、ＲＡＭ４のアドレス０ｘ０１０Ｈの記憶内容、ＲＡＭ４のアドレス０ｘ０１１Ｈの記憶内容、を表している。
【００６５】
図７において、システムクロックの電圧波形との関係における、カウント値、ＣＰＵ１の動作クロック５１の電圧波形及びＲＡＭ４の動作クロック５４の電圧波形は、図５と同様である。
【００６６】
タイミングｔ１において、システムクロックの電圧波形が立ち上がり、カウント値が０から１にインクリメントされると、ＣＰＵ１は動作クロック５１が入力されて動作し、ＲＡＭ４のアドレス０ｘ１０Ｈにデータ０ｘ０ＡＨを書き込むために、専用アドレスバス４１ａに０ｘ１０Ｈのアドレス信号を、専用データバス４１ｂに０ｘ０ＡＨのデータ信号を送出するとともに、専用ライト信号線４１ｃへの信号をハイレベル（高電位）からローレベル（低電位）に切り替える。
【００６７】
これらの専用アドレスバス４１ａに送出された０ｘ１０Ｈのアドレス信号、専用データバス４１ｂに送出された０ｘ０ＡＨのデータ信号、専用ライト信号線４１ｃに切り替えて送出されたローレベルの信号は、タイミングｔ１からカウント値が次回に２になるタイミングｔ２までの間、夫々そのまま共有アドレスバス８ａ、共有データバス８ｂ、共有ライト信号線８ｃに伝えられると共に、夫々共有アドレスバス８ａ、共有データバス８ｂ、共有ライト信号線８ｃを介した上で更に調停回路１４を介して、夫々そのままＲＡＭ４の専用アドレスバス４４ａ、専用データバス４４ｂ、専用ライト信号線４４ｃに伝送される。
【００６８】
一方、カウント値が２→３→０と変化するタイミングｔ２からｔ３の間においては、専用アドレスバス４１ａに送出された０ｘ１０Ｈのアドレス信号、専用データバス４１ｂに送出された０ｘ０ＡＨのデータ信号、専用ライト信号線４１ｃに送出されたローレベルの信号は、夫々共有アドレスバス８ａ、共有データバス８ｂ、共有ライト信号線８ｃに伝送されない。
【００６９】
同様に、タイミングｔ３において、システムクロックの電圧波形が立ち上がり、カウント値が０から１にインクリメントされると、ＣＰＵ１は動作クロック５１が入力されて動作し、ＲＡＭ４のアドレス０ｘ１１Ｈにデータ０ｘ０ＢＨを書き込むために、専用アドレスバス４１ａに０ｘ１１Ｈのアドレス信号を、専用データバス４１ｂに０ｘ０ＢＨのデータ信号を送出するとともに、専用ライト信号線４１ｃへの信号をローレベルに維持する。
【００７０】
これらの専用アドレスバス４１ａに送出された０ｘ１１Ｈのアドレス信号、専用データバス４１ｂに送出された０ｘ０ＢＨのデータ信号、専用ライト信号線４１ｃに送出されたローレベルの信号は、タイミングｔ３からカウント値が次回に２になるタイミングｔ４までの間、夫々そのまま共有アドレスバス８ａ、共有データバス８ｂ、共有ライト信号線８ｃに伝えられると共に、夫々共有アドレスバス８ａ、共有データバス８ｂ、共有ライト信号線８ｃを介した上で更に調停回路１４を介して、夫々そのままＲＡＭ４の専用アドレスバス４４ａ、専用データバス４４ｂ、専用ライト信号線４４ｃに伝送される。
【００７１】
一方、タイミングｔ４以降で次回にカウント値が１になるまでの間は、アドレスバス４１ａに送出された０ｘ１１Ｈのアドレス信号、専用データバス４１ｂに送出された０ｘ０ＢＨのデータ信号、専用ライト信号線４１ｃに送出されたローレベルの信号は、夫々共有アドレスバス８ａ、共有データバス８ｂ、共有ライト信号線８ｃに伝送されない。
【００７２】
そして、タイミングｔ１―ｔ２間のＲＡＭ４の動作クロック５４の立下りのタイミングにおいて、ＲＡＭ４は、ＲＡＭ４の専用アドレスバス４４ａに伝送されているアドレス信号０ｘ１０Ｈ、専用データバス４４ｂに伝送されているデータ信号０ｘ０ＡＨ、及び専用ライト信号線４４ｃに伝送されているローレベルの信号を受けて、データ０ｘ０ＡＨを自身のアドレス０ｘ１０Ｈに書き込む。
【００７３】
同様に、タイミングｔ３―ｔ４間のＲＡＭ４の動作クロック５４の立下りのタイミングにおいて、ＲＡＭ４は、ＲＡＭ４の専用アドレスバス４４ａに伝送されているアドレス信号０ｘ１１Ｈ、専用データバス４４ｂに伝送されているデータ信号０ｘ０ＢＨ、及び専用ライト信号線４４ｃに伝送されているローレベルの信号を受けて、データ０ｘ０ＢＨを自身のアドレス０ｘ１１Ｈに書き込む。
【００７４】
上記のように、ＣＰＵ１は、カウント値が自身の駆動番号である１と一致する時（タイミングｔ１−ｔ２間、及びｔ３−ｔ４間）に、共有アドレスバス８ａ、共有データバス８ｂ、共有ライト信号線８ｃを含む共有バス８の使用権を獲得すると共に、システムクロックのパルスの内、カウント値が自身の駆動番号である１と一致する時におけるパルスを自身への動作クロック５１として入力し、その動作クロック５１に同期して動作する。
【００７５】
そして、ＲＡＭ４も、カウント値が自身の駆動番号である１と一致する時に、共有アドレスバス８ａ、共有データバス８ｂ、共有ライト信号線８ｃを含む共有バス８の使用権を獲得すると共に、システムクロックのパルスの内、カウント値が自身の駆動番号である１と一致する時におけるパルスを自身への動作クロック５４として入力し、その動作クロック５４に同期して動作する。これにより、ＲＡＭ４は、ＣＰＵ１用の設けられたＲＡＭとして機能することになる。尚、ＣＰＵ２及びＣＰＵ３は、ＲＡＭ４を自身のＲＡＭとして用いることができない。
【００７６】
同様に、ＣＰＵ２用の駆動番号と入出力ポート５用の駆動番号は同じ「２」であるので、ＣＰＵ２、入出力ポート５は、カウント値が２である時に夫々共有バス８の使用権を獲得すると共に、同じタイミングで電圧波形が立ち上がり、且つ立ち下がる動作クロック５２、５５を入力して動作する。これにより、入出力ポート５は、ＣＰＵ２用の設けられた入出力ポートとして機能することになる。尚、ＣＰＵ１及びＣＰＵ３は、入出力ポート５を自身の入出力ポートとして用いることができない。
【００７７】
そして、例えば、ＲＡＭ４をＣＰＵ３のＲＡＭとして機能させたい場合は、図示しない駆動番号変更回路により、ＣＰＵ１用の駆動番号、ＣＰＵ３用の駆動番号が夫々３、１となるように、レジスタ２１、２３の記憶内容を書き換えるか、又はＲＡＭ４用の駆動番号が３になるようにレジスタ２４の記憶内容を書き換えるだけでよい。例えば、入出力ポート５をＣＰＵ１又はＣＰＵ３の入出力ポートとして機能させたい場合も同様である。つまり、ＲＡＭ４や入出力ポート５の周辺装置とＣＰＵ１、２又は３の組み合わせを自由に且つ簡単に変更することができる。
【００７８】
また、図７におけるタイミングｔ４の後、ＣＰＵ１用の駆動番号、ＣＰＵ３用の駆動番号が夫々３、１となるように、レジスタ２１、２３の記憶内容を書き換えるか、又はＲＡＭ４用の駆動番号が３になるようにレジスタ２４の記憶内容を書き換え、更にその後、ＣＰＵ３がＲＡＭ４のアドレス０ｘ１０Ｈ及び０ｘ１１Ｈの記憶内容を読み出せば、ＣＰＵ１からＣＰＵ３への、２つのデータ（０ｘ０ＡＨと０ｘ０ＢＨ）の転送が実現されることになる。つまり、ＣＰＵの駆動番号、またはＲＡＭの駆動番号を変更することにより、ＣＰＵ間のデータ転送が実現される。
【００７９】
（駆動番号と駆動条件）
また、第１実施形態、第２実施形態におけるレジスタ２１にＣＰＵ１用の駆動番号でなく、ＣＰＵ１用の駆動条件を記憶させるように変形してもよい。例えば、レジスタ２１に「カウント値が１以下」という内容を示すＣＰＵ１用の駆動条件を記憶させる。この駆動条件は調停回路１１に与えられる。そして、調停回路１１は、カウント値がＣＰＵ１用の駆動条件を満たす時、即ち、カウント値が０又は１の時にはＣＰＵ１に共有バス８の使用権を獲得させる一方、カウント値がＣＰＵ１用の駆動条件を満たさない時にはＣＰＵ１に共有バス８の使用権を与えないようにする。
【００８０】
このように変形することは、上述してきた第１実施形態及び第２実施形態における「駆動番号」を「駆動条件」と読みかえ、「カウント値と駆動番号が一致する」を意味する内容を「カウント値が駆動条件を満足する」を意味する内容で読みかえることに相当する。
【００８１】
そして、同様にレジスタ２２、２３、２４、２５に、夫々ＣＰＵ２用の駆動条件、ＣＰＵ３用の駆動条件、ＲＡＭ４用の駆動条件、入出力ポート５用の駆動条件を記憶させるように変形してもよい。尚、この場合も、共有バス８の競合が生じることがないように、即ち、同一のカウント値に対して２以上のＣＰＵに対応する駆動条件が同時に満足することがないように、ＣＰＵ１、２、３の駆動条件の夫々を定める。例えば、ＣＰＵ１用の駆動条件、ＣＰＵ２用の駆動条件、ＣＰＵ３用の駆動条件を、夫々「カウント値が１以下」、「カウント値が２と一致」、「カウント値が３と一致」と定める。
【００８２】
また、例えば、カウント値が図２や図５に示す如く０から３までの数値にしかならない場合において、ＣＰＵ１用の駆動条件、ＣＰＵ２用の駆動条件、ＣＰＵ３用の駆動条件を、夫々「カウント値が１以下」、「カウント値が２または３」、「カウント値が２５５と一致」と定めることにより、ＣＰＵ３を全く動作させないといったことも可能である。
【００８３】
＜＜その他、変形等＞＞
また、本発明は、上述の実施形態におけるようにＣＰＵが３つの場合のみに限定されるものではなく、共有バスが２以上のＣＰＵに共有されるシステムにおいて広く適用可能であるが、共有バスを共有するＣＰＵの数が変化（特に増加）した場合でも、カウンタ７のビット数を変更し、カウント値をデコードするデコータ（調停回路１１等に含まれる）を変更する程度の小規模な変更で対応が可能である。即ち、共有バスを共有するＣＰＵの数の変化に対して容易な設計変更で対応が可能である。
【００８４】
また、符号１、２、３で示されるＣＰＵは、ＭＰＵ（Micro Processing Unit）やＤＳＰ（Digital Signal Processor）等に置換されてもよく、共有バス調停システム１０等が行うタスクに応じて、夫々に所定の演算処理（プログラムの実行、データ転送等）を行う演算回路であれば何でもよい。
【００８５】
上記実施形態においては、ＣＰＵ１、２、３に共有されるＣＰＵ１、２又は３の周辺装置として、ＲＡＭ４と入出力ポート５を例示した。しかしながら、ＣＰＵ１、２、３に共有される周辺装置はＲＡＭや入出力ポートに限定されるものではなく、共有バス８を介してＣＰＵ１、２若しくは３が出力するデータを入力可能であるか、及び／又はＣＰＵ１、２若しくは３にデータを出力可能な周辺装置であれば何でもよい。例えば、ＲＯＭ（Read Only Memory）でもいいし、ＤＳＰも周辺装置となりうる。
【００８６】
また、カウント値は、システムクロックの立ち下がりに同期して変化（インクリメント）するように変形してもよい。
【産業上の利用可能性】
【００８７】
本発明は、ＳＯＣ（System On a Chip）等の半導体装置に好適である。また、携帯電話機及びＰＨＳ（Personal Handyphone System）等の低消費電力化が望まれる移動体通信機、並びにパーソナルコンピュータに代表される情報処理機器等、様々な電気機器に本発明は好適である。
【図面の簡単な説明】
【００８８】
【図１】本発明の第１実施形態に係る共有バス調停システムのブロック構成図である。
【図２】図１におけるカウンタ出力と各部の電圧波形との関係を説明するための図である。
【図３】図１の変形例を示すブロック構成図である。
【図４】本発明の第２実施形態に係る共有バス調停システムのブロック構成図である。
【図５】図４におけるカウンタ出力と各部の電圧波形との関係を説明するための図である。
【図６】図４の一部を詳細に示したブロック構成図である。
【図７】図１の共有バス調停システムの動作を説明するための図である。
【図８】従来のマルチＣＰＵシステムの構成を示す図である。
【図９】従来の他のマルチＣＰＵシステムの構成を示す図である。
【符号の説明】
【００８９】
１、２、３    ＣＰＵ
４    ＲＡＭ
５    入出力ポート
６    クロック発生回路
７    カウンタ
８    共有バス
１０、１０ａ、１０ｂ    共有バス調停システム
１１、１２、１３、１４、１５、６０    調停回路
２１、２２、２３、２４、２５    レジスタ
４１、４２、４３、４４、４４    入出力バス
５１、５２、５３、５４、５５    動作クロック
６１    マルチプレクサ
【図１】
2006031426.tif 000003
【図２】
2006031426.tif 000004
【図３】
2006031426.tif 000005
【図４】
2006031426.tif 000006
【図５】
2006031426.tif 000007
【図６】
2006031426.tif 000008
【図７】
2006031426.tif 000009
【図８】
2006031426.tif 000010
【図９】
2006031426.tif 000011