(57)【要約】【課題】電源電圧及びクロック周波数を動作中に動的に切換えることにより、ＣＭＯＳ−ＬＳＩ回路の消費電力を抑制する電力制御方法において、切換えが頻発することによるプロセッサ処理時間の損失を抑制する。【解決手段】制御頻度決定手段を電力制御プログラム中に設けて、切換のための諸機能を起動するか否かを過去の切換回数及び現在のプロセッサ動作状況に従って決定することにより、切換回数が過多となる事を防止する。【選択図】　図１
2004029983.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラムを実行するプロセッサと、
上記プロセッサの動作クロック周波数を制御するクロック周波数制御回路と、
上記プロセッサの電源電圧を制御する電源電圧制御回路とを有し、
上記アプリケーションプログラムは、上記プロセッサの動作クロック周波数及び電源電圧を切り換えるか否かの判断を行う所定ポイントが設定されており、
上記プロセッサは、上記アプリケーションプログラムを実行に伴って現れる上記所定ポイントのうち、上記判断を行う頻度を制御する半導体装置。
【請求項２】
請求項１において、
上記プロセッサの動作クロック周波数及び電源電圧の切り換えが行われた切り換え回数をカウントし、
上記切り換え回数が大きいほど上記頻度を低くし、上記切り換え回数が小さいほど上記頻度を高くする半導体装置。
【請求項３】
請求項１において、
上記クロック周波数制御回路は第１の動作クロック周波数と上記第１の動作クロック周波数よりも低い周波数の第２の動作クロック周波数とを切り換え、
上記プロセッサは上記第１の動作クロック周波数で動作している場合には、上記判断を行う頻度を低くする半導体装置。
【請求項４】
請求項１において、
上記クロック周波数制御回路は第１の動作クロック周波数と上記第１の動作クロック周波数よりも低い周波数の第２の動作クロック周波数とを切り換え、
上記プロセッサは上記第２の動作クロック周波数で動作している場合には、上記判断を行う頻度を高くする半導体装置。
【請求項５】
請求項１において、
上記所定ポイントは、上記アプリケーションプログラムに設けられた割込命令として設定され、
上記プロセッサは、上記割込命令以降の上記アプリケーションプログラムの実行に要する時間と上記割込命令以降の上記アプリケーションプログラムの実行に許容される時間とを比較することにより上記プロセッサの動作クロック周波数及び電源電圧を決定する半導体装置。
【請求項６】
請求項１において、
上記所定ポイントは、一定時間間隔で発生する割込命令として設定され、
上記プロセッサは、上記割込命令以降の上記アプリケーションプログラムの実行で発生可能なデータ量と上記割込命令以降の上記アプリケーションプログラムの実行で生じるデータ量とを比較することにより上記プロセッサの動作クロック周波数及び電源電圧を決定する半導体装置。
【請求項７】
請求項１において、
上記アプリケーションプログラムはリアルタイム処理を要求されるプログラムである半導体装置。
【請求項８】
アプリケーションプログラムを実行するプロセッサの動作クロック周波数及び電源電圧を制御することにより消費電力を制御するプログラムであって、
上記消費電力を制御する頻度を決定する第１ステップと、
上記第１ステップで定められた頻度にしたがって、上記アプリケーションプログラムの実行中に現れる所定ポイントにおいて上記消費電力を制御するか否かの判断を行う第２ステップと、
上記プロセッサの動作クロック周波数及び電源電圧を決定する第３ステップとを上記プロセッサにより実行可能なプログラム。
【請求項９】
請求項８において、
上記第１ステップにおいて、上記プロセッサの動作クロック周波数及び電源電圧の切り換えが行われた切り換え回数をカウントし、上記切り換え回数が大きいほど上記頻度を低くし、上記切り換え回数が小さいほど上記頻度を高くするプログラム。
【請求項１０】
請求項８において、
上記第３ステップにおいて、上記プロセッサは第１の動作クロック周波数及び上記第１の動作クロック周波数よりも低い周波数の第２の動作クロック周波数のいずれかで動作するように決定され、
上記第１ステップにおいて、上記プロセッサが上記第１の動作クロック周波数で動作している場合には、上記判断を行う頻度を低くするプログラム。
【請求項１１】
請求項８において、
上記第３ステップにおいて、上記プロセッサは第１の動作クロック周波数及び上記第１の動作クロック周波数よりも低い周波数の第２の動作クロック周波数のいずれかで動作するように決定され、
上記第１ステップにおいて、上記プロセッサが上記第２の動作クロック周波数で動作している場合には、上記判断を行う頻度を高くするプログラム。
【請求項１２】
請求項８において、
上記所定ポイントは、上記アプリケーションプログラムに設けられた割込命令として設定され、
上記第３ステップにおいて、上記割込命令以降の上記アプリケーションプログラムの実行に要する時間と上記割込命令以降の上記アプリケーションプログラムの実行に許容される時間とを比較することにより上記決定を行うプログラム。
【請求項１３】
請求項８において、
上記所定ポイントは、一定時間間隔で発生する割込命令として設定され、
上記第３ステップにおいて、上記割込命令以降の上記アプリケーションプログラムの実行で発生可能なデータ量と上記割込命令以降の上記アプリケーションプログラムの実行で生じるデータ量とを比較することにより上記決定を行うプログラム。
【請求項１４】
請求項８において、
上記プログラムを格納したコンピュータで読みとり可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、その稼働中に電力を動的に管理することにより消費電力を削減可能な集積回路またはそのプログラムに関する。
【０００２】
【従来の技術】
集積回路の稼働中の平均消費電力を抑制するため、集積回路への供給電力を抑制する方法が提案されている。具体的には、当該集積回路を動作させる電源電圧及びクロック周波数を動作中に低下させる。
【０００３】
現在、低消費電力動作を要求される集積回路は通常、ＣＭＯＳ（相補性ＭＯＳ）回路で構成されている。ＣＭＯＳ回路の消費電力はクロック周波数の低下に比例して低下する。さらに、クロック周波数を低下させると動作に必要な電源電圧も低下するため、相乗的に消費電力を削減できる。以上の理由から、Ｐ＝ｆ×Ｖ２（Ｐ：消費電力、ｆ：クロック周波数、Ｖ：電源電圧）と定式化される。このため、クロック周波数は、当該集積回路が所定のデータ処理作業を完了する為に必要な最低周波数とし、電源電圧は、当該最低周波数のクロック周波数に対応する最低値に設定することが、消費電力削減のためには理想的である。
【０００４】
この方法を実用化するには、集積回路に与えられた処理の負荷量、すなわち所定の時間内にどれだけのデータ処理を行なう必要があるか、を予め知っておかねばならない。負荷量が未知であれば、集積回路はその可能な最大のデータ処理作業を完了するよう最高速度で動作せねばならないからである。このため、負荷量を推定してマイクロプロセッサの消費電力を制御する方法が開示されている。その代表例として信学技報ＩＣＤ２００１−３２　　ｐｐ５９−６６　（２００１−０５）、川口他「低電力実時間組込システムのためのＯＳ，アプリケーション，ハードウェア協調によるＣＶＳ（Ｃｏｏｐｅｒａｔｉｖｅ　Ｖｏｌｔａｇｅ　Ｓｃａｌｉｎｇ）と電圧ホッピング」を挙げる。同様の内容がＰｒｏｃｅｅｄｉｎｇｓ　ｏｆ　Ａｓｉａ　ａｎｄ　Ｓｏｕｔｈ　Ｐａｃｉｆｉｃ　Ｄｅｓｉｇｎ　Ａｕｔｏｍａｔｉｏｎ　Ｃｏｎｆｅｒｅｎｃｅｓ　２０００，　ｐｐ．３８１−３８６，　Ｓ．Ｌｅｅ　ａｎｄ　Ｔ．Ｓａｋｕｒａｉ，　”Ｒｕｎ−ｔｉｍｅ　ｐｏｗｅｒ　ｃｏｎｔｒｏｌ　ｓｃｈｅｍｅ　ｕｓｉｎｇ　ｓｏｆｔｗａｒｅ　ｆｅｅｄｂａｃｋ　ｌｏｏｐ　ｆｏｒ　ｌｏｗ−ｐｏｗｅｒ　ｒｅａｌ−ｔｉｍｅ　ａｐｐｌｉｃａｔｉｏｎｓ”　に開示されている。
【０００５】
上記文献記載の技術は以下の通りである。実行すべき処理を何時までに完了すべきか（デッドライン時刻）、処理を完了するために実行すべきプログラムとその順序、実行される各プログラムの最長実行時間が、予めわかっているものとする。第１のステップでは、プログラムを完了させるために与えられた残り時間である、デッドライン時刻と現在時刻の差を求める。第２のステップでは、上記の残り時間と実行されるべきプログラムの最長実行時間に基づき、次に実行するプログラムで許容される処理時間を算出する。第３のステップでは、許容される処理時間と次に実行するプログラムの最長実行時間とを比較する。ここで前者が後者に対して２倍以上の長さであれば、当該プロセッサの処理速度を１／２に落しても最終的なデッドライン時刻は守られる。従って、クロック周波数を１／２に落し、電源電圧も対応する値に低下させて、当該プロセッサを動作させる。
【０００６】
【発明が解決しようとする課題】
しかしながら従来の方法は、クロック周波数および電源電圧が周期的に決定されるため、両者が頻繁に変更される事態が生じ得る。本発明者らは、プロセッサへの負荷が最高性能の２／３（６７％）前後となった場合、従来のクロック周波数および電源電圧を制御する方法（以下、ＦＶ制御方法という）においてはクロック周波数が頻繁に変更されるという問題を見いだした。すなわち、まず高速クロック周波数ＦＨで実行を開始し、多少処理が進んだ段階で時間余裕が生じ、あるタイムスロットで低いクロック周波数ＦＬに低下するよう制御される。この結果、時間余裕が消費されて次のタイムスロットではクロック周波数を再びＦＨに上げるよう制御される。
【０００７】
クロック周波数および電源電圧を制御する場合にはプロセッサの動作が過渡的に不安定になるため、制御中はデータ処理を休止する必要がある。このために必要な時間は、プロセッサによっても異なるが、約０．１ミリ秒要し、これは２０，０００命令を実行可能な時間に相当する。この様に大きな時間が空費されるのに応じて高速クロック周波数ＦＨで動作する時間が長くなり、消費電力の十分な低減効果が得られなくなるおそれがある。例えば、ＭＰＥＧ４規格による映像符号／復号処理を行う場合、プロセッサは１秒間に２０フレームの画像を処理する必要があるため、１フレームの画像を５０ミリ秒（１／２０秒）以下の時間で処理しなければならない。前記参考文献では、ＦＶ制御のためのチェックをマクロブロックの処理毎に行うとしている。マクロブロックは１フレームにつき約１００存在するため、最悪の場合、ＦＶ切り換えが１フレームの処理中約１００回生じ、５０ミリ秒中の１０ミリ秒がＦＶ切り換えのためだけに空費され、プロセッサ本来の性能を大きく損なう結果となる。
【０００８】
このように、クロック周波数および電源電圧を変更するタイミングが稠密に与えられていると、頻繁な変更が生じた場合に十分な消費電力低減効果を得ることができない。一方、変更するタイミングを過少に設定すると、負荷が軽い場合にも最高クロック周波数で動作する時間が長くなり、この場合も十分な消費電力削減効果を得ることができない。
【０００９】
【課題を解決するための手段】
上記課題を解決するために、本発明ではＦＶ制御のチェック回数を常に適正な頻度に保つためにチェック間隔を動的に制御する。
【００１０】
具体的には、アプリケーションプログラムを実行するプロセッサと、プロセッサの動作クロック周波数を制御するクロック周波数制御回路と、プロセッサの電源電圧を制御する電源電圧制御回路とを有し、アプリケーションプログラムは、プロセッサの動作クロック周波数及び電源電圧を切り換えるか否かの判断を行う所定ポイントが設定されており、プロセッサは、アプリケーションプログラムを実行に伴って現れる所定ポイントのうち、判断を行う頻度を制御する半導体装置を提供する。
【００１１】
または、アプリケーションプログラムを実行するプロセッサの動作クロック周波数及び電源電圧を制御することにより消費電力を制御するプログラムであって、消費電力を制御する頻度を決定する第１ステップと、第１ステップで定められた頻度にしたがって、アプリケーションプログラムの実行中に現れる所定ポイントにおいて消費電力を制御するか否かの判断を行う第２ステップと、プロセッサの動作クロック周波数及び電源電圧を決定する第３ステップとをプロセッサにより実行可能なプログラム、またはかかるプログラムを格納したコンピュータ読みとり可能な記録媒体を提供する。
【００１２】
【発明の実施の形態】
本発明の集積回路のハードウェア構成を図２を用いて説明する。集積回路の例としてマイクロプロセッサを挙げて説明する。マイクロプロセッサＭＰは、中央処理装置ＣＰＵ、読出しメモリＲＯＭ、主メモリＲＡＭ、入出力回路Ｉ／Ｏ、タイマＴＭが備えられている。これらは内部バスＢＵＳにより接続され、相互にデータを授受できる。なお、これらの回路ブロックは単一のチップに実装されていても、また複数のチップに分かれていてもよい。
【００１３】
マイクロプロセッサＭＰには、電源調整回路ＰＣＣから電源ＰＳが供給される。またタイマＴＭ以外の回路ブロックには、クロック調整回路ＦＣＣからクロック信号ＣＫが供給される。中央処理装置ＣＰＵはプログラムカウンタＰＣを備え、中央処理装置ＣＰＵ上で動作するプログラムの実行番地を指定する。
【００１４】
読出しメモリＲＯＭには、中央処理装置ＣＰＵで実行される少なくとも２種類のプログラムが格納されている。第１種類のプログラムが電力管理プログラムＰＭＰであり、第２種類のプログラムがアプリケーションプログラムＡＰである。電力管理プログラムＰＭＰは、本発明による方法によりマイクロプロセッサＭＰの消費電力を低下させる機能を有する。電力管理プログラムＰＭＰは、電力制御プログラムＰＣＰと初期設定サブプログラムＩＮＴからなる。これらの詳細は後述する。アプリケーションプログラムＡＰは、マイクロプロセッサＭＰを用いてユーザに様々なサービスを提供するプログラムであり、たとえばＭＰＥＧ映像復号プログラムなどが相当する。
【００１５】
主メモリＲＡＭは、中央処理装置ＣＰＵが動作する際の作業記憶領域として使用される。主メモリＲＡＭには、アプリケーションプログラムＡＰが生成するデータ（たとえば映像データ）を格納する出力バッファ領域ＢＵＦと、データを書き込む出力バッファ領域ＢＵＦのアドレスを示すポインタ変数ＰＴとが設けられているものとする。
【００１６】
入出力回路Ｉ／Ｏは、マイクロプロセッサＭＰと外部の何等かの電子装置（図示せず）との間のデータ授受を行なう。また、入出力回路Ｉ／Ｏから電圧制御信号ＰＣＳ及び周波数制御信号ＦＣＳが出力され、電源調整回路ＰＣＣ及びクロック調整回路ＦＣＣに与えられる。
【００１７】
タイマＴＭには現在時刻レジスタＴＲが設けられ、内部バスＢＵＳを経由して中央処理装置ＣＰＵ等に時刻情報を供給する。また、タイマＴＭから中央処理装置ＣＰＵへは割込信号線ＩＴＲが接続されており、現在時刻レジスタＴＲが特定の時刻になった時に内部バスＢＵＳを介さずに中央処理装置ＣＰＵへ割込信号を送ることができる。割込を発生するタイミングは、割込間隔レジスタＩＲにより制御され、割込間隔レジスタＩＲに設定された等時間間隔で割込を発生する。
【００１８】
なお、図２の構成例では電源調整回路ＰＣＣ及びクロック調整回路ＦＣＣはマイクロプロセッサＭＰの外部に設けられるものとしたが、同じチップ上に設けても良い。
【００１９】
図１を用いて電力管理プログラムＰＭＰを説明する。電力管理プログラムＰＭＰは電力制御プログラムＰＣＰと初期設定プログラムＩＮＴとから構成されており、それぞれ、図１（ａ）及び図１（ｂ）に示している。本発明では、最初に初期設定プログラムＩＮＴを実行したのち、アプリケーションプログラムＡＰを実行し、アプリケーションプログラムＡＰ実行中に電力制御プログラムＰＣＳを所定のタイミングで起動することにより消費電力を低減する。また、アプリケーションプログラムＡＰはリアルタイム処理が要求されるプログラムである。
【００２０】
図１（ａ）は電力制御プログラムＰＣＰの処理の概要を示す流れ図である。まず制御頻度を決定する（ステップ１０１）。ＦＶ制御を実行する場合（ステップ１０２でｙｅｓの場合）は、タイマＴＭにより現在の時刻情報を得る（ステップ１０３）。次にアプリケーションプログラムＡＰの処理の進捗状況を把握する（ステップ１０４）。ステップ１０３とステップ１０４の結果を元に、動作クロック周波数を決定し（ステップ１０５）、更に電源電圧を決定する（ステップ１０６）。最後に、決定されたクロック周波数及び電源電圧を設定して（ステップ１０７）、プログラムを終了する（ステップ１０８）。
【００２１】
図１（ｂ）は、電力制御プログラムＰＣＰに先だって実行される初期設定プログラムＩＮＴの処理の概要を示す流れ図である。まずアプリケーションプログラムＡＰの処理の進捗状況をチェックするタイミングを設定する（ステップ１２１）。次に、電力制御プログラムＰＣＰのステップ１０６においてクロック周波数を決定する為に必要な諸パラメータを設定する（ステップ１２２）。次に、電力制御プログラムＰＣＰのステップ１０１において制御頻度を決定する為に必要な諸パラメータを設定して（ステップ１２３）、プログラムを終了する（ステップ１２４）。
【００２２】
本発明の特に顕著な構成は、電力制御プログラムＰＣＰの制御頻度を決定するステップ１０１である。そこでまず、電力制御プログラムＰＣＰのステップ１０３〜１０７および初期設定プログラムＩＮＴのステップ１２１〜１２３の構成例を簡単に説明する。なお以下の説明においては、マイクロプロセッサＭＰは２種類のクロック周波数ＦＨ（高速動作）及び１／２Ｆｍａｘ（低速動作）で動作し、電源電圧も対応する２種類の値を供給されるものとする。例えば、クロック周波数ＦＨはマイクロプロセッサの最高周波数Ｆｍａｘとし、クロック周波数ＦＬを１／２Ｆｍａｘとする。もちろん、クロック周波数又は電源電圧を３種類以上設定しても良い。
【００２３】
電力制御プログラムＰＣＰのステップ１０５には２通りの決定方法がある。第１の方法は、アプリケーションプログラムＡＰの処理が一定量だけ進んだ時点での時刻情報を基準とするものである。第２の方法は、一定の時間が経過した時点でのアプリケーションプログラムＡＰの処理の進捗状況を基準とするものである。以下では、アプリケーションプログラムＡＰとしてＭＰＥＧ映像復号プログラムを例にとって説明する。ＭＰＥＧ映像復号プログラムの流れ図を図３に示す。まず復号映像を初期化（ステップ４０１）した後、映像（フレーム）を構成する小区画であるマクロブロック（ＭＢ）を単位として映像データの復号を行ない（ステップ４０２）、これをフレーム完了まで繰返す（ステップ４０３）。１フレームの映像は９９個のＭＢで構成されている（ＱＣＩＦサイズの場合）ので、この繰返しは９９回実行される。以上が完了すると、復号されたフレームを出力して（ステップ４０４）当該フレームの復号を終了する（ステップ４０５）。
【００２４】
最初に、第１の方法における初期設定プログラムＩＮＴの動作を説明する。
【００２５】
第１の方法においては、アプリケーションプログラムＡＰの規定個所に割込命令４５０を挿入することにより、チェックタイミングを設定する（ステップ１２１）。例えば、図４の例では割込命令４５０を図示の２箇所に挿入する。中央処理装置ＣＰＵは、割込命令４５０を受けて電力制御プログラムＰＣＰを起動する。
【００２６】
時間余裕評価用パラメータは以下のように設定する（ステップ１２２）。第１の方法では処理が一定量だけ進んだ時点での時刻を評価することにより、進捗の良否を判断する。このため、割込がどのような時間間隔で生じるべきかを算出する。アプリケーションプログラムＡＰの映像初期化（ステップ４０１）の最長実行時間ＷＣＥＴ１（Ｗｏｒｓｔ　Ｃａｓｅ　Ｅｘｅｃｕｔｉｏｎ　Ｔｉｍｅ　：　以下ＷＣＥＴという）と、ＭＢ復号（ステップ４０２）の最長実行時間ＷＣＥＴ２とを取得する（ステップ５０２）。なお、最長実行時間ＷＣＥＴとは、マイクロプロセッサＭＰが当該処理をその最高能力で実行した場合に最も時間を要した場合の時間をいう。言い換えれば、マイクロプロセッサＭＰは、当該処理を最長実行時間ＷＣＥＴ以内に必ず処理できることになる。図４の例においては、アプリケーションＡＰ処理全体のＷＣＥＴ０は、ステップ４５０が９９回繰り返されることから、全体ＷＣＥＴ（ＷＣＥＴ０）＝ＷＣＥＴ１＋９９×ＷＣＥＴ２として算出できる。したがって、マイクロプロセッサＭＰが処理を完了すべき時刻であるデッドライン時刻ＤＬＴは（現在時刻＋ＷＣＥＴ０）として算出可能である。なお、最長実行時間ＷＣＥＴの値はアプリケーションプログラムＡＰ内の適当な個所に記述しておけばよい。
【００２７】
図４は第１の方法における初期設定プログラムＩＮＴにおける制御頻度決定用パラメータの設定方法を示したものである。ここでは、まず電力制御プログラムＰＣＰを何回起動したか（制御の実行の有無は問わない）を示す通過回数カウンタをゼロにリセットし（ステップ６０１）、次にクロック周波数及び電源電圧が何回変更されたかを示す変更回数カウンタをゼロにリセットする（ステップ６０２）。これらのカウンタは、電力制御プログラムＰＣＰの制御頻度の決定のために使用される。
【００２８】
次に電力制御プログラムＰＣＰの動作について説明する。電力制御プログラムＰＣＰのステップ１０３では、タイマＴＭの現在時刻レジスタＴＲを読みとる。次に、第１の方法においては割込命令４５０がアプリケーションプログラムＡＰの所定の個所に設けられているため、進捗監視（ステップ１０４）は不要となる。
【００２９】
図５は、第１の方法におけるクロック周波数の決定（ステップ１０５）を示す流れ図である。まず、全体ＷＣＥＴ（ＷＣＥＴ０）の値を、先に求めたＷＣＥＴ０から現在完了した処理に対応するＷＣＥＴを除いた値に更新する（ステップ９０１）。この結果、全体ＷＣＥＴは、今後更に行なわなければならない処理のＷＣＥＴを表す。次に、今後の処理で使用可能な実行可能時間を算出する（ステップ９０２）。これは、デッドライン時刻ＤＬＴから現在時刻を引算することによって求められる。実行可能時間から全体ＷＣＥＴを引算した値が時間余裕である（ステップ９０３）。この時間余裕を、次に行う処理のＷＣＥＴ（ＷＣＥＴ３）と比較する（ステップ９０４）。これは次のような理由による。クロック周波数ＦＨがクロック周波数ＦＬの２倍であれば、クロック周波数ＦＬで次の処理を行う場合に要する時間は２×ＷＣＥＴ３となる。そのため、時間余裕＋ＷＣＥＴ３＞２×ＷＣＥＴ３であれば、クロック周波数ＦＬで動作させてもよい。よって、時間余裕＞ＷＣＥＴ３であればクロック周波数をＦＬにして処理を継続し、そうでなければクロック周波数をそのままにして処理を継続する（ステップ９０４〜９０６）。
【００３０】
次にステップ１０６では、ステップ１０５で決定されたクロック周波数に対応する電源電圧を決定する。この決定のためには、例えばクロック周波数Ｆと電源電圧Ｖの対応を示すＦＶ対応表を予め用意して決定するようにすればよい。ステップ１０７では、まず決定されたクロック周波数及び電源電圧の設定が現在の値と異なっているかどうか調べる。変更が生じていれば、新たな電圧に対応する電圧制御信号ＰＣＳを入出力回路Ｉ／Ｏから電源調整回路ＰＣＣに出力し、次に新たなクロック周波数に対応する周波数制御信号ＦＣＳを入出力回路Ｉ／Ｏからクロック調整回路ＦＣＣに出力する。その後電源電圧が安定するまで所定時間待ち、変更回数カウンタを１増やす。
【００３１】
次に、第２の方法における初期設定プログラムＩＮＴの動作を説明する。第２の方法は前述の通り、一定の時間間隔でアプリケーションプログラムＡＰの進捗状況を評価する方法である。
【００３２】
第２の方法においては、チェックは一定時間間隔で行なうため、設定はタイマＴＭの割込間隔レジスタＩＲを所定の値に設定する（ステップ１２１）。また、第２の方法で用いる時間余裕評価用パラメータは、割込間隔時間内にアプリケーションプログラムＡＰが最悪でも生成可能な最低データ量（Ｗｏｒｓｔ　Ｃａｓｅ　Ｏｕｔｐｕｔ　Ａｍｏｕｎｔ　：　以下ＷＣＯＡという）、ポインタ終値、デッドライン時刻ＤＬＴの３種類である。なお、最低データ量ＷＣＯＡとは、マイクロプロセッサＭＰが当該処理をその最高能力で実行した場合に最も少ないデータ量しか生成できなかった場合のデータ量をいう。言い換えれば、マイクロプロセッサＭＰは、割込間隔時間内に最低データ量ＷＣＯＡ以降のデータ量を必ず生成できることになる。ポインタ終値とは、アプリケーションプログラムＡＰによるデータ生成が全て完了した時点でポインタＰＴがとる値である。デッドライン時刻ＤＬＴは処理を完了すべき時刻であり、現在時刻をもとに適当に算出する。なお、最低データ量ＷＣＯＡの値はアプリケーションプログラムＡＰ内の適当な個所に記述しておけばよい。
【００３３】
次に、制御頻度決定用パラメータの設定（ステップ１２３）は、第１の方法の場合と全く同様であり、図４に示した通りである。
【００３４】
次に電力制御プログラムＰＣＰの動作について説明する。まず、第２の方法では電力制御プログラムＰＣＰのステップ１０３は不要となる。これは割込が等時間間隔で行なわれ、電力制御プログラムＰＣＰが起動される時刻は予め定められているためである。ステップ１０４では、ポインタＰＴの現在の値を取得する。アプリケーションプログラムＡＰの処理により出力バッファＢＵＦに出力されたデータ量を把握することにより、進捗を監視することができる。
【００３５】
図６は、第２の方法におけるクロック周波数の決定（ステップ１０５）を示す流れ図である。まず、今後のアプリケーションプログラムＡＰの処理により、出力バッファＢＵＦへ出力される量を、ポインタ終値からポインタ現在地を減ずることにより算出する（ステップ１６０１）。次に、今後出力可能な最低データ量を算出する（ステップ１６０２）。これは、デッドライン時刻から現在時刻の差を割込時間間隔ＴＩＴＲで割り、これに最低データ量ＷＣＯＡを掛けることで求められる。以上２ステップの結果により、現時点での出力余裕は出力可能な最低データ量と出力予定量の差として計算できる（ステップ１６０３）。この出力余裕を、次に行なう処理のＷＣＯＡと比較し（ステップ１６０４）、出力余裕の方が大きければ次の処理に２回分の時間をかけるだけの余裕があることになるから、クロック周波数を１／２に落して良い（ステップ１６０５）。そうでなければクロック周波数は落さない（ステップ１６０６）。クロック周波数が決定した後の電源電圧の決定（ステップ１０６）及びクロック周波数・電源電圧設定（ステップ１０７）は、第１の方法の場合と同じである。
【００３６】
以下に、電力制御プログラムＰＣＰの制御頻度の決定（ステップ１０１）について説明する。以下の構成例は、前述の第１の方法及び第２の方法のいずれとも組合せて実施することが可能である。
【００３７】
図７は、ステップ１０１の第１の例を示す流れ図である。通過回数カウンタを１だけ増やし（ステップ１７０１）た後、通過回数カウンタの値が特定の定数Ｎの倍数であるかを調べる（ステップ１７０２）。結果がｙｅｓであればチェック実行を指示するフラグ変数の値を”ｙｅｓ”に設定し（ステップ１７０３）、そうでなければ”ｎｏ”に設定する（ステップ１７０４）。上記フラグ変数の値が電力制御プログラムＰＣＰにおけるステップ１０２で判定に利用され、ステップ１０３〜１０７が実行されるか否かが制御される。Ｎの値はプログラム中で直接指定してもよく、変更回数によって異ならせてもよい。例えば図８に示すような対応表をもたせる。このように対応表は変更回数カウンタと制御頻度の間隔を示す変数であるＮとを関連づけている。変更回数が大きいということはＦＶ制御のためにプロセッサの性能を空費しているおそれが大きいため、変更回数が大きい場合には制御頻度の間隔も大きくするものである。図示の例では変更回数カウンタの値が２つ増える度にＮが倍増する様に設定されている。この様に設定すると、クロック周波数および電源電圧が頻繁に変更された場合、制御頻度が指数関数的に長くなっていくので、たとえば従来技術において９９回切換が生じていた場合を１２回の切換に低減でき、電源電圧切換による時間の空費を大きく低減する事が可能になる。対応表によらず、変更回数カウンタの値から演算してＮを求めるようにしてもよい。
【００３８】
図９は、ステップ１０１の第２の例を示す流れ図である。この例においては、変更回数に応じて間隔Ｎを求めた後（ステップ２００１〜２００２）、マイクロプロセッサＭＰが現在、クロック周波数１／２Ｆｍａｘ（低速）で動作しているかどうかを調べる（ステップ２００３）。結果がｙｅｓであれば、間隔を示す変数であるＮの値を１に変更する（ステップ２００４）。これにより、マイクロプロセッサＭＰが低速動作している場合は制御頻度が低下せず、マイクロプロセッサＭＰの負荷が急増した場合でも遅滞無くクロック周波数をＦｍａｘ（高速）に切換えることが可能となる。一方、クロック周波数Ｆｍａｘ（高速）で動作している場合には、現在の制御頻度Ｎが８未満であるか否かを調べ（ステップ２１０４）、Ｎが８以下であれば規定値（例えば８）に変更する（ステップ２１０５）。これにより、マイクロプロセッサＭＰが高速動作している場合には時間余裕または処理量余裕を蓄積し、それ以降にクロック周波数および電源電圧が過度に頻繁に変更されることを防ぐことができる。なお、第２の例において、ステップ２００３〜２００４またはステップ２１０３〜２１０５のいずれか一方のみを使用してもよい。
【００３９】
以上、本発明による電力管理プログラムＰＭＰの動作を述べたが、電力管理プログラムＰＣＰは１つの独立したソフトウェアプログラムとして構成しても良く、また既存のソフトウェアシステムの一部として構成しても良い。特に、アプリケーションプログラムＡＰがオペレーティングシステム（ＯＳ）の管理下で稼動する環境においては、ＯＳの機能の一部として本発明を実施するのが好適である。また、電力管理プログラムＭＰＭあるいはそれを一部とするプログラムはコンピュータに読みとり可能な光学的記録媒体や磁気記録媒体に格納されて取引することも可能である。また、マイクロプロセッサＭＰのクロック周波数及び電源電圧の双方が制御されるものとして説明したが、消費電力削減効果は小さくなるがいずれか一方の制御を行う場合においても本発明を適用することが可能である。
【００４０】
【発明の効果】
本発明によれば、多様な負荷に対して効果的な消費電力を削減できる。
【図面の簡単な説明】
【図１】電力管理プログラムＰＭＰの構成を示す流れ図である。
【図２】本発明の集積回路のハードウェア構成を示すブロック図である。
【図３】アプリケーションプログラムＡＰに割込命令４５０を挿入した例を示す流れ図である。
【図４】制御頻度決定用パラメータの設定プログラム１２３を示す流れ図である。
【図５】クロック周波数を決定する第１の方法を示す流れ図である。
【図６】クロック周波数を決定する第２の方法を示す流れ図である。
【図７】電力制御プログラムＰＣＰのステップ１０１の第１の例を示す流れ図である。
【図８】対応表１９００の構成例を示す図である。
【図９】電力制御プログラムＰＣＰのステップ１０１の第２の例を示す流れ図である。
【符号の説明】
ＭＰ：マイクロプロセッサ、Ｉ／Ｏ：入出力回路、ＣＰＵ：中央処理装置、ＲＯＭ：読出しメモリ、ＲＡＭ：主メモリ、ＴＭ：タイマ、ＰＣＣ：電源調整回路、ＦＣＣ：クロック調整回路。
【図１】
2004029983.tif 000003
【図２】
2004029983.tif 000004
【図３】
2004029983.tif 000005
【図４】
2004029983.tif 000006
【図５】
2004029983.tif 000007
【図６】
2004029983.tif 000008
【図７】
2004029983.tif 000009
【図８】
2004029983.tif 000010
【図９】
2004029983.tif 000011