(57)【要約】【課題】複数のＣＰＵを集積するプロセッサシステムにおいて、オーバヘッドが少なく省電力状態を使用することができる半導体装置を提供する。【解決手段】複数コアプロセッサシステムにおいて、パッケージ１００上で１つまたは複数のＯＳとアプリケーションプログラムを実行させ、それらの実行時に１つまたは複数のＣＰＵをその動作時の消費電力が低い省電力状態に移行させるクロック停止機構１７１〜１７８に加えて、チップ１１０、１２０内において、クロック停止機構１７１〜１７８により省電力状態に移行させた１つまたは複数のＣＰＵの省電力状態を解除するクロック停止解除機構１８１、１８２と、パッケージ１００内のチップ１１０、１２０間において、クロック停止機構１７１〜１７８により省電力状態に移行させた１つまたは複数のＣＰＵの省電力状態を解除する割込み制御回路とを備える。【選択図】図１
2010140319.tif 000002
【特許請求の範囲】
【請求項１】
互いに通信可能である複数の中央処理装置を夫々が有する複数のチップを一つのパッケージ内に含めた半導体装置であって、
前記複数のチップは、前記パッケージ内で互いに通信可能であり、
前記半導体装置は、前記パッケージ上で１つまたは複数のオペレーティングシステムとアプリケーションプログラムを実行し、
前記複数のチップの夫々は、前記１つまたは複数のオペレーティングシステムとアプリケーションプログラムの実行時に１つまたは複数の中央処理装置を消費電力が低い省電力状態に移行させる第１の回路と、
前記第１の回路により省電力状態に移行させた前記１つまたは複数の中央処理装置の省電力状態を同じチップに備えられた他の中央処理装置からの通知により解除する第２の回路と、
前記第１の回路により省電力状態に移行させた前記１つまたは複数の中央処理装置の省電力状態を他のチップからの割り込み通知により解除する第３の回路とを備え、
前記第２の回路により前記省電力状態が解除された場合と、前記第３の回路により前記省電力状態が解除された場合とで、前記省電力状態が解除された直後に前記中央処理装置が行う処理フローが異なることを特徴とする半導体装置。
【請求項２】
請求項１に記載の半導体装置において、
前記第２の回路と前記複数の中央処理装置のそれぞれとは、前記省電力状態を解除するための専用の信号線で接続され、
前記複数の中央処理装置のうち、前記第１の回路により省電力状態に移行させた第１の中央処理装置を、前記第２の回路からの前記信号線を通じた解除要求により前記第１の中央処理装置の省電力状態を解除し、前記第１の中央処理装置の命令実行を再開することを特徴とする半導体装置。
【請求項３】
請求項２に記載の半導体装置において、
前記第１の中央処理装置の省電力状態を前記第２の回路により解除して命令実行を再開する際は、前記第１の中央処理装置を省電力状態に移行させた命令に連続して配置されている次の命令から実行することを特徴とする半導体装置。
【請求項４】
請求項２に記載の半導体装置において、
前記チップ内には、さらに、前記省電力状態を解除するための時間を設定するタイマを備え、
前記タイマに設定された時間が経過した時点で、前記第２の回路から前記第１の中央処理装置の省電力状態を解除するイベントを発生させ、前記第２の回路からの前記信号線を通じた前記イベントにより前記第１の中央処理装置の省電力状態を解除し、前記第１の中央処理装置の命令実行を再開することを特徴とする半導体装置。
【請求項５】
請求項４に記載の半導体装置において、
前記第１の中央処理装置の省電力状態を解除して命令実行を再開する際は、前記第１の中央処理装置を省電力状態に移行させた命令に連続して配置されている次の命令から実行することを特徴とする半導体装置。
【請求項６】
請求項２に記載の半導体装置において、
前記チップ内には、さらに、前記複数の中央処理装置の同期をとるために前記複数の中央処理装置がそれぞれの命令を完了したことを設定するレジスタを備え、
前記複数の中央処理装置のうち、前記第１の中央処理装置に同期させて、同期待ち中の少なくとも１つの第２の中央処理装置を前記第１の回路により省電力状態に移行させる場合に、
前記第２の中央処理装置の省電力状態を解除する際に、前記レジスタに命令を完了したことが設定されて前記第１の中央処理装置および前記同期待ち中の第２の中央処理装置の同期が完了した時点で、前記第２の回路から前記同期待ち中の第２の中央処理装置の省電力状態を解除するイベントを発生させ、前記第２の回路からの前記信号線を通じた前記イベントにより前記同期待ち中の第２の中央処理装置の省電力状態を解除し、前記第１の中央処理装置および前記同期待ち中の第２の中央処理装置の命令実行を再開することを特徴とする半導体装置。
【請求項７】
請求項６に記載の半導体装置において、
前記同期待ち中の第２の中央処理装置の省電力状態を解除して命令実行を再開する際は、前記同期待ち中の第２の中央処理装置を省電力状態に移行させた命令に連続して配置されている次の命令から実行することを特徴とする半導体装置。
【請求項８】
請求項３に記載の半導体装置において、
前記第１の中央処理装置の省電力状態を前記第３の回路により解除して命令実行を再開する際は、前記第１の中央処理装置は割り込み処理ルーチンを実行した後、前記第１の中央処理装置を省電力状態に移行させた命令に連続して配置されている次の命令から実行することを特徴とする半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置およびその装置上で動作するソフトウェアによって構成される半導体装置に関するものであり、特に、複数の中央処理装置（ＣＰＵ）によって構成されるチップを複数結合することによって単一のパッケージを構成し、それらを構成する複数のＣＰＵが１つまたは複数のオペレーティングシステム（ＯＳ）で稼動する環境におけるプロセッサシステムの稼動時の電力状態制御方式に関する技術である。
【背景技術】
【０００２】
本発明者が検討したところによれば、プロセッサシステムなどの半導体装置に関しては、たとえば特許文献１〜４に記載される技術などがある。
【０００３】
特許文献１には、複数のＣＰＵによる並列実行が可能なプロセッサシステム上で複数のＣＰＵのうち、目標の処理時間を達成するために動作させる必要のないもののクロックを停止させたり、供給電源を遮断したり、動作周波数を下げてゆっくり動作させても問題ないものの動作周波数を下げたりして、動作させる低消費電力化技術が開示されている。
【０００４】
特許文献２には、プログラム実行時のＣＰＵの消費電力を低減するためのクロック停止や供給電源の制御などの機構に関して、処理時間の見積もりに応じて周波数や電圧を変更する方式が開示されている。特許文献３には、クロック停止状態でのプロセッサの処理に関して、割込みハンドラを実行して解除を行うのに要する時間を短縮する方式が開示されている。特許文献４には、複数のＣＰＵによる並列実行での同期について、待機解除命令を採用する方式が開示されている。
【特許文献１】特開２００６−２９３７６８号公報
【特許文献２】特開２００２−２１５５９９号公報
【特許文献３】特開２００３−３４５４５６号公報
【特許文献４】特開２０００−１３２５２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、前記のようなプロセッサシステムなどの半導体装置に関して、本発明者が検討した結果、以下のようなことが明らかとなった。
【０００６】
たとえば、バッテリで動作させる電子機器においては稼働時間を長くするため、使用されているプロセッサを低消費電力で動作させることが重要である。そこで、例えばキーからの入力待ちなどのように実際にはＣＰＵを動作させる必要がない場合に、そのＣＰＵの動作周波数を下げたり、また、より消費電力の小さいクロック停止状態に移行させたりすることが行われており、ＣＰＵはスリープモードなどと呼ばれる、そのための機構を持っている。
【０００７】
また、ＩＴ機器のモバイル応用等においては、高速実行性とともに低消費電力化が強く求められるようになってきている。そこで、命令レベルよりも粒度の大きいスレッドと呼ばれるプログラム断片の並列性を利用して性能向上と消費電力削減が追求されており、集積化が進むマイクロプロセッサにおいてマルチコアやメニイコアシステムとしてＣＰＵを多数搭載した複数コアシステムが開発され、それぞれのＣＰＵがスレッドを並列実行するようになっている。
【０００８】
この複数のＣＰＵによる並列実行においては、並列に動作するプログラムの単位である複数のタスクやスレッド間で同期をとることが必要になる。その場合、同期完了を待つためだけにプロセッサをループさせるなどして動作させておくことになる。このような状況において、前記特許文献１に記載の低消費電力化技術では、動作させる必要のないＣＰＵのクロックを停止させたり、供給電源を遮断したり、動作周波数を下げてゆっくり動作させても問題ないものの動作周波数を下げたりして、動作させている。
【０００９】
また、プログラム実行時のＣＰＵの消費電力を低減するためのクロック停止や供給電源の制御などの機構に関して、前記特許文献２には処理時間の見積もりに応じて周波数や電圧を変更する方式が開示されている。前記特許文献３においては、クロック停止状態でのプロセッサの処理に関して、割込みハンドラを実行して解除を行うのに要する時間を短縮する方式が開示されている。また、複数のＣＰＵによる並列実行での同期について、待機解除命令を採用する方式が前記特許文献４において開示されている。
【００１０】
ところで、前記のようなプロセッサシステムにおいては、プロセッサの構成が単一ＣＰＵのシングルコアであるか、複数コアであるかなどによらず、動作中のＣＰＵのクロック周波数を低下させたり、また、クロックを停止させスリープ状態などと呼ぶ省電力状態にしたりして、プロセッサ動作時の消費電力を低減させる方法が一般的に用いられている。このため、ＣＰＵに「スリープ命令」などと呼ばれる命令を実装し、この命令を実行するとそのＣＰＵへのクロックの供給を停止できるようにしている。
【００１１】
この「スリープ命令」などのようにＣＰＵをスリープさせるプロセッサ命令、もしくは、そのようなクロック停止状態に移行するために制御レジスタを設定する命令は存在するが、クロック停止中はＣＰＵが停止しているので、その状態を自ら解除するプロセッサ命令は存在せず、外部からの割込みが入ると、そのクロック停止状態を解除する仕様の機構になっている。このように、前記特許文献１〜４などを含む従来技術のＣＰＵにおいては、クロック停止状態が外部割込みだけで解除されるようになっているので、次のような問題点がある。
【００１２】
まず、クロック停止によってもたらされる省電力状態が多くの外部割込みによって解除されてしまうので、プログラマが意図しないタイミングで解除されてしまうことになる。これを避けるためには、外部割込みで一旦解除された後にまだクロック停止状態を継続してよいかどうかを判定し、再度クロック停止させるための処理が必要になり、処理が複雑になって省電力効果が落ちることになる。また、割込みによる解除時には割込みハンドラと呼ばれる特別な処理プログラムに移行するので、処理に無駄が出ることにもなる。
【００１３】
さらに、複数のＣＰＵを集積するプロセッサシステムにおいて、ＣＰＵの個数が増加すると省電力状態を解除するために検出する外部割込みの数も多くなって割込み処理が複雑になり、省電力機能を実現するためのオーバヘッドが大きくなると考えられる。
【００１４】
そこで、本発明の目的の１つは、上記のような課題を解決して、複数のＣＰＵを集積するプロセッサシステムにおいて、オーバヘッドが少なく省電力状態を使用することができる半導体装置を提供することにある。
【００１５】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１６】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１７】
すなわち、代表的なものの概要は、パッケージ上で１つまたは複数のＯＳとアプリケーションプログラムを実行させ、それらの実行時に１つまたは複数のＣＰＵをその動作時の消費電力が低い省電力状態に移行させる第１の回路に加えて、チップ内において、第１の回路により省電力状態に移行させた１つまたは複数のＣＰＵの省電力状態を解除する第２の回路と、パッケージ内のチップ間において、第１の回路により省電力状態に移行させた１つまたは複数のＣＰＵの省電力状態を解除する第３の回路とを備えることを特徴とする。
【発明の効果】
【００１８】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００１９】
すなわち、代表的なものによって得られる効果は、複数のＣＰＵを集積するプロセッサシステムにおいて、オーバヘッドが少なく省電力状態を使用することができる半導体装置を提供することができる。
【発明を実施するための最良の形態】
【００２０】
＜本発明の実施の形態の概要＞
本発明の実施の形態においては、複数コアプロセッサシステムのチップ内においては、あるＣＰＵのクロック停止状態を該システム上にある周辺機能回路や該ＣＰＵ以外の他のＣＰＵからの制御レジスタのビットセットや特定のイベントのような、割込みにはよらない明示的な要求によって解除させ、処理を再開できるようにする。そして、再開後の処理はスリープ命令に連続して配置されている次の命令からとなるようにする。また、チップ内部にクロック停止解除用のタイマを設け、プログラムによってあらかじめタイマに設定された時間が経過すると、このチップ内部で直接ＣＰＵの省電力状態を解除するイベントを発生させ、外部割込みによらずに省電力状態を解除させることも可能にする。クロック停止時にこの専用のタイマだけに低速でクロックを供給できるようにし、このタイマの動作に関する電力を低くするとともに、本タイマによるクロック停止の解除では、クロック停止している地点の命令の次に配置されている命令から再開することを実現する。また、チップ内部に複数のＣＰＵがそれぞれの命令を完了したことの同期をとる機構を設け、この同期をとる機構が同期完了時に、同期待ち中のＣＰＵ全てに対して直接省電力状態を解除するイベントを発生させ、外部割込みによらずに省電力状態を解除させることも可能にする。なお、チップ間では、従来の外部割込みによって、あるＣＰＵのクロック停止状態を解除するようにする。
【００２１】
以上のような構成により、同一チップ内に形成されたＣＰＵからの明示的な要求で再開できるようにし、再開後の処理はスリープ命令に連続して配置されている次命令からとなるようにすることによって、割込みハンドラや割込み処理に付随する命令列を実行する必要がないので、クロック停止からの復帰動作が高速になり、積極的にクロック停止状態を使用できるようになる。また、クロック停止解除の対象でない割込みはマスクすることによって、クロック停止状態の不要な解除を抑止でき、省電力効果を上げることができる。
【００２２】
したがって、本発明の実施の形態により、複数のＣＰＵを集積する複数コアプロセッサシステムにおいて、チップ間では割込みを用い、チップ内では割込みを用いずに専用の回路によって省電力状態を解除することができるので、使用機会が多いと考えられるチップ内での電力制御が専用回路で実現できるため、オーバヘッドが少なく省電力状態を使用することができるので低電力にて効率よく稼動させることが可能となる。
【００２３】
＜実施の形態（複数コアプロセッサシステム）＞
以下、前述した本発明の実施の形態の概要に基づいた実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００２４】
図１は、本発明の半導体装置の実施の形態である複数コアプロセッサシステムにおけるハードウェアおよびソフトウェア構成の一例を示す図である。
【００２５】
本実施の形態の対象となる複数コアプロセッサシステムは、１つのチップ内にそれぞれ他の中央処理装置（ＣＰＵ）から通信可能である複数のＣＰＵが備えられ、それぞれが互いに通信可能である複数のチップによって１つのパッケージが構成される半導体装置であり、図１の例では、４つの中央処理装置ＣＰＵ１（１０１）、ＣＰＵ２（１０２）、ＣＰＵ３（１０３）、ＣＰＵ４（１０４）が１つのチップＣＰ１（１１０）を構成し、別の４つの中央処理装置ＣＰＵ５（１０５）、ＣＰＵ６（１０６）、ＣＰＵ７（１０７）、ＣＰＵ８（１０８）が別の１つのチップＣＰ２（１２０）を構成し、ＣＰ１（１１０）、ＣＰ２（１２０）の２つのチップによって１つのパッケージＰＫＧ（１００）を構成する８ＣＰＵの複数コアシステムである。さらに、ＣＰＵ１（１０１）〜ＣＰＵ４（１０４）上で１つのオペレーティングシステムＯＳ１（１５１）が、別のＣＰＵ５（１０５）〜ＣＰＵ８（１０８）上で別の１つのオペレーティングシステムＯＳ２（１５２）が、それぞれ稼動し、その上でそれぞれアプリケーションＡＰＬ１（１６１）、ＡＰＬ２（１６２）が稼動する構成である。
【００２６】
ＣＰＵ１（１０１）〜ＣＰＵ８（１０８）はそれぞれ、クロックを停止するための機構（第１の回路）であるクロック停止機構ＣＬＫＳＴＰ１（１７１）、ＣＬＫＳＴＰ２（１７２）、ＣＬＫＳＴＰ３（１７３）、ＣＬＫＳＴＰ４（１７４）、ＣＬＫＳＴＰ５（１７５）、ＣＬＫＳＴＰ６（１７６）、ＣＬＫＳＴＰ７（１７７）、ＣＬＫＳＴＰ８（１７８）を備えており、他のＣＰＵの動作に影響を与えずに任意のＣＰＵおよびそれらの組合せでクロック停止を行える。さらに、後述するように、チップ内にそれぞれクロック停止を解除するための機構（第２の回路）であるクロック停止解除機構ＳＬＰＣ１（１８１）、ＳＬＰＣ２（１８２）を備えている。また、ＣＰＵ１（１０１）〜ＣＰＵ８（１０８）で共有される共有メモリＭＥＭ（１９０）を備えている。
【００２７】
図２は、前記アプリケーションＡＰＬ１（１６１）、ＡＰＬ２（１６２）のプログラム構成および電力状態制御の実行状態を示す図である。
【００２８】
ＡＰＬ１（１６１）は、スレッドＴＨ１（２０１）、ＴＨ２（２０２）、ＴＨ３（２０３）、ＴＨ４（２０４）の４つの並列実行単位に分割されて、ＣＰＵ１（１０１）〜ＣＰＵ４（１０４）がそれぞれのスレッドを実行する。また、ＡＰＬ２（１６２）は、スレッドＴＨ５（２０５）、ＴＨ６（２０６）、ＴＨ７（２０７）、ＴＨ８（２０８）の４つの並列実行単位に分割されて、ＣＰＵ５（１０５）〜ＣＰＵ８（１０８）がそれぞれのスレッドを実行する。
【００２９】
以下において、この図２に従い、図３〜図５を用いて本実施の形態における電力状態制御について説明する。それぞれ、図３はクロック停止制御、図４はチップ間割込み制御、図５はＣＰＵ間同期処理フローを示す図である。また、図６および図７は本実施の形態に対する比較のための従来技術を示し、それぞれ、図６は割込み処理フロー、図７は割込み復帰処理フローを示す図である。
【００３０】
図２に示すように、まず、ＴＨ１（２０１）の進行に伴ってＣＰＵ１（１０１）がＣＰＵ２（１０２）での処理の終了を待つ必要が生じ、ＣＰＵ１（１０１）は地点１（２１１）で自身をクロック停止状態にしてＣＰＵ２（１０２）の処理の終了を待つ。ＣＰＵ１（１０１）がクロック停止に係るクロック停止機構ＣＬＫＳＴＰ１（１７１）の制御レジスタを適切に設定することにより、このＣＰＵ１（１０１）がクロック停止状態に移行する。この状態では、ＣＰＵ１（１０１）は内部状態の更新を行わずにその時点で動作を停止し、ほとんど電力を消費しなくなる。ＣＰＵ１（１０１）をクロック停止状態にするには、上記のような制御レジスタを設定する方法以外にもメモリＭＥＭ（１９０）内にプログラムとして配置されるＣＰＵ１（１０１）に対するスリープ命令を実行したりするなどの手法も存在する。
【００３１】
なお、電力制御を行わないシステムにおいては、地点１（２１１）でクロック停止させずに終了を待つためのループを実行するなどのプログラムとなるのが通常である。
【００３２】
次に、他のＣＰＵでの処理が進み、ＴＨ２（２０２）においてＣＰＵ２（１０２）ではＣＰＵ１（１０１）の処理の継続に必要な処理を終了したので、ＣＰＵ１（１０１）のクロック停止状態を解除する。クロック停止状態解除のために、図１に示すクロック停止解除機構ＳＬＰＣ１（１８１）、ＳＬＰＣ２（１８２）が設けられており、ＣＰＵ１（１０１）〜ＣＰＵ４（１０４）に対するクロック停止解除機構ＳＬＰＣ１（１８１）について、図３を用いて詳しく説明する。
【００３３】
図３において、ＳＬＰＣ１（１８１）からＣＰＵ１（１０１）に解除要求信号ＲＥＬＲＥＱ１（３０１）の信号線が備えられている。ＣＰＵ２（１０２）、ＣＰＵ３（１０３）、ＣＰＵ４（１０４）に対しても同様に解除要求信号ＲＥＬＲＥＱ２（３０２）、ＲＥＬＲＥＱ３（３０３）、ＲＥＬＲＥＱ４（３０４）の信号線が備えられている。また、ＣＰＵ５（１０５）〜ＣＰＵ８（１０８）に対しては、解除要求信号ＲＥＬＲＥＱ５（３０５）、ＲＥＬＲＥＱ６（３０６）、ＲＥＬＲＥＱ７（３０７）、ＲＥＬＲＥＱ８（３０８）の信号線が備えられている。
【００３４】
ＴＨ２（２０２）のＣＰＵ２（１０２）において、地点３（２１３）でＣＰＵ１（１０１）のクロック停止解除のために、クロック停止機構ＣＬＫＳＴＰ１（１７１）の制御レジスタが設定されると、ＳＬＰＣ１（１８１）からＣＰＵ１（１０１）に解除要求信号ＲＥＬＲＥＱ１（３０１）が送られ、ＣＰＵ１（１０１）はクロック停止状態から復帰して以降の命令を実行する。このとき、ＣＰＵ１（１０１）ではクロック停止を発行して停止している命令の地点１（２１１）の次に連続して配置されている命令の地点２（２１２）から、命令の実行を再開する。すなわち、クロック停止命令が発行されなかった場合に連続して実行されていたはずの命令から継続することになる。
【００３５】
比較のために、従来の割込みによるクロック停止状態の解除の動作について以下に説明する。ＣＰＵ２（１０２）で、ＣＰＵ１（１０１）のクロック停止解除のために、ＴＨ２（２０２）の地点３（２１３）においてＣＰＵ１（１０１）に対するＣＰＵ間の割込みを発生させると、ＣＰＵ１（１０１）がこの割込みに係る処理を行う。従来技術で処理を行うと、この割込みによってＣＰＵ１（１０１）のクロック停止状態が解除され、ＣＰＵ１（１０１）はクロック停止状態から復帰して以降の命令を実行することになる。
【００３６】
割込みを受付けたＣＰＵはハードウェアとして図６に示す一連の動作を行うようになっている。まず、ステップ６００によって現在のＣＰＵの状態が退避される。その中で主たるものは、次に実行すべき命令の場所を示すプログラムカウンタ（ＰＣ）、ＣＰＵ状態レジスタ（ＳＲ）などの各種レジスタであり、ＰＣはＰＣ退避用領域（ＳＰＣ）に、ＳＲはＳＲ退避用領域（ＳＳＲ）に退避される。ステップ６１０によって、発生した割込み事象に従って割込み要因が設定される。プログラムカウンタやＣＰＵ状態レジスタの退避用領域や割込み要因の設定場所（ＩＮＴＲ）は、ハードウェア的に用意された専用のレジスタである。続いて、ステップ６２０により割込み要因に対応する割込み処理ルーチンのアドレスがプログラムカウンタに設定され分岐される。それには、例えば割込み要因をインデクスとした配列の要素に、該当する割込み処理関数のアドレスを設定するなどの方式が採られる。
【００３７】
対応する割込みルーチンの中では、発生した割込みに対して必要な処理を行うようにプログラムが記述される。この割込み処理の最後で割込み処理からの復帰命令を実行する。割込み処理復帰命令では、ハードウェアとして図７に示す手順を実行する。ステップ７００において、退避されていたプログラムカウンタ（ＰＣ）やＣＰＵ状態レジスタ（ＳＲ）などの各種レジスタを回復する。ＰＣ退避用領域（ＳＰＣ）をＰＣに、ＳＲ退避用領域（ＳＳＲ）をＳＲに回復する。さらに、ステップ７１０において、回復されたプログラムカウンタのアドレスに分岐して実行を継続する。
【００３８】
以上によって、従来技術で処理を行う場合、復帰したＣＰＵ１（１０１）はまず割込み処理ルーチンに移行し、その割込み処理が終了した後に、以前にクロック停止を発行して停止している命令の地点１（２１１）の次に連続して配置されている命令の地点２（２１２）から命令の実行を再開することになる。
【００３９】
図２に戻り、次に、ＡＰＬ１（１６１）およびＡＰＬ２（１６２）の実行が進行し、ＴＨ３（２０３）においてＣＰＵ３（１０３）がＣＰＵ５（１０５）の処理の終了を待つため、上記ＣＰＵ１（１０１）の場合と同様に地点４（２１４）においてクロック停止を発行してクロック停止状態に移行する。他のＣＰＵでの処理が進み、ＡＰＬ２（１６２）を実行中のＣＰＵ５（１０５）ではＣＰＵ３（１０３）の処理の継続に必要な処理を終了したので、ＣＰＵ３（１０３）のクロック停止状態を解除する。このため本実施の形態の複数コアプロセッサシステムでは図４に示すように、ＣＰＵ３（１０３）を含むチップＣＰ１（１１０）にＣＰＵ５（１０５）を含むチップＣＰ２（１２０）からの割込みが入るように構成されている。ＣＰＵ２（１０２）からＣＰＵ１（１０１）に対しては上述したようにチップ内に解除専用の信号線を設けられるが、ＣＰＵ３（１０３）とＣＰＵ５（１０５）のように異なるチップ間では解除用に専用の信号線を設けるのはチップ数が多くなったりすると複雑にならざるを得ないので、通常の外部割込みによって行うことにする。チップ内の割込み制御回路には、他のチップからの割込みが外部割込み信号として入るようになっている。これは、ＣＰＵとタイマやＩＯ機器など一般的な外部装置との割込みの関係と同じであり、通常のプロセッサ構成に準じるものである。
【００４０】
図４において、チップＣＰ１（１１０）、ＣＰ２（１２０）には、それぞれクロック停止を解除するための機構（第３の回路）である割込み制御回路ＩＮＴＣ１（４０１）、ＩＮＴＣ２（４０２）が設けられている。ＣＰＵ３（１０３）を含むチップＣＰ１（１１０）の割込み制御回路ＩＮＴＣ１（４０１）にＣＰＵ５（１０５）を含むチップＣＰ２（１２０）から外部割込みの要因としてクロック停止解除割込み信号ＳＴＰＲＥＬ（４１０）が入る。ＣＰＵ５（１０５）が発生させたＣＰＵ３（１０３）への割込みはＣＰ２（１２０）内で割込み制御回路ＩＮＴＣ２（４０２）に送られ、ＩＮＴＣ２（４０２）からＩＮＴＣ１（４０１）への外部割込みとして伝えられる。ＩＮＴＣ１（４０１）では、その割込みをＣＰ１（１０１）内で受付けるか、受付ける場合にＣＰＵ１（１０１）〜ＣＰＵ４（１０４）のどのＣＰＵで受付けるかなど通常の割込みに対する設定と制御がなされるものとする。
【００４１】
ＣＰＵ５（１０５）で、ＣＰＵ３（１０３）のクロック停止解除のために、ＴＨ５（２０５）の地点６（２１６）においてＣＰＵ３（１０３）に対してチップ間の割込みを発生させると、ＣＰ１（１１０）は外部割込みとしてこれを受理し、指定されているＣＰＵ３（１０３）がこの割込みに係る処理を行う。外部割込みであるので、本実施の形態においては、この割込みによってＣＰＵ３（１０３）のクロック停止状態が解除され、クロック停止状態から復帰して以降の命令を実行する。ＣＰＵ２（１０２）からＣＰＵ１（１０１）へ、チップ内で割込みによってクロック停止を解除する動作を説明する部分で記述したように、復帰したＣＰＵ３（１０３）がまず割込み処理ルーチンに移行し、その割込み処理が終了した後に、クロック停止を発行して停止している命令の地点４（２１４）の次に連続して配置されている命令の地点５（２１５）から命令の実行を再開することになる。
【００４２】
ここで、上記のような割込み処理は原則としてオペレーティングシステムＯＳ１（１５１）が処理するもので、この割込み処理ルーチンはＯＳ１（１５１）制御下のメモリＭＥＭ（１９０）に配置されたプログラム用の領域に置かれているが、プログラムの構成によってはＴＨ１（２０１）〜ＴＨ４（２０４）のいずれかに置かれる場合もある。
【００４３】
あるＣＰＵが他のＣＰＵなどで実行される処理を省電力で待つには、上記のように待たせている処理を行っているＣＰＵからの明示的な解除が発生するまでクロック停止状態にする場合と、自身でクロック停止時間を決められるので、そこまでの時間だけ待つようにする場合とがある。動画再生や音楽再生などでは予め定まった時間間隔で一塊の処理が終了すればよいので、処理に余裕がある場合に、後者のように残り時間だけクロック停止を行って待つ処理が考えられる。
【００４４】
そのような場合、チップＣＰ１（１１０）内のＣＰＵ４（１０４）がプログラム上の地点７（２１７）において、定められた時間間隔に対して時間ｄだけ処理に余裕があるとして、地点５（２１５）で時間ｄだけクロック停止を行うものとする。本実施の形態においてはこのため、ＣＰＵ４（１０４）は図３の解除用タイマＲＥＬＴＭ１（３１０）に時間ｄを設定して、クロック停止命令を発行する。なお、他方のチップＣＰ２（１２０）内のＣＰＵの場合は、解除用タイマＲＥＬＴＭ２（３２０）に時間を設定することになる。
【００４５】
ＲＥＬＴＭ１（３１０）はチップＣＰ１（１１０）内のＳＬＰＣ１（１８１）に付与されており、クロック停止中このタイマが属するハードウェアの領域にはこのタイマを動作させるために最低限の周期でクロックが提供され、動作している。ＲＥＬＴＭ１（３１０）は共有バス（３５０）を経由してＣＰＵ１（１０１）〜ＣＰＵ４（１０４）から設定され、設定された時間ｄが経過すると、クロック停止解除機構ＳＬＰＣ１（１８１）から解除イベントを発行し解除要求信号ＲＥＬＲＥＱ４（３０４）を送って対応するＣＰＵ４（１０４）のクロック停止状態を解除する。ＣＰＵ４（１０４）はクロック停止状態から復帰して、以降の命令を実行する。このとき、クロック停止命令を発行して停止している命令の地点７（２１７）の次に連続して配置されている命令の地点８（２１８）から命令の実行を再開する。すなわち、クロック停止命令が発行されなかった場合に連続して実行されていたはずの命令から継続することになる。
【００４６】
さらに、複数コアプロセッサシステムにおいては、複数のＣＰＵ間で実行の同期をとる機構が装備されることが一般的である。これは、自身の処理が終了したＣＰＵが、同期を行うべき複数個のＣＰＵ間で共有されている同期用のハードウェアである同期レジスタを設定し、すべての該同期に関連するＣＰＵが同期レジスタを設定すると全体の同期待ちを抜けるものである。本実施の形態では、図３において、そのような同期レジスタＳＹＮＣＲＥＧ１（３３０）、ＳＹＮＣＲＥＧ２（３４０）が装備されている。
【００４７】
今、ＣＰＵ６（１０６）、ＣＰＵ７（１０７）、ＣＰＵ８（１０８）がそれぞれプログラムの地点９（２１９）、地点１０（２２０）、地点１１（２２１）で同期をとる必要があり、これらの地点に先に到達したＣＰＵ６（１０６）、ＣＰＵ７（１０７）がそれぞれの地点で省電力のために同期レジスタを設定し、同設定命令の次の命令でクロック停止を発行してクロック停止状態となっている。ＣＰＵ８（１０８）が最後に処理を終了して地点１１（２２１）で同期レジスタを設定し、ＣＰＵ６（１０６）、ＣＰＵ７（１０７）、ＣＰＵ８（１０８）全てがＳＹＮＣＲＥＧ２（３４０）を設定すると、上記ＲＥＬＴＭ１（３１０）におけるものと同様に、クロック停止解除機構ＳＬＰＣ２（１８２）はＳＹＮＣＲＥＧ２（３４０）の情報からクロック停止解除イベントを発行する。ＳＬＰＣ２（１８２）ではこのイベントにより解除要求信号ＲＥＬＲＥＱ６（３０６）、ＲＥＬＲＥＱ７（３０７）をそれぞれＣＰＵ６（１０６）、ＣＰＵ７（１０７）に送り、対応するＣＰＵ６（１０６）、ＣＰＵ７（１０７）のクロック停止状態を解除する。ＣＰＵ８（１０８）は最後に同期に到達してＳＹＮＣＲＥＧ２（３４０）を設定したので、クロック停止命令は実行せず、その次の命令を実行することになる。
【００４８】
図５によって、地点９（２１９）、１０（２２０）、１１（２２１）での各ＣＰＵの同期レジスタ設定とその次の命令処理の流れを示す。同期地点に到達したとき、ステップ５００においてＣＰＵは同期レジスタを設定する。これは例えば、同期レジスタが配列で構成されているとして、自身のＣＰＵ番号に対応する配列要素を「０」に設定することなどで実現される。次に、ステップ５１０において、同期対象の全てのＣＰＵ（本例ではＣＰＵ６（１０６）、ＣＰＵ７（１０７）、ＣＰＵ８（１０８））が同期レジスタの対応要素を「０」に設定して処理を完了している、すなわち同期できることを確認する。ステップ５１０において、まだ「０」を設定していないＣＰＵがあれば（Ｎｏ）、そのＣＰＵ自身は同期待ち状態になる。本実施の形態では、ステップ５２０において、この同期待ちでクロック停止状態にする命令を発行し、実行するものとする。ステップ５１０において、対象の全てのＣＰＵが処理を完了していれば（Ｙｅｓ）、同期が完了するので、全体の実行が再開される。本実施の形態では、同期レジスタを設定したＣＰＵはステップ５２０の処理を実行せず、ステップ５３０において、使用した同期レジスタを初期化し、ステップ５４０で同期待ち命令の次の命令を実行する。最後に、同期レジスタを設定したＣＰＵ以外のＣＰＵはクロック停止状態であり、この状態が図３の同期レジスタＳＹＮＣＲＥＧ１（３３０）、ＳＹＮＣＲＥＧ２（３４０）と、クロック停止解除機構ＳＬＰＣ１（１８１）、ＳＬＰＣ２（１８２）によって解除されることになる。
【００４９】
以上のようにして、図２においてＣＰＵ６（１０６）、ＣＰＵ７（１０７）はクロック停止状態から復帰して、それぞれ、地点１２（２２２）、地点１３（２２３）以降の命令を実行する。また、ＣＰＵ８（１０８）は地点１４（２２４）の命令から実行される。
【００５０】
以上説明したようにして、本実施の形態では、他のＣＰＵからの明示的な要求でクロック停止状態を解除して命令実行を再開できるようにし、チップ内部のイベントによる解除・復帰後の処理ではクロック停止命令に連続して配置されている次命令からとなるようにすることによって、割込みハンドラや割込み処理に付随する命令列を実行する必要がなく、解除・復帰動作が高速になり、積極的にクロック停止を使用できるようになる。また、対象でない割込みはマスクすることによって、クロック停止状態の不要な解除を抑止できることにも繋がる。また、チップ間においては、通常の割込みを用いた省電力状態の解除とし、ＣＰＵ個数が増加しても回路規模を増加させないようにすることができる。
【００５１】
したがって、本実施の形態により、複数のＣＰＵを集積する複数コアプロセッサシステムにおいて、オーバヘッドなく省電力状態を使用することができ、低電力にて効率よく処理することが可能となる。
【００５２】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【００５３】
本発明は、複数のＣＰＵによって構成されるチップを複数結合することによって単一のパッケージを構成し、それらを構成する複数のＣＰＵが１つまたは複数のＯＳで稼動する環境におけるプロセッサシステムの稼動時の電力状態制御方式に利用可能である。
【図面の簡単な説明】
【００５４】
【図１】本発明の半導体装置の実施の形態である複数コアプロセッサシステムにおけるハードウェアおよびソフトウェア構成の一例を示す図である。
【図２】本発明の半導体装置の実施の形態である複数コアプロセッサシステムにおいて、アプリケーションのプログラム構成および電力状態制御の実行状態を示す図である。
【図３】本発明の半導体装置の実施の形態である複数コアプロセッサシステムにおいて、クロック停止制御を示す図である。
【図４】本発明の半導体装置の実施の形態である複数コアプロセッサシステムにおいて、チップ間割込み制御を示す図である。
【図５】本発明の半導体装置の実施の形態である複数コアプロセッサシステムにおいて、ＣＰＵ間同期処理フローを示す図である。
【図６】本発明の実施の形態に対する比較のための従来技術において、割込み処理フローを示す図である。
【図７】本発明の実施の形態に対する比較のための従来技術において、割込み復帰処理フローを示す図である。
【符号の説明】
【００５５】
１００：パッケージ
１０１〜１０８：中央処理装置
１１０、１２０：チップ
１５１、１５２：オペレーティングシステム
１６１、１６２：アプリケーション
１７１〜１７８：クロック停止機構
１８１、１８２：クロック停止解除機構
１９０：メモリ
２０１〜２０８：スレッド
２１１〜２２４：地点
３０１〜３０８：解除要求信号
３１０、３２０：解除用タイマ
３３０、３４０：同期レジスタ
３５０、３６０：共有バス
４０１、４０２：割込み制御回路
４１０：クロック停止解除割込み信号
【図１】
2010140319.tif 000003
【図２】
2010140319.tif 000004
【図３】
2010140319.tif 000005
【図４】
2010140319.tif 000006
【図５】
2010140319.tif 000007
【図６】
2010140319.tif 000008
【図７】
2010140319.tif 000009