(57)【要約】【課題】プロセッサの実質的な使用率に見合った消費電力を制御することができるようにする。【解決手段】ＣＰＵ２には、単位時間当りの実行命令数を保持するレジスタ２１が内蔵されている。レジスタ２１に保持される実行命令数は、ＣＰＵ２の処理状況によって変化する。また、ＣＰＵ２には、クロック処理回路２２が内蔵されている。このクロック処理回路２２は、クロック発振器３から供給されるクロック信号に基づき、ＣＰＵ２で使用する内部クロックを発生する。制御部１４は、省電力を実現するためのソフトウェアに相当するものであり、ＣＰＵ２の単位時間当りのクロック数に対する、単位時間当りの実行命令数の割合に応じて、ＣＰＵ２の内部クロックの周波数を制御する制御機能を有する。クロック処理回路２２は、制御部１４からの指示に従って、内部クロックの周波数を変更する。【選択図】　　図１
2004038291.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサを備えた電子機器に適用されるクロック周波数の制御方法であって、
前記プロセッサの単位時間当りの実行命令数を取得し、
前記プロセッサの単位時間当りのクロック数を取得し、
前記クロック数に対する前記実行命令数の割合が所定値を超えているか否かを判定し、
前記判定の結果に応じて前記プロセッサのクロック周波数を制御することを特徴とするクロック周波数の制御方法。
【請求項２】
前記実行命令数の取得、前記クロック数の取得、前記判定、及び前記クロック周波数の制御からなる一連の処理を、所定の時間間隔で繰り返し実行することを特徴とする請求項１記載のクロック周波数の制御方法。
【請求項３】
プロセッサを備えた電子機器に適用されるクロック周波数の制御方法であって、
前記プロセッサの単位時間当りの実行命令数を取得し、
前記プロセッサの単位時間当りのクロック数を取得し、
前記クロック数に対する前記実行命令数の割合が所定値を超えていないかを判定し、
前記割合が所定値を超えていないと判定した場合には、前記プロセッサのクロック周波数を下げるように制御することを特徴とするクロック周波数の制御方法。
【請求項４】
プロセッサを備えた電子機器に適用されるクロック周波数の制御方法であって、
前記プロセッサの単位時間当りの実行命令数を、所定の時間間隔で取得し、
前記プロセッサの単位時間当りのクロック数を取得し、
前記クロック数に対する、時間的に前後して取得される二つの実行命令数の差の割合が、所定値を超えているか否かを判定し、
前記判定の結果に応じて前記プロセッサのクロック周波数を制御することを特徴とするクロック周波数の制御方法。
【請求項５】
プロセッサを備えた電子機器に適用されるクロック周波数の制御方法であって、
前記プロセッサの単位時間当りの実行命令数を、所定の時間間隔で取得し、
前記プロセッサの単位時間当りのクロック数を、所定の時間間隔で取得し、
時間的に前後して取得される個々のクロック数にそれぞれ所定の重み係数を乗じて互いに加算した値に対する、時間的に前後して取得される個々の実行命令数にそれぞれ所定の重み係数を乗じて互いに加算した値の割合が、所定値を超えているか否かを判定し、
前記判定の結果に応じて前記プロセッサのクロック周波数を制御することを特徴とするクロック周波数の制御方法。
【請求項６】
前記判定の結果、前記割合が所定値を超えていると判定された場合には前記クロック周波数を上げ、前記割合が所定値を超えていないと判定された場合には前記クロック周波数を下げることを特徴とする請求項１、４、５のいずれかに記載のクロック周波数の制御方法。
【請求項７】
前記所定の時間間隔を可変にすることを特徴とする請求項２、４、５のいずれかに記載のクロック周波数の制御方法。
【請求項８】
前記所定値を可変にすることを特徴とする請求項１、３、４、５のいずれかに記載のクロック周波数の制御方法。
【請求項９】
クロック信号を供給するクロック発振器と、
前記クロック発振器から供給されるクロック信号に基づいて内部クロックを生成するプロセッサと、
前記プロセッサが生成する内部クロックの単位時間当りのクロック数に対する、単位時間当りの実行命令数の割合に応じて、前記内部クロックの周波数を制御する制御手段と
を具備することを特徴とする電子機器。
【請求項１０】
前記制御手段は、前記クロック数に対する前記実行命令数の割合が所定値を超えているか否かを判定し、前記判定の結果に応じて前記プロセッサのクロック周波数を制御することを特徴とする請求項９記載の電子機器。
【請求項１１】
前記制御手段は、前記クロック数に対する、時間的に前後して取得される二つの実行命令数の差の割合が、所定値を超えているか否かを判定し、前記判定の結果に応じて前記プロセッサのクロック周波数を制御することを特徴とする請求項９記載の電子機器。
【請求項１２】
前記制御手段は、時間的に前後して取得される個々のクロック数にそれぞれ所定の重み係数を乗じて互いに加算した値に対する、時間的に前後して取得される個々の実行命令数にそれぞれ所定の重み係数を乗じて互いに加算した値の割合が、所定値を超えているか否かを判定し、前記判定の結果に応じて前記プロセッサのクロック周波数を制御することを特徴とする請求項９記載の電子機器。
【請求項１３】
前記制御手段は、前記割合が所定値を超えていると判定した場合には前記クロック周波数を上げ、前記割合が所定値を超えていないと判定した場合には前記クロック周波数を下げることを特徴とする請求項１０乃至１２のいずれかに記載の電子機器。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プロセッサのクロック周波数の制御方法に関し、特に、プロセッサを備えた電子機器に適用される電力制御方法に関する。
【０００２】
【従来の技術】
従来、コンピュータなどの電子機器において省電力を行う方法の一つとして、プロセッサ（ＣＰＵなど）の動作クロック周波数（もしくは動作速度）を低下させることによりプロセッサの消費電力を抑える方法がある。この方法では、プロセッサの使用率や、バッテリ容量、プロセッサの発熱状態などを監視し、それらの情報に基づいて省電力制御を行う。
【０００３】
例えば、プロセッサがＩ／Ｏデバイスやメモリをアクセスするごとに所定の記憶領域にビジー状態などを示すフラグがセットされるものである場合、オペレーティングシステム（ＯＳ）（もしくはＯＳに付属するドライバソフトウェア）は、そのフラグのセット回数に基づいてプロセッサの負荷の度合いを取得し、これによりプロセッサの使用率を求めることができる。ＯＳは、例えばプロセッサの使用率が低いと判断した場合には、省電力制御においてプロセッサのクロック周波数を低下させる。
【０００４】
【発明が解決しようとする課題】
しかしながら、ＯＳの側では、ストール処理に起因してプロセッサの実質的な使用率よりも高い値が認識されてしまう傾向がある。特に、Ｉ／Ｏアクセスの回数やキャッシュミスの回数が多い場合にはそのような現象が生じやすい。
【０００５】
すなわち、プロセッサの使用率が実質的に低い状態であっても、ＯＳはその使用率が高いものと判断してしまい、プロセッサのクロック周波数をなかなか低下させようとしないという現象が起こり得る。そのような場合、プロセッサの消費電力を効率よく抑えることができないことになる。
【０００６】
一方、特定のハードウェアを別途設けることによってプロセッサの実質的な使用率を検出できるようにすることも考えられる。しかしながら、そのような特定のハードウェアを新たに設けることは、コストの増大や実装スペースの拡張を招くことになるため、望ましいとは言えない。
【０００７】
また、特開平１１−３５３０５２号公報には、コンピュータのパフォーマンス指標と消費電力指標との比をエネルギー指標とし、このエネルギー指標に基づいてＣＰＵの動作速度（動作周波数）を増減させることにより、省電力とパフォーマンスのバランスをとったパワー・マネージメント処理を実施するプロセッサ動作速度制御方法が開示されている。しかし、この文献の技術は、プロセッサの実質的な使用率に着目して省電力化を行うことを目指したものではない。
【０００８】
本発明は上記実情に鑑みてなされたものであり、プロセッサの実質的な使用率に見合った消費電力を制御する方法および電子機器を提供することを目的とする。
【０００９】
【課題を解決するための手段】
本発明に係るクロック周波数の制御方法は、プロセッサを備えた電子機器に適用されるクロック周波数の制御方法であって、前記プロセッサの単位時間当りの実行命令数を取得し、前記プロセッサの単位時間当りのクロック数を取得し、前記クロック数に対する前記実行命令数の割合が所定値を超えているか否かを判定し、前記判定の結果に応じて前記プロセッサのクロック周波数を制御することを特徴とする。
【００１０】
また、本発明に係るクロック周波数の制御方法は、プロセッサを備えた電子機器に適用されるクロック周波数の制御方法であって、前記プロセッサの単位時間当りの実行命令数を取得し、前記プロセッサの単位時間当りのクロック数を取得し、前記クロック数に対する前記実行命令数の割合が所定値を超えていないかを判定し、前記割合が所定値を超えていないと判定した場合には、前記プロセッサのクロック周波数を下げるように制御することを特徴とする。
【００１１】
また、本発明に係るクロック周波数の制御方法は、プロセッサを備えた電子機器に適用されるクロック周波数の制御方法であって、前記プロセッサの単位時間当りの実行命令数を、所定の時間間隔で取得し、前記プロセッサの単位時間当りのクロック数を取得し、前記クロック数に対する、時間的に前後して取得される二つの実行命令数の差の割合が、所定値を超えているか否かを判定し、前記判定の結果に応じて前記プロセッサのクロック周波数を制御することを特徴とする。
【００１２】
また、本発明に係るクロック周波数の制御方法は、プロセッサを備えた電子機器に適用されるクロック周波数の制御方法であって、前記プロセッサの単位時間当りの実行命令数を、所定の時間間隔で取得し、前記プロセッサの単位時間当りのクロック数を、所定の時間間隔で取得し、時間的に前後して取得される個々のクロック数にそれぞれ所定の重み係数を乗じて互いに加算した値に対する、時間的に前後して取得される個々の実行命令数にそれぞれ所定の重み係数を乗じて互いに加算した値の割合が、所定値を超えているか否かを判定し、前記判定の結果に応じて前記プロセッサのクロック周波数を制御することを特徴とする。
【００１３】
また、本発明に係る電子機器は、クロック信号を供給するクロック発振器と、前記クロック発振器から供給されるクロック信号に基づいて内部クロックを生成するプロセッサと、前記プロセッサが生成する内部クロックの単位時間当りのクロック数に対する、単位時間当りの実行命令数の割合に応じて、前記内部クロックの周波数を制御する制御手段とを具備することを特徴とする。
【００１４】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を説明する。
【００１５】
図１は、本発明の一実施形態に係る電子機器の要部構成を示すブロック図である。
【００１６】
本実施形態に係る電子機器は、例えばパーソナルコンピュータなどの情報機器であり、主メモリ１、ＣＰＵ（Ｃｅｎｔｒａｌ　Ｐｒｏｃｅｓｓｉｎｇ　Ｕｎｉｔ）２、クロック発振器３、Ｉ／Ｏ（Ｉｎｐｕｔ／ｏｕｔｐｕｔ）デバイス４、記録媒体５などを備えている。
【００１７】
主メモリ１は、ＣＰＵ２のワークエリアとして提供され、ＣＰＵ２により処理されるＯＳ（Ｏｐｅｒａｔｉｎｇ　Ｓｙｓｔｅｍ）１１、アプリケーション１２、パワー・マネージメント・ドライバ１３（ＯＳ１１に含まれる）などを保持している。
【００１８】
ＯＳ１１は、アプリケーション１２の動作を制御すると共に、パワー・マネージメント・ドライバ１３の動作をも制御する。アプリケーション１２は、ＯＳ１１の管理下で動作するソフトウェアである。また、パワー・マネージメント・ドライバ１３は、特定のハードウェアに対応した制御を行うソフトウェアドライバの一種であり、特にパワー・マネージメントを行うためのドライバである。
【００１９】
パワー・マネージメント・ドライバ１３には、制御部１４及びタイマ１５が備えられる。制御部１４は、本実施形態における省電力を実現するためのソフトウェアに相当するものであり、ＣＰＵ２の単位時間当りのクロック数（以下、単にクロック数と称す場合がある）に対する、単位時間当りの実行命令数（以下、単に実行命令数と称す場合がある）の割合に応じて、ＣＰＵ２で生成される内部クロックの周波数を制御する制御機能を有する。上記クロック数および実行命令数については、ＣＰＵ２から知得することが可能である。上記制御機能の詳細については後で述べる。また、タイマ１５は、制御部１４によって使用されるものであり、後述するＷａｉｔ時間などをカウントする際に使用される。
【００２０】
ＣＰＵ２は、電子機器全体の制御を司るものであり、主メモリ１２をワークエリアとして使用し、各種ソフトウェアを実行する。このＣＰＵ２には、実行命令数を保持するレジスタ２１が内蔵されている。レジスタ２１に保持される実行命令数は、ＣＰＵ２の処理状況によって変化する。実行命令数は、ＣＰＵ２の外部から参照することが可能である。
【００２１】
また、ＣＰＵ２には、クロック処理回路２２が内蔵されている。このクロック処理回路２２は、クロック発振器３から供給されるクロック信号に基づき、ＣＰＵ２で使用する内部クロックを発生するものである。また、このクロック処理回路２２は、制御部１４からの指示に従って、内部クロックの周波数を変更する。
【００２２】
クロック発振器３は、基本クロック信号を生成してＣＰＵ２（の中のクロック処理回路２２）へ供給するものである。また、Ｉ／Ｏデバイス４は、ＣＰＵ２との間でデータの入出力を行うデバイスである。
【００２３】
記録媒体５は、ＨＤＤ（Ｈａｒｄ　Ｄｉｓｋ　Ｄｒｉｖｅ）などに相当するものであり、本電子機器がパワーオフされる際には、上記ＯＳ１１、アプリケーション１２、パワー・マネージメント・ドライバ１３などの各種ソフトウェアやデータが保存される。
【００２４】
図２は、図１における制御部１４の機能構成の一例を示すブロック図である。
【００２５】
制御部１４は、実行命令数／クロック数取得機能１４１、判定機能１４２、閾値テーブル１４３、クロック周波数変更指示機能１４４、Ｗａｉｔ時間設定機能１４５を備えている。
【００２６】
実行命令数／クロック数取得機能１４１は、Ｗａｉｔ時間設定機能１４５によって所定の時間間隔で起動され、ＣＰＵ２のレジスタ２１にアクセスすることによって実行命令数を取得すると共に、クロック処理回路にアクセスすることによってクロック数を取得するものである。これらの情報は判定機能１４２によって使用される。
【００２７】
判定機能１４２は、実行命令数／クロック数取得機能１４１によって起動され、実行命令数／クロック数取得機能１４１によって取得された実行命令数およびクロック数を用いて所定の演算（後述）を行い、その演算結果が閾値（所定値）を超えているか否かに応じてＣＰＵ２のクロック周波数を上げるべきか下げるべきか（あるいは不変とすべきか）を判定するものである。
【００２８】
上記判定機能１４２で使用される演算の例としては、以下のものが挙げられる。
【００２９】
（演算例１）
演算「Ｉ／Ｉ０」（但し、Ｉは単位時間当りの実行命令数、Ｉ０は単位時間当りのクロック数）を実行する。
【００３０】
（演算例２）
演算「（Ｉｎ−Ｉｎ−１）／Ｉ０」（但し、Ｉｎはｎ番目に取得された単位時間当りの実行命令数、Ｉ０は単位時間当りのクロック数）、もしくは演算「（Ｉｎ−１−Ｉｎ）／Ｉ０」を実行する。
【００３１】
（演算例３）
演算「（Ｉｎ＊αｎ＋Ｉｎ−１＊αｎ−１＋　…）／（Ｉ０ｎ＊αｎ＋Ｉ０（ｎ−１）＊αｎ−１＋　…）」
（但し、Ｉｎはｎ番目に取得された単位時間当りの実行命令数、Ｉ０ｎはｎ番目に取得された単位時間当りのクロック数、αｎはｎ番目に取得された情報に適用される重み係数）を実行する。この場合、例えば、αｎよりもαｎ−１の方を小さい値にし、αｎ−１よりもαｎ−２の方を小さい値にし、…とすることにより、過去に取得された情報よりも最新の情報に重きをおいた演算を実行させることが可能である。なお、重み係数αｎ，αｎ−１，…は、予め所定の記憶領域に記憶しておいた基準の重み係数αに基づき、アルゴリズム等を用いて適宜算出される。
【００３２】
上記判定機能１４２は、上記判定に用いる閾値（所定値）を、閾値テーブル１４３を参照して決定する。閾値テーブル１４３には、図３に示されるように、各種モード（ＣＰＵ２の動作モード）の種類に応じて使用されるべき閾値Ｓの具体的な値が記述されている。図３の例では、ＣＰＵ２が省電力モードのときは閾値Ｓを０．９とし、ＣＰＵ２が標準モードのときは閾値Ｓを０．５とし、ＣＰＵ２が高速モードのときは閾値Ｓを０．１とすることを示している。すわなち、判定機能１４２は、ＣＰＵ２の動作モードに対応する閾値（所定値）を、閾値テーブル１４３を参照することにより決定する。なお、ＣＰＵ２の動作モード（省電力モード・標準モード・高速モードなど）の情報は、パワー・マネージメント・ドライバ１３から取得できるようになっている。
【００３３】
クロック周波数変更指示機能１４４は、判定機能１４２によって起動され、判定機能１４２での演算結果が閾値（所定値）を超えているか否かに応じてＣＰＵ２のクロック周波数を所定分だけ上げ／下げさせる指示をクロック処理回路２２へ送る。この場合のクロック周波数の上げ／下げは、ユーザ側から見てパフォーマンスの変化が殆ど感じられない程度に行う。なお、ＣＰＵ２の現在のクロック周波数は、ＣＰＵ２から取得できるようになっている。
【００３４】
本実施形態ではクロック処理回路２２に対してＣＰＵ２のクロック周波数の変更指示を行う構成を示しているが、代わりに、クロック発振器３に対して生成されるクロック周波数の変更指示を行うように構成してもよい。
【００３５】
Ｗａｉｔ時間設定機能１４５は、クロック周波数変更指示機能１４４によって起動され、予め設定されている待ち時間（Ｗａｉｔ時間）を経過した後に、実行命令数／クロック数取得機能１４１を起動する。なお、ここで設定されているＷａｉｔ時間は、必要に応じて変更することが可能である。例えば、現在設定されているＣＰＵ２の動作モードの種類に相応しいＷａｉｔ時間となるように設定変更を行うようにしてもよい。
【００３６】
次に、図１〜２を参照すると共に、図４〜図６のフローチャートを参照して、本実施形態における３つの動作例を説明する。
【００３７】
（第１の動作例）
図４は、前述の演算例１に対応した動作を示している。
【００３８】
電子機器の起動時においては、判定機能１４２は、ＣＰＵ２の動作モードの種類を認識し、その動作モードに対応する閾値Ｓを、閾値テーブル１４３を参照することによって予め取得する（ステップＡ１）。尚、閾値Ｓは、動作モード変更時にそのモードに対応する値に変わる。
【００３９】
制御部１４の実行命令数／クロック数取得機能１４１により、単位時間当りの実行命令数Ｉ、単位時間当りのクロック数Ｉ０が取得され、これらの情報が判定機能１４２に送られる（ステップＡ２、Ａ３）。
【００４０】
次に、判定機能１４２は、演算「Ｉ／Ｉ０」（但し、Ｉは単位時間当りの実行命令数、Ｉ０は単位時間当りのクロック数）を実行し、その演算結果が閾値Ｓを超えているか否かを判定する（ステップＡ４）。
【００４１】
判定機能１４２により演算結果が閾値Ｓを超えていると判定された場合（ステップＡ４のＹＥＳ）、クロック周波数変更指示機能１４４は、ＣＰＵ２のクロック周波数が最高になっていなければ（ステップＡ５のＮＯ）、そのクロック周波数を所定分だけ上げるための制御を行う（ステップＡ６）。なお、ＣＰＵ２のクロック周波数が最高になっていれば（ステップＡ５のＹＥＳ）、クロック周波数の変更は行わない。
【００４２】
一方、判定機能１４２により演算結果が閾値Ｓを超えていないと判定された場合（ステップＡ４のＮＯ）、クロック周波数変更指示機能１４４は、ＣＰＵ２のクロック周波数が最低になっていなければ（ステップＡ７のＮＯ）、そのクロック周波数を所定分だけ下げるための制御を行う（ステップＡ８）。なお、ＣＰＵ２のクロック周波数が最低になっていれば（ステップＡ７のＹＥＳ）、クロック周波数の変更は行わない。
【００４３】
この後、Ｗａｉｔ時間設定機能１４５は、Ｗａｉｔ時間の設定変更を行うべきか否かを判定する（ステップＡ９）。設定変更を行う場合、Ｗａｉｔ時間設定機能１４５はＷａｉｔ時間の設定変更を行い（ステップＡ１０）、変更後のＷａｉｔ時間の経過を待ち（ステップＡ１１）、Ｗａｉｔ時間の経過後に実行命令数／クロック数取得機能１４１を起動する。一方、設定変更を行わない場合は、Ｗａｉｔ時間設定機能１４５は、既に設定されているＷａｉｔ時間の経過を待ち（ステップＡ１１）、Ｗａｉｔ時間の経過後に実行命令数／クロック数取得機能１４１を起動する。
【００４４】
このように第１の動作例では、クロック数に対する実行命令数の割合が所定値を超えているか否かを判定し、その判定結果に応じてＣＰＵのクロック周波数を制御することにより、ＣＰＵの実質的な使用率に見合った省電力化を行っている。
【００４５】
（第２の動作例）
図５は、前述の演算例２に対応した動作を示している。
【００４６】
電子機器の起動時においては、判定機能１４２は、ＣＰＵ２の動作モードの種類を認識し、その動作モードに対応する閾値Ｓを、閾値テーブル１４３を参照することによって予め取得する（ステップＢ１）。
【００４７】
次に、これから行う実行命令数／クロック数の取得が何番目であるかを示すカウント値ｎを０とし、これを所定の記憶領域に記憶しておく（ステップＢ２）。
【００４８】
実行命令数／クロック数の取得を開始するため、現在のカウント値に１を加算する（ステップＢ３）。
【００４９】
制御部１４の実行命令数／クロック数取得機能１４１により、単位時間当りの実行命令数Ｉ、単位時間当りのクロック数Ｉ０が取得され、これらの情報が判定機能１４２に送られる（ステップＢ４、Ｂ５）。
【００５０】
次に、判定機能１４２は、演算「（Ｉｎ−Ｉｎ−１）／Ｉ０」（但し、Ｉｎはｎ番目に取得された単位時間当りの実行命令数、Ｉ０は単位時間当りのクロック数）を実行し、その演算結果が閾値Ｓを超えているか否かを判定する（ステップＢ６）。
【００５１】
判定機能１４２により演算結果が閾値Ｓを超えていると判定された場合（ステップＢ６のＹＥＳ）、クロック周波数変更指示機能１４４は、ＣＰＵ２のクロック周波数が最高になっていなければ（ステップＢ７のＮＯ）、そのクロック周波数を所定分だけ上げるための制御を行う（ステップＢ８）。なお、ＣＰＵ２のクロック周波数が最高になっていれば（ステップＢ７のＹＥＳ）、クロック周波数の変更は行わない。
【００５２】
一方、判定機能１４２により演算結果が閾値Ｓを超えていないと判定された場合（ステップＢ６のＮＯ）、判定機能１４２は演算「（Ｉｎ−１−Ｉｎ）／Ｉ０」を実行し、その演算結果が閾値Ｓを超えているか否かを判定する（ステップＢ９）。ここで、判定機能１４２により演算結果が閾値Ｓを超えていると判定された場合（ステップＢ９のＹＥＳ）、クロック周波数変更指示機能１４４は、ＣＰＵ２のクロック周波数が最低になっていなければ（ステップＢ１０のＮＯ）、そのクロック周波数を所定分だけ下げるための制御を行う（ステップＢ１１）。なお、ＣＰＵ２のクロック周波数が最低になっていれば（ステップＢ１０のＹＥＳ）、クロック周波数の変更は行わない。
【００５３】
この後、Ｗａｉｔ時間設定機能１４５は、Ｗａｉｔ時間の設定変更を行うべきか否かを判定する（ステップＢ１２）。設定変更を行う場合、Ｗａｉｔ時間設定機能１４５はＷａｉｔ時間の設定変更を行い（ステップＢ１３）、変更後のＷａｉｔ時間の経過を待ち（ステップＢ１４）、Ｗａｉｔ時間の経過後に実行命令数／クロック数取得機能１４１を起動する。一方、設定変更を行わない場合は、Ｗａｉｔ時間設定機能１４５は、既に設定されているＷａｉｔ時間の経過を待ち（ステップＢ１４）、Ｗａｉｔ時間の経過後に実行命令数／クロック数取得機能１４１を起動する。
【００５４】
このように第２の動作例では、前記クロック数に対する、時間的に前後して取得される二つの実行命令数の差の割合が、所定値を超えているか否かを判定し、その判定結果に応じてＣＰＵのクロック周波数を制御することにより、ＣＰＵの実質的な使用率に見合った省電力化を行っている。
【００５５】
（第３の動作例）
図６は、前述の演算例３に対応した動作を示している。
【００５６】
電子機器の起動時においては、判定機能１４２は、ＣＰＵ２の動作モードの種類を認識し、その動作モードに対応する閾値Ｓを、閾値テーブル１４３を参照することによって予め取得する。同時に、所定の記憶領域に記憶しておいた重み係数αを予め取得する（ステップＣ１）。
【００５７】
次に、これから行う実行命令数／クロック数の取得が何番目であるかを示すカウント値ｎを０とし、これを所定の記憶領域に記憶しておく（ステップＣ２）。
【００５８】
実行命令数／クロック数の取得を開始するため、現在のカウント値に１を加算する（ステップＣ３）。
【００５９】
制御部１４の実行命令数／クロック数取得機能１４１により、単位時間当りの実行命令数Ｉ、単位時間当りのクロック数Ｉ０が取得され、これらの情報が判定機能１４２に送られる（ステップＣ４、Ｃ５）。
【００６０】
次に、判定機能１４２は、演算「（Ｉｎ＊αｎ＋Ｉｎ−１＊αｎ−１＋　…）／（Ｉ０ｎ＊αｎ＋Ｉ０（ｎ−１）＊αｎ−１＋　…）」（但し、Ｉｎはｎ番目に取得された単位時間当りの実行命令数、Ｉ０ｎはｎ番目に取得された単位時間当りのクロック数、αｎはｎ番目に取得された情報に適用される重み係数）を実行し、その演算結果が閾値Ｓを超えているか否かを判定する（ステップＣ６）。
【００６１】
なお、上記演算において、分子の数式と分母の数式に使用すべき項数を所定の数に限定するようにしてもよい。この場合、演算を実行する毎に、最も古く取得された情報に関わる項を演算から適用除外（削除）すればよい。このようにすると、記憶領域に保持しておくべき情報の容量を低減することが可能となる。
【００６２】
判定機能１４２により演算結果が閾値Ｓを超えていると判定された場合（ステップＣ６のＹＥＳ）、クロック周波数変更指示機能１４４は、ＣＰＵ２のクロック周波数が最高になっていなければ（ステップＣ７のＮＯ）、そのクロック周波数を所定分だけ上げるための制御を行う（ステップＣ８）。なお、ＣＰＵ２のクロック周波数が最高になっていれば（ステップＣ７のＹＥＳ）、クロック周波数の変更は行わない。
【００６３】
一方、判定機能１４２により演算結果が閾値Ｓを超えていないと判定された場合（ステップＣ６のＮＯ）、クロック周波数変更指示機能１４４は、ＣＰＵ２のクロック周波数が最低になっていなければ（ステップＣ９のＮＯ）、そのクロック周波数を所定分だけ下げるための制御を行う（ステップＣ１０）。なお、ＣＰＵ２のクロック周波数が最低になっていれば（ステップＣ９のＹＥＳ）、クロック周波数の変更は行わない。
【００６４】
この後、Ｗａｉｔ時間設定機能１４５は、Ｗａｉｔ時間の設定変更を行うべきか否かを判定する（ステップＣ１１）。設定変更を行う場合、Ｗａｉｔ時間設定機能１４５はＷａｉｔ時間の設定変更を行い（ステップＣ１２）、変更後のＷａｉｔ時間の経過を待ち（ステップＣ１３）、Ｗａｉｔ時間の経過後に実行命令数／クロック数取得機能１４１を起動する。一方、設定変更を行わない場合は、Ｗａｉｔ時間設定機能１４５は、既に設定されているＷａｉｔ時間の経過を待ち（ステップＣ１３）、Ｗａｉｔ時間の経過後に実行命令数／クロック数取得機能１４１を起動する。
【００６５】
このように第３の動作例では、時間的に前後して取得される個々のクロック数にそれぞれ所定の重み係数を乗じて互いに加算した値に対する、時間的に前後して取得される個々の実行命令数にそれぞれ所定の重み係数を乗じて互いに加算した値の割合が、所定値を超えているか否かを判定し、その判定結果に応じてＣＰＵのクロック周波数を制御することにより、ＣＰＵの実質的な使用率に見合った省電力化を行っている。
【００６６】
以上説明したように本実施形態によれば、ＣＰＵ２の単位時間当りのクロック数に対する、単位時間当りの実行命令数の割合に応じて、ＣＰＵ２で生成される内部クロックの周波数を制御する制御機能を設けることにより、ＣＰＵ２の実質的な使用率に見合った消費電力の制御を行うことができる。
【００６７】
なお、本発明は、上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲内で種々変形して実施することが可能である。例えば制御部の機能構成は図２に示したものに限定されるものではなく、同じ動作を実現できるのであれば機能構成を変形しても構わない。
【００６８】
【発明の効果】
以上詳記したように本発明によれば、プロセッサの実質的な使用率に見合った消費電力を制御することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る電子機器の要部構成を示すブロック図。
【図２】図１における制御部の機能構成の一例を示すブロック図。
【図３】図２における閾値テーブルの内容を説明するための図。
【図４】同実施形態における第１の動作例を示すフローチャート。
【図５】同実施形態における第２の動作例を示すフローチャート。
【図６】同実施形態における第３の動作例を示すフローチャート。
【符号の説明】
１…主メモリ
２…ＣＰＵ
３…クロック発振器
４…Ｉ／Ｏデバイス
５…記録媒体
１１…ＯＳ
１２…アプリケーション
１３…パワー・マネージメント・ドライバ
１４…制御部
１５…タイマ
２１…レジスタ
２２…クロック処理回路
１４１…実行命令数／クロック数取得機能
１４２…判定機能
１４３…閾値テーブル
１４４…クロック周波数変更指示機能
１４５…Ｗａｉｔ時間設定機能
【図１】
2004038291.tif 000003
【図２】
2004038291.tif 000004
【図３】
2004038291.tif 000005
【図４】
2004038291.tif 000006
【図５】
2004038291.tif 000007
【図６】
2004038291.tif 000008