(57)【要約】【課題】複数のプログラムを並列または並行に実行する情報処理システムにおいて、システムの処理性能の劣化を最小にしながら、より効率的にプログラム群全体の実行時の消費電力の削減を実現する。【解決手段】プログラムの識別情報で区別される記憶領域にプログラム毎の電力制御情報を格納する電力コンテキスト記憶手段と、電力コンテキスト記憶手段から所望のプログラムについての電力制御情報を参照する電力コンテキスト参照手段と、電力コンテキスト参照手段により参照された電力制御情報に基づいて、情報処理装置の内部で消費される電力の状態を変更する電力状態変更手段とを備え、電力制御情報は、過去の電力割り当ての成功率あるいは失敗率を含み、電力コンテキスト参照手段は、電力制御情報の成功率あるいは失敗率に基づいて、該当プログラムを実行する際の電力状態の変更を行うか否かを決定する投機的電力状態変更判定手段を含む。【選択図】図１
2010250858.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置の内部で消費される電力を制御する装置であって、
プログラムの識別情報で区別される記憶領域にプログラム毎の電力制御情報を格納する電力コンテキスト記憶手段と、
前記電力コンテキスト記憶手段から所望のプログラムについての電力制御情報を参照する電力コンテキスト参照手段と、
前記電力コンテキスト参照手段により参照された電力制御情報に基づいて、前記情報処理装置の内部で消費される電力の状態を変更する電力状態変更手段とを備え、
前記電力制御情報は、
過去の電力割り当ての成功率あるいは失敗率を含み、
前記電力コンテキスト参照手段は、
前記電力制御情報の成功率あるいは失敗率に基づいて、該当プログラムを実行する際の電力状態の変更を行うか否かを決定する投機的電力状態変更判定手段を含む、
ことを特徴とする電力制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置における電力制御装置に関する。上記情報処理装置には、単一または複数構成からなるマイクロプロセッサ（マイクロコンピュータ，マイクロコントローラ，ディジタルシグナルプロセッサを含む）、シーケンサ、静的構成論理、動的再構成可能論理、などが含まれる。本明細書では主にプロセッサを例として取り扱うが、本発明は上記情報処理装置一般に適用可能である。
【背景技術】
【０００２】
近年、携帯電話やデジタルテレビ等のデジタル機器において、音声、オーディオ、動画や符号処理等の様々なデジタル処理の需要が増加している。これら処理の実現のためにマイクロプロセッサなどの情報処理装置が一般に利用されているが、アプリケーション需要の増大に応じて回路規模や動作周波数や搭載プロセッサ数が増加し消費電力は増加の一途をたどっている。
【０００３】
従来は消費電力削減のため、ハードウェアによるクロックゲーティング制御、動作上必要のないブロックをソフトウェアにより停止させる制御、ソフトウェアあるいはハードウェアにより周波数や電圧状態の変更をプログラム単位で行う制御（特開平８−１５２９４５号公報）などが一般に実現されている。なお、本明細書における「プログラム単位」という表現は、プロセス単位、スレッド単位、タスク単位を含むものとする。
【０００４】
また近年は、プロセッサの実行状態の長周期の平均負荷状況に応じて周波数や電圧状態を変更する制御が行われている（特開平８−６６８１号公報）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平８−１５２９４５号公報
【特許文献２】特開平８−６６８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら上記従来のプログラム単位の消費電力削減方法では、複数のプログラムが同時並列にあるいは時間的に切り替えながら並行に動作するシステムにおいて効率の良い消費電力削減が行えない。
【０００７】
例えば、１つの物理的なプロセッサにおいて２つのプログラムを時間的に切り替えながら並行に動作させるシステムの場合の課題は次の通りである。一方のプログラムが高い電源電圧での動作を必要とする状態であり他方のプログラムが低い電源電圧での動作を必要としている条件下においてプログラムの切り替えが頻繁に発生する場合、従来のプログラム単位の電源電圧変更方法ではプログラムの切り替え時間に電源電圧の変更が追随できないことが考えられる。この場合、電源電圧の変更完了のための待ち時間が発生するが、リアルタイム性が重要視される組み込み用途ではこの待ち時間はシステム性能の劣化や性能保証を損なう致命的な問題となる。したがってこのような用途においてプログラム単位の単純な電力制御を適用することは現実にはできない。これは電源電圧だけでなくクロック周波数の変更においても同じである。理想的な電力状態（ここでは電圧）の変更と、現実的な遷移時間を伴う電力状態の変更について図３２，図３３にそれぞれ示す。
【０００８】
他方、仮に電源電圧やクロック周波数の変更がプログラムの切り替え頻度に追随できた場合でも、多数のプログラムを並列あるいは並行に動作させるシステムにおいてプログラム単位の電力制御では、プログラム群全体の実行時に最適な電源電圧や閾値電圧などの電圧を供給することによる消費電力削減を実現できるとは限らない。例えば、４つのプログラムを並行に動作させるシステムにおいて、２つのプログラムが高い電圧で、残り２つのプログラムが低い電圧で動く場合を考える。この場合、最も電力効率が高いプログラムの実行過程は、高い電圧の２つのプログラムが連続して実行され、残り低い電圧の２つのプログラムが連続して実行される形態が続く場合である。しかしながら、プログラム単位に着目した電力制御方式では、高い電圧設定のプログラムと低い電圧設定のプログラムが交互に実行される可能性があり、この場合には、電圧状態変更自体による電力損失がより多く発生したり、電圧状態変更のための待ち回数がより多く発生したりして、消費電力やシステム性能の観点から最適な状態にはならない。消費電力の観点からの効率的なスケジューリングと非効率的なスケジューリングの遷移過程について図３４，図３５にそれぞれ示す。
【０００９】
上記の課題を解決するために、プログラム単位の電力削減ではなく、比較的長周期（例えばミリ秒オーダー）における平均的な負荷状態に応じて供給電圧や動作周波数を変更する方法が考えられる。この場合、長周期での電力制御となるため、頻繁にプログラムが切り替わるリアルタイム処理に適したより短時間で電力条件を変更する効率の良い電力制御は行えない。また、電力制御はプログラムの実行順序には無関係のため、先に示したように、必ずしも最適な順番でプログラムが実行されるとは限らず、プログラム群全体で最適な消費電力になるとは限らない。さらに、過去の平均情報に基づく電力制御であるため、先行的に電力変更を行うこともできない。平均情報の傾斜関数を利用した予測に基づき電力を変更することは可能であるが、将来実行されることが確定的なプログラムがあったとしてもそれにあわせて適切な電力状態に先行的に変更できるものではない。
【００１０】
上記では１つの物理プロセッサにおける複数プログラムの実行時について従来の電力制御の課題を示したが、複数の物理プロセッサを有するシステムにおいても同様に従来の電力制御方法ではプログラム単位の特性に基づきプログラム群全体の消費電力を効率的に削減することはできない。
【００１１】
例えば、物理的なプロセッサが２つ存在しそれぞれが電力制御可能であっても、ソフトウェアの実行順序や実行されるプロセッサと電力状態の変更との関係が最も効率的になるとは限らない。
【００１２】
例として、プロセッサＡとプロセッサＢが存在し、高い動作電圧を必要とするプログラムＰＨ１とＰＨ２、低い動作電圧でよいプログラムＰＬ１とＰＬ２が存在する場合を考える。ここで仮にプロセッサＡとプロセッサＢがいずれも高い電圧から動作開始する場合を考えると、プログラム単体での電力制御方法では最適なプログラム割り当て実行と電力制御が判断できない。システム全体で最も電力効率が良くなるのは、プロセッサＡまたはＢの片側に低い動作電圧のプログラムＰＬ１とＰＬ２を実行させる場合であるが、例えば現在に最も近い電圧からプログラム割り当てを行うとＰＨ１とＰＨ２がプロセッサＡおよびＢに割り当てられることになるため、その後ＰＬ１とＰＬ２がプロセッサＡおよびＢに割り当てられ、電源状態の変化は２回発生することとなり、先に示した最適状態とはならない。ＰＬ１とＰＬ２が先にプロセッサＡとＢにそれぞれ割り当てられる場合も同様である。このように、電力制御がプログラム単位で行われる限り、システム全体を考慮した消費電力の削減は充分に行えない。
【課題を解決するための手段】
【００１３】
本発明による電力制御装置は、情報処理装置の内部で消費される電力を制御する装置で
あって、プログラムの識別情報で区別される記憶領域にプログラム毎の電力制御情報を格納する電力コンテキスト記憶手段と、前記電力コンテキスト記憶手段から所望のプログラムについての電力制御情報を参照する電力コンテキスト参照手段と、前記電力コンテキスト参照手段により参照された電力制御情報に基づいて、前記情報処理装置の内部で消費される電力の状態を変更する電力状態変更手段とを備える、ことを特徴とする。
【００１４】
上記電力制御装置は、前記情報処理装置において実行中のプログラムに対する電力制御情報を記憶する電力制御レジスタをさらに備え、前記電力コンテキスト参照手段は、前記情報処理装置の命令実行とは並列に、前記電力制御レジスタの内容を電力コンテキスト記憶手段との間で退避あるいは復帰する電力コンテキスト退避復帰制御手段を含み、前記電力状態変更手段は、前記電力制御レジスタに記憶されている電力制御情報に基づいて、前記情報処理装置の内部で消費される電力の状態を変更する、ことが好ましい。これにより、複数のプログラムを頻繁に切り替えて処理するシステムにおいても、プログラム処理性能を劣化させることなく電力制御情報を退避および復帰することができ、きめ細かいより効率的な電力制御が可能となる。
【００１５】
上記電力制御装置において、前記電力コンテキスト参照手段は、前記情報処理装置において実行中のプログラムと異なる第１のプログラムの電力制御情報を前記第１のプログラムの非実行時に参照する電力コンテキスト先行参照手段を含む、ことが好ましい。これにより、複数のプログラムを実行するシステムにおいても、該当プログラムの割り当て実行前に電力状態変更のための処理やプログラム割り当てのためのスケジュール処理を事前に行うことができ、プログラム処理性能を劣化させることなく電力制御を実施できる。
【００１６】
上記電力制御装置において、前記電力状態変更手段は、前記電力コンテキスト先行参照手段により参照された前記第１のプログラムの電力制御情報に基づいて、前記第１のプログラムの実行に先立って、電力状態の変更を前もって行う、ことが好ましい。これにより、第１のプログラムを実行可能な電力状態にプロセッサをより早く変更することができ、電力状態変更のための待ち合わせによる性能劣化を抑制することができる。
【００１７】
上記電力制御装置において、前記電力コンテキスト先行参照手段は、前記第１のプログラムの実行に先立って、前記第１のプログラムに対応した電力制御情報を参照し、電力状態変更時間とプログラム割り当て時間の情報に基づき、電力状態の変更が有効でないと判断した場合には、電力状態の変更を禁止する、ことが好ましい。これにより、プロセッサ状態と電力制御状態の不整合による性能劣化を効率的に抑制することができる。
【００１８】
上記電力制御装置において、前記電力制御情報は、過去の電力割り当ての成功率あるいは失敗率を含み、前記電力コンテキスト参照手段は、前記電力制御情報の成功率あるいは失敗率に基づいて、該当プログラムを実行する際の電力状態の変更を行うか否かを決定する投機的電力状態変更判定手段を含む、ことが好ましい。これにより、プロセッサ状態と電力制御状態の不整合による性能劣化を効率的に抑制することができる。
【００１９】
上記電力制御装置において、前記電力コンテキスト参照手段は、前記電力コンテキスト記憶手段に記憶されたプログラム毎の電力制御情報から、現在の電力状態と電力変化が最小となるプログラムを選択し前記情報処理装置に割り当てるプログラムスケジュール手段を含む、ことが好ましい。これにより、複数のプログラム実行時の総消費電力を効率的に削減することができる。
【００２０】
上記電力制御装置において、前記電力コンテキスト参照手段は、前記電力コンテキスト記憶手段に記憶されたプログラム毎の電力制御情報から、各プログラム間の電力変化が最小となるプログラム順に並び替え、前記情報処理装置に割り当てるプログラムスケジュー
ル手段を含む、ことが好ましい。これにより、複数のプログラム実行時の総消費電力を効率的に削減することができる。
【００２１】
上記電力制御装置において、前記情報処理装置の現在の動作状況を検出する負荷検出手段と、前記情報処理装置の現在の電力状態を検出する電力状態検出手段と、前記負荷検出手段が検出した負荷と前記電力状態検出手段が検出した電力情報から、現在のプログラムの動作継続を行えない事を事前に判断する負荷電力判定手段と、前記継続が行えない事を判断した場合に、プログラムの切り替えを行うプログラムスケジュール手段とをさらに備える、ことが好ましい。これにより、電力状態変更の待ち合わせによる性能劣化を抑制できると同時に、性能劣化が少ないためより積極的に電力状態の変更制御を実施することができる。
【００２２】
本発明の別の電力制御装置は、複数の物理プロセッサの内部で消費される電力を制御する装置であって、物理プロセッサが物理的に所属する電源グループを識別する情報を記憶する電源グループ記憶手段と、前記電源グループ記憶手段の内容に基づき、各々のプログラムをいずれの物理プロセッサに割り当てるかを決定するプログラムスケジュール手段とを備える、ことを特徴とする。これにより、複数の物理プロセッサを有するシステムにおいて、プロセッサの搭載数に依存することなく、複数のプログラム実行時の総消費電力を効率的に削減することができる。
【発明の効果】
【００２３】
以上のように本発明によれば、複数のプログラムを並列または並行に実行する情報処理システムにおいて、システムの処理性能の劣化を最小にしながら、より効率的にプログラム群全体の実行時の消費電力の削減を実現することができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の第１の実施形態による電力制御装置の構成を示すブロック図である。
【図２】電力コンテキスト記憶装置の論理的な構成例を示す図である。
【図３】電力コンテキスト記憶装置の論理的な構成例を示す図である。
【図４】電力制御情報の論理的な構成例を示す図である。
【図５】電力状態変更装置の詳細な構成例を示す図である。
【図６】電力状態変更装置の詳細な構成例を示す図である。
【図７】本発明の第２の実施形態による電力制御装置の構成を示すブロック図である。
【図８】本発明の第３の実施形態による電力制御装置の構成を示すブロック図である。
【図９】電力先行制御装置の詳細な構成例を示す図である。
【図１０】本発明の第３の実施形態に係る電力制御装置の動作タイミングを示す図である。
【図１１】本発明の第３の実施形態による電力制御装置の動作手順を説明するためのフローチャートである。
【図１２】本発明の第４の実施形態による電力制御装置の構成を示すブロック図である。
【図１３】投機的電力状態変更判定装置の詳細な構成例を示す図である。
【図１４】本発明の第４の実施形態による電力制御装置の動作手順を説明するためのフローチャートである。
【図１５】過去の成功率を計算する手順の一例を示すフローチャートである。
【図１６】成功率の計算を行う装置の構成を示すブロック図である。
【図１７】プログラムの切り替え時に、プログラムの動作状態に応じた値で、電力コンテキスト記憶装置の情報を更新する装置の構成の一例を示すブロック図である。
【図１８】投機的電力状態変更判定装置の詳細な構成例を示す図である。
【図１９】通常最小時間の計算手順の一例を示すフローチャートである。
【図２０】本発明の第６の実施形態による電力制御装置の構成を示すブロック図である。
【図２１】電力スケジューラの詳細な構成例を示す図である。
【図２２】本発明の第６の実施形態に係る電力制御装置の動作手順を説明するためのフローチャートである。
【図２３】本発明の第６の実施形態に係る電力制御装置の動作タイミングを示す図である。
【図２４】電力スケジューラの詳細な構成例を示す図である。
【図２５】本発明の第８の実施形態による電力制御装置の構成を示すブロック図である。
【図２６】負荷電力判定装置の詳細な構成例を示す図である。
【図２７】本発明の第８の実施形態に係る電力制御装置の動作手順を説明するためのフローチャートである。
【図２８】本発明の第９の実施形態による電力制御装置の構成を示すブロック図である。
【図２９】電源グループ記憶装置の論理的な構成例を示す図である。
【図３０】プロセッサと電源グループ記憶装置の物理的な配置例を示す図である。
【図３１】熱分散のためのプログラム割り当ての例を示す図である。
【図３２】理想的な電圧変更の例を示す図である。
【図３３】現実的な遷移時間を伴う電圧変更の例を示す図である。
【図３４】消費電力の観点からの効率的なスケジューリングの例を示す図である。
【図３５】消費電力の観点からの非効率なスケジューリングの例を示す図である。
【発明を実施するための形態】
【００２５】
以下、本発明の実施形態を図面を参照して詳しく説明する。なお、図面において同一または相当する部分には同一の参照符号を付してその説明は繰り返さない。
【００２６】
以下の実施形態では、情報処理装置として特にマイクロプロセッサへの本発明の適用例について説明する。
【００２７】
（第１の実施形態）
図１は、第１の実施形態による電力制御装置１００の構成を示すブロック図である。図１では、電力制御装置１００がマイクロプロセッサ１０００（情報処理装置）の内部に設けられている場合を示しているが、電力制御装置１００をマイクロプロセッサ１０００（情報処理装置）の外部に設けることも可能である。
【００２８】
電力コンテキスト記憶装置ＺＡ１０５は、プロセッサバスアクセス制御装置ＺＡ１０４に接続されマイクロプロセッサ１０００から読み書きを行える。また電力コンテキスト記憶装置ＺＡ１０５は、電力コンテキスト参照装置ＺＢ１０１に接続され、電力コンテキスト参照装置ＺＢ１０１から要求された識別番号に応じた電力制御情報ＺＡ１０３を電力コンテキスト参照装置ＺＢ１０１に出力する。
【００２９】
電力状態変更装置ＺＡ１０１は、電力コンテキスト参照装置ＺＢ１０１から供給された電力制御情報ＺＡ１０３に基づき、消費電力削減のためにマイクロプロセッサ１０００の電力状態を変更する。
【００３０】
なお、図１では、電力コンテキスト参照装置ＺＢ１０１がプロセッサバスアクセス制御装置ＺＡ１０４と並列に電力コンテキスト記憶装置ＺＡ１０５にアクセスする構成である
が、電力コンテキスト参照装置ＺＢ１０１がプロセッサバスアクセス制御装置ＺＡ１０４を経由して電力コンテキスト記憶装置ＺＡ１０５にアクセスする構成をとっても良い。
【００３１】
本実施例では、後述の第２の実施形態（図７）とは異なり、現在のプログラムのみに対する電力制御情報を示す電力制御レジスタＺＡ１０２（図７）は必ずしも必要ではなく、電力コンテキスト記憶装置ＺＡ１０５の情報を元に、電力状態変更装置ＺＡ１０１の制御を行う。
【００３２】
電力コンテキスト記憶装置ＺＡ１０５には、単一または複数の物理プロセッサで実行されるプログラム群の電力コンテキストを格納し、これら電力コンテキストを事前に参照し必要に応じて計算を行うことで、システム全体の消費電力を効果的に削減することを可能にする。
【００３３】
当然ながら電力コンテキスト記憶装置ＺＡ１０５は、ＳＲＡＭ構造による構成やフリップフロップ群により構成することが可能である。また、マイクロプロセッサ１０００がアクセス可能なメモリ空間に、電力情報以外の情報と共用配置することも可能である。
【００３４】
図２に、電力コンテキスト記憶装置ＺＡ１０５の構成例を示す。プログラム毎に電力制御情報ＺＡ１０３を記憶するために、プログラムを識別するための識別番号（ＩＤ）に応じた電力制御情報ＺＡ１０３の格納領域から構成される。
【００３５】
例えば電力コンテスト記憶装置ＺＡ１０５をＳＲＡＭ（Static Random Access Memory
）を用いて構成すると、電力制御情報ＺＡ１０３の読み出しに加え書き込みをも行うことが可能である。
【００３６】
図３には、電力コンテキスト記憶装置ＺＡ１０５に、電力制御情報ＺＡ１０３としてプログラムの識別番号（ＩＤ）をも記憶する例を示す。
【００３７】
図４には、電力制御情報ＺＡ１０３の内容例を示すが、必ずしも全てを含む必要はなく、かつ記載内容以外も当然格納可能である。
【００３８】
図４において、電源電圧情報は、例えば情報処理装置の電源供給のための電圧を表し、情報処理装置の動作時の消費電力の削減のための制御に使用する。
【００３９】
閾値電圧情報は、半導体微細プロセスを使用した情報処理装置におけるリーク電力削減のための制御に使用する。
【００４０】
クロック周波数情報は、情報処理装置に供給するクロックの周波数を表し、これを可変にすることにより電力削減を実現する。
【００４１】
クロック停止情報は、動作上不要な回路領域へのクロック供給を停止させることで、不要な電力消費の削減制御に使用する。
【００４２】
Ｔｒ停止情報は、動作上不要な信号のトグルを抑制するために、出力Ｔｒの停止制御に使用するか、リーク電力削減のためにＭＯＳ回路に直列に挿入するパワーゲーティング用Ｔｒの停止制御に使用する。
【００４３】
制御対象ブロック情報は、電力制御情報ＺＡ１０３が示す電力制御を実施する対象ブロックを特定するために使用する。
【００４４】
状態変更成功率情報は、後述するように、投機的な電力状態変更の過去の成功率により電力制御を行うために使用する。
【００４５】
先行状態変更条件情報は、後述するように、電力状態を該当プログラム開始に先行して変更するための起動条件を指定する。
【００４６】
動作モード情報は、電圧や周波数を特定するモード番号を指定する。例えば、高い電圧と高い周波数で稼動する高速動作モード、低い電圧と低い周波数で稼動する低速モードを、モード番号で識別させ、情報量の削減や電力設定の簡易化を行う。
【００４７】
状態変更条件情報は、該当プログラムが電力変更を行うための情報処理装置の状態条件を指定する。例えば、該当プログラムの実行中のアドレス情報や特権レベル状態やキャッシュミス等のメモリアクセス状態などを指定し、これが一致した場合のみ電力変更を起動する。
【００４８】
状態変更許可情報は、該当プログラムが電力変更を行うことを禁止あるいは許可することを指定する。
【００４９】
図５と図６に電力状態変更装置ＺＡ１０１の一例を示す。図５は、与えられた電源電圧条件や閾値電圧条件に対し、ＤＣ−ＤＣコンバータを用いて供給電圧を変更する例である。図６は、クロック周波数情報としての逓倍率条件と分周率条件により、供給クロックを変更する例である。
【００５０】
（第２の実施形態）
図７は、第２の実施形態による電力制御装置２００の構成を示すブロック図である。図７では、電力制御装置２００がマイクロプロセッサ１０００の内部に設けられている場合を示しているが、電力制御装置２００をマイクロプロセッサ１０００の外部に設けることも可能である。
【００５１】
電力状態変更装置ＺＡ１０１は、電力制御レジスタＺＡ１０２に接続され、電力制御レジスタＺＡ１０２から供給される電力制御情報ＺＡ１０３の内容に基づき、消費電力削減のためにマイクロプロセッサ１０００の電力状態の変更を行う。
【００５２】
電力制御レジスタＺＡ１０２が保持する電力制御情報ＺＡ１０３は、電力制御レジスタＺＡ１０２に接続されたプロセッサバスアクセス制御装置ＺＡ１０４を経由して読み出し／書き換えを行うことができる。マイクロプロセッサ１０００は、実行するプログラム自身で電力制御レジスタＺＡ１０２の内容を書き換えることで、マイクロプロセッサ１０００を適切な電力状態に変更し、消費電力を削減することができる。
【００５３】
マイクロプロセッサ１０００は、電力コンテキスト記憶装置ＺＡ１０５の内容をプロセッサバスアクセス制御装置ＺＡ１０４を経由して、読み出し／書き換えを行うことができる。
【００５４】
マイクロプロセッサ１０００にて実行されるプログラムは、電力制御レジスタＺＡ１０２の内容を、電力コンテキスト記憶装置ＺＡ１０５の、プログラム毎に用意された格納領域の内容と入れ替えることで、各プログラム毎に個別の条件での電力制御を実現することができる。
【００５５】
プログラム毎に電力制御情報を用意することで、よりきめ細かい電力制御が可能となり消費電力の削減をより効果的に実現できる。
【００５６】
当然ながら電力コンテキスト記憶装置ＺＡ１０５は、ＳＲＡＭ構造による構成やフリップフロップ群により構成することが可能である。また、マイクロプロセッサ１０００がアクセス可能なメモリ空間に、電力情報以外の情報と共用配置することも可能である。
【００５７】
電力コンテキスト参照装置ＺＢ１０１は電力コンテキスト退避復帰制御装置ＺＡ１０６を含んでいる。電力コンテキスト退避復帰制御装置ＺＡ１０６は、電力制御レジスタＺＡ１０２および電力コンテキスト記憶装置ＺＡ１０５に接続され、それぞれの記憶内容を読み出し／書き換えることができる。電力コンテキスト退避復帰制御装置ＺＡ１０６は、プロセッサバスを占有することなく、電力制御レジスタＺＡ１０２および電力コンテキスト記憶装置ＺＡ１０５にアクセス可能であるため、プロセッサの処理性能を落とさずに、電力制御レジスタＺＡ１０２および電力コンテキスト記憶装置ＺＡ１０５の内容を入れ替えることができる。
【００５８】
（第３の実施形態）
図８は、第３の実施形態による電力制御装置３００の構成を示すブロック図である。この電力制御装置３００は、図１および図７に示した電力制御装置１００，２００と同様、マイクロプロセッサ１０００の内部に設けられてもよいし、マイクロプロセッサ１０００の外部に設けられてもよい。
【００５９】
電力コンテキスト参照装置ＺＢ１０１は電力先行制御装置ＺＣ１０１を含んでいる。電力先行制御装置ＺＣ１０１は、電力コンテキスト記憶装置ＺＡ１０５から電力制御情報ＺＡ１０３を取得し、これを元に電力状態変更のための計算を行い、電力制御情報ＺＡ１０３を電力状態変更装置ＺＡ１０１に供給する。
【００６０】
電力状態変更装置ＺＡ１０１は、供給された電力制御情報ＺＡ１０３に基づき、マイクロプロセッサ１０００の電力状態変更を行う。
【００６１】
図９に電力先行制御装置ＺＣ１０１の内部構成の一例を示す。
【００６２】
電力先行制御装置ＺＣ１０１は、ハードウェアによるプログラムスケジューラまたはオペレーティングシステムによるプログラムスケジューラにより、次にマイクロプロセッサ１０００で実行すべきプログラムの識別番号ＺＣ２０１を受け取り、識別番号保持レジスタＺＣ２０２に格納する。
【００６３】
識別番号保持レジスタＺＣ２０２の内容は、識別番号ＺＣ２０３として電力コンテキスト記憶装置ＺＡ１０５に供給され、電力コンテキスト記憶装置ＺＡ１０５からは識別番号ＺＣ２０３に対応する電力制御情報ＺＡ１０３を取得し、これを電力制御情報保持レジスタＺＣ２０４に記録する。
【００６４】
比較器ＺＣ２０５は、マイクロプロセッサ１０００の電力状態ＺＣ２０６と、電力制御情報ＺＡ１０３の内容を比較し、結果を電力変更タイミング制御器ＺＣ２０７に通知する。なお、ここでは一例として電力状態ＺＣ２０６および電力制御情報ＺＡ１０３は電源電圧を表すものとする。
【００６５】
電力状態ＺＣ２０６と電力制御情報ＺＡ１０３との比較により、電力状態ＺＣ２０６の表す電圧のほうが大きい場合は、セレクタＺＣ２０８は、プログラムスケジューラからのプログラム切り替え要求ＺＣ２０９側を選択する。すなわち、プログラムが切り替わるタイミングを待って、電圧状態の変更要求ＺＣ２１０を電力状態変更装置ＺＡ１０１に通達する。これにより、高い動作電圧を必要とするプログラムの実行中に、動作可能な電圧以
下への状態変更によりマイクロプロセッサ１０００が誤動作することを防ぐ。
【００６６】
比較器ＺＣ２０５の比較結果が、電力状態ＺＣ２０６の方が低いことを示す場合には、電力変更タイミング制御器ＺＣ２０７は、プログラム切り替え前に電力変更を行う準備を始める。この例では、ダウンカウンタＺＣ２１１の起動を行い、この結果が所定の値（ここでは零）になった場合に、セレクタＺＣ２０８を経由して、電圧状態の変更要求ＺＣ２１０を電力状態変更装置ＺＡ１０１に通達する。これにより、該当プログラムに切り替わるより前に、該当プログラムが必要とする電力状態に変更を行うことができる。
【００６７】
図１０に本実施例の動作タイミングを示す。ここでは、プログラムＡとプログラムＢが電力制御情報ＺＡ１０３として電圧Ｖ１、プログラムＣとプログラムＤが電圧Ｖ２を指定している場合を例示する。
【００６８】
プログラムＢ実行中において、電力状態ＺＣ２０６は電圧Ｖ１であり、プログラムＣの電力制御情報ＺＡ１０３は電圧Ｖ２を示している。比較器ＺＣ２０５は、電力状態ＺＣ２０６と電力制御情報ＺＡ１０３の比較結果として、電力状態ＺＣ２０６のほうが大きいと判断し、セレクタＺＣ２０８にプログラム切り替え要求ＺＣ２０９側を選択させる。プログラム切り替え要求ＺＣ２０９は、プログラム切り替え時にアサートされるため、電力切り替え要求ＺＣ２１０は、プログラム切り替え時まで通知されない。結果として、プログラムＢが実行中断するタイミングまで電力状態の変更が待たされる。
【００６９】
反対にプログラムＤの実行時には、比較器ＺＣ２０５の比較結果は、電力制御情報ＺＡ１０３側が大きいと判断するため、電力変更タイミング制御器ＺＣ２０７は、カウンタの計数後、プログラム切り替えに先行して電力状態の変更を開始する。
【００７０】
なお、プログラムＡおよびプログラムＣの実行中のように、次のプログラム実行時と電力条件が同じ場合は、プログラム切り替え後に電力変更を行っても、プログラム切り替え前に電力変更を行っても、電力状態は同じである。もちろん、比較結果が同じ場合には電力変更制御を実施しないことは当然考えられる。
【００７１】
図１１には、本実施例の実施手順の一例を示す。
【００７２】
手順ＺＣ３０１において、次に割り当てられるプログラムの識別番号に応じた電力制御情報ＺＡ１０３を取得する。
【００７３】
次に手順ＺＣ３０２にて、この電力制御情報ＺＡ１０３とマイクロプロセッサ１０００の電力状態ＺＣ２０６を比較する。電力状態として電圧を仮定した本例では、電力状態ＺＣ２０６側が低ければ手順ＺＣ３０３を選択し、高ければ手順ＺＣ３０４を選択する。
【００７４】
手順ＺＣ３０３では、通常のスケジューリングによるプログラムの切り替えまで、電力変更を待ち合わせる。
【００７５】
手順ＺＣ３０４では、電力条件を変更するタイミングの計算を開始する。本例ではタイマＺＣ２１１によるタイミング調整の例を示した。
【００７６】
手順ＺＣ３０５では、タイミング条件完了まで電力変更を待ち合わせる。本例ではタイマＺＣ２１１のカウント値が所定の値になることを条件として示した。
【００７７】
待ち合わせ完了後の手順ＺＣ３０６では、電力制御情報ＺＡ１０３に基づき電力状態の変更を電力状態変更装置ＺＡ１０１に要求する。
【００７８】
（第４の実施形態）
図１２は、第４の実施形態による電力制御装置４００の構成を示すブロック図である。この電力制御装置４００は、図１および図７に示した電力制御装置１００，２００と同様、マイクロプロセッサ１０００の内部に設けられてもよいし、マイクロプロセッサ１０００の外部に設けられてもよい。
【００７９】
電力コンテキスト参照装置ＺＢ１０１は投機的電力状態変更装置ＺＤ１０１を含んでいる。投機的電力状態変更装置ＺＤ１０１は、電力コンテキスト記憶装置ＺＡ１０５から電力制御情報ＺＡ１０３を取得し、これを元に電力状態変更のための計算を行い、電力制御情報ＺＡ１０３を電力状態変更装置ＺＡ１０１に供給する。
【００８０】
電力状態変更装置ＺＡ１０１は、供給された電力制御情報ＺＡ１０３に基づき、マイクロプロセッサ１０００の電力変更を行う。
【００８１】
図１３に投機的電力状態変更装置ＺＤ１０１の内部構成の一例を示す。
【００８２】
投機的電力状態変更装置ＺＤ１０１は、ハードウェアによるプログラムスケジューラまたはオペレーティングシステムによるプログラムスケジューラにより、次にマイクロプロセッサ１０００で実行すべきプログラムの識別番号ＺＤ２０１を受け取り、識別番号保持レジスタＺＤ２０２に格納する。
【００８３】
識別番号保持レジスタＺＤ２０２の内容は、識別番号ＺＤ２０３として電力コンテキスト記憶装置ＺＡ１０５に供給され、電力コンテキスト記憶装置ＺＡ１０５からは識別番号ＺＤ２０３に対応する電力制御情報ＺＡ１０３を取得し、これを電力制御情報保持レジスタＺＤ２０４に記録する。
【００８４】
比較器ＺＤ２０５は、電力制御情報ＺＡ１０３の内容のうち過去の電力変更の成功率ＺＤ２０６と、成功率の指定限界値ＺＤ２０７とを比較する。例えば、過去の電力変更の成功率ＺＤ２０６は連続的に電力変更に失敗した回数で構成し、指定限界値ＺＤ２０７が３回を表す構成とした場合、過去の成功率ＺＤ２０６が３回以内であれば、比較器ＺＤ２０５の出力はアサートされる。
【００８５】
ここでは、比較器ＺＤ２０５の出力は、電力制御情報ＺＤ２０４の中の電力変更許可ビットと論理的にＡＮＤをとり（ＺＤ２０８）、その結果を電力変更要求ＺＤ２０９として、電力状態変更装置ＺＡ１０１に通知する。
【００８６】
このようにして、過去の電力変更の成功率に基づき、一定条件以上の失敗の場合に、電力状態の変更を抑制することができる。
【００８７】
図１４には、本実施例の実施手順の一例を示す。
【００８８】
手順ＺＤ３０１において、次に割り当てられるプログラムの識別番号に応じた電力制御情報ＺＡ１０３を取得する。
【００８９】
次に手順ＺＤ３０２において、電力制御情報ＺＡ１０３の状態変更許可ビットの内容から、電力制御が許可されたプログラムであるかを判定し、電力制御が許可されたプログラムでない場合は、電力状態の変更要求を行わずに手順を完了する。
【００９０】
電力制御が許可されたと判定された場合は、次に手順ＺＤ３０３において、電力制御情
報ＺＡ１０３の内容の過去の電力状態変更の成功率から、電力状態の変更制御を実施すべきか抑制すべきかを判定し、抑制すべきであると判定した場合には、電力状態の変更要求を行わずに手順を完了する。反対に変更を実施すべきと判定した場合には、手順ＺＤ３０４において、電力制御情報ＺＡ１０３の内容に基づき、電力状態変更装置ＺＡ１０１に対して、電力状態の変更要求を通知する。
【００９１】
図１５には、本実施例において、過去の成功率を計算する例を示す。ここでは成功率として失敗回数を基にした計算を行う例を示す。
【００９２】
手順ＺＤ４０１において、現在の電力状態と負荷状態の組合せではマイクロプロセッサ１０００が誤動作を発生しうるかを余裕度をもとに計算判定する（この手順については第８の実施形態において示す。）
電力状態に余裕がない状態（電力ハザード状態）であると手順ＺＤ４０１において判定した場合、手順ＺＤ４０２において、電力制御情報における状態変更成功率に相当する値を増加させる。単純な例としては、電力ハザード状態を検出するごとに１ずつ増加させるが、余裕度に応じて重み付けを付けた値を加算する方法も容易に構成できる。
【００９３】
手順ＺＤ４０３においては、実装方法に応じて、電力状態に余裕が生じるまで待ち状態に入れることや、割り当て可能なプログラムに切り替える方法を取る。
【００９４】
電力状態に余裕があると手順ＺＤ４０１にて判定した場合において、さらに手順ＺＤ４０４にてプログラムの切り替え要求を受けた場合は、さらに続く手順ＺＤ４０５において、成功率の計算を行う。
【００９５】
手順ＺＤ４０５において、実装方法の一つとしては単純に値を減算する方法がある。この方法では、失敗や成功の連続度合いとは無関係に、合計値がある閾値を越えるか否かで成功率を計算することができる。
【００９６】
また他の実装方法としては、手順ＺＤ４０５では電力割り当てが成功している場合には、成功率の値を初期値（たとえば０）にクリアする方法を取ることができる。この場合は、連続してＮ回失敗した場合にのみ、閾値を越える値とする判定方法を構成できる。
【００９７】
図１６は、成功率の計算を行う装置の構成を示すブロック図である。
【００９８】
この例ではセレクタＺＤ５０１は、電力ハザード状態の場合には、失敗数加算値である値（＋１）を供給し、電力ハザード状態でない場合には、成功数減算値である値（−１）を供給する。
【００９９】
加算器ＺＤ５０２は、電力制御情報ＺＤ２０４から供給される現在の状態変更成功率の値と、セレクタＺＤ５０１から供給される加減算値を加算する。
【０１００】
失敗率情報レジスタＺＤ５０３は、加算器ＺＤ５０２から供給される値を、プログラム切り替え情報がアサートされた場合に書き込む。さらにこの値により、電力コンテキスト記憶装置ＺＡ１０５の状態変更成功率のフィールドを更新する。
【０１０１】
なお、図１７には本実施例のように、プログラムの切り替え時に、プログラムの動作状態に応じた値で、電力コンテキスト記憶装置ＺＡ１０５の情報を更新する装置の構成を例示する。
【０１０２】
なお、本実施例では、投機的に電力変更を行うか否かについて例示したが、電力割り当
ての成功および失敗の判定機構を用いれば、より安全に電力の削減を行うことが可能である。例えば電力割り当てが成功している場合には、電力状態の余裕度の計算を行い、電力コンテキスト記憶装置ＺＡ１０５における該当プログラム用の電力制御情報を更新することができる。例えば電力割り当てが成功しており、現在の電圧が動作条件に対して充分に余裕があることが判定できれば、より低い電圧値で電力コンテキスト記憶装置ＺＡ１０５の電力制御情報を更新することができる。逆に余裕度が小さい場合はより高い電圧値で更新することができる。これにより、電力割り当ての失敗による性能劣化を減らすとともに、消費電力の削減を動的に実現することができる。
【０１０３】
（第５の実施形態）
図１８に投機的電力状態変更装置ＺＤ１０１の内部構成の別の一例を示す。
【０１０４】
投機的電力状態変更装置ＺＤ１０１は、ハードウェアによるプログラムスケジューラまたはオペレーティングシステムによるプログラムスケジューラにより、次にマイクロプロセッサ１０００で実行すべきプログラムの識別番号ＺＤ２０１を受け取り、識別番号保持レジスタＺＤ２０２に格納する。
【０１０５】
識別番号保持レジスタＺＤ２０２の内容は、識別番号ＺＤ２０３として電力コンテキスト記憶装置ＺＡ１０５に供給され、電力コンテキスト記憶装置ＺＡ１０５からは識別番号ＺＤ２０３に対応する電力制御情報ＺＡ１０３を取得し、これを電力制御情報保持レジスタＺＤ２０４に記録する。
【０１０６】
差分計算器ＺＥ１０１は、マイクロプロセッサ１０００の電力状態ＺＥ１０２と、電力制御情報ＺＡ１０３の電力情報との差分を計算する。ここで、電力状態として電源電圧について例示する。この場合には、差分計算機ＺＥ１０１は、両者の電圧差を計算し出力することとなる。電力−遷移時間テーブルＺＥ１０３は、入力する電力状態値の変更に要する時間を計算し出力する。例えば、電圧差０.１ｍＶの変更に要する遷移時間を表の形で
記憶しておき、出力する。当然ながら表は書き換え可能なレジスタやメモリで構成してもよいし、組み合わせロジックにより構成してもよい。
【０１０７】
比較器ＺＥ１０４は、電力−遷移時間テーブルＺＥ１０３の出力と、電力制御情報ＺＡ１０３の内容における通常時最小時間ＺＥ１０５とを比較し、通常時最小時間ＺＥ１０５のほうが小さい場合には、電力変更要求ＺＥ１０６を電力状態変更装置ＺＡ１０１に通知する。
【０１０８】
通常時最小時間ＺＥ１０５は、該当プログラムが割り込み等の緊急時を除く通常時において、各切り替え単位ごとに実行された最小の時間単位を保存する。
【０１０９】
このようにして、該当プログラムの切り替え時間が、目標とする電力状態への遷移時間より短い場合は、電力状態の変更を抑制することができる。
【０１１０】
図１９には、通常最小時間ＺＥ１０５の計算手順を示す。
【０１１１】
手順ＺＥ２０１において、プログラムの切り替え後にタイマを用いたプログラム割り当て時間の計測を開始する。これは新たにタイマを初期化し計数を行う方法や、常時稼動している共用タイマを用い、プログラム開始時のタイマ値を記録する方法で良い。
【０１１２】
手順ＺＥ２０２において、新たなプログラムの切り替えまで処理を待ち合わせる。
【０１１３】
手順ＺＥ２０２にてプログラムの切り替え検出後、手順ＺＥ２０３において、今回のプ
ログラム切り替えが通常の切り替えか、割り込み等による緊急の切り替えかを判定する。通常の切り替えでない場合は、今回のプログラム割り当て時間を用いた最小時間ＺＥ１０５の計算と記録を行わない。これにより、通常のプログラム動作中の切り替えではない特別な場合の影響を除外することができる。
【０１１４】
手順ＺＥ２０３において今回のプログラム切り替えが通常の切り替えであることを判定した後、手順ＺＥ２０４において、プログラム割り当て時間を算出する。新たなタイマを初期化した場合には、その時点でのタイマ値そのものを使用し、常時稼動している共用タイマを使用した場合は、現在のタイマ値から記録済みのプログラム開始時のタイマ値を減算することで割り当て時間を算出する。
【０１１５】
手順ＺＥ２０５では、電力制御情報保持レジスタＺＤ２０４に格納された通常最小時間ＺＥ１０５の値と、上記ＺＥ２０４で算出した今回のプログラム割り当て時間を比較し、より小さい側の値を、手順ＺＥ２０６において、通常最小時間として電力コンテキスト記憶装置ＺＡ１０５の該当フィールドに格納する。
【０１１６】
続く手順ＺＥ２０７においてプログラム切り替え手順を行う。
【０１１７】
（第６の実施形態）
図２０は、第６の実施形態による電力制御装置６００の構成を示すブロック図である。この電力制御装置６００は、図１および図７に示した電力制御装置１００，２００と同様、マイクロプロセッサ１０００の内部に設けられてもよいし、マイクロプロセッサ１０００の外部に設けられてもよい。
【０１１８】
電力コンテキスト参照装置ＺＢ１０１は電力スケジューラＺＦ１０１を含んでいる。電力スケジューラＺＦ１０１は、電力コンテキスト記憶装置ＺＡ１０５からプログラムの識別番号に応じた電力制御情報ＺＡ１０３を取得し、これを元に電力状態変更のための計算を行い、電力制御情報ＺＡ１０３を電力状態変更装置ＺＡ１０１に供給し、プログラム割り当て情報ＺＦ１０２をプログラム割り当て装置ＺＦ１０３に供給する。
【０１１９】
電力状態変更装置ＺＡ１０１は、供給された電力制御情報ＺＡ１０３に基づき、マイクロプロセッサ１０００の電力変更を行う。
【０１２０】
プログラム割り当て装置ＺＦ１０３は、供給されたプログラム割り当て情報ＺＦ１０２で識別されるプログラムをマイクロプロセッサ１０００に割り当てる。
【０１２１】
図２１に電力スケジューラＺＦ１０１の内部構成の一例を示す。
【０１２２】
電力スケジューラＺＦ１０１は、マイクロプロセッサ１０００に割り当てるべきプログラム情報を保有し割り当て制御を行うステート制御マシンＺＦ２０１により、割り当て可能なプログラム毎の識別番号をＩＤ保持レジスタＺＦ２０２経由で電力コンテキスト記憶装置ＺＡ１０５に供給し、電力制御情報ＺＡ１０３を受け取り、電力制御情報保持レジスタＺＤ２０４に格納する。
【０１２３】
減算器ＺＦ２０３は、電力制御情報保持レジスタＺＤ２０４から出力される電力制御情報ＺＡ１０３と、マイクロプロセッサ１０００の電力状態ＺＦ２０４との差分を計算する。ここで電力制御情報として供給電圧（電源電圧）を想定する場合は、電圧差が出力される。
【０１２４】
同様に、減算器ＺＦ２０６は、電力状態ＺＦ２０４と最小差候補保持レジスタＺＦ２０
５との差分を計算する。
【０１２５】
比較器ＺＦ２０７は、減算器ＺＦ２０３の出力と減算器ＺＦ２０６の出力との比較を行い、減算器ＺＦ２０３の出力値のほうが小さい場合は、書き込み要求ＺＦ２０８をアサートする。
【０１２６】
書き込み要求ＺＦ２０８は、ステート制御マシンＺＦ２０１からのタイミング調整信号との論理積（ＡＮＤ）をとった上で、最小差候補保持レジスタＺＦ２０５に通知され、最小差候補保持レジスタＺＦ２０５は、その時点の電力制御情報ＺＡ１０３を、新たな最小差候補として記憶する。
【０１２７】
以上の手順を割り当て候補のプログラム識別番号に対して行うことで、最小差候補保持レジスタＺＦ２０５には、現在の電力情報と最も小さい差分値をもつプログラム識別番号と、電力状態制御情報ＺＡ１０３を記憶することができる。
【０１２８】
ステート制御マシンＺＦ２０１におけるプログラム探索完了に伴い、電力変更要求ＺＦ２０９と、プログラム切り替え要求ＺＦ２１０をアサートし、電力状態変更装置ＺＡ１０１とプログラム割り当て装置ＺＦ１０３に電力とプログラムの変更要求として通知され、電力とプログラム割り当て状態がそれぞれ変更される。
【０１２９】
図２２には、本実施例の実施手順の一例を示す。
【０１３０】
手順ＺＦ３０１において、次に割り当てられるプログラムの識別番号に応じた電力制御情報ＺＡ１０３を取得する。
【０１３１】
次に手順ＺＦ３０２において、電力制御情報ＺＡ１０３の電力値が、マイクロプロセッサ１０００の現在の電力状態値ＺＦ２０４と最も近いかを比較し、より近い場合は手順ＺＦ３０３において、該当のプログラム識別番号と電力制御情報ＺＡ１０３を、次にプログラム割り当てすべき候補として最小差候補保持レジスタＺＦ２０５に保存する。
【０１３２】
手順ＺＦ３０４により、全てのプログラムの識別番号に対し最小差比較を行ったかを確認し、全てのプログラムの比較検索が完了した場合には、手順ＺＦ３０５により、次に割り当てるべきプログラムとして、最小差候補保持レジスタＺＦ２０５の内容に基づき、電力状態の変更を電力状態変更装置ＺＡ１０１に要求し、手順ＺＦ３０５にて最小差候補保持レジスタＺＦ２０５の内容に基づき、次に割り当てるべきプログラムについての割り当て要求をプログラム割り当て装置ＺＦ１０３に要求する。
【０１３３】
なお、手順ＺＦ３０５とＺＦ３０６は実装方式により入れ替わっても良い。
【０１３４】
図２３に本実施例の動作タイミングを示す。
【０１３５】
プログラムＡ実行中において、電力スケジューラＺＦ１０１は、プログラム割り当て可能なプログラムＢ、Ｃ、Ｄについて、現在の電力状態（ここでは電圧状態）との差分が最も小さいプログラムを探索する。プログラムＢの電力差が最小であることを判定し、次のプログラム切り替え対象としてプログラムＢをプログラム割り当て装置ＺＦ１０３に通知するとともに、電力状態の変更を電力状態変更装置ＺＡ１０１に通知する。
【０１３６】
同様に、プログラムＣ、Ｄをもそれぞれの時点で探索を行いプログラム割り当てと電力変更を適時行う。
【０１３７】
割り当て可能なプログラムＡ〜Ｄが一通り実行された後、新たにプログラムＡ〜Ｄがプログラム割り当ての候補として再度スケジューラにより認識される。一周期最終のプログラムＤ実行中において、次に最も電力差が小さいプログラムはＤであることを、電力スケジューラＺＦ１０１は、電力状態の比較から判定し、プログラムＤを割り当てる。
【０１３８】
引き続くプログラムＤの実行中において、次に割り当てるべき候補として、同様に、電力状態の差が最小となるプログラムＣが選定される。この場合、図２３のタイミングで示すように、第３の実施形態で示した電力先行制御装置ＺＣ１０１を用いて、プログラムＣに切り替わる前に、電力状態を変更し、性能劣化を抑制することも可能である。
【０１３９】
（第７の実施形態）
図２４に電力スケジューラＺＦ１０１の内部構成の別の一例を示す。
【０１４０】
電力スケジューラＺＦ１０１は、マイクロプロセッサ１０００に割り当てるべきプログラム情報を保有し割り当て制御を行うステート制御マシンＺＦ２０１により、割り当て可能なプログラム毎の識別番号をＩＤ保持レジスタＺＦ２０２経由で電力コンテキスト記憶装置ＺＡ１０５に供給し、電力制御情報ＺＡ１０３を受け取り、電力制御情報保持レジスタＺＤ２０４に格納する。
【０１４１】
減算器ＺＧ１０１は、前回確定された最小差を保持する前最小値レジスタＺＧ１０５と電力制御情報ＺＡ１０３との差を計算する。
【０１４２】
同様に減算器ＺＧ１０２は、前回確定の最小差を保持する前最小値レジスタＺＧ１０５と、現在の最小差を保持する最小差候補保持レジスタＺＦ２０５との差を計算する。
【０１４３】
比較器ＺＧ１０３は、減算器ＺＧ１０１と減算器ＺＧ１０２の結果比較を行い、減算器ＺＧ１０１の値が小さい場合は、書き込み要求を最小差候補保持レジスタＺＦ２０５に通知し、最小差候補保持レジスタＺＦ２０５は現在検索中の電力制御情報ＺＡ１０３を記録する。
【０１４４】
マイクロプロセッサ１０００に割り当て可能なプログラムが一通り検索し終わると、ステート制御マシンＺＦ２０１は、最小差候補保持レジスタＺＦ２０５の内容を前最小値レジスタＺＧ１０５に書き込む制御を行い、前最小値レジスタＺＧ１０５の内容を並び替え済みプログラムテーブルＺＧ１０４に書き込む制御を行う。
【０１４５】
以上の手順で最も電力差の小さいプログラムの抽出が行え、続いて次に電力差が小さいプログラムというように順次、電力差の小さいプログラムの抽出を継続する。結果的に、並び替え済みプログラムテーブルＺＧ１０４には、電力差の小さいプログラム順にプログラム識別情報が記録される。当然ながら比較方法を変更することで、電力差の大きい順に並び替えることも可能である。また並び替え処理をハードウェアではなく、ソフトウェア処理により行うことも可能である。
【０１４６】
最終的にステート制御マシンＺＦ２０１は、並び替え済みプログラムテーブルＺＧ１０４の順序に従い、電力制御状態の変更要求ＺＡ１０３と、プログラム割り当て要求ＺＦ１０２を、電力状態変更装置ＺＡ１０１と、プログラム割り当て装置ＺＦ１０３に通知し、電力状態変更とプログラム切り替えを行う。
【０１４７】
（第８の実施形態）
図２５は、第８の実施形態による電力制御装置８００の構成を示すブロック図である。この電力制御装置８００は、図１および図７に示した電力制御装置１００，２００と同様
、マイクロプロセッサ１０００の内部に設けられてもよいし、マイクロプロセッサ１０００の外部に設けられてもよい。
【０１４８】
電力コンテキスト参照装置ＺＢ１０１は電力スケジューラＺＦ１０１を含んでいる。電力スケジューラＺＦ１０１は、電力コンテキスト記憶装置ＺＡ１０５からプログラムの識別番号に応じた電力制御情報ＺＡ１０３を取得し、これを元に電力状態変更のための計算を行い、電力制御情報ＺＡ１０３を電力状態変更装置ＺＡ１０１に供給し、プログラム割り当て情報ＺＦ１０２をプログラム割り当て装置ＺＦ１０３に供給する。
【０１４９】
電力状態変更装置ＺＡ１０１は、供給された電力制御情報ＺＡ１０３に基づき、マイクロプロセッサ１０００の電力変更を行う。プログラム割り当て装置ＺＦ１０３は、供給されたプログラム割り当て情報ＺＦ１０２で識別されるプログラムをマイクロプロセッサ１０００に割り当てる。
【０１５０】
さらに、負荷電力判定装置ＺＨ１０１は、マイクロプロセッサ１０００の電力状態ＺＨ１０２と負荷状態ＺＨ１０３を入力とし、両者の比較判定処理により、現在の電力状態と負荷状態の組み合わせではマイクロプロセッサ１０００が誤動作を発生しうると判定した場合には、電力制御ハザード通知ＺＨ１０４を電力スケジューラＺＦ１０１に出力する。これは、電力スケジューラＺＦ１０１に対するプログラム切り替え要求の意味をも持ち、電力スケジューラＺＦ１０１は、電力制御ハザード通知ＺＨ１０４を受け取ると、現在の電力状態で割り当て可能なプログラムを探索し、プログラム割り当てをプログラム割り当て装置ＺＦ１０３に通知する。さらに可能であれば、電力を低下させるための電力状態の変更通知を電力状態変更装置ＺＡ１０１に通知する。
【０１５１】
図２６に負荷電力判定装置ＺＨ１０１の内部構成の一例を示す。
【０１５２】
負荷電力変換表ＺＨ２０１は、入力される負荷状態ＺＨ１０３に応じて、動作可能な電力状態値を出力する。負荷状態ＺＨ１０１は、マイクロプロセッサ１０００の現在の動作状況を示すものであり、メモリアクセス数、命令実行数、動作周波数などを含む。例えば負荷状態ＺＨ１０１として、メモリアクセス数や命令実行数や動作周波数を想定する場合、それぞれの実行負荷状態においてマイクロプロセッサ１０００が誤動作せず動作可能な電源電圧値を出力する。当然ながら表ＺＨ２０１は書き換え可能なレジスタやメモリで構成してもよいし、組み合わせロジックにより構成してもよい。
【０１５３】
比較器ＺＨ２０２は、負荷電力変換表ＺＨ２０１の出力と、マイクロプロセッサ１０００の現在の電力状態ＺＨ１０２とを比較し、現在の電力状態の方が小さければ、電力制御ハザードＺＨ１０４を電力スケジューラＺＦ１０１に通知する。
【０１５４】
電力スケジューラＺＦ１０１は、電力状態が誤動作を起こさない状態に遷移するための待ち状態を発生させることなく、別のプログラムを実行させることができ、待ち合わせによるシステムの性能劣化を防ぐことができる。
【０１５５】
このようにして、負荷状態に基づく電力制御方式を有するマイクロプロセッサ１０００においても、マイクロプロセッサ１０００の誤動作を招くことなく、かつ、性能劣化を抑制した電力制御が可能となる。
【０１５６】
図２７には、本実施例の実施手順の一例を示す。
【０１５７】
手順ＺＨ３０１にて、マイクロプロセッサ１０００の電力状態と負荷状態とを随時比較し、誤動作を引き起こす電力状態に近づかないことを監視する。電力状態に余裕がなくな
った場合は、手順ＺＨ３０２に進み、現在の電力状態で動作可能なプログラムが存在するかを検索する。
【０１５８】
現在の電力状態で動作可能なプログラムが存在しない場合は、手順ＺＨ３０３にて、動作負荷に対して電力状態が適切になるまで待ち合わせを行う。
【０１５９】
現在の電力状態で動作可能なプログラムが存在する場合は、手順ＺＨ３０４にて、動作可能なプログラムに割り当てを変更し、マイクロプロセッサ１０００の実行を継続する。
【０１６０】
なお、現在の電力状態の判定により誤動作を発生しうると判定されたプログラムについては、次回のプログラム割り当て時により安全に動作させるために、電力コンテキスト記憶装置ＺＡ１０５の内容を安全な値で更新することも可能である。
【０１６１】
例えば、電力コンテキスト記憶装置ＺＡ１０５において、該当プログラム用の電力制御情報のうち、電圧情報が０.９Ｖで記録されていた場合を考える。この場合に該当プログ
ラムが電力制御ハザードを発生させた場合には、上記電圧情報をより安全な電力条件１.
０Ｖに書き換えることで、次回のプログラム割り当て時にはより安全に稼動させることができる。
【０１６２】
この動的な電力条件の変更は、例えば第４の実施形態において示した、電力割り当ての成功および失敗判定機構と組み合わせることは容易である。
【０１６３】
（第９の実施形態）
図２８は、第９の実施形態による電力制御装置９００の構成を示すブロック図である。この電力制御装置９００は、複数の物理プロセッサを有するシステムにおいて、プロセッサの搭載数に依存することなく、複数のプログラム実行時の総消費電力を効率的に削減することを実現するための装置である。
【０１６４】
電力スケジューラＺＦ１０１は、電源グループ記憶装置ＺＩ１０１からの電源グループ情報ＺＩ１０２を取得し、これを元に各プログラムを割り当て実行すべきプロセッサを決定し、割り当てるべきプログラム情報をプログラム割り当て装置ＺＦ１０３に通知し、電力状態の変更を電力状態変更装置ＺＡ１０１に通知する。
【０１６５】
図２９に電源グループ情報ＺＩ１０２の記憶構成方法の例を示す。
【０１６６】
図２９（ａ）は、物理的なプロセッサの識別番号ごとに記憶領域を用意し、該当プロセッサがいずれの電源グループに所属するかを表す方式である。図２９（ａ）の例では、プロセッサ番号０とプロセッサ番号３のプロセッサは物理的に電源グループ０に所属し、プロセッサ番号１のプロセッサは電源グループ１に所属し、プロセッサ番号２のプロセッサは電源グループ２に所属する。この方式では物理プロセッサの個数に応じた記憶領域が必要となる。この例では、４つのプロセッサは３種類の電源グループで物理的に設計実装されており、独立に状態変更制御可能な電源グループが３種類であることを示している。例えばこの例では、プロセッサ番号０とプロセッサ番号３の電源電圧を個別に変更することはできない。従って、プロセッサ番号０とプロセッサ番号３には近い電力条件でのプログラムを割り当てることが消費電力の削減上得策となる。
【０１６７】
図２９（ｂ）は、電源グループごとに記憶領域を用意し、該当電源グループにいずれのプロセッサ番号のプロセッサが所属するかを表す方式である。図２９（ｂ）では、記憶値が１の場合に該当プロセッサが該当電源グループに所属していることを表している。したがって、たとえば電源グループ番号０には、プロセッサ番号０とプロセッサ番号３のプロ
セッサが所属することになる。
【０１６８】
図２９（ａ），（ｂ）ともに、記憶する情報の内容は同一であり、記憶領域やプロセッサ数、電源グループ数の拡張性を考慮しいずれかを適用可能である。
【０１６９】
図３０に、複数の物理プロセッサと電源グループ記憶装置の物理配置例を示す。図３０（ａ）は、図２９（ａ）に対応した構成例を示しており、それぞれのプロセッサ内に電源グループの記憶装置を有する。一方、図３０（ｂ）は、図２９（ｂ）に対応した構成例であり、プロセッサ群で共通の電源グループの記憶装置を有する。図３０（ａ）（ｂ）の構成例は同一のＬＳＩ上に複数のプロセッサが搭載されている例を記載しているが、異なるＬＳＩ間のプロセッサ群でもよい。また、その他のロジック部は構成例でありなくてもよい。
【０１７０】
なお、上述の例では、複数の物理プロセッサを有するシステムにおいて複数のプログラム実行時の総消費電力を効率的に削減することを目的に各プログラムを割り当て実行すべきプロセッサを決定したが、複数の物理プロセッサを有するシステムにおいて複数のプログラム実行時の発熱量を効率的に分散させることを目的に各プログラムを割り当て実行すべきプロセッサを以下のように決定することができる。
【０１７１】
１つめの方法は、物理プロセッサ番号の並びが従来通りである場合において、プログラムの割り当てを次のように電力状態に基づき交互に割り当てる方法である。この方法では、図３１（ａ）に示すように、電力が最も高いものを＃０へ割り当て、電力が最も低いものを＃１へ割り当て、電力が２番目に高いものを＃２へ割り当て、電力が２番目に低いものを＃３へ割り当て、…というように割り当てを行う。
【０１７２】
２つめの方法は、物理プロセッサ番号を不連続に設計配置する方法である。この方法では、図３１（ｂ）に示すように、物理プロセッサ番号を行方向あるいは列方向に不連続（固定値でない増分関係）に位置づける。そして、プログラムの割り当ては、消費電力の大きさ順に物理プロセッサ番号に順番に割り当てる。プロセッサ番号が不連続であるため、プログラムは自然に分散される。
【産業上の利用可能性】
【０１７３】
本発明は、単一または複数構成からなるマイクロプロセッサ（マイクロコンピュータ，マイクロコントローラ，ディジタルシグナルプロセッサを含む）、シーケンサ、静的構成論理、動的再構成可能論理、などの情報処理装置一般に適用可能である。
【符号の説明】
【０１７４】
ＺＡ１０１  電力状態変更装置
ＺＡ１０２  電力制御レジスタ
ＺＡ１０３  電力制御情報
ＺＡ１０４  プロセッサバスアクセス制御装置
ＺＡ１０５  電力コンテキスト記憶装置
ＺＡ１０６  電力コンテキスト退避復帰制御装置
ＺＢ１０１  電力コンテキスト参照装置
ＺＣ１０１  電力先行制御装置
ＺＤ１０１  投機的電力状態変更装置
ＺＦ１０１  電力スケジューラ
ＺＦ１０３  プログラム割り当て装置
ＺＨ１０１  負荷電力判定装置
ＺＩ１０１  電力グループ記憶装置
【図１】
2010250858.tif 000003
【図２】
2010250858.tif 000004
【図３】
2010250858.tif 000005
【図４】
2010250858.tif 000006
【図５】
2010250858.tif 000007
【図６】
2010250858.tif 000008
【図７】
2010250858.tif 000009
【図８】
2010250858.tif 000010
【図９】
2010250858.tif 000011
【図１０】
2010250858.tif 000012
【図１１】
2010250858.tif 000013
【図１２】
2010250858.tif 000014
【図１３】
2010250858.tif 000015
【図１４】
2010250858.tif 000016
【図１５】
2010250858.tif 000017
【図１６】
2010250858.tif 000018
【図１７】
2010250858.tif 000019
【図１８】
2010250858.tif 000020
【図１９】
2010250858.tif 000021
【図２０】
2010250858.tif 000022
【図２１】
2010250858.tif 000023
【図２２】
2010250858.tif 000024
【図２３】
2010250858.tif 000025
【図２４】
2010250858.tif 000026
【図２５】
2010250858.tif 000027
【図２６】
2010250858.tif 000028
【図２７】
2010250858.tif 000029
【図２８】
2010250858.tif 000030
【図２９】
2010250858.tif 000031
【図３０】
2010250858.tif 000032
【図３２】
2010250858.tif 000033
【図３３】
2010250858.tif 000034
【図３４】
2010250858.tif 000035
【図３５】
2010250858.tif 000036
【図３１】
2010250858.tif 000037