(57)【要約】【課題】  複数のタスクを扱うリアルタイムシステムにおいて、イベント処理に対するリアルタイム性を保証しつつ、ＣＰＵの動作周波数を最適に制御する。【解決手段】  プロセッサへの電力を供給する構成において、タスクが単独で要求する性能を記憶するタスク要求性能テーブル２２と、必要なシステム要求性能を実行するプロセッサの動作周波数を定めた電力モードテーブル２５と、タスクの幾つかが同じ期間に実行要求を行った場合、幾つかのタスクが要求する性能を加算してシステム要求性能を算出するシステム要求性能算出ブロック２１と、タスクから処理要求があると、処理要求があった時点で処理要求を加算して新たなシステム要求性能を算出し、プロセッサの動作周波数を設定し、タスクが処理を終えると、残存タスクがあれば動作周波数の設定を続行し、残存タスクがなければシステム要求性能を最省電力モードとする電力モード判定ブロック２３、とを備えた。【選択図】        図１
2005285093.tif 000002
【特許請求の範囲】
【請求項１】
複数のタスクを順次制御するプロセッサへの電力を供給する構成において、
上記タスクを単独で処理し終えるために要求されるシステム要求性能値を記憶するタスク要求性能テーブルと、
上記タスクから処理要求があると、上記タスク要求性能テーブルを参照してシステム要求性能値を求め、更に新たなタスクから処理要求があると、該新たな処理要求時点において同時に処理要求を行っている各タスクの合計で決まる新たなシステム要求性能値を求めるシステム要求性能算出ブロックと、
上記求められたシステム要求性能値に基いてプロセッサの動作周波数を設定し、上記要求されたタスクの処理を終えると、残存タスクがあれば動作周波数の設定を続行し、残存タスクがなければ省電力の動作周波数を設定する電力モード判定ブロック、とを備えたことを特徴とするプロセッサ電力制御装置。
【請求項２】
システムが必要とする動作速度を実現するためのプロセッサ動作周波数と印加電圧とを定めた電力モードテーブルを設けて、電力モード判定ブロックは、上記電力モードテーブルを参照して動作周波数と印加電圧とを設定することを特徴とする請求項１記載のプロセッサ電力制御装置。
【請求項３】
単独のタスクの処理を終えるために要求されるシステム要求性能値として、該タスクを最大周波数で動作させた場合の処理時間と、該タスクの要求処理時間との比で得ることを特徴とする請求項１記載のプロセッサ電力制御装置。
【請求項４】
システム要求性能算出ブロックは、それまでのシステム要求性能値を保持するシステム要求性能値保持レジスタと、新たなタスクから処理要求を受けた場合に該タスクのシステム要求性能値と、上記それまでのシステム要求性能値とで決まる値に上記保持レジスタの値を更新する加算器、とで構成することを特徴とする請求項１記載のプロセッサ電力制御装置。
【請求項５】
システム要求性能算出ブロックは、プロセッサで実行可能なプログラムのステップで構成して、
新たなタスクから起動要求があると、該タスクのシステム要求性能値を取得するステップと、
上記取得した新たなタスクのシステム要求性能値とそれまでのシステム要求性能値とで新たなシステム要求性能値を算出するステップと、
上記得た新たなシステム要求性能値に基いてプロセッサの動作周波数を指示するステップ、とを備えた構成としたことを特徴とする請求項１記載のプロセッサ電力制御装置。
【請求項６】
電力モード判定ブロックは、割り込み期間中は所定の電力モードで動作するよう設定した割り込み期間中電力モード設定部と、
割り込みが発生している期間を表す信号を受けて、該割り込み発生期間中は上記割り込み期間中電力モード設定部が設定する電力モードを選択するセレクタ、とを備えて、
電力モード判定ブロックは、上記割り込みが発生している期間中は、上記割り込み期間中電力モード設定部が設定した電力モードで動作指示することを特徴とする請求項１記載のプロセッサ電力制御装置。
【請求項７】
電力モード判定ブロックは、発生した割り込みが終了して、該終了時点で未処置のタスクがあると、該未処理のタスクのシステム要求性能値を勘案したシステム要求性能値に従ってプロセッサの動作周波数を設定することを特徴とする請求項６記載のプロセッサ電力制御装置。
【請求項８】
所定のファイルまたはヘッダを読み込む読取部を備えて、
該読取部により読み込んだタスクが単独で処理を終えるための性能をタスク性能要求テーブルに設定することを特徴とする請求項１記載のプロセッサ電力制御装置。
【請求項９】
新たなタスクからの実タスク要求性能値を受け取るアプリケーション・プログラム・インタフェースを備えて、
新たにタスクから処理要求を受けると、対応するタスク要求性能テーブルに基いてシステム要求性能値を設定し、上記新たなタスクが起動後に上記新たなタスクからの実タスク要求性能値を受け取り、該受け取った実タスク要求性能値に基いてシステム要求性能を算出して更新することを特徴とする請求項１記載のプロセッサ電力制御装置。
【請求項１０】
複数のタスクを順次処理するプロセッサの動作状態を制御する方法において、
各タスクを単独で処理を終えるために要求されるシステム要求性能値をタスク要求性能テーブルとして記憶しておき、
上記タスクから処理要求があると、上記タスク要求性能テーブルを参照してシステム要求性能値を取得するステップと、
新たなタスクから処理要求があると、該新たな処理要求時点において同時に処理要求を行っている各タスクの合計で決まる新たなシステム要求性能値を算出するステップと、
上記新たなシステム要求性能値に基いてプロセッサの動作周波数を指示する動作周波数指示ステップと、
上記要求されたタスクの処理を終えると、残存タスクがあれば動作周波数の設定を続行し、残存タスクがなければ省電力の動作周波数を設定するステップ、とを備えたことを特徴とするプロセッサ電力制御方法。
【請求項１１】
動作周波数指示ステップは、新たなシステム要求性能に基づきプロセッサの電力モードを選択して動作周波数と電圧とを指示する動作周波数指示・電圧指示ステップとした、ことを特徴とする請求項１０記載のプロセッサ電力制御方法。
【請求項１２】
割り込みハンドラが動作すると、割り込み期間中は所定の動作周波数となるようプロセッサに動作指示するステップを設けて、
上記割り込みハンドラから復帰する直前に、システム要求性能を算出するステップの前に戻るようにしたことを特徴とする請求項１０記載のプロセッサ電力制御方法。
【請求項１３】
複数のタスクを順次制御するプロセッサへの電力を供給する構成において、
上記タスクを単独で処理し終えるために要求される性能をシステム要求性能値として記憶しておき、上記タスクから処理要求があると上記記憶したシステム要求性能値を求めて指示し、更に新たなタスクから処理要求があると、該新たな処理要求があった時点で同時に処理要求を行っている各タスクの合計で決まる新たなシステム要求性能値を算出して指示し、タスクの処理を終えると、残存タスクがあれば演算に基く所定期間は直前のシステム要求性能値を指示し、該所定期間が経過すると残存タスクの合計で決まるシステム要求性能値を算出して指示するシステム要求性能算出ブロックと、
上記指示されたシステム要求性能値に基いてプロセッサの動作周波数を設定し、残存タスクがなくなると、省電力となるプロセッサの動作周波数を設定する電力判定ブロック、とを備えたことを特徴とするプロセッサ電力制御装置。
【請求項１４】
所定期間の算出を、タスクを実行するために消費した消費性能量とタスクが要求した性能量との差と、タスクのシステム要求性能値とにより算出することを特徴とする請求項１３記載のプロセッサ電力制御装置。
【請求項１５】
タスクを要求処理時間に基づいて分類し、該要求処理時間毎にシステム要求性能算出ブロックを設けてそれぞれシステム要求性能値を算出し、電力判定ブロックは、タスク対応の上記システム要求性能値に基いて周波数を設定することを特徴とする請求項１３記載のプロセッサ電力制御装置。
【請求項１６】
要求処理時間が一定時間未満であるタスクに対しては、該タスク対応のシステム要求性能算出ブロックを省いて固定値を指示する構成としたことを特徴とする請求項１３記載のプロセッサ電力制御装置。
【請求項１７】
システムが必要とする動作性能を実現するためのプロセッサ動作周波数と印加電圧とを定めた電力モードテーブルを設けて、電力モード判定ブロックは、上記電力モードテーブルを参照して動作周波数と印加電圧とを設定することを特徴とする請求項１３記載のプロセッサ電力制御装置。
【請求項１８】
複数のタスクを順次処理するプロセッサの動作状態を制御する方法において、
上記タスクを単独で処理し終えるために要求されるシステム要求性能値を記憶しておき、
上記タスクから処理要求があると、上記記憶したシステム要求性能値を取得するステップと、
新たなタスクから処理要求があると、該新たな処理要求があった時点で同時に処理要求を行っている各タスクの合計で決まる新たなシステム要求性能値を算出するステップと、
タスクの処理を終えると、残存タスクがあれば演算に基く所定期間は直前のシステム要求性能値を指示するステップと、
上記所定期間が経過すると残存タスクの合計で決まるシステム要求性能値を算出するステップと、
上記システム要求性能値に基いてプロセッサの動作周波数を指示する動作周波数指示ステップと、
残存タスクがなくなると、省電力となるプロセッサの動作周波数を設定するステップ、とを備えたことを特徴とするプロセッサ電力制御方法。
【請求項１９】
所定期間として、タスクを実行するために消費した消費性能量とタスクが要求した性能量との差と、タスクのシステム要求性能値とにより演算して得ることを特徴とする請求項１８記載のプロセッサ電力制御方法。
【請求項２０】
タスクを要求処理時間に基づいて分類し、該要求処理時間毎にシステム要求性能を得て、動作周波数指示ステップは、上記タスクの優先度対応で周波数を設定することを特徴とする請求項１８記載のプロセッサ電力制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プロセッサを用いた装置において、要求動作を行うプロセッサへの電力を低消費電力に抑えた、電力制御に関するものである。
【背景技術】
【０００２】
モバイル機器に代表されるバッテリ駆動式の情報機器においては、バッテリ持続時間を出来るだけ延長するという観点において、消費電力の削減が大きな課題となっている。またそれだけでなく、商用電源を利用する情報機器においても、環境保全という観点から低消費電力化が推奨されている。
情報機器において、機器のメインコントローラであるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の消費電力が、機器全体の消費電力に占める割合は高い。従って、ＣＰＵの消費電力を削減することが装置全体の低消費電力化につながる。
ＣＰＵの消費電力は、一般に以下の式（１）により表される。
Ｐ∝ｆＶ２                                  （１）
ここで、ｆ：動作周波数，Ｖ：動作電圧である。
【０００３】
一般的なリアルタイムシステムにおいて、動作電圧ｆは、同時に起こり得る全てのイベントが、同時に発生した場合に、全てのイベントに対する処理が規定時間以内に終了するように設定される。すなわち、ワーストケースを考慮して決定される。また、動作電圧Ｖは、上記の動作周波数ｆでＣＰＵが動作するように設定される。
従って、動作周波数ｆと動作電圧Ｖは、システムのワーストケースを考慮して設定されるため、通常のケースでは、動作周波数ｆと動作電圧Ｖは、より低い値に設定することが可能である。
このような観点により、システム動作中に動的に動作周波数や動作電圧を変更することが、ＣＰＵの低電力化に有効である。
【０００４】
リアルタイムシステムにおいては、イベントに対する処理をタスクという実行単位で実行する。複数のイベントに対処するためには、リアルタイムＯＳが複数のタスクの中から１つのタスクを選択してＣＰＵを割り当てる。
例えば、特許文献１においては、ＣＰＵの省電力化の目的で動的に動作周波数と動作電圧を制御する方式を採用し、周期性を持ったタスクのリアルタイム性を保証する制御方式を開示している。同公報で開示された制御方式では、周期性を持ったタスクを対象としており、動作周波数と動作電圧の算出手段に、次にタスクが起動される時刻が既知であることを利用している。
しかしながら、一般のリアルタイムシステムでは、必ずしもイベントに周期性が無い場合が少なくない。例えば、キーボードの入力を一定時間以内に画面に表示するアプリケーションにおいて、キーボードの入力に周期性は無い。このような観点から、周期性の無いイベントに対してもリアルタイム性を保証することが求められている。もしこの周期性がないキーボードの入力も調べようとすると、定期的にキーボード入力を調べる動作となり、そのための時間的に余分な動作が必要であり、またそのために余分な電力も要る。
【０００５】
また、特許文献２では、ＣＰＵの省電力化のために、システムを構成するタスクの１つ１つにＣＰＵ使用量を定義し、実行中のタスクと、実行待ちのタスクのＣＰＵ使用量を加算することで、ＣＰＵの総使用量を算出し、それに基づいてＣＰＵの動作周波数を決定する制御装置について開示している。
同公報による制御装置は、１つ以上のタスクが実行中もしくは実行待ちの状態で、新たなタスクが起動された場合は、ＣＰＵの処理性能を上げてタスク状態に適合し、２つ以上のタスクが実行中もしくは実行待ちの状態で、タスクが終了した場合は、ＣＰＵ処理性能を下げて適合しようとする。
しかしながらリアルタイムシステムにおいて、上記構成ではタスクが終了した場合の処理に不都合が生じる場合がある。具体例を示すと、時刻Ｔ０にタスクＡが起動され、タスクＡが終了する前の時刻Ｔ１にタスクＢが起動されたケースでは、時刻Ｔ０から時刻Ｔ１までの期間、ＣＰＵはタスクＡのＣＰＵ使用量に応じた動作周波数に設定される。次に時刻Ｔ１からタスクＡの処理が終了する時刻Ｔ２までの期間は、タスクＡとタスクＢのＣＰＵ使用量を加算した総ＣＰＵ使用量に応じて動作周波数が設定される。そして、タスクＢの処理が開始される時刻Ｔ２以後は、タスクＢのＣＰＵ使用量に応じて動作周波数が設定される。
即ち、タスクＢは、時刻Ｔ１に起動されたにもかかわらず、時刻Ｔ２に処理が開始され、時刻Ｔ２からタスクＢのＣＰＵ使用量に応じた動作周波数で処理されることになる。このことは、タスクＢは、Ｔ２−Ｔ１時間だけ遅れて終了することを意味し、リアルタイム性が保証されたとは言えないことになる。
【０００６】
また特許文献３では、ＣＰＵの省電力化のために、タスク処理時間をタスク毎に算出し、タスク処理要求時間と比較することで、動作周波数と動作電圧を最適化するシステムクロック決定装置が開示されている。
本技術は、タスクの起動と停止の度に、タスク毎に処理時間を算出することを特長とするが、この算出処理は、除算の商や余りを利用するといった複雑で時間がかかり、電力を必要とする。このような計算を、タスクの数だけ行う必要がある。
リアルタイム性能や低電力化を目的とする場合、動作周波数や動作電圧の算出は、短時間で、それにかかる電力も小さくなくてはならない。
【特許文献１】特開２００２−９９４３２号公報
【特許文献２】特開平１０−１４３２７４号公報
【特許文献３】特開平９−２９７６８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従来のＣＰＵ省電力化制御装置は上記のように構成されており、以下の不具合がある。
即ち、特許文献１に示される、リアルタイム性を保証しつつ、動的に動作周波数と動作電圧を制御する電力制御方式では、タスクに周期性を持たせるという条件がつく。
また特許文献２に示される、単純に残存タスクのみで動作を決める方式では、リアルタイム性を保証できない場合があるという課題がある。
また特許文献３に示される方式では、動作電圧と動作周波数を決めるための計算に、高いコスト（時間、電力）がかかるといった課題がある。
【０００８】
本発明は、これらの課題を解決するためのものであり、複数のタスクを扱うリアルタイムシステムにおいて、イベント処理に対するリアルタイム性を保証しつつ、低コストでＣＰＵの動作周波数と動作電圧を最適に制御する方式を得ることを目的とする。
【課題を解決するための手段】
【０００９】
この発明に係るプロセッサ電力制御装置は、複数のタスクを順次制御するプロセッサへの電力を供給する構成において、
上記タスクを単独で処理し終えるために要求されるシステム要求性能値を記憶するタスク要求性能テーブルと、
上記タスクから処理要求があると、上記タスク要求性能テーブルを参照してシステム要求性能値を求め、更に新たなタスクから処理要求があると、該新たな処理要求時点において同時に処理要求を行っている各タスクの合計で決まる新たなシステム要求性能値を求めるシステム要求性能算出ブロックと、
上記求められたシステム要求性能値に基いてプロセッサの動作周波数を設定し、上記要求されたタスクの処理を終えると、残存タスクがあれば動作周波数の設定を続行し、残存タスクがなければ省電力の動作周波数を設定する電力モード判定ブロック、とを備えた。
【発明の効果】
【００１０】
タスク要求テーブルと電力モードテーブルとシステム要求性能算出ブロックとリアルタイム性を保証する電力モード判定ブロックとを備えたので、リアルタイム性を保証しつつ容易にＣＰＵを省電力動作させられる効果がある。
【発明を実施するための最良の形態】
【００１１】
実施の形態１．
図１は、実施の形態１のシステム構成を示したものである。
図において、ＯＳ１０は、複数のタスクから１つのタスクを選択してＣＰＵ３０に割り付ける一般的なタスクスケジューリング機能に加えて、タスクの起動／停止１１ｃを電力制御ブロック２０に通知する機能を備えたタスクスケジューラ１１を含む。また、タスクスケジューラ１１は、外部からタスク状態を参照する要求に応えて、タスク状態１１ｂを出力することができる。
電力制御ブロック２０は、個々のタスクの要求性能をタスク要求性能テーブル２２に管理する。電力制御ブロック２０は、タスクスケジューラ１１が出力するタスク状態１１ｂとタスクの要求性能から、タスクのリアルタイム性を保証するために必要なシステムの要求性能をシステム要求性能算出ブロック２１で計算する。そして、このシステムの要求性能を満たし、かつ、最も消費電力が小さくなるように、ＣＰＵ３３の電力モードを選択する電力モード判定ブロック２３を有する。この判定は複雑な計算を必要とせず、例えばテーブル参照のみで電力モードを決めることができる。このとき以下に詳述するように、この電力モード判定ブロックは、あるタスクを終了した場合にも、残存タスクの処理リアルタイム性を保証するように電力モードを選択する。電力モードは、動作周波数と動作電圧の組み合わせを指定するもので、図１中の電力モードテーブル２５は、その詳細例として図２の電力モードテーブル２５で表すことができる。
以上の、ＣＰＵ３３の電力モードを決定するプロセスは、スケジューラ１１が通知するタスクの起動／停止１１ｃを通知する度に行う。
【００１２】
クロック生成部３１は、電力制御ブロック２０が算出した電力モードが指定する動作周波数のクロックの生成を行いＣＰＵ３３に供給する。
電圧生成部３２は、電力制御ブロック２０が算出した電力モードが指定する動作電圧による電源電圧を生成し、ＣＰＵ３３に供給する。
個々のタスクの要求性能をＬＤｔｓｋと表記する。ＬＤｔｓｋは、タスクを要求処理時間以内に処理するために必要なＣＰＵの動作周波数を、ＣＰＵの最大動作周波数に対してパーセンテージで表現したものであり、以下の式（２）により算出する。
ＬＤｔｓｋ＝そのタスクをＣＰＵの最大周波数で処理させた時の処理時間／そのタスクの要求処理時間×１００                        （２）
個々のタスク性能を規定する方法は他にもあるが、上記（２）式に基づいて設定することは重要である。
【００１３】
あるタスクを処理するのに要するクロック数は、ＣＰＵの動作周波数が高い場合の方が多くなる。その理由は、多くのＣＰＵのクロック周期は、Ｉ／Ｏ（入出力装置）やメモリのアクセス時間に対して充分短いことが多い。このため、Ｉ／Ｏやメモリのアクセスを行うための、ＣＰＵのクロック数は、高い周波数でＣＰＵを動作させた場合の方が多くなり、同じタスクを処理する場合でも、動作周波数が高い方がクロック数も多くなる。
このような理由により、リアルタイム性を保証するためには、ワーストケースを考慮する意味において、ＣＰＵの最大動作周波数を基準にして、個々のタスクの要求性能を算出する必要がある。
本実施の形態において、システムの要求性能をＬＤｓｙｓとする。ＬＤｓｙｓは、タスクの起動と停止１１ｃを出す度に、以下により算出する。
１）タスクが新たに起動された場合は、タスク起動前のＬＤｓｙｓに起動されたタスクのＬＤｔｓｋを加算した値を新たなＬＤｓｙｓとする。
２）タスクが終了した場合で、かつ、実行中、もしくは実行待ちのタスクがある場合は、ＬＤｓｙｓを変更しない。
３）タスクが終了した場合で、かつ、実行中、もしくは実行待ちのタスクが無くなった場合は、ＬＤｓｙｓを０とする。
【００１４】
上記の１）は、新たなタスクが起動された場合に、その時点で実行中および実行待ち状態にある全てのタスクのリアルタイム性を保証するのに充分な動作周波数と動作電圧を供給する役目を果たす。
上記の２）は、１）により計算された動作周波数と動作電圧を保持することで、全ての実行待ちのタスクにも適用できるようにする。
しかし、１）、２）による処理は、実際に必要となる最低限の動作周波数と動作電圧に対して、少し高い動作周波数と動作電圧を供給することになるかもしれない。
これを、３）により解決する。１）、２）により、動作周波数と動作電圧が少し高く設定されることは、言い換えると、実行中、もしくは実行待ちのタスクが、要求処理時間に対して少し短い時間で処理される結果となる。３）により、ＬＤｓｙｓがリセットされる。
上記１）、２）、３）のサイクルにより、ＣＰＵ３３の動作周波数と動作電圧を最適に維持する。
【００１５】
次に、以下に示す、３つのタスクを処理する場合の具体的な動作を、ＣＰＵ３３がタスクを処理してゆく時間経過を示す図３を用いて説明する。
ここで各タスクの要求性能を以下の通りとする。
ＴＡＳＫ［Ａ］：要求処理時間８０μｓ、ＬＤｔｓｋ＝２０
ＴＡＳＫ［Ｂ］：要求処理時間１００μｓ、ＬＤｔｓｋ＝２０
ＴＡＳＫ［Ｃ］：要求処理時間６０μｓ、ＬＤｔｓｋ＝４０
またこの例で使用するＣＰＵの最大動作周波数は１００ＭＨｚとし、電力モードは、図２に示す６段階とする。
【００１６】
先ず、時刻Ｔａ以前においては、実行中、もしくは実行待ちのタスクが無く、ＬＤｓｙｓ＝０であり、図２により電力モードがＰＭ０である。これに応じて、クロック生成部３１は、ＣＰＵ３３に１ＭＨｚのクロックを供給し、電圧生成部３２は、電圧２．０Ｖを供給している。
この状態から、図３に示すように、時刻ＴａにＴＡＳＫ［Ａ］が起動されたとする。
電力制御ブロック２０は、ＴＡＳＫ［Ａ］のＬＤｔｓｋ＝２０をＬＤｓｙｓとして、図２の電力モードテーブル２５により電力モードをＰＭ１に設定する。これに応じて、クロック生成部３１は、ＣＰＵに２０ＭＨｚのクロックを供給し、電圧生成部３２は、電圧２．２Ｖを供給する。この時点で、ＴＡＳＫ［Ａ］の終了時刻は、Ｔａ＋８０μｓとなる。
次に、図３に示すように、ＣＰＵがＴＡＳＫ［Ａ］を実行中の時刻Ｔｂ＝Ｔａ＋２０μｓに、ＴＡＳＫ［Ｂ］が起動されたとする。
電力制御ブロック２０は、ＴＡＳＫ［Ｂ］のＬＤｔｓｋ＝２０をＬＤｓｙｓに加算して新たなＬＤｓｙｓ＝４０を算出し、図２に基づいて電力モードをＰＭ２に変更する。これに応じて、クロック生成部３１は、ＣＰＵに４０ＭＨｚのクロックを供給し、電圧生成部３２は、電圧２．４Ｖを供給する。
【００１７】
ＣＰＵの動作周波数が２０ＭＨｚから４０ＭＨｚに変化して、ＴＡＳＫ［Ａ］とＴＡＳＫ［Ｂ］の終了時刻は、以下と算出される。
ＴＡＳＫ［Ａ］は、時刻Ｔａから２０μｓの期間は２０ＭＨｚで処理されているので、この時点Ｔｂで、全処理の１／４が終わっている。残りの３／４の処理は、４０ＭＨｚで処理されるので、これにかかる時間は３０μｓである。従って、ＴＡＳＫ［Ａ］の終了時刻は、Ｔａ＋５０μｓとなる。この時間は、ＴＡＳＫ［Ａ］の要求処理時間８０μｓを満たす。
ＴＡＳＫ［Ｂ］は、ＴＡＳＫ［Ａ］の終了時刻Ｔａ＋５０μｓ（＝Ｔｂ＋３０μｓ）に処理が開始され、４０ＭＨｚで処理される。ＴＡＳＫ［Ｂ］の４０ＭＨｚでの処理時間は、５０μｓであるから、ＴＡＳＫ［Ｂ］の終了時刻はＴｂ＋８０μｓ、すなわち、ＴＡＳＫ［Ｂ］が起動されてから８０μｓ後となりＴＡＳＫ［Ｂ］の要求処理時間１００μｓを満たす。
時刻Ｔａ＋５０μｓにＴＡＳＫ［Ａ］が終了すると、スケジューラ１１は、ＴＡＳＫ［Ｂ］にＣＰＵを割り付ける。電力制御ブロック２０は、実行すべきタスクが存在するので、電力モードを先のＰＭ２のまま維持する。
【００１８】
図３に示すように、ＣＰＵがＴＡＳＫ［Ｂ］を実行中の時刻Ｔｃ（＝Ｔａ＋８０μｓ）に、ＴＡＳＫ［Ｃ］が起動されたとする。
電力制御ブロック２０は、ＴＡＳＫ［Ｃ］のＬＤｔｓｋ＝４０をそれまでの維持しているＬＤｓｙｓ＝４０に加算して新たなＬＤｓｙｓ＝８０を算出する。この値により、図２の電力モードテーブル２５から電力モードをＰＭ４に変更する。これに応じて、クロック生成部３１は、ＣＰＵに８０ＭＨｚのクロックを供給し、電圧生成部３２は、電圧２．８Ｖを供給する。
ＣＰＵの動作周波数が４０ＭＨｚから８０ＭＨｚに変化したことで、ＴＡＳＫ［Ｂ］とＴＡＳＫ［Ｃ］の終了時刻は、以下のように算出される。
ＴＡＳＫ［Ｂ］は、その処理の開始から３０μｓの期間は、４０ＭＨｚで処理されているので、この時点Ｔｃで、全処理の３／５が終わっている。残りの２／５を８０ＭＨｚで処理するのにかかる時間は、１０μｓである。従って、ＴＡＳＫ［Ｂ］の終了時刻は、Ｔｂ＋７０μｓとなり、ＴＡＳＫ［Ｂ］の要求処理時間１００μｓを満たす。
【００１９】
ＴＡＳＫ［Ｃ］は、ＴＡＳＫ［Ｂ］の終了時刻Ｔｂ＋７０μｓ（＝Ｔｃ＋１０μｓ）に処理が開始され、８０ＭＨｚで処理される。ＴＡＳＫ［Ｃ］の８０ＭＨｚでの処理時間は、３０μｓであるから、ＴＡＳＫ［Ｃ］の終了時刻はＴｃ＋４０μｓ、すなわち、ＴＡＳＫ［Ｃ］が起動されてから４０μｓ後となりＴＡＳＫ［Ｃ］の要求処理時間６０μｓを満たす。
時刻、Ｔｂ＋４０μｓにＴＡＳＫ［Ｂ］が終了すると、スケジューラは、ＴＡＳＫ［Ｃ］にＣＰＵを割り付ける。電力制御ブロック２０は、実行すべきタスクが存在するので、電力モードをＰＭ４に維持する。
最後に、時刻Ｔｃ＋４０μｓにＴＡＳＫ［Ｃ］が終了すると、電力制御ブロック２０は、他に実行中、もしくは実行待ちのタスクが無いので、ＬＤｓｙｓ＝０とする。この状態では、図２の電力モードテーブル２５により電力モードをＰＭ０と設定する。これに応じて、クロック生成部３１は、ＣＰＵに１ＭＨｚのクロックを供給し、電圧生成部３２は、電圧２．０Ｖを供給し、省電力動作となる。
【００２０】
実施の形態２．
本実施の形態では、電力制御ブロックの具体的な構成と動作を説明する。
図４は、本実施の形態における電力制御ブロック２０ｂをハードウェアで構成した場合のブロック図を示したものである。図において、実施の形態１におけるシステム要求性能算出ブロック２１をハードウェアの加算器２７とＬＤｓｙｓレジスタ２６で構成する。また電力モード判定ブロック２３と周波数／電圧判定ブロック２４を、それぞれハードウェアの電力モード判定回路２３ｂと周波数／電圧判定回路２４ｂで構成する。
【００２１】
この電力制御ブロック２０ｂの動作は、以下のようになる。
先ずタスクの起動にあたっては、スケジューラ１１からタスク識別子１１ｄとタスク起動通知１１ｃ信号を出力するようにする。電力制御ブロック２０ｂは、個々のタスクのＬＤｔｓｋをタスク要求性能レジスタ２２ｂに保持している。またその実行時のシステム要求性能をＬＤｓｙｓレジスタ２６に保持している。そして新たなタスクから処理要求があると、対応してタスク要求性能レジスタ２２ｂからタスク識別子１１ｄで指定されたＬＤｔｓｋを選択して加算器２７に出力する。
加算器２７は、これらのＬＤｔｓｋとＬＤｓｙｓレジスタ２６の内容を加算する回路であり、この結果を、ＬＤｓｙｓレジスタ２６に、タスク起動通知１１ｃ信号を用いてラッチして新たなシステム要求性能に更新する。
【００２２】
電力モード判定回路２３ｂは、ＬＤｓｙｓレジスタ２６の出力に応じて、例えば、図２の電力モードテーブル２５に基づいて、所定の電力モードを出力する。
周波数／電圧判定回路２４ｂは、例えば、図２のような電力モードに対応した周波数と電圧を指定する信号を出力する。
以下のタスクに対応したＣＰＵ３３の動作は、実施の形態１で説明した通りである。
本実施の形態に示すように、電力制御ブロックをハードウェアで実装した場合は、非常に高速に電力モードが切り替えられるだけでなく、ＬＤｓｙｓの計算や電力モードの決定および切り替えに際してＣＰＵを使わないため、ソフトウェアのリアルタイム性能に関わる設計に影響を与えない、という効果がある。
【００２３】
実施の形態３．
本実施の形態では、電力制御ブロックとしてソフトウェアを用いた構成と動作を説明する。
図５は、本発明の電力制御ブロック２０ｃをソフトウェアで構成した場合の動作をフローチャートにより示した図である。即ち、電力制御方法として構成したものである。図５を用いて動作を説明すると、本ソフトウェアは、先ずスケジューラ１１もしくは、タスクの状態変化をモニタしているソフトウェアがタスク状態の変化に応じて電力制御ブロック２０ｃをコール（エンター）する。
まず、ステップ（以下、Ｓと略記する）５１で、タスクの起動／終了であるかという、状態変化の種類を判定する。タスクの起動である場合とタスクの終了の場合で処理が分かれる。なお、この２つの処理を別々の関数として実装してもよい。
【００２４】
・タスク起動の場合の処理
タスク起動の場合は、Ｓ５２で、起動されたタスクの識別子を取得し、Ｓ５３で、識別子からそのタスクのＬＤｔｓｋを読み出す。そしてＳ５４で、読み出したＬＤｔｓｋとその時点でのＬＤｓｙｓを加算して、新たなＬｄｓｙｓを算出する。
次にＳ５５で、算出したＬＤｓｙｓに対して、例えば、図２の電力モードテーブル２５に基づいて電力モードを選択する。そして、Ｓ５６の動作周波数指示、電圧指示ステップで、電力モードに対応する動作周波数をクロック生成部３１に指示し、動作電圧を、電圧生成部３２に指示する。なお、クロック生成部３１と電圧生成部３２はハードウェアにより構成される。
【００２５】
・タスク終了の場合
Ｓ５２でタスクが終了する場合であると、Ｓ５７で、終了するタスク以外に、実行中もしくは実行待ちのタスクが存在するかどうかを調べる。もし実行中か、もしくは実行待ちのタスクが無い場合はＳ５８で、ＬＤｓｙｓ＝０を設定して、Ｓ５５に移って、これに対応する電力モードを選択する。以降のＳ５６における電力モードに対応する動作周波数の指示と、動作電圧の指示は、タスク起動の場合と同様である。  Ｓ５７で、終了するタスク以外に、実行中もしくは実行待ちのタスクが有る場合は、何もしないでリターンする。
【００２６】
なお、電力制御ブロック２０ｃをソフトウェアで構成する場合は、割り込み処理にともなうタスク状態の変化による影響を受けないようにする。即ち、割り込みをマスクした状態で処理するか、ソフトウェア割り込みのような、ハードウェア割り込みよりも優先度の高いソフトウェアとして実装する必要がある。その理由は、ＬＤｓｙｓを計算している途中で、割り込み処理により、タスクの状態が変化してしまうことを防ぐためである。
電力制御ブロック２０ｃをソフトウェアで実装すると、電力モードの切り替えにオーバーヘッドは生じるために、ハードウェアで処理する場合に比べて、動作時間がかかり、従って若干のリアルタイム性が劣化するが、電力制御にかかるオーバーヘッドを考慮することで、リアルタイム性は保証できる。他方、特別なハードウェアを必要としないため、機器開発や製造にかかるコストを低く抑えられる効果がある。
【００２７】
実施の形態４．
本実施の形態では、電力制御ブロックの他の具体的な構成として、モードの選択に割り込みも考慮する場合を説明する。
図６は、本実施の形態における電力制御ブロック２０ｄをハードウェアで構成した場合のブロック図を示したものである。この構成は、実施の形態１の構成に加えて、電力モードを決定する条件に割り込み状態を加味したものである。即ち電力モード判定ブロック２３ｄに電力モードテーブル２５の他に、新たに割り込み期間中電力モード・レジスタ２８を備える。この割り込み期間中電力モード・レジスタ２８では、例えば最高速度で動作周波数が設定されている。もちろんシステムにより、この値を変えるようにしてもよい。更にセレクタ２９を設けて、割り込み期間中は通常の電力モードテーブル２５によらず、割り込み期間中電力モード・レジスタ２８を選択する構成とする。
割り込みは、例えば、タイマー割り込みなどがあり、ハードウェアが直接ＣＰＵ３３に通知し、ＣＰＵ３３はＯＳ１０のスケジューラ１１の管理によらず、一般的に割り込みハンドラと呼ばれるプログラムに割り付けられる。このＣＰＵが割り込みハンドラに割り付けられている期間を割り込み処理期間３０と呼ぶ。
【００２８】
リアルタイムシステムでは、タスクの実行時間は、割り込み処理期間３０を考慮して設計される。例えば、ＴＡＳＫ［Ａ］は起動から１００μｓ以内に処理されなくてはならないというタスク仕様である場合は、ＴＡＳＫ［Ａ］がＣＰＵ３３を占有できる時間は、１００μｓではなく、この１００μｓの間に発生し得る割り込み処理期間の時間を差し引いた時間である。
上記の通り、割り込みはＯＳのスケジューラ１１による管理ではなく、非同期に発生する。従って、動的に動作周波数を変更する電力制御方式においては、動作周波数が遅い電力モードで動作している場合にも発生しうる。しかし、リアルタイムシステムにおけるタスクの実行時間を考えると、割り込み処理期間は極力短時間であることが望ましい。
更に、割り込みが終了すると、セレクタ２９が電力モードテーブル２５を参考する接続となり、かつ、割り込み期間中に発生したタスクも含めて、タスクの起動１１Ｃを受け付けて、実施の形態１の動作に戻る。
【００２９】
本実施の形態では、この割り込み処理期間は、ＣＰＵが最大周波数で動作するようにし、割り込みハンドラで新たなタスクが起動された場合は、割り込み状態が終了したときに、新たに起動されたタスクを考慮した電力モードに設定されるようにした。
本実施の形態における割り込み処理期間も考慮した電力モードの制御をソフトウェアで実施する場合は、割り込みハンドラの先頭で無条件に最高の動作周波数を供給する電力モードに設定する。そして割り込みハンドラから復帰する直前に、図５に示すフローを実施する。ソフトウェアによる構成は、開発コストや製造コストを抑えるのに好適な方式である。
【００３０】
一方、本実施の形態に示す割り込み処理期間における電力モードの制御をハードウェアで実施する場合は、電力モード判定ブロック２３ｄに割り込み処理期間３０中であることを示す信号を入力し、これによりセレクタ２９がモードを選択する構成とする。
この割り込み処理期間３０信号は、ハードウェアの割り込みリクエスト信号のアサートにより出力が開始され、割り込みハンドラから復帰することで、ディアサートされる。
電力モード判定ブロック２３ｄは、割り込み処理期間中を示す信号がアサートされている期間だけ、セレクタ２９により最高の動作周波数を供給する電力モードを選択する。そして、この信号がディアサートされている期間は、本来のＬＤｓｙｓに応じた電力モードを選択する。
【００３１】
本実施の形態に示す割り込み処理期間に関する電力モードの制御をハードウェアで実施する場合は、実行中もしくは実行待ちのタスクが無いようなアイドル状態の場合は、ＰＭ０の電力モードにおいて、ＣＰＵ３３の動作周波数を０ＭＨｚに設定している。しかし、割り込みの発生に付随して、ＣＰＵにクロック供給が再開される。即ちアイドル状態では省電力であり、割り込みがあると最短期間で割り込み処理を終える。
【００３２】
実施の形態５．
本発明による電力制御方式では、個々のタスクの要求性能（ＬＤｔｓｋ）をタスク毎に設定する必要がある。ＬＤｔｓｋは、ヘッダファイルに定義してコンパイル時に生成するようにする方法や、コンフィギュレーション・ファイルに設定し、システム起動後に読み込む方法により設定が可能である。即ち、図７に示すように、具体的には、読取部４１を備えて、図１におけるタスク要求性能テーブルの各タスクの要求性能ＬＤｔｓｋを、上記コンフィギュレーション・ファイルから初期設定時に読取部４１により読出し、この値をタスク要求性能テーブル２２に設定する。またはヘッダファイルに定義されていればコンフィギュレーション・ファイルの代わりにヘッダファイルからタスクの要求性能ＬＤｔｓｋを読み出して、タスク要求性能テーブル２２に設定する。
本方式によらずに設計されたソフトウェアを移植する場合に、上記の方法を選択することで、移植対象のソフトウェアを修正しなくてもよい。
【００３３】
また、これとは別に、図７の他のインタフェースとして示すように、アプリケーション・プログラム・インタフェース（ＡＰＩまたはＡｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）により設定することも可能である。ＡＰＩを用いた設定では、ＬＤｔｓｋを動的に変更することが可能となる。
例えば、ネットワーク経由で受信したデータに対して何らかの処理を行うようなタスクでは、受信するデータ量によって処理負荷が変動する場合がある。このようなケースでは、ＬＤｔｓｋを動的に変更することで、その時々の電力モードを最適化することが可能となる。
【００３４】
データ量は、タスクを起動する時点ですでに判明している場合と、タスクが起動されてから判明するケースがある。
前者の場合は、タスクを起動するソフトウェアが最適なＬＤｔｓｋを変更してから、タスクを起動する。
後者のようなケースでは、タスクを起動するソフトウェアがＬＤｔｓｋを最も負荷が高い処理を想定して設定しておいて、タスクが起動されてから、最適なＬＤｔｓｋに変更する。後者でこのようなステップを踏む理由は、このタスクを起動してから、タスクがＣＰＵに割り付けられるまでに時間差があり、この期間は、他のタスクがＣＰＵに割り付けられているため、このタスクのＬＤｔｓｋを実際よりも低く設定してしまうと、リアルタイム性が保証できなくなるためである。
【００３５】
従って、ＬＤｔｓｋを動的に変更するために、以下の２種類のＡＰＩを備える必要がある。
１１）静的要求性能更新ＡＰＩ：タスク起動前に静的にＬＤｔｓｋを変更するＡＰＩ
１２）動的要求性能更新ＡＰＩ：タスク起動中に動的に自身のＬＤｔｓｋを変更するＡＰＩ
１１）は、単純にそのタスクのＬＤｔｓｋ値を変更するだけである。
１２）は、ＬＤｓｙｓの再計算を伴う。動的にＬＤｔｓｋを変更するケースでは、電力制御ブロックは、変更される前のＬＤｔｓｋと変更後のＬＤｔｓｋの差を取って、以下の式（３）により、ＬＤｓｙｓを再計算する。
ＮｅｗＬＤｓｙｓ＝ｏｌｄＬＤｓｙｓ−ｏｌｄＬＤｔｓｋ＋ｎｅｗＬＤｔｓｋ  （３）
ＮｅｗＬＤｓｙｓ：ＬＤｔｓｋを変更した後のシステム要求性能
ＯｌｄＬＤｓｙｓ：ＬＤｔｓｋを変更する前のシステム要求性能
ＮｅｗＬＤｔｓｋ：変更後のそのタスクの要求性能
ＯｌｄＬＤｔｓｋ：変更前のそのタスクの要求性能
【００３６】
図７は、実施の形態５における電力制御ブロック２０ｅの構造を示した図である。新たな構成要素として、アプリケーション・プログラム・インタフェース（ＡＰＩ）４０を設けている。
図７を用いて、動的要求性能更新ＡＰＩにより、ＴＡＳＫ［Ｂ］のＬＤｔｓｋが４０から２０に変更された場合の処理について説明する。
ＴＡＳＫ［Ｂ］は、処理すべきデータ量に応じて負荷が変動するタスクであり、処理すべきデータ量は、タスクが起動されると判別が可能になる。ＴＡＳＫ［Ｂ］の起動は、データ受信割り込みハンドラにより行われる。ＴＡＳＫ［Ｂ］のＬＤｔｓｋは、起動前に静的要求性能更新ＡＰＩを用いて４０に設定されている。
ＴＡＳＫ［Ｂ］が起動されると、ＴＡＳＫ［Ｂ］はデータ量を判定して、自身のＬＤｔｓｋを、動的要求性能更新ＡＰＩを用いて２０に更新する。
動的要求性能変更ＡＰＩは、変更前のＬＤｔｓｋ値４０と変更後のＬＤｔｓｋ値２０の差をとり、更新要求とその差分２０をシステム要求性能算出ブロック２１に通知する。これを受けたシステム要求性能算出ブロック２１は、ＬＤｓｙｓから差分２０を引き算し、新たなＬＤｓｙｓを計算する。
これ以後は、実施の形態１に示す方法で、動作周波数と動作電圧を生成する。
【００３７】
実施の形態６．
本実施の形態では、実施の形態１で示したプロセッサ電力制御装置と比べて、電力制御ブロックでの計算を木目細かく行い、より精度よく電力モードを最適に調整する装置とした構成と動作について述べる。先ず構成は図１と同じ構成とする。
しかし本実施の形態では、電力制御ブロック（電力制御回路）２０ｆにおいて、システム要求性能ＬＤｓｙｓを、以下の手順により算出する。
２１）タスクが新たに起動された場合は、タスク起動前のＬＤｓｙｓに起動されたタスクのＬＤｔｓｋを加算した値を新たなＬＤｓｙｓとする。
２２）タスクが終了した時点で、他に実行中、実行待ちのタスクがある場合は、終了したタスクの消費性能量Ｅｃと、終了したタスクが実行中もしくは、実行待ちの状態において要求した性能量（Ｅｒ）の差を算出し、これをＬＤｔｓｋで除算した時間Ｔｚだけ、ＬＤｓｙｓを維持する。即ち次の式（４）を設定する。
Ｔｚ＝（Ｅｃ−Ｅｒ）／ＬＤｔｓｋ      （４）
ここで、Ｔｚ：タスク終了後に性能要求を継続する時間、
Ｅｃ：タスクの消費性能量、
Ｅｒ：タスクの要求した性能量である。
２３）上記２２）により計算したＴｚが経過したら、上記２２）で終了したタスクのＬＤｔｓｋをＬＤｓｙｓより減算し、新たなＬＤｓｙｓを算出する。
２４）タスクが終了した時点で、他に実行中、実行待ちのタスクが無い場合は、ＬＤｓｙｓを０とする。
【００３８】
上記において、タスクの消費性能量Ｅｃは、システム要求性能ＬＤｓｙｓをタスクがＣＰＵに割り付けられている時間で積分した値であり、具体的には、周期タイマーを用いて定期的に、実行中のタスクのＥｃにＬＤｓｙｓを加算することで得ることができる。なお、一般的には、図２に示すように、１つの電力モードがＬＤｓｙｓに対して幅を持っている。この場合は、そのＬＤｓｙｓが属する電力モードで供給できる最大性能に対して、タスクがＣＰＵに割り付けられている時間で積分した値となる。例えば、図２において、ＬＤｓｙｓ＝１５の場合、電力モードはＰＭ１が設定される。この場合は、ＰＭ１で供給し得る最大性能は２０である。
タスクの要求した性能量Ｅｒは、タスク要求性能を、タスクが実行中もしくは実行待ち状態の時間で積分した値であり、具体的には、周期タイマーを用いて定期的に、実行中もしくは実行待ちのタスクのＥｒにＬＤｔｓｋを加算することで得ることができる。
【００３９】
上記手順のうち、２２）および２３）は、残存タスクのリアルタイム性を保証する。その理由は、Ｅｃは終了したタスクがタスク実行に要した性能量であり、Ｅｒはそのタスクが要求していた性能量であるから、その差は、他のタスクが要求していた性能量であると言える。言い換えれば、上記終了したタスクは、Ｅｃ−Ｅｒで計算される分だけ他のタスクが要求していた性能量を消費してしまったことにほかならない。従って、タスクが終了後に、上記性能量を残存タスクが利用できるようにして、残存タスクは要求した性能を消費できるため、リアルタイム性を保証できる。
なお、２２）および２３）は、本実施の形態における残存タスクのリアルタイム性を保証する必要条件である。すなわち、残存タスクのリアルタイムを保証する十分条件は、タスク終了後Ｔｚ以内にＥｃ−Ｅｒ以上の性能量を、残存タスクが利用できるするようにすることである。
本方式は、実施の形態１に示した電力制御ブロック２０に比べて、システム要求性能を算出する手順が多くなる分オーバーヘッドが増加するものの、全てのタスクの終了を待たずに電力モードを調整できるため、より低電力化した電力モードを提供することが可能となる。本実施の形態で示される電力制御ブロック２０ｆは、比較的処理時間の長い、すなわち、システム性能算出にかかるオーバーヘッドが、システム全体に占める割合の小さい場合には、実施の形態１に示した装置、方法に比べて低電力化できる。
【００４０】
以上の手順を踏まえて、以下に示す、２つタスクを処理する場合の具体的な動作を、ＣＰＵがタスクを処理してゆく時間経過を示す図８を用いて説明する。ここで、
ＴＡＳＫ［Ａ］：要求処理時間８０ｍｓ、ＬＤｔｓｋ＝２０
ＴＡＳＫ［Ｂ］：要求処理時間１００ｍｓ、ＬＤｔｓｋ＝２０
であるとする。
この例で使用するＣＰＵの最大動作周波数は１００ＭＨｚとして、電力モードは、図２に示す６段階とする。また、Ｅｃ、Ｅｒを得るための周期タイマーは１ｍｓ周期で割り込みを発生させるものとする。
まず、時刻Ｔａ以前においては、実行中、もしくは実行待ちのタスクが無く、ＬＤｓｙｓ＝０であり、図２により電力モードがＰＭ０である。これに応じて、クロック生成部３１は、ＣＰＵ３３に１ＭＨｚのクロックを供給し、電圧生成部３２は、電圧２．０Ｖを供給している。
【００４１】
この状態から、図８に示すように、時刻ＴａにＴＡＳＫ［Ａ］が起動されたとする。電力制御ブロックは、ＴＡＳＫ［Ａ］のＬＤｔｓｋ＝２０をＬＤｓｙｓとして、図２の電力モードテーブル２５により電力モードをＰＭ１に設定する。これに応じて、クロック生成部３１は、ＣＰＵに２０ＭＨｚのクロックを供給し、電圧生成部３２は、電圧２．２Ｖを供給する。この時点でＴＡＳＫ［Ａ］の終了時刻は、Ｔａ＋８０ｍｓとなる。同時に、Ｅｃ＝ＬＤｓｙｓ＝２０，Ｅｒ＝ＬＤｔｓｋ＝２０を設定し、１ｍｓ周期タイマーを起動する。以後、周期タイマーの割り込みが発生する度に、ＴＡＳＫ［Ａ］のＥｃにはＬＤｓｙｓが加算され、ＥｒにはＴＡＳＫ［Ａ］のＬＤｔｓｋが加算される。
次に、図８に示すように、ＣＰＵがＴＡＳＫ［Ａ］を実行中の時刻Ｔｂ＝Ｔａ＋２０ｍｓにＴＡＳＫ［Ｂ］が起動されたとする。
電力制御ブロック２０ｆは、ＴＡＳＫ［Ｂ］のＬＤｔｓｋ＝２０をＬＤｓｙｓに加算して、新たなＬＤｓｙｓ＝４０を算出し、図２に基づいて電力モードをＰＭ２に変更する。これに応じて、クロック生成部３１は、ＣＰＵに４０ＭＨｚのクロックを供給し、電圧生成部３２は、２．４Ｖを供給する。
【００４２】
ＣＰＵの動作周波数が２０ＭＨｚから４０ＭＨｚに変化して、ＴＡＳＫ［Ａ］の終了時刻は、以下と算出される。
ＴＡＳＫ［Ａ］は、時刻Ｔａから２０ｍｓの期間は、２０ＭＨｚで処理されているので、この時点で、全処理の１／４が終わっている。残りの３／４の処理は、４０ＭＨｚで処理されるので、これにかかる時間は、３０ｍｓである。従って、ＴＡＳＫ［Ａ］の終了時刻は、Ｔａ＋５０ｍｓとなる。この時間は、ＴＡＳＫ［Ａ］の要求処理時間８０ｍｓを満たす。
また、ＴＡＳＫ［Ｂ］は、起動されただけで、ＣＰＵを割り付けられていないので、Ｅｃ＝０，Ｅｒ＝ＬＤｔｓｋ＝２０を設定し、以後、周期タイマー割り込みが発生する度に、ＴＡＳＫ［Ｂ］のＥｒには、ＴＡＳＫ［Ｂ］のＬＤｔｓｋが加算される。
Ｔａ＋５０ｍｓにＴＡＳＫ［Ａ］が終了した時点で、周期タイマー割り込みは、ＴＡＳＫ［Ｂ］が起動される前、すなわちＬＤｓｙｓが２０の時に２０回、ＴＡＳＫ［Ｂ］が起動された後、すなわちＬＤｓｙｓが４０の時に３０回発生しているので、ＴＡＳＫ［Ａ］のＥｃは１６２０であり、ＴＡＳＫ［Ａ］のＥｒは１０２０である。
【００４３】
ＴＡＳＫ［Ａ］がタスク終了後に性能要求を継続する時間は以下の式（５）により計算される。
Ｔｚ＝（Ｅｃ−Ｅｒ）／ＬＤｔｓｋ＝（１６２０−１０２０）／２０＝３０  （５）
Ｔｚは以後、周期タイマー割り込みが発生する度に−１され、３０ｍｓ後にＴＡＳＫ［Ａ］は要求を停止する。
Ｔａ＋５０ｍｓの時刻でＴＡＳＫ［Ａ］が終了したので、スケジューラはＴＡＳＫ［Ｂ］にＣＰＵを割り付ける。ＴＡＳＫ［Ａ］がタスク終了後も性能要求を継続しているので、ＬＤｓｙｓは４０のままであり、電力モードにも変更がない。
ＴＡＳＫ［Ａ］が終了してから３０ｍｓ後、すなわち、ＴＡＳＫ［Ｂ］が起動されてから６０ｍｓ後に、ＴＡＳＫ［Ａ］のＴｚが０になると、電力制御ブロック２０ｆは、ＬＤｓｙｓは４０からＴＡＳＫ［Ａ］の要求性能ＬＤｓｙｓ＝２０を差し引いくことにより新たなシステム要求性能２０を算出し、図２に基づいて電力モードをＰＭ１に変更する。これに応じて、クロック生成部３１は、ＣＰＵに２０ＭＨｚのクロックを供給し、電圧生成部３２は、電圧２．２Ｖを供給する。
【００４４】
ＴＡＳＫ［Ａ］が終了してから３０ｍｓの期間は、ＴＡＳＫ［Ｂ］は４０ＭＨｚで処理されるため、時刻Ｔａ＋８０ｍｓの時点では全体の３／５の処理を完了することになり、残り２／５の処理は、２０ＭＨｚで４０ｍｓの時間を要することになる。すなわち、時刻Ｔｂ＋１００ｍｓにＴＡＳＫ［Ｂ］の処理が完了するため、要求処理時間を満足する。
最後に、ＴＡＳＫ［Ｂ］がＴｂ＋１００ｍｓに処理を終了すると、電力制御ブロック２０ｆは、他に実行中、もしくは実行待ちのタスクが無いので、ＬＤｓｙｓ＝０とする。この状態では、図２の電力モードテーブルにより電力モードをＰＭ０と設定する。これに応じて、クロック生成部３１は、ＣＰＵに１ＭＨｚのクロックを供給し、電圧生成部３２は、電圧２．０Ｖを供給する。
なお、上記ではタスクの優先度が２種類の場合を説明したが、優先度をもっと細かく分類してそれぞれにシステム要求性能算出ブロックを設け、これに基いて電力モード判定ブロックが周波数等を設定するようにしてもよい。更に電力制御制御ブロックとして、図８で説明した周波数等のモード設定の詳細計算を、電力モード判定ブロックに代えてシステム要求性能算出ブロックで行うようにしてもよい。
【００４５】
実施の形態７．
実施の形態１に示したシステム要求性能算出ブロックは、システム要求性能を算出するための、オーバーヘッドが非常に小さくという特長を持つ。一方、実施の形態６に示したシステム要求性能算出ブロックが行う処理は、オーバーヘッドは実施の形態１のシステム要求性能算出ブロックより大きいものの、システム性能に精度良く適合して、しかも低電力化が期待できるという特長を持つ。
そこで、本実施の形態では、双方の利点を生かしたハイブリット型のシステム要求性能算出ブロックを持つ装置、方法について説明する。
図９は、システムに実装されるタスクを、実施の形態１に示したシステム要求性能算出ブロック２１を用いて計算されるタスクと、実施の形態６に示した要求性能算出ブロック２１ｆを用いて計算されるタスクに分類したものである。
リアルタイムシステムでは、要求処理時間が短くリアルタイム性が要求されるタスクはタスク優先度が高く、要求処理時間が長くても良いタスクはタスク優先度が低く設定される。すなわち、タスク優先度は、要求処理時間に応じて設定される。そこで、要求処理時間がある一定時間以内のタスク、すなわちタスク優先度がある一定の優先度（Ｐｒ）以上のタスクについては、実施の形態１に示したシステム要求性能算出ブロック２１を適用し、ある一定の優先度（Ｐｒ）未満のタスクについては、実施の形態６に示したシステム要求性能算出ブロック２１ｆを適用する。図９においては、要求処理時間が１ｍｓを境界にしてタスクを分類した場合の例である。
【００４６】
なお、ここで優先度（Ｐｒ）以上のタスクは、優先度（Ｐｒ）未満のタスクに対して一定時間以上ＣＰＵ割り当て時間を保障するものとし、優先度（Ｐｒ）以上のタスクは、前記割り当て時間を保障するようにタスク要求性能を決定し、優先度（Ｐｒ）未満のタスクは、前記割り当て時間内で要求処理時間を満たすように、タスク要求性能を決定するものとする。
図１０は、本実施の形態のシステム構成を示したものである。
図１０において、システム要求性能算出ブロックＡ２１は、優先度（Ｐｒ）以上のタスクについて、システム要求性能の算出を行い、システム要求性能算出ブロックＢ２１ｆは、優先度（Ｐｒ）未満のタスクについて、システム要求性能の算出を行う。これらのシステム要求性能算出ブロックは、タスクの起動と停止の度に、該当タスクの優先度に従っていずれかのシステム要求性能算出ブロックが起動され、各々のシステム要求性能が更新される。
【００４７】
電力モードは、その時点で実行されているタスクの優先度がＰｒ以上であれば、システム要求性能算出ブロックＡの出力を用い、その時点で実行されているタスクの優先度がＰｒ未満であれば、システム要求性能算出ブロックＢの出力を用いて、電力モードテーブルより選択される。
電力モードが選択されてからの動作は、既に説明した各実施の形態における動作と同等なので、ここでの詳細記述は省略する。
本実施の形態に示した方法を、一般的なリアルタイムシステムにおいて、デバイス・ドライバやＯＳに付随するサービス等のプラットフォーム・ソフトウェアを優先度（Ｐｒ）が高い、つまり要求処理時間が短いタスクとして分類し、アプリケーション・プログラムを優先度（Ｐｒ）が低い、つまり要求処理時間が長くてもよいタスクのように分類した場合、リアルタイム性が要求されるプラットフォーム・ソフトウェアに対してはオーバーヘッドが少なく、多くの時間ＣＰＵを占有するアプリケーション・プログラムに対しては、省電力化が優先する構成をとることができる。
【００４８】
実施の形態８．
実施の形態６に示したタスク優先度（Ｐｒ）が高いタスクのＣＰＵの占有率が非常に低い場合、つまり要求動作頻度が低い場合は、タスク優先度（Ｐｒ）が高いタスクについては、システム要求性能を算出しないで一定の値を出力するようにし、タスク優先度（Ｐｒ）が低いタスクについてだけシステム要求性能を算出する。すなわち、図１０におけるシステム要求性能算出ブロックＡ２１の出力を固定値とする。
上記とする理由は、タスク優先度（Ｐｒ）が高いタスクのＣＰＵ占有率が非常に低い場合は、システム要求性能を算出することによる低電力効果を得難いことと、システム要求性能を算出しないことで、オーバーヘッドを削減できるためリアルタイム性を向上させることが可能であることに加えて、システムを簡略化できるためである。
【図面の簡単な説明】
【００４９】
【図１】この発明の実施の形態１におけるプロセッサ電力制御装置の構成ブロック図である。
【図２】実施の形態１における電力モードテーブルを示す図である。
【図３】実施の形態１におけるＣＰＵがタスクを処理してゆく時間経過を示す図である。
【図４】実施の形態２におけるプロセッサ電力制御装置の構成ブロック図である。
【図５】実施の形態３における電力制御ブロックの動作を示すフロー図である。
【図６】実施の形態４におけるプロセッサ電力制御装置の構成ブロック図である。
【図７】実施の形態５におけるプロセッサ電力制御装置の構成ブロック図である。
【図８】実施の形態７におけるＣＰＵがタスクを処理して行く時間経過を示す図である。
【図９】実施の形態８におけるタスクと優先度、要求処理時間の関係を示す図である。
【図１０】実施の形態８におけるプロセッサ電力制御装置の構成ブロック図である。
【符号の説明】
【００５０】
１０  ＯＳ、１１  （タスク）スケジューラ、１２  タスクＡ、１３  タスクＢ、１４  タスクＣ、２０，２０ｂ，２０ｄ，２０ｅ，２０ｆ，２０ｇ  電力制御ブロック、２１〜２１ｆ  システム要求性能算出ブロック、２２，２２ｅ  タスク要求性能テーブル、２２ｂ  タスク要求性能レジスタ、２３，２３ｄ  電力モード判定ブロック、２３ｂ  電力モード判定回路、２４  周波数／電圧判定ブロック、２４ｂ  周波数／電圧判定回路、２５  電力モードテーブル、２６  ＬＤｓｙｓレジスタ、２７  加算器、２８  割り込み期間中電力モード・レジスタ、２９  セレクタ、３１  クロック生成部、３２  電圧生成部、３３  ＣＰＵ、４０  アプリケーション・プログラム・インタフェース（ＡＰＩ）、Ｓ５１  タスクの起動／終了判定ステップ、Ｓ５３  起動タスクのＬＤｔｓｋ取得ステップ、Ｓ５４  新たなＬＤｓｙｓ算出ステップ、Ｓ５５  対応する電力モード選択ステップ、Ｓ５７  実行中または実行待ちタスク調査ステップ、Ｓ５８  ＬＤｓｙｓとして０設定ステップ。
【図１】
2005285093.tif 000003
【図２】
2005285093.tif 000004
【図３】
2005285093.tif 000005
【図４】
2005285093.tif 000006
【図５】
2005285093.tif 000007
【図６】
2005285093.tif 000008
【図７】
2005285093.tif 000009
【図８】
2005285093.tif 000010
【図９】
2005285093.tif 000011
【図１０】
2005285093.tif 000012