(57)【特許請求の範囲】
【請求項１】
命令を処理する命令処理状態ではクロックを供給されて前記命令を処理し、命令処理を停止する命令処理停止状態では前記クロックの供給が停止されて省電力動作状態に遷移する内部回路と、前記省電力動作を無効化する電力制御回路とをそれぞれ有する複数の演算処理部と、
前記複数の演算処理部の前記命令処理停止状態を監視し、前記命令処理停止状態の演算処理部の数をカウントする監視回路とを有し、
前記複数の演算処理部のそれぞれの電力制御回路は、前記命令処理停止状態の演算処理部の数が閾値を越えた場合、前記命令処理停止状態の演算処理部の前記省電力動作を無効化する、演算処理装置。
【請求項２】
前記演算処理部は、前記クロックの供給と供給停止を制御するクロックゲートを有し、
前記内部回路は、前記演算処理部が前記命令処理状態では前記クロックゲートをクロック供給状態に制御し、前記演算処理部が前記命令処理停止状態では前記クロックゲートをクロック供給停止状態に制御する、請求項１に記載の演算処理装置。
【請求項３】
前記複数の演算処理部は、前記内部回路を複数有し、
前記複数の演算処理部のそれぞれの電力制御回路は、前記命令処理停止状態の演算処理部の省電力動作を無効化する場合、前記命令処理停止状態の演算処理部の数に応じた数の第１の内部回路の省電力動作を無効化する、請求項１に記載の演算処理装置。
【請求項４】
前記監視回路は、前記命令処理停止状態の演算処理部の数が複数の異なる閾値を越えたか否かをそれぞれ示す複数の制御情報を生成し、
前記電力制御回路は、前記複数の制御情報に応じて、前記命令処理停止状態の演算処理部内の前記複数の内部回路それぞれの前記省電力動作を無効化する、請求項３に記載の演算処理装置。
【請求項５】
前記複数の演算処理部のそれぞれの電力制御回路は、前記省電力動作の無効化を、前記複数の命令処理停止状態の演算処理部の省電力動作を無効にした場合の省電力量の合計が、前記複数の命令処理停止状態の演算処理部が全て前記命令処理停止状態から前記命令処理状態に復帰する時の第１の許容電力差以下になるように、実行する、請求項１に記載の演算処理装置。
【請求項６】
前記複数の演算処理部のそれぞれの電力制御回路は、前記命令処理停止状態の省電力動作の無効化を、前記複数の命令処理停止状態の演算処理部の省電力動作を無効にした場合の省電力量の合計が、前記複数の命令処理状態の演算処理部が全て前記命令処理状態から前記命令処理停止状態に遷移する時の第２の許容電力差以下になるように、実行する、請求項１に記載の演算処理装置。
【請求項７】
前記監視回路は、
前記停止状態の演算処理部の数を計数した計数値を保持するカウンタと、
閾値レジスタと、
前記カウンタの計数値と前記閾値とを比較し、前記計数値が前記閾値を越えると制御情報を出力する比較器とを有し、
前記電力制御回路は、前記制御情報に応答して前記命令処理停止状態の演算処理部の省電力動作を無効化する、請求項１に記載の演算処理装置。
【請求項８】
前記監視回路は、前記命令処理停止状態の演算処理部の数を計数した計数値を保持するカウンタを有し、
前記電力制御回路は、閾値レジスタと、前記カウンタの計数値と前記閾値とを比較し、前記計数値が前記閾値を越えると制御情報を出力する比較器を有し、前記制御情報に応答して前記命令処理停止状態の演算処理部の省電力動作を無効化する、請求項１に記載の演算処理装置。
【請求項９】
前記命令処理状態の複数の演算処理部が前記命令処理停止状態に遷移する場合、
前記監視回路は、前記閾値を第１の値に設定し、前記遷移から第１の所定時間経過後に前記閾値を前記第１の値より大きい第２の値に変更し、
前記命令処理停止状態に遷移する複数の演算処理部の前記省電力動作が、前記第１の所定時間の間無効化され、前記第１の処理時間後に前記省電力動作が有効化される、請求項１に記載の演算処理装置。
【請求項１０】
前記命令処理停止状態の演算処理部が前記命令処理状態に復帰する場合、
前記監視回路は、前記復帰より第２の所定時間前に前記閾値を前記第３の値から前記第３の値より小さい第４の値に変更し、
前記命令処理状態に遷移する複数の演算処理部の前記省電力動作が、前記復帰するときより第２の処理時間前に有効化状態から無効化状態にされ、前記復帰するときより第２の処理時間前から前記復帰まで間無効化される、請求項９に記載の演算処理装置。
【請求項１１】
前記複数の演算処理部のそれぞれの電力制御回路は、前記命令処理停止状態の演算処理部の省電力動作を無効化する場合、前記複数の内部回路のうち前記第１の内部回路以外の第２の内部回路の省電力動作を順番に無効状態から有効状態に制御する、請求項３に記載の演算処理装置。
【請求項１２】
前記複数の内部回路は、複数の演算処理回路を含み、
前記複数の演算処理回路は、それぞれ、複数組の回路を有し、
複数の演算処理部のそれぞれの電力制御回路は、前記命令処理停止状態の演算処理部を前記命令処理状態に復帰する場合、前記復帰対象の演算処理部の前記複数の演算処理回路内の前記複数組の回路のうち一部の組の回路を非省電力動作に制御した後、前記複数の演算処理回路の前記複数組の回路のうち残りの組の回路を順番に非省電力動作に制御する、請求項３または１１に記載の演算処理装置。
【請求項１３】
命令を処理する命令処理状態ではクロックを供給されて命令を処理し、命令処理を停止する命令処理停止状態では前記クロックの供給が停止されて省電力動作状態に遷移する内部回路をそれぞれ有する複数の演算処理部を有する演算処理装置の制御方法において、
前記演算処理装置が有するカウンタが、前記命令処理停止状態の演算処理部の数を計数し、
前記演算処理装置が有する監視回路が、前記命令処理停止状態の演算処理部の数が閾値を越えた場合、前記命令処理停止状態の演算処理部の前記省電力動作を無効化する、演算処理装置の制御方法。
【請求項１４】
前記複数の演算処理部は、前記内部回路を複数有し、
前記監視回路は、
前記命令処理停止状態の演算処理部の前記省電力動作の無効化は、前記命令処理停止状態の演算処理部の数に応じた数の第１の内部回路の省電力動作を無効化することを有する、請求項１３に記載の演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，演算処理装置及び演算処理装置の制御方法に関する。
【背景技術】
【０００２】
演算処理回路（またはプロセッサ、CPU（Central Processing Unit）チップ）などの集積回路装置は、内部回路の消費電力が急変するとき電源ノイズを発生する。電源ノイズは、内部回路の消費電力が急変することで電源配線に流れる電流量が急変し、電源配線で供給される電源電圧が変動することで発生する。電源ノイズが発生すると、電源電圧を供給されている内部回路が誤動作する可能性がある。したがって、電源ノイズをできるだけ小さくすることが要求される。
【０００３】
演算処理装置や集積回路装置の電源ノイズを低減する方法については、以下の特許文献に記載されている。
【０００４】
近年の高性能のプロセッサは、複数のコア（またはCPUコア、演算処理部）を有し、複数の命令列を並列に実行する。さらに、高性能のプロセッサは、コア内に複数の演算回路を有し、複数の命令を並列に実行する。このように、プロセッサ内のコア数の増大、コア内の演算回路数の増大に伴って、プロセッサの消費電力が増大してきた。
【０００５】
上記のようなプロセッサの消費電力を削減するために、プロセッサ内のレジスタファイル、RAM（Random Access Memory）、演算回路など個々の内部回路は、クロックゲート回路を有する。クロックゲート回路は、動作中にクロックを内部回路に供給し、停止中はクロックの供給を停止する。このようにクロックゲート回路を利用して細かく省電力制御（パワーセーブ制御：Power save control）を行うことにより、省電力（パワーセーブ：Power save）状態に遷移することが行われる。
【０００６】
複数のコアを有するプロセッサは、前述のクロックの供給を停止する省電力制御を利用して、コアが命令を処理する命令処理状態から命令の処理を停止する命令処理停止状態に推移すると、そのコア内の回路へのクロックの供給を停止してコアの消費電力を低減する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１３−２０５９０５号公報
【特許文献２】特開２０１４−５９７６１号公報
【特許文献３】特表２０１３−５１６７１０号公報
【特許文献４】特開２００９−１２３２３５号公報
【特許文献５】特開２００４−０１３８２０号公報
【特許文献６】特開２００１−１４２５５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、プロセッサ内のコア数が増大したことで、命令処理状態から命令処理停止状態に推移するコアの数が多くなると、または、命令処理停止状態から命令処理状態に復帰するコアの数が多くなると、消費電力の増減幅が大きくなり、大きな電源ノイズが発生する。高性能のプロセッサのコア数の増大は、この消費電力の増減幅をより大きくし、電源ノイズによる電源電圧の変動幅を大きくする。
【０００９】
そこで，実施の形態の第１の側面は，消費電力の変動幅を抑制する演算処理装置及びその制御方法を提供する。
【課題を解決するための手段】
【００１０】
本実施の形態の第１の側面は，命令を処理する命令処理状態ではクロックを供給されて前記命令を処理し、命令処理を停止する命令処理停止状態では前記クロックの供給が停止されて省電力動作状態に遷移する内部回路と、前記省電力動作を無効化する電力制御回路とをそれぞれ有する複数の演算処理部と、前記複数の演算処理部の前記命令処理停止状態を監視し、前記命令処理停止状態の演算処理部の数をカウントする監視回路とを有し、前記複数の演算処理部のそれぞれの電力制御回路は、前記命令処理停止状態の演算処理部の数が閾値を越えた場合、前記命令処理停止状態の演算処理部の前記省電力動作を無効化する、演算処理装置である。
【発明の効果】
【００１１】
第１の側面によれば，消費電力の変動幅を抑制する演算処理装置及びその制御方法を提供する。
【図面の簡単な説明】
【００１２】
【図１】プロセッサの消費電力の変動例を示す図である。
【図２】第１の実施の形態におけるプロセッサの構成を示す図である。
【図３】プロセッサ内のコア１１の構成例を示す図である。
【図４】プロセッサの内部回路の省電力動作と省電力動作を禁止または抑止する動作を説明する図である。
【図５】本実施の形態における監視回路１３の構成とコア１１の構成とを示す図である。
【図６】第１の実施の形態のプロセッサの電力制御の一例を示す図である。
【図７】第１の実施の形態におけるプロセッサの電力制御の別の例を示す図である。
【図８】第１の実施の形態でのプロセッサの電力制御のさらに別の例を示す図である。
【図９】第１の実施の形態の変形例におけるプロセッサの構成図である。
【図１０】第２の実施の形態におけるコアの構成を示す図である。
【図１１】図１０のコア内の命令制御回路の構成を示す図である。
【図１２】第２の実施の形態における監視回路１３の構成を示す図である。
【図１３】第２の実施の形態における各コアの電力制御回路１５の構成を示す図である。
【図１４】第２の実施の形態における監視回路と各コアの電力制御回路の動作を示すフローチャート図である。
【図１５】第２の実施の形態でのプロセッサの電力制御の例を示す図である。
【図１６】第２の実施の形態でのプロセッサの電力制御の別の例を示す図である。
【図１７】第３の実施の形態におけるプロセッサの構成を示す図である。
【図１８】第３の実施の形態における監視回路と電力制御回路の構成図である。
【図１９】第４の実施の形態における監視回路の構成を示す図である。
【図２０】第４の実施の形態でのコアが命令処理状態から命令処理停止状態に移行する時の電力制御を示す図である。
【図２１】第４の実施の形態でのコアが命令処理停止状態から命令処理状態に復帰する時の電力制御を示す図である。
【図２２】第５の実施の形態における電力制御回路１５の構成を示す図である。
【図２３】第５の実施の形態におけるDPS信号生成回路の構成例を示す図である。
【図２４】図２２，２３の電力制御回路１５とDPS信号生成回路１５１の動作を示すタイミングチャート図である。
【図２５】第５の実施の形態におけるプロセッサ全体の消費電力の変動を示す図である。
【図２６】第５の実施の形態における電力制御回路の構成例を示す図である。
【図２７】図２６の電力制御回路の動作を示すタイミングチャート図である。
【発明を実施するための形態】
【００１３】
図１は、プロセッサの消費電力の変動例を示す図である。横軸が時間で、縦軸がプロセッサチップの消費電力を示す。図１の例では、プロセッサが６つのコアCORE1〜CORE6を有する。そして、プロセッサでは、時刻t30に５つのコアCORE1-5がほぼ同時に命令処理状態から命令処理停止状態に推移し、時刻t31に５つのコアCORE1-5がほぼ同時に命令処理停止状態から命令処理状態に推移する。そのため、時刻t30でのプロセッサチップの消費電力の低下変動幅dPWは非常に大きく、それに伴い電源電圧が大きく変動する（上昇する）。同様に、時刻t31でのプロセッサチップの消費電力の上昇変動幅dPWも非常に大きく、それに伴い電源電圧が大きく変動する（低下する）。
【００１４】
［第１の実施の形態］
図２は、第１の実施の形態におけるプロセッサの構成を示す図である。プロセッサ１０は、複数のコアCORE1〜CORE_Nと、それらに共通に設けられた二次キャッシュメモリ１２を有する。そして、プロセッサ１０は、コアCORE1〜CORE_Nの命令処理停止状態を監視する監視回路１３を有する。また、プロセッサ１０は、電源回路１から電源電圧VDDを供給され、電源電圧VDDは、図示しない内部の電源配線を介して、各コア１１、L2キャッシュメモリ１３、監視回路１３に供給される。
【００１５】
図３は、プロセッサ内のコア１１の構成例を示す図である。コア１１は、命令を処理する内部回路１４と、内部回路１４の電力制御を行う電力制御回路１５を有する。内部回路１４は、命令を処理するデコーダや演算器などの回路を有する。内部回路１４は、クロック生成回路１３からクロックCLK1を受信し、クロックイネーブル信号CLKENに応じて、クロックCLK1を入力し、またはクロックの入力を停止する。また、内部回路１４は、命令処理停止状態を通知する命令処理停止信号S1_1と、命令処理停止状態の解除を通知する停止解除信号S1_2とを、電力制御回路１５に出力する。そして、電力制御回路１５は、それらの信号S1_1、S1_2を監視回路１３に出力する。内部回路１４は、例えば、サスペンド命令SUSやスリープ命令SLを実行したときに命令処理停止信号S1_1を出力する。また、内部回路１４は、割込が発生したときなどに、サスペンド解除E_SUSやスリープ解除E_SLの停止解除信号S1_2を出力する。
【００１６】
監視回路１３は、各コア１１から供給される命令処理停止信号S1_1と停止解除信号S1_2に基づいて、命令処理停止中のコア数をカウントする。具体例は後述する。
【００１７】
図４は、プロセッサの内部回路の省電力動作と省電力動作を禁止または抑止する動作を説明する図である。本実施の形態での省電力動作（パワーセーブ動作）は、一例として、内部回路１４へのクロックの供給を停止する動作である。
【００１８】
図４（Ａ）に示されるとおり、コアの内部回路１４は、例えば、クロックCLK1の内部回路への供給とその供給の停止を制御するクロックゲートCKGと、クロックゲートCKGが出力するクロックCLK2が供給されるクロックツリーCLK_TREEと、論理回路LOGとを有する。論理回路LOGは、例えば、複数の組み合わせ回路と、組み合わせ回路の前後に設けられた複数のラッチ回路FFを有する。そして、ラッチ回路FFは、クロックCLK2に基づいて動作する。
【００１９】
クロックゲートCKGは、ANDゲートAND1とORゲートOR1とを有する。図４（Ｂ）に示されるとおり、クロックゲートCKGのANDゲートAND1は、クロックイネーブル信号CLKENがH（Highレベル）の場合（時間ｔ１−ｔ２）、供給されるクロックCLK1を通過させ、クロックCLK2を内部回路内のクロックツリーCLK_TREEに出力する。この状態が内部回路の動作状態である。また、ANDゲートAND1は、クロックイネーブル信号CLKENがL（LOWレベル）の場合に、クロックCLK1の通過を停止し、クロックCLK2の供給に要する電力をセーブする。クロックイネーブル信号CLKENをLにしてクロックを停止することで、内部回路は省電力動作状態に遷移し省電力動作を実行する。この状態では、クロックCLK2のクロックツリー内の伝播が停止するため、内部回路１４の多くの電力が削減される。
【００２０】
クロックイネーブル信号CLKENは、例えば、内部回路１４内の命令制御回路（図示せず）により生成される。つまり、内部回路１４は、命令の処理状態に応じて、論理回路LOGの動作が必要か否かを検出し、動作が必要ない場合にクロックイネーブル信号CLKENをLにして省電力動作状態に遷移する。例えば、サスペンド命令やスリープ命令に応じて、内部回路１４は、クロックイネーブル信号CLKENをLにして省電力動作状態に遷移する。
【００２１】
内部回路内の命令制御回路は、コアが命令処理停止状態になると、クロックイネーブル信号CLKENをLにして省電力動作状態に遷移する。また、命令処理停止状態では、内部回路は命令処理を行わないので、最小限の電力消費状態になる。これにより、コア内部の動作停止可能な内部回路に対するクロックの印加を停止でき、消費電力を大幅に削減することができる。一方、電力制御回路１５は動作状態を継続する。
【００２２】
クロックゲートCKGは、ORゲートOR1に省電力無効化信号DPS（Disable Power Save）を入力する。図４（Ｂ）に示されるとおり、クロックゲートCKGは、クロックイネーブル信号CLKENがLであっても、省電力無効化信号DPSがHの場合（時間ｔ３−ｔ４）、クロックCLK1を通過させクロックCLK2をクロックツリーに供給する。これにより、クロックイネーブル信号による省電力動作が無効化される。これが省電力無効状態である。
【００２３】
省電力動作の別の例として、例えば、内部回路１４内の動作停止可能な回路への電源スイッチを遮断してもよい。その場合、電源スイッチは、クロックイネーブル信号に代わる電力制御信号（図示せず）によりオン、オフ制御され、一方で、省電力無効化信号DPSにより強制的にオンに制御される。上記以外の様々方法で省電力動作が実現可能である。そして、省電力無効化信号DPSにより省電力動作が無効化される。
【００２４】
図５は、本実施の形態における監視回路１３の構成とコア１１の構成とを示す図である。各コア１１は、図３で示されるとおり、電力制御回路１５を有し、電力制御回路１５は、命令処理停止信号S1_1と停止解除信号S1_2を監視回路１３に出力する。
【００２５】
監視回路１３は、命令処理停止状態のコア数をカウントするカウンタ１３１を有する。カウンタ１３１は、いずれかのコアの電力制御回路１５から出力される命令処理停止信号S1_1に応答してカウントアップし、停止解除信号S1_2に応答してカウントダウンする。その結果、カウンタ１３１のカウント値CNTは、命令処理停止状態のコア数を示す。
【００２６】
図５の例では、監視回路１３は、さらに、ファームウエアのメモリ２から出力される閾値コア数Cthが設定される閾値コア数レジスタ１３３と、カウンタ１３１の命令処理停止状態のコア数を示すカウント値CNTと閾値コア数Cthとを比較するコンパレータ１３２を有する。コンパレータ１３２は、カウント値CNTが閾値コア数Cthを越えると、コア数オーバー信号（制御信号）Over_Cthを全てのコア１１の電力制御回路１５に出力する。
【００２７】
図３に示した各コア１１の電力制御回路１５は、コア数オーバー信号Over_Cthに応答して、省電力無効化信号DPS（Hレベル）を内部回路１４に出力する。その結果、命令処理停止状態のコアでは、クロックイネーブル信号CLKENをLレベルにしてクロックを停止する省電力動作が、省電力無効化信号DPS（Hレベル）により、無効化される。
【００２８】
［第１の実施の形態での電力制御例１］
図６は、第１の実施の形態のプロセッサの電力制御の一例を示す図である。横軸が時間、縦軸がプロセッサチップの消費電力を示す。この例では、プロセッサが６個のコアを有し、閾値コア数Cthが「３」に設定され、監視回路１３内のカウンタ１３１は初期値「０」である。
【００２９】
まず、時刻t1でコアCORE1が命令処理停止状態に入る。すなわち、内部回路１４内の命令制御回路がサスペンド命令またはスリープ命令を実行し、命令処理停止信号S1_1を電力制御回路１５に出力し、電力制御回路１５はその信号S1_1を監視回路１３に出力する。信号S1_1に応答して、監視回路１３のカウンタ１３１は、カウントアップしカウント値CNT=1になる。また、内部回路１４内の命令制御回路がクロックイネーブル信号CLKENをLレベル（クロックディセーブル）にし、クロックゲートCKGはクロックCLK1の通過を停止し、コアCORE1は省電力動作状態に遷移する。その結果、図６に示されるとおり、プロセッサチップの消費電力は、コアCORE1の電力だけ低下する。
【００３０】
時刻t2でコアCORE2が命令処理停止状態になる。これにより、監視回路１３のカウンタ１３１はカウント値CNTをCNT=2にする。そして、時刻t1と同様に、プロセッサチップの消費電力は、コアCORE2の消費電力分低下する。
【００３１】
時刻t3でコアCORE3が命令処理停止状態になる。これにより、監視回路１３のカウンタ１３１はカウント値CNTをCNT=3にする。そして、時刻t1, t2と同様に、プロセッサチップの消費電力は、コアCORE3の消費電力分低下する。
【００３２】
次に、時刻t4でコアCORE4が命令処理停止状態になる。これにより、コアCORE4内の内部回路１４はクロックイネーブル信号CLKENをLレベル（クロック停止状態）にする。また、監視回路１３のカウンタ１３１のカウント値CNTはCNT=4になり、比較器１３２がCNT=4＞Cth=3を検出し、コア数オーバー信号Over_CthをHレベルにし、命令処理停止状態のコア数が閾値コア数Cth=3を越えたことを検出する。
【００３３】
コア数オーバー信号Over_Cth＝Hに応答して、全てのコアCORE1-CORE6の電力制御回路１５は、省電力無効化信号DPSをHレベル（省電力無効状態）にする。それにより、命令処理停止状態により省電力動作中のコアCORE1、CORE2、CORE3とこれから省電力動作に入るコアCORE4は、DPS=Hにより省電力無効状態になる。
【００３４】
その結果、時刻t4でのプロセッサチップの消費電力の低下は、コアCORE4が省電力動作する場合よりも小さい。図６中に示される電力PW_DPSは、命令処理停止状態のコアCORE1-CORE4の省電力無効状態での消費電力の合計に対応する。すなわち、命令処理停止状態のコアCORE1-CORE4では、DPS=Hにより内部回路１４でのクロックCLK2の停止が無効化され、クロックCLK2の伝播に要する電力消費が生じる。そのため、命令処理停止状態のコアCORE1-CORE4は、クロックCLK2の伝播に要する電力消費が発生し、電力PW_DPSを消費する。
【００３５】
この結果、プロセッサチップ内の消費電力は、命令処理状態のコアCORE5、CORE6の消費電力PW_CORE5,6と、命令処理停止状態のコアCORE1-CORE4の省電力無効状態の消費電力PW_DPSの合計になる。この合計電力PW_CORE5,6＋PW_DPSと、全コアが命令処理状態の電力PW_CPRE1-6との差分は、電源ノイズが許容範囲内になる許容電力差P_dPWより小さい。
【００３６】
そして、時刻t5でプロセッサに割込が発生し、コアCORE1-4のサスペンドまたはスリープが解除され、命令処理停止状態から命令処理状態に遷移する。このとき、コアCORE1-4は一斉に命令処理を開始しプロセッサチップの消費電力は急上昇する。しかし、コアCORE1-4は省電力無効状態でクロックCLK2の伝播による電力を消費していたため、時刻t5で一斉に命令処理を開始しても、それに伴う消費電力の変動量は許容電力差P_dPW以内であり、電源ノイズが許容範囲にとどまり、コア内の回路が不良動作することが抑制される。
【００３７】
命令処理停止状態のコアは、プロセッサに突然割込が発生する場合、一斉に命令処理状態に復帰することがある。そこで、第１の実施の形態では、各コアが命令処理停止状態に入るたびに、命令処理停止状態のコア数が閾値コア数Cthを越えているか判定し、越えている場合、命令処理停止状態のコアの省電力動作を無効化しておく。その結果、突然割込が発生して停止状態の複数のコアが一斉に命令処理状態に復帰しても、電力変動幅を許容範囲P_dPWに抑えることができる。
【００３８】
上記の閾値コア数Cthは、電力変動の許容範囲P_dPWと、コアが命令処理状態から処理停止状態に遷移する場合の電力低下量（省電力量）と、コアが省電力動作を無効化して命令処理状態から処理停止状態に遷移する場合の電力低下量（省電力量）とに応じて、設定することが望ましい。
【００３９】
そして、複数の命令処理停止状態のコアを省電力動作を無効化した場合の消費電力と、それら複数の命令処理停止状態のコアが全て命令処理停止状態から命令処理状態に復帰した時の消費電力との差電力が、許容電力差P_dPW以下になるように、閾値コア数Cthを設定することが望ましい。この差電力は複数のコアによる省電力量に対応する。
【００４０】
上記のように、第１の実施の形態では、コアが次々に命令処理状態から命令処理停止状態に推移する場合、プロセッサの消費電力は最初は急峻に低下するが、命令処理停止状態のコア数が閾値コア数を越えた後は、その低下率は弱まる。そして、命令処理停止状態の複数のコアが一斉に命令処理状態に復帰するときの電力電動が、許容電力差P_dPW以下に抑制される。
【００４１】
［第１の実施の形態での電力制御例２］
図７は、第１の実施の形態におけるプロセッサの電力制御の別の例を示す図である。この例も、プロセッサが６個のコアを有し、閾値コア数Cthが「３」に設定され、監視回路１３内のカウンタ１３１は初期値「０」である。
【００４２】
この例では、時刻t10で５個のコアCORE1-5が短時間で命令処理状態から命令処理停止状態に遷移する。その場合、各コアの内部回路１４の命令制御回路は、命令処理停止信号S1_1を電源制御回路１５を経由して監視回路１３に出力し、所定の短時間後にクロックイネーブル信号CLKENをLレベル（クロック停止状態、省電力動作状態）にする。
【００４３】
一方、監視回路１３は、上記の所定の短時間の間に、５個のコアCORE1-5からそれぞれ命令処理停止信号S1_1を受信した場合、カウント値CNTがCNT=5（＞Cth=3）になり、コア数オーバー信号Over_CthをHレベルにする。各コアCORE1-5では、所定の短時間後に内部回路１４がクロックイネーブル信号CLKENをLレベルにして省電力動作をしようとするが、電源制御回路１５が省電力無効化信号DPSをHレベル（省電力無効化）にするため、コアCORE1-5は省電力無効状態で命令処理停止状態になる。そのため、時刻t10でのコアCORE1-5による電力変動dPWは、許容電力差P_dPW以内になり、電源ノイズは許容値以内になる。
【００４４】
つまり、時刻t10では、閾値コア数Cthを越える複数のコアが所定の短時間で一斉に命令処理停止状態に遷移する場合、複数の命令処理停止状態のコアCORE1-5の省電力動作を無効化した場合のプロセッサの消費電力の低下量（命令処理停止による省電力量であり、電力変動幅dPWと等しい）が、許容電力差P_dPW以下になる。この省電力量である電力変動幅dPWは、６個のコアが命令処理状態の場合のプロセッサの消費電力PW_CORE1-6と、５個のコアCORE1-5が省電力無効状態の場合の電力PW_DPSと命令処理状態のコアCORE6の電力PW_CORE6の合計（PW_CORE6＋PW_DPS）との電力差である。時刻t10では、この電力変動幅dPWが許容電力差P_dPW以下になるように、複数のコアCORE1-5の電力制御回路が、省電力動作の無効化を実行する。
【００４５】
次に、時刻t11でプロセッサに割込が発生し、命令処理停止状態の５個のコアCORE1-5が一斉に命令処理状態に復帰している。しかし、時刻t11より前において、５個のコアCORE1-5は命令処理停止状態ではあるが省電力禁止状態であった。したがって、時刻t11で命令処理状態に復帰するときのプロセッサチップの電力変動dPWは、許容電力差P_dPW以内であり、電源ノイズは許容範囲内にあり、プロセッサの誤動作が抑制される。
【００４６】
すなわち、本実施の形態では、複数の命令処理停止状態のコアCORE1-5が省電力無効状態の場合のプロセッサの消費電力の低下量（命令処理状態復帰時の電力変動dPWと等しい）が、時刻t11での許容電力差P_dPW以下になる。時刻t11の直前では、この電力変動幅dPWが許容電力差P_dPW以下になるように、複数のコアCORE1-5の電力制御回路が、省電力動作の無効化を実行する。
【００４７】
時刻t11での動作は、図６と同様である。
【００４８】
［第１の実施の形態での電力制御例３］
図８は、第１の実施の形態でのプロセッサの電力制御のさらに別の例を示す図である。この例も、プロセッサが６個のコアを有し、閾値コア数Cthが「３」に設定され、監視回路１３内のカウンタ１３１は初期値「０」である。
【００４９】
この例では、時刻t10で、コアCORE1、CORE2が、短時間の間に命令処理実行状態から命令処理停止状態に遷移する。その場合も、各コアCORE1,CORE2の内部回路１４の命令制御回路は、命令処理停止信号S1_1を電源制御回路１５を経由して監視回路１３に出力し、所定の短時間後にクロックイネーブル信号CLKENをLレベル（クロック停止状態、省電力動作状態）にする。
【００５０】
しかし、監視回路１３は、命令処理停止状態のコア数が「２」であり、閾値コア数Cth（＝３）を越えていないので、コア数オーバー信号Over_CthをLレベルのままにする。その結果、両コアCORE1、CORE2の電力制御回路１５は省電力動作禁止信号DPSをLレベルのまま維持し、内部回路１４は省電力動作状態に遷移するを実行する。
【００５１】
但し、短時間で一斉に命令処理停止状態に遷移するコア数が２個であるので、時刻t10での電力変動dPWは、許容電力差P_dPWよりも小さく、電源ノイズは許容範囲内である。
【００５２】
また、時刻t11で、プロセッサに割込が発生し、命令処理停止状態のコアCORE1,CORE2は一斉に命令処理状態に復帰する。しかし、その時の電力変動dPWは、許容電力差P_dPWよりも小さく、電源ノイズは許容範囲内である。
【００５３】
［第１の実施の形態の監視回路と電力制御回路の変形例］
図５の監視回路は、複数のコアに共通に設けられ、閾値コア数Cthを設定する閾値コア数レジスタ１３３と比較器１３２を有し、複数のコアに共通のコア数オーバー信号Over_Cthを出力する。
【００５４】
それに対して、変形例では、図５の監視回路１３はカウンタ１３１を有し、各コアの電力制御回路１５が閾値コア数レジスタ１３３と比較器１３２を個別に有し、個別に閾値コア数を設定する。このような構成の場合、各コアが、命令処理停止状態のコア数に対応して制御される省電力無効状態の内部回路の数を個別に且つ柔軟に制御できる。
【００５５】
図９は、第１の実施の形態の変形例におけるプロセッサの構成図である。変形例では、４つのコアCORE1〜CORE4に閾値コア数Cthが個別に設定される。例えば、消費電力が大きいコアCORE1,CORE2は、より小さい閾値コア数Cth=2に設定し、より多くの内部回路を省電力無効状態に制御（省電力無効化を強く制御）し、一方、消費電力が小さいコアCORE3,CORE4は、より大きい閾値コア数Cth=3に設定して、より少ない内部回路を省電力無効状態に制御（省電力無効化を緩く制御）する。具体的には、後述する図１８に示す構成に対応する。
【００５６】
［第２の実施の形態］
第２の実施の形態では、プロセッサ内の複数のコアは、複数の内部回路を有する。そして、複数の内部回路は、クロックイネーブル信号CLKENによって、個別にまたは一括してクロック停止状態に制御可能である。さらに、各コアの電力制御回路は、命令処理停止状態のコアの省電力動作を無効化する場合、命令処理停止状態のコアの数に応じた数の内部回路を省電力無効状態に制御する。
【００５７】
例えば、電力制御回路は、命令処理停止状態のコア数が第１の数の場合よりも、命令処理停止状態のコア数が第１の数より多い第２の数の場合のほうが、省電力動作を無効化する内部回路の数を多くする。このように制御することで、プロセッサは、命令処理停止状態のコア数が少ない場合は、より少ない数の内部回路の省電力動作を無効化して、各コア毎の省電力量をより多くする。一方で、プロセッサは、命令処理停止状態のコア数が多い場合は、より多い数の内部回路の省電力動作を無効化して、各コア毎の省電力量をより小さくする。これにより、プロセッサは、許容電力差P_dPWの範囲内で最大限に省電力することができる。
【００５８】
図１０は、第２の実施の形態におけるコアの構成を示す図である。コア１１は、内部回路が複数に分割されている。すなわち、コア１１は、内部回路として、命令をフェッチしてデコードする命令制御回路１１０と、分岐履歴を記憶する分岐履歴メモリ１１１と、一次命令キャッシュメモリ１１２と、一次データキャッシュメモリ１１３とを有する。さらに、コア１１は、内部回路として、アドレス生成回路１１４と固定小数点演算器１１５と浮動小数点演算器１１６の３つの演算器と、レジスタファイル１１７とを有する。これらの内部回路は、図４に示したとおり、クロックの供給と停止を行うクロックゲートCKGを有し、クロックイネーブル信号CLKENにより個別にまたは一括してクロックの供給と停止状態に制御される。クロックイネーブル信号CLKENは、例えば命令制御回路１１０が出力する。以下、電力制御回路と、上記の内部回路について簡単に説明する。
【００５９】
電力制御回路１５は、命令制御回路１１０からサスペンド状態やスリープ状態への遷移を通知する命令処理停止信号S1_1と、サスペンド状態やスリープ状態の解除を通知する停止解除信号S1_2を受信し、監視回路１３に出力する。また、電力制御回路１５は、命令制御回路１１０、分岐履歴メモリ１１１、一次命令キャッシュメモリ１１２、一次データキャッシュメモリ１１３、及びレジスタファイル１１７に省電力無効化信号DPS1〜DPS5をそれぞれ出力する。
【００６０】
命令制御回路１１０は、一次命令キャッシュメモリ１１２から読み出した命令列を順次実行する。命令制御回路１１０は、サスペンド命令やスリープ命令を実行すると、命令に応じてサスペンド状態やスリープ状態に遷移して命令処理を停止し、その遷移を通知する命令処理停止信号S1_1を電力制御回路１５に出力する。また、命令制御回路１１０は、サスペンド状態やスリープ状態の解除条件（時間又は外部割込み等）の成立を監視する。命令制御回路１１０は、サスペンド状態やスリープ状態の解除条件が成立すると、サスペンド状態やスリープ状態を解除して命令処理を再開し、その解除を通知する停止解除信号S1_2を電力制御回路１５に出力する。そして、命令制御回路１１０は、サスペンド状態やスリープ状態の命令処理停止状態において、クロックイネーブル信号CLKENにより、一部の内部回路を省電力状態に制御する。
【００６１】
分岐履歴メモリ１１１は、過去に実行された分岐命令の分岐先アドレスや分岐成否等の分岐履歴を記録するメモリである。
【００６２】
一次命令キャッシュメモリ１１２は、実行する命令を格納するメモリである。 一次データキャッシュメモリ２５は、命令実行の際に使用するデータを格納するＲＡＭである。さらに、レジスタファイル１１７は、各種演算処理で使用されるデータを保持するレジスタ群である。
【００６３】
浮動小数点演算器１１６は、浮動小数点演算を行う演算器であり、２つの浮動小数点演算器ＦＬＡ、ＦＬＢを有する。浮動小数点演算器１１６は、レジスタファイル１１７からデータを読み出し、そのデータについて演算を実行し、演算結果をレジスタファイル１１７に書き込む。浮動小数点演算器ＦＬＡ及びＦＬＢは、例えば同等の機能を有するが、浮動小数点演算器ＦＬＢが浮動小数点演算器ＦＬＡで処理できる演算の一部のみを処理できるように構成されてもよい。
【００６４】
固定小数点演算器１１５は、固定小数点演算を行う演算器であり、２つの固定小数点演算器ＥＸＡ、ＥＸＢを有する。固定小数点演算器１１５は、レジスタファイル１１７からデータを読み出し、そのデータについて演算を実行し、演算結果をレジスタファイル１１７に書き込む。固定小数点演算器ＥＸＡ及びＥＸＢは、例えば同等の機能を有するが、固定小数点演算器ＥＸＢが、固定小数点演算器ＥＸＡが処理できる機能の一部のみを処理できるように構成されてもよい。
【００６５】
アドレス生成回路１１４は、ロード命令やストア命令についてロード対象やストア対象のメモリのアドレスを計算する。アドレス生成回路１１４は、２つのアドレス生成回路ＥＡＧＡ、ＥＡＧＢを有する。アドレス生成回路１１４は、レジスタファイル１１７からデータを読み出し、データに基づいてアドレスを生成し、一次データキャッシュメモリ１１３にアクセスを実行する。アドレス生成回路１１４は、ロード命令の場合、一次データキャッシュメモリ１１３から読み出したデータをレジスタファイル１１７に書き込み、ストア命令の場合、レジスタファイル１１７から読み出されたデータを一次データキャッシュメモリ１１３に書き込む。アドレス生成回路ＥＡＧＡ、ＥＡＧＢは同等の機能を有するが、アドレス生成回路ＥＡＧＢがＥＡＧＡが処理できる機能の一部のみを処理できるように構成されてもよい。
【００６６】
前述したとおり、命令制御回路１１０の一部、分岐履歴メモリ１１１、一次命令キャッシュメモリ１１２、一次データキャッシュメモリ１１３、レジスタファイル１１７は、それぞれ動作が必要でない場合と、コアが命令処理停止状態の場合に、クロックイネーブル信号CLKEN＝Lにより省電力状態に推移する。但し、電力制御回路１５が省電力無効化信号DPS1〜DPS5をHレベル（省電力無効状態）を出力している場合は、各回路内のクロックゲートがクロックの供給を実行し、省電力動作が無効化される。
【００６７】
図１１は、図１０のコア内の命令制御回路の構成を示す図である。命令制御回路１１０は、命令バッファ１１８、命令デコーダ１１９、固定小数点演算用リザベーションステーションＲＳＥ、浮動小数点演算用リザベーションステーションＲＳＦ、アドレス生成用リザベーションステーションＲＳＡ、コミットスタックエントリＣＳＥを有する。命令バッファ１１８は、一次命令キャッシュメモリ１１２から読み出した命令を一時的に格納し、命令デコーダ１１９にその命令を供給する。
【００６８】
命令デコーダ１１９は、命令バッファ１１８から供給された命令をデコードし、命令種別に応じて各リザベーションステーションＲＳＥ、ＲＳＦ、ＲＳＡに命令を発行し、全ての命令をコミットスタックエントリＣＳＥに発行する。また、命令デコーダ１１９は、命令に応じて動作不要の回路に対してクロックイネーブル信号CLKENを出力する。
【００６９】
ＲＳＥは、命令デコーダ１１９から固定小数点演算命令を受信し、演算処理に必要なデータが準備できるまで待機した後、固定小数点演算器ＥＸＡ、ＥＸＢの何れかに命令及びデータを出力する。
【００７０】
ＲＳＦは、命令デコーダ１１９から浮動小数点演算命令を受信し、演算処理に必要なデータが準備できるまで待機した後、浮動小数点演算器ＦＬＡ、ＦＬＢの何れかに命令及びデータを出力する。
【００７１】
ＲＳＡは、命令デコーダ１１９からロード命令やストア命令を受け取り、ロードアドレス計算やストアアドレス計算に必要なデータが準備できるまで待機した後、アドレス生成回路ＥＡＧＡ、ＥＡＧＢの何れかに命令及びデータを出力する。
【００７２】
コミットスタックエントリＣＳＥは、命令デコーダ１１９が発行した命令順に、各演算器の動作を完了させ、完了に必要な制御信号を出力する。例えば、ＣＳＥは、サスペンス命令やスリープ命令が完了すると、命令処理停止信号S1_1を電力制御回路１５に出力する。同様に、ＣＳＥは、割込が発生すると、命令処理停止解除信号S1_2を電力制御回路１５に出力する。
【００７３】
図１２は、第２の実施の形態における監視回路１３の構成を示す図である。図１２の監視回路１３は、図５に示した第１の実施の形態の監視回路と異なり、複数の閾値コア数レジスタ１３３を有し、それらに対応して、命令処理停止状態のコア数をカウントするカウンタ１３１のカウント値CNTと複数の閾値コア数Cth1-4とをそれぞれ比較する複数の比較器１３２を有することである。図１２の例では、４つの閾値コア数レジスタ１３３と４つの比較器１３２とを有する。
【００７４】
４つの閾値コア数レジスタ１３３には、閾値コア数Cthとして、０からカウンタの最大値までの任意の値を設定可能である。そして、望ましい例では、４つの閾値コア数レジスタ１３３には、小さい値から大きい値に順番に異なる４つの閾値コア数Cth_1〜Cth_4が設定される。そして、カウンタ１３１のカウント値CNTが増大するに応じて、４つの比較器１３２は、コア数オーバー信号Over_Cth1〜Over_Cth4（Hレベル）をそれぞれ、複数のコア１１内の電力制御回路１５に出力する。閾値コア数Cth_1〜Cth_4は、ファームウエアを格納するメモリ２から、所定のタイミング、例えばプロセッサの起動時に閾値コア数レジスタ１３３に設定される。
【００７５】
図１３は、第２の実施の形態における各コアの電力制御回路１５の構成を示す図である。電力制御回路１５は、コア内の命令制御回路１１０からの命令処理停止信号S1_1と停止解除信号S1_2を、監視回路１３に転送する。さらに、電力制御回路１５は、比較器１３２からのコア数オーバー信号Over_Cth1〜Over_Cth4に基づいて、省電力無効化信号DPS1〜DPS5を生成するDPS信号生成回路１５１を有する。
【００７６】
DPS信号生成回路１５１は、例えば、コア数オーバー信号Over_Cth1〜Over_Cth4をそのまま省電力無効化信号DPS1〜DPS4として出力し、さらに、コア数オーバー信号Over_Cth5をそのまま省電力無効化信号DPS5として出力する。
【００７７】
例えば、閾値コア数Cth_1〜Cth_4をそれぞれ２，３，４，５に設定したと仮定する。この場合、監視回路１３の４つの比較器１３２は、命令処理停止状態のコア数が３，４，５，６になると、それぞれ、省電力無効化信号DPS1をHレベル、DPS1,DPS2をHレベル、DPS1,DPS2,DPS3をHレベル、DPS1,DPS2,DPS3,DPS4,DPS5をHレベルにする。つまり、各コアの電力制御回路１５は、命令処理停止状態のコアの省電力動作を無効化する場合、命令処理停止状態のコア数に応じた数の内部回路を省電力無効状態に制御する。上記の例では、命令処理停止状態のコア数が多いほど、多い数の内部回路を省電力無効状態に制御する。
【００７８】
また、別の例では、閾値コア数Cth_1〜Cth_3を「３」に設定し、閾値コア数Cth_4を「４」に設定したと仮定する。この場合、監視回路１３の４つの比較器１３２は、命令処理停止状態のコア数が４になると、コア数オーバー信号Over_Cth1〜Over_Cth3をHレベルにし、省電力無効化信号DPS1〜DPS3のHレベル（無効化状態）により３つの内部回路が省電力無効状態になる。そして、命令処理停止状態のコア数が５になると、コア数オーバー信号Over_Cth1〜Over_Cth4をすべてHレベルにし、省電力無効化信号DPS1〜DPS5のHレベル（無効化状態）により５つの内部回路が省電力無効状態になる。この場合も、各コアの電力制御回路１５は、命令処理停止状態のコア数が多いほど、多い数の内部回路を省電力無効状態に制御する。
【００７９】
DPS信号生成回路１５１は、任意の論理でコア数オーバー信号Over_Cth1〜Over_Cth4から省電力無効化信号DPS1〜DPS5を生成してもよい。例えば、図１３の破線で示したAND回路AND2のように、省電力無効化信号DPS5を、コア数オーバー信号Over_Cth1とOver_Cth2の反転論理値の論理積で生成してもよい。そのようなAND回路AND2は、例えば閾値コア数Cth_1＝２、Cth_2＝３に設定されている場合、命令処理停止状態のコア数が３の場合のみ省電力無効化信号DPS5がHレベル（無効化状態）になる。
【００８０】
いずれの場合も、複数のコアが一斉に命令処理停止状態から命令処理状態に復帰するときの電力変動が許容電力差以下になり、且つ命令処理停止状態で最大の省電力量が得られるように制御することが望ましい。つまり、命令処理停止状態では、停止状態のコア数に係わらず、プロセッサの消費電力が、許容電力差を確保できる電力レベルにできるだけ近づくように制御することが望ましい。
【００８１】
図１４は、第２の実施の形態における監視回路と各コアの電力制御回路の動作を示すフローチャート図である。例えば、コアCORE_Nがサスペンド命令またはスリープ命令を実行して命令処理停止状態に移行したとする。その場合、コアCORE_Nの電力制御回路１５が、サスペンド命令又はスリープ命令の実行により命令処理停止状態に推移することを、信号S1_1により監視回路１３に通知する（S10）。これに応答して、監視回路１３のカウンタ１３１がカウント値CNTを＋１し、４つの比較器１３２がカウント値CNTと閾値コア数Cth1〜Cth4とそれぞれ比較し、命令処理停止状態のコア数を示すカウント値CNTが閾値コア数Cth1〜Cth4よりそれぞれ大きい場合、対応するコア数オーバー信号Over_Cth1〜Over_Cth4をHレベルにする（S11）。
【００８２】
コアCORE_Nを含む全てのコアの電力制御回路１５は、コア数オーバー信号Over_Cth1〜Over_Cth4に基づいて、いくつかの省電力無効化信号DPS1〜DPS5をHレベル（無効化状態）にする（S12）。そして、コアCORE_Nは、サスペンド状態またはスリープ状態に移行する（S13）。このとき、コアCORE_Nの内部回路は全てクロックイネーブル信号CLKENのHレベル（省電力状態）により省電力動作状態にされるが、いくつかの内部回路は省電力無効化信号DPSにより省電力動作が無効化され、電力を消費する。
【００８３】
その後、例えば割込が発生して、コアCORE_Nがサスペンドまたはスリープ状態から解除されると仮定する。これに応答してコアCORE_Nの電力制御回路１５が命令処理停止解除信号S1_2を監視回路１３に通知する（S14）。監視回路１３のカウンタはカウント値CNTを−１し、複数の比較器がカウント値CNTと閾値コア数Cth1〜Cth4とをそれぞれ比較し、いくつかのコア数オーバー信号Over_Cth1〜Over_Cth4をHレベルにする（S15）。そして、コアCORE_Nを含む全てのコアの電力制御回路１５は、コア数オーバー信号Over_Cth1〜Over_Cth4に基づいて、いくつかの省電力無効化信号DPS1〜DPS5をHレベル（無効化状態）にする（S16）。
【００８４】
やがて、プロセッサに割込が発生して、サスペンド状態またはスリープ状態の全てのコアがサスペンド状態またはスリープ状態から解除され、命令処理状態に復帰する（S17）。この時のプロセッサチップの電力変動は、許容電力差P_dPW以内になり、電源ノイズによる誤動作が抑制される。
【００８５】
［第２の実施の形態での電力制御例１］
図１５は、第２の実施の形態でのプロセッサの電力制御の例を示す図である。この例では、例えば、閾値コア数Cth_1が「２」，Cth_2が「３」、Cth_3,4が「４」に設定されているとする。
【００８６】
まず、時刻ｔ１，ｔ２では、コアCORE1、DORE2がそれぞれ命令処理停止状態に推移する。この場合、監視回路１３のカウンタ１３１のカウント値CNTが「１」，「２」であり、いずれの閾値コア数より小さいので、比較器１３２は全てのコア数オーバー信号をLレベルに維持する。そのため、コアCORE1、CORE2はそれぞれ省電力動作状態になり、プロセッサの消費電力は、コアCORE1,CORE2それぞれの省電力量に対応する電力変動で低下する。
【００８７】
次に、時刻ｔ３では、さらにコアCORE3が命令処理停止状態に推移する。この場合、監視回路１３のカウンタ１３１のカウント値CNTが「３」であり、閾値コア数Cth_1=2を越えるため、比較器１３２はコア数オーバー信号Over_Cth1をHレベルにする。そのため、コアCORE1、CORE2、CORE3では、それぞれ省電力無効化信号DPS1がHレベル（無効化状態）になり、１つの内部回路が省電力動作を無効され電力を消費する状態で命令処理停止状態に推移する。その結果、プロセッサの電力量の変化量dPW3は、コアCORE1,CORE2が命令処理停止状態に推移した時刻ｔ１，ｔ２での変化量よりも小さくなり、プロセッサの消費電力は許容電力差P_dPWに対応する許容電力レベルP_PWより高いレベルに維持される。
【００８８】
さらに、時刻ｔ４では、さらにコアCORE4が命令処理停止状態に推移する。この場合、監視回路１３のカウンタ１３１のカウント値CNTが「４」であり、閾値コア数Cth_1=2、Cth_2=3を越えるため、比較器１３２はコア数オーバー信号Over_Cth1、Over_Cth2をHレベルにする。そのため、コアCORE1、CORE2、CORE3、CORE4では、それぞれ省電力無効化信号DPS1、DPS2がHレベル（無効化状態）になり、２つの内部回路が省電力動作を無効化され電力を消費する状態で命令処理停止状態に推移する。その結果、プロセッサの電力量の変化量dPW4は、時刻ｔ１，ｔ２での変化量よりも小さく、また時刻ｔ３の変化量dPW3よりも小さく、プロセッサの消費電力は、許容電力差P_dPWに対応する許容電力レベルP_PWより高いレベルに維持される。
【００８９】
このように、第２の実施の形態では、命令処理停止状態のコア数が増えるほど、それらのコア内の省電力無効状態の内部回路の数が増えるので、プロセッサの消費電力は、許容電力差P_dPWに対応する許容電力レベルP_PWより高いが近接するレベルに維持される。
【００９０】
そして、時刻ｔ５で、プロセッサに割込が発生し、命令処理停止状態の全てのコアCORE1〜CORE4が一斉に命令処理状態に推移する。このときのプロセッサの電力変動量が許容電力差P_dPW以内に抑えられ、電源ノイズが抑制される。
【００９１】
以上のように第２の実施の形態によれば、次々にコアが命令処理停止状態に遷移した場合、プロセッサの電力の低下は、最初は急峻に低下するが、停止状態のコア数が閾値を越えた後は、低下率が徐々に小さくなる。そのため、プロセッサの消費電力は、許容電力差P_dPWに対応する電力レベルP_PWに漸近する。
【００９２】
［第２の実施の形態での電力制御例２］
図１６は、第２の実施の形態でのプロセッサの電力制御の別の例を示す図である。この例では、例えば、閾値コア数がCth_1＝３，Cth_2＝３、Cth_3＝３、Cth_4＝４に設定されている。
【００９３】
そして、時刻ｔ１０で、４つのコアCORE1〜CORE4が所定の短時間で命令処理停止状態に推移したと仮定する。この場合、監視回路１３のカウント値CNTはCNT＝４であり、閾値コア数Cth_1〜CTh_3＝３を越えるので、図１３のDPS信号生成回路がDPS1〜DPS3をHレベルにして、４つのコアCORE1〜CORE4内の３つの内部回路が省電力無効状態になる。その結果、４つのコアCORE1〜CORE4の消費電力PW_CORE1-4（PW_DSP1-4）が省電力状態より大きくなり、プロセッサの消費電力レベル（PW_CORE1-4（PW_DSP1-4）＋PW_CORE5＋PW_CORE6）は、許容電力差P_dPWに対応する許容電力レベルP_PWより高いレベルに維持される。
【００９４】
また、時刻ｔ１０で、５つのコアCORE1〜CORE5が短時間で命令処理停止状態に推移したと仮定する。この場合、監視回路１３のカウント値CNTはCNT＝５であるので、閾値コア数Cth_1〜CTh_3＝３とCth_4＝４を越えるので、図１３のDPS信号生成回路がDPS1〜DPS4をHレベルにして、５つのコアCORE1〜CORE5内の４つの内部回路が省電力無効状態になる。その結果、５つのコアCORE1〜CORE5の消費電力PW_CORE1-5（PW_DSP1-5）が省電力状態より大きくなり、プロセッサの消費電力レベル（PW_CORE1-5（PW_DSP1-5）＋PW_CORE6）も、許容電力差P_dPWに対応する許容電力レベルP_PWより高いレベルに維持される。
【００９５】
したがって、時刻ｔ１１で全てのコアが命令処理状態に復帰したときの電力変動は、許容電力差P_dPW以内に抑制される。
【００９６】
上記の通り、第２の実施の形態によれば、命令処理停止状態のコア数が増加すれば、それらのコア内の省電力無効状態の内部回路の数も増加する。したがって、プロセッサは、消費電力を、可能な限り、許容電力差P_dPWに対応する許容電力レベルP_PWに漸近するように制御することができ、全てのコアが命令処理状態に復帰した時の電力変動を許容電力差P_dPW以内に抑制する。
【００９７】
［第３の実施の形態］
第２の実施の形態におけるプロセッサは、図１２に示されるとおり、複数のコアに共通に設けられた監視回路１３が閾値コア数レジスタ１３３と比較器１３２とを有し、全コアに対して共通の閾値コア数が閾値コア数レジスタ１３３に設定され、共通の比較器が比較結果であるコア数オーバー信号Over_Cthを全コアに出力する。
【００９８】
一方、第３の実施の形態におけるプロセッサでは、監視回路がコア数カウンタを有し、各コアの電力制御回路が、複数の閾値コア数レジスタと、コア数カウンタのカウント値と閾値コア数とを比較しカウント値が閾値コア数を越えるとコア数オーバー信号を出力する複数の比較器とを有する。そして、各コアの電力制御回路が、コア数オーバー信号に応じて命令処理停止状態のコアの省電力動作を無効化する。これにより、各コアは個別に閾値コア数を設定でき、各コアの内部回路の構成に応じた最適の省電力無効化の制御を行う。
【００９９】
図１７は、第３の実施の形態におけるプロセッサの構成を示す図である。図１０と異なり、図１７では、消費電力が大きいコアCORE1,CORE2は、閾値コア数をCth1,2=2、 Cth3,4=3に設定し、命令処理停止状態のコア数が少ない段階でも省電力無効化の制御を行う。一方、消費電力が小さいコアCORE3,CORE4は、閾値コア数をCth1,2=3, Cth3,4=4に設定し、命令処理停止状態のコア数が多くなってから省電力無効化の制御を行う。
【０１００】
図１８は、第３の実施の形態における監視回路と電力制御回路の構成図である。図１８では、コア数がＮである。そして、コアCORE_Nの電力制御回路１５のみ構成が示されている。図１８の監視回路１３は、命令停止状態のコア数をカウントするカウンタ１３１を有する。一方、各コアの電力制御回路１５は、複数の閾値コア数レジスタ１５２と、コア数カウンタのカウント値CNTと閾値コア数Cth1-4とを比較しカウント値が閾値コア数を越えるとコア数オーバー信号Over_Cth1-4を出力する複数の比較器１５３を有する。そして、DPS信号生成回路１５１が、コア数オーバー信号Over_Cth1-4に応じて命令処理停止状態のコアの省電力動作を無効化する省電力無効化信号DPS1-5を生成する。比較器１５３と、DPS信号生成回路１５１は、第２の実施の形態と同じである。そして、DPS信号瀬衛生回路１５１は、例えば図１３と同様の構成を有する。
【０１０１】
第３の実施の形態のプロセッサは、各コアにその構成に最適な閾値コア数を設定できるので、より柔軟な省電力無効化の制御を行う。
【０１０２】
［第４の実施の形態］
第４の実施の形態では、プロセッサが、コアが命令処理状態から命令処理停止状態へ移行してから所定時間経過後に閾値コア数を増大し、命令処理状態に復帰するときから所定時間前に閾値コア数を減少するように制御する。そのために、監視回路がタイマを有し、上記の所定時間を監視する。
【０１０３】
図１９は、第４の実施の形態における監視回路の構成を示す図である。図１９の監視回路の図１２の監視回路と異なる構成は、比較器１３３が生成するコア数オーバー信号Over_Cht1-4に応答して所定時間T1経過後に閾値コア数レジスタ１３２の設定を変更するトリガ信号を出力するタイマ１３４である。また、タイマ１３４は、コアが命令処理状態に復帰するときから所定時間T2前のタイミングでトリガ信号を閾値コア数レジスタ１３２に出力する。
【０１０４】
図２０は、第４の実施の形態でのコアが命令処理状態から命令処理停止状態に移行する時の電力制御を示す図である。この例では、４つの閾値コア数Cth1-4が全て「３」に設定され、命令処理停止状態に移行してから所定時間T1経過後に、閾値コア数Cth1-4が全て「４」に設定変更される。また、時刻ｔ１で短時間の間に４つのコアCORE1-4が命令処理停止状態に移行する。
【０１０５】
時刻ｔ１で、４つのコアCORE1-4がほぼ同時に命令処理停止状態に移行する。それにより、監視回路１３のカウンタ１３１はカウント値CNT＝４を出力し、比較器１３３がコア数オーバー信号Over_Cth1-4を全てHレベルにする。そして、命令処理停止状態のコアCORE1-4の電力制御回路１５は、省電力無効化信号DPS1-4を全てHレベルにし、４つの内部回路を省電力無効状態にする。その後、コアCORE1-4は命令停止状態に移行する。その結果、プロセッサ内の６つのコアのうち、コアCORE1-4は省電力無効状態となり、それらの消費電力PW_CORE1-4の電力低下は限定的である。同時に、時刻ｔ１からタイマ１３４が所定時間T1の経過を監視する。
【０１０６】
そして、時刻ｔ１から所定時間T1後の時刻ｔ２で、タイマ１３４がトリガ信号を出力し、それに応答して閾値コア数レジスタ１３２が、閾値コア数Cth1-4を「３」から「４」に変更する。それに応答して、比較器１３３は、コア数オーバー信号Over_Cth1-4を全てLレベルにする。そして、コアCORE1-4の電力制御回路１５は、省電力無効化信号DPS1-4を全てLレベルにし、４つの内部回路が省電力状態になる。その結果、プロセッサ内の６つのコアのうち、コアCORE1-4は省電力状態になり、プロセッサの消費電力は更に低下し、命令処理状態のコアCORE5,6の消費電力になる。これにより、４つのコアCORE1-4がほぼ同時に命令停止状態に移行する際のプロセッサの消費電力の減少を許容電力差以内に抑制する。
【０１０７】
図２１は、第４の実施の形態でのコアが命令処理停止状態から命令処理状態に復帰する時の電力制御を示す図である。この例では、命令処理停止状態において、４つの閾値コア数Cth1-4が全て「４」に設定され、命令処理状態に復帰する時刻ｔ４から所定時間T2前の時刻ｔ３に、閾値コア数Cth1-4が全て「３」に変更される。そして、図２０の命令処理停止状態から命令処理状態に復帰する時の電力制御である。
【０１０８】
まず、タイマ１３４は、図２０の時刻ｔ１から命令処理停止期間より所定時間T2短い時間の経過を監視する。つまり、４つのコアCORE1-4が命令処理状態に復帰する時刻ｔ４より所定時間T2前の時刻ｔ３になるのをタイマ１３４が監視する。例えば、ポーズ命令の場合、ユーザプログラムがポーズ状態の時間を指定するので、上記の命令処理停止期間が予め判明している。
【０１０９】
時刻ｔ３より前は、閾値コア数Cth1-4が「４」に設定されているので、監視回路１３の比較器１３３はコア数オーバー信号Over_Cht1-4を全てLレベルにしている。したがって、時刻ｔ３より前は、命令処理停止状態のコアCORE1-4は省電力状態である。
【０１１０】
次に、時刻ｔ３になると、タイマ１３４のトリガ信号（図示せず）により閾値コア数レジスタ１３２が４つの閾値Cth1-4を「３」に設定変更する。これに応答して、監視回路１３の比較器１３３は、コア数オーバー信号Over_Cth1-4を全てHレベルにする。そして、命令処理停止状態のコアCORE1-4の電力制御回路１５は、省電力無効化信号DPS1-4を全てHレベルにし、４つの内部回路を省電力無効状態にする。その結果、プロセッサの消費電力は、時刻ｔ３で省電力無効状態の４つのコアCORE1-4の電力PW_DPS（＝PW_CORE1-4）だけ上昇する。
【０１１１】
さらに、時刻ｔ３から所定時間T2経過後の時刻ｔ４で、４つのコアCORE1-4が停止解除信号S1_2を監視回路１３に出力し、カウンタ１３１がカウント値CNTを「０」にする。それにより、監視回路１３の比較器１３３は、コア数オーバー信号Over_Cth1-4をLレベルにする。しかし、４つのコアCORE1-4は、命令処理状態に遷移するので、各内部回路のクロックイネーブル信号CLKENがHレベル（クロックイネーブル状態）になり、通常動作での電力消費状態になる。
【０１１２】
そして、時刻ｔ３でのプロセッサの消費電力の変動幅と、時刻ｔ４でのプロセッサの消費電力の変動幅はそれぞれ許容電力差以下であり、電源ノイズが許容値以下に抑えられる。
【０１１３】
以上の通り、第４の実施の形態によれば、プロセッサは、コアが命令処理停止状態に遷移する場合は、閾値コア数Cthを増加させることで、消費電力を段階的に減少させ、コアが命令処理状態に復帰する場合は、閾値コア数Cthを減少させることで、消費電力を段階的に増加させる。このように、プロセッサは、閾値コア数の設定を制御することで、プロセッサ全体の消費電力の変動幅を許容電力差以下に抑制し、電源ノイズを抑える。
【０１１４】
［第５の実施の形態］
第２の実施の形態は、プロセッサ全体の消費電力の変動幅を許容電力差以下に抑制するために、プロセッサ内の命令処理停止状態に遷移するコア数を監視し、そのコア数が閾値コア数を越えると、命令処理停止状態のコア内の内部回路を、命令処理停止状態のコア数に応じた数、省電力無効状態に制御する。
【０１１５】
それに対して、第５の実施の形態は、第２の実施の形態の構成に加えて、コアが命令処理停止状態に遷移する場合の各コアの消費電力変化幅を段階的に制御する構成を有する。この制御は、例えば前述の特許文献１にも記載されている。そのために、コアの電源制御回路は、命令処理停止状態に推移するコア内の複数の内部回路を、最初は全て省電力無効状態に制御し、徐々に省電力状態に遷移させる。
【０１１６】
図２２は、第５の実施の形態における電力制御回路１５の構成を示す図である。図１３と同様に、電力制御回路１５は、内部回路の命令制御回路１１０からの命令処理停止信号S1_1を監視回路１３のカウンタ１３１に転送する。さらに、電力制御回路１５は、図１３と異なり、命令処理停止信号S1_1がHに変化してから時間を計測するタイマ１５２と、内部回路を順番に省電力状態に遷移する時間である閾値時間Tth1-4を設定する４つの閾値時間レジスタ１５３と、タイマ１５２の時間と４つの閾値時間Tth1-4をそれぞれ比較する４つの比較器１５４とを有する。４つの比較器１５４は、タイマの時間が閾値時間Tth1-4を越えると時間オーバー信号Over_Tth1-4を出力する。そして、DPS信号生成回路１５１は、コア数オーバー信号Over_Cth1-4と、時間オーバー信号Over_Tth1-4に基づいて、省電力無効化信号DPS1-5を生成する。
【０１１７】
図２３は、第５の実施の形態におけるDPS信号生成回路の構成例を示す図である。DPS信号生成回路１５１は、コア数オーバー信号Over_Cth1と時間オーバー信号Over_Tth1の反転信号とを入力し、省電力無効化信号DPS1を出力する論理和回路OR11を有する。同様に、論理和回路OR12、OR13、OR14は、コア数オーバー信号Over_Cth2-4と時間オーバー信号Over_Tth2-4の反転信号をそれぞれ入力し、省電力無効化信号DPS2-4をそれぞれ出力する論理和回路OR12-14を有する。図２３の例では、省電力無効化信号DPS5は、論理和回路OR11が生成する。但し、省電力無効化信号DPS5は、他の論理和回路が生成するようにしてもよい。
【０１１８】
図２４は、図２２，２３の電力制御回路１５とDPS信号生成回路１５１の動作を示すタイミングチャート図である。図２２の４つの閾値時間Tth1-4は、例えば図２４中の時間ｔ１１＞ｔ１２＞ｔ１３＞ｔ１４に設定されている。また、監視回路１３から供給されるコア数オーバー信号Over_Cth1-4は、コア数オーバー信号Over_Cth1, Over_Cth2がHレベルで他の信号Over_Cth3, Over_Cth4はLレベルとする。この場合、DPS信号生成回路２３は、省電力無効化信号DPS1, DPS2をHレベル（省電力無効状態）に維持し、他の省電力無効化信号DPS3, DPS4を、最初は全てHレベルにし、タイマ１５２が時刻ｔ１０から時間ｔ１１〜ｔ１４の経過を計測すると、順番にLレベルに変更する。これにより、各コアは、命令信号停止状態に遷移する場合、省電力無効化信号DPS1,DPS2＝Hレベルにより省電力無効状態に制御される内部回路を除いて、他の内部回路は、省電力無効状態から省電力状態に順番に推移し、コアの消費電力は徐々に低下する。
【０１１９】
図２４において、時刻ｔ１０では、コア数オーバー信号Over_Cth1-4はH, H, L, Lレベル、時間オーバー信号Over_Tth1-4は全てLレベルである。時刻ｔ１１にて、タイマ１５２が時間ｔ１１を出力し、比較器１５４が時間オーバー信号Over_Tth1をHレベルに変更する。しかし、コア数オーバー信号Over_Cth1がHレベルであるため、論理和回路OR11は、省電力無効化信号DPS1のHレベル（省電力無効状態）を維持する。そのため、コアの消費電力PW_COREは時刻ｔ１１で低下しない。
【０１２０】
次に、時刻ｔ１２にて、タイマ１５２が時間t12を出力し、比較器１５４が時間オーバー信号Over_Tth2をHレベルに変更する。しかし、コア数オーバー信号Over_Cth2がHレベルであるため、論理和回路OR12は、省電力無効化信号DPS2のHレベルに維持する。そのため、コアの消費電力PW_COREは時刻ｔ１２でも低下しない。
【０１２１】
次に、時刻ｔ１３にて、タイマ１５２が時間ｔ１３を出力し、比較器１５４が時間オーバー信号Over_Tth3をHレベルに変更する。そして、コア数オーバー信号Over_Cth3がLレベルであるため、論理和回路OR13は、省電力無効化信号DPS3をLレベルに変更する。そのため、コアの消費電力PW_COREは時刻ｔ１３で信号DPS3に対応する内部回路の省電力分PW_DPSだけ低下する。
【０１２２】
時刻ｔ１４も同様にして、コアの消費電力PW_COREは時刻ｔ１４で信号DPS4に対応する内部回路の省電力分PW_DPSだけ低下する。つまり、コアの消費電力は、時刻ｔ１３とｔ１４で２段階で低下する。
【０１２３】
但し、命令処理停止状態のコア数が閾値コア数を越えていない場合は、コア数オーバー信号Over_Cth1-4が全てLレベルであるので、命令処理停止状態に遷移するコアの消費電力は４段階で低下する。
【０１２４】
図２５は、第５の実施の形態におけるプロセッサ全体の消費電力の変動を示す図である。図２５は、図１５のプロセッサ全体の消費電力の低下に、図２４の各コアの消費電力の低下が適用されている。図２５では、閾値コア数Cth1〜Cth2は「３」にCth3〜Cth4は「４」に設定されていると仮定する。そのため、時刻ｔ１，ｔ２，ｔ３では、各コアの消費電力は４段階で低下する。しかし、時刻ｔ４で命令信号停止状態のコア数が４になったときにコア数オーバー信号Over_Cth1,2がHレベルになり、コアの消費電力は２段階で低下する。
【０１２５】
図２５において、時刻ｔ１でコアCORE1が命令停止状態になり、コアCORE1の消費電力は４段階で低下する。同様に、時刻ｔ２、ｔ３でコアCORE2, CORE3が順番に命令停止状態になり、コアCORE2, CORE3の消費電力は４段階で低下する。
【０１２６】
次に、時刻ｔ４でコアCORE4が命令停止状態になる。そのため、監視回路１３のカウンタのカウント値CNTは「４」になり、閾値コア数Cth1〜Cth2の「３」を越えて、比較器はコア数オーバー信号Over_Cth1、Over_Cth2をHレベルにする。そして、図２４に示したとおり、新たに命令停止状態に遷移するコアCORE4は２段階で消費電力が低下する。同時に、既に命令停止状態に遷移しているコアCORE1-3も省電力無効化信号DPS1,DPS2がHレベルになるため、そのコアCORE1-3の消費電力は増大する。その結果、図２５では、命令処理停止状態のコアCORE1-4は２つの内部回路が省電力無効状態で残りの内部回路が省電力状態となり、プロセッサ全体の消費電力は、許容電力P_PW以上に制御される。
【０１２７】
図２６は、第５の実施の形態における電力制御回路の構成例を示す図である。図２２の電力制御回路１５は、命令処理停止信号S1_1に対応する命令処理停止状態に遷移するときの制御回路を示す。それに対して、図２６の電力制御回路１５は、停止解除信号S1_2に対応する命令処理停止状態を解除するときの制御回路を示す。
【０１２８】
図２６において、電力制御回路１５は、停止解除信号S1_2を監視回路１３に転送する。さらに、電力制御回路１５は、停止解除信号S1_2がHに変化してから、時間を計測するタイマ１５５と、内部回路を順番にクロックイネーブル状態に遷移する時間、第２の閾値時間TEth1-3を設定する３つの閾値時間レジスタ１５６と、タイマ１５５の時間と４つの閾値時間TEth1-3をそれぞれ比較する３つの比較器１５７とを有する。第２の閾値時間TEth1-3は、それぞれt21＜t22＜t23に設定されている。
【０１２９】
図２７は、図２６の電力制御回路の動作を示すタイミングチャート図である。時刻ｔ２０で、停止状態のコアが命令処理状態に復帰する。この時、３つの比較器１５７は、タイマ１５５の時間が第２の閾値時間TEth1（＝t21、t22、t23）をそれぞれ越えると、図１１の演算器１１４の一方の演算器EAGAのみの使用に制限する制御信号EAGA_onlyと、演算器１１５の一方の演算器EXAのみをクロックイネーブル状態に制御する信号EXA_onlyと、演算器１１６の一方の演算器FLAのみをクロックイネーブル状態に制御する信号FLA_onlyとを、順番にHレベル（一方のみクロックイネーブル状態に制御）からLレベル（両方をクロックイネーブル状態に制御）に変化させる。
【０１３０】
したがって、時刻ｔ２０では、信号EAGA_onlyがHレベルであるので、演算器EAGA,EAGBのうちEAGAのみがクロックイネーブル状態（CLKEN_EAGA=H）、EAGBはクロックディセーブル状態（CLKEN_EAGB=L）に制御され、演算器EAGAのみがクロック供給状態になる。同様に、信号EXA_onlyがHレベルであるので、演算器EXA,EXBのうちEXAのみがクロックイネーブル状態（CLKEN_EXA=H）、EXBはクロックディセーブル状態（CLKEN_EXB=L）に制御され、演算器EXAのみがクロック供給状態になる。さらに、信号FLA_onlyがHレベルであるので、演算器FLA, FLBのうちFLAのみがクロックイネーブル状態（CLKEN_FLA=H）、FLBはクロックディセーブル状態（CLKEN_FLB=L）に制御され、演算器FLAのみがクロック供給状態になる。その結果、時刻ｔ２０では、コアの消費電力PW_COREは、演算器EAGA,EXA,FLAの消費電力分上昇する。
【０１３１】
次に、時刻ｔ２１では、１つ目の比較器１５７が、信号EAGA_onlyをHレベルからLレベルに変更する。それに伴い、演算器EAGBが新たにクロックイネーブル状態（CLKEN＿EAGB=H）に制御され、時刻ｔ２１では、コアの消費電力PW_COREは、演算器EAGBの消費電力分上昇する。
【０１３２】
次に、時刻ｔ２２では、２つ目の比較器１５７が、信号EXA_onlyをHレベルからLレベルに変更する。それに伴い、演算器EXBが新たにクロックイネーブル状態（CLKEN＿EXB=H）に制御され、時刻ｔ２２では、コアの消費電力PW_COREは、演算器EXBの消費電力分上昇する。
【０１３３】
最後に、時刻ｔ２３では、３つ目の比較器１５７が、信号FLA_onlyをHレベルからLレベルに変更する。それに伴い、演算器FLBが新たにクロックイネーブル状態（CLKEN＿FLB=H）に制御され、時刻ｔ２３では、コアの消費電力PW_COREは、演算器FLBの消費電力分上昇する。
【０１３４】
図２７の制御によれば、１つのコアが命令処理状態に復帰するときに、その１つのコアの消費電力が３段階で徐々に上昇する。また、複数のコアが一斉に命令処理状態に復帰するときも、複数のコアの消費電力が４段階で徐々に上昇する。
【０１３５】
図２５にもどり、時刻ｔ５では４つのコアCORE1-4が同時に命令処理状態に復帰している。しかし、各コアの３つの演算器が図２７で説明したように最初は一方の演算器のみがクロックイネーブル状態になり、その後は、順番に他方の演算器がクロックイネーブル状態になる。したがって、図２５に示されるとおり、プロセッサの消費電力は、時刻ｔ５から４段階で元の電力レベルに戻っている。
【０１３６】
以上説明したとおり、本実施の形態におけるプロセッサは、複数のコアが同時にまたは短時間で命令処理停止状態から命令処理状態に復帰した場合、全体の電力変動幅を許容電力差P_dPW以内に抑制し、電源ノイズを許容値以内に抑制する。同様に、プロセッサは、複数のコアが同時にまたは短時間で命令処理状態から命令処理停止状態に遷移した場合、全体の電力変動幅を許容電力差P_dPW以内に抑制し、電源ノイズを許容値以内に抑制する。
【０１３７】
以上の実施の形態をまとめると，次の付記のとおりである。
【０１３８】
（付記１）
命令を処理する命令処理状態ではクロックを供給されて前記命令を処理し、命令処理を停止する命令処理停止状態では前記クロックの供給が停止されて省電力動作状態に遷移する内部回路と、前記省電力動作を無効化する電力制御回路とをそれぞれ有する複数の演算処理部と、
前記複数の演算処理部の前記命令処理停止状態を監視し、前記命令処理停止状態の演算処理部の数をカウントする監視回路とを有し、
前記複数の演算処理部のそれぞれの電力制御回路は、前記命令処理停止状態の演算処理部の数が閾値を越えた場合、前記命令処理停止状態の演算処理部の前記省電力動作を無効化する、演算処理装置。
【０１３９】
（付記２）
前記演算処理部は、前記クロックの供給と供給停止を制御するクロックゲートを有し、
前記内部回路は、前記演算処理部が前記命令処理状態では前記クロックゲートをクロック供給状態に制御し、前記演算処理部が前記命令処理停止状態では前記クロックゲートをクロック供給停止状態に制御する、付記１に記載の演算処理装置。
【０１４０】
（付記３）
前記複数の演算処理部は、前記内部回路を複数有し、
前記複数の演算処理部のそれぞれの電力制御回路は、前記命令処理停止状態の演算処理部の省電力動作を無効化する場合、前記命令処理停止状態の演算処理部の数に応じた数の第１の内部回路の省電力動作を無効化する、付記１に記載の演算処理装置。
【０１４１】
（付記４）
前記監視回路は、前記命令処理停止状態の演算処理部の数が複数の異なる閾値を越えたか否かをそれぞれ示す複数の制御情報を生成し、
前記電力制御回路は、前記複数の制御情報に応じて、前記命令処理停止状態の演算処理部内の前記複数の内部回路それぞれの前記省電力動作を無効化する、付記３に記載の演算処理装置。
【０１４２】
（付記５）
前記複数の演算処理部のそれぞれの電力制御回路は、前記省電力動作の無効化を、前記複数の命令処理停止状態の演算処理部の省電力動作を無効にした場合の省電力量の合計が、前記複数の命令処理停止状態の演算処理部が全て前記命令処理停止状態から前記命令処理状態に復帰する時の第１の許容電力差以下になるように、実行する、付記１に記載の演算処理装置。
【０１４３】
（付記６）
前記複数の演算処理部のそれぞれの電力制御回路は、前記命令処理停止状態の省電力動作の無効化を、前記複数の命令処理停止状態の演算処理部の省電力動作を無効にした場合の省電力量の合計が、前記複数の命令処理状態の演算処理部が全て前記命令処理状態から前記命令処理停止状態に遷移する時の第２の許容電力差以下になるように、実行する、付記１に記載の演算処理装置。
【０１４４】
（付記７）
前記監視回路は、
前記停止状態の演算処理部の数を計数した計数値を保持するカウンタと、
閾値レジスタと、
前記カウンタの計数値と前記閾値とを比較し、前記計数値が前記閾値を越えると制御情報を出力する比較器とを有し、
前記電力制御回路は、前記制御情報に応答して前記命令処理停止状態の演算処理部の省電力動作を無効化する、付記１に記載の演算処理装置。
【０１４５】
（付記８）
前記監視回路は、前記命令処理停止状態の演算処理部の数を計数した計数値を保持するカウンタを有し、
前記電力制御回路は、閾値レジスタと、前記カウンタの計数値と前記閾値とを比較し、前記係数値が前記閾値を越えると制御情報を出力する比較器を有し、前記制御情報に応答して前記命令処理停止状態の演算処理部の省電力動作を無効化する、付記１に記載の演算処理装置。
【０１４６】
（付記９）
前記命令処理状態の複数の演算処理部が前記命令処理停止状態に遷移する場合、
前記監視回路は、前記閾値を第１の値に設定し、前記遷移から第１の所定時間経過後に前記閾値を前記第１の値より大きい第２の値に変更し、
前記命令処理停止状態に遷移する複数の演算処理部の前記省電力動作が、前記第１の所定時間の間無効化され、前記第１の処理時間後に前記省電力動作が有効化される、付記１に記載の演算処理装置。
【０１４７】
（付記１０）
前記命令処理停止状態の演算処理部が前記命令処理状態に復帰する場合、
前記監視回路は、前記復帰より第２の所定時間前に前記閾値を前記第３の値から前記第３の値より小さい第４の値に変更し、
前記命令処理状態に遷移する複数の演算処理部の前記省電力動作が、前記復帰するときより第２の処理時間前に有効化状態から無効化状態にされ、前記復帰するときより第２の処理時間前から前記復帰まで間無効化される、付記９に記載の演算処理装置。
【０１４８】
（付記１１）
前記監視回路は、
前記内部回路から供給される前記命令処理停止状態を通知する停止状態信号に応答して、前記命令処理停止状態の演算処理部の数を計数するカウンタと、
前記命令処理停止状態の演算処理部の数と前記複数の閾値それぞれとを比較し、前記命令処理停止状態の演算処理部の数が前記複数の閾値それぞれを越える場合、それぞれに対応する制御信号を出力する複数の比較器とを有し、
前記電力制御回路は、前記複数の制御信号に応じて前記命令処理停止状態の演算処理部内の前記複数の内部回路それぞれの省電力動作を無効化する、付記４に記載の演算処理装置。
【０１４９】
（付記１２）
前記監視回路は、前記命令処理停止状態の演算処理部の数を計数するカウンタを有し、
前記電力制御回路は、前記命令処理停止状態の演算処理部の数と前記複数の閾値それぞれとを比較し、前記命令処理停止状態の演算処理部の数が前記複数の閾値それぞれを越える場合、それぞれに対応する制御信号を出力する複数の比較器を有し、前記複数の制御信号に応じて前記命令処理停止状態の演算処理部内の前記複数の内部回路それぞれの省電力動作を無効化する、付記３に記載の演算処理装置。
【０１５０】
（付記１３）
前記複数の演算処理部のそれぞれの電力制御回路は、前記命令処理停止状態の演算処理部の省電力動作を無効化する場合、前記複数の内部回路のうち前記第１の内部回路以外の第２の内部回路の省電力動作を順番に無効状態から有効状態に制御する、付記３に記載の演算処理装置。
【０１５１】
（付記１４）
前記複数の内部回路は、複数の演算処理回路を含み、
前記複数の演算処理回路は、それぞれ、複数組の回路を有し、
複数の演算処理部のそれぞれの電力制御回路は、前記命令処理停止状態の演算処理部を前記命令処理状態に復帰する場合、前記復帰対象の演算処理部の前記複数の演算処理回路内の前記複数組の回路のうち一部の組の回路を非省電力動作に制御した後、前記複数の演算処理回路の前記複数組の回路のうち残りの組の回路を順番に非省電力動作に制御する、付記３または１３に記載の演算処理装置。
【０１５２】
（付記１５）
命令を処理する命令処理状態ではクロックを供給されて命令を処理し、命令処理を停止する命令処理停止状態では前記クロックの供給が停止されて省電力動作状態に遷移する内部回路をそれぞれ有する複数の演算処理部を有する演算処理装置の制御方法において、
前記演算処理装置が有するカウンタが、前記命令処理停止状態の演算処理部の数を計数し、
前記演算処理装置が有する監視回路が、前記命令処理停止状態の演算処理部の数が閾値を越えた場合、前記命令処理停止状態の演算処理部の前記省電力動作を無効化する、演算処理装置の制御方法。
【０１５３】
（付記１６）
前記複数の演算処理部は、前記内部回路を複数有し、
前記監視回路は、
前記命令処理停止状態の演算処理部の前記省電力動作の無効化は、前記命令処理停止状態の演算処理部の数に応じた数の第１の内部回路の省電力動作を無効化することを有する、請求項１３に記載の演算処理装置の制御方法。
【符号の説明】
【０１５４】
１：電源回路
２：ファームウエアメモリ
１０：演算処理装置、プロセッサ、CPUチップ
１１：コア、CORE、CPUコア、演算処理部
１２：第２レベルキャッシュメモリ
１３：動作状態監視回路
１４：内部回路
１５：電力制御回路、パワーコントロールユニット
CKG：クロックゲート
CLK_TREE：クロックツリー
LOG：論理回路
CLK1、CLK2：クロック
CLKEN：クロックイネーブル信号
DPS：省電力無効化信号
S1_1：命令処理停止信号
S1_2：停止解除信号
S2：一部動作停止指令信号
１３１：コア数カウンタ
１３２：比較器
１３３：閾値コア数レジスタ
Cth：閾値コア数、閾値
Tth：閾値時間
TEth：第２の閾値時間
Over_Cth：コア数オーバー信号、制御信号
Over_Tth：時間オーバー信号
Over_TEth：第２時間オーバー信号
PW_CORE：コア電力
PW_DPS：省電力無効状態の電力
P_dPW：許容電力差
P_PW：許容電力レベル
dPW：電力差
１１０：命令制御回路、インストラクションコントロールサーキット
１１１：分岐履歴ＲＡＭ、ブランチヒストリＲＡＭ
１１２：Ｌ１命令キャッシュＲＡＭ
１１３：Ｌ１データキャッシュＲＡＭ
１１４：アドレス生成回路
１１５：整数演算回路
１１６：浮動小数点演算回路
１１７：レジスタファイル
１１８：命令バッファ
１１９：命令デコーダ
ＲＳＥ、ＲＳＦ、ＲＳＡ：リザベーションステーション
ＣＳＥ：コミットスタックエントリ
SUS/SL：命令処理停止信号（命令処理停止状態への移行を通知する信号）
E_SUS/S：停止解除信号（命令処理停止状態を解除し命令処理状態への復帰を通知する信号）
【図１】
0006418056.tif 000002
【図２】
0006418056.tif 000003
【図３】
0006418056.tif 000004
【図４】
0006418056.tif 000005
【図５】
0006418056.tif 000006
【図６】
0006418056.tif 000007
【図７】
0006418056.tif 000008
【図８】
0006418056.tif 000009
【図９】
0006418056.tif 000010
【図１０】
0006418056.tif 000011
【図１１】
0006418056.tif 000012
【図１２】
0006418056.tif 000013
【図１３】
0006418056.tif 000014
【図１４】
0006418056.tif 000015
【図１５】
0006418056.tif 000016
【図１６】
0006418056.tif 000017
【図１７】
0006418056.tif 000018
【図１８】
0006418056.tif 000019
【図１９】
0006418056.tif 000020
【図２０】
0006418056.tif 000021
【図２１】
0006418056.tif 000022
【図２２】
0006418056.tif 000023
【図２３】
0006418056.tif 000024
【図２４】
0006418056.tif 000025
【図２５】
0006418056.tif 000026
【図２６】
0006418056.tif 000027
【図２７】
0006418056.tif 000028