(57)【特許請求の範囲】
【請求項１】
第１マスタ回路と、
第２マスタ回路と、
前記第１マスタ回路に割り当てられ、アクセス要求に含まれるマスタ識別子が前記第１のマスタ回路を示すときにのみ前記アクセス要求を受け付ける第１スレーブ回路と、
前記第１マスタ回路と、前記第２マスタ回路と、前記第１スレーブ回路と接続される第１バスと、
前記第１マスタ回路からのアクセス要求を、前記第１バスを介して前記第１スレーブ回路に伝達するように設定されたバスコントローラと、
前記第１マスタ回路が非活性状態にあるときに、前記第２マスタ回路からのアクセス要求に含まれた、前記第２マスタ回路を示すマスタ識別子を、前記第１マスタ回路を示すマスタ識別子に置換することを示す指示を前記バスコントローラに行うシステムコントローラとを有し、
前記バスコントローラは、前記システムコントローラからの前記指示の受信後、前記第２マスタ回路からのアクセス要求に対して、該アクセス要求に含まれた、前記第２マスタ回路を示すマスタ識別子を、前記第１マスタ回路を示すマスタ識別子への置換を行ってから、該アクセス要求を、前記第１バスを介して前記第１スレーブ回路に伝達することを特徴とする半導体集積回路。
【請求項２】
前記システムコントローラは、
前記指示を行うと共に、前記第２マスタ回路を起動させ、
起動した前記第２マスタ回路が非活性状態になったときに、前記置換を停止するよう前記バスコントローラを制御することを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
前記システムコントローラは、前記バスコントローラが有するレジスタの保持値を変更することによって前記指示を行うことを特徴とする請求項１または２に記載の半導体集積回路。
【請求項４】
少なくとも前記第１マスタ回路の動作状態を示す状態値を保持するマスタステータスレジスタをさらに備え、
前記システムコントローラは、前記マスタステータスレジスタの前記状態値が、前記第１マスタ回路が非活性状態であることを示すとき、前記指示を行うことを特徴とする請求項１から３のいずれか１項に記載の半導体集積回路。
【請求項５】
前記第１バスに接続され、前記システムコントローラが接続されるインターフェイス回路を有する第３マスタ回路を更に備え、
前記システムコントローラは、前記バスコントローラへの前記指示を、前記第３マスタ回路に行わせることを特徴とする請求項１から４のいずれか１項に記載の半導体集積回路。
【請求項６】
前記システムコントローラは、外部端子を介して、前記第３マスタ回路の前記インターフェイス回路に接続されることを特徴とする請求項５に記載の半導体集積回路。
【請求項７】
前記第１マスタ回路及び前記第２マスタ回路に接続された第２バスをさらに備えることを特徴とする請求項１に記載の半導体集積回路。
【請求項８】
前記第２マスタ回路及び前記第１スレーブ回路に接続された第３バスをさらに備えることを特徴とする請求項７に記載の半導体集積回路。
【請求項９】
前記システムコントローラは、さらに、少なくとも前記第２バスの設定を制御することを特徴とする請求項７または８に記載の半導体集積回路。
【請求項１０】
前記システムコントローラは、前記第２バスに接続されたモード制御レジスタの保持値の変更に基づいて、前記第２バスの設定を変更することを特徴とする請求項９に記載の半導体集積回路。
【請求項１１】
前記第１マスタ回路及び前記第２マスタ回路は、前記第１バスに接続されるマスタモジュールに組み込まれていることを特徴とする請求項７または８に記載の半導体集積回路。
【請求項１２】
前記第１バスには、第３マスタ回路、及び当該第３マスタ回路に割り当てられた第２スレーブ回路が更に接続され、
前記システムコントローラは、さらに、前記第３マスタ回路の動作状態に応じて、前記第２スレーブ回路を前記マスタモジュールに割り当てることを特徴とする請求項１１に記載の半導体集積回路。
【請求項１３】
第１マスタ回路と、第２マスタ回路と、前記第１マスタ回路に割り当てられ、アクセス要求に含まれるマスタ識別子が前記第１のマスタ回路を示すときにのみ前記アクセス要求を受け付ける第１スレーブ回路と、前記第１マスタ回路からのアクセス要求を前記第１スレーブ回路に伝達するように設定されたバスコントローラとを備えた半導体集積回路の制御方法であって、
前記第１マスタ回路が非活性状態にあるときに、前記第２マスタ回路からのアクセス要求に含まれた、前記第２マスタ回路を示すマスタ識別子を、前記第１マスタ回路を示すマスタ識別子に置換することを示す指示を前記バスコントローラに行い、
前記指示を受信した前記バスコントローラが、前記第２マスタ回路からのアクセス要求に対して、該アクセス要求に含まれた、前記第２マスタ回路を示すマスタ識別子を、前記第１マスタ回路を示すマスタ識別子への置換を行ってから、該アクセス要求を前記第１スレーブ回路に伝達することを特徴とする制御方法。
【請求項１４】
前記指示を行うと共に、前記第２マスタ回路を起動させ、
起動した前記第２マスタ回路が非活性状態になったときに、前記置換を停止するよう前記バスコントローラを制御することを特徴とする請求項１３に記載の制御方法。
【請求項１５】
前記バスコントローラが有するレジスタの保持値を変更することによって前記指示を行うことを特徴とする請求項１３または１４に記載の制御方法。
【請求項１６】
前記半導体集積回路が、少なくとも前記第１マスタ回路の動作状態を示す状態値を保持するマスタステータスレジスタをさらに備え、
前記マスタステータスレジスタの前記状態値が、前記第１マスタ回路が非活性状態であることを示すとき、前記指示を行うことを特徴とする請求項１３から１５のいずれか１項に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路及び半導体集積回路の制御方法に関する。
【背景技術】
【０００２】
近年、半導体集積回路の多機能化、高集積化の進展が著しく、各々異なる機能を担務する複数の機能回路（ＩＰ(Intellectual Property)回路）がモノリシックに集積化されている。
【０００３】
多機能化された半導体集積回路には、通常、複数のマスタ回路、複数のスレーブ回路が搭載される。なお、マスタ回路は、他の回路に所定処理の実行を指示する回路である。マスタ回路は、例えば、ＣＰＵ(Central Processing Unit)、ＤＳＰ(Digital Signal Processor)、その他の信号処理回路（画像処理回路等）である。スレーブ回路は、他からの指令を受けて所定の処理を実行する回路である。スレーブ回路は、例えば、半導体記憶装置（以下、適宜、メモリと呼ぶ）である。
【０００４】
特許文献１乃至４には、マスタ回路、スレーブ回路を含むシステムが開示されている。特許文献１には、複数のプロセッサ同士相互の結合関係の変更を可能とし、ＬＳＩの汎用性を向上させる技術が開示されている。特許文献２には、機能モジュールの使用の有無を表すプロファイルデータに基づいて入出力端子の割当を行う技術が開示されている。特許文献３には、共有メモリにプロセッサごとの個別領域を割り当てる技術が開示されている。特許文献４には、マスタモジュールの障害解析を実行する技術が開示されている。
【特許文献１】特開平６−２７４４５９号公報
【特許文献２】特開２００３−２９６２９４号公報
【特許文献３】特開２００１−１６６９６０号公報
【特許文献４】特開平２−８５９５３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
マスタ回路とスレーブ回路とが搭載された半導体集積回路においては、所定のマスタ回路に所定のスレーブ回路が予め割り当てられることがある。この場合、あるマスタ回路が非活性状態（停止状態又はスリープ状態）のとき、このマスタ回路に割り当てられたスレーブ回路は利用できない状態となる。
【０００６】
複数のマスタ回路、複数のスレーブ回路が搭載される半導体集積回路においては、非活性状態のマスタ回路数が増えるにつれて利用できないスレーブ回路数も増加し、システム資源の利用効率が著しく低下してしまうことが懸念される。このことは、マスタ回路が非活性状態となったとき、そのマスタ回路に割り当てられたスレーブ回路が利用されず、システム資源の利用効率が低下してしまう。
【課題を解決するための手段】
【０００７】
本発明にかかる半導体集積回路は、第１マスタ回路の動作状態に応じて、前記第１マスタ回路に割り当てられた第１スレーブ回路を第２マスタ回路に割り当てる。
【０００８】
このように、第１マスタ回路の動作状態に応じて、第１マスタ回路に割り当てられた第１スレーブ回路を第２マスタ回路に割り当てることによって、第１スレーブ回路を第１マスタ回路のみではなく第２マスタ回路も使用することができ、システム資源の利用効率を向上させることができる。
【０００９】
本発明にかかる半導体集積回路の制御方法は、第１及び第２マスタ回路、及び１つ以上のスレーブ回路を有する半導体集積回路の制御方法であって、前記第１マスタ回路の動作状態が非活性状態であることを検出したとき、前記第１マスタ回路に割り当てられた前記スレーブ回路を第２マスタ回路に割り当てる。
【００１０】
このように、第１マスタ回路の動作状態が非活性状態であるとき、第１マスタ回路に割り当てられた第１スレーブ回路を第２マスタ回路に割り当てることによって、スレーブ回路を第１マスタ回路のみではなく第２マスタ回路も使用することができ、半導体集積回路のシステム資源の利用効率を向上させることができる。
【発明の効果】
【００１１】
マスタ回路、スレーブ回路が搭載される半導体集積回路におけるシステム資源の利用効率を向上させることができる。
【発明を実施するための最良の形態】
【００１２】
以下、図面を参照しつつ、本発明の実施の形態について説明する。なお、各実施の形態は、説明の便宜上、簡略化されている。図面は簡略的なものであるから、図面の記載を根拠として本発明の技術的範囲を狭く解釈してはならない。同一の要素には、同一の符号を付し、重複する説明は省略するものとする。
【００１３】
〔第１の実施形態〕
第１の実施形態について、図１乃至図３に基づいて説明する。図１に、半導体集積回路５０の概略的なブロック図を示す。図２に、回路ブロック間の優劣関係を説明するための説明図である。図３に、半導体集積回路５０の動作を説明するための概略的なタイミングチャートを示す。
【００１４】
図１に示すように、半導体集積回路５０は、マスタ回路１〜５、スレーブ回路６、システムコントローラ７、マスタステータスレジスタ８、バスコントローラ９、バス１０を備える。半導体集積回路５０は、モノリシックな半導体装置である。半導体集積回路５０は、ＳｏＣ(System On Chip)技術に基づいて多機能化されている。
【００１５】
マスタ回路１〜５は、他の回路に所定処理を指令する回路である。マスタ回路は、例えば、ＣＰＵ(Central Processing Unit)、ＤＳＰ(Digital Signal Processor)、その他の信号処理回路（画像処理回路等）である。
【００１６】
マスタ回路１〜５には、予めマスタＩＤ（マスタ識別子）が設定されている。マスタ回路１にはマスタＩＤ＝１、マスタ回路２にはマスタＩＤ＝２、マスタ回路３にはマスタＩＤ＝３、マスタ回路４にはマスタＩＤ＝４、マスタ回路５にはマスタＩＤ＝５が設定されている。マスタ回路１〜５は、バス１０を介して、バスコントローラ９に接続される。
【００１７】
マスタ回路４、５は、マスタ回路１〜３よりも回路規模が小さい小規模なＣＰＵ（小型ＣＰＵ）である。マスタ回路４は、バス１０と接続されるインターフェイス回路（入出力回路）１１を有する。同様に、マスタ回路５は、バス１０と接続されるインターフェイス回路（入出力回路）１２を有する。なお、以下の説明では、マスタ回路４をＣＰＵ１と呼び、マスタ回路５をＣＰＵ２と呼ぶこともある。
【００１８】
スレーブ回路６は、他からの指示を受けて所定処理を実行する回路である。スレーブ回路は、例えばメモリである。スレーブ回路６は、マスタＩＤに基づいて、あるアクセスがどのマスタ回路によるアクセスなのかを判別する。ここでは、スレーブ回路６は、３つの領域に分割されている。すなわち、スレーブ回路６は、第１領域としてのＭ１領域（スレーブ回路）１４、第２領域としてのＭ２領域（スレーブ回路）１５、第３領域としてのＭ３領域（スレーブ回路）１６を有する。Ｍ１領域１４は、マスタ回路１向けに割り当てられた領域である。換言すると、Ｍ１領域１４は、マスタ回路１の専用領域である。スレーブ回路６は、マスタＩＤに基づいて、Ｍ１領域１４に対するアクセスがマスタ回路１からのアクセスであるのかを判断する。すなわち、バス１０を介して伝達されるマスタＩＤがマスタ回路１に予め設定されたマスタＩＤであれば、スレーブ回路６はＭ１領域１４へのアクセスを許容する。また、バス１０を介して伝達されるマスタＩＤがマスタ回路１以外のマスタ回路１に設定された値でなければ、Ｍ１領域１４へのアクセスを拒否する。同様に、Ｍ２領域１５は、マスタ回路２に割り当てられた領域であり、Ｍ３領域１６は、マスタ回路３に割り当てられた領域である。上記説明におけるＭ１領域１４へのアクセス制限の説明は、Ｍ２領域１５及びＭ３領域１６についても同様に当てはまる。Ｍ１領域１４は、スレーブ回路６が分割されて形成されるものではあるが、それ自体、スレーブ回路として機能するものとする。Ｍ２領域１５、Ｍ３領域１６についても同様である。
【００１９】
システムコントローラ７は、半導体集積回路５０のシステム全体を制御するマスタ回路である。すなわち、図２に示すように、システムコントローラ７は、最上位の回路ブロックであって、マスタ回路１〜５を制御する。なお、図２に示すように、マスタ回路１〜５は、中位の回路ブロックであって、スレーブ回路６を制御する。スレーブ回路６は、最下位の回路ブロックであって、マスタ回路１〜５からの指示に基づいて動作する。
【００２０】
システムコントローラ７は、マスタ回路１〜５のそれぞれを制御する。例えば、システムコントローラ７は、マスタ回路１の起動、再起動、マスタ回路１における処理開始、処理停止等を制御するのみならず、他のマスタ回路に対しても並行に指示を行うことができる。
【００２１】
また、システムコントローラ７は、ＣＰＵ１のインターフェイス回路１１に接続される。システムコントローラ７は、インターフェイス回路１１を介してマスタ回路４に各種コマンドを発行したり、マスタ回路４の内部リソースにアクセスしたりすることができる。ＣＰＵ２についてもインターフェイス回路１２を介して同様な操作を行うことができる。
【００２２】
システムコントローラ７は、マスタステータスレジスタ８を参照して、マスタ回路１〜５の各々の動作状態を確認する。システムコントローラ７は、マスタ回路１〜５の各々の動作状態に応じて、バス設定を変更し、あるマスタ回路に割り当てられたスレーブ回路を他のマスタ回路に割り当てる。
【００２３】
例えば、システムコントローラ７は、マスタ回路２が非活性状態のとき、マスタ回路２に割り当てられたＭ２領域１５をＣＰＵ１に割り当てる。これによって、マスタ回路２が非活性状態にあったとしても、Ｍ２領域１５はＣＰＵ１により活用されるため、半導体集積回路５０全体としてのシステム資源の利用効率が向上する。
【００２４】
なお、図１に示すように、システムコントローラ７には予めマスタＩＤとして０が設定されている。システムコントローラ７に設定されたマスタＩＤ＝０は、バス１０を介して、バスコントローラ９に伝達される。
【００２５】
マスタステータスレジスタ８は、複数のビットを有するレジスタである。個々のビットには、マスタ回路夫々の動作状態を示すステータス値（状態値）が保持される。具体的には、マスタステータスレジスタ８のあるビットには、マスタ回路１が活性状態（稼動状態）であるのか、非活性状態（停止状態又はスリープ状態）であるのかを示すステータス値が設定される。例えば、このステータス値が１（Ｈレベル）のとき、マスタ回路１は稼働状態にあり、このステータス値が０（Ｌレベル）のとき、マスタ回路１は停止状態又はスリープ状態のいずれかであることがわかる。
【００２６】
なお、活性化状態（以下、稼動状態とも適宜呼ぶ）とは、マスタ回路から他の回路に何らかの処理を命じる指示が発行され得る状態を意味するものとする。非活性状態とは、スリープ状態のほか、停止状態のようにマスタ回路の機能が実質的に停止している状態も含むものとする。
【００２７】
本実施形態に係るバスコントローラ９は、制御レジスタ１３を有し、制御レジスタ１３に設定された保持値を変更することによりバス設定を変更する。この操作により、スレーブ回路に伝達されるマスタＩＤが変更され、当初の組み合わせ以外のマスタ回路−スレーブ回路間においても信号伝達が可能となる。また、バスコントローラ９は、制御レジスタ１３を有する。制御レジスタ１３は、複数のビットを有するレジスタである。制御レジスタ１３には、マスタ回路−スレーブ回路間の信号伝達の制御方法を示す信号値が設定される。例えば、制御レジスタ１３に所定値が設定されると、バスコントローラ９は、マスタ回路４からのアクセス要求であっても、それがマスタ回路２からのアクセス要求であるとみなしてスレーブ回路で処理されるようにバス設定を変更することができる。
【００２８】
システムコントローラ７は、上述の制御レジスタ１３の保持値の設定を変更する。これにより、あるマスタ回路から発行されたアクセス要求が他のマスタ回路から発行されたアクセス要求であるものとして処理されるようにバス設定が変更される。例えば、上述の具体例と同様に、システムコントローラ７が、制御レジスタ１３に所定値を設定すると、バス設定は変更され、マスタ回路４が発行したアクセス要求は、それがマスタ回路２から発行されたアクセス要求であるものとして処理される。
【００２９】
バス１０は、信号の伝送路であって、アドレスバス、データバス、制御線を有する。バス１０には、マスタ回路１〜５、スレーブ回路６、システムコントローラ７、マスタステータスレジスタ８、バスコントローラ９が接続される。
【００３０】
ここで、図３を参照して、半導体集積回路５０の動作について説明する。
【００３１】
時刻ｔ０のとき、マスタ回路１は稼働状態、マスタ回路２は稼働状態、マスタ回路３は稼働状態、ＣＰＵ１はスリープ状態、ＣＰＵ２はスリープ状態である。尚、図３においては稼動状態をＲＵＮ、スリープ状態をＳＬＥＥＰと表している。
【００３２】
時刻ｔ１のとき、マスタ回路２はスリープ状態となる。このとき、マスタステータスレジスタ８のマスタ回路２の動作状態を示すステータス値は、マスタ回路２が非活性状態であることを示す値が設定される。このステータス値の変更を受けて、システムコントローラ７は、バス設定を変更し、マスタ回路２に割り当てられていたＭ２領域１５をＣＰＵ１に割り当てる。具体的には、システムコントローラ７は、制御レジスタ１３の保持値をマスタ回路２を示す値からＣＰＵ１を示す値に変更する。これによって、ＣＰＵ１からのアクセス要求は、マスタ回路２からのアクセス要求としてスレーブ回路６で処理される。すなわち、スレーブ回路６にマスタＩＤとして２が伝達され、スレーブ回路６のＭ２領域１５は、ＣＰＵ１により利用可能となる。システムコントローラ７は、バス設定の変更後、ＣＰＵ１を起動させ、ＣＰＵ１に処理開始を指示することにより、ＣＰＵ１を稼働状態とする。なお、この時、マスタステータスレジスタ８のＣＰＵ１の動作状態を示すステータス値には、ＣＰＵ１が活性状態であることを示す値が設定される。
【００３３】
時刻ｔ２のとき、ＣＰＵ１はスリープ状態となる。このとき、マスタステータスレジスタ８のＣＰＵ１の動作状態を示すステータス値は、ＣＰＵ１が非活性状態であることを示す値が設定される。このステータス値の変更に基づいて、システムコントローラ７は、ＣＰＵ１による処理が終了したことを検出すると、バス設定を初期化し、ＣＰＵ１に割り当てられていたＭ２領域１５をマスタ回路２に割り当てる。具体的には、システムコントローラ７は、制御レジスタ１３の保持値を初期値であるマスタ回路２を示す値に戻す。これによって、スレーブ回路６に伝達されるマスタＩＤが２から４に変更される。以降、ＣＰＵ１からスレーブ回路６に対するアクセス要求は、スレーブ回路６において、それがＣＰＵ１から発行された要求であると認識され、マスタ回路２からのアクセス要求として処理が行われなくなる。
【００３４】
なお、時刻ｔ１から時刻ｔ２の間に、マスタ回路２がスリープ状態から稼働状態に変化することはない。なぜなら、少なくともＭ２領域１５がＣＰＵ１に割り当てられている間、システムコントローラ７はマスタ回路２を起動させないからである。
【００３５】
また、システムコントローラ７がマスタステータスレジスタ８のステータス値を確認すること以外の方法によっても、ＣＰＵ１における処理終了を確認することができる。すなわち、システムコントローラ７がインターフェイス回路１１を介してＣＰＵ１の動作状態を確認することで、ＣＰＵ１の処理終了を検出してもよい。また、システムコントローラ７が、バス１０を介して、ＣＰＵ１からの処理終了通知を受けることによって、ＣＰＵ１における処理の終了を検出してもよい。
【００３６】
時刻ｔ３のとき、マスタ回路３はスリープ状態となる。このとき、マスタステータスレジスタ８のマスタ回路３の動作状態を示すステータス値は、マスタ回路３が非活性状態であることを示す値が設定される。このステータス値の変更を受けて、システムコントローラ７は、バス設定を変更し、マスタ回路３に割り当てられていたＭ３領域１６をＣＰＵ１に割り当てる。これによって、スレーブ回路６に伝達されるマスタＩＤが４から３に変更され、スレーブ回路６は、ＣＰＵ１から発行されたアクセス要求をマスタ回路３から発行されたアクセス要求であるものとして処理する。すなわち、スレーブ回路６のＭ３領域１６は、ＣＰＵ１により利用可能となる。システムコントローラ７は、バス設定の変更後、ＣＰＵ１を稼働状態とする。マスタステータスレジスタ８のＣＰＵ１の動作状態を示すステータス値は、ＣＰＵ１が活性状態であることを示す値が設定される。
【００３７】
時刻ｔ４のとき、ＣＰＵ１はスリープ状態となる。このとき、マスタステータスレジスタ８のＣＰＵ１の動作状態を示すステータス値は、ＣＰＵ１が非活性状態であることを示す値が設定される。システムコントローラ７は、ＣＰＵ１による処理が終了したことを検出すると、バス設定を初期化し、ＣＰＵ１に割り当てられていたＭ３領域１６をマスタ回路３に割り当てる。これによって、Ｍ３領域１６は、ＣＰＵ１からのアクセスをマスタ回路２からのアクセスであるものとして処理しなくなる。
【００３８】
時刻ｔ５のとき、マスタ回路１、マスタ回路２はスリープ状態である。このとき、マスタステータスレジスタ８のマスタ回路１の動作状態を示すステータス値は、マスタ回路１が非活性状態であることを示す値が設定される。マスタ回路２についても同様である。このステータス値の変更を受けて、システムコントローラ７は、バス設定を変更し、マスタ回路１に割り当てられていたＭ１領域１４をＣＰＵ１に割り当てる。同様に、システムコントローラ７は、バス設定を変更し、マスタ回路２に割り当てられていたＭ２領域１５をＣＰＵ２に割り当てる。
【００３９】
これによって、スレーブ回路６は、ＣＰＵ１から発行されたアクセス要求をマスタ回路１から発行されたアクセス要求であるものとして処理する。同様に、スレーブ回路６は、ＣＰＵ２から発行されたアクセス要求をマスタ回路２から発行されたアクセス要求であるものとして処理する。すなわち、スレーブ回路６に伝達されるマスタＩＤが変更され、スレーブ回路６のＭ１領域１４は、ＣＰＵ１により利用可能となる。また、スレーブ回路６のＭ２領域１５は、ＣＰＵ２により利用可能となる。システムコントローラ７は、バス設定の変更後、ＣＰＵ１、ＣＰＵ２を稼働状態とする。マスタステータスレジスタ８のＣＰＵ１の動作状態を示すステータス値は、ＣＰＵ１が活性状態であることを示す値が設定される。ＣＰＵ２についても同様である。
【００４０】
時刻ｔ６のとき、ＣＰＵ１、ＣＰＵ２はスリープ状態となる。このとき、マスタステータスレジスタ８のＣＰＵ１の動作状態を示すステータス値は、ＣＰＵ１が非活性状態であることを示す値が設定される。また、マスタステータスレジスタ８のＣＰＵ２の動作状態を示すステータス値は、ＣＰＵ２が非活性状態であることを示す値が設定される。
【００４１】
システムコントローラ７は、ＣＰＵ１及びＣＰＵ２による処理が終了したことを検出すると、バス設定を初期化し、ＣＰＵ１に割り当てられていたＭ１領域１４をマスタ回路３に割り当てると共に、ＣＰＵ２に割り当てられていたＭ２領域１５をマスタ回路３に割り当てる。これによって、Ｍ１領域１４は、ＣＰＵ１からのアクセスをマスタ回路１からのアクセスであるものとして処理しなくなる。また、Ｍ２領域１５は、ＣＰＵ２からのアクセスをマスタ回路２からのアクセスであるものとして処理しなくなる。
【００４２】
上述の説明から明らかなように、本実施形態においては、あるマスタ回路が非活性状態となったとき、システムコントローラがバス設定を変更することに基づいてスレーブ回路に伝達されるマスタＩＤを変更し、非活性状態となったマスタ回路に割り当てられていたスレーブ回路を他のマスタ回路に割り当てる。これによって、非活性状態のマスタ回路に割り当てられていたスレーブ回路は、新たに割り当てられたマスタ回路によって利用可能な状態となり、システム資源の利用効率が向上する。
【００４３】
また、新たなマスタ回路による処理が終了するとき、システムコントローラがバス設定を初期化し、他のマスタ回路に割り当てられていたスレーブ回路を元のマスタ回路に割り当てる。これによって、半導体集積回路の本来的な動作が妨げられることはない。
【００４４】
〔第２の実施形態〕
第２の実施形態について、図４を参照して説明する。図４に、半導体集積回路５１の概略的なブロック図を示す。
【００４５】
本実施形態に係る半導体集積回路５１は第１実施形態に係る半導体集積回路５０とは異なり、図４に示すように、外部端子２１、システムコントローラ２０を有する。ＣＰＵ１のインターフェイス回路１１には、システムコントローラ２０が外部端子２１を介して接続される。ＣＰＵ２のインターフェイス回路１２には、システムコントローラ２０が外部端子２１を介して接続される。なお、ここでは、システムコントローラ２０は、半導体集積回路５１が搭載された半導体チップ外に設けられる。尚、システムコントローラ２０は、半導体集積回路５１とモノリシック化されていても良い。
【００４６】
本実施形態においては、上述のバス設定の変更、バス設定の初期化は、システムコントローラ２０により制御されたＣＰＵ１又はＣＰＵ２により実行される。
【００４７】
具体的には、システムコントローラ２０により起動されたＣＰＵ１は、マスタステータスレジスタ８を参照し、他のマスタ回路の動作状態を監視する。マスタ回路１がスリープ状態であれば、ＣＰＵ１はバス設定を変更し、ＣＰＵ２にＭ１領域１４を割り当てる。そして、システムコントローラ２０により起動されたＣＰＵ２はＭ１領域１４を利用可能となる。これにより、非活性状態のマスタ回路に割り当てられていたスレーブ回路は、新たに割り当てられたマスタ回路によって利用され、半導体集積回路５１におけるシステム資源の利用効率が向上する。
【００４８】
また、システムコントローラ２０により起動されたＣＰＵ１は、ＣＰＵ２による処理が終了したことを検出すると、バス設定を初期化し、ＣＰＵ２に割り当てられていたＭ１領域１４をマスタ回路１に割り当てる。これによって、ＣＰＵ２から発行されたアクセス要求はマスタ回路１から発行されたアクセス要求であるものとしてスレーブ回路６で処理されなくなる。
【００４９】
上述の説明から明らかなように、本実施形態においては、バス設定の変更、バス設定の初期化は、システムコントローラ２０により制御されたＣＰＵ１により実行される。すなわち、バス設定の変更、バス設定の初期化は、必ずしも半導体集積回路内のシステムコントローラにより実行される必要はない。なお、適切なシステム構成を採用することで、ＣＰＵ２ではなく、システムコントローラ２０により制御されたＣＰＵ１自身にＭ１領域１４を割り当てることも可能である。なお、この場合、バス設定の変更の有無に関わらず、ＣＰＵ１は、マスタステータスレジスタ８、制御レジスタ１３にアクセス可能なものとする。
【００５０】
〔第３の実施形態〕
第３の実施形態について、図５乃至図７を参照して説明する。図５に、半導体集積回路５２の概略的なブロック図を示す。図６に、マスタモジュールの動作を説明するための概略的なタイミングチャートを示す。図７に、半導体集積回路５２の動作を説明するための概略的なタイミングチャートを示す。
【００５１】
本実施形態に係る半導体集積回路５２は第１実施形態に係る半導体集積回路５０とは異なり、図５に示すように、マスタモジュール３０、モード制御レジスタ３５を有する。なお、マスタ回路４、５は図面上省略されているものとする。
【００５２】
マスタモジュール３０は、複数のマスタ回路を含む回路モジュールである。マスタモジュール３０には、マスタＩＤとして６が予め設定されている。
【００５３】
マスタモジュール３０は、ＩＰ回路（機能回路）３１、マスタ回路３２を有する。ＩＰ回路３１は、所定機能を実現するマスタ回路である。マスタ回路３２は、小規模なＣＰＵであって、ＩＰ回路３１よりも回路規模が小さい。以下、マスタ回路３２をＣＰＵ３と呼ぶこともある。
【００５４】
ＩＰ回路３１は、内部にハードウェア（例えば、論理演算ユニット（ＡＬＵ（Arithmetic and Logical Unit））３６、メモリ３７を有する。ＣＰＵ３は、ＩＰ回路３１のインターフェイス回路を介して、ＩＰ回路３１内のハードウェア３６やメモリ３７にアクセス可能である。また、ＣＰＵ３はインターフェイス回路（入出力回路）３８を有する。
【００５５】
ＩＰ回路３１は、バス３４を介して、バス１０に接続され、ＣＰＵ３は、バス３４を介して、バス１０に接続される。また、ＣＰＵ３は、バス３３を介して、ＩＰ回路３１内のスレーブ回路（ハードウェア３６、メモリ３７）に接続される。なお、ＣＰＵ３のインターフェイス回路３８はバス１０に接続される。ＣＰＵ３は、バス１０を介してシステムコントローラ７に接続される。
【００５６】
モード制御レジスタ３５は、バス１０を介して、システムコントローラ７に接続される。モード制御レジスタ３５は、バス３３及びバス３４の設定条件に対応する所定値を保持する。例えば、モード制御レジスタ３５の保持値が１(Ｈレベル)のとき、バス３４の制御によって、ＣＰＵ３はバス１０にアクセス可能な状態となり、ＩＰ回路３１はバス１０にアクセス不可能な状態となる。モード制御レジスタ３５の保持値が０（Ｌレベル）のとき、バス３４の制御によって、ＩＰ回路３１はバス１０にアクセス可能な状態となり、ＣＰＵ３はバス１０にアクセス不可能な状態となる。すなわち、モード制御レジスタ３５の保持値を変更することに基づいて、ＩＰ回路３１又はＣＰＵ３のいずれかを排他的に（選択的に）バス１０にアクセス可能な状態にさせる。なお、ＣＰＵ３が稼動状態のとき、ＣＰＵ３は、活性化状態のバス３３を介して、ＩＰ回路３１内のスレーブ回路にアクセス可能である。また、モード制御レジスタ３５からバス３３、３４に対して、モード制御レジスタ３５の保持値に応じたモード信号が出力される。
【００５７】
ここで、図６を参照して、マスタモジュール３０の動作を説明する。
【００５８】
時刻ｔ０のとき、ＩＰ回路３１は稼働状態ＲＵＮで、モード信号はＬレベルで、ＣＰＵ３はスリープ状態である。
【００５９】
時刻ｔ１のとき、ＩＰ回路３１はスリープ状態となる。このとき、マスタステータスレジスタ８のマスタモジュール３０の動作状態を示すステータス値は、マスタモジュール３０が非活性状態であることを示す値が設定される。なお、マスタモジュール３０の動作状態を示すステータス値を参照することで、ＩＰ回路３１、マスタ回路３２の動作状態を判別することができるものとする。言うまでもなく、ＩＰ回路３１、マスタ回路３２ごとにステータス値を割り当ててもよい。
【００６０】
ステータス値の変化を受けて、システムコントローラ７は、モード制御レジスタ３５の保持値をＨレベルに設定し、モード信号をＨレベルに設定する。これにより、ＣＰＵ３は、バス３３を介して、ＩＰ回路３１内のスレーブ回路にアクセス可能となる。また、ＣＰＵ３は、バス３４を介して、バス１０にアクセス可能となる。
【００６１】
また、システムコントローラ７は、ＣＰＵ３を起動する。これにより、ＣＰＵ３が主体的に機能するようにマスタモジュール３０は設定される。つまり、ＣＰＵ３はバス１０にアクセス可能になる。なお、ＣＰＵ３の起動方法は、インターフェイス回路３８を介して行う必要はない。
【００６２】
ＣＰＵ３は、ＩＰ回路３１とは異なる機能を実現する。これによってマスタモジュール３０の多機能化を図ることができる。また、ＣＰＵ３は、バス３３を介して、スリープ状態のＩＰ回路３１内のスレーブ回路（ハードウェア３６、メモリ３７）を利用することができる。ＣＰＵ３がＩＰ回路３１内のスレーブ回路を利用することによって、半導体集積回路５２におけるシステム資源の利用効率は向上する。
【００６３】
なお、システムコントローラ７は、マスタステータスレジスタ８のマスタモジュール３０の動作状態を示すステータス値を参照する代わりに、直接、ＩＰ回路３１にアクセスし、その動作状態を判断しても良い。
【００６４】
時刻ｔ２のとき、ＣＰＵ３はスリープ状態となる。システムコントローラ７は、ＣＰＵ３による処理終了を検出すると、モード制御レジスタの設定を初期化する。すなわち、システムコントローラ７は、モード制御レジスタ３５の保持値をＬレベルとし、モード信号をＬレベルに設定する。これにより、ＩＰ回路３１が主体的に機能できるようにマスタモジュール３０は設定される。
【００６５】
時刻ｔ３のとき、ＩＰ回路３１は稼働状態となる。そして、マスタステータスレジスタ８のマスタモジュール３０の動作状態を示すステータス値は、マスタモジュール３０が活性状態であることを示す値が設定される。
【００６６】
上述のように、本実施形態では、ＩＰ回路３１が機能していないとき、ＣＰＵ３を機能させることで、マスタモジュール３０に異なる機能を付加する。また、ＣＰＵ３にＩＰ回路３１内のスレーブ回路（ハードウェア３６、メモリ３７）を利用可能とさせ、半導体集積回路５２におけるシステム資源の利用効率を向上させることができる。
【００６７】
ここで、図７を参照して、半導体集積回路５２の動作について説明する。
【００６８】
時刻ｔ０のとき、マスタ回路１は稼働状態ＲＵＮ、マスタ回路２は稼働状態ＲＵＮ、マスタ回路３は稼働状態ＲＵＮ、ＩＰ回路３１は稼働状態ＲＵＮ、モード信号はＬレベル、ＣＰＵ３はスリープ状態である。
【００６９】
時刻ｔ１のとき、マスタ回路２はスリープ状態となる。また、マスタモジュール３０もスリープ状態となる。このとき、マスタステータスレジスタ８のマスタ回路２の動作状態を示すステータス値は、マスタ回路２が非活性状態であることを示す値が設定される。マスタモジュール３０についても同様である。
【００７０】
システムコントローラ７は、バス設定を変更し、マスタ回路２に割り当てられていたＭ２領域１５をマスタモジュール３０に割り当てる。これによって、スレーブ回路６に伝達されるマスタＩＤが変更され、マスタモジュール３０から発行されたアクセス要求はマスタ回路２から発行されたアクセス要求であるものとしてスレーブ回路６で処理される。すなわち、スレーブ回路６のＭ２領域１５は、マスタモジュール３０により利用可能となる。
【００７１】
システムコントローラ７は、バス設定の変更後、モード制御レジスタ３５の保持値をＨレベルに設定し、モード信号をＨレベルに設定する。また、システムコントローラ７は、ＣＰＵ３を起動する。これにより、ＣＰＵ３を用いて、ＩＰ回路３１のスリープ中にＩＰ回路３１とは異なる機能を実現できる。すなわち、マスタモジュールの多機能化を図ることができる。
【００７２】
また、スリープ状態のＩＰ回路３１内のスレーブ回路（ハードウェア３６、メモリ３７）は、バス３３を介して接続されたＣＰＵ３によって利用可能な状態となる。これにより、ＩＰ回路３１内のシステム資源の利用効率が向上する。また、第１の実施形態と同様にバス１０の設定が変更されているため、ＣＰＵ３は、バス１０を介して、Ｍ２領域１５にアクセスすることも可能である。つまり、モード制御レジスタ３５の保持値の変更に伴ってマスタモジュール３０の動作状態に変更があったとしても、Ｍ２領域１５はＣＰＵ３により利用され得る状態に設定可能である。これにより、半導体集積回路５２内のシステム資源の利用効率はさらに向上する。
【００７３】
時刻ｔ２のとき、ＣＰＵ３はスリープ状態となる。システムコントローラ７は、ＣＰＵ３による処理が終了したことを検出すると、バス設定を初期化し、マスタモジュール３０に割り当てられていたＭ２領域１５をマスタ回路２に割り当てる。これによって、スレーブ回路６に伝達されるマスタＩＤが初期化され、マスタモジュール３０から発行されたアクセス要求はマスタ回路２から発行されたアクセス要求であるものとして処理されなくなる。
【００７４】
また、システムコントローラ７は、モード制御レジスタの設定を初期化する。すなわち、システムコントローラ７は、モード制御レジスタ３５の保持値をＬレベルとし、モード信号をＬレベルに設定する。これにより、ＩＰ回路３１が主体的に機能可能な状態にマスタモジュール３０は設定される。
【００７５】
時刻ｔ３のとき、ＩＰ回路３１は稼働状態となる。そして、マスタステータスレジスタ８のマスタモジュール３０の動作状態を示すステータス値は、マスタモジュール３０が活性状態であることを示す値が設定される。
【００７６】
本実施形態においては、ＣＰＵ３の活用により、マスタモジュールの多機能化を図ることができる。また、ＩＰ回路３１が非活性状態のとき、ＣＰＵ３は、活性化状態のバス３３を介して、ＩＰ回路３１内のスレーブ回路（ハードウェア３６、メモリ３７）にアクセス可能である。そして、マスタモジュール３０内のシステム資源の利用効率が向上する。
【００７７】
さらに、本実施形態の半導体集積回路５２においても、第１、第２の実施形態と同様に、マスタ回路２が非活性状態となったとき、バス設定を変更し、マスタ回路２に割り当てられていたＭ２領域１５をマスタモジュール３０に割り当てる。そして、Ｍ２領域１５は、ＣＰＵ３によって利用可能となる。これによって、非活性状態のマスタ回路に割り当てられていたスレーブ回路は、ＣＰＵ３によっても利用可能な状態となり、半導体集積回路５２内のシステム資源の利用効率がさらに向上する。
【００７８】
本発明の技術的範囲は上述の実施形態に限定されない。マスタ回路、スレーブ回路の具体的な機能は任意である。Ｍ１領域１４、Ｍ２領域１５、Ｍ３領域１６は、個々に分離されたスレーブ回路であっても良い。バス設定の変更方法は上述の実施形態に限定されない。レジスタの保持値の変更に基づく方法以外の方法で、バス設定を変更しても良い。システムコントローラ２０を外部端子２１に接続する態様は、パラレルインターフェイスに限られず、シリアルインターフェイス(ＪＴＡＧ(Joint Test Action Group)、ＵＳＢ(Universal Serial Bus)等)であっても良い。
【図面の簡単な説明】
【００７９】
【図１】半導体集積回路５０の概略的なブロック図である。
【図２】回路ブロック間の優劣関係を説明するための説明図である。
【図３】半導体集積回路５０の動作を説明するための概略的なタイミングチャートである。
【図４】半導体集積回路５１の概略的なブロック図である。
【図５】半導体集積回路５２の概略的なブロック図である。
【図６】マスタモジュール３０の動作を説明するための概略的なタイミングチャートである。
【図７】半導体集積回路５２の動作を説明するための概略的なタイミングチャートである。
【符号の説明】
【００８０】
５０    半導体集積回路
１    マスタ回路
２    マスタ回路
３    マスタ回路
４    マスタ回路
５    マスタ回路
６    スレーブ回路
７    システムコントローラ
８    マスタステータスレジスタ
９    バスコントローラ
１０    バス
１１    インターフェイス回路
１２    インターフェイス回路
１３    制御レジスタ
１４    Ｍ１領域
１５    Ｍ２領域
１６    Ｍ３領域
２０    システムコントローラ
２１    端子
３０    マスタモジュール
３１    ＩＰ回路
３２    マスタ回路
３３    バス
３４    バス
３５    モード制御レジスタ
３６    ハードウェア
３７    メモリ
３８    インターフェイス回路
【図１】
0005148236.tif 000002
【図２】
0005148236.tif 000003
【図３】
0005148236.tif 000004
【図４】
0005148236.tif 000005
【図５】
0005148236.tif 000006
【図６】
0005148236.tif 000007
【図７】
0005148236.tif 000008