共有バス調停システム
【課題】 小規模な回路構成で共有バスの調停を実現すると共に、チップサイズの縮小化に寄与し、更に共有バスを共有するCPU等の数の変更に対して簡単に対応できる共有バス調停システムを提供することを目的とする。
【解決手段】 システムクロックを発生するシステムクロック発生回路6と、複数のCPU(1、2及び3)と、各CPUの駆動条件を記憶するレジスタ21、22及び23と、CPU1、2及び3に共有される共有バス8と、システムクロックに同期してカウント値を更新するカウンタ7とが備えられている。各CPUは、カウント値が自身の駆動条件を満たす時に共有バス8の使用権を獲得し、駆動条件の夫々は、同一のカウント値に対して2以上のCPUの駆動条件が同時に満足することがないように定められている。
【解決手段】 システムクロックを発生するシステムクロック発生回路6と、複数のCPU(1、2及び3)と、各CPUの駆動条件を記憶するレジスタ21、22及び23と、CPU1、2及び3に共有される共有バス8と、システムクロックに同期してカウント値を更新するカウンタ7とが備えられている。各CPUは、カウント値が自身の駆動条件を満たす時に共有バス8の使用権を獲得し、駆動条件の夫々は、同一のカウント値に対して2以上のCPUの駆動条件が同時に満足することがないように定められている。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のCPU(Central Processing Unit;中央処理装置)等に共有される共有バスの調停機能を備えた共有バス調停システムに関する。
【背景技術】
【0002】
複数のCPUを備えたシステム(マルチCPUシステム)の従来例として、図8に示すようなものがある。図8のシステムは、2つのCPU101及び102、CPU101専用のRAM(Random Access Memory)103、入出力ポート104及び専用バス108、並びにCPU102専用のRAM105、入出力ポート106及び専用バス109、を備えており、CPU101とCPU102は、デュアルポートメモリ107でインターフェースされている。
【0003】
通常、CPU101とCPU102との一方にでもメモリ不足が発生することがないように、RAM103は、CPU101が最大負荷(最も大きなサイズのRAM領域を使用する状態)になった時のメモリサイズを有する必要があり、RAM104は、CPU102が最大負荷になった時のメモリサイズを有する必要がある。
【0004】
また、CPU101とCPU102の双方に入出力ポートが必要となる場合は、図8に示す如く、各CPUに専用の入出力ポート(入出力ポート104、105)を設ける必要がある。このため、システム全体のチップサイズが大きくなり、チップコストの増大や歩留まりの低下を招いてしまう。
【0005】
そこで、図9に示すような調停回路を備えたシステムが実用化されている(例えば、下記特許文献1参照)。CPU111とCPU112は、RAM121や入出力ポート122を共有して使用する。例えば、CPU111、112がRAM121へのアクセス(データの読出し及び/又は書込み)を希望する場合の動作について簡単に説明する。まず、CPU111、112の夫々は、アクセス要求信号131、132を調停回路117に送出する。
【0006】
調停回路117は、アクセス要求信号131、132が競合しない時には、アクセス要求信号を発したCPU(CPU111又は112)にアクセス許可の応答信号133、134を与えて共有バス120の使用権を与える。共有バス120の使用権を獲得したCPU111又は112は、専用バス118又は専用バス119と共有バス120を介してRAM121にアクセスを行う。
【0007】
しかし、アクセス要求信号131、132が競合した時には、調停回路117は予め定められた優先順位に従ってCPU111又は112に共有バス120の使用権を与える。使用権を得たCPU111又は112は、アクセス要求信号が競合しない時と同様の動作を行うが、使用権を獲得できなかったCPU111又は112は、ウエイト要求の応答信号133、134によってウエイト状態となり、使用権を獲得できるまでデータ転送のプログラムの実行は中断される。
【0008】
尚、図9のシステムにおいても、CPU111専用のRAM113、入出力ポート114及び専用バス118と、CPU112専用のRAM115、入出力ポート116及び専用バス119と、が設けられている。
【0009】
【特許文献1】特公平06−028052号公報
【発明の開示】
【発明が解決しようとする課題】
【0010】
上記の図9の動作例は、比較的単純な動作例であるが、調停回路117は実際、各CPUからのアクセス要求信号の有無、使用権を与える優先順位、共有バス120の使用状態だけでなく、システム全体のステートが現在どのステートにあるかを参照しつつ応答信号133、134の内容を決定するため、複数の条件に応じた応答信号の生成やバスの制御が必要となり、回路は複雑且つ大規模なものとなっている。
【0011】
そして、共有バス120を共有するCPUの数が増えると、専用バスと共有バスとの接続の切り替えが多くなる上、アクセス要求信号の受信回路と応答信号を生成する回路は極めて複雑且つ大規模になるし、調停回路117に大規模な変更を加える必要がありシステムの変更のための設計時間及び設計コストが極めて大きい。
【0012】
また、CPU111、112がRAM121にアクセスを希望しても拒否されることを考慮すると、結局、CPU111の最大負荷時に必要なメモリサイズに近いサイズを有するRAM113をCPU111専用に設け、CPU112の最大負荷時に必要なメモリサイズに近いサイズを有するRAM115をCPU112専用に設ける必要がある。このため、図9のシステムにおいても、チップサイズの軽減効果は十分とはいえない。同様に、入出力ポート122にアクセスしたいタイミングに、必ずしも共有バス120の使用権が得られるとは限らないため、別途CPU111専用の入出力ポート114や、CPU112専用の入出力ポート116を設ける必要があり、このこともチップサイズを小さくすることを妨げる。
【0013】
本発明は、上記の点に鑑み、小規模な回路構成で共有バスの調停を実現すると共に、チップサイズの縮小化に寄与し、更に共有バスを共有するCPU等の数の変更に対して簡単に対応できる共有バス調停システムを提供することを目的とする。
【課題を解決するための手段】
【0014】
上記目的を達成するために本発明に係る共有バス調停システムは、システムクロックを発生するシステムクロック発生手段と、所定の演算処理を行う複数の演算手段と、前記複数の演算手段の夫々の駆動条件を記憶する第1のレジスタと、前記複数の演算手段に共有され、前記複数の演算手段の夫々の入出力信号を伝達可能な共有バスと、前記システムクロックに同期してカウント値を更新するカウンタと、を備え、各演算手段は、前記カウント値が自身の駆動条件を満たす時に前記共有バスの使用権を獲得し、前記駆動条件の夫々は、同一のカウント値に対して2以上の演算手段の駆動条件が同時に満足することがないように定められている。
【0015】
これにより、共有バスの競合は生じない。つまり、比較的小規模の回路構成にて実装できるカウンタの機能を応用することにより共有バスの調停機能が実現されており、従来例のような複雑な調停回路を設ける必要がない。
【0016】
また、カウント値のカウント方法を変形したり、第1のレジスタの記憶内容を変更したりすることで、各演算手段の稼働率を変更することが可能となる。そうすると、各演算手段に前記共有バスを介して共有される周辺装置としてRAM等のメモリを設けた場合、各演算手段の稼動状況に応じたメモリ領域の配分が可能となる。これにより、図8や図9に示される従来例のように、演算手段(従来例のCPUに相当)毎に最大負荷時に必要なメモリサイズ(又は最大負荷時に必要なメモリサイズに近いサイズ)を有する専用のメモリ設ける必要はなくなる。このことは、上記共有バス調停システムを半導体基板上に形成した場合、チップサイズの縮小化に寄与する。
【0017】
また、前記共有バスに各演算手段の周辺装置としてのRAM等のメモリを接続した場合、そのメモリは各演算手段に共有されることになるため、各演算手段はそのメモリにアクセスすることにより演算手段間のデータ転送は不要となる。このため、各演算手段はウエイト状態を従来例よりも長い時間維持することができ、システムの低消費電力化が図られる。
【0018】
また、上記のように構成すれば、前記共有バスを共有する前記演算手段が変化した場合でも、前記カウンタのビット数を変更し、前記カウント値をデコードするデコータを変更する等の程度の小規模な変更で対応が可能である。即ち、共有バスを共有する演算手段の数の変化に対して容易な設計変更で対応が可能である。
【0019】
また、例えば、各演算手段は、前記システムクロックを構成するパルスの内、前記カウント値が自身の駆動条件を満たす時におけるパルスを、自身への動作クロックとして入力するとよい。
【0020】
各演算手段は、前記システムクロックを構成するパルスの内、前記カウント値が自身の駆動条件を満たす時におけるパルスを自身への動作クロックとして入力して動作する。そして、各演算手段は、前記カウント値が自身の駆動条件を満たす時に前記共有バスの使用権を獲得する。従って、各演算手段に動作クロックが入力されて動作するタイミングにおいては、各演算手段には必ず共有バスの使用権が与えられることになるので、各演算手段は共有バスをあたかも自身の専用バスのよう用いることができる。
【0021】
つまり、各演算手段は、共有バスを使用するに当たって、従来例のようにアクセス要求信号を送出して共有バスの使用の可否を問い合わせる必要もないし、他の演算手段の動作によって共有バスの使用の可否が変動することもない(カウント値と自身の駆動条件のみによって共有バスの使用の可否は決定する)。これにより、演算手段の処理の高速化及び簡素化が図られる。
【0022】
また、具体的な一例として、前記駆動条件は駆動番号として与えられており、前記カウント値が自身の駆動条件を満たす時とは、前記カウント値が前記駆動番号に一致する時に相当する。
【0023】
また、例えば、前記共有バスを介して各演算手段が出力するデータを入力可能であるか、または各演算手段にデータを出力可能な周辺装置と、前記周辺装置の駆動条件を記憶する第2のレジスタと、を更に備え、前記周辺装置は、前記システムクロックを構成するパルスの内、前記カウント値が自身の駆動条件を満たす時におけるパルスを自身への動作クロックとして入力するとともに、前記カウント値が自身の駆動条件を満たす時に前記共有バスの使用権を獲得するようにするとよい。
【0024】
例えば、複数の演算手段が第1演算手段と第2演算手段とから成るとし、第1演算手段の駆動条件と前記周辺装置の駆動条件とが一致するようにしておけば、前記周辺装置は第1演算手段に用いられる周辺装置として動作することになる。そして、前記第1のレジスタの記憶内容を書き換えて第1演算手段及び第2演算手段の駆動条件を変化させることにより、または前記第2のレジスタの記憶内容を書き換えて前記周辺装置の駆動条件を変化させることにより、前記周辺装置を第2演算手段に用いられる周辺装置として動作させることもできる。
【0025】
つまり、前記複数の演算手段の駆動条件の夫々、及び/または前記周辺装置の駆動条件を可変としておくとよい。即ち、前記複数の演算手段の駆動条件の夫々を可変とするか、前記周辺装置の駆動条件を可変とするか、又は前記複数の演算手段の駆動条件の夫々及び前記周辺装置の駆動条件を可変とするとよい。
【0026】
これにより、前記周辺装置と各演算手段との組み合わせを自由に且つ簡単に変更することができる。
【発明の効果】
【0027】
上述した通り、本発明に係る時定数自動調整回路によれば、小規模な回路構成で共有バスの調停を実現すると共に、チップサイズの縮小化に寄与することができる。更に共有バスを共有するCPU等の数の変更に対して簡単に対応できる。
【発明を実施するための最良の形態】
【0028】
<<第1実施形態>>
以下、本発明に係る共有バス調停システムの第1実施形態を、図面を参照して説明する。図1は、本発明の第1実施形態に係る共有バス調停システム10のブロック構成図である。
【0029】
共有バス調停システム10は、共有バス調停システム10が行うタスクに応じて夫々に所定の演算処理(プログラムの実行、データ転送等)を行うCPU1、2及び3(演算手段)と、半導体メモリから成るRAM4と、外部からのデータを入力して、そのデータをCPU1、2又は3に出力(伝送)可能であると共に、CPU1、2又は3が出力するデータを入力して、外部にそのデータを出力することが可能な入出力ポート5と、システムクロックを発生するシステムクロック発生回路(システムクロック発生手段)6と、そのシステムクロックを入力し、システムクロックに同期してカウント値を更新するカウンタ7と、CPU1、2及び3に共有され、RAM4や入出力ポート5から送出される信号をCPU1、2又は3に入力信号として伝送すると共に、CPU1、2又は3からの出力信号をRAM4や入出力ポート5に伝送するための共有バス8と、調停回路11、12及び13と、レジスタ21、22及び23と、から概略構成されている。RAM4と入出力ポート5は、CPU1、2、3で共有されるCPU1、2又は3の周辺装置として機能する。
【0030】
システムクロック発生回路6が発生するシステムクロックは、調停回路11、12及び13の夫々に与えられていると共に、RAM4及び入出力ポート5の夫々の動作クロックとしてRAM4及び入出力ポート5の夫々にそのまま与えられている。カウンタ7が出力するカウント値は調停回路11、12及び13の夫々に与えられている。
【0031】
レジスタ21は、CPU1用の駆動番号を記憶しており、その駆動番号を調停回路11に与えている。同様に、レジスタ22、23は、夫々CPU2用の駆動番号、CPU3用の駆動番号を記憶しており、それらの駆動番号は、夫々調停回路12、13に与えられている。今、CPU1用の駆動番号、CPU2用の駆動番号、CPU3用の駆動番号は、夫々1、2、3であるとする。
【0032】
調停回路11は、カウンタ7から供給されるカウント値とレジスタ21から供給されるCPU1用の駆動番号とに基づいてシステムクロックの一部を抜き取り、そのシステムクロックの一部を動作クロック51としてCPU1に供給する。同様に、調停回路12はカウント値とCPU2用の駆動番号とに基づいてシステムクロックの一部を抜き取り、そのシステムクロックの一部を動作クロック52としてCPU2に供給し、調停回路13はカウント値とCPU3用の駆動番号とに基づいてシステムクロックの一部を抜き取り、そのシステムクロックの一部を動作クロック53としてCPU3に供給する。
【0033】
図2を用いて各動作クロックの様子を説明する。図2は、上から、システムクロックの電圧波形、カウンタ7が出力するカウント値、CPU1の動作クロック51の電圧波形、CPU2の動作クロック52の電圧波形、CPU3の動作クロック53の電圧波形を示している。
【0034】
図2に示す如く、カウント値はシステムクロックの電圧の立ち上がり(アップエッジ)に同期してインクリメントされ(1だけ増加し)、カウント値が3の時、システムクロックの電圧が立ち上がると、カウント値は0に戻る。つまり、カウンタ7はサーキュラタイプのカウンタであって、カウント値は、システムクロックに同期して0→1→2→3→0→1→2→3→0・・・、のようにループ状に変化する。
【0035】
そして、システムクロックを構成するパルスの内、カウント値が1の時におけるパルスがCPU1の動作クロック51となる。つまり、システムクロックを構成するパルスの内、カウント値がCPU1用の駆動番号である1と一致する時におけるパルスがCPU1の動作クロック51となる。
【0036】
同様に、システムクロックを構成するパルスの内、カウント値がCPU2用の駆動番号である2と一致する時におけるパルスがCPU2の動作クロック52となり、カウント値がCPU3用の駆動番号である3と一致する時におけるパルスがCPU3の動作クロック53となる。
【0037】
また、図1において、41、42、43は、夫々CPU1、2、3が入出力する信号を伝送するための専用の入出力バスである。RAM4、入出力ポート5の夫々の各入出力端子は、共有バス8に接続されており、CPU1、2、3は、夫々入出力バス41と調停回路11、入出力バス42と調停回路12、入出力バス43と調停回路13を介し、更に共有バス8を介してRAM4、入出力ポート5の夫々とアクセスが可能となっている。
【0038】
CPU1は、調停回路11の機能により、カウント値がCPU1用の駆動番号である1と一致する時に共有バス8の使用権を獲得する一方、カウント値がCPU1用の駆動番号である1と異なる時には共有バス8の使用権を有しないようになっている。ここにおいて、「共有バス8の使用権を獲得する」とは、「共有バス8が伝送する信号を調停回路(CPU1なら調停回路11)及び入出力バス(CPU1なら入出力バス41)を介して入力可能となる」、または「共有バス8に所望の信号を入出力バス(CPU1なら入出力バス41)及び調停回路(CPU1なら調停回路11)を介して出力可能となる」ことを意味し、その入力及び出力の双方が可能になることも含む。
【0039】
同様に、CPU2、CPU3は、夫々調停回路12、13の機能により、カウント値が自身の駆動番号と一致する時に共有バス8の使用権を獲得する一方、カウント値が自身の駆動番号と異なる時には共有バス8の使用権を有しないようになっている。
【0040】
そして、CPU1、2、3の駆動番号の夫々は、互いに異なっており(上述のとおり、CPU1、2、3の駆動番号は、夫々1、2、3)、同一のカウント値に対して2以上のCPUに対応する駆動番号が一致することのないように設定されている。従って、共有バス8の競合が生じることはない。つまり、カウンタ7と、カウント値及びレジスタ21等の記憶内容に従ってバス接続の切り替えやシステムクロックのマスクを行う調停回路11等とによる単純な回路構成により、共有バスの調停機能が実現されている。
【0041】
また、システムクロックの電圧波形の立ち上がりに同期したカウント値のカウント方法を変形すれば、各CPUの稼働率を容易に変化させることが出来る。例えば、CPU1が最大負荷(最も大きなサイズのRAM領域を使用する状態)になる一方、CPU2及びCPU3が、それほどRAM領域を必要としない場合には、システムクロックの電圧波形の立ち上がりに同期してカウント値が0→1→1→1→1→2→3→0→1→1→1→1→2→3→0・・・と変化するようにカウント値のカウント方法を変形する。これにより、CPU1は、CPU2やCPU3よりも優先的にRAM4を使用することが可能となり、各CPUは必要とするRAM領域を確保することができる。この場合、勿論CPU1はCPU2やCPU3よりも優先的に入出力ポート5を使用することも可能となる。
【0042】
また、システムクロックの電圧波形の立ち上がりに同期してカウント値が0→1→2→3→4→5→6→0→1→2→・・・と、0から6までループ状に変化するようにしておき、レジスタ21に記憶されるCPU1用の駆動番号を1と4に、レジスタ22に記憶されるCPU2用の駆動番号を2と5に、レジスタ23に記憶されるCPU3用の駆動番号を3と6としてもよい。そして、CPU1が最大負荷になる一方、CPU2及びCPU3が、それほどRAM領域を必要としない場合には、図示しない駆動番号変更回路により、レジスタ21、22及び23の記憶内容を変更して、CPU1用の駆動番号を1と2と3と4に、CPU2用の駆動番号を5に、CPU3用の駆動番号を6にする。これによっても、CPU1はCPU2やCPU3よりも優先的にRAM4を使用することが可能となり、各CPUは必要とするRAM領域を確保することができる。この場合、勿論CPU1はCPU2やCPU3よりも優先的に入出力ポート5を使用することも可能となる。
【0043】
上記のように、システムクロックの電圧波形の立ち上がりに同期したカウント値のカウント方法を変形したり、レジスタ21、22及び23の記憶内容を変更したりすることで、各CPUの稼働率を容易に変更することが可能であり、各CPUの稼働状況に応じたRAM領域の配分が可能である。
【0044】
図8や図9に示すシステム(従来例)や共有バス調停システム10のようなシステムを半導体基板上に形成した場合、RAMの面積の大きさは、チップサイズに大きな影響を与えるが、共有バス調停システム10によれば、各CPUの稼働状況に応じたRAM領域の配分が可能となるため、従来例のようにCPU毎に最大負荷時に必要なメモリサイズ(または、最大負荷時に必要なメモリサイズに近いサイズ)を有する専用RAMを設ける必要がない。従って、半導体のチップサイズを小さくすることができる。また、CPU1、2、3は入出力ポート5も共有しており、このこともチップサイズの縮小化に寄与する。
【0045】
また、図9のシステム(従来例)において、RAM121に格納されていないデータは、このRAM121にDMA(ダイレクトメモリアクセス)機能などの転送機能を使ってデータ転送する必要がある(RAM121を用いてCPU間のデータ転送を行う必要がある)。ところが、共有バス調停システム10においては、RAM4がCPU1、2及び3に共有されているため、各CPUがRAM4にアクセスすることによりデータ転送は不要となる。従って、各CPUはウエイト状態を従来例よりも長い時間維持することができ、これにより、システムの低消費電力化が図られる。
【0046】
また、各CPUは、システムクロックを構成するパルスの内、「カウント値が自身の駆動番号と一致する時」におけるパルスを自身の動作クロックとして入力して動作する。そして、各CPUは、「カウント値が自身の駆動番号と一致する時」に共有バス8の使用権を獲得する。従って、各CPUに動作クロックが入力されて動作するタイミングにおいては、各CPUには必ず共有バス8の使用権が与えられることになるので、各CPUは共有バス8をあたかも自身の専用バスのよう用いることができる。
【0047】
つまり、各CPUは、共有バス8を使用するに当たって、従来例のようにアクセス要求信号を送出して共有バス8の使用の可否を問い合わせる必要もないし、他のCPUであるCPU2及びCPU3の動作によって共有バス8の使用の可否が変動することもない(カウント値と自身の駆動番号のみによって共有バス8の使用の可否は決定する)。これにより、CPUの処理の高速化及び簡素化が図られる。
【0048】
また、カウント値が0、2又は3となって、カウント値がCPU1用の駆動番号と一致しない時、調停回路11は共有バス8への電圧の出力を停止している。同様に、カウント値がCPU2用の駆動番号と一致しない時、調停回路12は共有バス8への電圧の出力を停止し、カウント値がCPU3用の駆動番号と一致しない時、調停回路13は共有バス8への電圧の出力を停止する。
【0049】
これは、調停回路11、12、13の夫々に、CPU1用の駆動番号、CPU2用の駆動番号、CPU3用の駆動番号の夫々とカウント値との一致/不一致によって制御されるスリーステートバッファを設けることで実現され、これにより、調停回路11、12、13からの出力信号同士が衝突しないようになっている。
【0050】
この出力信号同士の衝突を防止するために、図1の共有バス調停システム10を図3の共有バス調停システム10aのように変形してもよい。図3において、図1と同一の部分には同一の符号を付しており、その詳細な説明は省略する。調停回路60は、入出力バス41、42、43の夫々と接続されたマルチプレクサ61を備え、マルチプレクサ61は、カウント値が1の時に入出力バス41を共有バス8に接続し、カウント値が2の時に入出力バス42を共有バス8に接続し、カウント値が3の時に入出力バス43を共有バス8に接続する。これにより、スリーステートバッファを用いることなく、出力信号同士の衝突が防止される。
【0051】
尚、調停回路60は、システムクロック及びカウント値、レジスタ21、22、23が夫々記憶するCPU1、2、3用の駆動番号を入力して、図1の調停回路11、12、13と同様に、CPU1、2、3に夫々動作クロック51、52、53を与えている。
【0052】
<<第2実施形態>>
次に、本発明に係る共有バス調停システムの第2実施形態を、図面を参照して説明する。図4は、本発明の第2実施形態に係る共有バス調停システム10bのブロック構成図である。図4において、図1と同一の部分には同一の符号を付し、その詳細な説明を省略する。 図4において、CPU1、2、3と、システムクロック発生回路6と、カウンタ7と、共有バス8と、調停回路11、12、13と、レジスタ21、22、23との関係は、図1におけるものと同様である。
【0053】
図4における共有バス調停システム10bでは、調停回路14及び15、レジスタ24及び25が新たに設けられている。RAM4の入出力信号は専用の入出力バス44及び調停回路14を介して共通バス8に伝送され、入出力ポート5の入出力信号は専用の入出力バス45及び調停回路15を介して共有バス8に伝送される。
【0054】
システムクロック発生回路6が発生するシステムクロックは、調停回路14及び15の夫々に与えられている。カウンタ7が出力するカウント値も調停回路14及び15の夫々に与えられている。
【0055】
レジスタ24は、RAM4用の駆動番号を記憶しており、その駆動番号を調停回路14に与えている。同様に、レジスタ25は、入出力ポート5用の駆動番号を記憶しており、その駆動番号を調停回路15に与えている。今、CPU1用の駆動番号、CPU2用の駆動番号、CPU3用の駆動番号は、第1実施形態と同様に夫々1、2、3であり、RAM4用の駆動番号、入出力ポート5用の駆動番号は、夫々1、2であるとする。
【0056】
調停回路14は、調停回路11、12及び13と同様に、カウンタ7から供給されるカウント値とレジスタ24から供給されるRAM4用の駆動番号とに基づいてシステムクロックの一部を抜き取り、そのシステムクロックの一部を動作クロック54としてRAM4に供給する。同様に、調停回路15は、カウント値と入出力ポート5用の駆動番号とに基づいてシステムクロックの一部を抜き取り、そのシステムクロックの一部を動作クロック55として入出力ポート5に供給する。
【0057】
図5を用いて各動作クロックの様子を説明する。図5は、上から、システムクロックの電圧波形、カウンタ7が出力するカウント値、CPU1の動作クロック51の電圧波形、CPU2の動作クロック52の電圧波形、CPU3の動作クロック53の電圧波形、RAM4の動作クロック54の電圧波形、入出力ポート5の動作クロック55の電圧波形を示している。
【0058】
システムクロック及びカウント値との関係における動作クロック51、52、53の電圧波形の夫々は、図2におけるものと同様である。そして、CPU1用の駆動番号とRAM4用の駆動番号は同じであり、CPU2用の駆動番号と入出力ポート5用の駆動番号は同じであるので、図5に示す如く、CPU1の動作クロック51の電圧波形とRAM4の動作クロック54の電圧波形は同じであり、CPU2の動作クロック52の電圧波形と入出力ポート5の動作クロック55の電圧波形は同じである。
【0059】
RAM4は、調停回路14の機能により、カウント値がRAM4用の駆動番号である1と一致する時に共有バス8の使用権を獲得する一方、カウント値がRAM4用の駆動番号である1と異なる時には共有バス8の使用権を有しない。同様に、入出力ポート5は、調停回路15の機能により、カウント値が自身の駆動番号と一致する時に共有バス8の使用権を獲得する一方、カウント値が自身の駆動番号と異なる時には共有バス8の使用権を有しない。
【0060】
(図6、図7;RAM4への書き込み動作例)
図4のように構成される共有バス調停システム10bにおいて、CPU1がRAM4のアドレス0x10H、0x11H(16進数表示であり、10進数表示では夫々16、17)に、夫々8ビットデータ0x0AH、0x0BH(16進数表示であり、10進数表示では夫々10、11)を書き込む動作について、図6及び図7を用いて説明する。
【0061】
図6は、図4の共有バス調停システム10bを構成するCPU1、CPU2、CPU3、RAM4及び入出力ポート5の内、CPU1及びRAM4の部分を詳細に表した共有バス調停システム10bのブロック構成図である。図6において、図4と同一の部分には同一の符号を付してある。図6においては、図示の煩雑化防止のため、CPU2、CPU3及び入出力ポート5、調停回路12、13及び15、並びにレジスタ22、23及び25の記載を省略している。
【0062】
CPU1専用の入出力バス41は、CPU1専用の専用アドレスバス41a、専用データバス41b及び専用ライト信号線41c、とを含んでいる。RAM4専用の入出力バス44は、RAM4専用の専用アドレスバス44a、専用データバス44b及び専用ライト信号線44c、とを含んでいる。共有バス8は、共有アドレスバス8a、共有データバス8b及び共有ライト信号線8c、とを含んでいる。
【0063】
CPU1専用の専用アドレスバス41a、専用データバス41b、専用ライト信号線41cは、それぞれ調停回路11を介して共有アドレスバス8a、共有データバス8b、共有ライト信号線8cに接続されており、RAM4専用の専用アドレスバス44a、専用データバス44b、専用ライト信号線44cは、それぞれ調停回路14を介して共有アドレスバス8a、共有データバス8b、共有ライト信号線8cに接続されている。
【0064】
図7は、横軸を時間として、上から、システムクロックの電圧波形、カウント値、CPU1の動作クロック51の電圧波形、CPU1専用の専用アドレスバス41aの状態(信号伝送状態)、専用データバス41bの状態、専用ライト信号線41cの状態、共有アドレスバス8aの状態、共有データバス8bの状態、共有ライト信号線8cの状態、RAM4の動作クロック54の電圧波形、RAM4専用の専用アドレスバス44aの状態、専用データバス44bの状態、専用ライト信号線44cの状態、RAM4のアドレス0x010Hの記憶内容、RAM4のアドレス0x011Hの記憶内容、を表している。
【0065】
図7において、システムクロックの電圧波形との関係における、カウント値、CPU1の動作クロック51の電圧波形及びRAM4の動作クロック54の電圧波形は、図5と同様である。
【0066】
タイミングt1において、システムクロックの電圧波形が立ち上がり、カウント値が0から1にインクリメントされると、CPU1は動作クロック51が入力されて動作し、RAM4のアドレス0x10Hにデータ0x0AHを書き込むために、専用アドレスバス41aに0x10Hのアドレス信号を、専用データバス41bに0x0AHのデータ信号を送出するとともに、専用ライト信号線41cへの信号をハイレベル(高電位)からローレベル(低電位)に切り替える。
【0067】
これらの専用アドレスバス41aに送出された0x10Hのアドレス信号、専用データバス41bに送出された0x0AHのデータ信号、専用ライト信号線41cに切り替えて送出されたローレベルの信号は、タイミングt1からカウント値が次回に2になるタイミングt2までの間、夫々そのまま共有アドレスバス8a、共有データバス8b、共有ライト信号線8cに伝えられると共に、夫々共有アドレスバス8a、共有データバス8b、共有ライト信号線8cを介した上で更に調停回路14を介して、夫々そのままRAM4の専用アドレスバス44a、専用データバス44b、専用ライト信号線44cに伝送される。
【0068】
一方、カウント値が2→3→0と変化するタイミングt2からt3の間においては、専用アドレスバス41aに送出された0x10Hのアドレス信号、専用データバス41bに送出された0x0AHのデータ信号、専用ライト信号線41cに送出されたローレベルの信号は、夫々共有アドレスバス8a、共有データバス8b、共有ライト信号線8cに伝送されない。
【0069】
同様に、タイミングt3において、システムクロックの電圧波形が立ち上がり、カウント値が0から1にインクリメントされると、CPU1は動作クロック51が入力されて動作し、RAM4のアドレス0x11Hにデータ0x0BHを書き込むために、専用アドレスバス41aに0x11Hのアドレス信号を、専用データバス41bに0x0BHのデータ信号を送出するとともに、専用ライト信号線41cへの信号をローレベルに維持する。
【0070】
これらの専用アドレスバス41aに送出された0x11Hのアドレス信号、専用データバス41bに送出された0x0BHのデータ信号、専用ライト信号線41cに送出されたローレベルの信号は、タイミングt3からカウント値が次回に2になるタイミングt4までの間、夫々そのまま共有アドレスバス8a、共有データバス8b、共有ライト信号線8cに伝えられると共に、夫々共有アドレスバス8a、共有データバス8b、共有ライト信号線8cを介した上で更に調停回路14を介して、夫々そのままRAM4の専用アドレスバス44a、専用データバス44b、専用ライト信号線44cに伝送される。
【0071】
一方、タイミングt4以降で次回にカウント値が1になるまでの間は、アドレスバス41aに送出された0x11Hのアドレス信号、専用データバス41bに送出された0x0BHのデータ信号、専用ライト信号線41cに送出されたローレベルの信号は、夫々共有アドレスバス8a、共有データバス8b、共有ライト信号線8cに伝送されない。
【0072】
そして、タイミングt1―t2間のRAM4の動作クロック54の立下りのタイミングにおいて、RAM4は、RAM4の専用アドレスバス44aに伝送されているアドレス信号0x10H、専用データバス44bに伝送されているデータ信号0x0AH、及び専用ライト信号線44cに伝送されているローレベルの信号を受けて、データ0x0AHを自身のアドレス0x10Hに書き込む。
【0073】
同様に、タイミングt3―t4間のRAM4の動作クロック54の立下りのタイミングにおいて、RAM4は、RAM4の専用アドレスバス44aに伝送されているアドレス信号0x11H、専用データバス44bに伝送されているデータ信号0x0BH、及び専用ライト信号線44cに伝送されているローレベルの信号を受けて、データ0x0BHを自身のアドレス0x11Hに書き込む。
【0074】
上記のように、CPU1は、カウント値が自身の駆動番号である1と一致する時(タイミングt1−t2間、及びt3−t4間)に、共有アドレスバス8a、共有データバス8b、共有ライト信号線8cを含む共有バス8の使用権を獲得すると共に、システムクロックのパルスの内、カウント値が自身の駆動番号である1と一致する時におけるパルスを自身への動作クロック51として入力し、その動作クロック51に同期して動作する。
【0075】
そして、RAM4も、カウント値が自身の駆動番号である1と一致する時に、共有アドレスバス8a、共有データバス8b、共有ライト信号線8cを含む共有バス8の使用権を獲得すると共に、システムクロックのパルスの内、カウント値が自身の駆動番号である1と一致する時におけるパルスを自身への動作クロック54として入力し、その動作クロック54に同期して動作する。これにより、RAM4は、CPU1用の設けられたRAMとして機能することになる。尚、CPU2及びCPU3は、RAM4を自身のRAMとして用いることができない。
【0076】
同様に、CPU2用の駆動番号と入出力ポート5用の駆動番号は同じ「2」であるので、CPU2、入出力ポート5は、カウント値が2である時に夫々共有バス8の使用権を獲得すると共に、同じタイミングで電圧波形が立ち上がり、且つ立ち下がる動作クロック52、55を入力して動作する。これにより、入出力ポート5は、CPU2用の設けられた入出力ポートとして機能することになる。尚、CPU1及びCPU3は、入出力ポート5を自身の入出力ポートとして用いることができない。
【0077】
そして、例えば、RAM4をCPU3のRAMとして機能させたい場合は、図示しない駆動番号変更回路により、CPU1用の駆動番号、CPU3用の駆動番号が夫々3、1となるように、レジスタ21、23の記憶内容を書き換えるか、又はRAM4用の駆動番号が3になるようにレジスタ24の記憶内容を書き換えるだけでよい。例えば、入出力ポート5をCPU1又はCPU3の入出力ポートとして機能させたい場合も同様である。つまり、RAM4や入出力ポート5の周辺装置とCPU1、2又は3の組み合わせを自由に且つ簡単に変更することができる。
【0078】
また、図7におけるタイミングt4の後、CPU1用の駆動番号、CPU3用の駆動番号が夫々3、1となるように、レジスタ21、23の記憶内容を書き換えるか、又はRAM4用の駆動番号が3になるようにレジスタ24の記憶内容を書き換え、更にその後、CPU3がRAM4のアドレス0x10H及び0x11Hの記憶内容を読み出せば、CPU1からCPU3への、2つのデータ(0x0AHと0x0BH)の転送が実現されることになる。つまり、CPUの駆動番号、またはRAMの駆動番号を変更することにより、CPU間のデータ転送が実現される。
【0079】
(駆動番号と駆動条件)
また、第1実施形態、第2実施形態におけるレジスタ21にCPU1用の駆動番号でなく、CPU1用の駆動条件を記憶させるように変形してもよい。例えば、レジスタ21に「カウント値が1以下」という内容を示すCPU1用の駆動条件を記憶させる。この駆動条件は調停回路11に与えられる。そして、調停回路11は、カウント値がCPU1用の駆動条件を満たす時、即ち、カウント値が0又は1の時にはCPU1に共有バス8の使用権を獲得させる一方、カウント値がCPU1用の駆動条件を満たさない時にはCPU1に共有バス8の使用権を与えないようにする。
【0080】
このように変形することは、上述してきた第1実施形態及び第2実施形態における「駆動番号」を「駆動条件」と読みかえ、「カウント値と駆動番号が一致する」を意味する内容を「カウント値が駆動条件を満足する」を意味する内容で読みかえることに相当する。
【0081】
そして、同様にレジスタ22、23、24、25に、夫々CPU2用の駆動条件、CPU3用の駆動条件、RAM4用の駆動条件、入出力ポート5用の駆動条件を記憶させるように変形してもよい。尚、この場合も、共有バス8の競合が生じることがないように、即ち、同一のカウント値に対して2以上のCPUに対応する駆動条件が同時に満足することがないように、CPU1、2、3の駆動条件の夫々を定める。例えば、CPU1用の駆動条件、CPU2用の駆動条件、CPU3用の駆動条件を、夫々「カウント値が1以下」、「カウント値が2と一致」、「カウント値が3と一致」と定める。
【0082】
また、例えば、カウント値が図2や図5に示す如く0から3までの数値にしかならない場合において、CPU1用の駆動条件、CPU2用の駆動条件、CPU3用の駆動条件を、夫々「カウント値が1以下」、「カウント値が2または3」、「カウント値が255と一致」と定めることにより、CPU3を全く動作させないといったことも可能である。
【0083】
<<その他、変形等>>
また、本発明は、上述の実施形態におけるようにCPUが3つの場合のみに限定されるものではなく、共有バスが2以上のCPUに共有されるシステムにおいて広く適用可能であるが、共有バスを共有するCPUの数が変化(特に増加)した場合でも、カウンタ7のビット数を変更し、カウント値をデコードするデコータ(調停回路11等に含まれる)を変更する程度の小規模な変更で対応が可能である。即ち、共有バスを共有するCPUの数の変化に対して容易な設計変更で対応が可能である。
【0084】
また、符号1、2、3で示されるCPUは、MPU(Micro Processing Unit)やDSP(Digital Signal Processor)等に置換されてもよく、共有バス調停システム10等が行うタスクに応じて、夫々に所定の演算処理(プログラムの実行、データ転送等)を行う演算回路であれば何でもよい。
【0085】
上記実施形態においては、CPU1、2、3に共有されるCPU1、2又は3の周辺装置として、RAM4と入出力ポート5を例示した。しかしながら、CPU1、2、3に共有される周辺装置はRAMや入出力ポートに限定されるものではなく、共有バス8を介してCPU1、2若しくは3が出力するデータを入力可能であるか、及び/又はCPU1、2若しくは3にデータを出力可能な周辺装置であれば何でもよい。例えば、ROM(Read Only Memory)でもいいし、DSPも周辺装置となりうる。
【0086】
また、カウント値は、システムクロックの立ち下がりに同期して変化(インクリメント)するように変形してもよい。
【産業上の利用可能性】
【0087】
本発明は、SOC(System On a Chip)等の半導体装置に好適である。また、携帯電話機及びPHS(Personal Handyphone System)等の低消費電力化が望まれる移動体通信機、並びにパーソナルコンピュータに代表される情報処理機器等、様々な電気機器に本発明は好適である。
【図面の簡単な説明】
【0088】
【図1】本発明の第1実施形態に係る共有バス調停システムのブロック構成図である。
【図2】図1におけるカウンタ出力と各部の電圧波形との関係を説明するための図である。
【図3】図1の変形例を示すブロック構成図である。
【図4】本発明の第2実施形態に係る共有バス調停システムのブロック構成図である。
【図5】図4におけるカウンタ出力と各部の電圧波形との関係を説明するための図である。
【図6】図4の一部を詳細に示したブロック構成図である。
【図7】図1の共有バス調停システムの動作を説明するための図である。
【図8】従来のマルチCPUシステムの構成を示す図である。
【図9】従来の他のマルチCPUシステムの構成を示す図である。
【符号の説明】
【0089】
1、2、3 CPU
4 RAM
5 入出力ポート
6 クロック発生回路
7 カウンタ
8 共有バス
10、10a、10b 共有バス調停システム
11、12、13、14、15、60 調停回路
21、22、23、24、25 レジスタ
41、42、43、44、44 入出力バス
51、52、53、54、55 動作クロック
61 マルチプレクサ
【技術分野】
【0001】
本発明は、複数のCPU(Central Processing Unit;中央処理装置)等に共有される共有バスの調停機能を備えた共有バス調停システムに関する。
【背景技術】
【0002】
複数のCPUを備えたシステム(マルチCPUシステム)の従来例として、図8に示すようなものがある。図8のシステムは、2つのCPU101及び102、CPU101専用のRAM(Random Access Memory)103、入出力ポート104及び専用バス108、並びにCPU102専用のRAM105、入出力ポート106及び専用バス109、を備えており、CPU101とCPU102は、デュアルポートメモリ107でインターフェースされている。
【0003】
通常、CPU101とCPU102との一方にでもメモリ不足が発生することがないように、RAM103は、CPU101が最大負荷(最も大きなサイズのRAM領域を使用する状態)になった時のメモリサイズを有する必要があり、RAM104は、CPU102が最大負荷になった時のメモリサイズを有する必要がある。
【0004】
また、CPU101とCPU102の双方に入出力ポートが必要となる場合は、図8に示す如く、各CPUに専用の入出力ポート(入出力ポート104、105)を設ける必要がある。このため、システム全体のチップサイズが大きくなり、チップコストの増大や歩留まりの低下を招いてしまう。
【0005】
そこで、図9に示すような調停回路を備えたシステムが実用化されている(例えば、下記特許文献1参照)。CPU111とCPU112は、RAM121や入出力ポート122を共有して使用する。例えば、CPU111、112がRAM121へのアクセス(データの読出し及び/又は書込み)を希望する場合の動作について簡単に説明する。まず、CPU111、112の夫々は、アクセス要求信号131、132を調停回路117に送出する。
【0006】
調停回路117は、アクセス要求信号131、132が競合しない時には、アクセス要求信号を発したCPU(CPU111又は112)にアクセス許可の応答信号133、134を与えて共有バス120の使用権を与える。共有バス120の使用権を獲得したCPU111又は112は、専用バス118又は専用バス119と共有バス120を介してRAM121にアクセスを行う。
【0007】
しかし、アクセス要求信号131、132が競合した時には、調停回路117は予め定められた優先順位に従ってCPU111又は112に共有バス120の使用権を与える。使用権を得たCPU111又は112は、アクセス要求信号が競合しない時と同様の動作を行うが、使用権を獲得できなかったCPU111又は112は、ウエイト要求の応答信号133、134によってウエイト状態となり、使用権を獲得できるまでデータ転送のプログラムの実行は中断される。
【0008】
尚、図9のシステムにおいても、CPU111専用のRAM113、入出力ポート114及び専用バス118と、CPU112専用のRAM115、入出力ポート116及び専用バス119と、が設けられている。
【0009】
【特許文献1】特公平06−028052号公報
【発明の開示】
【発明が解決しようとする課題】
【0010】
上記の図9の動作例は、比較的単純な動作例であるが、調停回路117は実際、各CPUからのアクセス要求信号の有無、使用権を与える優先順位、共有バス120の使用状態だけでなく、システム全体のステートが現在どのステートにあるかを参照しつつ応答信号133、134の内容を決定するため、複数の条件に応じた応答信号の生成やバスの制御が必要となり、回路は複雑且つ大規模なものとなっている。
【0011】
そして、共有バス120を共有するCPUの数が増えると、専用バスと共有バスとの接続の切り替えが多くなる上、アクセス要求信号の受信回路と応答信号を生成する回路は極めて複雑且つ大規模になるし、調停回路117に大規模な変更を加える必要がありシステムの変更のための設計時間及び設計コストが極めて大きい。
【0012】
また、CPU111、112がRAM121にアクセスを希望しても拒否されることを考慮すると、結局、CPU111の最大負荷時に必要なメモリサイズに近いサイズを有するRAM113をCPU111専用に設け、CPU112の最大負荷時に必要なメモリサイズに近いサイズを有するRAM115をCPU112専用に設ける必要がある。このため、図9のシステムにおいても、チップサイズの軽減効果は十分とはいえない。同様に、入出力ポート122にアクセスしたいタイミングに、必ずしも共有バス120の使用権が得られるとは限らないため、別途CPU111専用の入出力ポート114や、CPU112専用の入出力ポート116を設ける必要があり、このこともチップサイズを小さくすることを妨げる。
【0013】
本発明は、上記の点に鑑み、小規模な回路構成で共有バスの調停を実現すると共に、チップサイズの縮小化に寄与し、更に共有バスを共有するCPU等の数の変更に対して簡単に対応できる共有バス調停システムを提供することを目的とする。
【課題を解決するための手段】
【0014】
上記目的を達成するために本発明に係る共有バス調停システムは、システムクロックを発生するシステムクロック発生手段と、所定の演算処理を行う複数の演算手段と、前記複数の演算手段の夫々の駆動条件を記憶する第1のレジスタと、前記複数の演算手段に共有され、前記複数の演算手段の夫々の入出力信号を伝達可能な共有バスと、前記システムクロックに同期してカウント値を更新するカウンタと、を備え、各演算手段は、前記カウント値が自身の駆動条件を満たす時に前記共有バスの使用権を獲得し、前記駆動条件の夫々は、同一のカウント値に対して2以上の演算手段の駆動条件が同時に満足することがないように定められている。
【0015】
これにより、共有バスの競合は生じない。つまり、比較的小規模の回路構成にて実装できるカウンタの機能を応用することにより共有バスの調停機能が実現されており、従来例のような複雑な調停回路を設ける必要がない。
【0016】
また、カウント値のカウント方法を変形したり、第1のレジスタの記憶内容を変更したりすることで、各演算手段の稼働率を変更することが可能となる。そうすると、各演算手段に前記共有バスを介して共有される周辺装置としてRAM等のメモリを設けた場合、各演算手段の稼動状況に応じたメモリ領域の配分が可能となる。これにより、図8や図9に示される従来例のように、演算手段(従来例のCPUに相当)毎に最大負荷時に必要なメモリサイズ(又は最大負荷時に必要なメモリサイズに近いサイズ)を有する専用のメモリ設ける必要はなくなる。このことは、上記共有バス調停システムを半導体基板上に形成した場合、チップサイズの縮小化に寄与する。
【0017】
また、前記共有バスに各演算手段の周辺装置としてのRAM等のメモリを接続した場合、そのメモリは各演算手段に共有されることになるため、各演算手段はそのメモリにアクセスすることにより演算手段間のデータ転送は不要となる。このため、各演算手段はウエイト状態を従来例よりも長い時間維持することができ、システムの低消費電力化が図られる。
【0018】
また、上記のように構成すれば、前記共有バスを共有する前記演算手段が変化した場合でも、前記カウンタのビット数を変更し、前記カウント値をデコードするデコータを変更する等の程度の小規模な変更で対応が可能である。即ち、共有バスを共有する演算手段の数の変化に対して容易な設計変更で対応が可能である。
【0019】
また、例えば、各演算手段は、前記システムクロックを構成するパルスの内、前記カウント値が自身の駆動条件を満たす時におけるパルスを、自身への動作クロックとして入力するとよい。
【0020】
各演算手段は、前記システムクロックを構成するパルスの内、前記カウント値が自身の駆動条件を満たす時におけるパルスを自身への動作クロックとして入力して動作する。そして、各演算手段は、前記カウント値が自身の駆動条件を満たす時に前記共有バスの使用権を獲得する。従って、各演算手段に動作クロックが入力されて動作するタイミングにおいては、各演算手段には必ず共有バスの使用権が与えられることになるので、各演算手段は共有バスをあたかも自身の専用バスのよう用いることができる。
【0021】
つまり、各演算手段は、共有バスを使用するに当たって、従来例のようにアクセス要求信号を送出して共有バスの使用の可否を問い合わせる必要もないし、他の演算手段の動作によって共有バスの使用の可否が変動することもない(カウント値と自身の駆動条件のみによって共有バスの使用の可否は決定する)。これにより、演算手段の処理の高速化及び簡素化が図られる。
【0022】
また、具体的な一例として、前記駆動条件は駆動番号として与えられており、前記カウント値が自身の駆動条件を満たす時とは、前記カウント値が前記駆動番号に一致する時に相当する。
【0023】
また、例えば、前記共有バスを介して各演算手段が出力するデータを入力可能であるか、または各演算手段にデータを出力可能な周辺装置と、前記周辺装置の駆動条件を記憶する第2のレジスタと、を更に備え、前記周辺装置は、前記システムクロックを構成するパルスの内、前記カウント値が自身の駆動条件を満たす時におけるパルスを自身への動作クロックとして入力するとともに、前記カウント値が自身の駆動条件を満たす時に前記共有バスの使用権を獲得するようにするとよい。
【0024】
例えば、複数の演算手段が第1演算手段と第2演算手段とから成るとし、第1演算手段の駆動条件と前記周辺装置の駆動条件とが一致するようにしておけば、前記周辺装置は第1演算手段に用いられる周辺装置として動作することになる。そして、前記第1のレジスタの記憶内容を書き換えて第1演算手段及び第2演算手段の駆動条件を変化させることにより、または前記第2のレジスタの記憶内容を書き換えて前記周辺装置の駆動条件を変化させることにより、前記周辺装置を第2演算手段に用いられる周辺装置として動作させることもできる。
【0025】
つまり、前記複数の演算手段の駆動条件の夫々、及び/または前記周辺装置の駆動条件を可変としておくとよい。即ち、前記複数の演算手段の駆動条件の夫々を可変とするか、前記周辺装置の駆動条件を可変とするか、又は前記複数の演算手段の駆動条件の夫々及び前記周辺装置の駆動条件を可変とするとよい。
【0026】
これにより、前記周辺装置と各演算手段との組み合わせを自由に且つ簡単に変更することができる。
【発明の効果】
【0027】
上述した通り、本発明に係る時定数自動調整回路によれば、小規模な回路構成で共有バスの調停を実現すると共に、チップサイズの縮小化に寄与することができる。更に共有バスを共有するCPU等の数の変更に対して簡単に対応できる。
【発明を実施するための最良の形態】
【0028】
<<第1実施形態>>
以下、本発明に係る共有バス調停システムの第1実施形態を、図面を参照して説明する。図1は、本発明の第1実施形態に係る共有バス調停システム10のブロック構成図である。
【0029】
共有バス調停システム10は、共有バス調停システム10が行うタスクに応じて夫々に所定の演算処理(プログラムの実行、データ転送等)を行うCPU1、2及び3(演算手段)と、半導体メモリから成るRAM4と、外部からのデータを入力して、そのデータをCPU1、2又は3に出力(伝送)可能であると共に、CPU1、2又は3が出力するデータを入力して、外部にそのデータを出力することが可能な入出力ポート5と、システムクロックを発生するシステムクロック発生回路(システムクロック発生手段)6と、そのシステムクロックを入力し、システムクロックに同期してカウント値を更新するカウンタ7と、CPU1、2及び3に共有され、RAM4や入出力ポート5から送出される信号をCPU1、2又は3に入力信号として伝送すると共に、CPU1、2又は3からの出力信号をRAM4や入出力ポート5に伝送するための共有バス8と、調停回路11、12及び13と、レジスタ21、22及び23と、から概略構成されている。RAM4と入出力ポート5は、CPU1、2、3で共有されるCPU1、2又は3の周辺装置として機能する。
【0030】
システムクロック発生回路6が発生するシステムクロックは、調停回路11、12及び13の夫々に与えられていると共に、RAM4及び入出力ポート5の夫々の動作クロックとしてRAM4及び入出力ポート5の夫々にそのまま与えられている。カウンタ7が出力するカウント値は調停回路11、12及び13の夫々に与えられている。
【0031】
レジスタ21は、CPU1用の駆動番号を記憶しており、その駆動番号を調停回路11に与えている。同様に、レジスタ22、23は、夫々CPU2用の駆動番号、CPU3用の駆動番号を記憶しており、それらの駆動番号は、夫々調停回路12、13に与えられている。今、CPU1用の駆動番号、CPU2用の駆動番号、CPU3用の駆動番号は、夫々1、2、3であるとする。
【0032】
調停回路11は、カウンタ7から供給されるカウント値とレジスタ21から供給されるCPU1用の駆動番号とに基づいてシステムクロックの一部を抜き取り、そのシステムクロックの一部を動作クロック51としてCPU1に供給する。同様に、調停回路12はカウント値とCPU2用の駆動番号とに基づいてシステムクロックの一部を抜き取り、そのシステムクロックの一部を動作クロック52としてCPU2に供給し、調停回路13はカウント値とCPU3用の駆動番号とに基づいてシステムクロックの一部を抜き取り、そのシステムクロックの一部を動作クロック53としてCPU3に供給する。
【0033】
図2を用いて各動作クロックの様子を説明する。図2は、上から、システムクロックの電圧波形、カウンタ7が出力するカウント値、CPU1の動作クロック51の電圧波形、CPU2の動作クロック52の電圧波形、CPU3の動作クロック53の電圧波形を示している。
【0034】
図2に示す如く、カウント値はシステムクロックの電圧の立ち上がり(アップエッジ)に同期してインクリメントされ(1だけ増加し)、カウント値が3の時、システムクロックの電圧が立ち上がると、カウント値は0に戻る。つまり、カウンタ7はサーキュラタイプのカウンタであって、カウント値は、システムクロックに同期して0→1→2→3→0→1→2→3→0・・・、のようにループ状に変化する。
【0035】
そして、システムクロックを構成するパルスの内、カウント値が1の時におけるパルスがCPU1の動作クロック51となる。つまり、システムクロックを構成するパルスの内、カウント値がCPU1用の駆動番号である1と一致する時におけるパルスがCPU1の動作クロック51となる。
【0036】
同様に、システムクロックを構成するパルスの内、カウント値がCPU2用の駆動番号である2と一致する時におけるパルスがCPU2の動作クロック52となり、カウント値がCPU3用の駆動番号である3と一致する時におけるパルスがCPU3の動作クロック53となる。
【0037】
また、図1において、41、42、43は、夫々CPU1、2、3が入出力する信号を伝送するための専用の入出力バスである。RAM4、入出力ポート5の夫々の各入出力端子は、共有バス8に接続されており、CPU1、2、3は、夫々入出力バス41と調停回路11、入出力バス42と調停回路12、入出力バス43と調停回路13を介し、更に共有バス8を介してRAM4、入出力ポート5の夫々とアクセスが可能となっている。
【0038】
CPU1は、調停回路11の機能により、カウント値がCPU1用の駆動番号である1と一致する時に共有バス8の使用権を獲得する一方、カウント値がCPU1用の駆動番号である1と異なる時には共有バス8の使用権を有しないようになっている。ここにおいて、「共有バス8の使用権を獲得する」とは、「共有バス8が伝送する信号を調停回路(CPU1なら調停回路11)及び入出力バス(CPU1なら入出力バス41)を介して入力可能となる」、または「共有バス8に所望の信号を入出力バス(CPU1なら入出力バス41)及び調停回路(CPU1なら調停回路11)を介して出力可能となる」ことを意味し、その入力及び出力の双方が可能になることも含む。
【0039】
同様に、CPU2、CPU3は、夫々調停回路12、13の機能により、カウント値が自身の駆動番号と一致する時に共有バス8の使用権を獲得する一方、カウント値が自身の駆動番号と異なる時には共有バス8の使用権を有しないようになっている。
【0040】
そして、CPU1、2、3の駆動番号の夫々は、互いに異なっており(上述のとおり、CPU1、2、3の駆動番号は、夫々1、2、3)、同一のカウント値に対して2以上のCPUに対応する駆動番号が一致することのないように設定されている。従って、共有バス8の競合が生じることはない。つまり、カウンタ7と、カウント値及びレジスタ21等の記憶内容に従ってバス接続の切り替えやシステムクロックのマスクを行う調停回路11等とによる単純な回路構成により、共有バスの調停機能が実現されている。
【0041】
また、システムクロックの電圧波形の立ち上がりに同期したカウント値のカウント方法を変形すれば、各CPUの稼働率を容易に変化させることが出来る。例えば、CPU1が最大負荷(最も大きなサイズのRAM領域を使用する状態)になる一方、CPU2及びCPU3が、それほどRAM領域を必要としない場合には、システムクロックの電圧波形の立ち上がりに同期してカウント値が0→1→1→1→1→2→3→0→1→1→1→1→2→3→0・・・と変化するようにカウント値のカウント方法を変形する。これにより、CPU1は、CPU2やCPU3よりも優先的にRAM4を使用することが可能となり、各CPUは必要とするRAM領域を確保することができる。この場合、勿論CPU1はCPU2やCPU3よりも優先的に入出力ポート5を使用することも可能となる。
【0042】
また、システムクロックの電圧波形の立ち上がりに同期してカウント値が0→1→2→3→4→5→6→0→1→2→・・・と、0から6までループ状に変化するようにしておき、レジスタ21に記憶されるCPU1用の駆動番号を1と4に、レジスタ22に記憶されるCPU2用の駆動番号を2と5に、レジスタ23に記憶されるCPU3用の駆動番号を3と6としてもよい。そして、CPU1が最大負荷になる一方、CPU2及びCPU3が、それほどRAM領域を必要としない場合には、図示しない駆動番号変更回路により、レジスタ21、22及び23の記憶内容を変更して、CPU1用の駆動番号を1と2と3と4に、CPU2用の駆動番号を5に、CPU3用の駆動番号を6にする。これによっても、CPU1はCPU2やCPU3よりも優先的にRAM4を使用することが可能となり、各CPUは必要とするRAM領域を確保することができる。この場合、勿論CPU1はCPU2やCPU3よりも優先的に入出力ポート5を使用することも可能となる。
【0043】
上記のように、システムクロックの電圧波形の立ち上がりに同期したカウント値のカウント方法を変形したり、レジスタ21、22及び23の記憶内容を変更したりすることで、各CPUの稼働率を容易に変更することが可能であり、各CPUの稼働状況に応じたRAM領域の配分が可能である。
【0044】
図8や図9に示すシステム(従来例)や共有バス調停システム10のようなシステムを半導体基板上に形成した場合、RAMの面積の大きさは、チップサイズに大きな影響を与えるが、共有バス調停システム10によれば、各CPUの稼働状況に応じたRAM領域の配分が可能となるため、従来例のようにCPU毎に最大負荷時に必要なメモリサイズ(または、最大負荷時に必要なメモリサイズに近いサイズ)を有する専用RAMを設ける必要がない。従って、半導体のチップサイズを小さくすることができる。また、CPU1、2、3は入出力ポート5も共有しており、このこともチップサイズの縮小化に寄与する。
【0045】
また、図9のシステム(従来例)において、RAM121に格納されていないデータは、このRAM121にDMA(ダイレクトメモリアクセス)機能などの転送機能を使ってデータ転送する必要がある(RAM121を用いてCPU間のデータ転送を行う必要がある)。ところが、共有バス調停システム10においては、RAM4がCPU1、2及び3に共有されているため、各CPUがRAM4にアクセスすることによりデータ転送は不要となる。従って、各CPUはウエイト状態を従来例よりも長い時間維持することができ、これにより、システムの低消費電力化が図られる。
【0046】
また、各CPUは、システムクロックを構成するパルスの内、「カウント値が自身の駆動番号と一致する時」におけるパルスを自身の動作クロックとして入力して動作する。そして、各CPUは、「カウント値が自身の駆動番号と一致する時」に共有バス8の使用権を獲得する。従って、各CPUに動作クロックが入力されて動作するタイミングにおいては、各CPUには必ず共有バス8の使用権が与えられることになるので、各CPUは共有バス8をあたかも自身の専用バスのよう用いることができる。
【0047】
つまり、各CPUは、共有バス8を使用するに当たって、従来例のようにアクセス要求信号を送出して共有バス8の使用の可否を問い合わせる必要もないし、他のCPUであるCPU2及びCPU3の動作によって共有バス8の使用の可否が変動することもない(カウント値と自身の駆動番号のみによって共有バス8の使用の可否は決定する)。これにより、CPUの処理の高速化及び簡素化が図られる。
【0048】
また、カウント値が0、2又は3となって、カウント値がCPU1用の駆動番号と一致しない時、調停回路11は共有バス8への電圧の出力を停止している。同様に、カウント値がCPU2用の駆動番号と一致しない時、調停回路12は共有バス8への電圧の出力を停止し、カウント値がCPU3用の駆動番号と一致しない時、調停回路13は共有バス8への電圧の出力を停止する。
【0049】
これは、調停回路11、12、13の夫々に、CPU1用の駆動番号、CPU2用の駆動番号、CPU3用の駆動番号の夫々とカウント値との一致/不一致によって制御されるスリーステートバッファを設けることで実現され、これにより、調停回路11、12、13からの出力信号同士が衝突しないようになっている。
【0050】
この出力信号同士の衝突を防止するために、図1の共有バス調停システム10を図3の共有バス調停システム10aのように変形してもよい。図3において、図1と同一の部分には同一の符号を付しており、その詳細な説明は省略する。調停回路60は、入出力バス41、42、43の夫々と接続されたマルチプレクサ61を備え、マルチプレクサ61は、カウント値が1の時に入出力バス41を共有バス8に接続し、カウント値が2の時に入出力バス42を共有バス8に接続し、カウント値が3の時に入出力バス43を共有バス8に接続する。これにより、スリーステートバッファを用いることなく、出力信号同士の衝突が防止される。
【0051】
尚、調停回路60は、システムクロック及びカウント値、レジスタ21、22、23が夫々記憶するCPU1、2、3用の駆動番号を入力して、図1の調停回路11、12、13と同様に、CPU1、2、3に夫々動作クロック51、52、53を与えている。
【0052】
<<第2実施形態>>
次に、本発明に係る共有バス調停システムの第2実施形態を、図面を参照して説明する。図4は、本発明の第2実施形態に係る共有バス調停システム10bのブロック構成図である。図4において、図1と同一の部分には同一の符号を付し、その詳細な説明を省略する。 図4において、CPU1、2、3と、システムクロック発生回路6と、カウンタ7と、共有バス8と、調停回路11、12、13と、レジスタ21、22、23との関係は、図1におけるものと同様である。
【0053】
図4における共有バス調停システム10bでは、調停回路14及び15、レジスタ24及び25が新たに設けられている。RAM4の入出力信号は専用の入出力バス44及び調停回路14を介して共通バス8に伝送され、入出力ポート5の入出力信号は専用の入出力バス45及び調停回路15を介して共有バス8に伝送される。
【0054】
システムクロック発生回路6が発生するシステムクロックは、調停回路14及び15の夫々に与えられている。カウンタ7が出力するカウント値も調停回路14及び15の夫々に与えられている。
【0055】
レジスタ24は、RAM4用の駆動番号を記憶しており、その駆動番号を調停回路14に与えている。同様に、レジスタ25は、入出力ポート5用の駆動番号を記憶しており、その駆動番号を調停回路15に与えている。今、CPU1用の駆動番号、CPU2用の駆動番号、CPU3用の駆動番号は、第1実施形態と同様に夫々1、2、3であり、RAM4用の駆動番号、入出力ポート5用の駆動番号は、夫々1、2であるとする。
【0056】
調停回路14は、調停回路11、12及び13と同様に、カウンタ7から供給されるカウント値とレジスタ24から供給されるRAM4用の駆動番号とに基づいてシステムクロックの一部を抜き取り、そのシステムクロックの一部を動作クロック54としてRAM4に供給する。同様に、調停回路15は、カウント値と入出力ポート5用の駆動番号とに基づいてシステムクロックの一部を抜き取り、そのシステムクロックの一部を動作クロック55として入出力ポート5に供給する。
【0057】
図5を用いて各動作クロックの様子を説明する。図5は、上から、システムクロックの電圧波形、カウンタ7が出力するカウント値、CPU1の動作クロック51の電圧波形、CPU2の動作クロック52の電圧波形、CPU3の動作クロック53の電圧波形、RAM4の動作クロック54の電圧波形、入出力ポート5の動作クロック55の電圧波形を示している。
【0058】
システムクロック及びカウント値との関係における動作クロック51、52、53の電圧波形の夫々は、図2におけるものと同様である。そして、CPU1用の駆動番号とRAM4用の駆動番号は同じであり、CPU2用の駆動番号と入出力ポート5用の駆動番号は同じであるので、図5に示す如く、CPU1の動作クロック51の電圧波形とRAM4の動作クロック54の電圧波形は同じであり、CPU2の動作クロック52の電圧波形と入出力ポート5の動作クロック55の電圧波形は同じである。
【0059】
RAM4は、調停回路14の機能により、カウント値がRAM4用の駆動番号である1と一致する時に共有バス8の使用権を獲得する一方、カウント値がRAM4用の駆動番号である1と異なる時には共有バス8の使用権を有しない。同様に、入出力ポート5は、調停回路15の機能により、カウント値が自身の駆動番号と一致する時に共有バス8の使用権を獲得する一方、カウント値が自身の駆動番号と異なる時には共有バス8の使用権を有しない。
【0060】
(図6、図7;RAM4への書き込み動作例)
図4のように構成される共有バス調停システム10bにおいて、CPU1がRAM4のアドレス0x10H、0x11H(16進数表示であり、10進数表示では夫々16、17)に、夫々8ビットデータ0x0AH、0x0BH(16進数表示であり、10進数表示では夫々10、11)を書き込む動作について、図6及び図7を用いて説明する。
【0061】
図6は、図4の共有バス調停システム10bを構成するCPU1、CPU2、CPU3、RAM4及び入出力ポート5の内、CPU1及びRAM4の部分を詳細に表した共有バス調停システム10bのブロック構成図である。図6において、図4と同一の部分には同一の符号を付してある。図6においては、図示の煩雑化防止のため、CPU2、CPU3及び入出力ポート5、調停回路12、13及び15、並びにレジスタ22、23及び25の記載を省略している。
【0062】
CPU1専用の入出力バス41は、CPU1専用の専用アドレスバス41a、専用データバス41b及び専用ライト信号線41c、とを含んでいる。RAM4専用の入出力バス44は、RAM4専用の専用アドレスバス44a、専用データバス44b及び専用ライト信号線44c、とを含んでいる。共有バス8は、共有アドレスバス8a、共有データバス8b及び共有ライト信号線8c、とを含んでいる。
【0063】
CPU1専用の専用アドレスバス41a、専用データバス41b、専用ライト信号線41cは、それぞれ調停回路11を介して共有アドレスバス8a、共有データバス8b、共有ライト信号線8cに接続されており、RAM4専用の専用アドレスバス44a、専用データバス44b、専用ライト信号線44cは、それぞれ調停回路14を介して共有アドレスバス8a、共有データバス8b、共有ライト信号線8cに接続されている。
【0064】
図7は、横軸を時間として、上から、システムクロックの電圧波形、カウント値、CPU1の動作クロック51の電圧波形、CPU1専用の専用アドレスバス41aの状態(信号伝送状態)、専用データバス41bの状態、専用ライト信号線41cの状態、共有アドレスバス8aの状態、共有データバス8bの状態、共有ライト信号線8cの状態、RAM4の動作クロック54の電圧波形、RAM4専用の専用アドレスバス44aの状態、専用データバス44bの状態、専用ライト信号線44cの状態、RAM4のアドレス0x010Hの記憶内容、RAM4のアドレス0x011Hの記憶内容、を表している。
【0065】
図7において、システムクロックの電圧波形との関係における、カウント値、CPU1の動作クロック51の電圧波形及びRAM4の動作クロック54の電圧波形は、図5と同様である。
【0066】
タイミングt1において、システムクロックの電圧波形が立ち上がり、カウント値が0から1にインクリメントされると、CPU1は動作クロック51が入力されて動作し、RAM4のアドレス0x10Hにデータ0x0AHを書き込むために、専用アドレスバス41aに0x10Hのアドレス信号を、専用データバス41bに0x0AHのデータ信号を送出するとともに、専用ライト信号線41cへの信号をハイレベル(高電位)からローレベル(低電位)に切り替える。
【0067】
これらの専用アドレスバス41aに送出された0x10Hのアドレス信号、専用データバス41bに送出された0x0AHのデータ信号、専用ライト信号線41cに切り替えて送出されたローレベルの信号は、タイミングt1からカウント値が次回に2になるタイミングt2までの間、夫々そのまま共有アドレスバス8a、共有データバス8b、共有ライト信号線8cに伝えられると共に、夫々共有アドレスバス8a、共有データバス8b、共有ライト信号線8cを介した上で更に調停回路14を介して、夫々そのままRAM4の専用アドレスバス44a、専用データバス44b、専用ライト信号線44cに伝送される。
【0068】
一方、カウント値が2→3→0と変化するタイミングt2からt3の間においては、専用アドレスバス41aに送出された0x10Hのアドレス信号、専用データバス41bに送出された0x0AHのデータ信号、専用ライト信号線41cに送出されたローレベルの信号は、夫々共有アドレスバス8a、共有データバス8b、共有ライト信号線8cに伝送されない。
【0069】
同様に、タイミングt3において、システムクロックの電圧波形が立ち上がり、カウント値が0から1にインクリメントされると、CPU1は動作クロック51が入力されて動作し、RAM4のアドレス0x11Hにデータ0x0BHを書き込むために、専用アドレスバス41aに0x11Hのアドレス信号を、専用データバス41bに0x0BHのデータ信号を送出するとともに、専用ライト信号線41cへの信号をローレベルに維持する。
【0070】
これらの専用アドレスバス41aに送出された0x11Hのアドレス信号、専用データバス41bに送出された0x0BHのデータ信号、専用ライト信号線41cに送出されたローレベルの信号は、タイミングt3からカウント値が次回に2になるタイミングt4までの間、夫々そのまま共有アドレスバス8a、共有データバス8b、共有ライト信号線8cに伝えられると共に、夫々共有アドレスバス8a、共有データバス8b、共有ライト信号線8cを介した上で更に調停回路14を介して、夫々そのままRAM4の専用アドレスバス44a、専用データバス44b、専用ライト信号線44cに伝送される。
【0071】
一方、タイミングt4以降で次回にカウント値が1になるまでの間は、アドレスバス41aに送出された0x11Hのアドレス信号、専用データバス41bに送出された0x0BHのデータ信号、専用ライト信号線41cに送出されたローレベルの信号は、夫々共有アドレスバス8a、共有データバス8b、共有ライト信号線8cに伝送されない。
【0072】
そして、タイミングt1―t2間のRAM4の動作クロック54の立下りのタイミングにおいて、RAM4は、RAM4の専用アドレスバス44aに伝送されているアドレス信号0x10H、専用データバス44bに伝送されているデータ信号0x0AH、及び専用ライト信号線44cに伝送されているローレベルの信号を受けて、データ0x0AHを自身のアドレス0x10Hに書き込む。
【0073】
同様に、タイミングt3―t4間のRAM4の動作クロック54の立下りのタイミングにおいて、RAM4は、RAM4の専用アドレスバス44aに伝送されているアドレス信号0x11H、専用データバス44bに伝送されているデータ信号0x0BH、及び専用ライト信号線44cに伝送されているローレベルの信号を受けて、データ0x0BHを自身のアドレス0x11Hに書き込む。
【0074】
上記のように、CPU1は、カウント値が自身の駆動番号である1と一致する時(タイミングt1−t2間、及びt3−t4間)に、共有アドレスバス8a、共有データバス8b、共有ライト信号線8cを含む共有バス8の使用権を獲得すると共に、システムクロックのパルスの内、カウント値が自身の駆動番号である1と一致する時におけるパルスを自身への動作クロック51として入力し、その動作クロック51に同期して動作する。
【0075】
そして、RAM4も、カウント値が自身の駆動番号である1と一致する時に、共有アドレスバス8a、共有データバス8b、共有ライト信号線8cを含む共有バス8の使用権を獲得すると共に、システムクロックのパルスの内、カウント値が自身の駆動番号である1と一致する時におけるパルスを自身への動作クロック54として入力し、その動作クロック54に同期して動作する。これにより、RAM4は、CPU1用の設けられたRAMとして機能することになる。尚、CPU2及びCPU3は、RAM4を自身のRAMとして用いることができない。
【0076】
同様に、CPU2用の駆動番号と入出力ポート5用の駆動番号は同じ「2」であるので、CPU2、入出力ポート5は、カウント値が2である時に夫々共有バス8の使用権を獲得すると共に、同じタイミングで電圧波形が立ち上がり、且つ立ち下がる動作クロック52、55を入力して動作する。これにより、入出力ポート5は、CPU2用の設けられた入出力ポートとして機能することになる。尚、CPU1及びCPU3は、入出力ポート5を自身の入出力ポートとして用いることができない。
【0077】
そして、例えば、RAM4をCPU3のRAMとして機能させたい場合は、図示しない駆動番号変更回路により、CPU1用の駆動番号、CPU3用の駆動番号が夫々3、1となるように、レジスタ21、23の記憶内容を書き換えるか、又はRAM4用の駆動番号が3になるようにレジスタ24の記憶内容を書き換えるだけでよい。例えば、入出力ポート5をCPU1又はCPU3の入出力ポートとして機能させたい場合も同様である。つまり、RAM4や入出力ポート5の周辺装置とCPU1、2又は3の組み合わせを自由に且つ簡単に変更することができる。
【0078】
また、図7におけるタイミングt4の後、CPU1用の駆動番号、CPU3用の駆動番号が夫々3、1となるように、レジスタ21、23の記憶内容を書き換えるか、又はRAM4用の駆動番号が3になるようにレジスタ24の記憶内容を書き換え、更にその後、CPU3がRAM4のアドレス0x10H及び0x11Hの記憶内容を読み出せば、CPU1からCPU3への、2つのデータ(0x0AHと0x0BH)の転送が実現されることになる。つまり、CPUの駆動番号、またはRAMの駆動番号を変更することにより、CPU間のデータ転送が実現される。
【0079】
(駆動番号と駆動条件)
また、第1実施形態、第2実施形態におけるレジスタ21にCPU1用の駆動番号でなく、CPU1用の駆動条件を記憶させるように変形してもよい。例えば、レジスタ21に「カウント値が1以下」という内容を示すCPU1用の駆動条件を記憶させる。この駆動条件は調停回路11に与えられる。そして、調停回路11は、カウント値がCPU1用の駆動条件を満たす時、即ち、カウント値が0又は1の時にはCPU1に共有バス8の使用権を獲得させる一方、カウント値がCPU1用の駆動条件を満たさない時にはCPU1に共有バス8の使用権を与えないようにする。
【0080】
このように変形することは、上述してきた第1実施形態及び第2実施形態における「駆動番号」を「駆動条件」と読みかえ、「カウント値と駆動番号が一致する」を意味する内容を「カウント値が駆動条件を満足する」を意味する内容で読みかえることに相当する。
【0081】
そして、同様にレジスタ22、23、24、25に、夫々CPU2用の駆動条件、CPU3用の駆動条件、RAM4用の駆動条件、入出力ポート5用の駆動条件を記憶させるように変形してもよい。尚、この場合も、共有バス8の競合が生じることがないように、即ち、同一のカウント値に対して2以上のCPUに対応する駆動条件が同時に満足することがないように、CPU1、2、3の駆動条件の夫々を定める。例えば、CPU1用の駆動条件、CPU2用の駆動条件、CPU3用の駆動条件を、夫々「カウント値が1以下」、「カウント値が2と一致」、「カウント値が3と一致」と定める。
【0082】
また、例えば、カウント値が図2や図5に示す如く0から3までの数値にしかならない場合において、CPU1用の駆動条件、CPU2用の駆動条件、CPU3用の駆動条件を、夫々「カウント値が1以下」、「カウント値が2または3」、「カウント値が255と一致」と定めることにより、CPU3を全く動作させないといったことも可能である。
【0083】
<<その他、変形等>>
また、本発明は、上述の実施形態におけるようにCPUが3つの場合のみに限定されるものではなく、共有バスが2以上のCPUに共有されるシステムにおいて広く適用可能であるが、共有バスを共有するCPUの数が変化(特に増加)した場合でも、カウンタ7のビット数を変更し、カウント値をデコードするデコータ(調停回路11等に含まれる)を変更する程度の小規模な変更で対応が可能である。即ち、共有バスを共有するCPUの数の変化に対して容易な設計変更で対応が可能である。
【0084】
また、符号1、2、3で示されるCPUは、MPU(Micro Processing Unit)やDSP(Digital Signal Processor)等に置換されてもよく、共有バス調停システム10等が行うタスクに応じて、夫々に所定の演算処理(プログラムの実行、データ転送等)を行う演算回路であれば何でもよい。
【0085】
上記実施形態においては、CPU1、2、3に共有されるCPU1、2又は3の周辺装置として、RAM4と入出力ポート5を例示した。しかしながら、CPU1、2、3に共有される周辺装置はRAMや入出力ポートに限定されるものではなく、共有バス8を介してCPU1、2若しくは3が出力するデータを入力可能であるか、及び/又はCPU1、2若しくは3にデータを出力可能な周辺装置であれば何でもよい。例えば、ROM(Read Only Memory)でもいいし、DSPも周辺装置となりうる。
【0086】
また、カウント値は、システムクロックの立ち下がりに同期して変化(インクリメント)するように変形してもよい。
【産業上の利用可能性】
【0087】
本発明は、SOC(System On a Chip)等の半導体装置に好適である。また、携帯電話機及びPHS(Personal Handyphone System)等の低消費電力化が望まれる移動体通信機、並びにパーソナルコンピュータに代表される情報処理機器等、様々な電気機器に本発明は好適である。
【図面の簡単な説明】
【0088】
【図1】本発明の第1実施形態に係る共有バス調停システムのブロック構成図である。
【図2】図1におけるカウンタ出力と各部の電圧波形との関係を説明するための図である。
【図3】図1の変形例を示すブロック構成図である。
【図4】本発明の第2実施形態に係る共有バス調停システムのブロック構成図である。
【図5】図4におけるカウンタ出力と各部の電圧波形との関係を説明するための図である。
【図6】図4の一部を詳細に示したブロック構成図である。
【図7】図1の共有バス調停システムの動作を説明するための図である。
【図8】従来のマルチCPUシステムの構成を示す図である。
【図9】従来の他のマルチCPUシステムの構成を示す図である。
【符号の説明】
【0089】
1、2、3 CPU
4 RAM
5 入出力ポート
6 クロック発生回路
7 カウンタ
8 共有バス
10、10a、10b 共有バス調停システム
11、12、13、14、15、60 調停回路
21、22、23、24、25 レジスタ
41、42、43、44、44 入出力バス
51、52、53、54、55 動作クロック
61 マルチプレクサ
【特許請求の範囲】
【請求項1】
システムクロックを発生するシステムクロック発生手段と、
所定の演算処理を行う複数の演算手段と、
前記複数の演算手段の夫々の駆動条件を記憶する第1のレジスタと、
前記複数の演算手段に共有され、前記複数の演算手段の夫々の入出力信号を伝達可能な共有バスと、
前記システムクロックに同期してカウント値を更新するカウンタと、を備え、
各演算手段は、前記カウント値が自身の駆動条件を満たす時に前記共有バスの使用権を獲得し、
前記駆動条件の夫々は、同一のカウント値に対して2以上の演算手段の駆動条件が同時に満足することがないように定められている
ことを特徴とする共有バス調停システム。
【請求項2】
各演算手段は、前記システムクロックを構成するパルスの内、前記カウント値が自身の駆動条件を満たす時におけるパルスを、自身への動作クロックとして入力する
ことを特徴とする請求項1に記載の共有バス調停システム。
【請求項3】
前記駆動条件は駆動番号として与えられており、前記カウント値が自身の駆動条件を満たす時とは、前記カウント値が前記駆動番号に一致する時に相当する
ことを特徴とする請求項2に記載の共有バス調停システム。
【請求項4】
前記共有バスを介して各演算手段が出力するデータを入力可能であるか、または各演算手段にデータを出力可能な周辺装置と、
前記周辺装置の駆動条件を記憶する第2のレジスタと、を更に備え、
前記周辺装置は、前記システムクロックを構成するパルスの内、前記カウント値が自身の駆動条件を満たす時におけるパルスを自身への動作クロックとして入力するとともに、前記カウント値が自身の駆動条件を満たす時に前記共有バスの使用権を獲得する
ことを特徴とする請求項2に記載の共有バス調停システム。
【請求項5】
前記複数の演算手段の駆動条件の夫々、及び/または前記周辺装置の駆動条件を可変とした
ことを特徴とする請求項4に記載の共有バス調停システム。
【請求項6】
請求項1〜請求項5の何れかに記載された共有バス調停システムを備えたことを特徴とする電気機器。
【請求項1】
システムクロックを発生するシステムクロック発生手段と、
所定の演算処理を行う複数の演算手段と、
前記複数の演算手段の夫々の駆動条件を記憶する第1のレジスタと、
前記複数の演算手段に共有され、前記複数の演算手段の夫々の入出力信号を伝達可能な共有バスと、
前記システムクロックに同期してカウント値を更新するカウンタと、を備え、
各演算手段は、前記カウント値が自身の駆動条件を満たす時に前記共有バスの使用権を獲得し、
前記駆動条件の夫々は、同一のカウント値に対して2以上の演算手段の駆動条件が同時に満足することがないように定められている
ことを特徴とする共有バス調停システム。
【請求項2】
各演算手段は、前記システムクロックを構成するパルスの内、前記カウント値が自身の駆動条件を満たす時におけるパルスを、自身への動作クロックとして入力する
ことを特徴とする請求項1に記載の共有バス調停システム。
【請求項3】
前記駆動条件は駆動番号として与えられており、前記カウント値が自身の駆動条件を満たす時とは、前記カウント値が前記駆動番号に一致する時に相当する
ことを特徴とする請求項2に記載の共有バス調停システム。
【請求項4】
前記共有バスを介して各演算手段が出力するデータを入力可能であるか、または各演算手段にデータを出力可能な周辺装置と、
前記周辺装置の駆動条件を記憶する第2のレジスタと、を更に備え、
前記周辺装置は、前記システムクロックを構成するパルスの内、前記カウント値が自身の駆動条件を満たす時におけるパルスを自身への動作クロックとして入力するとともに、前記カウント値が自身の駆動条件を満たす時に前記共有バスの使用権を獲得する
ことを特徴とする請求項2に記載の共有バス調停システム。
【請求項5】
前記複数の演算手段の駆動条件の夫々、及び/または前記周辺装置の駆動条件を可変とした
ことを特徴とする請求項4に記載の共有バス調停システム。
【請求項6】
請求項1〜請求項5の何れかに記載された共有バス調停システムを備えたことを特徴とする電気機器。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【公開番号】特開2006−31426(P2006−31426A)
【公開日】平成18年2月2日(2006.2.2)
【国際特許分類】
【出願番号】特願2004−209617(P2004−209617)
【出願日】平成16年7月16日(2004.7.16)
【出願人】(000116024)ローム株式会社 (3,539)
【Fターム(参考)】
【公開日】平成18年2月2日(2006.2.2)
【国際特許分類】
【出願日】平成16年7月16日(2004.7.16)
【出願人】(000116024)ローム株式会社 (3,539)
【Fターム(参考)】
[ Back to top ]