本発明は情報処理装置における電力制御装置に関する。上記情報処理装置には、単一または複数構成からなるマイクロプロセッサ(マイクロコンピュータ,マイクロコントローラ,ディジタルシグナルプロセッサを含む)、シーケンサ、静的構成論理、動的再構成可能論理、などが含まれる。本明細書では主にプロセッサを例として取り扱うが、本発明は上記情報処理装置一般に適用可能である。
近年、携帯電話やデジタルテレビ等のデジタル機器において、音声、オーディオ、動画や符号処理等の様々なデジタル処理の需要が増加している。これら処理の実現のためにマイクロプロセッサなどの情報処理装置が一般に利用されているが、アプリケーション需要の増大に応じて回路規模や動作周波数や搭載プロセッサ数が増加し消費電力は増加の一途をたどっている。
従来は消費電力削減のため、ハードウェアによるクロックゲーティング制御、動作上必要のないブロックをソフトウェアにより停止させる制御、ソフトウェアあるいはハードウェアにより周波数や電圧状態の変更をプログラム単位で行う制御(特開平8−152945号公報)などが一般に実現されている。なお、本明細書における「プログラム単位」という表現は、プロセス単位、スレッド単位、タスク単位を含むものとする。
また近年は、プロセッサの実行状態の長周期の平均負荷状況に応じて周波数や電圧状態を変更する制御が行われている(特開平8−6681号公報)。
特開平8−152945号公報 特開平8−6681号公報
しかしながら上記従来のプログラム単位の消費電力削減方法では、複数のプログラムが同時並列にあるいは時間的に切り替えながら並行に動作するシステムにおいて効率の良い消費電力削減が行えない。
例えば、1つの物理的なプロセッサにおいて2つのプログラムを時間的に切り替えながら並行に動作させるシステムの場合の課題は次の通りである。一方のプログラムが高い電源電圧での動作を必要とする状態であり他方のプログラムが低い電源電圧での動作を必要としている条件下においてプログラムの切り替えが頻繁に発生する場合、従来のプログラム単位の電源電圧変更方法ではプログラムの切り替え時間に電源電圧の変更が追随できないことが考えられる。この場合、電源電圧の変更完了のための待ち時間が発生するが、リアルタイム性が重要視される組み込み用途ではこの待ち時間はシステム性能の劣化や性能保証を損なう致命的な問題となる。したがってこのような用途においてプログラム単位の単純な電力制御を適用することは現実にはできない。これは電源電圧だけでなくクロック周波数の変更においても同じである。理想的な電力状態(ここでは電圧)の変更と、現実的な遷移時間を伴う電力状態の変更について図32,図33にそれぞれ示す。
他方、仮に電源電圧やクロック周波数の変更がプログラムの切り替え頻度に追随できた場合でも、多数のプログラムを並列あるいは並行に動作させるシステムにおいてプログラム単位の電力制御では、プログラム群全体の実行時に最適な電源電圧や閾値電圧などの電圧を供給することによる消費電力削減を実現できるとは限らない。例えば、4つのプログラムを並行に動作させるシステムにおいて、2つのプログラムが高い電圧で、残り2つのプログラムが低い電圧で動く場合を考える。この場合、最も電力効率が高いプログラムの実行過程は、高い電圧の2つのプログラムが連続して実行され、残り低い電圧の2つのプログラムが連続して実行される形態が続く場合である。しかしながら、プログラム単位に着目した電力制御方式では、高い電圧設定のプログラムと低い電圧設定のプログラムが交互に実行される可能性があり、この場合には、電圧状態変更自体による電力損失がより多く発生したり、電圧状態変更のための待ち回数がより多く発生したりして、消費電力やシステム性能の観点から最適な状態にはならない。消費電力の観点からの効率的なスケジューリングと非効率的なスケジューリングの遷移過程について図34,図35にそれぞれ示す。
上記の課題を解決するために、プログラム単位の電力削減ではなく、比較的長周期(例えばミリ秒オーダー)における平均的な負荷状態に応じて供給電圧や動作周波数を変更する方法が考えられる。この場合、長周期での電力制御となるため、頻繁にプログラムが切り替わるリアルタイム処理に適したより短時間で電力条件を変更する効率の良い電力制御は行えない。また、電力制御はプログラムの実行順序には無関係のため、先に示したように、必ずしも最適な順番でプログラムが実行されるとは限らず、プログラム群全体で最適な消費電力になるとは限らない。さらに、過去の平均情報に基づく電力制御であるため、先行的に電力変更を行うこともできない。平均情報の傾斜関数を利用した予測に基づき電力を変更することは可能であるが、将来実行されることが確定的なプログラムがあったとしてもそれにあわせて適切な電力状態に先行的に変更できるものではない。
上記では1つの物理プロセッサにおける複数プログラムの実行時について従来の電力制御の課題を示したが、複数の物理プロセッサを有するシステムにおいても同様に従来の電力制御方法ではプログラム単位の特性に基づきプログラム群全体の消費電力を効率的に削減することはできない。
例えば、物理的なプロセッサが2つ存在しそれぞれが電力制御可能であっても、ソフトウェアの実行順序や実行されるプロセッサと電力状態の変更との関係が最も効率的になるとは限らない。
例として、プロセッサAとプロセッサBが存在し、高い動作電圧を必要とするプログラムPH1とPH2、低い動作電圧でよいプログラムPL1とPL2が存在する場合を考える。ここで仮にプロセッサAとプロセッサBがいずれも高い電圧から動作開始する場合を考えると、プログラム単体での電力制御方法では最適なプログラム割り当て実行と電力制御が判断できない。システム全体で最も電力効率が良くなるのは、プロセッサAまたはBの片側に低い動作電圧のプログラムPL1とPL2を実行させる場合であるが、例えば現在に最も近い電圧からプログラム割り当てを行うとPH1とPH2がプロセッサAおよびBに割り当てられることになるため、その後PL1とPL2がプロセッサAおよびBに割り当てられ、電源状態の変化は2回発生することとなり、先に示した最適状態とはならない。PL1とPL2が先にプロセッサAとBにそれぞれ割り当てられる場合も同様である。このように、電力制御がプログラム単位で行われる限り、システム全体を考慮した消費電力の削減は充分に行えない。
本発明による電力制御装置は、情報処理装置の内部で消費される電力を制御する装置であって、プログラムの識別情報で区別される記憶領域にプログラム毎の電力制御情報を格納する電力コンテキスト記憶手段と、前記電力コンテキスト記憶手段から所望のプログラムについての電力制御情報を参照する電力コンテキスト参照手段と、前記電力コンテキスト参照手段により参照された電力制御情報に基づいて、前記情報処理装置の内部で消費される電力の状態を変更する電力状態変更手段とを備える、ことを特徴とする。
上記電力制御装置は、前記情報処理装置において実行中のプログラムに対する電力制御情報を記憶する電力制御レジスタをさらに備え、前記電力コンテキスト参照手段は、前記情報処理装置の命令実行とは並列に、前記電力制御レジスタの内容を電力コンテキスト記憶手段との間で退避あるいは復帰する電力コンテキスト退避復帰制御手段を含み、前記電力状態変更手段は、前記電力制御レジスタに記憶されている電力制御情報に基づいて、前記情報処理装置の内部で消費される電力の状態を変更する、ことが好ましい。これにより、複数のプログラムを頻繁に切り替えて処理するシステムにおいても、プログラム処理性能を劣化させることなく電力制御情報を退避および復帰することができ、きめ細かいより効率的な電力制御が可能となる。
上記電力制御装置において、前記電力コンテキスト参照手段は、前記情報処理装置において実行中のプログラムと異なる第1のプログラムの電力制御情報を前記第1のプログラムの非実行時に参照する電力コンテキスト先行参照手段を含む、ことが好ましい。これにより、複数のプログラムを実行するシステムにおいても、該当プログラムの割り当て実行前に電力状態変更のための処理やプログラム割り当てのためのスケジュール処理を事前に行うことができ、プログラム処理性能を劣化させることなく電力制御を実施できる。
上記電力制御装置において、前記電力状態変更手段は、前記電力コンテキスト先行参照手段により参照された前記第1のプログラムの電力制御情報に基づいて、前記第1のプログラムの実行に先立って、電力状態の変更を前もって行う、ことが好ましい。これにより、第1のプログラムを実行可能な電力状態にプロセッサをより早く変更することができ、電力状態変更のための待ち合わせによる性能劣化を抑制することができる。
上記電力制御装置において、前記電力コンテキスト先行参照手段は、前記第1のプログラムの実行に先立って、前記第1のプログラムに対応した電力制御情報を参照し、電力状態変更時間とプログラム割り当て時間の情報に基づき、電力状態の変更が有効でないと判断した場合には、電力状態の変更を禁止する、ことが好ましい。これにより、プロセッサ状態と電力制御状態の不整合による性能劣化を効率的に抑制することができる。
上記電力制御装置において、前記電力制御情報は、過去の電力割り当ての成功率あるいは失敗率を含み、前記電力コンテキスト参照手段は、前記電力制御情報の成功率あるいは失敗率に基づいて、該当プログラムを実行する際の電力状態の変更を行うか否かを決定する投機的電力状態変更判定手段を含む、ことが好ましい。これにより、プロセッサ状態と電力制御状態の不整合による性能劣化を効率的に抑制することができる。
上記電力制御装置において、前記電力コンテキスト参照手段は、前記電力コンテキスト記憶手段に記憶されたプログラム毎の電力制御情報から、現在の電力状態と電力変化が最小となるプログラムを選択し前記情報処理装置に割り当てるプログラムスケジュール手段を含む、ことが好ましい。これにより、複数のプログラム実行時の総消費電力を効率的に削減することができる。
上記電力制御装置において、前記電力コンテキスト参照手段は、前記電力コンテキスト記憶手段に記憶されたプログラム毎の電力制御情報から、各プログラム間の電力変化が最小となるプログラム順に並び替え、前記情報処理装置に割り当てるプログラムスケジュール手段を含む、ことが好ましい。これにより、複数のプログラム実行時の総消費電力を効率的に削減することができる。
上記電力制御装置において、前記情報処理装置の現在の動作状況を検出する負荷検出手段と、前記情報処理装置の現在の電力状態を検出する電力状態検出手段と、前記負荷検出手段が検出した負荷と前記電力状態検出手段が検出した電力情報から、現在のプログラムの動作継続を行えない事を事前に判断する負荷電力判定手段と、前記継続が行えない事を判断した場合に、プログラムの切り替えを行うプログラムスケジュール手段とをさらに備える、ことが好ましい。これにより、電力状態変更の待ち合わせによる性能劣化を抑制できると同時に、性能劣化が少ないためより積極的に電力状態の変更制御を実施することができる。
本発明の別の電力制御装置は、複数の物理プロセッサの内部で消費される電力を制御する装置であって、物理プロセッサが物理的に所属する電源グループを識別する情報を記憶する電源グループ記憶手段と、前記電源グループ記憶手段の内容に基づき、各々のプログラムをいずれの物理プロセッサに割り当てるかを決定するプログラムスケジュール手段とを備える、ことを特徴とする。これにより、複数の物理プロセッサを有するシステムにおいて、プロセッサの搭載数に依存することなく、複数のプログラム実行時の総消費電力を効率的に削減することができる。
以上のように本発明によれば、複数のプログラムを並列または並行に実行する情報処理システムにおいて、システムの処理性能の劣化を最小にしながら、より効率的にプログラム群全体の実行時の消費電力の削減を実現することができる。
図1は、本発明の第1の実施形態による電力制御装置の構成を示すブロック図である。
図2は、電力コンテキスト記憶装置の論理的な構成例を示す図である。
図3は、電力コンテキスト記憶装置の論理的な構成例を示す図である。
図4は、電力制御情報の論理的な構成例を示す図である。
図5は、電力状態変更装置の詳細な構成例を示す図である。
図6は、電力状態変更装置の詳細な構成例を示す図である。
図7は、本発明の第2の実施形態による電力制御装置の構成を示すブロック図である。
図8は、本発明の第3の実施形態による電力制御装置の構成を示すブロック図である。
図9は、電力先行制御装置の詳細な構成例を示す図である。
図10は、本発明の第3の実施形態に係る電力制御装置の動作タイミングを示す図である。
図11は、本発明の第3の実施形態による電力制御装置の動作手順を説明するためのフローチャートである。
図12は、本発明の第4の実施形態による電力制御装置の構成を示すブロック図である。
図13は、投機的電力状態変更判定装置の詳細な構成例を示す図である。
図14は、本発明の第4の実施形態による電力制御装置の動作手順を説明するためのフローチャートである。
図15は、過去の成功率を計算する手順の一例を示すフローチャートである。
図16は、成功率の計算を行う装置の構成を示すブロック図である。
図17は、プログラムの切り替え時に、プログラムの動作状態に応じた値で、電力コンテキスト記憶装置の情報を更新する装置の構成の一例を示すブロック図である。
図18は、投機的電力状態変更判定装置の詳細な構成例を示す図である。
図19は、通常最小時間の計算手順の一例を示すフローチャートである。
図20は、本発明の第6の実施形態による電力制御装置の構成を示すブロック図である。
図21は、電力スケジューラの詳細な構成例を示す図である。
図22は、本発明の第6の実施形態に係る電力制御装置の動作手順を説明するためのフローチャートである。
図23は、本発明の第6の実施形態に係る電力制御装置の動作タイミングを示す図である。
図24は、電力スケジューラの詳細な構成例を示す図である。
図25は、本発明の第8の実施形態による電力制御装置の構成を示すブロック図である。
図26は、負荷電力判定装置の詳細な構成例を示す図である。
図27は、本発明の第8の実施形態に係る電力制御装置の動作手順を説明するためのフローチャートである。
図28は、本発明の第9の実施形態による電力制御装置の構成を示すブロック図である。
図29は、電源グループ記憶装置の論理的な構成例を示す図である。
図30は、プロセッサと電源グループ記憶装置の物理的な配置例を示す図である。
図31は、熱分散のためのプログラム割り当ての例を示す図である。
図32は、理想的な電圧変更の例を示す図である。
図33は、現実的な遷移時間を伴う電圧変更の例を示す図である。
図34は、消費電力の観点からの効率的なスケジューリングの例を示す図である。
図35は、消費電力の観点からの非効率なスケジューリングの例を示す図である。
符号の説明
ZA101 電力状態変更装置
ZA102 電力制御レジスタ
ZA103 電力制御情報
ZA104 プロセッサバスアクセス制御装置
ZA105 電力コンテキスト記憶装置
ZA106 電力コンテキスト退避復帰制御装置
ZB101 電力コンテキスト参照装置
ZC101 電力先行制御装置
ZC101 電力先行制御装置
ZD101 投機的電力状態変更装置
ZF101 電力スケジューラ
ZF103 プログラム割り当て装置
ZH101 負荷電力判定装置
ZI101 電力グループ記憶装置
以下、本発明の実施形態を図面を参照して詳しく説明する。なお、図面において同一または相当する部分には同一の参照符号を付してその説明は繰り返さない。
以下の実施形態では、情報処理装置として特にマイクロプロセッサへの本発明の適用例について説明する。
(第1の実施形態)
図1は、第1の実施形態による電力制御装置100の構成を示すブロック図である。図1では、電力制御装置100がマイクロプロセッサ1000(情報処理装置)の内部に設けられている場合を示しているが、電力制御装置100をマイクロプロセッサ1000(情報処理装置)の外部に設けることも可能である。
電力コンテキスト記憶装置ZA105は、プロセッサバスアクセス制御装置ZA104に接続されマイクロプロセッサ1000から読み書きを行える。また電力コンテキスト記憶装置ZA105は、電力コンテキスト参照装置ZB101に接続され、電力コンテキスト参照装置ZB101から要求された識別番号に応じた電力制御情報ZA103を電力コンテキスト参照装置ZB101に出力する。
電力状態変更装置ZA101は、電力コンテキスト参照装置ZB101から供給された電力制御情報ZA103に基づき、消費電力削減のためにマイクロプロセッサ1000の電力状態を変更する。
なお、図1では、電力コンテキスト参照装置ZB101がプロセッサバスアクセス制御装置ZA104と並列に電力コンテキスト記憶装置ZA105にアクセスする構成であるが、電力コンテキスト参照装置ZB101がプロセッサバスアクセス制御装置ZA104を経由して電力コンテキスト記憶装置ZA105にアクセスする構成をとっても良い。
本実施例では、後述の第2の実施形態(図7)とは異なり、現在のプログラムのみに対する電力制御情報を示す電力制御レジスタZA102(図7)は必ずしも必要ではなく、電力コンテキスト記憶装置ZA105の情報を元に、電力状態変更装置ZA101の制御を行う。
電力コンテキスト記憶装置ZA105には、単一または複数の物理プロセッサで実行されるプログラム群の電力コンテキストを格納し、これら電力コンテキストを事前に参照し必要に応じて計算を行うことで、システム全体の消費電力を効果的に削減することを可能にする。
当然ながら電力コンテキスト記憶装置ZA105は、SRAM構造による構成やフリップフロップ群により構成することが可能である。また、マイクロプロセッサ1000がアクセス可能なメモリ空間に、電力情報以外の情報と共用配置することも可能である。
図2に、電力コンテキスト記憶装置ZA105の構成例を示す。プログラム毎に電力制御情報ZA103を記憶するために、プログラムを識別するための識別番号(ID)に応じた電力制御情報ZA103の格納領域から構成される。
例えば電力コンテスト記憶装置ZA105をSRAM(Static Random Access Memory)を用いて構成すると、電力制御情報ZA103の読み出しに加え書き込みをも行うことが可能である。
図3には、電力コンテキスト記憶装置ZA105に、電力制御情報ZA103としてプログラムの識別番号(ID)をも記憶する例を示す。
図4には、電力制御情報ZA103の内容例を示すが、必ずしも全てを含む必要はなく、かつ記載内容以外も当然格納可能である。
図4において、電源電圧情報は、例えば情報処理装置の電源供給のための電圧を表し、情報処理装置の動作時の消費電力の削減のための制御に使用する。
閾値電圧情報は、半導体微細プロセスを使用した情報処理装置におけるリーク電力削減のための制御に使用する。
クロック周波数情報は、情報処理装置に供給するクロックの周波数を表し、これを可変にすることにより電力削減を実現する。
クロック停止情報は、動作上不要な回路領域へのクロック供給を停止させることで、不要な電力消費の削減制御に使用する。
Tr停止情報は、動作上不要な信号のトグルを抑制するために、出力Trの停止制御に使用するか、リーク電力削減のためにMOS回路に直列に挿入するパワーゲーティング用Trの停止制御に使用する。
制御対象ブロック情報は、電力制御情報ZA103が示す電力制御を実施する対象ブロックを特定するために使用する。
状態変更成功率情報は、後述するように、投機的な電力状態変更の過去の成功率により電力制御を行うために使用する。
先行状態変更条件情報は、後述するように、電力状態を該当プログラム開始に先行して変更するための起動条件を指定する。
動作モード情報は、電圧や周波数を特定するモード番号を指定する。例えば、高い電圧と高い周波数で稼動する高速動作モード、低い電圧と低い周波数で稼動する低速モードを、モード番号で識別させ、情報量の削減や電力設定の簡易化を行う。
状態変更条件情報は、該当プログラムが電力変更を行うための情報処理装置の状態条件を指定する。例えば、該当プログラムの実行中のアドレス情報や特権レベル状態やキャッシュミス等のメモリアクセス状態などを指定し、これが一致した場合のみ電力変更を起動する。
状態変更許可情報は、該当プログラムが電力変更を行うことを禁止あるいは許可することを指定する。
図5と図6に電力状態変更装置ZA101の一例を示す。図5は、与えられた電源電圧条件や閾値電圧条件に対し、DC−DCコンバータを用いて供給電圧を変更する例である。図6は、クロック周波数情報としての逓倍率条件と分周率条件により、供給クロックを変更する例である。
(第2の実施形態)
図7は、第2の実施形態による電力制御装置200の構成を示すブロック図である。図7では、電力制御装置200がマイクロプロセッサ1000の内部に設けられている場合を示しているが、電力制御装置200をマイクロプロセッサ1000の外部に設けることも可能である。
電力状態変更装置ZA101は、電力制御レジスタZA102に接続され、電力制御レジスタZA102から供給される電力制御情報ZA103の内容に基づき、消費電力削減のためにマイクロプロセッサ1000の電力状態の変更を行う。
電力制御レジスタZA102が保持する電力制御情報ZA103は、電力制御レジスタZA102に接続されたプロセッサバスアクセス制御装置ZA104を経由して読み出し/書き換えを行うことができる。マイクロプロセッサ1000は、実行するプログラム自身で電力制御レジスタZA102の内容を書き換えることで、マイクロプロセッサ1000を適切な電力状態に変更し、消費電力を削減することができる。
マイクロプロセッサ1000は、電力コンテキスト記憶装置ZA105の内容をプロセッサバスアクセス制御装置ZA104を経由して、読み出し/書き換えを行うことができる。
マイクロプロセッサ1000にて実行されるプログラムは、電力制御レジスタZA102の内容を、電力コンテキスト記憶装置ZA105の、プログラム毎に用意された格納領域の内容と入れ替えることで、各プログラム毎に個別の条件での電力制御を実現することができる。
プログラム毎に電力制御情報を用意することで、よりきめ細かい電力制御が可能となり消費電力の削減をより効果的に実現できる。
当然ながら電力コンテキスト記憶装置ZA105は、SRAM構造による構成やフリップフロップ群により構成することが可能である。また、マイクロプロセッサ1000がアクセス可能なメモリ空間に、電力情報以外の情報と共用配置することも可能である。
電力コンテキスト参照装置ZB101は電力コンテキスト退避復帰制御装置ZA106を含んでいる。電力コンテキスト退避復帰制御装置ZA106は、電力制御レジスタZA102および電力コンテキスト記憶装置ZA105に接続され、それぞれの記憶内容を読み出し/書き換えることができる。電力コンテキスト退避復帰制御装置ZA106は、プロセッサバスを占有することなく、電力制御レジスタZA102および電力コンテキスト記憶装置ZA105にアクセス可能であるため、プロセッサの処理性能を落とさずに、電力制御レジスタZA102および電力コンテキスト記憶装置ZA105の内容を入れ替えることができる。
(第3の実施形態)
図8は、第3の実施形態による電力制御装置300の構成を示すブロック図である。この電力制御装置300は、図1および図7に示した電力制御装置100,200と同様、マイクロプロセッサ1000の内部に設けられてもよいし、マイクロプロセッサ1000の外部に設けられてもよい。
電力コンテキスト参照装置ZB101は電力先行制御装置ZC101を含んでいる。電力先行制御装置ZC101は、電力コンテキスト記憶装置ZA105から電力制御情報ZA103を取得し、これを元に電力状態変更のための計算を行い、電力制御情報ZA103を電力状態変更装置ZA101に供給する。
電力状態変更装置ZA101は、供給された電力制御情報ZA103に基づき、マイクロプロセッサ1000の電力状態変更を行う。
図9に電力先行制御装置ZC101の内部構成の一例を示す。
電力先行制御装置ZC101は、ハードウェアによるプログラムスケジューラまたはオペレーティングシステムによるプログラムスケジューラにより、次にマイクロプロセッサ1000で実行すべきプログラムの識別番号ZC201を受け取り、識別番号保持レジスタZC202に格納する。
識別番号保持レジスタZC202の内容は、識別番号ZC203として電力コンテキスト記憶装置ZA105に供給され、電力コンテキスト記憶装置ZA105からは識別番号ZC203に対応する電力制御情報ZA103を取得し、これを電力制御情報保持レジスタZC204に記録する。
比較器ZC205は、マイクロプロセッサ1000の電力状態ZC206と、電力制御情報ZA103の内容を比較し、結果を電力変更タイミング制御器ZC207に通知する。なお、ここでは一例として電力状態ZC206および電力制御情報ZA103は電源電圧を表すものとする。
電力状態ZC206と電力制御情報ZA103との比較により、電力状態ZC206の表す電圧のほうが大きい場合は、セレクタZC208は、プログラムスケジューラからのプログラム切り替え要求ZC209側を選択する。すなわち、プログラムが切り替わるタイミングを待って、電圧状態の変更要求ZC210を電力状態変更装置ZA101に通達する。これにより、高い動作電圧を必要とするプログラムの実行中に、動作可能な電圧以下への状態変更によりマイクロプロセッサ1000が誤動作することを防ぐ。
比較器ZC205の比較結果が、電力状態ZC206の方が低いことを示す場合には、電力変更タイミング制御器ZC207は、プログラム切り替え前に電力変更を行う準備を始める。この例では、ダウンカウンタZC211の起動を行い、この結果が所定の値(ここでは零)になった場合に、セレクタZC208を経由して、電圧状態の変更要求ZC210を電力状態変更装置ZA101に通達する。これにより、該当プログラムに切り替わるより前に、該当プログラムが必要とする電力状態に変更を行うことができる。
図10に本実施例の動作タイミングを示す。ここでは、プログラムAとプログラムBが電力制御情報ZA103として電圧V1、プログラムCとプログラムDが電圧V2を指定している場合を例示する。
プログラムB実行中において、電力状態ZC206は電圧V1であり、プログラムCの電力制御情報ZA103は電圧V2を示している。比較器ZC205は、電力状態ZC206と電力制御情報ZA103の比較結果として、電力状態ZC206のほうが大きいと判断し、セレクタZC208にプログラム切り替え要求ZC209側を選択させる。プログラム切り替え要求ZC209は、プログラム切り替え時にアサートされるため、電力切り替え要求ZC210は、プログラム切り替え時まで通知されない。結果として、プログラムBが実行中断するタイミングまで電力状態の変更が待たされる。
反対にプログラムDの実行時には、比較器ZC205の比較結果は、電力制御情報ZA103側が大きいと判断するため、電力変更タイミング制御器ZC207は、カウンタの計数後、プログラム切り替えに先行して電力状態の変更を開始する。
なお、プログラムAおよびプログラムCの実行中のように、次のプログラム実行時と電力条件が同じ場合は、プログラム切り替え後に電力変更を行っても、プログラム切り替え前に電力変更を行っても、電力状態は同じである。もちろん、比較結果が同じ場合には電力変更制御を実施しないことは当然考えられる。
図11には、本実施例の実施手順の一例を示す。
手順ZC301において、次に割り当てられるプログラムの識別番号に応じた電力制御情報ZA103を取得する。
次に手順ZC302にて、この電力制御情報ZA103とマイクロプロセッサ1000の電力状態ZC206を比較する。電力状態として電圧を仮定した本例では、電力状態ZC206側が低ければ手順ZC303を選択し、高ければ手順ZC304を選択する。
手順ZC303では、通常のスケジューリングによるプログラムの切り替えまで、電力変更を待ち合わせる。
手順ZC304では、電力条件を変更するタイミングの計算を開始する。本例ではタイマZC211によるタイミング調整の例を示した。
手順ZC305では、タイミング条件完了まで電力変更を待ち合わせる。本例ではタイマZC211のカウント値が所定の値になることを条件として示した。
待ち合わせ完了後の手順ZC306では、電力制御情報ZA103に基づき電力状態の変更を電力状態変更装置ZA101に要求する。
(第4の実施形態)
図12は、第4の実施形態による電力制御装置400の構成を示すブロック図である。この電力制御装置400は、図1および図7に示した電力制御装置100,200と同様、マイクロプロセッサ1000の内部に設けられてもよいし、マイクロプロセッサ1000の外部に設けられてもよい。
電力コンテキスト参照装置ZB101は投機的電力状態変更装置ZD101を含んでいる。投機的電力状態変更装置ZD101は、電力コンテキスト記憶装置ZA105から電力制御情報ZA103を取得し、これを元に電力状態変更のための計算を行い、電力制御情報ZA103を電力状態変更装置ZA101に供給する。
電力状態変更装置ZA101は、供給された電力制御情報ZA103に基づき、マイクロプロセッサ1000の電力変更を行う。
図13に投機的電力状態変更装置ZD101の内部構成の一例を示す。
投機的電力状態変更装置ZD101は、ハードウェアによるプログラムスケジューラまたはオペレーティングシステムによるプログラムスケジューラにより、次にマイクロプロセッサ1000で実行すべきプログラムの識別番号ZD201を受け取り、識別番号保持レジスタZD202に格納する。
識別番号保持レジスタZD202の内容は、識別番号ZD203として電力コンテキスト記憶装置ZA105に供給され、電力コンテキスト記憶装置ZA105からは識別番号ZD203に対応する電力制御情報ZA103を取得し、これを電力制御情報保持レジスタZD204に記録する。
比較器ZD205は、電力制御情報ZA103の内容のうち過去の電力変更の成功率ZD206と、成功率の指定限界値ZD207とを比較する。例えば、過去の電力変更の成功率ZD206は連続的に電力変更に失敗した回数で構成し、指定限界値ZD207が3回を表す構成とした場合、過去の成功率ZD206が3回以内であれば、比較器ZD205の出力はアサートされる。
ここでは、比較器ZD205の出力は、電力制御情報ZD204の中の電力変更許可ビットと論理的にANDをとり(ZD208)、その結果を電力変更要求ZD209として、電力状態変更装置ZA101に通知する。
このようにして、過去の電力変更の成功率に基づき、一定条件以上の失敗の場合に、電力状態の変更を抑制することができる。
図14には、本実施例の実施手順の一例を示す。
手順ZD301において、次に割り当てられるプログラムの識別番号に応じた電力制御情報ZA103を取得する。
次に手順ZD302において、電力制御情報ZA103の状態変更許可ビットの内容から、電力制御が許可されたプログラムであるかを判定し、電力制御が許可されたプログラムでない場合は、電力状態の変更要求を行わずに手順を完了する。
電力制御が許可されたと判定された場合は、次に手順ZD303において、電力制御情報ZA103の内容の過去の電力状態変更の成功率から、電力状態の変更制御を実施すべきか抑制すべきかを判定し、抑制すべきであると判定した場合には、電力状態の変更要求を行わずに手順を完了する。反対に変更を実施すべきと判定した場合には、手順ZD304において、電力制御情報ZA103の内容に基づき、電力状態変更装置ZA101に対して、電力状態の変更要求を通知する。
図15には、本実施例において、過去の成功率を計算する例を示す。ここでは成功率として失敗回数を基にした計算を行う例を示す。
手順ZD401において、現在の電力状態と負荷状態の組合せではマイクロプロセッサ1000が誤動作を発生しうるかを余裕度をもとに計算判定する(この手順については第8の実施形態において示す。)
電力状態に余裕がない状態(電力ハザード状態)であると手順ZD401において判定した場合、手順ZD402において、電力制御情報における状態変更成功率に相当する値を増加させる。単純な例としては、電力ハザード状態を検出するごとに1ずつ増加させるが、余裕度に応じて重み付けを付けた値を加算する方法も容易に構成できる。
手順ZD403においては、実装方法に応じて、電力状態に余裕が生じるまで待ち状態に入れることや、割り当て可能なプログラムに切り替える方法を取る。
電力状態に余裕があると手順ZD401にて判定した場合において、さらに手順ZD404にてプログラムの切り替え要求を受けた場合は、さらに続く手順ZD405において、成功率の計算を行う。
手順ZD405において、実装方法の一つとしては単純に値を減算する方法がある。この方法では、失敗や成功の連続度合いとは無関係に、合計値がある閾値を越えるか否かで成功率を計算することができる。
また他の実装方法としては、手順ZD405では電力割り当てが成功している場合には、成功率の値を初期値(たとえば0)にクリアする方法を取ることができる。この場合は、連続してN回失敗した場合にのみ、閾値を越える値とする判定方法を構成できる。
図16は、成功率の計算を行う装置の構成を示すブロック図である。
この例ではセレクタZD501は、電力ハザード状態の場合には、失敗数加算値である値(+1)を供給し、電力ハザード状態でない場合には、成功数減算値である値(−1)を供給する。
加算器ZD502は、電力制御情報ZD204から供給される現在の状態変更成功率の値と、セレクタZD501から供給される加減算値を加算する。
失敗率情報レジスタZD503は、加算器ZD502から供給される値を、プログラム切り替え情報がアサートされた場合に書き込む。さらにこの値により、電力コンテキスト記憶装置ZA105の状態変更成功率のフィールドを更新する。
なお、図17には本実施例のように、プログラムの切り替え時に、プログラムの動作状態に応じた値で、電力コンテキスト記憶装置ZA105の情報を更新する装置の構成を例示する。
なお、本実施例では、投機的に電力変更を行うか否かについて例示したが、電力割り当ての成功および失敗の判定機構を用いれば、より安全に電力の削減を行うことが可能である。例えば電力割り当てが成功している場合には、電力状態の余裕度の計算を行い、電力コンテキスト記憶装置ZA105における該当プログラム用の電力制御情報を更新することができる。例えば電力割り当てが成功しており、現在の電圧が動作条件に対して充分に余裕があることが判定できれば、より低い電圧値で電力コンテキスト記憶装置ZA105の電力制御情報を更新することができる。逆に余裕度が小さい場合はより高い電圧値で更新することができる。これにより、電力割り当ての失敗による性能劣化を減らすとともに、消費電力の削減を動的に実現することができる。
(第5の実施形態)
図18に投機的電力状態変更装置ZD101の内部構成の別の一例を示す。
投機的電力状態変更装置ZD101は、ハードウェアによるプログラムスケジューラまたはオペレーティングシステムによるプログラムスケジューラにより、次にマイクロプロセッサ1000で実行すべきプログラムの識別番号ZD201を受け取り、識別番号保持レジスタZD202に格納する。
識別番号保持レジスタZD202の内容は、識別番号ZD203として電力コンテキスト記憶装置ZA105に供給され、電力コンテキスト記憶装置ZA105からは識別番号ZD203に対応する電力制御情報ZA103を取得し、これを電力制御情報保持レジスタZD204に記録する。
差分計算器ZE101は、マイクロプロセッサ1000の電力状態ZE102と、電力制御情報ZA103の電力情報との差分を計算する。ここで、電力状態として電源電圧について例示する。この場合には、差分計算機ZE101は、両者の電圧差を計算し出力することとなる。電力−遷移時間テーブルZE103は、入力する電力状態値の変更に要する時間を計算し出力する。例えば、電圧差0.1mVの変更に要する遷移時間を表の形で記憶しておき、出力する。当然ながら表は書き換え可能なレジスタやメモリで構成してもよいし、組み合わせロジックにより構成してもよい。
比較器ZE104は、電力−遷移時間テーブルZE103の出力と、電力制御情報ZA103の内容における通常時最小時間ZE105とを比較し、通常時最小時間ZE105のほうが小さい場合には、電力変更要求ZE106を電力状態変更装置ZA101に通知する。
通常時最小時間ZE105は、該当プログラムが割り込み等の緊急時を除く通常時において、各切り替え単位ごとに実行された最小の時間単位を保存する。
このようにして、該当プログラムの切り替え時間が、目標とする電力状態への遷移時間より短い場合は、電力状態の変更を抑制することができる。
図19には、通常最小時間ZE105の計算手順を示す。
手順ZE201において、プログラムの切り替え後にタイマを用いたプログラム割り当て時間の計測を開始する。これは新たにタイマを初期化し計数を行う方法や、常時稼動している共用タイマを用い、プログラム開始時のタイマ値を記録する方法で良い。
手順ZE202において、新たなプログラムの切り替えまで処理を待ち合わせる。
手順ZE202にてプログラムの切り替え検出後、手順ZE203において、今回のプログラム切り替えが通常の切り替えか、割り込み等による緊急の切り替えかを判定する。通常の切り替えでない場合は、今回のプログラム割り当て時間を用いた最小時間ZE105の計算と記録を行わない。これにより、通常のプログラム動作中の切り替えではない特別な場合の影響を除外することができる。
手順ZE203において今回のプログラム切り替えが通常の切り替えであることを判定した後、手順ZE204において、プログラム割り当て時間を算出する。新たなタイマを初期化した場合には、その時点でのタイマ値そのものを使用し、常時稼動している共用タイマを使用した場合は、現在のタイマ値から記録済みのプログラム開始時のタイマ値を減算することで割り当て時間を算出する。
手順ZE205では、電力制御情報保持レジスタZD204に格納された通常最小時間ZE105の値と、上記ZE204で算出した今回のプログラム割り当て時間を比較し、より小さい側の値を、手順ZE206において、通常最小時間として電力コンテキスト記憶装置ZA105の該当フィールドに格納する。
続く手順ZE207においてプログラム切り替え手順を行う。
(第6の実施形態)
図20は、第6の実施形態による電力制御装置600の構成を示すブロック図である。この電力制御装置600は、図1および図7に示した電力制御装置100,200と同様、マイクロプロセッサ1000の内部に設けられてもよいし、マイクロプロセッサ1000の外部に設けられてもよい。
電力コンテキスト参照装置ZB101は電力スケジューラZF101を含んでいる。電力スケジューラZF101は、電力コンテキスト記憶装置ZA105からプログラムの識別番号に応じた電力制御情報ZA103を取得し、これを元に電力状態変更のための計算を行い、電力制御情報ZA103を電力状態変更装置ZA101に供給し、プログラム割り当て情報ZF102をプログラム割り当て装置ZF103に供給する。
電力状態変更装置ZA101は、供給された電力制御情報ZA103に基づき、マイクロプロセッサ1000の電力変更を行う。
プログラム割り当て装置ZF103は、供給されたプログラム割り当て情報ZF102で識別されるプログラムをマイクロプロセッサ1000に割り当てる。
図21に電力スケジューラZF101の内部構成の一例を示す。
電力スケジューラZF101は、マイクロプロセッサ1000に割り当てるべきプログラム情報を保有し割り当て制御を行うステート制御マシンZF201により、割り当て可能なプログラム毎の識別番号をID保持レジスタZF201経由で電力コンテキスト記憶装置ZA105に供給し、電力制御情報ZA103を受け取り、電力制御情報保持レジスタZD204に格納する。
減算器ZF203は、電力制御情報保持レジスタZD204から出力される電力制御情報ZA103と、マイクロプロセッサ1000の電力状態ZF204との差分を計算する。ここで電力制御情報として供給電圧(電源電圧)を想定する場合は、電圧差が出力される。
同様に、減算器ZF206は、電力状態ZF204と最小差候補保持レジスタZF205との差分を計算する。
比較器ZF207は、減算器ZF203の出力と減算器ZF206の出力との比較を行い、減算器ZF203の出力値のほうが小さい場合は、書き込み要求ZF208をアサートする。
書き込み要求ZF208は、ステート制御マシンZF201からのタイミング調整信号との論理積(AND)をとった上で、最小差候補保持レジスタZF205に通知され、最小差候補保持レジスタZF205は、その時点の電力制御情報ZA103を、新たな最小差候補として記憶する。
以上の手順を割り当て候補のプログラム識別番号に対して行うことで、最小差候補保持レジスタZF205には、現在の電力情報と最も小さい差分値をもつプログラム識別番号と、電力状態制御情報ZA103を記憶することができる。
ステート制御マシンZF201におけるプログラム探索完了に伴い、電力変更要求ZF209と、プログラム切り替え要求ZF210をアサートし、電力状態変更装置ZA101とプログラム割り当て装置ZF103に電力とプログラムの変更要求として通知され、電力とプログラム割り当て状態がそれぞれ変更される。
図22には、本実施例の実施手順の一例を示す。
手順ZF301において、次に割り当てられるプログラムの識別番号に応じた電力制御情報ZA103を取得する。
次に手順ZF302において、電力制御情報ZA103の電力値が、マイクロプロセッサ1000の現在の電力状態値ZF204と最も近いかを比較し、より近い場合は手順ZF303において、該当のプログラム識別番号と電力制御情報ZA103を、次にプログラム割り当てすべき候補として最小差候補保持レジスタZF205に保存する。
手順ZF304により、全てのプログラムの識別番号に対し最小差比較を行ったかを確認し、全てのプログラムの比較検索が完了した場合には、手順ZF305により、次に割り当てるべきプログラムとして、最小差候補保持レジスタZF205の内容に基づき、電力状態の変更を電力状態変更装置ZA101に要求し、手順ZF305にて最小差候補保持レジスタZF205の内容に基づき、次に割り当てるべきプログラムについての割り当て要求をプログラム割り当て装置ZF103に要求する。
なお、手順ZF305とZF306は実装方式により入れ替わっても良い。
図23に本実施例の動作タイミングを示す。
プログラムA実行中において、電力スケジューラZF101は、プログラム割り当て可能なプログラムB、C、Dについて、現在の電力状態(ここでは電圧状態)との差分が最も小さいプログラムを探索する。プログラムBの電力差が最小であることを判定し、次のプログラム切り替え対象としてプログラムBをプログラム割り当て装置ZF103に通知するとともに、電力状態の変更を電力状態変更装置ZA101に通知する。
同様に、プログラムC、Dをもそれぞれの時点で探索を行いプログラム割り当てと電力変更を適時行う。
割り当て可能なプログラムA〜Dが一通り実行された後、新たにプログラムA〜Dがプログラム割り当ての候補として再度スケジューラにより認識される。一周期最終のプログラムD実行中において、次に最も電力差が小さいプログラムはDであることを、電力スケジューラZF101は、電力状態の比較から判定し、プログラムDを割り当てる。
引き続くプログラムDの実行中において、次に割り当てるべき候補として、同様に、電力状態の差が最小となるプログラムCが選定される。この場合、図23のタイミングで示すように、第3の実施形態で示した電力先行制御装置ZC101を用いて、プログラムCに切り替わる前に、電力状態を変更し、性能劣化を抑制することも可能である。
(第7の実施形態)
図24に電力スケジューラZF101の内部構成の別の一例を示す。
電力スケジューラZF101は、マイクロプロセッサ1000に割り当てるべきプログラム情報を保有し割り当て制御を行うステート制御マシンZF201により、割り当て可能なプログラム毎の識別番号をID保持レジスタZF201経由で電力コンテキスト記憶装置ZA105に供給し、電力制御情報ZA103を受け取り、電力制御情報保持レジスタZD204に格納する。
減算器ZG101は、前回確定された最小差を保持する前最小値レジスタZG103と電力制御情報ZA103との差を計算する。
同様に減算器ZG102は、前回確定の最小差を保持する前最小値レジスタZG103と、現在の最小差を保持する最小差候補保持レジスタZF205との差を計算する。
比較器ZG103は、減算器ZG101と減算器ZG102の結果比較を行い、減算器ZG101の値が小さい場合は、書き込み要求を最小差候補保持レジスタZF205に通知し、最小差候補保持レジスタZF205は現在検索中の電力制御情報ZA103を記録する。
マイクロプロセッサ1000に割り当て可能なプログラムが一通り検索し終わると、ステート制御マシンZF201は、最小差候補保持レジスタZF205の内容を前最小値レジスタZG103に書き込む制御を行い、前最小値レジスタZG103の内容を並び替え済みプログラムテーブルZG104に書き込む制御を行う。
以上の手順で最も電力差の小さいプログラムの抽出が行え、続いて次に電力差が小さいプログラムというように順次、電力差の小さいプログラムの抽出を継続する。結果的に、並び替え済みプログラムテーブルZG104には、電力差の小さいプログラム順にプログラム識別情報が記録される。当然ながら比較方法を変更することで、電力差の大きい順に並び替えることも可能である。また並び替え処理をハードウェアではなく、ソフトウェア処理により行うことも可能である。
最終的にステート制御マシンZF201は、並び替え済みプログラムテーブルZG104の順序に従い、電力制御状態の変更要求ZA103と、プログラム割り当て要求ZF102を、電力状態変更装置ZA101と、プログラム割り当て装置ZF103に通知し、電力状態変更とプログラム切り替えを行う。
(第8の実施形態)
図25は、第8の実施形態による電力制御装置800の構成を示すブロック図である。この電力制御装置800は、図1および図7に示した電力制御装置100,200と同様、マイクロプロセッサ1000の内部に設けられてもよいし、マイクロプロセッサ1000の外部に設けられてもよい。
電力コンテキスト参照装置ZB101は電力スケジューラZF101を含んでいる。電力スケジューラZF101は、電力コンテキスト記憶装置ZA105からプログラムの識別番号に応じた電力制御情報ZA103を取得し、これを元に電力状態変更のための計算を行い、電力制御情報ZA103を電力状態変更装置ZA101に供給し、プログラム割り当て情報ZF102をプログラム割り当て装置ZF103に供給する。
電力状態変更装置ZA101は、供給された電力制御情報ZA103に基づき、マイクロプロセッサ1000の電力変更を行う。プログラム割り当て装置ZF103は、供給されたプログラム割り当て情報ZF102で識別されるプログラムをマイクロプロセッサ1000に割り当てる。
さらに、負荷電力判定装置ZH101は、マイクロプロセッサ1000の電力状態ZH102と負荷状態ZH103を入力とし、両者の比較判定処理により、現在の電力状態と負荷状態の組み合わせではマイクロプロセッサ1000が誤動作を発生しうると判定した場合には、電力制御ハザード通知ZH104を電力スケジューラZF101に出力する。これは、電力スケジューラZF101に対するプログラム切り替え要求の意味をも持ち、電力スケジューラZF101は、電力制御ハザード通知ZH104を受け取ると、現在の電力状態で割り当て可能なプログラムを探索し、プログラム割り当てをプログラム割り当て装置ZF103に通知する。さらに可能であれば、電力を低下させるための電力状態の変更通知を電力状態変更装置ZA101に通知する。
図26に負荷電力判定装置ZH101の内部構成の一例を示す。
負荷電力変換表ZH201は、入力される負荷状態ZH103に応じて、動作可能な電力状態値を出力する。負荷状態ZH101は、マイクロプロセッサ1000の現在の動作状況を示すものであり、メモリアクセス数、命令実行数、動作周波数などを含む。例えば負荷状態ZH101として、メモリアクセス数や命令実行数や動作周波数を想定する場合、それぞれの実行負荷状態においてマイクロプロセッサ1000が誤動作せず動作可能な電源電圧値を出力する。当然ながら表ZH201は書き換え可能なレジスタやメモリで構成してもよいし、組み合わせロジックにより構成してもよい。
比較器ZH202は、負荷電力変換表ZH201の出力と、マイクロプロセッサ1000の現在の電力状態ZH102とを比較し、現在の電力状態の方が小さければ、電力制御ハザードZH104を電力スケジューラZF101に通知する。
電力スケジューラZF101は、電力状態が誤動作を起こさない状態に遷移するための待ち状態を発生させることなく、別のプログラムを実行させることができ、待ち合わせによるシステムの性能劣化を防ぐことができる。
このようにして、負荷状態に基づく電力制御方式を有するマイクロプロセッサ1000においても、マイクロプロセッサ1000の誤動作を招くことなく、かつ、性能劣化を抑制した電力制御が可能となる。
図27には、本実施例の実施手順の一例を示す。
手順ZH301にて、マイクロプロセッサ1000の電力状態と負荷状態とを随時比較し、誤動作を引き起こす電力状態に近づかないことを監視する。電力状態に余裕がなくなった場合は、手順ZH302に進み、現在の電力状態で動作可能なプログラムが存在するかを検索する。
現在の電力状態で動作可能なプログラムが存在しない場合は、手順ZH303にて、動作負荷に対して電力状態が適切になるまで待ち合わせを行う。
現在の電力状態で動作可能なプログラムが存在する場合は、手順ZH304にて、動作可能なプログラムに割り当てを変更し、マイクロプロセッサ1000の実行を継続する。
なお、現在の電力状態の判定により誤動作を発生しうると判定されたプログラムについては、次回のプログラム割り当て時により安全に動作させるために、電力コンテキスト記憶装置ZA105の内容を安全な値で更新することも可能である。
例えば、電力コンテキスト記憶装置ZA105において、該当プログラム用の電力制御情報のうち、電圧情報が0.9Vで記録されていた場合を考える。この場合に該当プログラムが電力制御ハザードを発生させた場合には、上記電圧情報をより安全な電力条件1.0Vに書き換えることで、次回のプログラム割り当て時にはより安全に稼動させることができる。
この動的な電力条件の変更は、例えば第4の実施形態において示した、電力割り当ての成功および失敗判定機構と組み合わせることは容易である。
(第9の実施形態)
図28は、第9の実施形態による電力制御装置900の構成を示すブロック図である。この電力制御装置900は、複数の物理プロセッサを有するシステムにおいて、プロセッサの搭載数に依存することなく、複数のプログラム実行時の総消費電力を効率的に削減することを実現するための装置である。
電力スケジューラZF101は、電源グループ記憶装置ZI101からの電源グループ情報ZI102を取得し、これを元に各プログラムを割り当て実行すべきプロセッサを決定し、割り当てるべきプログラム情報をプログラム割り当て装置ZF103に通知し、電力状態の変更を電力状態変更装置ZA101に通知する。
図29に電源グループ情報ZI102の記憶構成方法の例を示す。
図29(a)は、物理的なプロセッサの識別番号ごとに記憶領域を用意し、該当プロセッサがいずれの電源グループに所属するかを表す方式である。図29(a)の例では、プロセッサ番号0とプロセッサ番号3のプロセッサは物理的に電源グループ0に所属し、プロセッサ番号1のプロセッサは電源グループ1に所属し、プロセッサ番号2のプロセッサは電源グループ2に所属する。この方式では物理プロセッサの個数に応じた記憶領域が必要となる。この例では、4つのプロセッサは3種類の電源グループで物理的に設計実装されており、独立に状態変更制御可能な電源グループが3種類であることを示している。例えばこの例では、プロセッサ番号0とプロセッサ番号3の電源電圧を個別に変更することはできない。従って、プロセッサ番号0とプロセッサ番号3には近い電力条件でのプログラムを割り当てることが消費電力の削減上得策となる。
図29(b)は、電源グループごとに記憶領域を用意し、該当電源グループにいずれのプロセッサ番号のプロセッサが所属するかを表す方式である。図29(b)では、記憶値が1の場合に該当プロセッサが該当電源グループに所属していることを表している。したがって、たとえば電源グループ番号0には、プロセッサ番号0とプロセッサ番号3のプロセッサが所属することになる。
図29(a),(b)ともに、記憶する情報の内容は同一であり、記憶領域やプロセッサ数、電源グループ数の拡張性を考慮しいずれかを適用可能である。
図30に、複数の物理プロセッサと電源グループ記憶装置の物理配置例を示す。図30(a)は、図29(a)に対応した構成例を示しており、それぞれのプロセッサ内に電源グループの記憶装置を有する。一方、図30(b)は、図29(b)に対応した構成例であり、プロセッサ群で共通の電源グループの記憶装置を有する。図30(a)(b)の構成例は同一のLSI上に複数のプロセッサが搭載されている例を記載しているが、異なるLSI間のプロセッサ群でもよい。また、その他のロジック部は構成例でありなくてもよい。
なお、上述の例では、複数の物理プロセッサを有するシステムにおいて複数のプログラム実行時の総消費電力を効率的に削減することを目的に各プログラムを割り当て実行すべきプロセッサを決定したが、複数の物理プロセッサを有するシステムにおいて複数のプログラム実行時の発熱量を効率的に分散させることを目的に各プログラムを割り当て実行すべきプロセッサを以下のように決定することができる。
1つめの方法は、物理プロセッサ番号の並びが従来通りである場合において、プログラムの割り当てを次のように電力状態に基づき交互に割り当てる方法である。この方法では、図31(a)に示すように、電力が最も高いものを#0へ割り当て、電力が最も低いものを#1へ割り当て、電力が2番目に高いものを#2へ割り当て、電力が2番目に低いものを#3へ割り当て、…というように割り当てを行う。
2つめの方法は、物理プロセッサ番号を不連続に設計配置する方法である。この方法では、図31(b)に示すように、物理プロセッサ番号を行方向あるいは列方向に不連続(固定値でない増分関係)に位置づける。そして、プログラムの割り当ては、消費電力の大きさ順に物理プロセッサ番号に順番に割り当てる。プロセッサ番号が不連続であるため、プログラムは自然に分散される。
本発明は、単一または複数構成からなるマイクロプロセッサ(マイクロコンピュータ,マイクロコントローラ,ディジタルシグナルプロセッサを含む)、シーケンサ、静的構成論理、動的再構成可能論理、などの情報処理装置一般に適用可能である。
本発明は情報処理装置における電力制御装置に関する。上記情報処理装置には、単一または複数構成からなるマイクロプロセッサ(マイクロコンピュータ,マイクロコントローラ,ディジタルシグナルプロセッサを含む)、シーケンサ、静的構成論理、動的再構成可能論理、などが含まれる。本明細書では主にプロセッサを例として取り扱うが、本発明は上記情報処理装置一般に適用可能である。
近年、携帯電話やデジタルテレビ等のデジタル機器において、音声、オーディオ、動画や符号処理等の様々なデジタル処理の需要が増加している。これら処理の実現のためにマイクロプロセッサなどの情報処理装置が一般に利用されているが、アプリケーション需要の増大に応じて回路規模や動作周波数や搭載プロセッサ数が増加し消費電力は増加の一途をたどっている。
従来は消費電力削減のため、ハードウェアによるクロックゲーティング制御、動作上必要のないブロックをソフトウェアにより停止させる制御、ソフトウェアあるいはハードウェアにより周波数や電圧状態の変更をプログラム単位で行う制御(特開平8−152945号公報)などが一般に実現されている。なお、本明細書における「プログラム単位」という表現は、プロセス単位、スレッド単位、タスク単位を含むものとする。
また近年は、プロセッサの実行状態の長周期の平均負荷状況に応じて周波数や電圧状態を変更する制御が行われている(特開平8−6681号公報)。
特開平8−152945号公報
特開平8−6681号公報
しかしながら上記従来のプログラム単位の消費電力削減方法では、複数のプログラムが同時並列にあるいは時間的に切り替えながら並行に動作するシステムにおいて効率の良い消費電力削減が行えない。
例えば、1つの物理的なプロセッサにおいて2つのプログラムを時間的に切り替えながら並行に動作させるシステムの場合の課題は次の通りである。一方のプログラムが高い電源電圧での動作を必要とする状態であり他方のプログラムが低い電源電圧での動作を必要としている条件下においてプログラムの切り替えが頻繁に発生する場合、従来のプログラム単位の電源電圧変更方法ではプログラムの切り替え時間に電源電圧の変更が追随できないことが考えられる。この場合、電源電圧の変更完了のための待ち時間が発生するが、リアルタイム性が重要視される組み込み用途ではこの待ち時間はシステム性能の劣化や性能保証を損なう致命的な問題となる。したがってこのような用途においてプログラム単位の単純な電力制御を適用することは現実にはできない。これは電源電圧だけでなくクロック周波数の変更においても同じである。理想的な電力状態(ここでは電圧)の変更と、現実的な遷移時間を伴う電力状態の変更について図32,図33にそれぞれ示す。
他方、仮に電源電圧やクロック周波数の変更がプログラムの切り替え頻度に追随できた場合でも、多数のプログラムを並列あるいは並行に動作させるシステムにおいてプログラム単位の電力制御では、プログラム群全体の実行時に最適な電源電圧や閾値電圧などの電圧を供給することによる消費電力削減を実現できるとは限らない。例えば、4つのプログラムを並行に動作させるシステムにおいて、2つのプログラムが高い電圧で、残り2つのプログラムが低い電圧で動く場合を考える。この場合、最も電力効率が高いプログラムの実行過程は、高い電圧の2つのプログラムが連続して実行され、残り低い電圧の2つのプログラムが連続して実行される形態が続く場合である。しかしながら、プログラム単位に着目した電力制御方式では、高い電圧設定のプログラムと低い電圧設定のプログラムが交互に実行される可能性があり、この場合には、電圧状態変更自体による電力損失がより多く発生したり、電圧状態変更のための待ち回数がより多く発生したりして、消費電力やシステム性能の観点から最適な状態にはならない。消費電力の観点からの効率的なスケジューリングと非効率的なスケジューリングの遷移過程について図34,図35にそれぞれ示す。
上記の課題を解決するために、プログラム単位の電力削減ではなく、比較的長周期(例えばミリ秒オーダー)における平均的な負荷状態に応じて供給電圧や動作周波数を変更する方法が考えられる。この場合、長周期での電力制御となるため、頻繁にプログラムが切り替わるリアルタイム処理に適したより短時間で電力条件を変更する効率の良い電力制御は行えない。また、電力制御はプログラムの実行順序には無関係のため、先に示したように、必ずしも最適な順番でプログラムが実行されるとは限らず、プログラム群全体で最適な消費電力になるとは限らない。さらに、過去の平均情報に基づく電力制御であるため、先行的に電力変更を行うこともできない。平均情報の傾斜関数を利用した予測に基づき電力を変更することは可能であるが、将来実行されることが確定的なプログラムがあったとしてもそれにあわせて適切な電力状態に先行的に変更できるものではない。
上記では1つの物理プロセッサにおける複数プログラムの実行時について従来の電力制御の課題を示したが、複数の物理プロセッサを有するシステムにおいても同様に従来の電力制御方法ではプログラム単位の特性に基づきプログラム群全体の消費電力を効率的に削減することはできない。
例えば、物理的なプロセッサが2つ存在しそれぞれが電力制御可能であっても、ソフトウェアの実行順序や実行されるプロセッサと電力状態の変更との関係が最も効率的になるとは限らない。
例として、プロセッサAとプロセッサBが存在し、高い動作電圧を必要とするプログラムPH1とPH2、低い動作電圧でよいプログラムPL1とPL2が存在する場合を考える。ここで仮にプロセッサAとプロセッサBがいずれも高い電圧から動作開始する場合を考えると、プログラム単体での電力制御方法では最適なプログラム割り当て実行と電力制御が判断できない。システム全体で最も電力効率が良くなるのは、プロセッサAまたはBの片側に低い動作電圧のプログラムPL1とPL2を実行させる場合であるが、例えば現在に最も近い電圧からプログラム割り当てを行うとPH1とPH2がプロセッサAおよびBに割り当てられることになるため、その後PL1とPL2がプロセッサAおよびBに割り当てられ、電源状態の変化は2回発生することとなり、先に示した最適状態とはならない。PL1とPL2が先にプロセッサAとBにそれぞれ割り当てられる場合も同様である。このように、電力制御がプログラム単位で行われる限り、システム全体を考慮した消費電力の削減は充分に行えない。
本発明による電力制御装置は、情報処理装置の内部で消費される電力を制御する装置であって、プログラムの識別情報で区別される記憶領域にプログラム毎の電力制御情報を格納する電力コンテキスト記憶手段と、前記電力コンテキスト記憶手段から所望のプログラムについての電力制御情報を参照する電力コンテキスト参照手段と、前記電力コンテキスト参照手段により参照された電力制御情報に基づいて、前記情報処理装置の内部で消費される電力の状態を変更する電力状態変更手段とを備える、ことを特徴とする。
上記電力制御装置は、前記情報処理装置において実行中のプログラムに対する電力制御情報を記憶する電力制御レジスタをさらに備え、前記電力コンテキスト参照手段は、前記情報処理装置の命令実行とは並列に、前記電力制御レジスタの内容を電力コンテキスト記憶手段との間で退避あるいは復帰する電力コンテキスト退避復帰制御手段を含み、前記電力状態変更手段は、前記電力制御レジスタに記憶されている電力制御情報に基づいて、前記情報処理装置の内部で消費される電力の状態を変更する、ことが好ましい。これにより、複数のプログラムを頻繁に切り替えて処理するシステムにおいても、プログラム処理性能を劣化させることなく電力制御情報を退避および復帰することができ、きめ細かいより効率的な電力制御が可能となる。
上記電力制御装置において、前記電力コンテキスト参照手段は、前記情報処理装置において実行中のプログラムと異なる第1のプログラムの電力制御情報を前記第1のプログラムの非実行時に参照する電力コンテキスト先行参照手段を含む、ことが好ましい。これにより、複数のプログラムを実行するシステムにおいても、該当プログラムの割り当て実行前に電力状態変更のための処理やプログラム割り当てのためのスケジュール処理を事前に行うことができ、プログラム処理性能を劣化させることなく電力制御を実施できる。
上記電力制御装置において、前記電力状態変更手段は、前記電力コンテキスト先行参照手段により参照された前記第1のプログラムの電力制御情報に基づいて、前記第1のプログラムの実行に先立って、電力状態の変更を前もって行う、ことが好ましい。これにより、第1のプログラムを実行可能な電力状態にプロセッサをより早く変更することができ、電力状態変更のための待ち合わせによる性能劣化を抑制することができる。
上記電力制御装置において、前記電力コンテキスト先行参照手段は、前記第1のプログラムの実行に先立って、前記第1のプログラムに対応した電力制御情報を参照し、電力状態変更時間とプログラム割り当て時間の情報に基づき、電力状態の変更が有効でないと判断した場合には、電力状態の変更を禁止する、ことが好ましい。これにより、プロセッサ状態と電力制御状態の不整合による性能劣化を効率的に抑制することができる。
上記電力制御装置において、前記電力制御情報は、過去の電力割り当ての成功率あるいは失敗率を含み、前記電力コンテキスト参照手段は、前記電力制御情報の成功率あるいは失敗率に基づいて、該当プログラムを実行する際の電力状態の変更を行うか否かを決定する投機的電力状態変更判定手段を含む、ことが好ましい。これにより、プロセッサ状態と電力制御状態の不整合による性能劣化を効率的に抑制することができる。
上記電力制御装置において、前記電力コンテキスト参照手段は、前記電力コンテキスト記憶手段に記憶されたプログラム毎の電力制御情報から、現在の電力状態と電力変化が最小となるプログラムを選択し前記情報処理装置に割り当てるプログラムスケジュール手段を含む、ことが好ましい。これにより、複数のプログラム実行時の総消費電力を効率的に削減することができる。
上記電力制御装置において、前記電力コンテキスト参照手段は、前記電力コンテキスト記憶手段に記憶されたプログラム毎の電力制御情報から、各プログラム間の電力変化が最小となるプログラム順に並び替え、前記情報処理装置に割り当てるプログラムスケジュール手段を含む、ことが好ましい。これにより、複数のプログラム実行時の総消費電力を効率的に削減することができる。
上記電力制御装置において、前記情報処理装置の現在の動作状況を検出する負荷検出手段と、前記情報処理装置の現在の電力状態を検出する電力状態検出手段と、前記負荷検出手段が検出した負荷と前記電力状態検出手段が検出した電力情報から、現在のプログラムの動作継続を行えない事を事前に判断する負荷電力判定手段と、前記継続が行えない事を判断した場合に、プログラムの切り替えを行うプログラムスケジュール手段とをさらに備える、ことが好ましい。これにより、電力状態変更の待ち合わせによる性能劣化を抑制できると同時に、性能劣化が少ないためより積極的に電力状態の変更制御を実施することができる。
本発明の別の電力制御装置は、複数の物理プロセッサの内部で消費される電力を制御する装置であって、物理プロセッサが物理的に所属する電源グループを識別する情報を記憶する電源グループ記憶手段と、前記電源グループ記憶手段の内容に基づき、各々のプログラムをいずれの物理プロセッサに割り当てるかを決定するプログラムスケジュール手段とを備える、ことを特徴とする。これにより、複数の物理プロセッサを有するシステムにおいて、プロセッサの搭載数に依存することなく、複数のプログラム実行時の総消費電力を効率的に削減することができる。
以上のように本発明によれば、複数のプログラムを並列または並行に実行する情報処理システムにおいて、システムの処理性能の劣化を最小にしながら、より効率的にプログラム群全体の実行時の消費電力の削減を実現することができる。
以下、本発明の実施形態を図面を参照して詳しく説明する。なお、図面において同一または相当する部分には同一の参照符号を付してその説明は繰り返さない。
以下の実施形態では、情報処理装置として特にマイクロプロセッサへの本発明の適用例について説明する。
(第1の実施形態)
図1は、第1の実施形態による電力制御装置100の構成を示すブロック図である。図1では、電力制御装置100がマイクロプロセッサ1000(情報処理装置)の内部に設けられている場合を示しているが、電力制御装置100をマイクロプロセッサ1000(情報処理装置)の外部に設けることも可能である。
電力コンテキスト記憶装置ZA105は、プロセッサバスアクセス制御装置ZA104に接続されマイクロプロセッサ1000から読み書きを行える。また電力コンテキスト記憶装置ZA105は、電力コンテキスト参照装置ZB101に接続され、電力コンテキスト参照装置ZB101から要求された識別番号に応じた電力制御情報ZA103を電力コンテキスト参照装置ZB101に出力する。
電力状態変更装置ZA101は、電力コンテキスト参照装置ZB101から供給された電力制御情報ZA103に基づき、消費電力削減のためにマイクロプロセッサ1000の電力状態を変更する。
なお、図1では、電力コンテキスト参照装置ZB101がプロセッサバスアクセス制御装置ZA104と並列に電力コンテキスト記憶装置ZA105にアクセスする構成であるが、電力コンテキスト参照装置ZB101がプロセッサバスアクセス制御装置ZA104を経由して電力コンテキスト記憶装置ZA105にアクセスする構成をとっても良い。
本実施例では、後述の第2の実施形態(図7)とは異なり、現在のプログラムのみに対する電力制御情報を示す電力制御レジスタZA102(図7)は必ずしも必要ではなく、電力コンテキスト記憶装置ZA105の情報を元に、電力状態変更装置ZA101の制御を行う。
電力コンテキスト記憶装置ZA105には、単一または複数の物理プロセッサで実行されるプログラム群の電力コンテキストを格納し、これら電力コンテキストを事前に参照し必要に応じて計算を行うことで、システム全体の消費電力を効果的に削減することを可能にする。
当然ながら電力コンテキスト記憶装置ZA105は、SRAM構造による構成やフリップフロップ群により構成することが可能である。また、マイクロプロセッサ1000がアクセス可能なメモリ空間に、電力情報以外の情報と共用配置することも可能である。
図2に、電力コンテキスト記憶装置ZA105の構成例を示す。プログラム毎に電力制御情報ZA103を記憶するために、プログラムを識別するための識別番号(ID)に応じた電力制御情報ZA103の格納領域から構成される。
例えば電力コンテスト記憶装置ZA105をSRAM(Static Random Access Memory)を用いて構成すると、電力制御情報ZA103の読み出しに加え書き込みをも行うことが可能である。
図3には、電力コンテキスト記憶装置ZA105に、電力制御情報ZA103としてプログラムの識別番号(ID)をも記憶する例を示す。
図4には、電力制御情報ZA103の内容例を示すが、必ずしも全てを含む必要はなく、かつ記載内容以外も当然格納可能である。
図4において、電源電圧情報は、例えば情報処理装置の電源供給のための電圧を表し、情報処理装置の動作時の消費電力の削減のための制御に使用する。
閾値電圧情報は、半導体微細プロセスを使用した情報処理装置におけるリーク電力削減のための制御に使用する。
クロック周波数情報は、情報処理装置に供給するクロックの周波数を表し、これを可変にすることにより電力削減を実現する。
クロック停止情報は、動作上不要な回路領域へのクロック供給を停止させることで、不要な電力消費の削減制御に使用する。
Tr停止情報は、動作上不要な信号のトグルを抑制するために、出力Trの停止制御に使用するか、リーク電力削減のためにMOS回路に直列に挿入するパワーゲーティング用Trの停止制御に使用する。
制御対象ブロック情報は、電力制御情報ZA103が示す電力制御を実施する対象ブロックを特定するために使用する。
状態変更成功率情報は、後述するように、投機的な電力状態変更の過去の成功率により電力制御を行うために使用する。
先行状態変更条件情報は、後述するように、電力状態を該当プログラム開始に先行して変更するための起動条件を指定する。
動作モード情報は、電圧や周波数を特定するモード番号を指定する。例えば、高い電圧と高い周波数で稼動する高速動作モード、低い電圧と低い周波数で稼動する低速モードを、モード番号で識別させ、情報量の削減や電力設定の簡易化を行う。
状態変更条件情報は、該当プログラムが電力変更を行うための情報処理装置の状態条件を指定する。例えば、該当プログラムの実行中のアドレス情報や特権レベル状態やキャッシュミス等のメモリアクセス状態などを指定し、これが一致した場合のみ電力変更を起動する。
状態変更許可情報は、該当プログラムが電力変更を行うことを禁止あるいは許可することを指定する。
図5と図6に電力状態変更装置ZA101の一例を示す。図5は、与えられた電源電圧条件や閾値電圧条件に対し、DC−DCコンバータを用いて供給電圧を変更する例である。図6は、クロック周波数情報としての逓倍率条件と分周率条件により、供給クロックを変更する例である。
(第2の実施形態)
図7は、第2の実施形態による電力制御装置200の構成を示すブロック図である。図7では、電力制御装置200がマイクロプロセッサ1000の内部に設けられている場合を示しているが、電力制御装置200をマイクロプロセッサ1000の外部に設けることも可能である。
電力状態変更装置ZA101は、電力制御レジスタZA102に接続され、電力制御レジスタZA102から供給される電力制御情報ZA103の内容に基づき、消費電力削減のためにマイクロプロセッサ1000の電力状態の変更を行う。
電力制御レジスタZA102が保持する電力制御情報ZA103は、電力制御レジスタZA102に接続されたプロセッサバスアクセス制御装置ZA104を経由して読み出し/書き換えを行うことができる。マイクロプロセッサ1000は、実行するプログラム自身で電力制御レジスタZA102の内容を書き換えることで、マイクロプロセッサ1000を適切な電力状態に変更し、消費電力を削減することができる。
マイクロプロセッサ1000は、電力コンテキスト記憶装置ZA105の内容をプロセッサバスアクセス制御装置ZA104を経由して、読み出し/書き換えを行うことができる。
マイクロプロセッサ1000にて実行されるプログラムは、電力制御レジスタZA102の内容を、電力コンテキスト記憶装置ZA105の、プログラム毎に用意された格納領域の内容と入れ替えることで、各プログラム毎に個別の条件での電力制御を実現することができる。
プログラム毎に電力制御情報を用意することで、よりきめ細かい電力制御が可能となり消費電力の削減をより効果的に実現できる。
当然ながら電力コンテキスト記憶装置ZA105は、SRAM構造による構成やフリップフロップ群により構成することが可能である。また、マイクロプロセッサ1000がアクセス可能なメモリ空間に、電力情報以外の情報と共用配置することも可能である。
電力コンテキスト参照装置ZB101は電力コンテキスト退避復帰制御装置ZA106を含んでいる。電力コンテキスト退避復帰制御装置ZA106は、電力制御レジスタZA102および電力コンテキスト記憶装置ZA105に接続され、それぞれの記憶内容を読み出し/書き換えることができる。電力コンテキスト退避復帰制御装置ZA106は、プロセッサバスを占有することなく、電力制御レジスタZA102および電力コンテキスト記憶装置ZA105にアクセス可能であるため、プロセッサの処理性能を落とさずに、電力制御レジスタZA102および電力コンテキスト記憶装置ZA105の内容を入れ替えることができる。
(第3の実施形態)
図8は、第3の実施形態による電力制御装置300の構成を示すブロック図である。この電力制御装置300は、図1および図7に示した電力制御装置100,200と同様、マイクロプロセッサ1000の内部に設けられてもよいし、マイクロプロセッサ1000の外部に設けられてもよい。
電力コンテキスト参照装置ZB101は電力先行制御装置ZC101を含んでいる。電力先行制御装置ZC101は、電力コンテキスト記憶装置ZA105から電力制御情報ZA103を取得し、これを元に電力状態変更のための計算を行い、電力制御情報ZA103を電力状態変更装置ZA101に供給する。
電力状態変更装置ZA101は、供給された電力制御情報ZA103に基づき、マイクロプロセッサ1000の電力状態変更を行う。
図9に電力先行制御装置ZC101の内部構成の一例を示す。
電力先行制御装置ZC101は、ハードウェアによるプログラムスケジューラまたはオペレーティングシステムによるプログラムスケジューラにより、次にマイクロプロセッサ1000で実行すべきプログラムの識別番号ZC201を受け取り、識別番号保持レジスタZC202に格納する。
識別番号保持レジスタZC202の内容は、識別番号ZC203として電力コンテキスト記憶装置ZA105に供給され、電力コンテキスト記憶装置ZA105からは識別番号ZC203に対応する電力制御情報ZA103を取得し、これを電力制御情報保持レジスタZC204に記録する。
比較器ZC205は、マイクロプロセッサ1000の電力状態ZC206と、電力制御情報ZA103の内容を比較し、結果を電力変更タイミング制御器ZC207に通知する。なお、ここでは一例として電力状態ZC206および電力制御情報ZA103は電源電圧を表すものとする。
電力状態ZC206と電力制御情報ZA103との比較により、電力状態ZC206の表す電圧のほうが大きい場合は、セレクタZC208は、プログラムスケジューラからのプログラム切り替え要求ZC209側を選択する。すなわち、プログラムが切り替わるタイミングを待って、電圧状態の変更要求ZC210を電力状態変更装置ZA101に通達する。これにより、高い動作電圧を必要とするプログラムの実行中に、動作可能な電圧以下への状態変更によりマイクロプロセッサ1000が誤動作することを防ぐ。
比較器ZC205の比較結果が、電力状態ZC206の方が低いことを示す場合には、電力変更タイミング制御器ZC207は、プログラム切り替え前に電力変更を行う準備を始める。この例では、ダウンカウンタZC211の起動を行い、この結果が所定の値(ここでは零)になった場合に、セレクタZC208を経由して、電圧状態の変更要求ZC210を電力状態変更装置ZA101に通達する。これにより、該当プログラムに切り替わるより前に、該当プログラムが必要とする電力状態に変更を行うことができる。
図10に本実施例の動作タイミングを示す。ここでは、プログラムAとプログラムBが電力制御情報ZA103として電圧V1、プログラムCとプログラムDが電圧V2を指定している場合を例示する。
プログラムB実行中において、電力状態ZC206は電圧V1であり、プログラムCの電力制御情報ZA103は電圧V2を示している。比較器ZC205は、電力状態ZC206と電力制御情報ZA103の比較結果として、電力状態ZC206のほうが大きいと判断し、セレクタZC208にプログラム切り替え要求ZC209側を選択させる。プログラム切り替え要求ZC209は、プログラム切り替え時にアサートされるため、電力切り替え要求ZC210は、プログラム切り替え時まで通知されない。結果として、プログラムBが実行中断するタイミングまで電力状態の変更が待たされる。
反対にプログラムDの実行時には、比較器ZC205の比較結果は、電力制御情報ZA103側が大きいと判断するため、電力変更タイミング制御器ZC207は、カウンタの計数後、プログラム切り替えに先行して電力状態の変更を開始する。
なお、プログラムAおよびプログラムCの実行中のように、次のプログラム実行時と電力条件が同じ場合は、プログラム切り替え後に電力変更を行っても、プログラム切り替え前に電力変更を行っても、電力状態は同じである。もちろん、比較結果が同じ場合には電力変更制御を実施しないことは当然考えられる。
図11には、本実施例の実施手順の一例を示す。
手順ZC301において、次に割り当てられるプログラムの識別番号に応じた電力制御情報ZA103を取得する。
次に手順ZC302にて、この電力制御情報ZA103とマイクロプロセッサ1000の電力状態ZC206を比較する。電力状態として電圧を仮定した本例では、電力状態ZC206側が低ければ手順ZC303を選択し、高ければ手順ZC304を選択する。
手順ZC303では、通常のスケジューリングによるプログラムの切り替えまで、電力変更を待ち合わせる。
手順ZC304では、電力条件を変更するタイミングの計算を開始する。本例ではタイマZC211によるタイミング調整の例を示した。
手順ZC305では、タイミング条件完了まで電力変更を待ち合わせる。本例ではタイマZC211のカウント値が所定の値になることを条件として示した。
待ち合わせ完了後の手順ZC306では、電力制御情報ZA103に基づき電力状態の変更を電力状態変更装置ZA101に要求する。
(第4の実施形態)
図12は、第4の実施形態による電力制御装置400の構成を示すブロック図である。この電力制御装置400は、図1および図7に示した電力制御装置100,200と同様、マイクロプロセッサ1000の内部に設けられてもよいし、マイクロプロセッサ1000の外部に設けられてもよい。
電力コンテキスト参照装置ZB101は投機的電力状態変更装置ZD101を含んでいる。投機的電力状態変更装置ZD101は、電力コンテキスト記憶装置ZA105から電力制御情報ZA103を取得し、これを元に電力状態変更のための計算を行い、電力制御情報ZA103を電力状態変更装置ZA101に供給する。
電力状態変更装置ZA101は、供給された電力制御情報ZA103に基づき、マイクロプロセッサ1000の電力変更を行う。
図13に投機的電力状態変更装置ZD101の内部構成の一例を示す。
投機的電力状態変更装置ZD101は、ハードウェアによるプログラムスケジューラまたはオペレーティングシステムによるプログラムスケジューラにより、次にマイクロプロセッサ1000で実行すべきプログラムの識別番号ZD201を受け取り、識別番号保持レジスタZD202に格納する。
識別番号保持レジスタZD202の内容は、識別番号ZD203として電力コンテキスト記憶装置ZA105に供給され、電力コンテキスト記憶装置ZA105からは識別番号ZD203に対応する電力制御情報ZA103を取得し、これを電力制御情報保持レジスタZD204に記録する。
比較器ZD205は、電力制御情報ZA103の内容のうち過去の電力変更の成功率ZD206と、成功率の指定限界値ZD207とを比較する。例えば、過去の電力変更の成功率ZD206は連続的に電力変更に失敗した回数で構成し、指定限界値ZD207が3回を表す構成とした場合、過去の成功率ZD206が3回以内であれば、比較器ZD205の出力はアサートされる。
ここでは、比較器ZD205の出力は、電力制御情報ZD204の中の電力変更許可ビットと論理的にANDをとり(ZD208)、その結果を電力変更要求ZD209として、電力状態変更装置ZA101に通知する。
このようにして、過去の電力変更の成功率に基づき、一定条件以上の失敗の場合に、電力状態の変更を抑制することができる。
図14には、本実施例の実施手順の一例を示す。
手順ZD301において、次に割り当てられるプログラムの識別番号に応じた電力制御情報ZA103を取得する。
次に手順ZD302において、電力制御情報ZA103の状態変更許可ビットの内容から、電力制御が許可されたプログラムであるかを判定し、電力制御が許可されたプログラムでない場合は、電力状態の変更要求を行わずに手順を完了する。
電力制御が許可されたと判定された場合は、次に手順ZD303において、電力制御情報ZA103の内容の過去の電力状態変更の成功率から、電力状態の変更制御を実施すべきか抑制すべきかを判定し、抑制すべきであると判定した場合には、電力状態の変更要求を行わずに手順を完了する。反対に変更を実施すべきと判定した場合には、手順ZD304において、電力制御情報ZA103の内容に基づき、電力状態変更装置ZA101に対して、電力状態の変更要求を通知する。
図15には、本実施例において、過去の成功率を計算する例を示す。ここでは成功率として失敗回数を基にした計算を行う例を示す。
手順ZD401において、現在の電力状態と負荷状態の組合せではマイクロプロセッサ1000が誤動作を発生しうるかを余裕度をもとに計算判定する(この手順については第8の実施形態において示す。)
電力状態に余裕がない状態(電力ハザード状態)であると手順ZD401において判定した場合、手順ZD402において、電力制御情報における状態変更成功率に相当する値を増加させる。単純な例としては、電力ハザード状態を検出するごとに1ずつ増加させるが、余裕度に応じて重み付けを付けた値を加算する方法も容易に構成できる。
手順ZD403においては、実装方法に応じて、電力状態に余裕が生じるまで待ち状態に入れることや、割り当て可能なプログラムに切り替える方法を取る。
電力状態に余裕があると手順ZD401にて判定した場合において、さらに手順ZD404にてプログラムの切り替え要求を受けた場合は、さらに続く手順ZD405において、成功率の計算を行う。
手順ZD405において、実装方法の一つとしては単純に値を減算する方法がある。この方法では、失敗や成功の連続度合いとは無関係に、合計値がある閾値を越えるか否かで成功率を計算することができる。
また他の実装方法としては、手順ZD405では電力割り当てが成功している場合には、成功率の値を初期値(たとえば0)にクリアする方法を取ることができる。この場合は、連続してN回失敗した場合にのみ、閾値を越える値とする判定方法を構成できる。
図16は、成功率の計算を行う装置の構成を示すブロック図である。
この例ではセレクタZD501は、電力ハザード状態の場合には、失敗数加算値である値(+1)を供給し、電力ハザード状態でない場合には、成功数減算値である値(−1)を供給する。
加算器ZD502は、電力制御情報ZD204から供給される現在の状態変更成功率の値と、セレクタZD501から供給される加減算値を加算する。
失敗率情報レジスタZD503は、加算器ZD502から供給される値を、プログラム切り替え情報がアサートされた場合に書き込む。さらにこの値により、電力コンテキスト記憶装置ZA105の状態変更成功率のフィールドを更新する。
なお、図17には本実施例のように、プログラムの切り替え時に、プログラムの動作状態に応じた値で、電力コンテキスト記憶装置ZA105の情報を更新する装置の構成を例示する。
なお、本実施例では、投機的に電力変更を行うか否かについて例示したが、電力割り当ての成功および失敗の判定機構を用いれば、より安全に電力の削減を行うことが可能である。例えば電力割り当てが成功している場合には、電力状態の余裕度の計算を行い、電力コンテキスト記憶装置ZA105における該当プログラム用の電力制御情報を更新することができる。例えば電力割り当てが成功しており、現在の電圧が動作条件に対して充分に余裕があることが判定できれば、より低い電圧値で電力コンテキスト記憶装置ZA105の電力制御情報を更新することができる。逆に余裕度が小さい場合はより高い電圧値で更新することができる。これにより、電力割り当ての失敗による性能劣化を減らすとともに、消費電力の削減を動的に実現することができる。
(第5の実施形態)
図18に投機的電力状態変更装置ZD101の内部構成の別の一例を示す。
投機的電力状態変更装置ZD101は、ハードウェアによるプログラムスケジューラまたはオペレーティングシステムによるプログラムスケジューラにより、次にマイクロプロセッサ1000で実行すべきプログラムの識別番号ZD201を受け取り、識別番号保持レジスタZD202に格納する。
識別番号保持レジスタZD202の内容は、識別番号ZD203として電力コンテキスト記憶装置ZA105に供給され、電力コンテキスト記憶装置ZA105からは識別番号ZD203に対応する電力制御情報ZA103を取得し、これを電力制御情報保持レジスタZD204に記録する。
差分計算器ZE101は、マイクロプロセッサ1000の電力状態ZE102と、電力制御情報ZA103の電力情報との差分を計算する。ここで、電力状態として電源電圧について例示する。この場合には、差分計算機ZE101は、両者の電圧差を計算し出力することとなる。電力−遷移時間テーブルZE103は、入力する電力状態値の変更に要する時間を計算し出力する。例えば、電圧差0.1mVの変更に要する遷移時間を表の形で記憶しておき、出力する。当然ながら表は書き換え可能なレジスタやメモリで構成してもよいし、組み合わせロジックにより構成してもよい。
比較器ZE104は、電力−遷移時間テーブルZE103の出力と、電力制御情報ZA103の内容における通常時最小時間ZE105とを比較し、通常時最小時間ZE105のほうが小さい場合には、電力変更要求ZE106を電力状態変更装置ZA101に通知する。
通常時最小時間ZE105は、該当プログラムが割り込み等の緊急時を除く通常時において、各切り替え単位ごとに実行された最小の時間単位を保存する。
このようにして、該当プログラムの切り替え時間が、目標とする電力状態への遷移時間より短い場合は、電力状態の変更を抑制することができる。
図19には、通常最小時間ZE105の計算手順を示す。
手順ZE201において、プログラムの切り替え後にタイマを用いたプログラム割り当て時間の計測を開始する。これは新たにタイマを初期化し計数を行う方法や、常時稼動している共用タイマを用い、プログラム開始時のタイマ値を記録する方法で良い。
手順ZE202において、新たなプログラムの切り替えまで処理を待ち合わせる。
手順ZE202にてプログラムの切り替え検出後、手順ZE203において、今回のプログラム切り替えが通常の切り替えか、割り込み等による緊急の切り替えかを判定する。通常の切り替えでない場合は、今回のプログラム割り当て時間を用いた最小時間ZE105の計算と記録を行わない。これにより、通常のプログラム動作中の切り替えではない特別な場合の影響を除外することができる。
手順ZE203において今回のプログラム切り替えが通常の切り替えであることを判定した後、手順ZE204において、プログラム割り当て時間を算出する。新たなタイマを初期化した場合には、その時点でのタイマ値そのものを使用し、常時稼動している共用タイマを使用した場合は、現在のタイマ値から記録済みのプログラム開始時のタイマ値を減算することで割り当て時間を算出する。
手順ZE205では、電力制御情報保持レジスタZD204に格納された通常最小時間ZE105の値と、上記ZE204で算出した今回のプログラム割り当て時間を比較し、より小さい側の値を、手順ZE206において、通常最小時間として電力コンテキスト記憶装置ZA105の該当フィールドに格納する。
続く手順ZE207においてプログラム切り替え手順を行う。
(第6の実施形態)
図20は、第6の実施形態による電力制御装置600の構成を示すブロック図である。この電力制御装置600は、図1および図7に示した電力制御装置100,200と同様、マイクロプロセッサ1000の内部に設けられてもよいし、マイクロプロセッサ1000の外部に設けられてもよい。
電力コンテキスト参照装置ZB101は電力スケジューラZF101を含んでいる。電力スケジューラZF101は、電力コンテキスト記憶装置ZA105からプログラムの識別番号に応じた電力制御情報ZA103を取得し、これを元に電力状態変更のための計算を行い、電力制御情報ZA103を電力状態変更装置ZA101に供給し、プログラム割り当て情報ZF102をプログラム割り当て装置ZF103に供給する。
電力状態変更装置ZA101は、供給された電力制御情報ZA103に基づき、マイクロプロセッサ1000の電力変更を行う。
プログラム割り当て装置ZF103は、供給されたプログラム割り当て情報ZF102で識別されるプログラムをマイクロプロセッサ1000に割り当てる。
図21に電力スケジューラZF101の内部構成の一例を示す。
電力スケジューラZF101は、マイクロプロセッサ1000に割り当てるべきプログラム情報を保有し割り当て制御を行うステート制御マシンZF201により、割り当て可能なプログラム毎の識別番号をID保持レジスタZF202経由で電力コンテキスト記憶装置ZA105に供給し、電力制御情報ZA103を受け取り、電力制御情報保持レジスタZD204に格納する。
減算器ZF203は、電力制御情報保持レジスタZD204から出力される電力制御情報ZA103と、マイクロプロセッサ1000の電力状態ZF204との差分を計算する。ここで電力制御情報として供給電圧(電源電圧)を想定する場合は、電圧差が出力される。
同様に、減算器ZF206は、電力状態ZF204と最小差候補保持レジスタZF205との差分を計算する。
比較器ZF207は、減算器ZF203の出力と減算器ZF206の出力との比較を行い、減算器ZF203の出力値のほうが小さい場合は、書き込み要求ZF208をアサートする。
書き込み要求ZF208は、ステート制御マシンZF201からのタイミング調整信号との論理積(AND)をとった上で、最小差候補保持レジスタZF205に通知され、最小差候補保持レジスタZF205は、その時点の電力制御情報ZA103を、新たな最小差候補として記憶する。
以上の手順を割り当て候補のプログラム識別番号に対して行うことで、最小差候補保持レジスタZF205には、現在の電力情報と最も小さい差分値をもつプログラム識別番号と、電力状態制御情報ZA103を記憶することができる。
ステート制御マシンZF201におけるプログラム探索完了に伴い、電力変更要求ZF209と、プログラム切り替え要求ZF210をアサートし、電力状態変更装置ZA101とプログラム割り当て装置ZF103に電力とプログラムの変更要求として通知され、電力とプログラム割り当て状態がそれぞれ変更される。
図22には、本実施例の実施手順の一例を示す。
手順ZF301において、次に割り当てられるプログラムの識別番号に応じた電力制御情報ZA103を取得する。
次に手順ZF302において、電力制御情報ZA103の電力値が、マイクロプロセッサ1000の現在の電力状態値ZF204と最も近いかを比較し、より近い場合は手順ZF303において、該当のプログラム識別番号と電力制御情報ZA103を、次にプログラム割り当てすべき候補として最小差候補保持レジスタZF205に保存する。
手順ZF304により、全てのプログラムの識別番号に対し最小差比較を行ったかを確認し、全てのプログラムの比較検索が完了した場合には、手順ZF305により、次に割り当てるべきプログラムとして、最小差候補保持レジスタZF205の内容に基づき、電力状態の変更を電力状態変更装置ZA101に要求し、手順ZF305にて最小差候補保持レジスタZF205の内容に基づき、次に割り当てるべきプログラムについての割り当て要求をプログラム割り当て装置ZF103に要求する。
なお、手順ZF305とZF306は実装方式により入れ替わっても良い。
図23に本実施例の動作タイミングを示す。
プログラムA実行中において、電力スケジューラZF101は、プログラム割り当て可能なプログラムB、C、Dについて、現在の電力状態(ここでは電圧状態)との差分が最も小さいプログラムを探索する。プログラムBの電力差が最小であることを判定し、次のプログラム切り替え対象としてプログラムBをプログラム割り当て装置ZF103に通知するとともに、電力状態の変更を電力状態変更装置ZA101に通知する。
同様に、プログラムC、Dをもそれぞれの時点で探索を行いプログラム割り当てと電力変更を適時行う。
割り当て可能なプログラムA〜Dが一通り実行された後、新たにプログラムA〜Dがプログラム割り当ての候補として再度スケジューラにより認識される。一周期最終のプログラムD実行中において、次に最も電力差が小さいプログラムはDであることを、電力スケジューラZF101は、電力状態の比較から判定し、プログラムDを割り当てる。
引き続くプログラムDの実行中において、次に割り当てるべき候補として、同様に、電力状態の差が最小となるプログラムCが選定される。この場合、図23のタイミングで示すように、第3の実施形態で示した電力先行制御装置ZC101を用いて、プログラムCに切り替わる前に、電力状態を変更し、性能劣化を抑制することも可能である。
(第7の実施形態)
図24に電力スケジューラZF101の内部構成の別の一例を示す。
電力スケジューラZF101は、マイクロプロセッサ1000に割り当てるべきプログラム情報を保有し割り当て制御を行うステート制御マシンZF201により、割り当て可能なプログラム毎の識別番号をID保持レジスタZF202経由で電力コンテキスト記憶装置ZA105に供給し、電力制御情報ZA103を受け取り、電力制御情報保持レジスタZD204に格納する。
減算器ZG101は、前回確定された最小差を保持する前最小値レジスタZG105と電力制御情報ZA103との差を計算する。
同様に減算器ZG102は、前回確定の最小差を保持する前最小値レジスタZG105と、現在の最小差を保持する最小差候補保持レジスタZF205との差を計算する。
比較器ZG103は、減算器ZG101と減算器ZG102の結果比較を行い、減算器ZG101の値が小さい場合は、書き込み要求を最小差候補保持レジスタZF205に通知し、最小差候補保持レジスタZF205は現在検索中の電力制御情報ZA103を記録する。
マイクロプロセッサ1000に割り当て可能なプログラムが一通り検索し終わると、ステート制御マシンZF201は、最小差候補保持レジスタZF205の内容を前最小値レジスタZG105に書き込む制御を行い、前最小値レジスタZG105の内容を並び替え済みプログラムテーブルZG104に書き込む制御を行う。
以上の手順で最も電力差の小さいプログラムの抽出が行え、続いて次に電力差が小さいプログラムというように順次、電力差の小さいプログラムの抽出を継続する。結果的に、並び替え済みプログラムテーブルZG104には、電力差の小さいプログラム順にプログラム識別情報が記録される。当然ながら比較方法を変更することで、電力差の大きい順に並び替えることも可能である。また並び替え処理をハードウェアではなく、ソフトウェア処理により行うことも可能である。
最終的にステート制御マシンZF201は、並び替え済みプログラムテーブルZG104の順序に従い、電力制御状態の変更要求ZA103と、プログラム割り当て要求ZF102を、電力状態変更装置ZA101と、プログラム割り当て装置ZF103に通知し、電力状態変更とプログラム切り替えを行う。
(第8の実施形態)
図25は、第8の実施形態による電力制御装置800の構成を示すブロック図である。この電力制御装置800は、図1および図7に示した電力制御装置100,200と同様、マイクロプロセッサ1000の内部に設けられてもよいし、マイクロプロセッサ1000の外部に設けられてもよい。
電力コンテキスト参照装置ZB101は電力スケジューラZF101を含んでいる。電力スケジューラZF101は、電力コンテキスト記憶装置ZA105からプログラムの識別番号に応じた電力制御情報ZA103を取得し、これを元に電力状態変更のための計算を行い、電力制御情報ZA103を電力状態変更装置ZA101に供給し、プログラム割り当て情報ZF102をプログラム割り当て装置ZF103に供給する。
電力状態変更装置ZA101は、供給された電力制御情報ZA103に基づき、マイクロプロセッサ1000の電力変更を行う。プログラム割り当て装置ZF103は、供給されたプログラム割り当て情報ZF102で識別されるプログラムをマイクロプロセッサ1000に割り当てる。
さらに、負荷電力判定装置ZH101は、マイクロプロセッサ1000の電力状態ZH102と負荷状態ZH103を入力とし、両者の比較判定処理により、現在の電力状態と負荷状態の組み合わせではマイクロプロセッサ1000が誤動作を発生しうると判定した場合には、電力制御ハザード通知ZH104を電力スケジューラZF101に出力する。これは、電力スケジューラZF101に対するプログラム切り替え要求の意味をも持ち、電力スケジューラZF101は、電力制御ハザード通知ZH104を受け取ると、現在の電力状態で割り当て可能なプログラムを探索し、プログラム割り当てをプログラム割り当て装置ZF103に通知する。さらに可能であれば、電力を低下させるための電力状態の変更通知を電力状態変更装置ZA101に通知する。
図26に負荷電力判定装置ZH101の内部構成の一例を示す。
負荷電力変換表ZH201は、入力される負荷状態ZH103に応じて、動作可能な電力状態値を出力する。負荷状態ZH101は、マイクロプロセッサ1000の現在の動作状況を示すものであり、メモリアクセス数、命令実行数、動作周波数などを含む。例えば負荷状態ZH101として、メモリアクセス数や命令実行数や動作周波数を想定する場合、それぞれの実行負荷状態においてマイクロプロセッサ1000が誤動作せず動作可能な電源電圧値を出力する。当然ながら表ZH201は書き換え可能なレジスタやメモリで構成してもよいし、組み合わせロジックにより構成してもよい。
比較器ZH202は、負荷電力変換表ZH201の出力と、マイクロプロセッサ1000の現在の電力状態ZH102とを比較し、現在の電力状態の方が小さければ、電力制御ハザードZH104を電力スケジューラZF101に通知する。
電力スケジューラZF101は、電力状態が誤動作を起こさない状態に遷移するための待ち状態を発生させることなく、別のプログラムを実行させることができ、待ち合わせによるシステムの性能劣化を防ぐことができる。
このようにして、負荷状態に基づく電力制御方式を有するマイクロプロセッサ1000においても、マイクロプロセッサ1000の誤動作を招くことなく、かつ、性能劣化を抑制した電力制御が可能となる。
図27には、本実施例の実施手順の一例を示す。
手順ZH301にて、マイクロプロセッサ1000の電力状態と負荷状態とを随時比較し、誤動作を引き起こす電力状態に近づかないことを監視する。電力状態に余裕がなくなった場合は、手順ZH302に進み、現在の電力状態で動作可能なプログラムが存在するかを検索する。
現在の電力状態で動作可能なプログラムが存在しない場合は、手順ZH303にて、動作負荷に対して電力状態が適切になるまで待ち合わせを行う。
現在の電力状態で動作可能なプログラムが存在する場合は、手順ZH304にて、動作可能なプログラムに割り当てを変更し、マイクロプロセッサ1000の実行を継続する。
なお、現在の電力状態の判定により誤動作を発生しうると判定されたプログラムについては、次回のプログラム割り当て時により安全に動作させるために、電力コンテキスト記憶装置ZA105の内容を安全な値で更新することも可能である。
例えば、電力コンテキスト記憶装置ZA105において、該当プログラム用の電力制御情報のうち、電圧情報が0.9Vで記録されていた場合を考える。この場合に該当プログラムが電力制御ハザードを発生させた場合には、上記電圧情報をより安全な電力条件1.0Vに書き換えることで、次回のプログラム割り当て時にはより安全に稼動させることができる。
この動的な電力条件の変更は、例えば第4の実施形態において示した、電力割り当ての成功および失敗判定機構と組み合わせることは容易である。
(第9の実施形態)
図28は、第9の実施形態による電力制御装置900の構成を示すブロック図である。この電力制御装置900は、複数の物理プロセッサを有するシステムにおいて、プロセッサの搭載数に依存することなく、複数のプログラム実行時の総消費電力を効率的に削減することを実現するための装置である。
電力スケジューラZF101は、電源グループ記憶装置ZI101からの電源グループ情報ZI102を取得し、これを元に各プログラムを割り当て実行すべきプロセッサを決定し、割り当てるべきプログラム情報をプログラム割り当て装置ZF103に通知し、電力状態の変更を電力状態変更装置ZA101に通知する。
図29に電源グループ情報ZI102の記憶構成方法の例を示す。
図29(a)は、物理的なプロセッサの識別番号ごとに記憶領域を用意し、該当プロセッサがいずれの電源グループに所属するかを表す方式である。図29(a)の例では、プロセッサ番号0とプロセッサ番号3のプロセッサは物理的に電源グループ0に所属し、プロセッサ番号1のプロセッサは電源グループ1に所属し、プロセッサ番号2のプロセッサは電源グループ2に所属する。この方式では物理プロセッサの個数に応じた記憶領域が必要となる。この例では、4つのプロセッサは3種類の電源グループで物理的に設計実装されており、独立に状態変更制御可能な電源グループが3種類であることを示している。例えばこの例では、プロセッサ番号0とプロセッサ番号3の電源電圧を個別に変更することはできない。従って、プロセッサ番号0とプロセッサ番号3には近い電力条件でのプログラムを割り当てることが消費電力の削減上得策となる。
図29(b)は、電源グループごとに記憶領域を用意し、該当電源グループにいずれのプロセッサ番号のプロセッサが所属するかを表す方式である。図29(b)では、記憶値が1の場合に該当プロセッサが該当電源グループに所属していることを表している。したがって、たとえば電源グループ番号0には、プロセッサ番号0とプロセッサ番号3のプロセッサが所属することになる。
図29(a),(b)ともに、記憶する情報の内容は同一であり、記憶領域やプロセッサ数、電源グループ数の拡張性を考慮しいずれかを適用可能である。
図30に、複数の物理プロセッサと電源グループ記憶装置の物理配置例を示す。図30(a)は、図29(a)に対応した構成例を示しており、それぞれのプロセッサ内に電源グループの記憶装置を有する。一方、図30(b)は、図29(b)に対応した構成例であり、プロセッサ群で共通の電源グループの記憶装置を有する。図30(a)(b)の構成例は同一のLSI上に複数のプロセッサが搭載されている例を記載しているが、異なるLSI間のプロセッサ群でもよい。また、その他のロジック部は構成例でありなくてもよい。
なお、上述の例では、複数の物理プロセッサを有するシステムにおいて複数のプログラム実行時の総消費電力を効率的に削減することを目的に各プログラムを割り当て実行すべきプロセッサを決定したが、複数の物理プロセッサを有するシステムにおいて複数のプログラム実行時の発熱量を効率的に分散させることを目的に各プログラムを割り当て実行すべきプロセッサを以下のように決定することができる。
1つめの方法は、物理プロセッサ番号の並びが従来通りである場合において、プログラムの割り当てを次のように電力状態に基づき交互に割り当てる方法である。この方法では、図31(a)に示すように、電力が最も高いものを#0へ割り当て、電力が最も低いものを#1へ割り当て、電力が2番目に高いものを#2へ割り当て、電力が2番目に低いものを#3へ割り当て、…というように割り当てを行う。
2つめの方法は、物理プロセッサ番号を不連続に設計配置する方法である。この方法では、図31(b)に示すように、物理プロセッサ番号を行方向あるいは列方向に不連続(固定値でない増分関係)に位置づける。そして、プログラムの割り当ては、消費電力の大きさ順に物理プロセッサ番号に順番に割り当てる。プロセッサ番号が不連続であるため、プログラムは自然に分散される。
本発明は、単一または複数構成からなるマイクロプロセッサ(マイクロコンピュータ,マイクロコントローラ,ディジタルシグナルプロセッサを含む)、シーケンサ、静的構成論理、動的再構成可能論理、などの情報処理装置一般に適用可能である。
図1は、本発明の第1の実施形態による電力制御装置の構成を示すブロック図である。
図2は、電力コンテキスト記憶装置の論理的な構成例を示す図である。
図3は、電力コンテキスト記憶装置の論理的な構成例を示す図である。
図4は、電力制御情報の論理的な構成例を示す図である。
図5は、電力状態変更装置の詳細な構成例を示す図である。
図6は、電力状態変更装置の詳細な構成例を示す図である。
図7は、本発明の第2の実施形態による電力制御装置の構成を示すブロック図である。
図8は、本発明の第3の実施形態による電力制御装置の構成を示すブロック図である。
図9は、電力先行制御装置の詳細な構成例を示す図である。
図10は、本発明の第3の実施形態に係る電力制御装置の動作タイミングを示す図である。
図11は、本発明の第3の実施形態による電力制御装置の動作手順を説明するためのフローチャートである。
図12は、本発明の第4の実施形態による電力制御装置の構成を示すブロック図である。
図13は、投機的電力状態変更判定装置の詳細な構成例を示す図である。
図14は、本発明の第4の実施形態による電力制御装置の動作手順を説明するためのフローチャートである。
図15は、過去の成功率を計算する手順の一例を示すフローチャートである。
図16は、成功率の計算を行う装置の構成を示すブロック図である。
図17は、プログラムの切り替え時に、プログラムの動作状態に応じた値で、電力コンテキスト記憶装置の情報を更新する装置の構成の一例を示すブロック図である。
図18は、投機的電力状態変更判定装置の詳細な構成例を示す図である。
図19は、通常最小時間の計算手順の一例を示すフローチャートである。
図20は、本発明の第6の実施形態による電力制御装置の構成を示すブロック図である。
図21は、電力スケジューラの詳細な構成例を示す図である。
図22は、本発明の第6の実施形態に係る電力制御装置の動作手順を説明するためのフローチャートである。
図23は、本発明の第6の実施形態に係る電力制御装置の動作タイミングを示す図である。
図24は、電力スケジューラの詳細な構成例を示す図である。
図25は、本発明の第8の実施形態による電力制御装置の構成を示すブロック図である。
図26は、負荷電力判定装置の詳細な構成例を示す図である。
図27は、本発明の第8の実施形態に係る電力制御装置の動作手順を説明するためのフローチャートである。
図28は、本発明の第9の実施形態による電力制御装置の構成を示すブロック図である。
図29は、電源グループ記憶装置の論理的な構成例を示す図である。
図30は、プロセッサと電源グループ記憶装置の物理的な配置例を示す図である。
図31は、熱分散のためのプログラム割り当ての例を示す図である。
図32は、理想的な電圧変更の例を示す図である。
図33は、現実的な遷移時間を伴う電圧変更の例を示す図である。
図34は、消費電力の観点からの効率的なスケジューリングの例を示す図である。
図35は、消費電力の観点からの非効率なスケジューリングの例を示す図である。
符号の説明
ZA101 電力状態変更装置
ZA102 電力制御レジスタ
ZA103 電力制御情報
ZA104 プロセッサバスアクセス制御装置
ZA105 電力コンテキスト記憶装置
ZA106 電力コンテキスト退避復帰制御装置
ZB101 電力コンテキスト参照装置
ZC101 電力先行制御装置
ZD101 投機的電力状態変更装置
ZF101 電力スケジューラ
ZF103 プログラム割り当て装置
ZH101 負荷電力判定装置
ZI101 電力グループ記憶装置