JP5636276B2 - 半導体装置 - Google Patents

半導体装置 Download PDF

Info

Publication number
JP5636276B2
JP5636276B2 JP2010290025A JP2010290025A JP5636276B2 JP 5636276 B2 JP5636276 B2 JP 5636276B2 JP 2010290025 A JP2010290025 A JP 2010290025A JP 2010290025 A JP2010290025 A JP 2010290025A JP 5636276 B2 JP5636276 B2 JP 5636276B2
Authority
JP
Japan
Prior art keywords
cpu
power
information
address
reset
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2010290025A
Other languages
English (en)
Other versions
JP2012137946A (ja
Inventor
明 長尾
明 長尾
俊郎 相澤
俊郎 相澤
真也 神田
真也 神田
洋一 小野寺
洋一 小野寺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2010290025A priority Critical patent/JP5636276B2/ja
Publication of JP2012137946A publication Critical patent/JP2012137946A/ja
Application granted granted Critical
Publication of JP5636276B2 publication Critical patent/JP5636276B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、半導体装置に係り、特に複数のデータプロセッサを内蔵する大規模集積回路に適用して有効な技術に関する。
近年、携帯電話機や携帯型ナビゲーション装置、業務用携帯端末等の小型情報機器の高性能化及び多機能化に伴い、画像や音声の圧縮及び伸張等の特定機能を高速で実行するための専用回路モジュール、システムの中核を担うCPU(Central Processing Unit)、及び当該CPUとは異なる命令セットを持つ他品種のCPU等を、同一パッケージ内に複数個内蔵した大規模集積回路(以下、「マルチプロセッサ」とも称する。)の開発が進んでいる。例えば携帯電話用のマルチプロセッサシステムでは、通話やメール送信等のベースバンド処理を主に実行する通信部や動画再生等のための処理を実行するアプリケーション部、及びその他のシステム部等の各処理部は、特定の機能を実現するためのCPUと専用回路モジュールを有しており、全体として複数個のCPUを搭載したマルチプロセッサを構成している。このようなマルチプロセッサシステムでは、特定のCPUを他のCPUを管理するためのマスタCPUとし、それ以外のCPUをスレーブCPUとした構成をとる場合が多い。いずれのCPUをマスタCPUとするかは、例えば最終製品の仕様に合わせて決定され、前述した携帯電話機用のマルチプロセッサシステムの場合は、通信部のCPUがマスタCPUとされ、その他のCPUがスレーブCPUとして構成されるものがあり、その逆とされるものもある。
システム上でマスタとスレーブを切り替える技術の一つとして、例えば特許文献1に開示がある。特許文献1の技術は、複数のデータ信号制御回路のうち、一つのデータ信号制御回路をデータバスの制御権を有するマスタとし、他のデータ信号制御回路をスレーブとした場合において、マスタに不具合が発生したとき、マスタとスレーブを切り替えることでシステムの全面停止を回避する技術である。
特開平5−122232号公報
ところで、マルチプロセッサシステムを使用する製品開発の初期段階におけるデバッグや専用処理用のソフトウェアの開発において、マスタとされるCPUが固定されていると、そのマスタCPUのブートコードが必要となる。前述の携帯電話機用のマルチプロセッサシステムを用いた製品開発において、例えば製品開発者が過去のソフトウェア資源としてアプリケーション部のCPUに係るブートコードを有しているが、通信部のCPUのブートコードを有していない場合、ブートコードのあるアプリケーション部のCPUから起動させて、その後通信部のCPUを起動させる方が開発は容易となる。しかしながら、マスタCPUが通信部のCPUに固定されていると、当該CPUを他のCPUよりも先に起動させる必要があるので、通信部のCPUのブートコードを新たに開発する必要がある。このことはブートコードの開発コストの増大を招く。
更には、今後マルチプロセッサの設計開発において、開発コストの低減を図るため、他の製品に流用できるような汎用性の高い半導体製品を開発する必要もある。しかしながら、前述した特許文献1の技術は、システム起動時にどのデータ信号制御回路をマスタに設定するか、どのデータ信号制御回路を先に起動させるか等について考慮されていない。
本発明の目的は、要求される仕様に対して柔軟に対応できるマルチプロセッサシステムを提供することにある。
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
すなわち、半導体装置は、パワーオンリセットに際して入力される第1情報に基づいて起動させるデータプロセッサを指示する起動指示部と、パワーオンリセットに際して入力される第2情報に基づいてマスタとされるデータプロセッサを指示するマスタ指示部と、パワーオンリセットに際して入力される第3情報又はパワーオンリセット後に起動されたデータプロセッサから設定される第4情報に基づいて、起動が指示されたデータプロセッサが実行するプログラム領域の先頭アドレスの情報を指示するアドレス指示部とを有する。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
すなわち、本半導体装置によれば、要求仕様に対して柔軟に対応することができる。
図1は、本実施の形態に係る、複数のCPUを内蔵したマイクロプロセッサのブロック図である。 図2は、CPU1とCPU2を起動させる場合の説明図である。 図3は、CPU2を起動させる場合の説明図である。 図4は、CPU1をマスタとして起動させる場合の説明図である。 図5は、CPU2をマスタとして起動させる場合の説明図である。 図6は、CPU1及びCPU2を共に起動させ、起動時にCPU1をマスタとする場合の説明図である。 図7は、CPU1のみを起動させる場合の説明図である。 図8は、CPU1〜3を起動させ、そのうちCPU1をマスタとして起動させる場合の説明図である。 図9は、図8の場合において起動CPU選択部72とマスタCPU選択部73を含めた説明図である。 図10は、電源制御部71の内部構成の一例を示すブロック図である。 図11は、電源投入時の電源制御部71による電源制御の流れの一例を示すフロー図である。 図12は、パワーオンリセット後に電源遮断を行う場合の説明図である。 図13は、電源遮断の制御の流れの一例を示すフロー図である。 図14は、パワーオンリセット後に電源復帰を行う場合の説明図である。 図15は、電源復帰の制御の流れの一例を示すフロー図である。 図16は、電源遮断機能を有しないマルチプロセッサの状態遷移図の一例を示す。 図17は、本実施の形態に係るマイクロプロセッサ10の状態遷移図の一例を示す。 図18は、起動対象メモリ指定レジスタ741の説明図である。 図19は、起動時の読み出し先のメモリが指定される場合の説明図である。 図20は、起動アドレス指定レジスタ742の説明図である。 図21は、起動アドレス制御部75の説明図である。 図22は、クロック制御レジスタ743の説明図である。 図23は、システムリセット制御レジスタ744の説明図である。 図24は、スレーブCPUとマスタCPUを切り替える場合の処理の流れの一例を示したフロー図である。 図25は、CPU1〜3のマスタ用ブートコードとスレーブ用ブートコードの格納先の一例を示す説明図である。
1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
〔1〕(マスタCPUと起動させるCPUを選択可能とする半導体装置)
本発明の代表的な実施の形態に係る半導体装置(10)は、複数のデータプロセッサ(1〜3)と、パワーオンリセットに際して入力される第1情報(720)に基づいて起動させる前記データプロセッサを指示する起動指示部(72)と、パワーオンリセットに際して入力される第2情報(730)に基づいてマスタとされる前記データプロセッサを指示するマスタ指示部(73)と、パワーオンリセットに際して入力される第3情報(740)又はパワーオンリセット後に起動された前記データプロセッサから設定される第4情報(746、751)に基づいて、起動の指示された前記データプロセッサが実行するプログラム領域の先頭アドレスの情報を指示するアドレス指示部(74、75)と、を有する。
これによれば、開発するシステムの仕様に応じて、起動させるデータプロセッサとマスタとするデータプロセッサを自由に選択することができ、既存のハードウェア資源とソフトウェア資源の有効活用に資する。例えば、起動させるデータプロセッサを選択可能とすることで、そのシステムに必要な前記データプロセッサを選択して使用することが可能となるから、ハードウェア資源を有効活用できる。しかしながら、それだけでは既存のソフトウェア資源を有効することができない場合が多い。そこで、当該半導体装置によれば、パワーオン時のマスタとされるデータプロセッサを選択することができ、且つパワーオンリセットに際しての前記先頭アドレスとパワーオンリセット後の前記先頭アドレスを別々に指示することができるから、例えばパワーオン時にスレーブとして起動させた前記データプロセッサをマスタとして再起動させたり、マスタとして起動させた前記データプロセッサをスレーブとして再起動させたりすることができる。一例として、過去のソフトウェア資産として通常動作時にスレーブとされるCPUのブートコードはあるが、通常動作時にマスタとされるCPUのブートコードがない状況において本半導体装置を適用する場合を考える。この場合、初めに通常時にスレーブとされる前記データプロセッサをマスタとして起動させ、起動した前記データプロセッサにより通常時にマスタとされる前記データプロセッサをスレーブとして起動させる。その後、スレーブとして起動した前記データプロセッサが実行するプログラム領域の先頭アドレスをマスタ用のプログラム領域の先頭アドレスに切り替えることで、スレーブとして起動した前記データプロセッサをマスタとして再起動させることができる。これによれば、本来マスタとして動作する前記データプロセッサのブートコードを新たに開発する必要がなく、既存のソフトウェア資産を有効に活用することができるから、ブートコードの開発コストを抑えることが可能となる。
〔2〕(外部端子により選択可能)
項1の半導体装置において、データが入力される外部端子(P1〜P12)を更に有し、前記第1情報乃至第3情報は、前記外部端子から入力されるデータである。
これによれば、起動させるデータプロセッサとマスタとするデータプロセッサを容易に選択することができる。
〔3〕(ヒューズから読み出された値により選択可能)
項1の半導体装置において、データが格納される不揮発性の記憶部を更に有し、前記第1情報乃至第3情報は、前記記憶部から入力されるデータである。
これによれば、起動させるデータプロセッサとマスタとするデータプロセッサを容易に選択することができ、且つ外部端子を設ける必要がない。
〔4〕(アドレス指示部の動作)
項1乃至3のいずれかの半導体装置において、前記アドレス指示部は、パワーオンリセットに応答して、起動が指示された前記データプロセッサに対し前記第3情報に基づいた前記先頭アドレスを指示し、パワーオンリセット後のシステムリセットに応答して、起動が指示された前記データプロセッサに対し前記第4情報に基づいた前記先頭アドレスを指示する。
これによれば、例えばシステムリセット解除後に実行するプログラムとパワーオンリセット解除後に実行するプログラムとを別々のプログラムとすることができる。
〔5〕(任意のアドレスが指定可能)
項4の半導体装置において、前記アドレス指示部は、マスタとされる前記データプロセッサにより指定されたアドレス情報が格納される起動アドレス制御部(75)を更に有し、前記第4情報は、前記起動アドレス制御部に格納されたアドレス情報に基づいて前記先頭アドレスを指示することを示す情報を含む。
これによれば、CPUがシステムリセット後に実行するプログラム領域の先頭アドレスを、マスタCPUが指定する任意のアドレスとすることが可能となるから、プログラムマッピングの自由度が増す。
〔6〕(アドレスは固定)
項4又は5の半導体装置において、前記第4情報は、予め固定されたアドレスを前記先頭アドレスとすることを指示する情報を含む。
〔7〕(第4情報が設定されるラッチ回路)
項4乃至6のいずれかの半導体装置において、前記アドレス指示部は、前記第4情報が設定されるラッチ回路(742)を有する。
これによれば、起動された前記データプロセッサが一度前記第4情報を出力すれば、その値が前記ラッチ回路に設定されるから、前記データプロセッサがその都度前記第4情報を出力しなくてもよい。
〔8〕(電源供給制御)
項1乃至7のいずれかの半導体装置において、前記データプロセッサに供給する電源を管理するための電源制御部(71)を更に有し、前記電源制御部は、前記起動指示部からの指示に基づいて選択した前記データプロセッサへ電源を供給させる。
これによれば、パワーオン時に指定された前記データプロセッサを起動させることが容易となる。
〔9〕(電源遮断制御)
項8の半導体装置において、前記電源制御部は、起動された前記データプロセッサからの指示に基づいて選択した前記データプロセッサへの電源の供給を停止させる。
これによれば、起動させた前記データプロセッサを停止させることができるから、例えば、データプロセッサによる特定の処理が終了した後にそのデータプロセッサの電源供給を停止すれば、電源を落とさないスタンバイ状態に比べてより低消費電力化に資する。
〔10〕(電源復帰制御)
項8又は9の半導体装置において、前記電源制御部は、起動された前記データプロセッサからの指示に基づいて選択した前記データプロセッサへ電源を供給させる。
これによれば、一旦電源の供給を停止した前記データプロセッサを再度動作させることが可能となるとともに、パワーオン時に起動させなかったデータプロセッサを後から起動させることも可能となり、よりシステム開発の自由度が増す。
〔11〕(クロック信号の供給と停止)
項1乃至10のいずれかの半導体装置において、起動が指示された前記データプロセッサへのクロック信号の供給を制御するクロック信号制御部(743、76)を更に有し、前記クロック信号制御部は、パワーオンリセットに際して入力される前記第1情報、又はマスタとされる前記データプロセッサからの指示に基づいて選択した前記データプロセッサに対し、クロック信号の供給と停止を制御する。
これによれば、前記半導体装置の省電力化に資することができ、且つ前記データプロセッサへの電源供給を停止させた場合に比べて動作を再開させるのに要する時間を短縮することができる。例えば前記データプロセッサの動作を停止させるために電源供給を停止させた場合、前記データプロセッサを再動作させるためには再度電源を供給する必要があるが、電源を供給してから電圧が安定するまでに時間を要する場合があり、その分、動作復帰までの時間が増えることになる。それに対して項11の半導体装置によれば、電源供給させた状態でクロック信号の停止と供給を行うから、動作を再開させるのに要する時間を短縮することが可能となる。
また、項11の半導体装置によれば、起動が指示された前記データプロセッサにのみクロック信号を供給することが可能となり、無駄なクロック信号の供給を抑止することが可能となる。更にパワーオン時に起動させなかった前記データプロセッサをその後に起動させた場合であっても、その起動に応じてクロック信号を供給することが可能となる。
〔12〕(クロック信号の供給)
項11の半導体装置において、前記クロック信号制御部は、パワーオンリセットに際して入力される前記第1情報、又はマスタとされる前記データプロセッサからの指示に基づいて選択した前記データプロセッサへクロック信号を供給させる。
〔13〕(電源状態の管理)
項1乃至12のいずれかの半導体装置において、前記電源制御部は、前記データプロセッサに対する電源供給状態を示す情報が保持される電源管理レジスタを有し、前記電気管理レジスタは、パワーオンリセット解除後は前記第1情報に応じた値が保持され、マスタとされる前記データプロセッサからの電源の供給又は停止に係る指示に応じて値が更新される。
これによれば、夫々の前記データプロセッサへの電源供給状態を把握することが可能となる。
〔14〕(アーキテクチャの異なるデータプロセッサ)
項1乃至13のいずれかの半導体装置において、前記複数のデータプロセッサは、アーキテクチャの異なるデータプロセッサを含む。
〔15〕(通信用及び画像処理用のデータプロセッサ)
項1乃至14のいずれかの半導体装置において、前記複数のデータプロセッサは、通信に係るデータ処理を実行するデータプロセッサ(1)と、画像に係るデータ処理を実行するデータプロセッサ(3)とを含む。
2.実施の形態の詳細
実施の形態について更に詳述する。
≪マイクロプロセッサ10の構成≫
図1は、本発明に係る半導体装置の一実施の形態として、複数のCPUを内蔵したマイクロプロセッサのブロック図である。同図に示されるマイクロプロセッサ10は、特に制限されないが、公知のCMOS集積回路の製造技術によって1個の単結晶シリコンのような半導体基板に形成されている。マイクロプロセッサ10は、例えば通信機能を備えたカーナビゲーションシステム用のLSIである。
マイクロプロセッサ10は、複数のCPUを備えたマルチプロセッサを構成する。CPUの数には特に制限はなく、ここでは一例として、マイクロプロセッサ10にはアーキテクチャの異なる3つのCPUがあるものとし、夫々のCPUをCPU1、CPU2、及びCPU3とする。CPU1〜3は、例えば内蔵ROM7、内蔵RAM8、外付けメモリ14、及び周辺回路4〜6とバス15により共通接続される。外付けメモリ14は例えばフラッシュメモリであり、図示されないメモリインターフェース等を介してバス15と接続されている。周辺回路4〜6は、CPU1〜3によって処理条件等の設定等の制御がなされ、CPU1〜3の代わりに特定の処理を実行する専用処理回路である。周辺回路4〜6は、例えばDMAC(Direct Memory Access Controler)や音楽再生のための専用処理回路等である。
CPU1〜3は、内蔵ROM7、内蔵RAM8、又は外部メモリ14に格納されたプログラムに基づいて処理を実行する。夫々のCPUは、カーナビゲーションシステムにおける各種データ処理を分担して実行する。例えば、CPU1は主にW−CDMA等の無線アクセス機能に係る処理を実行する通信用のCPUであり、CPU2は主にカーナビゲーションシステムを搭載した自車両の走行情報や地図情報に基づいて自車両の位置情報等を演算するためのCPUであり、CPU3は主に地図情報や前記演算結果等に基づいて地図情報をモニタに描画するための処理を実行する画像処理用のCPUである。マイクロプロセッサ10では、CPU1〜3のうちいずれかのCPUがマスタCPUとされ、その他のCPUはスレーブCPUとされる。マスタCPUはスレーブCPUを自らの管理下に置き、各スレーブCPUにおけるデータ処理の実行及び停止を制御するとともにデータ処理状態の管理等を行う。またマスタCPUは、後述する制御部7の各種レジスタのアクセス権を有し、スレーブCPUの電源供給の制御やクロック信号供給の制御等を行う。
CPU1〜3は、プログラム処理の実行主体であるCPUコア部と、そのCPUコア部の代わりに特定の処理を高速で実行するための周辺回路とを有する。例えばCPU1は、CPUコア部11と周辺回路12を備え、周辺回路12はCPUコア部11によって設定された条件に従って特定の処理を実行する。周辺回路12は、例えばベースバンド処理を行う専用回路等である。同様に、CPU2はCPUコア部21と周辺回路22から構成され、CPU3はCPUコア部31と周辺回路32から構成される。周辺回路13は、例えば画像データの圧縮・伸長の処理を行う専用回路等である。また上記CPUコア部11、21、及び31と、周辺回路12、22及び32と、周辺回路4〜6は電源スイッチ16_1〜16_9を備え、後述する制御部7によって電源スイッチ16_1〜16_9のオン・オフが制御されることにより、各回路への電源電圧の供給と停止が制御される。これにより回路毎に独立した電源管理が可能とされる。
マイクロプロセッサ10は更に制御部7を有する。制御部7は、マスタCPUや外部端子からの設定により、電源電圧及びクロック信号の供給と停止によるCPU1〜3の起動制御、マスタCPUの選択、及びパワーオンリセット解除後とシステムリセット解除後のプログラム領域の先頭アドレスの指定等の制御を実行する。制御部7は、マイクロプロセッサ10に外部から電源電圧が供給(パワーオン)されると、常時電源が供給される。制御部7は、電源制御部71、起動CPU選択部72、マスタCPU選択部73、リセット制御部74、起動アドレス制御部75、及びクロック制御部76を有する。以下、制御部7の各機能部について詳細に説明する。
(1)起動CPU選択部72
起動CPU選択部72は、外部端子P1〜P3から入力された、起動させるCPUを示す情報720に基づいて、マイクロプロセッサ10におけるCPU1〜3のうち起動させるCPUを指示する選択信号722を出力する。具体的には、起動CPU選択部72は内部にラッチ回路(レジスタ)721を有し、パワーオンリセットに際し外部端子P1〜P3から入力された情報720をレジスタ721に保持し、その値に基づいて選択信号722を出力する。これにより、起動するCPUを予め選択することが可能となる。なお、レジスタ721に保持される前記情報720は外部端子P1〜P3から取り込む方法に限られず、例えば、起動させるCPUを示す情報720を格納したプログラムヒューズのような不揮発性の記憶装置をマイクロプロセッサ10に内蔵しておき、パワーオンリセットに際しそのプログラムヒューズから情報720を読み出してレジスタ721に格納してもよい。また、外部端子P1〜P3から入力される情報720は、パワーオンリセットに際してレジスタ721に格納されればよいので、その後は外部端子P1〜P3を他の信号の入出力端子として用いることも可能である。
起動するCPUの選択方法の一例を図2及び図3に示す。なお、図2及び図3では説明の便宜上、CPU1とCPU2の2つのCPUがある場合を一例として説明する。
図2は、CPU1とCPU2を起動する場合の説明図である。同図では、例えばマイクロプロセッサ10が実装される基板200に設けられたスイッチ100が外部端子P1〜P3に接続され、当該スイッチから外部端子P1〜P3に入力された情報720により、CPU1とCPU2が起動される場合が示される。同図におけるスイッチ100は、例えば、スイッチオン(ON)のとき外部端子P1〜P3はプルアップとされ、スイッチオフ(OFF)のとき外部端子P1〜P3はプルダウンとされる。
図3は、CPU2を起動する場合の一例を示す説明図である。同図では、スイッチ100から外部端子P1〜P3に入力された情報720により、CPU2のみが起動される場合が示される。
(2)マスタCPU選択部73
マスタCPU選択部73は、外部端子P4〜P6から入力された、マスタとするCPUを示す情報730に基づいて、マイクロプロセッサ10におけるCPU1〜3のうち起動時にマスタとするCPUを指示する選択信号732を出力する。具体的には、マスタCPU選択部73は内部にラッチ回路(レジスタ)731を有し、パワーオンリセットに際し外部端子P4〜P6に入力された情報730をレジスタ731に保持し、その値に基づいて選択信号732を出力する。これにより、マスタとするCPUを予め選択することが可能となる。なお、レジスタ731に保持される前記情報730は外部端子P4〜P6から取り込む方法に限らず、前記情報720と同様にプログラムヒューズから読み出してレジスタ731に格納する方法でもよい。また、外部端子P1〜P3と同様に外部端子P4〜P6もパワーオンリセット後に他の信号の入出力端子として用いることも可能である。
起動時にマスタとするCPUの選択方法を図4及び図5に示す。なお、以下に説明する図4〜図7では説明の便宜上、CPU1とCPU2の2つのCPUがある場合を一例として説明する。
図4は、CPU1をマスタとして起動させる場合の説明図である。同図では、例えばマイクロプロセッサ10が実装される基板200に設けられたスイッチ101が外部端子P4〜P6に接続され、当該スイッチから外部端子P4〜P6に入力された情報730により、CPU1がマスタとして起動し、CPU2がスレーブとして起動する場合が示される。スイッチ101は、同図では切り替えスイッチとして表されているが、ここでは例えば、選択されていない外部端子にはロー(Low)の信号が入力され、選択されている外部端子にはハイ(High)が入力されるものとする。
図5は、CPU3をマスタとして起動させる場合を示す説明図である。同図では、スイッチ101から外部端子P4〜P6に入力された情報730により、CPU2がマスタとして起動され、CPU1がスレーブとして起動される場合が示される。
図6〜図9に起動させるCPUとマスタとするCPUの組み合わせの一例を示す。
図6は、CPU1及びCPU2を共に起動させ、CPU1をマスタとする場合を示す説明図である。同図では、スイッチ100からCPU1とCPU2の起動を指示する情報720が外部端子P1〜P3に入力され、スイッチ101からCPU1をマスタとすることを指示する情報730が外部端子P4〜P6に入力される。これにより、CPU1はマスタCPUとして起動し、CPU2はスレーブCPUとして起動する。
図7は、CPU1のみを起動させる場合を示す説明図である。同図では、スイッチ100からCPU1のみ起動することを指示する情報720が外部端子P1〜P3に入力される。一方、マスタとされるCPUを指定する情報730は外部端子P4〜P6に入力されない。この場合、起動させるのはCPU1のみであるから、必然的にマスタはCPU1となるため、スイッチ101からの入力はなくてもよい。これによれば、例えばCPU1しか使用しないシステムにおいては、スイッチ101からの入力を受け付ける外部端子P4〜P6は不要となり、マイクロプロセッサ1のチップ面積の低減を図ることができる。
図8は、CPU1〜3を起動させ、そのうちCPU1をマスタとして起動する場合の説明図である。同図では、スイッチ100からCPU1〜3の起動を指示する情報720が外部端子P1〜P3に入力され、スイッチ101からCPU1をマスタとすることを指示する情報730が外部端子P4〜P6に入力される。これにより、CPU1はマスタCPUとして起動し、CPU2及びCPU3はスレーブCPUとして起動する。
図9は、図8の場合において起動CPU選択部72とマスタCPU選択部73を含めて表した説明図である。同図では、スイッチ100からCPU1〜3の起動を指示する情報720が外部端子P1〜P3に入力され、起動CPU選択部72のラッチ回路721に保持される。起動CPU選択部72は、保持された値に基づいて選択信号722を電源制御部71に与え、選択信号722を受け取った電源制御部71はCPU1〜3に電源を供給する。また、スイッチ101からCPU1をマスタとすることを指示する情報730が外部端子P4〜P6に入力され、マスタCPU選択部73のラッチ回路731に保持される。マスタCPU選択部73は、保持された値に基づいて選択信号732をCPU1に与える。これにより、CPU1はマスタCPUとして起動し、CPU2及びCPU3はスレーブCPUとして起動する。
(3)電源制御部71
電源制御部71は、CPU1〜CPU3、周辺回路4〜6、その他内部回路の電源電圧の供給を制御する。具体的には、各回路に対する電源電圧の遮断、電源電圧の供給、及び電源供給状態のモニタリング等を行う。ここでは、CPU1〜3に対する電源制御に関わる部分を中心に説明する。
図10は、電源制御部71の内部構成の一例を示すブロック図である。同図に示されるように、電源制御部71は、電源管理部711、電源遮断部712、電源復帰部713、電源状態部714、電源領域排他制御部715、及び制御信号生成部716を有する。
電源管理部711は、内部にレジスタ7111を有し、CPU1〜3、周辺回路4〜6、及びその他の回路が夫々存在するチップ上の領域(以下、「電源領域」とも称する。)への電源遮断と電源供給の制御を許可するか否かを示す情報が電源領域毎に当該レジスタに設定される。電源管理部711に対する設定は、マスタCPUにより行われる。例えば、マスタCPUが電源管理部711のレジスタ7111のCPU1に係る電源領域(CPUコア部11及び周辺回路12)を示す部分に“1”を書き込むことによって、CPU1に係る電源領域に対する電源遮断と電源供給の制御は禁止される。
電源遮断部712は、内部に備えるレジスタ7121に設定された値に応じて、各電源領域への電源遮断を要求する。電源遮断部712に対する設定はマスタCPUにより行われる。例えば、マスタであるCPU1によりレジスタ7121のCPU3に係る電源領域(CPUコア部31及び周辺回路32)を示す部分に“1”が書き込まれると、電源遮断部712は当該電源領域に対する遮断指示を発行し、電源遮断後、その値を“0”にクリアする。
電源復帰部713は、内部に備えるレジスタ7131に設定された値に応じて、各電源領域への電源供給の再開を要求する。電源復帰部713に対する設定はマスタCPUにより行われる。例えば、マスタとされるCPU1によりレジスタ7131のCPU3に係る電源領域(CPUコア部31及び周辺回路32)を示す部分に“1”が書き込まれると、電源復帰部713は当該電源領域に対する復帰指示を発行する。そして、電源供給の再開後その値を“0”にクリアする。
電源状態部714は、内部にレジスタ7141を有し、当該レジスタに各電源領域の電源供給状態を示す値が設定される。これにより、CPU1〜CPU3の各電源領域の電源状態がモニタリングされる。
電源領域排他制御部715は、内部にレジスタ7151を有し、CPU1〜3の電源領域毎に電源供給の遮断を許可するか否かを示す情報が当該レジスタに設定される。レジスタ7151は、マスタCPU1〜3により設定される。例えばCPU1が処理を実行しているときは、レジスタ7151のCPU1に係る部分に“1”が設定されることで電源供給の遮断を許可しないことが示され、CPU1における処理が完了したときは、レジスタ7151のCPU1に係る部分に“0”が設定されることで電源供給の遮断を許可することが示される。これにより、電源遮断部712から電源遮断の要求が発行された場合であっても、その要求に係るCPUの処理が完了するまでは電源遮断は許可されない。
制御信号生成部716は、前記レジスタ7111、7121、7131、7141、及び7151の設定に応じて電源制御信号700を出力し、各回路の電源スイッチ16_1〜16_7を制御する。更にパワーオン時に起動CPU選択部72からの選択信号722を入力し、当該選択信号722によって指定されたCPU1〜3の電源領域の電源スイッチ16_1〜16_6を制御して電源を供給する。
外部電源投入時の電源制御部71による電源制御の流れについて説明する。
図11は、電源投入時のマイクロプロセッサ10の動作の流れを示すフロー図である。
外部からマイクロプロセッサ10に電源電圧が供給されると(S101)、後述するリセット制御部74によるパワーオンリセットにより各回路のレジスタ等の値が初期化され、所要のノードの電圧が最適な値となるのを待ってパワーオンリセットが解除される(S102)。パワーオンリセット解除後、外部端子P1〜P12に入力された情報が各ラッチ回路に取り込まれる(S103)。電源制御部71の制御信号生成部716は、起動CPU選択部72からの選択信号722によって指示されたCPUに係る電源領域と、内蔵ROMや内蔵RAM及び周辺回路4〜6に電源供給を行う(S104)。これにより起動されるCPUが動作可能となる。その後、周辺回路4〜6や内蔵RAM9等のリソースの初期化が行われる(S105)。なお、周辺回路4〜6への電源投入は、CPU1〜3が起動した後にソフトウェアによって個別に電源供給を行ってもよい。以上により電源投入時の処理が完了する。
次にパワーオンリセット後に、電源遮断及び電源復帰を行う場合の制御方法について説明する。ここでは、スレーブとされるCPU2の電源遮断と電源復帰を行う場合を一例として説明する。
図12は、パワーオンリセット後に電源遮断を行う場合の説明図である。
同図では、パワーオンに際し、スイッチ100からCPU1〜CPU3の起動を指示する情報720が外部端子P1〜P3に入力され、スイッチ101からCPU1をマスタとすることを指示する情報730が外部端子P4〜P6に入力される。これによりCPU1がマスタCPUとして起動し、CPU2及びCPU3がスレーブCPUとして起動する。この状態において、マスタとされるCPU1が電源遮断部712にアクセスし、電源遮断部712のレジスタ7121の値を、例えば“000”から“010”に書き換えることでCPU2の電源遮断を要求する。これにより、電源遮断部712からCPU2の電源遮断指示が発行され、当該指示を受けた制御信号生成部716が、電源制御信号700によりCPU2の電源供給を停止させる。その後、電源遮断部712のレジスタ7121の値は“000”にリセットされる。
図13は、上記電源遮断の制御の流れを示すフロー図である。
マスタとされるCPU1が所定のプログラムを実行することにより、CPU2の電源供給を停止するための電源遮断処理が開始される(S201)。CPU1は先ず電源状態部714を参照し、CPU2の電源領域の電源供給状態を確認する(S202)。これによりCPU2に電源が供給されていないことが確認された場合には電源遮断処理を終了する(S209)。一方、CPU2に電源が供給されていることが確認された場合には、CPU1は電源管理部711を参照し、CPU2の電源領域の電源制御が許可されているか否かを判別する(S203)。ここでCPU2の電源領域の電源制御が許可されていない場合には、電源遮断処理を終了する(S209)。一方CPU2の電源領域の電源制御が許可されている場合には、CPU1は電源領域排他制御部715を参照し、CPU2の電源遮断が可能な状態であるか否かを判別する(S204)。例えばCPU2がデータ処理中であり電源遮断が許可されていないときは、CPU1は電源遮断が許可されるまで待機する。その後CPU2の電源遮断が許可されたら、CPU1は電源遮断部712を制御するアクセス権を取得し、電源遮断部712のレジスタ7121の値を“000”から“010”に書き換える(S205)。これにより電源遮断部712から電源の遮断指示が発行され、CPU2のパワーダウンのための処理が開始される(S206)。先ずCPU2へのクロック信号の供給が停止され(S207)、その後、制御信号生成部716によりCPU2の電源領域の電源供給が停止される(S208)。以上により、電源遮断処理が終了する(S209)。なお、クロック信号の供給を停止する方法の詳細は後述する。
図14は、パワーオンリセット後に電源復帰を行う場合の説明図である。
同図では、前述した図12及び図13の方法によってCPU2の電源供給を遮断した後に、再度CPU2に電源を供給する場合を一例として示している。この場合において、マスタとされるCPU1が電源復帰部713にアクセスし、レジスタ7131の値を、例えば“000”から“010”に書き換えると、電源復帰部713からCPU2の電源復帰指示が発行される。電源復帰指示を受けた制御信号生成部716は、電源制御信号700によりCPU2に電源を供給する。その後、電源復帰部713のレジスタ7131の値は“000”にリセットされる。
図15は、上記電源復帰の制御の流れを示すフロー図である。
マスタとされるCPU1が所定のプログラムを実行することにより、CPU2の電源を供給するための電源復帰処理が開始される(S301)。CPU1は電源状態部714を参照し、CPU2の電源領域の電源供給状態を確認する(S302)。CPU2にすでに電源が供給されていることが確認できた場合には電源復帰処理を終了する(S309)。一方、CPU2に電源が供給されていないことが確認できた場合には、CPU1は電源管理部711を参照し、CPU2の電源領域の電源制御が許可されているか否かを判別する(S303)。ここで、CPU2の電源領域の電源制御が許可されていない場合には、電源復帰処理を終了する(S309)。一方、CPU2の電源領域の電源制御が許可されている場合には、CPU1は電源領域排他制御部715を参照し、CPU2の電源の供給が可能な状態であるか否かを判別する(S304)。CPU2の電源供給が許可されていない場合には、CPU1は電源供給が許可されるまで待機する。その後、CPU2の電源供給が許可された場合には、CPU1は電源復帰部713を制御するアクセス権を取得し、電源復帰部713のレジスタ7131の値を“000”から“010”に書き換える(S305)。これにより電源復帰部713から電源の復帰指示が発行され、制御信号生成部716によりCPU2の電源領域に電源が供給される(S306)。その後、CPU2へクロック信号が供給され(S307)、CPU2の電源領域のリセットが解除される(S308)。以上により、電源復帰処理が終了する(S309)。
図16に、本実施の形態に係るマイクロプロセッサ10の比較例として、電源遮断機能を有しないマイクロプロセッサの状態遷移図の一例を示す。同図に示されるように当該マイクロプロセッサには、命令実行状態300、リセット状態301、及びスタンバイ状態302を有する。命令実行状態300は、CPUがプログラム処理を実行している状態である。リセット状態301は、CPUがパワーオンリセットやシステムリセットにより、プログラムカウンタや各種レジスタの値がリセットされる状態である。リセット状態301へはリセット信号の発生により遷移し、リセット信号の解除によりリセット状態301から命令実行状態300に遷移する。スタンバイ状態302は、CPUに電源が供給された状態において、クロック信号の供給が停止されること等によりCPUが動作を停止している状態である。スタンバイ状態302へはスリープ命令の実行等により遷移し、外部からの割り込みやタイマによる割り込みの発生によりスタンバイ状態302から命令実行状態300に遷移する。またリセット信号の発生により、スタンバイ状態302からリセット状態301に遷移する。
図17に本実施の形態に係るマイクロプロセッサ10の状態遷移図の一例を示す。同図に示されるように、マイクロプロセッサ10は、図16に示される3つの状態に加え、電源遮断状態303を有する。電源遮断状態303は、前述したように電源供給を停止してCPUの動作を停止する状態である。これにより、マイクロプロセッサ10は、電源遮断機能を有しないマルチプロセッサに比べてより低消費電力化に資する。
(4)クロック制御部76
クロック制御部76は、CPU1〜3に対するクロック信号の供給と停止を制御する。クロック制御部76は、例えばクロックパルス発生回路(CPG)であり、後述するリセット制御部74におけるクロック制御レジスタ743の値に応じて、各CPUに対するクロック信号の供給と停止を制御する。
(5)リセット制御部74、起動アドレス制御部75
リセット制御部74は、CPU1〜3及び周辺回路4〜6等に対するリセット信号の生成、クロック制御部76を制御することによるクロック信号の供給と停止の制御、及びCPU1〜3が実行するプログラム領域の先頭アドレスの指定等を行う。リセット制御部74は、内部に複数のラッチ回路(レジスタ)を有する。具体的には、リセット制御部74は、起動対象メモリ指定レジスタ741、起動アドレス指定レジスタ742、クロック制御レジスタ743、及びシステムリセット制御レジスタ744を有する。以下、各レジスタ741〜744とそれらを利用したリセット制御部74の動作について詳細に説明する。
起動対象メモリ指定レジスタ741は、パワーオンリセット解除後の各CPU1〜3の実行するプログラムの読み出し先を示すレジスタである。CPU1〜3がパワーオンリセット解除後に実行するプログラムの読み出し先のメモリを指定する情報740が外部端子P7〜P12から入力され、パワーオンリセットに際し、当該情報740が起動対象メモリ指定レジスタ741に格納される。
図18は、起動対象メモリ指定レジスタ741の説明図である。図18の(A)に示されるように、起動対象メモリ指定レジスタ741は、CPU1〜3毎に2ビットが割り当てられる。起動対象メモリ指定レジスタ741の設定例が図18の(B)〜(D)に示される。具体的には、図18の(B)に示すように、例えばレジスタ741の値が“00”のときは、パワーオンリセット解除後にCPU1が実行するプログラムの読み出し先のメモリは外部メモリ14とされる。この場合、リセット制御部74は外部メモリ14の所定のアドレスをプログラムの開始アドレスとしてCPU1にアドレス指定745を行う。前記外部メモリ14の所定のアドレスは、例えば外部メモリ14の先頭アドレスである。またレジスタ741の値が“01”のときは読み出し先のメモリは内蔵ROM8とされる。この場合、リセット制御部74は内蔵ROM8の所定のアドレスをプログラムの開始アドレスとしてCPU1にアドレス指定745を行う。前記内蔵ROM8の所定のアドレスは、例えば内蔵ROM8の先頭アドレスである。更にレジスタ741の値が“10”のときは読み出し先のメモリは内蔵RAM9とされる。この場合、リセット制御部74は内蔵RAM9の所定のアドレスをプログラムの開始アドレスとしてCPU1にアドレス指定745を行う。前記内蔵RAM19の所定のアドレスは、例えば内蔵RAM9の先頭アドレスである。上記の例は、CPU2及びCPU3の場合も同様である。
図19は、起動時の読み出し先のメモリが指定される場合の説明図である。
同図では、実装基板200上に設置されたスイッチ102が外部端子P7〜P12に接続され、スイッチ102からパワーオンリセット解除後のメモリを指示する情報740が外部端子P7〜P12に入力され、前述のスイッチ101からCPU1をマスタとすることを指示する情報730が外部端子P4〜P6に入力される。同図におけるスイッチ102は、例えば、スイッチオン(ON)のとき外部端子P7〜P12はプルアップとされ、スイッチオフ(OFF)のとき外部端子P7〜P12はプルダウンとされる。これにより、CPU1がマスタCPUとして起動し、CPU2及びCPU3がスレーブCPUとして起動する。また、リセット制御部74のレジスタ741に情報740(“000101”)が取り込まれることにより、CPU1のパワーオンリセット解除後のプログラムの読み出し先のメモリは外部メモリ14とされ、CPU2及びCPU3の読み出し先のメモリは内蔵ROMとされ、各CPU1〜3にアドレス指定745される。
起動アドレス指定レジスタ742は、マスタCPUにより、システムリセット後の各CPU1〜3の実行するプログラムの読み出し方法を示す情報746が設定されるレジスタである。当該レジスタの値により、パワーオンリセット解除後に実行するプログラムの読み出し先とシステムリセット後に実行するプログラムの読み出し先を別々に設定することが可能となる。具体的には、マスタCPUとして起動したCPUをシステムリセット後にスレーブCPUに切り替える場合等に利用される。例えば、マスタCPUとしての起動プログラムとスレーブCPUとしての起動プログラムを夫々メモリに格納しておき、CPU1にパワーオンリセット解除後はマスタCPUとしての起動プログラムを読み出させ、システムリセット後は当該レジスタ742によりスレーブCPUとしての起動プログラムを読み出させる。これによりマスタとして起動したCPU1をシステムリセット後にスレーブとして動作させることができる。
図20は、起動アドレス指定レジスタ742の説明図である。図20の(A)に示されるように、起動アドレス指定レジスタ742は、CPU1〜3毎に2ビットが割り当てられ、例えば、パワーオンリセット解除後は、初期値として起動対象メモリ指定レジスタ741の値が設定される。
図20の(B)〜(D)には、起動アドレス指定レジスタ742の設定例が示される。
図20の(B)の場合において、起動アドレス指定レジスタ742に例えば“11”以外の値が設定された場合、すなわち起動対象メモリ指定レジスタ741の値(初期値)が設定されている場合には、リセット制御部74は、システムリセット後に実行するプログラムの先頭アドレスの変更は行わず、パワーオンリセット後に実行するプログラムの先頭アドレスと同じアドレスをアドレス指定する。例えば、リセット制御部74は、レジスタ742の値が“00”のときは外部メモリ14の先頭アドレスを指定し、レジスタ742の値が“01”のときは内蔵ROM8の先頭アドレスを指定し、“10”のときは内蔵RAM9の先頭アドレスをシステムリセット後に実行するプログラムの先頭アドレスとして指定する。
一方、レジスタ742に例えば“11”の値が設定された場合には、リセット制御部74は、システムリセット後に実行するプログラムの先頭アドレスをパワーオンリセット解除後に実行するプログラムの先頭アドレスから変更する。具体的には、リセット制御部74は、マスタCPUによって起動アドレス制御部75に設定されたアドレス情報751に基づいて、システムリセット後に実行するプログラムの先頭アドレスを指定する。ここで、システムリセット後に実行するプログラムの先頭アドレスの変更方法について、起動アドレス制御部75の機能とともに詳細に説明する。
起動アドレス制御部75は、システムリセット後にCPU1〜3が実行するプログラム領域の先頭アドレスを指定するためのアドレス情報751が設定されるレジスタを有する。
図21は、起動アドレス制御部75の説明図である。図21の(A)に示されるように、システムリセット後の先頭アドレスを指定するためのアドレス情報751がCPU1〜3毎に対応されて設定される。当該アドレス情報751はマスタCPUによって設定される。設定されるアドレス情報751は、例えばシステムリセット後にCPU1〜3が実行するプログラム領域として指定される先頭アドレスの上位ビットの値である。例えば、システムリセット後に実行するプログラムの先頭アドレスとして指定するアドレスが32ビットである場合、そのアドレスの上位20ビット(31ビット〜112ビット)がアドレス情報751として設定される。
リセット制御部74は、起動アドレス指定レジスタ742の所定のCPUに係る部分に“11”が設定された場合、起動アドレス制御部75に設定されたアドレス情報751に基づいてアドレスを生成する。例えば図21の(B)に示されるように、リセット制御部74は、上位20ビットを前記起動アドレス制御部75に設定されたアドレス情報751の値とし、下位12ビット(11ビット〜0ビット)をすべて“0”としたアドレスをシステムリセット後に実行するプログラムの先頭アドレスとして生成し、生成したアドレスを対象とされるCPUに対してアドレス指定754を行う。これにより、マスタCPUが指定したアドレスを先頭アドレスとした新たなプログラムを実行させることが可能となる。なお、パワーオンリセット解除後は、前記アドレス情報751の初期値として全ビットに“0”が設定される。
クロック制御レジスタ743は、CPU1〜3へのクロック信号の供給と停止を示すレジスタである。
図22は、クロック制御レジスタ743の説明図である。図22の(A)に示されるように、クロック制御レジスタ743はCPU1〜3毎に1ビットが割り当てられる。図22の(B)に示されるように、レジスタ743の値が“0”のとき、リセット制御部74はCPU1へのクロック信号の供給を停止するようにクロック制御部76を制御する。一方、レジスタ743の値が“1”のとき、リセット制御部74はCPU1へのクロック信号を供給するようにクロック制御部76を制御する。CPU2及びCPU3の場合も図22の(C)及び(D)に示されるように、CPU1の場合と同様である。
クロック制御レジスタ743は、パワーオンリセット解除後、起動CPU選択部72のレジスタ721の値が初期値として設定される。これにより、起動されるCPUに対してクロック信号が供給され、起動されないCPUに対してはクロック信号が供給されない。パワーオンリセット後は、マスタとされるCPU又はアクセス権が与えられたスレーブCPUによって値が設定される。例えば、スレーブとして動作しているCPU2をスタンバイ状態にする場合、マスタであるCPU1がクロック制御レジスタ743を制御することにより、CPU2に対するクロック信号の供給を停止させる。また、パワーオンリセット後にマスタであるCPU1がスレーブとして起動させたCPU2の起動シーケンスの開始のタイミングを制御する場合、CPU1がクロック制御レジスタ743を制御してCPU2のクロック信号の供給を開始するタイミングを調整する。更に、前述の図13及び図15に示したCPUの電源の遮断処理や電源の復帰処理に際し、当該処理を要求したCPUがクロック制御レジスタ743を制御することにより、処理対象のCPUへのクロック信号の供給及び停止を行う。なお、この場合は、CPUの代わりに電源制御部71の制御信号生成部716が制御レジスタ743を制御してクロック信号の供給と停止を行ってもよい。
システムリセット制御レジスタ744は、システムリセットにおけるリセット信号のアサートとネゲートを示すレジスタである。
図23は、システムリセット制御レジスタ744の説明図である。図23の(A)に示されるように、システムリセット制御レジスタ744はCPU1〜3毎に1ビットが割り当てられる。図23の(B)に示されるように、レジスタ744の値が“0”のとき、リセット制御部74はCPU1へのリセット信号をネゲートする。一方、レジスタ744の値が“1”のとき、リセット制御部74はCPU1へのリセット信号をアサートする。リセット信号がアサートされてから一定時間経過後、再びレジスタ744の値が“0”にリセットされ、リセット信号がネゲートされる。CPU2及びCPU3の場合も図23の(C)及び(D)に示されるようにCPU1と同様である。
システムリセット制御レジスタ744は、パワーオンリセット解除後、初期値として“0”が設定される。パワーオンリセット後は、マスタとされるCPUによって値が設定される。例えば、スレーブとして動作しているCPU2をリセット状態にする場合、マスタであるCPU1がシステムリセット制御レジスタ744を制御することにより、CPU2に対するリセット信号をアサートする。
次に、制御部7を利用したマイクロプロセッサ10の動作の一例として、スレーブCPUをマスタCPUに切り替える処理について説明する。
図24は、スレーブCPUをマスタCPUに切り替える場合の処理の流れの一例を示したフロー図である。同図には、パワーオン時にCPU1がマスタCPUとして起動し、CPU2がスレーブCPUとして起動した状態において、マスタCPUをCPU1からCPU2に切り替える場合の処理を一例として示す。
マスタCPUの切り替えに係る処理は、マスタであるCPU1が、CPU2をマスタCPUとするプログラムを実行することにより開始される(S401)。先ず、CPU1は、制御部7における起動アドレス指定レジスタ742と起動アドレス制御部75にアクセスする。すなわち、CPU1は、起動アドレス制御部75の値の有効化のために起動アドレス指定レジスタ742の値を変更し、CPU2がシステムリセット後に実行するプログラムの先頭アドレスを設定するために、起動アドレス制御部75に値を設定する(S402)。例えば、CPU1は起動アドレス指定レジスタ742の値を“11”に変更し、起動アドレス制御部75には、CPU2のマスタCPUとしての起動プログラムの先頭アドレスの上位アドレスをアドレス情報751として設定する。
次に、CPU1は制御部7における電源状態部714を参照し、CPU1の電源領域の電源供給状態を確認する(S403)。更にCPU1は電源管理部711にアクセスし、CPU1の電源領域の電源制御を許可する(S404)。そして、CPU1は、CPU2に対しCPU1の電源領域の停止を指示する(S405)。指示を受けたCPU2は電源領域排他制御部715を参照し、CPU1の電源遮断が可能な状態であるか否かを判別する(S406)。例えばCPU1がデータ処理中であり電源遮断が許可されていない場合には、CPU2は電源遮断が許可されるまで待機する。その後、CPU1の電源遮断が許可された場合には、CPU2は電源遮断部712を制御するアクセス権を取得し、電源遮断部712のレジスタ7121の値を“000”から“100”に書き換える(S407)。これにより、電源遮断部712から電源の遮断指示が発行されCPU1のパワーダウンのための処理が開始される(S408)。当該処理が開始されると、CPU1へのクロック信号の供給が停止され(S409)、その後、制御信号生成部716によりCPU1の電源領域の電源供給が停止される(S410)。次に、CPU2は制御部7のシステムリセット制御レジスタ744にアクセスし、当該レジスタのCPU2に対応する部分に“1”を設定し、リセット信号をアサートする(S411)。システムリセット後、リセット制御部74は起動対象メモリ指定レジスタ741と起動アドレス指定レジスタ742と起動アドレス制御部75の設定内容に基づいてCPU2に対して実行するプログラムの先頭アドレスを指定する(S412)。ここでは前述したように、ステップ402において起動アドレス指定レジスタ742のCPU2に対応する部分に“11”が設定されているため、リセット制御部74は起動アドレス制御部75のアドレス情報745に基づいて生成したアドレスをCPU2に対しアドレス指定する。アドレス指定745を受けたCPU2は、指定されたアドレスを先頭アドレスとしたプログラムを実行することにより、マスタCPUとして再起動される(S413)。その後、CPU2はCPU1をスレーブとして起動させるか否か判断し(S414)、復帰させる場合には前述の図15で示した処理を実行する(S415)。CPU1を復帰させない場合には、マスタCPUの切り替え処理を完了する(S416)。以上により、マスタCPUの切り替えがなされる。
≪マイクロプロセッサ10を適用したシステムの動作例≫
上記マイクロプロセッサ10を、携帯電話機能(インターネットアクセス機能)を備えるカーナビゲーションシステムに適用した場合のシステム全体の動作について説明する。ここでは、上記カーナビゲーションシステムの起動後、周辺の地図情報や交通情報をダウンロードして地図データを描画する場合を一例として、マイクロプロセッサ10による一連の動作を説明する。
(1)CPU1の単独起動
当該カーナビゲーションシステムは、起動後、地図情報や交通情報等のダウンロードを行うため、CPU1を起動させる。前述したようにCPU1はW−CDMA等の無線アクセス機能を専門に扱うことができるので、カーナビゲーションシステムはCPU1を単独で起動させる。このとき、CPU1はマスタとして起動される。CPU1がマスタとして起動するためには、マスタとして起動するための起動プログラムが必要となる。起動プログラムの格納先は以下である。
図25は、CPU1〜3のマスタ用の起動プログラム(以下、「マスタ用ブートコード」とも称する。)とスレーブ用の起動プログラム(以下、「スレーブ用ブートコード」とも称する。)の格納先の一例を示す説明図である。本説明では、同図に示されるように、CPU1のマスタ用ブートコードは外部メモリ14の先頭アドレスから始まる領域に格納されているものとする。また、CPU1のスレーブ用ブートコードやCPU2及びCPU3のブートコードも同図に示されるように外部メモリ14に格納されているものとする。
CPU1を単独で起動させるための起動時のマイクロプロセッサ10の設定は以下となる。外部端子P1〜P3に接続された起動CPU選択手段としてのスイッチ100からデータ“100”が入力され、外部端子P4〜P6に接続されたマスタCPU選択手段としてのスイッチ101からデータ“100”が入力され、更に外部端子P7〜P12に接続された起動対象メモリ選択手段としてのスイッチ102からデータ“000000”が入力される。これにより、マイクロプロセッサ10のパワーオンリセットに際し、“100”が起動CPU選択部72のレジスタ721に格納され、“100”がマスタCPU選択部73のレジスタ731に格納され、“000000”がリセット制御部74の起動対象メモリ指定レジスタ741に格納されることにより、CPU1がマスタCPUとして起動される。
(2)CPU2の起動
次に前記カーナビゲーションシステムは、簡単な初期起動用画面をモニタに表示するために、CPU1によってCPU2を起動させる。CPU1は、起動アドレス指定レジスタ742と起動アドレス制御部75にアクセスし、これらのレジスタのCPU2に対応する部分に値を設定する。具体的には、CPU1は起動アドレス指定レジスタ742に“00”を設定するとともに、起動アドレス制御部75には図25に示されるCPU2のスレーブ用ブートコードが格納されているメモリ領域の先頭アドレスの情報を設定する。その後、CPU1が電源制御部71の電源復帰部7131をアクセスすることにより、CPU2がスレーブとして起動する。
(3)CPU1によるダウンロード開始
前記カーナビゲーションシステムは、周辺地図(ナビゲーション画面用)データや交通情報のデータのダウンロードをCPU1に実行させ、内蔵RAM9や外部メモリ14にダウンロードしたデータを格納させる。
(4)CPU2による演算
前記カーナビゲーションシステムは、当該カーナビゲーションシステムを搭載した自車両の位置を把握するため、CPU2に対し処理を実行させる。具体的には、CPU2はCPU1によりダウンロードされたデータに基づいて自車両の位置情報等を演算により算出する。そしてCPU2は、地図描画用CPUであるCPU3に自車両の位置とその周辺の地図をモニタに描画させるため、自車両の位置付近の地図データを内蔵RAM9又は外付けの共用RAMに展開し、それ以外の地図データ等は外部メモリ14に格納する。その後もCPU2は、自車位置と地図データを監視しながら、必要に応じて自車両の位置情報の算出と地図データの内蔵RAM9又は共用RAMへの展開を行う。
(5)CPU3の起動
前記カーナビゲーションシステムは、データをダウンロードしているとき、CPU1にダウンロード状況を監視させる。そして、ナビゲーション情報をモニタに描画するための地図データ等が十分に取得できた時点で、マスタであるCPU1からCPU3を起動させる。CPU1は先ず、起動アドレス指定レジスタ742と起動アドレス制御部75にアクセスし、これらのレジスタのCPU3に対応する部分に値を設定する。例えば、CPU1は起動アドレス指定レジスタ742に“00”を設定するとともに、起動アドレス制御部75には図25に示されるCPU3のスレーブ用ブートコードが格納されているメモリ領域の先頭アドレスの情報を設定する。その後、CPU1が電源制御部71の電源復帰部7131をアクセスすることにより、CPU3の電源復帰指示がなされ、CPU3がスレーブとして起動する。
(6)CPU3によるナビゲーション画面の描画開始
前記カーナビゲーションシステムは、新たに起動したCPU3により、CPU2によりRAMに展開された地図データをモニタに描画させる。このときCPU3は、画像処理用の専用回路である周辺回路6を制御してナビゲーション画面を描画するための処理を実行させてもよい。
(7)マスタCPUをCPU1からCPU3に切り替え
前記カーナビゲーションシステムは、CPU1による必要なデータのダウンロードが完了すると、CPU1の電源供給を停止させる。この際、CPU1はマスタCPUとして起動しているため、その他のCPUをマスタとする必要がある。そこで、ダウンロード完了後はカーナビゲーションシステムとしての主な処理が地図データの描画やメディア再生となることから、その処理を主に担うCPU3をマスタとするための処理が実行される。
先ずCPU1が、起動アドレス指定レジスタ742と起動アドレス制御部75にアクセスし、これらのレジスタのCPU3に対応する部分に値を設定する。具体的には、CPU1は起動アドレス指定レジスタ742に“00”を設定するとともに、起動アドレス制御部75には図25に示されるCPU3のマスタ用ブートコードが格納されているメモリ領域の先頭アドレスの情報を設定する。その後、前述した図24の手順に従って処理が実行されることにより、CPU1は電源供給が停止され、CPU3がマスタCPUとなる。そして、CPU3はマスタCPU選択部73のレジスタ731の値を“100”から“001”に変更し、電源管理部711をはじめとする各種レジスタのアクセス権を取得する。なお、CPU3がマスタCPUに切り替わるための処理実行中は、ナビゲーション画面の描画処理をCPU2によって実行させてもよい。
(8)CPU1の再起動
前記カーナビゲーションシステムは、ナビゲーション画面の描画処理中は、CPU2により地図データと自車両の位置を計算させ、描画するためのナビゲーション情報が不足しないように監視させる。自車両の移動や周囲の交通状態の変化等により地図データや交通情報等の補充が必要と判断されたら、データの不足が発生する前に、必要なデータをダウンロードさせるためCPU1を再起動させる。CPU1を再起動させるための処理は、マスタCPUであるCPU3に実行させる。
CPU3は先ず、起動アドレス指定レジスタ742と起動アドレス制御部75にアクセスし、これらのレジスタのCPU1に対応する部分に値を設定する。具体的には、CPU3は起動アドレス指定レジスタ742に“00”を設定するとともに、起動アドレス制御部75には図25に示されるCPU1のスレーブ用ブートコードが格納されているメモリ領域の先頭アドレスの情報を設定する。その後、CPU3が電源制御部71の電源復帰部7131をアクセスすることにより、CPU1がスレーブとして起動する。なお、予めCPU1のスレーブ用の起動コードの設定とCPU1のクロック供給停止の設定を行い、システムリセットを発行した状態にしておき、その後CPU1の起動要求が発行された場合には、クロック制御レジスタ743の設定をクロック停止から供給に書き換えるだけで再起動させることも可能である。
(9)CPU1によるダウンロード開始とCPU2による演算
前記カーナビゲーションシステムは、CPU3により地図描画を実行させながら、CPU1により周辺地図のデータや交通情報のデータのダウンロードを実行させ、内蔵RAM9や外部メモリ14にダウンロードしたデータを格納させる。そして、上記(4)と同様にCPU2によってダウンロードしたデータを基に自車両の位置情報等を算出させる。
(10)CPU1の電源遮断
前記カーナビゲーションシステムは、不足データ取得後、マスタであるCPU3によりCPU1の電源遮断を実行させる。電源遮断の方法は、前述した図13に示した方法と同様である。
以上、本実施の形態に係るマイクロプロセッサ10によれば、外部端子やプログラムヒューズ等により起動させるCPUとマスタとされるCPUを予め選択することができる。また、パワーオンリセット後にCPUに実行させるプログラムの先頭アドレスとパワーオンリセット後にCPUに実行させるプログラムの先頭アドレスを別々に指示することができるから、例えばパワーオン時にスレーブとして起動させたCPUをマスタとして動作させたり、マスタとして起動させたCPUをスレーブとして動作させたりすることが可能となる。これにより、開発するシステムの仕様に応じて、起動させるデータプロセッサとマスタとするデータプロセッサを自由に選択することができ、既存のハードウェア資源とソフトウェア資源の有効活用に資する。更に、マイクロプロセッサ10の起動後も、起動されたCPUによって選択的にCPUへの電源供給と電源遮断を行うことができる。これにより、電源を落とさないスタンバイ状態に比べてより低消費電力化に資する。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、上記説明ではマイクロプロセッサ10に内蔵されるCPUの数を3つとしたが、CPUの数に応じて各種レジスタのビット数等を変更すれば搭載されるCPUの数に制限はない。また、上記説明ではアーキテクチャが異なるCPUを複数備えるマイクロプロセッサに適用する場合を一例として示したが、同一のアーキテクチャのCPUを複数備えるマイクロプロセッサにも適用可能である。
CPUを起動させるか否かは、電源制御部71により電源を供給するか否かにより行うことを一例として示したが、クロック制御部76によりクロック信号を供給するか否かにより行うことも可能である。これによれば、電源供給を停止させる場合に比べて低消費電力化の面では劣るが、CPUを復帰させるために電源を再投入する場合よりも早く復帰させることができる。
電源制御部71やリセット制御部74の各種レジスタの設定等をマスタCPUが行うことを一例として示したが、これに限られず、マスタCPUから指示を受けたスレーブCPUが代わりに設定してもよい。例えば電源遮断を行うために電源遮断部712のレジスタにアクセスするのはマスタCPUに限らず、マスタCPUからその指示を受けたスレーブCPUが行ってもよい。
図21に示した起動アドレス制御部75に格納されるアドレス情報751を、CPUが指定する先頭アドレスの上位20ビットの値としたが、これに限られず、先頭アドレスの全ビットの値としてもよい。
図24に示したマスタCPUの切り替えに係る処理について、マスタであるCPUがプログラムを実行することで当該処理が開始される場合を一例として示したが、これに限られずマスタとなる予定のスレーブCPUが当該プログラムを実行することで開始させてもよい。
起動対象メモリ指定レジスタ741の値をCPU1〜3毎に2ビットとしたが、これに限られず、プログラムを格納している記憶部に応じてビット数を変更してもよい。また、起動アドレス指定レジスタ742のCPU1〜3毎のビット数も2ビットに限られず、システムリセット後のプログラムの先頭アドレスの変更が指示されたか否かの判断ができれば、ビット数は特に限定されない。
更に、上記説明では、起動アドレス指定レジスタ742の値が“11”以外のときは、システムリセット後のプログラムの先頭アドレスをパワーオンリセット解除後のプログラムの先頭アドレスと同一のアドレスとする場合を一例として示したが、これに限られない。例えば、起動アドレス指定レジスタ742の“11”以外の値とパワーオンリセット解除後のプログラムの先頭アドレスとは異なる別の固定アドレスを対応させておき、リセット制御部74が、その値に応じた固定アドレスをアドレス指定するようにしてもよい。
10 マイクロプロセッサ
1〜3 CPU
P1〜P12 外部端子
11、21、31 CPUコア部
4〜6、12、22、32 周辺回路
8 内蔵ROM
9 内蔵RAM
14 外部メモリ(フラッシュメモリ)
15 共通バス
16_1〜16_9 電源スイッチ
7 制御部
700 電源制御信号
71 電源制御部
711 電源管理部
712 電源遮断部
713 電源復帰部
714 電源状態部
715 電源領域排他制御部
716 制御信号生成部
7111、7121、7131、7141、7151 レジスタ
72 起動CPU選択部
720 起動させるCPUを示す情報
721 ラッチ回路(レジスタ)
722、732 選択信号
73 マスタCPU選択部
730 マスタとされるCPUを示す情報
731 ラッチ回路(レジスタ)
300 命令実行状態
301 リセット状態
302 スタンバイ状態
303 電源遮断状態
74 リセット制御部
740 パワーオンリセット解除後のプログラムの読み出し先のメモリを示す情報
741 起動対象メモリ指定レジスタ
742 起動アドレス指定レジスタ
743 クロック制御レジスタ
744 システムリセット制御レジスタ
745 アドレス指定
746 システムリセット後のプログラムの読み出し方法を示す情報
75 起動アドレス制御部
751 アドレス情報
76 クロック制御部

Claims (13)

  1. 複数のデータプロセッサと、
    パワーオンリセットに際して入力される第1情報に基づいて、起動させる前記データプロセッサを指示する起動指示部と、
    パワーオンリセットに際して入力される第2情報に基づいて、マスタとされる前記データプロセッサを指示するマスタ指示部と、
    前記起動指示部からの指示に基づいて選択した前記データプロセッサへ電源を供給させる電源制御部とを有しており、
    前記電源制御部は、前記データプロセッサに対する電源供給状態を示す情報が保持される電源管理レジスタを更に有し、
    前記電源管理レジスタは、パワーオンリセット解除後は前記第1情報に応じた値が保持され、マスタとされる前記データプロセッサからの電源の供給又は停止に係る指示に応じて値が更新される、
    ことを特徴とする半導体装置。
  2. 前記電源制御部は、起動された前記データプロセッサからの指示に基づいて選択した前記データプロセッサへの電源の供給を停止させる、請求項1記載の半導体装置。
  3. 前記電源制御部は、起動された前記データプロセッサからの指示に基づいて選択した前記データプロセッサへ電源を供給させる、
    請求項1記載の半導体装置。
  4. パワーオンリセットに際して入力される第3情報、又はパワーオンリセット後に起動された前記データプロセッサから設定される第4情報に基づいて、起動の指示された前記データプロセッサが実行するプログラム領域の先頭アドレスの情報を指示するアドレス指示部を更に有する、
    請求項記載の半導体装置。
  5. データが入力される外部端子を更に有し、
    前記第1情報乃至第3情報は、前記外部端子から入力されるデータである、
    請求項4記載の半導体装置。
  6. データが格納される不揮発性の記憶部を更に有し、
    前記第1情報乃至第3情報は、前記記憶部から入力されるデータである、
    請求項記載の半導体装置。
  7. 前記アドレス指示部は、パワーオンリセットに応答して、起動が指示された前記データプロセッサに対し前記第3情報に基づいた前記先頭アドレスを指示し、パワーオンリセット後のシステムリセットに応答して、起動が指示された前記データプロセッサに対し前記第4情報に基づいた前記先頭アドレスを指示する、
    請求項記載の半導体装置。
  8. 前記アドレス指示部は、マスタとされる前記データプロセッサにより指定されたアドレス情報が格納される起動アドレス制御部を更に有し、
    前記第4情報は、前記起動アドレス制御部に格納されたアドレス情報に基づいて前記先頭アドレスを指示することを示す情報を含む、
    請求項記載の半導体装置。
  9. 前記第4情報は、予め固定されたアドレスを前記先頭アドレスとすることを指示する情報を含む、
    請求項記載の半導体装置。
  10. 前記アドレス指示部は、前記第4情報が格納されるラッチ回路を有する、
    請求項記載の半導体装置
  11. 起動が指示された前記データプロセッサへのクロック信号の供給を制御するクロック信号制御部を更に有し、
    前記クロック信号制御部は、パワーオンリセットに際して入力される前記第1情報、又はマスタとされる前記データプロセッサからの指示に基づいて選択した前記データプロセッサに対し、クロック信号の供給と停止を制御する、
    請求項記載の半導体装置。
  12. 前記複数のデータプロセッサは、アーキテクチャの異なるデータプロセッサを含む、請求項記載の半導体装置。
  13. 前記複数のデータプロセッサは、通信に係るデータ処理を実行するデータプロセッサと、
    画像に係るデータ処理を実行するデータプロセッサとを含む、
    請求項1記載の半導体装置。
JP2010290025A 2010-12-27 2010-12-27 半導体装置 Expired - Fee Related JP5636276B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010290025A JP5636276B2 (ja) 2010-12-27 2010-12-27 半導体装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010290025A JP5636276B2 (ja) 2010-12-27 2010-12-27 半導体装置

Publications (2)

Publication Number Publication Date
JP2012137946A JP2012137946A (ja) 2012-07-19
JP5636276B2 true JP5636276B2 (ja) 2014-12-03

Family

ID=46675307

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010290025A Expired - Fee Related JP5636276B2 (ja) 2010-12-27 2010-12-27 半導体装置

Country Status (1)

Country Link
JP (1) JP5636276B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9606933B2 (en) * 2014-05-22 2017-03-28 Via Alliance Semiconductor Co., Ltd. Multi-core apparatus and method for restoring data arrays following a power gating event
US9733689B2 (en) 2015-06-27 2017-08-15 Intel Corporation Hardware apparatuses and methods to perform transactional power management
JP7087509B2 (ja) * 2018-03-19 2022-06-21 富士フイルムビジネスイノベーション株式会社 情報処理装置及び回路装置
JP2019185527A (ja) * 2018-04-13 2019-10-24 株式会社デンソーテン マイコン装置およびマイコン装置の制御方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6041787B2 (ja) * 1977-12-23 1985-09-18 日本電気株式会社 多重プロセツサによるデ−タ処理装置
JPS6375869A (ja) * 1986-09-18 1988-04-06 Fujitsu Ltd プロセツサの初期起動方式
US5142684A (en) * 1989-06-23 1992-08-25 Hand Held Products, Inc. Power conservation in microprocessor controlled devices
GB2290891B (en) * 1994-06-29 1999-02-17 Mitsubishi Electric Corp Multiprocessor system
JP2002236527A (ja) * 2001-02-08 2002-08-23 Hitachi Ltd マルチプロセッサシステムおよびプロセッサ制御方法
JP2005085164A (ja) * 2003-09-10 2005-03-31 Sharp Corp マルチプロセッサシステムの制御方法およびマルチプロセッサシステム
JP2007328461A (ja) * 2006-06-06 2007-12-20 Matsushita Electric Ind Co Ltd 非対称マルチプロセッサ
JP2008041059A (ja) * 2006-08-10 2008-02-21 Toshiba Corp マルチプロセッサ制御装置及び情報処理装置
JP2009075910A (ja) * 2007-09-21 2009-04-09 Seiko Epson Corp プロセッサ切り替え装置、情報表示装置およびマルチプロセッサシステム

Also Published As

Publication number Publication date
JP2012137946A (ja) 2012-07-19

Similar Documents

Publication Publication Date Title
JP5323828B2 (ja) 仮想計算機制御装置、仮想計算機制御プログラム及び仮想計算機制御回路
TWI506559B (zh) 可動態和選擇性停用核心以及重新設定之多核心微處理器及其方法
JP4621113B2 (ja) 半導体集積回路装置
JP2007206885A (ja) コンピュータシステム及びシステム起動方法
JP2004086912A (ja) ワーキングコンテキスト格納及び再格納装置、並びに方法
JP5610566B2 (ja) 半導体装置及びデータ処理システム
JP2002215597A (ja) マルチプロセッサ装置
JP2014157508A (ja) 演算装置、アレイ型演算装置およびその制御方法、情報処理システム
JP5636276B2 (ja) 半導体装置
JP2014016782A (ja) 情報処理装置およびプログラム
JPWO2007114059A1 (ja) データ処理装置
JP2006351013A (ja) 電子装置において保存/リストア手順を行なうための方法及びシステム
US9268577B2 (en) Information processing apparatus
JP4421390B2 (ja) 半導体集積回路
JP2011060225A (ja) オペレーティングシステム起動方法
JP2008186357A (ja) データ処理装置
JP5622429B2 (ja) マイクロコンピュータ
JP6047033B2 (ja) Lsiおよび情報処理システム
US20140095859A1 (en) Apparatus and method for managing register information in a processing system
US20130132659A1 (en) Microcontroller and method of controlling microcontroller
JP2011013775A (ja) 情報処理装置、情報処理装置の制御方法及びプログラム
JP2013045348A (ja) 半導体集積回路装置
JP5783348B2 (ja) 制御装置、制御プログラム、画像形成装置
JP6396715B2 (ja) データ処理装置
JP6252799B2 (ja) 演算処理装置およびその制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130917

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140530

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140612

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140725

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141002

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141020

R150 Certificate of patent or registration of utility model

Ref document number: 5636276

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees