(57)【特許請求の範囲】
【請求項１】
プロセサ上で実行される複数のタスクのうちの実行中のタスク及び実行可能なタスクを識別する手段と、
前記複数のタスクのうちの最初に起動されるものの起動時刻を前記実行中のタスクに提供する手段と、
前記起動時刻及び前記実行中のタスクに関する最悪実行時間に基づいて前記プロセサの消費電力の最適化を行う手段とを具えることを特徴とする電力制御装置。
【請求項２】
プロセサ上で実行される複数のタスクのうちの実行中のタスク及び実行可能なタスクを識別するステップと、
前記複数のタスクのうちの最初に起動されるものの起動時刻を前記実行中のタスクに提供するステップと、
前記起動時刻及び前記実行中のタスクに関する最悪実行時間に基づいて前記プロセサの消費電力の最適化を行うステップとを具えることを特徴とする電力制御方法。
【請求項３】
プロセサ上で実行される複数のタスクのうちの実行中のタスク及び実行可能なタスクを識別する機能と、
前記複数のタスクのうちの最初に起動されるものの起動時刻を前記実行中のタスクに提供する機能と、
前記起動時刻及び前記実行中のタスクに関する最悪実行時間に基づいて前記プロセサの消費電力の最適化を行う機能とをコンピュータによって実現させることを特徴とする電力制御プログラム。
【請求項４】
前記実行中のタスク及び実行可能なタスクを識別する機能が、前記複数のタスクの次回の起動時刻を順番に保持する機能を有することを特徴とする請求項３記載の電力制御プログラム。
【請求項５】
前記実行中のタスク及び実行可能なタスクを識別する機能が、前記実行中のタスク及び実行可能なタスクを優先度の高い順に保持し、前記実行中のタスクのみが保持されているか否かの情報を前記実行中のタスクに提供する機能を有することを特徴とする請求項３又は４記載の電力制御プログラム。
【請求項６】
前記実行中のタスクを前記プロセサに割り付けた時刻から現在の時刻までの積算実行時間に関する情報を、前記プロセサに提供する機能をコンピュータによって実現させることを特徴とする請求項３から５のうちのいずれか１項に記載の電力制御プログラム。
【請求項７】
前記積算実行時間及び前記起動時刻から前記実行中のタスクの時間余裕を算出する機能をコンピュータによって実現させることを特徴とする請求項６記載の電力制御プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えばＣＭＯＳ半導体集積回路によって構成したプロセッサの電力制御装置及び方法並びに電力制御プログラムに関するものである。
【０００２】
【従来の技術】
近年、バッテリによって駆動されるプロセサ内蔵の携帯機器、例えば、携帯電話、携帯型オーディオ、携帯型ビデオ、ノートブックパーソナルコンピュータ、PDA(Personal Digital Assistants)の消費電力の最適化、例えば消費電力の低減の要求が、従来に比べて一層厳格になっている。消費電力の最適化に対する厳格な要求を満足させるために、プロセサに供給すべき可変の電源電圧を制御することによって消費電力の最適化を図ることが特許第3138737号に記載されており、ＣＭＯＳ半導体集積回路のＮＭＯＳ素子及び／又はＰＭＯＳ素子のしきい値電圧を制御することによって消費電力の最適化を図ることが特願2000-221676号に記載されている。
【０００３】
これら特許第3138737号及び特願2000-221676号によれば、図１Ａに示すように、電力制御装置は、プロセサ１と、プロセサ１の可変電源電圧及び／又はしきい値電圧を制御することによって消費電力の最適化を行う電力制御回路２とを具える。
【０００４】
プロセサ１には、タスク３及びデバイスドライバ４を有するソフトウェア５がインストールされ、図１Ａでは示さないＩ／Ｏポートを通じて簡単なコマンドＣを電力制御回路２との間でやりとりし、プロセサ１の内部クロック周波数と、可変電源電圧及び／又はしきい値電圧Ｖvarとを制御する制御信号ＣＳを出力する。なお、図１Ａでは、電力制御回路２をプロセサ１と個別に構成した場合について示しているが、電力制御回路２をプロセサ１と一体に構成してもよい。
【０００５】
このために、電力制御回路２は、電源電圧／しきい値電圧制御回路６と、クロック周波数発生器７と、タイマ８とを有する。電源電圧／しきい値電圧制御回路６は、可変電源電圧及び／又はしきい値電圧Ｖvarを生成し、その可変電源電圧及び／又はしきい値電圧Ｖvarをプロセッサ１に供給する。
【０００６】
クロック周波数発生器７は、外部クロックｆclkのｋ／ｎ倍（ｎを自然数とし、ｋをｎ未満の自然数とする。）となる可変周波数ｆvarを生成し、その可変周波数ｆvarをプロセッサ１に供給する。可変周波数ｆvarをそのように設定することによって、外部デバイスとのやりとりが容易となる。タイマ８は、後に説明するようなリアルタイム処理を行う際に使用される。
【０００７】
可変電源電圧及び／又はしきい値電圧Ｖvarは、後に説明するように可変周波数ｆvarに応じて設定される。
【０００８】
タスク３は、図１Ｂに示すようにユーザプログラム９及び電力制御アルゴリズム１０を有する。ユーザプログラム９は、設計者によって任意にプログラムされ、電力制御アルゴリズム１０は、２以上の動作速度及びアイドリング状態に対応する３以上のモードに従って可変電源電圧及び／又はしきい値電圧Ｖvarと可変周波数ｆvarとを動的に制御するよう電源電圧／しきい値電圧制御回路６にコマンドＣを送信する。なお、電源制御アルゴリズム１０の構成及びコマンドＣの送信については、後に説明する。
【０００９】
デバイスドライバ４は、図１Ｃに示すように可変電源電圧及び／又はしきい値電圧Ｖvarを最適化するための参照可能な関係を有するルックアップテーブル１１を有する。
【００１０】
図２は、電力制御アルゴリズムを詳細に示す図である。この電力制御アルゴリズム１０は、締切すなわち今回のタスク３の実行を終了すべき時刻を取得するステップＳ１と、可変クロック周波数ｆvarと可変電源電圧及び／又はしきい値電圧Ｖvarとを算出するステップＳ２と、可変クロック周波数ｆvarと可変電源電圧及び／又はしきい値電圧Ｖvarとを適用するステップＳ３と、ユーザプログラム９を実行するステップＳ４と、プロセサ１のアイドリングを行うステップＳ５とを具える。本明細書中、締切とは、特に言及しない限り、タスク又はスライスの実行を終了すべき時刻を意味するものとする。
【００１１】
タスク３を画像や音声のようなマルチメディアタスクとした場合、タスク３は、特定の周波数（例えば、６０Ｈｚ又は４４．１ｋＨｚ）に同期をとっており、一定の起動周期とＷＣＥＴ（Worst Case Execution Time:最悪実行時間）とを有する。
【００１２】
ＭＰＥＧに代表されるようなアプリケーションでは、入力画像データによって処理速度が変化することが知られている。具体的には、被写体の動きが顕著である場合や、背景の変化が大きくなるに従って負荷が重くなり、それに対して、画像の変化が小さくなるに従って負荷が軽くなる。しかしながら、画像の変化が大きくなるに従って負荷が無限に大きくなるわけではなく、理論上の最大負荷が決まっている。このような理論上の最大負荷は、タスク３のＷＣＥＴに対応する。
【００１３】
実際のタスクでは、最大負荷のデータを処理することはほとんどなく、大抵の場合には、ＷＣＥＴ以前にタスク３を終了し、時間余裕が発生する。また、タスク３の起動周期は一般にＷＣＥＴより長いので、最大負荷のデータを処理しても時間余裕が発生する場合もある。
【００１４】
このような時間余裕が存在することをタスク３の実行中に検知して、プロセサ１の可変クロック周波数ｆvarと可変電源電圧及び／又はしきい値電圧Ｖvarとを制御することによって、消費電力を最適化している。
【００１５】
したがって、負荷に応じてプロセサ１の可変クロック周波数ｆvarと可変電源電圧及び／又はしきい値電圧Ｖvarとを柔軟に変化させるアルゴリズムが重要となる。負荷のデータ依存性が高いので、制御は、ランタイムで動的に行われるべきであり、コンパイルタイムで静的に行われるべきではない。
【００１６】
しかしながら、タスク終了後に負荷がＷＣＥＴより軽かったことが明らかになったとしても、もはや何の処理も施すことができない。また、将来の負荷を予測するのは非常に困難である。そのような事態を解決するために、電力制御アルゴリズム１０のステップＳ１において、アプリケーションスライシングを導入する。
【００１７】
ここで、アプリケーションスライシングを図３を用いて説明すると、タスク３は、Ｎ個のスライス１，２，３，．．．，Ｎに分割される。スライス１，２，３，．．．，Ｎの各々のＷＣＥＴと、各スライスからスライスＮまでのＷＣＥＴは、解析や測定を通じて取得される。
【００１８】
ここで、スライス２について考える。スライス２のＷＣＥＴ、スライス３からスライスＮまでのＷＣＥＴ及びスライス２の開始からタスク３の次回の起動時刻までの時間をそれぞれｔ２，ｔ３−Ｎ及びｔＤとした場合、単一のタスク３を仮定しているので、今回のタスク３の実行を次回の起動時刻までに行う必要があり、タスク３の次回の起動時刻がタスク３の締切となる。
【００１９】
スライス３からスライスＮ（最終スライス）までの処理が時間ｔ３−Ｎで確実に行われるので、スライス２を実行するための時間余裕ｔＲはｔＤ−ｔ３−Ｎとなる。したがって、理想的には、プロセサ１の可変クロック周波数ｆvarを外部クロックｆclkのｔ２／ｔＲ倍まで下げることができる。
【００２０】
実際には、プロセサ１のクロック周波数を任意の値に設定するのは困難であるので、可変クロック周波数ｆvarは、好適には、外部クロックｆclkのｔ２／ｔＲ倍を下回らない最小の１／ｎ倍に設定される。例えば、ｔ２／ｔＲが０．４８の場合、可変クロック周波数ｆvarはｆclk／２となる。
【００２１】
プロセサ１のクロック周波数を変更する際、ルックアップテーブル１１を利用する。図４は、図１のルックアップテーブルを詳細に示す図である。ルックアップテーブル１１は、可変クロック周波数ｆvarと可変電源電圧及び／又はしきい値電圧Ｖvarとの関係を有する。これらの関係は、プロセサ１及び電力制御回路２を実際に計測することによって得られる。
【００２２】
【発明が解決しようとする課題】
しかしながら、特許第3138737号及び特願2000-221676号では、プロセサの消費電力の最適化を単一の周期タスクについて適用する場合については記載しているものの、複数のタスクが実行される場合については記載及び示唆されていない。
【００２３】
本発明の目的は、複数のタスクが実行される環境でプロセサの消費電力の最適化を行う電力制御装置及び方法並びに電力制御プログラムを提供することである。
【００２４】
【課題を解決するための手段】
本発明による電力制御装置は、
プロセサ上で実行される複数のタスク（全タスク）のうちの実行中のタスク及び実行可能なタスクを識別する手段と、
前記複数のタスクのうちの最初に起動されるものの起動時刻を前記実行中のタスクに提供する手段と、
前記起動時刻及び前記実行中のタスクに関する最悪実行時間に基づいて前記プロセサの消費電力の最適化を行う手段とを具えることを特徴とする。
【００２５】
本発明によれば、実行中のタスクに関する最悪実行時間だけでなく、複数のタスクのうちの最初に起動されるものの起動時刻をも参照してプロセサの消費電力の最適化を行っている。したがって、実行中のタスクが他のタスクの起動時刻に関する情報を取得することができるので、複数のタスクが実行される環境でもプロセサの消費電力の最適化を行うことができる。
【００２６】
本発明による電力制御方法は、
プロセサ上で実行される複数のタスクのうちの実行中のタスク及び実行可能なタスクを識別するステップと、
前記複数のタスクのうちの最初に起動されるものの起動時刻を前記実行中のタスクに提供するステップと、
前記起動時刻及び前記実行中のタスクに関する最悪実行時間に基づいて前記プロセサの消費電力の最適化を行うステップとを具える。
【００２７】
本発明によれば、複数のタスクが実行される環境でもプロセサの消費電力の最適化を行うことができる。
【００２８】
本発明による電力制御プログラムは、
プロセサ上で実行される複数のタスクのうちの実行中のタスク及び実行可能なタスクを識別する機能と、
前記複数のタスクのうちの最初に起動されるものの起動時刻を前記実行中のタスクに提供する機能と、
前記起動時刻及び前記実行中のタスクに関する最悪実行時間に基づいて前記プロセサの消費電力の最適化を行う機能とをコンピュータによって実現させることを特徴とする。
【００２９】
本発明によれば、複数のタスクが実行される環境でもプロセサの消費電力の最適化をコンピュータによって実現することができる。
【００３０】
消費電力の最適化を好適に行うために、前記実行中のタスク及び実行可能なタスクを識別する機能は、例えば、前記複数のタスクの次回の起動時刻を順番に保持する機能及び／又は前記実行中のタスク及び実行可能なタスクを優先度の高い順に保持し、前記実行中のタスクのみが保持されているか否かの情報を前記実行中のタスクに提供する機能を有する。
【００３１】
消費電力の最適化を更に好適に行うために、前記実行中のタスクを前記プロセサに割り付けた時刻から現在の時刻までの積算実行時間に関する情報を、前記プロセサに提供する機能をコンピュータによって実現させる。
【００３２】
消費電力の最適化を一層好適に行うために、前記積算実行時間及び前記起動時刻から前記実行中のタスクの時間余裕を算出する機能をコンピュータによって実現させる。
【００３３】
例えば、電力制御プログラムの上記機能のうち、時間余裕を算出する機能については、タスクのようなソフトウェアによって実現され、それ以外の機能については、ソフトウェアに含まれるオペレーティングシステム（ＯＳ）によって実現される。
【００３４】
【発明の実施の形態】
本発明による電力制御装置及び方法並びに電力制御プログラムの実施の形態を、図面を参照して詳細に説明する。
図５は、本発明による電力制御装置のブロック図である。電力制御装置は、プロセサ２１と、図１の電力制御回路２と同一構成の電力制御回路２２とを具える。
【００３５】
プロセサ２１には、ＯＳ２３及び複数の周期的なタスク（全周期タスク）２４を有するソフトウェア２５がインストールされ、図５では示さないＩ／Ｏポートを通じて簡単なコマンドＣを電力制御回路２２との間でやりとりし、プロセサ２１の内部クロック周波数ｆvarと、可変電源電圧及び／又はしきい値電圧Ｖvarとを制御する制御信号ＣＳを出力する。なお、図５では、電力制御回路２２をプロセサ２１と個別に構成した場合について示しているが、電力制御回路２２をプロセサ２１と一体に構成してもよい。また、図５では、１個のタスク（周期タスク）２４のみを示す。
【００３６】
図６に示すように、ＯＳ２３は、起動時刻キュー２６と、実行優先度キュー２７と、デバイスドライバ２８と、スケジューラ２９と、システムコールハンドラ３０とを有する。各タスク２４は、ユーザプログラム３１と、電力制御アルゴリズム３２とを有する。なお、図５及び６において、ＤＰは後に詳細に説明するプロセサ割当て等を表し、ＳＣはシステムコールを表す。
【００３７】
起動時刻キュー２６は、全てのタスク２４の次回の起動時刻を起動が行われる順番に保持し、タスク２４が起動又は終了される度に更新される。ここで、起動時刻キュー２４の先頭のタスク（今後最も早く起動される周期タスク）の起動時刻を、第１起動時刻と称する。
【００３８】
実行優先度キュー２７は、実行中のタスク２４及び実行可能なタスク２４の実行優先度を実行優先度の高い順番に保持する。デバイスドライバ２８は、図１のデバイスドライバ４と同一構成を有する。スケジューラ２９は、管理するタスク２４のスケジューリングを行う。システムコールハンドラ３０は、管理されるタスク２４との間で情報の受渡しを行う。
【００３９】
ユーザプログラム３１は、図１のユーザプログラム９と同一構成を有し、電力制御アルゴリズム３２は、後に詳しく説明するように図１の電力制御アルゴリズム１０とは異なる構成を有する。
【００４０】
各タスク２４は、図７に示すように、スケジューラ２９によって状態が遷移される。タスク２４がＲＵＮ状態にあるとき、タスク２４は、現在実行中であり、プロセサ２１を占有している。
【００４１】
タスク２４がＲＥＡＤＹ状態にあるとき、タスク２４は、実行可能であるが、更に高い優先度を有する他のタスクが実行中であるためにプロセサ割付を待機していることを意味する。ＲＥＡＤＹ状態又はＲＵＮ状態にあるタスク２４の実行優先度は、高い順で実行優先度キュー２７に保持される。実行中のタスク２４が終了し又はタスク２４が起動された場合には、実行優先度キュー２７は更新される。スケジューラ２９は、実行優先度キュー２７の先頭のタスクをプロセサ２１に割り付ける。
【００４２】
タスク２４がＤＯＲＭＡＮＴ状態にあるとき、タスク２４の実行が既に終了し、タスク２４が休止中であり、タスク２４の次の起動を待機する。
【００４３】
スケジューラ２９は、単位時間ごとに起動時刻キュー２６を調べ、休止中のタスク２４を起動させるか否かも判断する。所定のタスク２４が起動された場合、スケジューラ２９は実行優先度キュー２７を更新し、現在実行中のタスク２４の優先度と、起動直後のタスク２４の優先度とを比較する。
【００４４】
起動直後のタスク２４の優先度が実行中のタスク２４の優先度より高い場合、実行中のタスク２４はプロセサ２１の待機を強要され、実行すべきタスク２４が入れ替えられる。入れ替えられたタスク２４は、ＲＥＡＤＹ状態となり、再びプロセサ２１への割付けを待機することになる。
【００４５】
これまで、スケジューラ２９によるタスク２４の遷移の基本機能を説明したが、本発明によれば、後に詳しく説明するように、上記基本機能に加えて、実行中のタスク２４に締切を提供する。この締切は、実行優先度キュー２７及び起動時刻キュー２６の状態に基づいている。
【００４６】
なお、実行優先度キュー２７に存在するタスク２４の個数及び第１起動時刻については、システムコールハンドラ３０によって、実行中のタスク２４で参照可能である。
【００４７】
図８は、図６の電力制御アルゴリズムを詳細に示す図である。電力制御アルゴリズム３２は、実行優先度キュー２７に存在するタスク２４の個数及び第１起動時刻に基づくものである。
【００４８】
電力制御アルゴリズム３２では、先ず、ステップＳ１１において、後に詳しく説明するように、システムコールハンドラ３０を用いて締切を取得する。一旦締切が提供されると、ステップＳ１２において、可変クロック周波数ｆvarを算出する。次いで、ステップＳ１３において、可変クロック周波数ｆvarはシステムコールハンドラ３０によってＯＳ２３に知らされ、ＯＳ２３は、デバイスドライバ２８の有するルックアップテーブルを参照して、可変電源電圧及び／又はしきい値電圧Ｖvarを制御する。
【００４９】
その後、図２のステップＳ４と同様にユーザプログラムを実行した（ステップＳ１４）後、電力制御アルゴリズム３２を終了する。
【００５０】
図９は、図８の締切取得ルーチンを詳細に示す図である。この場合、ステップＳ３１において、実行優先度キュー２７に存在する実行中のタスク２４の個数が１であるか否か判断する。
【００５１】
実行優先度キュー２７に存在する実行中のタスク２４の個数が１である場合、第１起動時刻と実行中のタスク２４のＷＣＥＴのうちの遅い方を締切として取得し（ステップＳ３２）、本ルーチンを終了する。それに対して、実行優先度キュー２７に存在する実行中のタスク２４の個数が１でない場合、実行中のタスク２４のＷＣＥＴを締切として取得し（ステップＳ３３）、本ルーチンを終了する。
【００５２】
実行優先度キュー２７に実行中のタスク２４しか存在しない場合、すなわち、実行優先度キュー２７に存在するタスク２４が１個である場合、プロセサ２１の割付けを待機するタスク２４が他に存在しないことを意味する。その結果、タスク２４は、少なくとも第１起動時刻までプロセサ２１を独占することができる。このために、この第１起動時刻と実行中のタスク２４のＷＣＥＴのうちの遅い方を締切とした場合でも、タスク２４の処理に関して影響がない。
【００５３】
一方、実行優先度キュー２７に実行中のタスク２４以外のタスク２４が存在する場合、すなわち、実行優先度キュー２７に依存するタスク２４が２個以上ある場合、締切を、実行中のタスク２４のＷＣＥＴ（正確には、タスク全体のＷＣＥＴから現在までの積算実行時間を減算し、現在の時刻を加算したもの）とすべきである。これによって、システムの実行確実性が維持される。
【００５４】
本実施の形態の動作を、図１０−１２も用いて説明する。この場合、複数の周期的なタスク（周期タスク群）２４の例として、図１０に示すように、実行優先度が１であり、ＷＣＥＴが６単位時間であり、かつ、周期が２０単位時間であるタスクＡと、実行優先度が２であり、ＷＣＥＴが１２単位時間であり、かつ、周期が３０単位時間であるタスクＢと、実行優先度が３であり、ＷＣＥＴが２単位時間であり、かつ、周期が４０単位時間であるタスクＣとが存在するものとする。図１０において、タスクＡ，Ｂ，Ｃの各々の矩形はスライスを表し、縦方向に周波数の高さを示し、横方向に時間経過を示す。
【００５５】
タスクＡ，Ｂ，Ｃの１スライスは２単位時間を有し、タスクＡ，Ｂ，Ｃの実際の実行時間は負荷に依存する。この場合、タスクＡの負荷が５０％であると仮定し、実行時間をＷＣＥＴの半分とする。また、タスクＢ，Ｃの負荷が１００％であると仮定し、実行時間をＷＣＥＴとする。
【００５６】
消費電力の最適化を行わないＯＳのスケジューリングでは、図１１Ａに示すようになる。それに対して、可変クロックｆvarとしてｆclk及びｆclk／２が設定されると仮定した本発明でのスケジューリングでは、図１１Ｂに示すようになる。
【００５７】
本発明でのスケジューリングについて詳細に説明する。時刻０でタスクＡ，Ｂ，Ｃが一斉に起動されると、図１２に示すように、実行優先度が最も高いタスクＡが実行される。
【００５８】
この場合、実行優先度キューにタスクが２以上存在するので、タスクＡの１番目のスライスでは、締切は、タスクＡの実行の開始からタスクＡ自身のＷＣＥＴが経過した後の時刻すなわち時刻６となる。２番目のスライスから最後のスライスまでのＷＣＥＴが４単位時間であるので、時間余裕は２単位時間となる。
【００５９】
ＷＣＥＴが２単位時間のスライスを２単位時間の時間余裕で実行するためには、可変周波数ｆvarとしてｆclkが好適である。可変周波数ｆvarの値は、システムコールＳＣとしてＯＳ２３に提供され、デバイスドライバ２８が有するルックアップテーブルに基づいて可変電源電圧及び／又はしきい値電圧Ｖvarと可変周波数ｆvarとが設定される。
【００６０】
タスクＡの負荷が５０％であるため、本来のＷＣＥＴでは２単位時間を要した１番目のスライスが１単位時間で終了する。タスクＡの２番目のスライスでは、締切は、タスクＡ自身のＷＣＥＴから１単位時間の積算実行時間を減算した５単位時間が締切までの時間となる。最終スライスのＷＣＥＴが２単位時間であるので、時間余裕は３単位時間となる。２番目のスライスのＷＣＥＴも２単位時間であるので、２番目のスライスもｆclkの可変クロック周波数ｆvarで実行される。
【００６１】
最後のスライスでは、１番目及び２番目のスライスと状況が異なる。タスクＡにおいて最後である３番目のスライスの実行が開始される時刻は２であり、積算実行時間は２単位時間である。３番目のスライスの実行の開始から締切までの時間は、タスクＡ自身のＷＣＥＴの６単位時間から積算実行時間の２単位時間を減算した４単位時間である。
【００６２】
３番目のスライス以後にはタスクＡにおいて実行すべきスライスが存在しないため、３番目のスライスの実行の開始から３番目のスライスの締切すなわちタスクＡの締切までの４単位時間をそのまま利用することができ、その結果、時間余裕は４単位時間となる。
【００６３】
したがって、３番目のスライスでは、可変クロック周波数ｆvarをｆclk／２に低減させることができ、これと同時に可変電源電圧及び／又はしきい値電圧Ｖvarも制御することができる。
【００６４】
タスクＡは時刻４で終了し、タスクＢが上記手順に基づいて時刻４から時刻１６の間で実行され、時刻１６において、タスクＣの１番目のスライスの実行を開始する。
【００６５】
時刻１６では、タスクＣのみが実行優先度キューに存在するので、締切は、次回のタスクＡが起動する時刻２０と、タスクＣの実行が開始される時刻１６からタスクＣ自身のＷＣＥＴである２単位時間が経過した時刻１８のうちの遅い方の時刻すなわち時刻２０となる。換言すれば、タスクＣ自身のＷＣＥＴに比べてタスクＣの実行開始から次回のタスクＡの起動時間までの方が、時間余裕が大きくなる。
【００６６】
この場合、タスクＣは、タスクＡの場合とは異なり、最初のスライスであるにもかかわらず、可変クロック周波数ｆvarをｆclk／２まで低減することができ、タスクＣが時刻２０で終了する。
【００６７】
本発明によれば、実行可能なタスクの個数が１個である場合、実行中のタスクに第１起動時刻を提供することによって、複数のタスクが実行される環境でもプロセサの消費電力の最適化を行うことができる。具体的には、実行優先度キュー内に１個のタスクのみが存在する場合には、第１起動時刻とタスクの起動開始時刻からタスクのＷＣＥＴが経過した時刻のうちの遅い方を締切とし、実行中のタスクについて可変クロック周波数ｆvarと可変電源電圧及び／又はしきい値電圧Ｖvarとを制御して、プロセサの消費電力の最適化を行っているので、複数のタスクが実行される環境でもプロセサの消費電力の最適化を行うことができる。
【００６８】
本発明は、上記実施の形態に限定されるものではなく、幾多の変更及び変形が可能である。
例えば、次回の起動時間が検出される場合には、タスクが周期的でなくてもよく、消費電力の最適化を、電源電圧及び／又はしきい値電圧以外の他のパラメータを用いて制御することもでき、上記実施の形態で説明したプロセサ２１及び電力制御回路２２を、当業者によって他の設計にすることもできる。
【００６９】
また、電力制御アルゴリズム３２を各タスク２４にインストールした場合について説明したが、各タスク２４が記録された記録された記録媒体（例えば、ＣＤ−ＲＯＭ）から各タスク２４を読み出すことによって電力制御を行うこともできる。
【図面の簡単な説明】
【図１】  従来の電力制御装置のブロック図である。
【図２】  図１の電力制御アルゴリズムを詳細に示す図である。
【図３】  アプリケーションスライシングを説明するための図である。
【図４】  図１のルックアップテーブルを詳細に示す図である。
【図５】  本発明による電力制御装置のブロック図である。
【図６】  図５のＯＳ及びタスクを詳細に示す図である。
【図７】  タスク状態の遷移を説明するための図である。
【図８】  図６の電力制御アルゴリズムを詳細に示す図である。
【図９】  図８の締切取得ルーチンを詳細に示す図である。
【図１０】  周期タスク群の例を示す図である。
【図１１】  消費電力の最適化を行わないスケジューリング及び本発明によるスケジューリングを示す図である。
【図１２】  図１０の周期タスク群の本発明によるスケジューリングにおけるタスク状態の遷移を説明するための図である。
【符号の説明】
１，２１  プロセサ
２，２２  電力制御回路
３，２４  タスク
４，２８  デバイスドライバ
５，２５  ソフトウェア
６  電源電圧／しきい値電圧制御回路
７  クロック周波数発生器
８  タイマ
９，３１  ユーザプログラム
１０，３２  電力制御アルゴリズム
１１  ルックアップテーブル
２３  ＯＳ
２６  起動時刻キュー
２７  実行優先度キュー
２９  スケジューラ
３０  システムコールハンドラ
Ｃ  コマンド
ＣＳ  制御信号
ＤＰ  プロセサ割付け等
ＳＣ  システムコール
ｆclk  外部クロック
【図１】
0003830133.tif 000002
【図２】
0003830133.tif 000003
【図３】
0003830133.tif 000004
【図４】
0003830133.tif 000005
【図５】
0003830133.tif 000006
【図６】
0003830133.tif 000007
【図７】
0003830133.tif 000008
【図８】
0003830133.tif 000009
【図９】
0003830133.tif 000010
【図１０】
0003830133.tif 000011
【図１１】
0003830133.tif 000012
【図１２】
0003830133.tif 000013