(57)【要約】      （修正有）【課題】マルチタスク環境においても、システムのIdle/Busy状態を的確に判断すること。【解決手段】マルチタスク環境においても、システムのIdle/Busy状態を的確に判断し、システムがIdle状態の時は省電力モードで、システムがBusy状態の時は高速モードで動作することができるパワーマネジメントシステム。高速モードで動作させる必要のある割り込みによって、システムを高速モードへ状態遷移させる手段と、ＯＳにおいてシステムのIdle状態を通知する手段と、ＢＩＯＳにおいてIdle状態を知らせるインタフェースの単位時間あたりの発生頻度からシステムのIdle状態を判断し省電力モードへ状態遷移させる手段を持つ。【選択図】図１
2005018662.tif 000002
【特許請求の範囲】
【請求項１】
マルチタスクのシステムにおいて、全てのプログラムが休止状態（ＣＰＵ＿Ｉｄｌｅ）であることを知る手段と、ＣＰＵ＿Ｉｄｌｅの発生割合を計測する手段と、マルチタスクシステムであっても、ＣＰＵ＿Ｉｄｌｅの発生頻度から各プログラムの処理終了を認識する手段と、プログラムが動作していないときは、表示装置等、周辺デバイスへの電源供給を停止し、またはＣＰＵクロックを停止若しくは低下させる手段を有することを特徴とするパワーマネジメントシステム。
【請求項２】
高速処理が必要なプロセスに関連する割り込みを判断する手段と、この割り込みによって前記ＣＰＵクロックを停止若しくは低下させたデバイス等を復帰させる手段を有することを特徴とする請求項１に記載のパワーマネジメントシステム。
【請求項３】
状態遷移発生時に電力制御を行うべき周辺デバイスのデバイスドライバへ状態遷移が発生したことを通知する手段を有し、ソフトウェアによる初期化処理が必要な周辺デバイスであっても電力制御ができることを特徴とする請求項１または２に記載のパワーマネジメントシステム。
【請求項４】
ＯＳ及びＢＩＯＳだけで、電力制御する手段を有し、アプリケーションプログラムに特別な作り込みを必要としないことを特徴とする請求項１〜３の何れか１に記載のパワーマネジメントシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、パワーマネジメント（消費電力低減）システムに関し、特にコンピュータ装置のパワーマネジメントシステムに関する。
【０００２】
【従来の技術】
従来のパワーマネジメントシステムの一例が、特開平４−３１１２３０号公報に記載されている（以下「従来技術１」という。）。図８に示すように、この従来のパワーマネジメントシステム（ＣＰＵアイドル検出装置）は、ＣＰＵがメモリから読み出した命令が、アイドル用命令か、動作用命令かを判断する手段と、アイドル用命令の発生頻度を計測する手段とから構成されている。
【０００３】
アイドル用命令、動作用命令の判断は、例えばアプリケーションは、キー入力検出を行うときは、ＢＩＯＳに対して、「ＩＮＴ１６」の命令を出す。アプリケーションは、直接ハードウェアを操作できないため、ＢＩＯＳにキー入力の有無を通知してもらい、キー入力があったときは、そのキーで入力されたデータを、また、キー入力が無いときは、キー入力がないことを、ＢＩＯＳから知らせてもらう。この様な場合、「ＩＮＴ１６」がアイドル用命令になる。一方、入出力装置のうち、例えば、フレキシブルディスクへのアクセス時は、ＣＰＵは読み取り動作を行うために仕事を行う。このように、ＣＰＵが仕事を行う必要のある命令が動作用命令となる。
【０００４】
この様な構成を有する従来のパワーマネジメントシステムは次のように動作する。
【０００５】
すなわち、アイドル用命令の発生頻度が高い場合はシステムがアイドル状態と判断しＣＰＵ動作クロックを下げることで、消費電力を低減させる。また、動作用命令が実行されるとシステムはアイドル状態ではなくなったと判断し、ＣＰＵ動作クロックを上げる。
【０００６】
また、従来のパワーマネジメントの一例（以下「従来技術２」という。）が、
著者  Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ  ａｎｄ  Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ
題名  Ａｄｖａｎｃｅｄ  Ｐｏｗｅｒ  Ｍａｎａｇｅｍｅｎｔ（ＡＴＰ）  ＢＩＯＳ  ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ
発行年月日  Ｆｅｂｒｕａｒｙ  １９９６
説明ページ  ３４，３５
に記載されている。
【０００７】
パーソナルコンピュータにおける、パワーマネジメントのデファクトスタンダードであるＡｄｖａｎｃｅｄ  Ｐｏｗｅｒ  Ｍａｎａｇｅｍｅｎｔ（以後「ＡＰＭ」という。）では、ＣＰＵを停止して良い場合にＢＩＯＳに発行するＣＰＵ＿Ｉｄｌｅのインタフェースが定められている。ＢＩＯＳはＣＰＵ＿Ｉｄｌｅを受けるとＣＰＵにＨＡＬＴ命令、ＣＰＵを停止することで省電力制御する。ＣＰＵの復帰は割り込みで行う。
【０００８】
なお、ＡＰＭではＣＰＵ＿Ｂｕｓｙが規定されているが、マルチタスクＯＳでは、このインタフェースはサポートされておらず、使用できない。
【０００９】
【特許文献１】
特開平４−３１１２３０号公報
【００１０】
【発明が解決しようとする課題】
しかし、第１の問題点は、これらはマルチタスクＯＳに対応していないという問題があった。
【００１１】
従来技術１では、プログラムのアイドル状態にあるときに発生する命令を、ハードウェアの仕組みにより検出しているが、マルチタスクＯＳでは、あるプログラムがアイドル状態になっていても、他のプログラムが動作している場合があり、正しい判断ができないためである。さらに、マルチタスクＯＳのアイドル状態時は、大抵ＪＭＰ命令、またはＬＯＯＰ命令が実行されているが、これらの命令は、アイドル時以外でも頻繁に利用されるため、これを検出してもアイドルの判断には使用することができない。
【００１２】
従来技術２では、ＣＰＵ＿ＩｄｌｅインタフェースによってＣＰＵを停止させるが、マルチタスクＯＳでは、タスク（プログラム）が動作中でも、別のタスクを動作させるために一瞬アイドル状態になり、ＣＰＵ＿Ｉｄｌｅインタフェースが発生する。従って、マルチタスクＯＳ環境では、ＣＰＵ＿Ｉｄｌｅインタフェースが発生したからと言って、システムがアイドル状態になったとは限らない。
【００１３】
また、ＣＰＵ＿ＩｄｌｅインタフェースでＣＰＵを停止させ、割り込みで復帰させることで、前述の一瞬のアイドルに対応する方法もある。例えば、一般的なＤＯＳ／Ｖパーソナルコンピュータ（以下「ＰＣ」と言う。）では、最短のわりこみは５５ミリ秒おきに発生するインターバルタイマーがある。従って、ＣＰＵ＿ＩｄｌｅインタフェースでＣＰＵ停止しても、最大でも５５ミリ秒後には、インターバルタイマーの割り込みで復帰することができるので、もし、別のタスクが動作中であっても、すぐに動き出すことができる。しかし、この方法では、全てのタスクがアイドル中でＣＰＵは動作する必要が無くても、５５ミリ秒ごとにＣＰＵが復帰し、次にＣＰＵ＿Ｉｄｌｅインタフェースを発行してＣＰＵ停止の処理が行われるまでの間、ＣＰＵが動作をし、無駄な殿呂消費をしてしまう。
【００１４】
第２の問題点は、従来技術１では、ハードウェアに特別な仕組みが必要であることである。
【００１５】
つまり、ＣＰＵが実行する命令を検出しはんだんするしくみがひつようだからである。
【００１６】
第３の問題点は、従来技術１では、ハードウェアだけで制御しているため、例えば周辺デバイスの省電力制御に制約があることである。
【００１７】
つまり、周辺デバイスの中には、電源供給を止めた後、復帰するときにソフトウェアによる初期化処理が必要なデバイスがあり、ハードウェアだけで制御する従来技術１では、これらのデバイスの初期化処理ができないからである。
【００１８】
そこで、本発明は上記問題に鑑み、（１）マルチタスクＯＳでも利用できる、（２）ハードウェアに、ＣＰＵが実行する命令を検出し判断する特別な仕組みを必要としない、（３）レジューム時にソフトウェアによる初期化処理が必要なデバイスにも対抗可能、（４）アプリケーションプログラムに特別な作り込みを必要としない、との条件でもシステムのアイドル状態を的確に判断して、消費電力を低減できるパワーマネジメントシステムを提供することを目的とする。
【００１９】
【課題を解決するための手段】
本発明の第１のパワーマネジメントシステムは、マルチタスクを管理するＯＳ層で、アイドルを検出する手段と、それを電力制御する部分（ＢＩＯＳ等）に通知する手段と、アイドルの発生頻度を計測するための、一定時間を計るタイマーとカウントを備え、アイドルの発生頻度が高ければ、システムはアイドル状態にあると判断し、省電力モードへ状態遷移するよう動作する。
【００２０】
また、高速モードへの状態遷移には、システムの動作開始に関わる割り込み、例えば、キーボードや、マウス等の割り込みを検出する手段を備え、その割り込みによって、高速モードへ状態遷移するよう動作する。
【００２１】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００２２】
図１を参照すると、本発明の第１の実施の形態のコンピュータは、ハードウェア構成としては、プログラム制御によりクロックダウン等の省電力制御が可能なＣＰＵ１１１と、同じくプログラム制御により、電源ＯＦＦ等の省電力制御が可能な周辺デバイス１１３〜１１６から構成され、ソフトウェアは、状態遷移を制御するＢＩＯＳ１１０と、マルチタスキングを制御するＯＳ１０９と、各デバイスを制御するデバイスドライバ１０５〜１０８と、ユーザが望む処理を実行するアプリケーションプログラム１０１〜１０４とから構成されている。
【００２３】
次に、図１及び図２の状態遷移図、図３〜図５のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。
【００２４】
まず、図１におけるＯＳ１０９はマルチタスクＯＳで、複数存在するアプリケーションプログラム１０１〜１０４やデバイスドライバ１０５〜１０８を管理している。アプリケーションプログラムや、デバイスドライバが一切動作していないときは、ＯＳは、優先順位の最も低いＩｄｌｅ処理で待ち続ける。図５に示すように、ＯＳのＩｄｌｅ処理では、ＢＩＯＳのＣＰＵ＿Ｉｄｌｅ処理をｃａｌｌ（図１の１２２）し続ける。
【００２５】
ここで、例えば、キーボード（図１の１１４）を押下してアプリケーションプログラムを起動しようとすると、まずキーボードを制御するデバイスドライバ（図１の１０６）が割り込み起動され（実際にはＢＩＯＳ経由）、ＯＳを経由して、関連したアプリケーションが起動される。何らかのタスクが起動すると、優先順位の最も低いＩｄｌｅ処理は動作しなくなる。
【００２６】
この時の動作は、図２では、２０３である。キーボード（図１の１１４）を押下することによる割り込みによって、ＢＩＯＳはＣＰＵに対しては、クロックアップ等の高速化要求を出す（図１の１２４）。またＯＳに対しては、高速化の状態遷移を通知する（図１の１２３）。ＯＳは、省電力に関連するデバイスを管理するタスク（主にデバイスドライバ）に高速化の状態遷移を通知する（図１の１２１）。高速化の状態遷移の通知を受けたデバイスドライバは、デバイスに対して高速化のための適切な処理を行う。
【００２７】
一方、全てのタスクが終了すると、最も優先順位の低いＩｄｌｅタスクが動き出し、ＣＰＵ＿Ｉｄｌｅをｃａｌｌし続ける。
【００２８】
ＢＩＯＳは、ＣＰＵ＿Ｉｄｌｅを短時間に多数受けた場合にシステムをＩｄｌｅと判断し、省電力モードへ状態遷移させる。この時の動作は図２の２０４である。省電力化の状態遷移が発生すると、ＢＩＯＳはＣＰＵに対しては、クロックダウン等の省電力化要求を出す（図１の１２４）。またＯＳに対しては省電力化の状態遷移を通知する（図１の１２３）。ＯＳは、省電力に関係するデバイスを管理するタスク（主にデバイスドライバ）に省電力化の状態遷移を通知する（図１の１２１）。省電力化の状態遷移の通知を受けたデバイスドライバは、デバイスに対して省電力のための適切な処置を行う。
【００２９】
ＢＩＯＳがＩｄｌｅを判断する仕組みを具体的に説明すると、ＣＰＵ＿ＩｄｌｅをｃａｌｌされたＢＩＯＳでは、図３の動作を行う。すなわち、ＣＰＵ＿Ｉｄｌｅを受けた回数を数え（図３の３０１）、その回数が、基準値を上回っていればシステムはＩｄｌｅ状態と判断し省電力モードへ状態遷移させ（図２の２０４）、Ｉｄｌｅカウンタをクリアする。基準値を上回っていなければ、何もしない（高速モードにとどまる）。
【００３０】
なお、ＯＳによっては、数十ミリ秒単位のＩ／Ｏウェイト等によって、Ｉｄｌｅ処理が動くものもある。こういった場合のＩｄｌｅを積算してしまうことを防ぐため、図４に示すように、ＢＩＯＳは、一定時間毎にＩｄｌｅカウンタをクリアする。これによって、図３の処理と合わせ、単位時間あたりのＩｄｌｅ回数を出すことができる。
【００３１】
上記説明した処理により、単位時間あたりのＩｄｌｅ数を測定することができ、システムに応じて（ＣＰＵ性能などにより左右されるので）基準値を定めることで図２に示すような状態遷移が可能になる。
【００３２】
また、複数のタスクが動作中から、あるタスクが終了をＯＳに通知しても（図１の１２０）、他に動作中のタスクがあれば、優先順位の最も低いＩｄｌｅ処理は動作しない（ＯＳによって、動作することはあっても、動作し続けることはない  →  ＣＰＵ＿Ｉｄｌｅがｃａｌｌされ続けることはない）。
【００３３】
従って、どれか一つでもタスクが動作中は、ＣＰＵ＿Ｉｄｌｅが連続発生することはないので、省電力モードへ状態遷移することはなく、本方式がマルチタスクＯＳにも対応可能であることが判る。
【００３４】
さらに、ソフトウェアで状態遷移を管理しているので、ソフトウェアによるデバイスの初期化など、状態遷移時にソフトウェアで必要な処理も行える。
【００３５】
上記説明した動きについて、階層的断面から説明した図６を参照しながらＩｄｌｅを判断する仕組みについて補正説明する。
【００３６】
まず、どのタスクも動作していないとき（図６の６０１）は、ＣＰＵ＿Ｉｄｌｅが多発している。キーボード等の押下による割り込み（図６の６０２）で、ＣＰＵを高速モードに状態遷移させる。同時にタスク１が開始される。タスク１が動作を始めると、Ｉｄｌｅ処理に回ってこなくなるため、ＣＰＵ＿Ｉｄｌｅインタフェースは殆ど発生しない。タスク１がタスク２を起動すると、ＯＳは状況に応じて、タスク１とタスク２を切り換え、それぞれが動作できるように制御する。タスク１の処理が終了（図６の６０３）しても、タスク２が動作している間は、Ｉｄｌｅ処理が殆ど行われることはないため、ＣＰＵ＿Ｉｄｌｅインタフェースは殆ど発生しない。ＢＩＯＳは、タイマの割り込みでＣＰＵ＿Ｉｄｌｅのカウンタをクリアすることで、単位時間あたりのＣＰＵ＿Ｉｄｌｅインタフェースの発生頻度を監視している。タスク２も終了（図６の６０４）し、動作しているタスクが無くなると、ＣＰＵ＿Ｉｄｌｅインタフェースが多発し、ＢＩＯＳはシステムがＢｕｓｙと判断し、ＣＰＵを省電力化する。
【００３７】
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。
【００３８】
これは、第１の実施の形態における、ＢＩＯＳの動作の変形である。
【００３９】
すなわち、構成は図１と同じ、状態遷移も図２と同じ、ＯＳの動作も図５と同じで、ＢＩＯＳの動作（図３，図４）に違いがある。第１の実施の形態では、ＣＰＵ＿Ｉｄｌｅ処理において行っていたＩｄｌｅカウンタの比較判断と、状態遷移の処理を、タイマ割り込み処理において行うようにする（図７，図８）。
【００４０】
ＣＰＵ＿Ｉｄｌｅ処理（図７）ではＩｄｌｅカウンタのカウントアップだけを行う。タイマ割り込み処理（図８）において、Ｉｄｌｅカウンタの比較を行い、基準値を超えていれば省電力モードへ状態遷移を行う。さらに、状態遷移の有無にかかわらずこの後でＩｄｌｅカウンタのクリア（初期化）を行う。
【００４１】
上記説明した処理により、第１の実施の形態と同様に、単位時間あたりのＩｄｌｅ数を測定することができ、システムに応じて（ＣＰＵ性能などにより左右されるので）基準値を定めることで図２に示すような状態遷移が可能になり、第１の実施の形態と同様の効果を得ることができる。
【００４２】
次に、第３の実施の形態について図９を参照して詳細に説明する。
【００４３】
これは、システムのＩｄｌｅ／Ｂｕｓｙの判断（図９の９０１−９０２間の状態遷移の判断）は、本発明の第１の実施の形態、または、本発明の第２の実施の形態のフローチャートを用い、図２の状態遷移を更に発展させたものである。
【００４４】
高速モード（図９の９０１）では、全てのデバイスがＯＮ状態で、消費電力も最も多い。省電力モード（図９の９０２）は、ＣＰＵは省電力モードで動作し、システムＢｕｓｙ中しか使用されることがなく、復帰に時間のかからない一部のデバイスがＯＦＦされる。スタンバイモード（図９の９０３）では、ＣＰＵのクロックは停止され、ＣＲＴ等、更に多くのデバイスの電源がＯＦＦされる。サスペンドモード（図９の９０４）では、メモリを保持する電力等、サスペンド状態を保てる必要最小限の電力以外は全てＯＦＦされる。
【００４５】
当然、消費電力の関係は、「高速モード＞省電力モード＞スタンバイモード＞サスペンドモード」のようになる。
【００４６】
次に状態遷移の様子を説明する。
【００４７】
高速モード（図９の９０１）から省電力モード（図９の９０２）への状態遷移には本発明の第１の実施の形態、または、本発明の第２の実施の形態を用いることで実現する。
【００４８】
ＢＩＯＳ（図１の１１０）は、省電力モードへ遷移したところでスタンバイ用のタイマを設定する。このスタンバイ用タイマが作動中に動作開始に関わる割り込みが発生して高速モードへ状態遷移すれば、このスタンバイ用のタイマはクリアする。スタンバイ用のタイマがクリアされること無くタイムアウトすれば、ＢＩＯＳはシステムを、スタンバイモード（図９の９０３）へ状態遷移させる。スタンバイモードに遷移すると、ＢＩＯＳは、サスペンド用のタイマをセットする。このサスペンド用タイマが作動中にキーボード、マウス等の割り込みが発生して省電力モードへ状態遷移すれば、このサスペンド用のタイマはクリアする。サスペンド用のタイマがクリアされることなくタイムアウトすれば、ＢＩＯＳはシステムを、サスペンドモード（図９の９０４）へ状態遷移させる。
【００４９】
上記説明したように、本発明の第１の実施の形態、または、本発明の第２の実施の形態に、タイマによる状態遷移を組み合わせることで、より効率的なパワーマネジメントシステムを構築することができる。
【００５０】
【発明の効果】
以上説明したように本発明によれば、システムのＩｄｌｅ発生を、単位時間あたりで測定するため、システムのアイドル状態を的確に判断して、消費電力を低減できる、パワーマネジメントシステムを提供できる。
【００５１】
また、マルチタスクＯＳのＩｄｌｅ処理を検出するため、マルチタスクＯＳでも利用することができる。
【００５２】
また、ソフトウェアでシステムのアイドルの通知を受けカウントするため、ハードウェアに、ＣＰＵが実行する命令を検出し判断する特別な仕組みを必要としなくなる。
【００５３】
また、パワーマネジメントをソフトウェアで制御しておき、各デバイスドライバに状態遷移を通知することで、ソフトウェアによるデバイスの初期処理が可能なため、レジューム時にソフトウェアによる初期化処理が必要なデバイスにも対応可能となる。
【００５４】
また、パワーマネジメントの制御を、デバイスドライバを含むＯＳとＢＩＯＳだけで行っているため、アプリケーションプログラムに特別な作り込みを必要としなくなる、という効果がある。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態の構成を示すブロック図である。
【図２】第１の実施の形態の状態遷移を示す状態遷移図である。
【図３】第１の実施の形態の動作を示す流れ図である。
【図４】第１の実施の形態の動作を示す流れ図である。
【図５】第１の実施の形態の動作を示す流れ図である。
【図６】第１の実施の形態の動作を示す図である。
【図７】第２の実施の形態に動作を示す流れ図である。
【図８】第２の実施の形態の動作を示す流れ図である。
【図９】第３の実施の形態の状態遷移を示す状態遷移図である。
【符号の説明】
１０１〜１０４  アプリケーションプログラム
１０５〜１０８  デバイスドライバ
１０９  ＯＳ
１１０  ＢＩＯＳ
１１１  ＣＰＵ
１１２  リアルタイムコントローラ
１１３  ＣＲＴ
１１４  キーボード
１１５〜１１６  周辺デバイス
１２０  タスクからの終了やＷａｉｔの通知
１２１  ＯＳから各タスクへの状態遷移の通知インタフェース
１２２  ＣＰＵ＿Ｉｄｌｅインタフェース
１２３  ＢＩＯＳ→ＯＳへの状態遷移の通知インタフェース
１２４  ＢＩＯＳ→ＣＰＵへの状態遷移の指示
２０１  高速モード（処理能力は高いが消費電力も多い）
２０２  省電力モード（消費電力は少ないが、処理能力も低い）
２０３  高速モードへの状態遷移
２０４  省電力モードへの状態遷移
３０１  ＣＰＵ＿Ｉｄｌｅのカウントアップ処理
３０２  ＣＰＵ＿Ｉｄｌｅのカウンタの比較処理
３０３  省電力モードへの状態遷移処理
３０４  ＣＰＵ＿Ｉｄｌｅのカウンタクリア処理
９０１  高速モード（処理能力は高いが消費電力も多い）
９０２  省電力モード（消費電力は少ないが、処理能力も低い）
９０３  スタンバイモード（ＣＲＴ等、主なデバイスはＯＦＦ。しかし、サスペンドモードに比べ復帰は早い）
９０４  サスペンドモード（サスペンド状態を保持できる最小限の電力（メモリ保持用の電力等）を除いて全てのデバイスの電源ＯＦＦ。復帰にも少し時間がかかる）
【図１】
2005018662.tif 000003
【図２】
2005018662.tif 000004
【図３】
2005018662.tif 000005
【図４】
2005018662.tif 000006
【図５】
2005018662.tif 000007
【図６】
2005018662.tif 000008
【図７】
2005018662.tif 000009
【図８】
2005018662.tif 000010
【図９】
2005018662.tif 000011