(57)【特許請求の範囲】
【請求項１】
複数のデータプロセッサと、
パワーオンリセットに際して入力される第１情報に基づいて、起動させる前記データプロセッサを指示する起動指示部と、
パワーオンリセットに際して入力される第２情報に基づいて、マスタとされる前記データプロセッサを指示するマスタ指示部と、
前記起動指示部からの指示に基づいて選択した前記データプロセッサへ電源を供給させる電源制御部とを有しており、
前記電源制御部は、前記データプロセッサに対する電源供給状態を示す情報が保持される電源管理レジスタを更に有し、
前記電源管理レジスタは、パワーオンリセット解除後は前記第１情報に応じた値が保持され、マスタとされる前記データプロセッサからの電源の供給又は停止に係る指示に応じて値が更新される、
ことを特徴とする半導体装置。
【請求項２】
前記電源制御部は、起動された前記データプロセッサからの指示に基づいて選択した前記データプロセッサへの電源の供給を停止させる、請求項１記載の半導体装置。
【請求項３】
前記電源制御部は、起動された前記データプロセッサからの指示に基づいて選択した前記データプロセッサへ電源を供給させる、
請求項１記載の半導体装置。
【請求項４】
パワーオンリセットに際して入力される第３情報、又はパワーオンリセット後に起動された前記データプロセッサから設定される第４情報に基づいて、起動の指示された前記データプロセッサが実行するプログラム領域の先頭アドレスの情報を指示するアドレス指示部を更に有する、
請求項１記載の半導体装置。
【請求項５】
データが入力される外部端子を更に有し、
前記第１情報乃至第３情報は、前記外部端子から入力されるデータである、
請求項４記載の半導体装置。
【請求項６】
データが格納される不揮発性の記憶部を更に有し、
前記第１情報乃至第３情報は、前記記憶部から入力されるデータである、
請求項４記載の半導体装置。
【請求項７】
前記アドレス指示部は、パワーオンリセットに応答して、起動が指示された前記データプロセッサに対し前記第３情報に基づいた前記先頭アドレスを指示し、パワーオンリセット後のシステムリセットに応答して、起動が指示された前記データプロセッサに対し前記第４情報に基づいた前記先頭アドレスを指示する、
請求項４記載の半導体装置。
【請求項８】
前記アドレス指示部は、マスタとされる前記データプロセッサにより指定されたアドレス情報が格納される起動アドレス制御部を更に有し、
前記第４情報は、前記起動アドレス制御部に格納されたアドレス情報に基づいて前記先頭アドレスを指示することを示す情報を含む、
請求項４記載の半導体装置。
【請求項９】
前記第４情報は、予め固定されたアドレスを前記先頭アドレスとすることを指示する情報を含む、
請求項４記載の半導体装置。
【請求項１０】
前記アドレス指示部は、前記第４情報が格納されるラッチ回路を有する、
請求項４記載の半導体装置
【請求項１１】
起動が指示された前記データプロセッサへのクロック信号の供給を制御するクロック信号制御部を更に有し、
前記クロック信号制御部は、パワーオンリセットに際して入力される前記第１情報、又はマスタとされる前記データプロセッサからの指示に基づいて選択した前記データプロセッサに対し、クロック信号の供給と停止を制御する、
請求項１記載の半導体装置。
【請求項１２】
前記複数のデータプロセッサは、アーキテクチャの異なるデータプロセッサを含む、請求項１記載の半導体装置。
【請求項１３】
前記複数のデータプロセッサは、通信に係るデータ処理を実行するデータプロセッサと、
画像に係るデータ処理を実行するデータプロセッサとを含む、
請求項１記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に係り、特に複数のデータプロセッサを内蔵する大規模集積回路に適用して有効な技術に関する。
【背景技術】
【０００２】
近年、携帯電話機や携帯型ナビゲーション装置、業務用携帯端末等の小型情報機器の高性能化及び多機能化に伴い、画像や音声の圧縮及び伸張等の特定機能を高速で実行するための専用回路モジュール、システムの中核を担うＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、及び当該ＣＰＵとは異なる命令セットを持つ他品種のＣＰＵ等を、同一パッケージ内に複数個内蔵した大規模集積回路（以下、「マルチプロセッサ」とも称する。）の開発が進んでいる。例えば携帯電話用のマルチプロセッサシステムでは、通話やメール送信等のベースバンド処理を主に実行する通信部や動画再生等のための処理を実行するアプリケーション部、及びその他のシステム部等の各処理部は、特定の機能を実現するためのＣＰＵと専用回路モジュールを有しており、全体として複数個のＣＰＵを搭載したマルチプロセッサを構成している。このようなマルチプロセッサシステムでは、特定のＣＰＵを他のＣＰＵを管理するためのマスタＣＰＵとし、それ以外のＣＰＵをスレーブＣＰＵとした構成をとる場合が多い。いずれのＣＰＵをマスタＣＰＵとするかは、例えば最終製品の仕様に合わせて決定され、前述した携帯電話機用のマルチプロセッサシステムの場合は、通信部のＣＰＵがマスタＣＰＵとされ、その他のＣＰＵがスレーブＣＰＵとして構成されるものがあり、その逆とされるものもある。
【０００３】
システム上でマスタとスレーブを切り替える技術の一つとして、例えば特許文献１に開示がある。特許文献１の技術は、複数のデータ信号制御回路のうち、一つのデータ信号制御回路をデータバスの制御権を有するマスタとし、他のデータ信号制御回路をスレーブとした場合において、マスタに不具合が発生したとき、マスタとスレーブを切り替えることでシステムの全面停止を回避する技術である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平５−１２２２３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、マルチプロセッサシステムを使用する製品開発の初期段階におけるデバッグや専用処理用のソフトウェアの開発において、マスタとされるＣＰＵが固定されていると、そのマスタＣＰＵのブートコードが必要となる。前述の携帯電話機用のマルチプロセッサシステムを用いた製品開発において、例えば製品開発者が過去のソフトウェア資源としてアプリケーション部のＣＰＵに係るブートコードを有しているが、通信部のＣＰＵのブートコードを有していない場合、ブートコードのあるアプリケーション部のＣＰＵから起動させて、その後通信部のＣＰＵを起動させる方が開発は容易となる。しかしながら、マスタＣＰＵが通信部のＣＰＵに固定されていると、当該ＣＰＵを他のＣＰＵよりも先に起動させる必要があるので、通信部のＣＰＵのブートコードを新たに開発する必要がある。このことはブートコードの開発コストの増大を招く。
【０００６】
更には、今後マルチプロセッサの設計開発において、開発コストの低減を図るため、他の製品に流用できるような汎用性の高い半導体製品を開発する必要もある。しかしながら、前述した特許文献１の技術は、システム起動時にどのデータ信号制御回路をマスタに設定するか、どのデータ信号制御回路を先に起動させるか等について考慮されていない。
【０００７】
本発明の目的は、要求される仕様に対して柔軟に対応できるマルチプロセッサシステムを提供することにある。
【０００８】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００９】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１０】
すなわち、半導体装置は、パワーオンリセットに際して入力される第１情報に基づいて起動させるデータプロセッサを指示する起動指示部と、パワーオンリセットに際して入力される第２情報に基づいてマスタとされるデータプロセッサを指示するマスタ指示部と、パワーオンリセットに際して入力される第３情報又はパワーオンリセット後に起動されたデータプロセッサから設定される第４情報に基づいて、起動が指示されたデータプロセッサが実行するプログラム領域の先頭アドレスの情報を指示するアドレス指示部とを有する。
【発明の効果】
【００１１】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１２】
すなわち、本半導体装置によれば、要求仕様に対して柔軟に対応することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、本実施の形態に係る、複数のＣＰＵを内蔵したマイクロプロセッサのブロック図である。
【図２】図２は、ＣＰＵ１とＣＰＵ２を起動させる場合の説明図である。
【図３】図３は、ＣＰＵ２を起動させる場合の説明図である。
【図４】図４は、ＣＰＵ１をマスタとして起動させる場合の説明図である。
【図５】図５は、ＣＰＵ２をマスタとして起動させる場合の説明図である。
【図６】図６は、ＣＰＵ１及びＣＰＵ２を共に起動させ、起動時にＣＰＵ１をマスタとする場合の説明図である。
【図７】図７は、ＣＰＵ１のみを起動させる場合の説明図である。
【図８】図８は、ＣＰＵ１〜３を起動させ、そのうちＣＰＵ１をマスタとして起動させる場合の説明図である。
【図９】図９は、図８の場合において起動ＣＰＵ選択部７２とマスタＣＰＵ選択部７３を含めた説明図である。
【図１０】図１０は、電源制御部７１の内部構成の一例を示すブロック図である。
【図１１】図１１は、電源投入時の電源制御部７１による電源制御の流れの一例を示すフロー図である。
【図１２】図１２は、パワーオンリセット後に電源遮断を行う場合の説明図である。
【図１３】図１３は、電源遮断の制御の流れの一例を示すフロー図である。
【図１４】図１４は、パワーオンリセット後に電源復帰を行う場合の説明図である。
【図１５】図１５は、電源復帰の制御の流れの一例を示すフロー図である。
【図１６】図１６は、電源遮断機能を有しないマルチプロセッサの状態遷移図の一例を示す。
【図１７】図１７は、本実施の形態に係るマイクロプロセッサ１０の状態遷移図の一例を示す。
【図１８】図１８は、起動対象メモリ指定レジスタ７４１の説明図である。
【図１９】図１９は、起動時の読み出し先のメモリが指定される場合の説明図である。
【図２０】図２０は、起動アドレス指定レジスタ７４２の説明図である。
【図２１】図２１は、起動アドレス制御部７５の説明図である。
【図２２】図２２は、クロック制御レジスタ７４３の説明図である。
【図２３】図２３は、システムリセット制御レジスタ７４４の説明図である。
【図２４】図２４は、スレーブＣＰＵとマスタＣＰＵを切り替える場合の処理の流れの一例を示したフロー図である。
【図２５】図２５は、ＣＰＵ１〜３のマスタ用ブートコードとスレーブ用ブートコードの格納先の一例を示す説明図である。
【発明を実施するための形態】
【００１４】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１５】
〔１〕（マスタＣＰＵと起動させるＣＰＵを選択可能とする半導体装置）
本発明の代表的な実施の形態に係る半導体装置（１０）は、複数のデータプロセッサ（１〜３）と、パワーオンリセットに際して入力される第１情報（７２０）に基づいて起動させる前記データプロセッサを指示する起動指示部（７２）と、パワーオンリセットに際して入力される第２情報（７３０）に基づいてマスタとされる前記データプロセッサを指示するマスタ指示部（７３）と、パワーオンリセットに際して入力される第３情報（７４０）又はパワーオンリセット後に起動された前記データプロセッサから設定される第４情報（７４６、７５１）に基づいて、起動の指示された前記データプロセッサが実行するプログラム領域の先頭アドレスの情報を指示するアドレス指示部（７４、７５）と、を有する。
【００１６】
これによれば、開発するシステムの仕様に応じて、起動させるデータプロセッサとマスタとするデータプロセッサを自由に選択することができ、既存のハードウェア資源とソフトウェア資源の有効活用に資する。例えば、起動させるデータプロセッサを選択可能とすることで、そのシステムに必要な前記データプロセッサを選択して使用することが可能となるから、ハードウェア資源を有効活用できる。しかしながら、それだけでは既存のソフトウェア資源を有効することができない場合が多い。そこで、当該半導体装置によれば、パワーオン時のマスタとされるデータプロセッサを選択することができ、且つパワーオンリセットに際しての前記先頭アドレスとパワーオンリセット後の前記先頭アドレスを別々に指示することができるから、例えばパワーオン時にスレーブとして起動させた前記データプロセッサをマスタとして再起動させたり、マスタとして起動させた前記データプロセッサをスレーブとして再起動させたりすることができる。一例として、過去のソフトウェア資産として通常動作時にスレーブとされるＣＰＵのブートコードはあるが、通常動作時にマスタとされるＣＰＵのブートコードがない状況において本半導体装置を適用する場合を考える。この場合、初めに通常時にスレーブとされる前記データプロセッサをマスタとして起動させ、起動した前記データプロセッサにより通常時にマスタとされる前記データプロセッサをスレーブとして起動させる。その後、スレーブとして起動した前記データプロセッサが実行するプログラム領域の先頭アドレスをマスタ用のプログラム領域の先頭アドレスに切り替えることで、スレーブとして起動した前記データプロセッサをマスタとして再起動させることができる。これによれば、本来マスタとして動作する前記データプロセッサのブートコードを新たに開発する必要がなく、既存のソフトウェア資産を有効に活用することができるから、ブートコードの開発コストを抑えることが可能となる。
【００１７】
〔２〕（外部端子により選択可能）
項１の半導体装置において、データが入力される外部端子（Ｐ１〜Ｐ１２）を更に有し、前記第１情報乃至第３情報は、前記外部端子から入力されるデータである。
【００１８】
これによれば、起動させるデータプロセッサとマスタとするデータプロセッサを容易に選択することができる。
【００１９】
〔３〕（ヒューズから読み出された値により選択可能）
項１の半導体装置において、データが格納される不揮発性の記憶部を更に有し、前記第１情報乃至第３情報は、前記記憶部から入力されるデータである。
【００２０】
これによれば、起動させるデータプロセッサとマスタとするデータプロセッサを容易に選択することができ、且つ外部端子を設ける必要がない。
【００２１】
〔４〕（アドレス指示部の動作）
項１乃至３のいずれかの半導体装置において、前記アドレス指示部は、パワーオンリセットに応答して、起動が指示された前記データプロセッサに対し前記第３情報に基づいた前記先頭アドレスを指示し、パワーオンリセット後のシステムリセットに応答して、起動が指示された前記データプロセッサに対し前記第４情報に基づいた前記先頭アドレスを指示する。
【００２２】
これによれば、例えばシステムリセット解除後に実行するプログラムとパワーオンリセット解除後に実行するプログラムとを別々のプログラムとすることができる。
【００２３】
〔５〕（任意のアドレスが指定可能）
項４の半導体装置において、前記アドレス指示部は、マスタとされる前記データプロセッサにより指定されたアドレス情報が格納される起動アドレス制御部（７５）を更に有し、前記第４情報は、前記起動アドレス制御部に格納されたアドレス情報に基づいて前記先頭アドレスを指示することを示す情報を含む。
【００２４】
これによれば、ＣＰＵがシステムリセット後に実行するプログラム領域の先頭アドレスを、マスタＣＰＵが指定する任意のアドレスとすることが可能となるから、プログラムマッピングの自由度が増す。
【００２５】
〔６〕（アドレスは固定）
項４又は５の半導体装置において、前記第４情報は、予め固定されたアドレスを前記先頭アドレスとすることを指示する情報を含む。
【００２６】
〔７〕（第４情報が設定されるラッチ回路）
項４乃至６のいずれかの半導体装置において、前記アドレス指示部は、前記第４情報が設定されるラッチ回路（７４２）を有する。
【００２７】
これによれば、起動された前記データプロセッサが一度前記第４情報を出力すれば、その値が前記ラッチ回路に設定されるから、前記データプロセッサがその都度前記第４情報を出力しなくてもよい。
【００２８】
〔８〕（電源供給制御）
項１乃至７のいずれかの半導体装置において、前記データプロセッサに供給する電源を管理するための電源制御部（７１）を更に有し、前記電源制御部は、前記起動指示部からの指示に基づいて選択した前記データプロセッサへ電源を供給させる。
【００２９】
これによれば、パワーオン時に指定された前記データプロセッサを起動させることが容易となる。
【００３０】
〔９〕（電源遮断制御）
項８の半導体装置において、前記電源制御部は、起動された前記データプロセッサからの指示に基づいて選択した前記データプロセッサへの電源の供給を停止させる。
【００３１】
これによれば、起動させた前記データプロセッサを停止させることができるから、例えば、データプロセッサによる特定の処理が終了した後にそのデータプロセッサの電源供給を停止すれば、電源を落とさないスタンバイ状態に比べてより低消費電力化に資する。
【００３２】
〔１０〕（電源復帰制御）
項８又は９の半導体装置において、前記電源制御部は、起動された前記データプロセッサからの指示に基づいて選択した前記データプロセッサへ電源を供給させる。
【００３３】
これによれば、一旦電源の供給を停止した前記データプロセッサを再度動作させることが可能となるとともに、パワーオン時に起動させなかったデータプロセッサを後から起動させることも可能となり、よりシステム開発の自由度が増す。
【００３４】
〔１１〕（クロック信号の供給と停止）
項１乃至１０のいずれかの半導体装置において、起動が指示された前記データプロセッサへのクロック信号の供給を制御するクロック信号制御部（７４３、７６）を更に有し、前記クロック信号制御部は、パワーオンリセットに際して入力される前記第１情報、又はマスタとされる前記データプロセッサからの指示に基づいて選択した前記データプロセッサに対し、クロック信号の供給と停止を制御する。
【００３５】
これによれば、前記半導体装置の省電力化に資することができ、且つ前記データプロセッサへの電源供給を停止させた場合に比べて動作を再開させるのに要する時間を短縮することができる。例えば前記データプロセッサの動作を停止させるために電源供給を停止させた場合、前記データプロセッサを再動作させるためには再度電源を供給する必要があるが、電源を供給してから電圧が安定するまでに時間を要する場合があり、その分、動作復帰までの時間が増えることになる。それに対して項１１の半導体装置によれば、電源供給させた状態でクロック信号の停止と供給を行うから、動作を再開させるのに要する時間を短縮することが可能となる。
【００３６】
また、項１１の半導体装置によれば、起動が指示された前記データプロセッサにのみクロック信号を供給することが可能となり、無駄なクロック信号の供給を抑止することが可能となる。更にパワーオン時に起動させなかった前記データプロセッサをその後に起動させた場合であっても、その起動に応じてクロック信号を供給することが可能となる。
【００３７】
〔１２〕（クロック信号の供給）
項１１の半導体装置において、前記クロック信号制御部は、パワーオンリセットに際して入力される前記第１情報、又はマスタとされる前記データプロセッサからの指示に基づいて選択した前記データプロセッサへクロック信号を供給させる。
【００３８】
〔１３〕（電源状態の管理）
項１乃至１２のいずれかの半導体装置において、前記電源制御部は、前記データプロセッサに対する電源供給状態を示す情報が保持される電源管理レジスタを有し、前記電気管理レジスタは、パワーオンリセット解除後は前記第１情報に応じた値が保持され、マスタとされる前記データプロセッサからの電源の供給又は停止に係る指示に応じて値が更新される。
【００３９】
これによれば、夫々の前記データプロセッサへの電源供給状態を把握することが可能となる。
【００４０】
〔１４〕（アーキテクチャの異なるデータプロセッサ）
項１乃至１３のいずれかの半導体装置において、前記複数のデータプロセッサは、アーキテクチャの異なるデータプロセッサを含む。
【００４１】
〔１５〕（通信用及び画像処理用のデータプロセッサ）
項１乃至１４のいずれかの半導体装置において、前記複数のデータプロセッサは、通信に係るデータ処理を実行するデータプロセッサ（１）と、画像に係るデータ処理を実行するデータプロセッサ（３）とを含む。
【００４２】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００４３】
≪マイクロプロセッサ１０の構成≫
図１は、本発明に係る半導体装置の一実施の形態として、複数のＣＰＵを内蔵したマイクロプロセッサのブロック図である。同図に示されるマイクロプロセッサ１０は、特に制限されないが、公知のＣＭＯＳ集積回路の製造技術によって１個の単結晶シリコンのような半導体基板に形成されている。マイクロプロセッサ１０は、例えば通信機能を備えたカーナビゲーションシステム用のＬＳＩである。
【００４４】
マイクロプロセッサ１０は、複数のＣＰＵを備えたマルチプロセッサを構成する。ＣＰＵの数には特に制限はなく、ここでは一例として、マイクロプロセッサ１０にはアーキテクチャの異なる３つのＣＰＵがあるものとし、夫々のＣＰＵをＣＰＵ１、ＣＰＵ２、及びＣＰＵ３とする。ＣＰＵ１〜３は、例えば内蔵ＲＯＭ７、内蔵ＲＡＭ８、外付けメモリ１４、及び周辺回路４〜６とバス１５により共通接続される。外付けメモリ１４は例えばフラッシュメモリであり、図示されないメモリインターフェース等を介してバス１５と接続されている。周辺回路４〜６は、ＣＰＵ１〜３によって処理条件等の設定等の制御がなされ、ＣＰＵ１〜３の代わりに特定の処理を実行する専用処理回路である。周辺回路４〜６は、例えばＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｅｒ）や音楽再生のための専用処理回路等である。
【００４５】
ＣＰＵ１〜３は、内蔵ＲＯＭ７、内蔵ＲＡＭ８、又は外部メモリ１４に格納されたプログラムに基づいて処理を実行する。夫々のＣＰＵは、カーナビゲーションシステムにおける各種データ処理を分担して実行する。例えば、ＣＰＵ１は主にＷ−ＣＤＭＡ等の無線アクセス機能に係る処理を実行する通信用のＣＰＵであり、ＣＰＵ２は主にカーナビゲーションシステムを搭載した自車両の走行情報や地図情報に基づいて自車両の位置情報等を演算するためのＣＰＵであり、ＣＰＵ３は主に地図情報や前記演算結果等に基づいて地図情報をモニタに描画するための処理を実行する画像処理用のＣＰＵである。マイクロプロセッサ１０では、ＣＰＵ１〜３のうちいずれかのＣＰＵがマスタＣＰＵとされ、その他のＣＰＵはスレーブＣＰＵとされる。マスタＣＰＵはスレーブＣＰＵを自らの管理下に置き、各スレーブＣＰＵにおけるデータ処理の実行及び停止を制御するとともにデータ処理状態の管理等を行う。またマスタＣＰＵは、後述する制御部７の各種レジスタのアクセス権を有し、スレーブＣＰＵの電源供給の制御やクロック信号供給の制御等を行う。
【００４６】
ＣＰＵ１〜３は、プログラム処理の実行主体であるＣＰＵコア部と、そのＣＰＵコア部の代わりに特定の処理を高速で実行するための周辺回路とを有する。例えばＣＰＵ１は、ＣＰＵコア部１１と周辺回路１２を備え、周辺回路１２はＣＰＵコア部１１によって設定された条件に従って特定の処理を実行する。周辺回路１２は、例えばベースバンド処理を行う専用回路等である。同様に、ＣＰＵ２はＣＰＵコア部２１と周辺回路２２から構成され、ＣＰＵ３はＣＰＵコア部３１と周辺回路３２から構成される。周辺回路１３は、例えば画像データの圧縮・伸長の処理を行う専用回路等である。また上記ＣＰＵコア部１１、２１、及び３１と、周辺回路１２、２２及び３２と、周辺回路４〜６は電源スイッチ１６＿１〜１６＿９を備え、後述する制御部７によって電源スイッチ１６＿１〜１６＿９のオン・オフが制御されることにより、各回路への電源電圧の供給と停止が制御される。これにより回路毎に独立した電源管理が可能とされる。
【００４７】
マイクロプロセッサ１０は更に制御部７を有する。制御部７は、マスタＣＰＵや外部端子からの設定により、電源電圧及びクロック信号の供給と停止によるＣＰＵ１〜３の起動制御、マスタＣＰＵの選択、及びパワーオンリセット解除後とシステムリセット解除後のプログラム領域の先頭アドレスの指定等の制御を実行する。制御部７は、マイクロプロセッサ１０に外部から電源電圧が供給（パワーオン）されると、常時電源が供給される。制御部７は、電源制御部７１、起動ＣＰＵ選択部７２、マスタＣＰＵ選択部７３、リセット制御部７４、起動アドレス制御部７５、及びクロック制御部７６を有する。以下、制御部７の各機能部について詳細に説明する。
【００４８】
（１）起動ＣＰＵ選択部７２
起動ＣＰＵ選択部７２は、外部端子Ｐ１〜Ｐ３から入力された、起動させるＣＰＵを示す情報７２０に基づいて、マイクロプロセッサ１０におけるＣＰＵ１〜３のうち起動させるＣＰＵを指示する選択信号７２２を出力する。具体的には、起動ＣＰＵ選択部７２は内部にラッチ回路（レジスタ）７２１を有し、パワーオンリセットに際し外部端子Ｐ１〜Ｐ３から入力された情報７２０をレジスタ７２１に保持し、その値に基づいて選択信号７２２を出力する。これにより、起動するＣＰＵを予め選択することが可能となる。なお、レジスタ７２１に保持される前記情報７２０は外部端子Ｐ１〜Ｐ３から取り込む方法に限られず、例えば、起動させるＣＰＵを示す情報７２０を格納したプログラムヒューズのような不揮発性の記憶装置をマイクロプロセッサ１０に内蔵しておき、パワーオンリセットに際しそのプログラムヒューズから情報７２０を読み出してレジスタ７２１に格納してもよい。また、外部端子Ｐ１〜Ｐ３から入力される情報７２０は、パワーオンリセットに際してレジスタ７２１に格納されればよいので、その後は外部端子Ｐ１〜Ｐ３を他の信号の入出力端子として用いることも可能である。
【００４９】
起動するＣＰＵの選択方法の一例を図２及び図３に示す。なお、図２及び図３では説明の便宜上、ＣＰＵ１とＣＰＵ２の２つのＣＰＵがある場合を一例として説明する。
【００５０】
図２は、ＣＰＵ１とＣＰＵ２を起動する場合の説明図である。同図では、例えばマイクロプロセッサ１０が実装される基板２００に設けられたスイッチ１００が外部端子Ｐ１〜Ｐ３に接続され、当該スイッチから外部端子Ｐ１〜Ｐ３に入力された情報７２０により、ＣＰＵ１とＣＰＵ２が起動される場合が示される。同図におけるスイッチ１００は、例えば、スイッチオン（ＯＮ）のとき外部端子Ｐ１〜Ｐ３はプルアップとされ、スイッチオフ（ＯＦＦ）のとき外部端子Ｐ１〜Ｐ３はプルダウンとされる。
【００５１】
図３は、ＣＰＵ２を起動する場合の一例を示す説明図である。同図では、スイッチ１００から外部端子Ｐ１〜Ｐ３に入力された情報７２０により、ＣＰＵ２のみが起動される場合が示される。
【００５２】
（２）マスタＣＰＵ選択部７３
マスタＣＰＵ選択部７３は、外部端子Ｐ４〜Ｐ６から入力された、マスタとするＣＰＵを示す情報７３０に基づいて、マイクロプロセッサ１０におけるＣＰＵ１〜３のうち起動時にマスタとするＣＰＵを指示する選択信号７３２を出力する。具体的には、マスタＣＰＵ選択部７３は内部にラッチ回路（レジスタ）７３１を有し、パワーオンリセットに際し外部端子Ｐ４〜Ｐ６に入力された情報７３０をレジスタ７３１に保持し、その値に基づいて選択信号７３２を出力する。これにより、マスタとするＣＰＵを予め選択することが可能となる。なお、レジスタ７３１に保持される前記情報７３０は外部端子Ｐ４〜Ｐ６から取り込む方法に限らず、前記情報７２０と同様にプログラムヒューズから読み出してレジスタ７３１に格納する方法でもよい。また、外部端子Ｐ１〜Ｐ３と同様に外部端子Ｐ４〜Ｐ６もパワーオンリセット後に他の信号の入出力端子として用いることも可能である。
【００５３】
起動時にマスタとするＣＰＵの選択方法を図４及び図５に示す。なお、以下に説明する図４〜図７では説明の便宜上、ＣＰＵ１とＣＰＵ２の２つのＣＰＵがある場合を一例として説明する。
【００５４】
図４は、ＣＰＵ１をマスタとして起動させる場合の説明図である。同図では、例えばマイクロプロセッサ１０が実装される基板２００に設けられたスイッチ１０１が外部端子Ｐ４〜Ｐ６に接続され、当該スイッチから外部端子Ｐ４〜Ｐ６に入力された情報７３０により、ＣＰＵ１がマスタとして起動し、ＣＰＵ２がスレーブとして起動する場合が示される。スイッチ１０１は、同図では切り替えスイッチとして表されているが、ここでは例えば、選択されていない外部端子にはロー（Ｌｏｗ）の信号が入力され、選択されている外部端子にはハイ（Ｈｉｇｈ）が入力されるものとする。
【００５５】
図５は、ＣＰＵ３をマスタとして起動させる場合を示す説明図である。同図では、スイッチ１０１から外部端子Ｐ４〜Ｐ６に入力された情報７３０により、ＣＰＵ２がマスタとして起動され、ＣＰＵ１がスレーブとして起動される場合が示される。
【００５６】
図６〜図９に起動させるＣＰＵとマスタとするＣＰＵの組み合わせの一例を示す。
【００５７】
図６は、ＣＰＵ１及びＣＰＵ２を共に起動させ、ＣＰＵ１をマスタとする場合を示す説明図である。同図では、スイッチ１００からＣＰＵ１とＣＰＵ２の起動を指示する情報７２０が外部端子Ｐ１〜Ｐ３に入力され、スイッチ１０１からＣＰＵ１をマスタとすることを指示する情報７３０が外部端子Ｐ４〜Ｐ６に入力される。これにより、ＣＰＵ１はマスタＣＰＵとして起動し、ＣＰＵ２はスレーブＣＰＵとして起動する。
【００５８】
図７は、ＣＰＵ１のみを起動させる場合を示す説明図である。同図では、スイッチ１００からＣＰＵ１のみ起動することを指示する情報７２０が外部端子Ｐ１〜Ｐ３に入力される。一方、マスタとされるＣＰＵを指定する情報７３０は外部端子Ｐ４〜Ｐ６に入力されない。この場合、起動させるのはＣＰＵ１のみであるから、必然的にマスタはＣＰＵ１となるため、スイッチ１０１からの入力はなくてもよい。これによれば、例えばＣＰＵ１しか使用しないシステムにおいては、スイッチ１０１からの入力を受け付ける外部端子Ｐ４〜Ｐ６は不要となり、マイクロプロセッサ１のチップ面積の低減を図ることができる。
【００５９】
図８は、ＣＰＵ１〜３を起動させ、そのうちＣＰＵ１をマスタとして起動する場合の説明図である。同図では、スイッチ１００からＣＰＵ１〜３の起動を指示する情報７２０が外部端子Ｐ１〜Ｐ３に入力され、スイッチ１０１からＣＰＵ１をマスタとすることを指示する情報７３０が外部端子Ｐ４〜Ｐ６に入力される。これにより、ＣＰＵ１はマスタＣＰＵとして起動し、ＣＰＵ２及びＣＰＵ３はスレーブＣＰＵとして起動する。
【００６０】
図９は、図８の場合において起動ＣＰＵ選択部７２とマスタＣＰＵ選択部７３を含めて表した説明図である。同図では、スイッチ１００からＣＰＵ１〜３の起動を指示する情報７２０が外部端子Ｐ１〜Ｐ３に入力され、起動ＣＰＵ選択部７２のラッチ回路７２１に保持される。起動ＣＰＵ選択部７２は、保持された値に基づいて選択信号７２２を電源制御部７１に与え、選択信号７２２を受け取った電源制御部７１はＣＰＵ１〜３に電源を供給する。また、スイッチ１０１からＣＰＵ１をマスタとすることを指示する情報７３０が外部端子Ｐ４〜Ｐ６に入力され、マスタＣＰＵ選択部７３のラッチ回路７３１に保持される。マスタＣＰＵ選択部７３は、保持された値に基づいて選択信号７３２をＣＰＵ１に与える。これにより、ＣＰＵ１はマスタＣＰＵとして起動し、ＣＰＵ２及びＣＰＵ３はスレーブＣＰＵとして起動する。
【００６１】
（３）電源制御部７１
電源制御部７１は、ＣＰＵ１〜ＣＰＵ３、周辺回路４〜６、その他内部回路の電源電圧の供給を制御する。具体的には、各回路に対する電源電圧の遮断、電源電圧の供給、及び電源供給状態のモニタリング等を行う。ここでは、ＣＰＵ１〜３に対する電源制御に関わる部分を中心に説明する。
【００６２】
図１０は、電源制御部７１の内部構成の一例を示すブロック図である。同図に示されるように、電源制御部７１は、電源管理部７１１、電源遮断部７１２、電源復帰部７１３、電源状態部７１４、電源領域排他制御部７１５、及び制御信号生成部７１６を有する。
【００６３】
電源管理部７１１は、内部にレジスタ７１１１を有し、ＣＰＵ１〜３、周辺回路４〜６、及びその他の回路が夫々存在するチップ上の領域（以下、「電源領域」とも称する。）への電源遮断と電源供給の制御を許可するか否かを示す情報が電源領域毎に当該レジスタに設定される。電源管理部７１１に対する設定は、マスタＣＰＵにより行われる。例えば、マスタＣＰＵが電源管理部７１１のレジスタ７１１１のＣＰＵ１に係る電源領域（ＣＰＵコア部１１及び周辺回路１２）を示す部分に“１”を書き込むことによって、ＣＰＵ１に係る電源領域に対する電源遮断と電源供給の制御は禁止される。
【００６４】
電源遮断部７１２は、内部に備えるレジスタ７１２１に設定された値に応じて、各電源領域への電源遮断を要求する。電源遮断部７１２に対する設定はマスタＣＰＵにより行われる。例えば、マスタであるＣＰＵ１によりレジスタ７１２１のＣＰＵ３に係る電源領域（ＣＰＵコア部３１及び周辺回路３２）を示す部分に“１”が書き込まれると、電源遮断部７１２は当該電源領域に対する遮断指示を発行し、電源遮断後、その値を“０”にクリアする。
【００６５】
電源復帰部７１３は、内部に備えるレジスタ７１３１に設定された値に応じて、各電源領域への電源供給の再開を要求する。電源復帰部７１３に対する設定はマスタＣＰＵにより行われる。例えば、マスタとされるＣＰＵ１によりレジスタ７１３１のＣＰＵ３に係る電源領域（ＣＰＵコア部３１及び周辺回路３２）を示す部分に“１”が書き込まれると、電源復帰部７１３は当該電源領域に対する復帰指示を発行する。そして、電源供給の再開後その値を“０”にクリアする。
【００６６】
電源状態部７１４は、内部にレジスタ７１４１を有し、当該レジスタに各電源領域の電源供給状態を示す値が設定される。これにより、ＣＰＵ１〜ＣＰＵ３の各電源領域の電源状態がモニタリングされる。
【００６７】
電源領域排他制御部７１５は、内部にレジスタ７１５１を有し、ＣＰＵ１〜３の電源領域毎に電源供給の遮断を許可するか否かを示す情報が当該レジスタに設定される。レジスタ７１５１は、マスタＣＰＵ１〜３により設定される。例えばＣＰＵ１が処理を実行しているときは、レジスタ７１５１のＣＰＵ１に係る部分に“１”が設定されることで電源供給の遮断を許可しないことが示され、ＣＰＵ１における処理が完了したときは、レジスタ７１５１のＣＰＵ１に係る部分に“０”が設定されることで電源供給の遮断を許可することが示される。これにより、電源遮断部７１２から電源遮断の要求が発行された場合であっても、その要求に係るＣＰＵの処理が完了するまでは電源遮断は許可されない。
【００６８】
制御信号生成部７１６は、前記レジスタ７１１１、７１２１、７１３１、７１４１、及び７１５１の設定に応じて電源制御信号７００を出力し、各回路の電源スイッチ１６＿１〜１６＿７を制御する。更にパワーオン時に起動ＣＰＵ選択部７２からの選択信号７２２を入力し、当該選択信号７２２によって指定されたＣＰＵ１〜３の電源領域の電源スイッチ１６＿１〜１６＿６を制御して電源を供給する。
【００６９】
外部電源投入時の電源制御部７１による電源制御の流れについて説明する。
【００７０】
図１１は、電源投入時のマイクロプロセッサ１０の動作の流れを示すフロー図である。
【００７１】
外部からマイクロプロセッサ１０に電源電圧が供給されると（Ｓ１０１）、後述するリセット制御部７４によるパワーオンリセットにより各回路のレジスタ等の値が初期化され、所要のノードの電圧が最適な値となるのを待ってパワーオンリセットが解除される（Ｓ１０２）。パワーオンリセット解除後、外部端子Ｐ１〜Ｐ１２に入力された情報が各ラッチ回路に取り込まれる（Ｓ１０３）。電源制御部７１の制御信号生成部７１６は、起動ＣＰＵ選択部７２からの選択信号７２２によって指示されたＣＰＵに係る電源領域と、内蔵ＲＯＭや内蔵ＲＡＭ及び周辺回路４〜６に電源供給を行う（Ｓ１０４）。これにより起動されるＣＰＵが動作可能となる。その後、周辺回路４〜６や内蔵ＲＡＭ９等のリソースの初期化が行われる（Ｓ１０５）。なお、周辺回路４〜６への電源投入は、ＣＰＵ１〜３が起動した後にソフトウェアによって個別に電源供給を行ってもよい。以上により電源投入時の処理が完了する。
【００７２】
次にパワーオンリセット後に、電源遮断及び電源復帰を行う場合の制御方法について説明する。ここでは、スレーブとされるＣＰＵ２の電源遮断と電源復帰を行う場合を一例として説明する。
【００７３】
図１２は、パワーオンリセット後に電源遮断を行う場合の説明図である。
【００７４】
同図では、パワーオンに際し、スイッチ１００からＣＰＵ１〜ＣＰＵ３の起動を指示する情報７２０が外部端子Ｐ１〜Ｐ３に入力され、スイッチ１０１からＣＰＵ１をマスタとすることを指示する情報７３０が外部端子Ｐ４〜Ｐ６に入力される。これによりＣＰＵ１がマスタＣＰＵとして起動し、ＣＰＵ２及びＣＰＵ３がスレーブＣＰＵとして起動する。この状態において、マスタとされるＣＰＵ１が電源遮断部７１２にアクセスし、電源遮断部７１２のレジスタ７１２１の値を、例えば“０００”から“０１０”に書き換えることでＣＰＵ２の電源遮断を要求する。これにより、電源遮断部７１２からＣＰＵ２の電源遮断指示が発行され、当該指示を受けた制御信号生成部７１６が、電源制御信号７００によりＣＰＵ２の電源供給を停止させる。その後、電源遮断部７１２のレジスタ７１２１の値は“０００”にリセットされる。
【００７５】
図１３は、上記電源遮断の制御の流れを示すフロー図である。
【００７６】
マスタとされるＣＰＵ１が所定のプログラムを実行することにより、ＣＰＵ２の電源供給を停止するための電源遮断処理が開始される（Ｓ２０１）。ＣＰＵ１は先ず電源状態部７１４を参照し、ＣＰＵ２の電源領域の電源供給状態を確認する（Ｓ２０２）。これによりＣＰＵ２に電源が供給されていないことが確認された場合には電源遮断処理を終了する（Ｓ２０９）。一方、ＣＰＵ２に電源が供給されていることが確認された場合には、ＣＰＵ１は電源管理部７１１を参照し、ＣＰＵ２の電源領域の電源制御が許可されているか否かを判別する（Ｓ２０３）。ここでＣＰＵ２の電源領域の電源制御が許可されていない場合には、電源遮断処理を終了する（Ｓ２０９）。一方ＣＰＵ２の電源領域の電源制御が許可されている場合には、ＣＰＵ１は電源領域排他制御部７１５を参照し、ＣＰＵ２の電源遮断が可能な状態であるか否かを判別する（Ｓ２０４）。例えばＣＰＵ２がデータ処理中であり電源遮断が許可されていないときは、ＣＰＵ１は電源遮断が許可されるまで待機する。その後ＣＰＵ２の電源遮断が許可されたら、ＣＰＵ１は電源遮断部７１２を制御するアクセス権を取得し、電源遮断部７１２のレジスタ７１２１の値を“０００”から“０１０”に書き換える（Ｓ２０５）。これにより電源遮断部７１２から電源の遮断指示が発行され、ＣＰＵ２のパワーダウンのための処理が開始される（Ｓ２０６）。先ずＣＰＵ２へのクロック信号の供給が停止され（Ｓ２０７）、その後、制御信号生成部７１６によりＣＰＵ２の電源領域の電源供給が停止される（Ｓ２０８）。以上により、電源遮断処理が終了する（Ｓ２０９）。なお、クロック信号の供給を停止する方法の詳細は後述する。
【００７７】
図１４は、パワーオンリセット後に電源復帰を行う場合の説明図である。
【００７８】
同図では、前述した図１２及び図１３の方法によってＣＰＵ２の電源供給を遮断した後に、再度ＣＰＵ２に電源を供給する場合を一例として示している。この場合において、マスタとされるＣＰＵ１が電源復帰部７１３にアクセスし、レジスタ７１３１の値を、例えば“０００”から“０１０”に書き換えると、電源復帰部７１３からＣＰＵ２の電源復帰指示が発行される。電源復帰指示を受けた制御信号生成部７１６は、電源制御信号７００によりＣＰＵ２に電源を供給する。その後、電源復帰部７１３のレジスタ７１３１の値は“０００”にリセットされる。
【００７９】
図１５は、上記電源復帰の制御の流れを示すフロー図である。
【００８０】
マスタとされるＣＰＵ１が所定のプログラムを実行することにより、ＣＰＵ２の電源を供給するための電源復帰処理が開始される（Ｓ３０１）。ＣＰＵ１は電源状態部７１４を参照し、ＣＰＵ２の電源領域の電源供給状態を確認する（Ｓ３０２）。ＣＰＵ２にすでに電源が供給されていることが確認できた場合には電源復帰処理を終了する（Ｓ３０９）。一方、ＣＰＵ２に電源が供給されていないことが確認できた場合には、ＣＰＵ１は電源管理部７１１を参照し、ＣＰＵ２の電源領域の電源制御が許可されているか否かを判別する（Ｓ３０３）。ここで、ＣＰＵ２の電源領域の電源制御が許可されていない場合には、電源復帰処理を終了する（Ｓ３０９）。一方、ＣＰＵ２の電源領域の電源制御が許可されている場合には、ＣＰＵ１は電源領域排他制御部７１５を参照し、ＣＰＵ２の電源の供給が可能な状態であるか否かを判別する（Ｓ３０４）。ＣＰＵ２の電源供給が許可されていない場合には、ＣＰＵ１は電源供給が許可されるまで待機する。その後、ＣＰＵ２の電源供給が許可された場合には、ＣＰＵ１は電源復帰部７１３を制御するアクセス権を取得し、電源復帰部７１３のレジスタ７１３１の値を“０００”から“０１０”に書き換える（Ｓ３０５）。これにより電源復帰部７１３から電源の復帰指示が発行され、制御信号生成部７１６によりＣＰＵ２の電源領域に電源が供給される（Ｓ３０６）。その後、ＣＰＵ２へクロック信号が供給され（Ｓ３０７）、ＣＰＵ２の電源領域のリセットが解除される（Ｓ３０８）。以上により、電源復帰処理が終了する（Ｓ３０９）。
【００８１】
図１６に、本実施の形態に係るマイクロプロセッサ１０の比較例として、電源遮断機能を有しないマイクロプロセッサの状態遷移図の一例を示す。同図に示されるように当該マイクロプロセッサには、命令実行状態３００、リセット状態３０１、及びスタンバイ状態３０２を有する。命令実行状態３００は、ＣＰＵがプログラム処理を実行している状態である。リセット状態３０１は、ＣＰＵがパワーオンリセットやシステムリセットにより、プログラムカウンタや各種レジスタの値がリセットされる状態である。リセット状態３０１へはリセット信号の発生により遷移し、リセット信号の解除によりリセット状態３０１から命令実行状態３００に遷移する。スタンバイ状態３０２は、ＣＰＵに電源が供給された状態において、クロック信号の供給が停止されること等によりＣＰＵが動作を停止している状態である。スタンバイ状態３０２へはスリープ命令の実行等により遷移し、外部からの割り込みやタイマによる割り込みの発生によりスタンバイ状態３０２から命令実行状態３００に遷移する。またリセット信号の発生により、スタンバイ状態３０２からリセット状態３０１に遷移する。
【００８２】
図１７に本実施の形態に係るマイクロプロセッサ１０の状態遷移図の一例を示す。同図に示されるように、マイクロプロセッサ１０は、図１６に示される３つの状態に加え、電源遮断状態３０３を有する。電源遮断状態３０３は、前述したように電源供給を停止してＣＰＵの動作を停止する状態である。これにより、マイクロプロセッサ１０は、電源遮断機能を有しないマルチプロセッサに比べてより低消費電力化に資する。
【００８３】
（４）クロック制御部７６
クロック制御部７６は、ＣＰＵ１〜３に対するクロック信号の供給と停止を制御する。クロック制御部７６は、例えばクロックパルス発生回路（ＣＰＧ）であり、後述するリセット制御部７４におけるクロック制御レジスタ７４３の値に応じて、各ＣＰＵに対するクロック信号の供給と停止を制御する。
【００８４】
（５）リセット制御部７４、起動アドレス制御部７５
リセット制御部７４は、ＣＰＵ１〜３及び周辺回路４〜６等に対するリセット信号の生成、クロック制御部７６を制御することによるクロック信号の供給と停止の制御、及びＣＰＵ１〜３が実行するプログラム領域の先頭アドレスの指定等を行う。リセット制御部７４は、内部に複数のラッチ回路（レジスタ）を有する。具体的には、リセット制御部７４は、起動対象メモリ指定レジスタ７４１、起動アドレス指定レジスタ７４２、クロック制御レジスタ７４３、及びシステムリセット制御レジスタ７４４を有する。以下、各レジスタ７４１〜７４４とそれらを利用したリセット制御部７４の動作について詳細に説明する。
【００８５】
起動対象メモリ指定レジスタ７４１は、パワーオンリセット解除後の各ＣＰＵ１〜３の実行するプログラムの読み出し先を示すレジスタである。ＣＰＵ１〜３がパワーオンリセット解除後に実行するプログラムの読み出し先のメモリを指定する情報７４０が外部端子Ｐ７〜Ｐ１２から入力され、パワーオンリセットに際し、当該情報７４０が起動対象メモリ指定レジスタ７４１に格納される。
【００８６】
図１８は、起動対象メモリ指定レジスタ７４１の説明図である。図１８の（Ａ）に示されるように、起動対象メモリ指定レジスタ７４１は、ＣＰＵ１〜３毎に２ビットが割り当てられる。起動対象メモリ指定レジスタ７４１の設定例が図１８の（Ｂ）〜（Ｄ）に示される。具体的には、図１８の（Ｂ）に示すように、例えばレジスタ７４１の値が“００”のときは、パワーオンリセット解除後にＣＰＵ１が実行するプログラムの読み出し先のメモリは外部メモリ１４とされる。この場合、リセット制御部７４は外部メモリ１４の所定のアドレスをプログラムの開始アドレスとしてＣＰＵ１にアドレス指定７４５を行う。前記外部メモリ１４の所定のアドレスは、例えば外部メモリ１４の先頭アドレスである。またレジスタ７４１の値が“０１”のときは読み出し先のメモリは内蔵ＲＯＭ８とされる。この場合、リセット制御部７４は内蔵ＲＯＭ８の所定のアドレスをプログラムの開始アドレスとしてＣＰＵ１にアドレス指定７４５を行う。前記内蔵ＲＯＭ８の所定のアドレスは、例えば内蔵ＲＯＭ８の先頭アドレスである。更にレジスタ７４１の値が“１０”のときは読み出し先のメモリは内蔵ＲＡＭ９とされる。この場合、リセット制御部７４は内蔵ＲＡＭ９の所定のアドレスをプログラムの開始アドレスとしてＣＰＵ１にアドレス指定７４５を行う。前記内蔵ＲＡＭ１９の所定のアドレスは、例えば内蔵ＲＡＭ９の先頭アドレスである。上記の例は、ＣＰＵ２及びＣＰＵ３の場合も同様である。
【００８７】
図１９は、起動時の読み出し先のメモリが指定される場合の説明図である。
【００８８】
同図では、実装基板２００上に設置されたスイッチ１０２が外部端子Ｐ７〜Ｐ１２に接続され、スイッチ１０２からパワーオンリセット解除後のメモリを指示する情報７４０が外部端子Ｐ７〜Ｐ１２に入力され、前述のスイッチ１０１からＣＰＵ１をマスタとすることを指示する情報７３０が外部端子Ｐ４〜Ｐ６に入力される。同図におけるスイッチ１０２は、例えば、スイッチオン（ＯＮ）のとき外部端子Ｐ７〜Ｐ１２はプルアップとされ、スイッチオフ（ＯＦＦ）のとき外部端子Ｐ７〜Ｐ１２はプルダウンとされる。これにより、ＣＰＵ１がマスタＣＰＵとして起動し、ＣＰＵ２及びＣＰＵ３がスレーブＣＰＵとして起動する。また、リセット制御部７４のレジスタ７４１に情報７４０（“０００１０１”）が取り込まれることにより、ＣＰＵ１のパワーオンリセット解除後のプログラムの読み出し先のメモリは外部メモリ１４とされ、ＣＰＵ２及びＣＰＵ３の読み出し先のメモリは内蔵ＲＯＭとされ、各ＣＰＵ１〜３にアドレス指定７４５される。
【００８９】
起動アドレス指定レジスタ７４２は、マスタＣＰＵにより、システムリセット後の各ＣＰＵ１〜３の実行するプログラムの読み出し方法を示す情報７４６が設定されるレジスタである。当該レジスタの値により、パワーオンリセット解除後に実行するプログラムの読み出し先とシステムリセット後に実行するプログラムの読み出し先を別々に設定することが可能となる。具体的には、マスタＣＰＵとして起動したＣＰＵをシステムリセット後にスレーブＣＰＵに切り替える場合等に利用される。例えば、マスタＣＰＵとしての起動プログラムとスレーブＣＰＵとしての起動プログラムを夫々メモリに格納しておき、ＣＰＵ１にパワーオンリセット解除後はマスタＣＰＵとしての起動プログラムを読み出させ、システムリセット後は当該レジスタ７４２によりスレーブＣＰＵとしての起動プログラムを読み出させる。これによりマスタとして起動したＣＰＵ１をシステムリセット後にスレーブとして動作させることができる。
【００９０】
図２０は、起動アドレス指定レジスタ７４２の説明図である。図２０の（Ａ）に示されるように、起動アドレス指定レジスタ７４２は、ＣＰＵ１〜３毎に２ビットが割り当てられ、例えば、パワーオンリセット解除後は、初期値として起動対象メモリ指定レジスタ７４１の値が設定される。
【００９１】
図２０の（Ｂ）〜（Ｄ）には、起動アドレス指定レジスタ７４２の設定例が示される。
【００９２】
図２０の（Ｂ）の場合において、起動アドレス指定レジスタ７４２に例えば“１１”以外の値が設定された場合、すなわち起動対象メモリ指定レジスタ７４１の値（初期値）が設定されている場合には、リセット制御部７４は、システムリセット後に実行するプログラムの先頭アドレスの変更は行わず、パワーオンリセット後に実行するプログラムの先頭アドレスと同じアドレスをアドレス指定する。例えば、リセット制御部７４は、レジスタ７４２の値が“００”のときは外部メモリ１４の先頭アドレスを指定し、レジスタ７４２の値が“０１”のときは内蔵ＲＯＭ８の先頭アドレスを指定し、“１０”のときは内蔵ＲＡＭ９の先頭アドレスをシステムリセット後に実行するプログラムの先頭アドレスとして指定する。
【００９３】
一方、レジスタ７４２に例えば“１１”の値が設定された場合には、リセット制御部７４は、システムリセット後に実行するプログラムの先頭アドレスをパワーオンリセット解除後に実行するプログラムの先頭アドレスから変更する。具体的には、リセット制御部７４は、マスタＣＰＵによって起動アドレス制御部７５に設定されたアドレス情報７５１に基づいて、システムリセット後に実行するプログラムの先頭アドレスを指定する。ここで、システムリセット後に実行するプログラムの先頭アドレスの変更方法について、起動アドレス制御部７５の機能とともに詳細に説明する。
【００９４】
起動アドレス制御部７５は、システムリセット後にＣＰＵ１〜３が実行するプログラム領域の先頭アドレスを指定するためのアドレス情報７５１が設定されるレジスタを有する。
【００９５】
図２１は、起動アドレス制御部７５の説明図である。図２１の（Ａ）に示されるように、システムリセット後の先頭アドレスを指定するためのアドレス情報７５１がＣＰＵ１〜３毎に対応されて設定される。当該アドレス情報７５１はマスタＣＰＵによって設定される。設定されるアドレス情報７５１は、例えばシステムリセット後にＣＰＵ１〜３が実行するプログラム領域として指定される先頭アドレスの上位ビットの値である。例えば、システムリセット後に実行するプログラムの先頭アドレスとして指定するアドレスが３２ビットである場合、そのアドレスの上位２０ビット（３１ビット〜１１２ビット）がアドレス情報７５１として設定される。
【００９６】
リセット制御部７４は、起動アドレス指定レジスタ７４２の所定のＣＰＵに係る部分に“１１”が設定された場合、起動アドレス制御部７５に設定されたアドレス情報７５１に基づいてアドレスを生成する。例えば図２１の（Ｂ）に示されるように、リセット制御部７４は、上位２０ビットを前記起動アドレス制御部７５に設定されたアドレス情報７５１の値とし、下位１２ビット（１１ビット〜０ビット）をすべて“０”としたアドレスをシステムリセット後に実行するプログラムの先頭アドレスとして生成し、生成したアドレスを対象とされるＣＰＵに対してアドレス指定７５４を行う。これにより、マスタＣＰＵが指定したアドレスを先頭アドレスとした新たなプログラムを実行させることが可能となる。なお、パワーオンリセット解除後は、前記アドレス情報７５１の初期値として全ビットに“０”が設定される。
【００９７】
クロック制御レジスタ７４３は、ＣＰＵ１〜３へのクロック信号の供給と停止を示すレジスタである。
【００９８】
図２２は、クロック制御レジスタ７４３の説明図である。図２２の（Ａ）に示されるように、クロック制御レジスタ７４３はＣＰＵ１〜３毎に１ビットが割り当てられる。図２２の（Ｂ）に示されるように、レジスタ７４３の値が“０”のとき、リセット制御部７４はＣＰＵ１へのクロック信号の供給を停止するようにクロック制御部７６を制御する。一方、レジスタ７４３の値が“１”のとき、リセット制御部７４はＣＰＵ１へのクロック信号を供給するようにクロック制御部７６を制御する。ＣＰＵ２及びＣＰＵ３の場合も図２２の（Ｃ）及び（Ｄ）に示されるように、ＣＰＵ１の場合と同様である。
【００９９】
クロック制御レジスタ７４３は、パワーオンリセット解除後、起動ＣＰＵ選択部７２のレジスタ７２１の値が初期値として設定される。これにより、起動されるＣＰＵに対してクロック信号が供給され、起動されないＣＰＵに対してはクロック信号が供給されない。パワーオンリセット後は、マスタとされるＣＰＵ又はアクセス権が与えられたスレーブＣＰＵによって値が設定される。例えば、スレーブとして動作しているＣＰＵ２をスタンバイ状態にする場合、マスタであるＣＰＵ１がクロック制御レジスタ７４３を制御することにより、ＣＰＵ２に対するクロック信号の供給を停止させる。また、パワーオンリセット後にマスタであるＣＰＵ１がスレーブとして起動させたＣＰＵ２の起動シーケンスの開始のタイミングを制御する場合、ＣＰＵ１がクロック制御レジスタ７４３を制御してＣＰＵ２のクロック信号の供給を開始するタイミングを調整する。更に、前述の図１３及び図１５に示したＣＰＵの電源の遮断処理や電源の復帰処理に際し、当該処理を要求したＣＰＵがクロック制御レジスタ７４３を制御することにより、処理対象のＣＰＵへのクロック信号の供給及び停止を行う。なお、この場合は、ＣＰＵの代わりに電源制御部７１の制御信号生成部７１６が制御レジスタ７４３を制御してクロック信号の供給と停止を行ってもよい。
【０１００】
システムリセット制御レジスタ７４４は、システムリセットにおけるリセット信号のアサートとネゲートを示すレジスタである。
【０１０１】
図２３は、システムリセット制御レジスタ７４４の説明図である。図２３の（Ａ）に示されるように、システムリセット制御レジスタ７４４はＣＰＵ１〜３毎に１ビットが割り当てられる。図２３の（Ｂ）に示されるように、レジスタ７４４の値が“０”のとき、リセット制御部７４はＣＰＵ１へのリセット信号をネゲートする。一方、レジスタ７４４の値が“１”のとき、リセット制御部７４はＣＰＵ１へのリセット信号をアサートする。リセット信号がアサートされてから一定時間経過後、再びレジスタ７４４の値が“０”にリセットされ、リセット信号がネゲートされる。ＣＰＵ２及びＣＰＵ３の場合も図２３の（Ｃ）及び（Ｄ）に示されるようにＣＰＵ１と同様である。
【０１０２】
システムリセット制御レジスタ７４４は、パワーオンリセット解除後、初期値として“０”が設定される。パワーオンリセット後は、マスタとされるＣＰＵによって値が設定される。例えば、スレーブとして動作しているＣＰＵ２をリセット状態にする場合、マスタであるＣＰＵ１がシステムリセット制御レジスタ７４４を制御することにより、ＣＰＵ２に対するリセット信号をアサートする。
【０１０３】
次に、制御部７を利用したマイクロプロセッサ１０の動作の一例として、スレーブＣＰＵをマスタＣＰＵに切り替える処理について説明する。
【０１０４】
図２４は、スレーブＣＰＵをマスタＣＰＵに切り替える場合の処理の流れの一例を示したフロー図である。同図には、パワーオン時にＣＰＵ１がマスタＣＰＵとして起動し、ＣＰＵ２がスレーブＣＰＵとして起動した状態において、マスタＣＰＵをＣＰＵ１からＣＰＵ２に切り替える場合の処理を一例として示す。
【０１０５】
マスタＣＰＵの切り替えに係る処理は、マスタであるＣＰＵ１が、ＣＰＵ２をマスタＣＰＵとするプログラムを実行することにより開始される（Ｓ４０１）。先ず、ＣＰＵ１は、制御部７における起動アドレス指定レジスタ７４２と起動アドレス制御部７５にアクセスする。すなわち、ＣＰＵ１は、起動アドレス制御部７５の値の有効化のために起動アドレス指定レジスタ７４２の値を変更し、ＣＰＵ２がシステムリセット後に実行するプログラムの先頭アドレスを設定するために、起動アドレス制御部７５に値を設定する（Ｓ４０２）。例えば、ＣＰＵ１は起動アドレス指定レジスタ７４２の値を“１１”に変更し、起動アドレス制御部７５には、ＣＰＵ２のマスタＣＰＵとしての起動プログラムの先頭アドレスの上位アドレスをアドレス情報７５１として設定する。
【０１０６】
次に、ＣＰＵ１は制御部７における電源状態部７１４を参照し、ＣＰＵ１の電源領域の電源供給状態を確認する（Ｓ４０３）。更にＣＰＵ１は電源管理部７１１にアクセスし、ＣＰＵ１の電源領域の電源制御を許可する（Ｓ４０４）。そして、ＣＰＵ１は、ＣＰＵ２に対しＣＰＵ１の電源領域の停止を指示する（Ｓ４０５）。指示を受けたＣＰＵ２は電源領域排他制御部７１５を参照し、ＣＰＵ１の電源遮断が可能な状態であるか否かを判別する（Ｓ４０６）。例えばＣＰＵ１がデータ処理中であり電源遮断が許可されていない場合には、ＣＰＵ２は電源遮断が許可されるまで待機する。その後、ＣＰＵ１の電源遮断が許可された場合には、ＣＰＵ２は電源遮断部７１２を制御するアクセス権を取得し、電源遮断部７１２のレジスタ７１２１の値を“０００”から“１００”に書き換える（Ｓ４０７）。これにより、電源遮断部７１２から電源の遮断指示が発行されＣＰＵ１のパワーダウンのための処理が開始される（Ｓ４０８）。当該処理が開始されると、ＣＰＵ１へのクロック信号の供給が停止され（Ｓ４０９）、その後、制御信号生成部７１６によりＣＰＵ１の電源領域の電源供給が停止される（Ｓ４１０）。次に、ＣＰＵ２は制御部７のシステムリセット制御レジスタ７４４にアクセスし、当該レジスタのＣＰＵ２に対応する部分に“１”を設定し、リセット信号をアサートする（Ｓ４１１）。システムリセット後、リセット制御部７４は起動対象メモリ指定レジスタ７４１と起動アドレス指定レジスタ７４２と起動アドレス制御部７５の設定内容に基づいてＣＰＵ２に対して実行するプログラムの先頭アドレスを指定する（Ｓ４１２）。ここでは前述したように、ステップ４０２において起動アドレス指定レジスタ７４２のＣＰＵ２に対応する部分に“１１”が設定されているため、リセット制御部７４は起動アドレス制御部７５のアドレス情報７４５に基づいて生成したアドレスをＣＰＵ２に対しアドレス指定する。アドレス指定７４５を受けたＣＰＵ２は、指定されたアドレスを先頭アドレスとしたプログラムを実行することにより、マスタＣＰＵとして再起動される（Ｓ４１３）。その後、ＣＰＵ２はＣＰＵ１をスレーブとして起動させるか否か判断し（Ｓ４１４）、復帰させる場合には前述の図１５で示した処理を実行する（Ｓ４１５）。ＣＰＵ１を復帰させない場合には、マスタＣＰＵの切り替え処理を完了する（Ｓ４１６）。以上により、マスタＣＰＵの切り替えがなされる。
【０１０７】
≪マイクロプロセッサ１０を適用したシステムの動作例≫
上記マイクロプロセッサ１０を、携帯電話機能（インターネットアクセス機能）を備えるカーナビゲーションシステムに適用した場合のシステム全体の動作について説明する。ここでは、上記カーナビゲーションシステムの起動後、周辺の地図情報や交通情報をダウンロードして地図データを描画する場合を一例として、マイクロプロセッサ１０による一連の動作を説明する。
【０１０８】
（１）ＣＰＵ１の単独起動
当該カーナビゲーションシステムは、起動後、地図情報や交通情報等のダウンロードを行うため、ＣＰＵ１を起動させる。前述したようにＣＰＵ１はＷ−ＣＤＭＡ等の無線アクセス機能を専門に扱うことができるので、カーナビゲーションシステムはＣＰＵ１を単独で起動させる。このとき、ＣＰＵ１はマスタとして起動される。ＣＰＵ１がマスタとして起動するためには、マスタとして起動するための起動プログラムが必要となる。起動プログラムの格納先は以下である。
【０１０９】
図２５は、ＣＰＵ１〜３のマスタ用の起動プログラム（以下、「マスタ用ブートコード」とも称する。）とスレーブ用の起動プログラム（以下、「スレーブ用ブートコード」とも称する。）の格納先の一例を示す説明図である。本説明では、同図に示されるように、ＣＰＵ１のマスタ用ブートコードは外部メモリ１４の先頭アドレスから始まる領域に格納されているものとする。また、ＣＰＵ１のスレーブ用ブートコードやＣＰＵ２及びＣＰＵ３のブートコードも同図に示されるように外部メモリ１４に格納されているものとする。
【０１１０】
ＣＰＵ１を単独で起動させるための起動時のマイクロプロセッサ１０の設定は以下となる。外部端子Ｐ１〜Ｐ３に接続された起動ＣＰＵ選択手段としてのスイッチ１００からデータ“１００”が入力され、外部端子Ｐ４〜Ｐ６に接続されたマスタＣＰＵ選択手段としてのスイッチ１０１からデータ“１００”が入力され、更に外部端子Ｐ７〜Ｐ１２に接続された起動対象メモリ選択手段としてのスイッチ１０２からデータ“００００００”が入力される。これにより、マイクロプロセッサ１０のパワーオンリセットに際し、“１００”が起動ＣＰＵ選択部７２のレジスタ７２１に格納され、“１００”がマスタＣＰＵ選択部７３のレジスタ７３１に格納され、“００００００”がリセット制御部７４の起動対象メモリ指定レジスタ７４１に格納されることにより、ＣＰＵ１がマスタＣＰＵとして起動される。
【０１１１】
（２）ＣＰＵ２の起動
次に前記カーナビゲーションシステムは、簡単な初期起動用画面をモニタに表示するために、ＣＰＵ１によってＣＰＵ２を起動させる。ＣＰＵ１は、起動アドレス指定レジスタ７４２と起動アドレス制御部７５にアクセスし、これらのレジスタのＣＰＵ２に対応する部分に値を設定する。具体的には、ＣＰＵ１は起動アドレス指定レジスタ７４２に“００”を設定するとともに、起動アドレス制御部７５には図２５に示されるＣＰＵ２のスレーブ用ブートコードが格納されているメモリ領域の先頭アドレスの情報を設定する。その後、ＣＰＵ１が電源制御部７１の電源復帰部７１３１をアクセスすることにより、ＣＰＵ２がスレーブとして起動する。
【０１１２】
（３）ＣＰＵ１によるダウンロード開始
前記カーナビゲーションシステムは、周辺地図（ナビゲーション画面用）データや交通情報のデータのダウンロードをＣＰＵ１に実行させ、内蔵ＲＡＭ９や外部メモリ１４にダウンロードしたデータを格納させる。
【０１１３】
（４）ＣＰＵ２による演算
前記カーナビゲーションシステムは、当該カーナビゲーションシステムを搭載した自車両の位置を把握するため、ＣＰＵ２に対し処理を実行させる。具体的には、ＣＰＵ２はＣＰＵ１によりダウンロードされたデータに基づいて自車両の位置情報等を演算により算出する。そしてＣＰＵ２は、地図描画用ＣＰＵであるＣＰＵ３に自車両の位置とその周辺の地図をモニタに描画させるため、自車両の位置付近の地図データを内蔵ＲＡＭ９又は外付けの共用ＲＡＭに展開し、それ以外の地図データ等は外部メモリ１４に格納する。その後もＣＰＵ２は、自車位置と地図データを監視しながら、必要に応じて自車両の位置情報の算出と地図データの内蔵ＲＡＭ９又は共用ＲＡＭへの展開を行う。
【０１１４】
（５）ＣＰＵ３の起動
前記カーナビゲーションシステムは、データをダウンロードしているとき、ＣＰＵ１にダウンロード状況を監視させる。そして、ナビゲーション情報をモニタに描画するための地図データ等が十分に取得できた時点で、マスタであるＣＰＵ１からＣＰＵ３を起動させる。ＣＰＵ１は先ず、起動アドレス指定レジスタ７４２と起動アドレス制御部７５にアクセスし、これらのレジスタのＣＰＵ３に対応する部分に値を設定する。例えば、ＣＰＵ１は起動アドレス指定レジスタ７４２に“００”を設定するとともに、起動アドレス制御部７５には図２５に示されるＣＰＵ３のスレーブ用ブートコードが格納されているメモリ領域の先頭アドレスの情報を設定する。その後、ＣＰＵ１が電源制御部７１の電源復帰部７１３１をアクセスすることにより、ＣＰＵ３の電源復帰指示がなされ、ＣＰＵ３がスレーブとして起動する。
【０１１５】
（６）ＣＰＵ３によるナビゲーション画面の描画開始
前記カーナビゲーションシステムは、新たに起動したＣＰＵ３により、ＣＰＵ２によりＲＡＭに展開された地図データをモニタに描画させる。このときＣＰＵ３は、画像処理用の専用回路である周辺回路６を制御してナビゲーション画面を描画するための処理を実行させてもよい。
【０１１６】
（７）マスタＣＰＵをＣＰＵ１からＣＰＵ３に切り替え
前記カーナビゲーションシステムは、ＣＰＵ１による必要なデータのダウンロードが完了すると、ＣＰＵ１の電源供給を停止させる。この際、ＣＰＵ１はマスタＣＰＵとして起動しているため、その他のＣＰＵをマスタとする必要がある。そこで、ダウンロード完了後はカーナビゲーションシステムとしての主な処理が地図データの描画やメディア再生となることから、その処理を主に担うＣＰＵ３をマスタとするための処理が実行される。
【０１１７】
先ずＣＰＵ１が、起動アドレス指定レジスタ７４２と起動アドレス制御部７５にアクセスし、これらのレジスタのＣＰＵ３に対応する部分に値を設定する。具体的には、ＣＰＵ１は起動アドレス指定レジスタ７４２に“００”を設定するとともに、起動アドレス制御部７５には図２５に示されるＣＰＵ３のマスタ用ブートコードが格納されているメモリ領域の先頭アドレスの情報を設定する。その後、前述した図２４の手順に従って処理が実行されることにより、ＣＰＵ１は電源供給が停止され、ＣＰＵ３がマスタＣＰＵとなる。そして、ＣＰＵ３はマスタＣＰＵ選択部７３のレジスタ７３１の値を“１００”から“００１”に変更し、電源管理部７１１をはじめとする各種レジスタのアクセス権を取得する。なお、ＣＰＵ３がマスタＣＰＵに切り替わるための処理実行中は、ナビゲーション画面の描画処理をＣＰＵ２によって実行させてもよい。
【０１１８】
（８）ＣＰＵ１の再起動
前記カーナビゲーションシステムは、ナビゲーション画面の描画処理中は、ＣＰＵ２により地図データと自車両の位置を計算させ、描画するためのナビゲーション情報が不足しないように監視させる。自車両の移動や周囲の交通状態の変化等により地図データや交通情報等の補充が必要と判断されたら、データの不足が発生する前に、必要なデータをダウンロードさせるためＣＰＵ１を再起動させる。ＣＰＵ１を再起動させるための処理は、マスタＣＰＵであるＣＰＵ３に実行させる。
【０１１９】
ＣＰＵ３は先ず、起動アドレス指定レジスタ７４２と起動アドレス制御部７５にアクセスし、これらのレジスタのＣＰＵ１に対応する部分に値を設定する。具体的には、ＣＰＵ３は起動アドレス指定レジスタ７４２に“００”を設定するとともに、起動アドレス制御部７５には図２５に示されるＣＰＵ１のスレーブ用ブートコードが格納されているメモリ領域の先頭アドレスの情報を設定する。その後、ＣＰＵ３が電源制御部７１の電源復帰部７１３１をアクセスすることにより、ＣＰＵ１がスレーブとして起動する。なお、予めＣＰＵ１のスレーブ用の起動コードの設定とＣＰＵ１のクロック供給停止の設定を行い、システムリセットを発行した状態にしておき、その後ＣＰＵ１の起動要求が発行された場合には、クロック制御レジスタ７４３の設定をクロック停止から供給に書き換えるだけで再起動させることも可能である。
【０１２０】
（９）ＣＰＵ１によるダウンロード開始とＣＰＵ２による演算
前記カーナビゲーションシステムは、ＣＰＵ３により地図描画を実行させながら、ＣＰＵ１により周辺地図のデータや交通情報のデータのダウンロードを実行させ、内蔵ＲＡＭ９や外部メモリ１４にダウンロードしたデータを格納させる。そして、上記（４）と同様にＣＰＵ２によってダウンロードしたデータを基に自車両の位置情報等を算出させる。
【０１２１】
（１０）ＣＰＵ１の電源遮断
前記カーナビゲーションシステムは、不足データ取得後、マスタであるＣＰＵ３によりＣＰＵ１の電源遮断を実行させる。電源遮断の方法は、前述した図１３に示した方法と同様である。
【０１２２】
以上、本実施の形態に係るマイクロプロセッサ１０によれば、外部端子やプログラムヒューズ等により起動させるＣＰＵとマスタとされるＣＰＵを予め選択することができる。また、パワーオンリセット後にＣＰＵに実行させるプログラムの先頭アドレスとパワーオンリセット後にＣＰＵに実行させるプログラムの先頭アドレスを別々に指示することができるから、例えばパワーオン時にスレーブとして起動させたＣＰＵをマスタとして動作させたり、マスタとして起動させたＣＰＵをスレーブとして動作させたりすることが可能となる。これにより、開発するシステムの仕様に応じて、起動させるデータプロセッサとマスタとするデータプロセッサを自由に選択することができ、既存のハードウェア資源とソフトウェア資源の有効活用に資する。更に、マイクロプロセッサ１０の起動後も、起動されたＣＰＵによって選択的にＣＰＵへの電源供給と電源遮断を行うことができる。これにより、電源を落とさないスタンバイ状態に比べてより低消費電力化に資する。
【０１２３】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【０１２４】
例えば、上記説明ではマイクロプロセッサ１０に内蔵されるＣＰＵの数を３つとしたが、ＣＰＵの数に応じて各種レジスタのビット数等を変更すれば搭載されるＣＰＵの数に制限はない。また、上記説明ではアーキテクチャが異なるＣＰＵを複数備えるマイクロプロセッサに適用する場合を一例として示したが、同一のアーキテクチャのＣＰＵを複数備えるマイクロプロセッサにも適用可能である。
【０１２５】
ＣＰＵを起動させるか否かは、電源制御部７１により電源を供給するか否かにより行うことを一例として示したが、クロック制御部７６によりクロック信号を供給するか否かにより行うことも可能である。これによれば、電源供給を停止させる場合に比べて低消費電力化の面では劣るが、ＣＰＵを復帰させるために電源を再投入する場合よりも早く復帰させることができる。
【０１２６】
電源制御部７１やリセット制御部７４の各種レジスタの設定等をマスタＣＰＵが行うことを一例として示したが、これに限られず、マスタＣＰＵから指示を受けたスレーブＣＰＵが代わりに設定してもよい。例えば電源遮断を行うために電源遮断部７１２のレジスタにアクセスするのはマスタＣＰＵに限らず、マスタＣＰＵからその指示を受けたスレーブＣＰＵが行ってもよい。
【０１２７】
図２１に示した起動アドレス制御部７５に格納されるアドレス情報７５１を、ＣＰＵが指定する先頭アドレスの上位２０ビットの値としたが、これに限られず、先頭アドレスの全ビットの値としてもよい。
【０１２８】
図２４に示したマスタＣＰＵの切り替えに係る処理について、マスタであるＣＰＵがプログラムを実行することで当該処理が開始される場合を一例として示したが、これに限られずマスタとなる予定のスレーブＣＰＵが当該プログラムを実行することで開始させてもよい。
【０１２９】
起動対象メモリ指定レジスタ７４１の値をＣＰＵ１〜３毎に２ビットとしたが、これに限られず、プログラムを格納している記憶部に応じてビット数を変更してもよい。また、起動アドレス指定レジスタ７４２のＣＰＵ１〜３毎のビット数も２ビットに限られず、システムリセット後のプログラムの先頭アドレスの変更が指示されたか否かの判断ができれば、ビット数は特に限定されない。
【０１３０】
更に、上記説明では、起動アドレス指定レジスタ７４２の値が“１１”以外のときは、システムリセット後のプログラムの先頭アドレスをパワーオンリセット解除後のプログラムの先頭アドレスと同一のアドレスとする場合を一例として示したが、これに限られない。例えば、起動アドレス指定レジスタ７４２の“１１”以外の値とパワーオンリセット解除後のプログラムの先頭アドレスとは異なる別の固定アドレスを対応させておき、リセット制御部７４が、その値に応じた固定アドレスをアドレス指定するようにしてもよい。
【符号の説明】
【０１３１】
１０  マイクロプロセッサ
１〜３  ＣＰＵ
Ｐ１〜Ｐ１２  外部端子
１１、２１、３１  ＣＰＵコア部
４〜６、１２、２２、３２  周辺回路
８  内蔵ＲＯＭ
９  内蔵ＲＡＭ
１４  外部メモリ（フラッシュメモリ）
１５  共通バス
１６＿１〜１６＿９  電源スイッチ
７  制御部
７００  電源制御信号
７１  電源制御部
７１１  電源管理部
７１２  電源遮断部
７１３  電源復帰部
７１４  電源状態部
７１５  電源領域排他制御部
７１６  制御信号生成部
７１１１、７１２１、７１３１、７１４１、７１５１  レジスタ
７２  起動ＣＰＵ選択部
７２０  起動させるＣＰＵを示す情報
７２１  ラッチ回路（レジスタ）
７２２、７３２  選択信号
７３  マスタＣＰＵ選択部
７３０  マスタとされるＣＰＵを示す情報
７３１  ラッチ回路（レジスタ）
３００  命令実行状態
３０１  リセット状態
３０２  スタンバイ状態
３０３  電源遮断状態
７４  リセット制御部
７４０  パワーオンリセット解除後のプログラムの読み出し先のメモリを示す情報
７４１  起動対象メモリ指定レジスタ
７４２  起動アドレス指定レジスタ
７４３  クロック制御レジスタ
７４４  システムリセット制御レジスタ
７４５  アドレス指定
７４６  システムリセット後のプログラムの読み出し方法を示す情報
７５  起動アドレス制御部
７５１  アドレス情報
７６  クロック制御部
【図１】
0005636276.tif 000002
【図２】
0005636276.tif 000003
【図３】
0005636276.tif 000004
【図４】
0005636276.tif 000005
【図５】
0005636276.tif 000006
【図６】
0005636276.tif 000007
【図７】
0005636276.tif 000008
【図８】
0005636276.tif 000009
【図９】
0005636276.tif 000010
【図１０】
0005636276.tif 000011
【図１１】
0005636276.tif 000012
【図１２】
0005636276.tif 000013
【図１３】
0005636276.tif 000014
【図１４】
0005636276.tif 000015
【図１５】
0005636276.tif 000016
【図１６】
0005636276.tif 000017
【図１７】
0005636276.tif 000018
【図１８】
0005636276.tif 000019
【図１９】
0005636276.tif 000020
【図２０】
0005636276.tif 000021
【図２１】
0005636276.tif 000022
【図２２】
0005636276.tif 000023
【図２３】
0005636276.tif 000024
【図２４】
0005636276.tif 000025
【図２５】
0005636276.tif 000026