(57)【特許請求の範囲】
【請求項１】
コンピュータ上において電力消費デバイスを管理するオペレーティング・システムを有するコンピュータにおいて、前記コンピュータに利用可能な電力量に基づいて、電力消費を維持するコンピュータ実装方法であって、
（ａ）前記コンピュータに利用可能な現在の電力量を特定するステップと、
（ｂ）前記コンピュータに利用可能な現在の電力量が、性能低下状態と関連付けられているか否か判定を行うステップと、
（ｃ）前記現在の電力量が性能低下状態と関連付けられている場合、前記コンピュータを前記性能低下状態に移すために、前記電力消費デバイスの構成を変更するステップと、
を備え、
前記コンピュータを前記性能低下状態に移すために、前記電力消費デバイスの構成を変更するステップは、
（ｃ１）前記コンピュータ上で現在アクティブとなっているアプリケーション・プログラムの要件を特定するステップと、
（ｃ２）前記アプリケーション・プログラムの要件を満たすように、前記電力消費デバイスの電力消費機構を変更するステップと、
を含み、
前記コンピュータ上で現在アクティブとなっているアプリケーション・プログラムの要件を特定するステップは、異なる利用可能な性能状態における前記アプリケーション・プログラムに対するハードウェア要件を記述するハードウェア要件設定情報を入手するステップを含み、
前記現在アクティブとなっているアプリケーション・プログラムが停止していない場合、前記現在アクティブとなっているアプリケーション・プログラムが停止するまで前記各ステップを反復する、方法。
【請求項２】
請求項１記載の方法であって、更に、前記現在の電力量が性能低下状態と関連付けられていない場合、前記電力消費デバイスが最大性能レベルで機能することを許可するステップを備えている、方法。
【請求項３】
請求項１記載の方法において、前記オペレーティング・システムは、既存の電力維持方式を実装し、前記コンピュータの非稼動度に基づいて、異なるシステム状態間で前記コンピュータを遷移させ、
前記コンピュータがアクティブ・システム状態にある場合、電力を維持するために前記電力消費デバイスの構成を変更する、方法。
【請求項４】
請求項３記載の方法において、前記既存の電力維持方式は、前記電力消費デバイスと前記オペレーティング・システムとの間における通信をし易くするために、高度構成および電力インターフェース（ＡＣＰＩ）を用いており、
前記コンピュータを前記性能低下状態に移すために、前記電力消費デバイスの構成を変更するステップは、電力消費デバイスをデバイス・スリープ状態に移すために、前記高度構成および電力インターフェースを用いるステップを含む、方法。
【請求項５】
請求項４記載の方法において、前記コンピュータに利用可能な現在の電力量を特定するステップは、前記高度構成および電力インターフェースを用いて入手したデータ構造において調査を行うステップを含む、方法。
【請求項６】
請求項１記載の方法において、前記コンピュータに利用可能な現在の電力量が、性能低下状態と関連付けられているか否か判定を行うステップは、前記コンピュータに利用可能な電力量を表す値と、異なる性能低下状態と関連付けられている閾値との間の比較を行うステップを含む、方法。
【請求項７】
請求項１記載の方法において、前記電力消費デバイスの構成を変更するステップは、現在利用されていない電力消費デバイスが提供する機構を特定し不活性化するステップを含む、方法。
【請求項８】
コンピュータに請求項１〜７の何れか１項に記載のステップを実行させるためのプログラム。
【請求項９】
コンピュータに請求項１〜７の何れか１項に記載のステップを実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
市場の要求、環境面の必要性、業務コスト、および限界があるバッテリ寿命のために、コンピュータは、終始一貫した計算サービスを提供しつつも、できるだけ少ないエネルギを用いるようにしなければならなくなっている。コンピュータが消費するエネルギは、常時最大計算パワーを提供する代わりに、必要に応じてサービス毎に十分な計算パワーを提供することによって、一層効率的に管理することができる。ラップトップ、デスクトップ、およびメインフレーム・コンピュータのようなコンピュータ、パーソナル・ディジタル・アシスタント（ＰＤＡ）、セルラ電話機等は、プログラム命令を電子回路によって実行させることによって、サービスを提供する。これに関して、コンピュータにおける種々のデバイスは、サービスを提供することができるように電力を消費する電子回路を維持する。
【０００２】
殆どのコンピュータは、オペレーティング・システムと慣例的に呼ばれているコンピュータ・プログラムを実行し、これがコンピュータの動作を導き、他のプログラムにサービスを提供する。更に具体的には、オペレーティング・システムは、メモリ、大容量メモリ・ストレージ、周辺デバイス等のようなハードウェア・リソースの割り当ておよび使用を制御する。計算機を初期化し動作させるコンピュータ命令は、「カーネル」と呼ばれることが多いオペレーティング・システムのコンポーネントに収容されているのが通例である。コンピュータを起動すると直ちに、カーネルが実行を開始する。カーネルはハードウェアを直接制御し、コンピュータの状態を記述するデータにアクセスすることができるので、カーネルは計算パワーを規制するため、そしてそれ以外ではエネルギ消費を制御するために用いることもできる。
【０００３】
従前より、オペレーティング・システムによって設けられる電力管理機構は、実行されている処理量を定量化し、コンピュータの忙／閑に基づいて異なるシステム状態（「Ｓ状態」と呼ばれる場合もある）間で遷移することから成る。例えば、あるコンピュータおよびそのオペレーティング・システムは、アクティブ状態（例えば、Ｓ０）および種々のシステム・スリープ状態（例えば、Ｓ１−Ｓ４）を含む異なるシステム状態をサポートする、高度構成および電力インターフェース（「ＡＣＰＩ」）として知られている規格に準拠する。更に、コンピュータがシステム状態間で遷移する場合、コンピュータ上にある電力消費デバイスは、アクティブ状態（例えば、Ｄ０）および種々のデバイス・スリープ状態（例えば、Ｄ１−Ｄ３）を含む、しかるべきデバイス状態（「Ｄ状態」とも呼ばれる場合もある）に遷移することができる。これに関して、オペレーティング・システムは個々のデバイスがしかるべきデバイス状態に遷移することができるように、状態対デバイスのマッピングを維持することを責務とするとよい。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一方では、システムおよび関連するデバイスのスリープ状態が連続的に深くなる毎に、アクティブ状態に対して提供される電力節約のレベルが高くなる。他方では、システムおよびデバイスのスリープ状態が高い程、ハードウェアの可用性が低下する。例えば、スリープ状態からアクティブ状態に遷移するためには、ある時間期間即ちレイテンシ・オーバーヘッドが必要となる場合がある。いずれにしても、これらの種類の既存のシステムでは、電力管理の判断は、利用可能な残留電力量を考慮していない。その結果、残留電力量が非常に少なくてもある種のハードウェア・デバイスの電力節約能力が最大限生かされないので、ユーザがコンピュータ上で有意なタスクを実行することができる時間期間は短くなる。
【課題を解決するための手段】
【０００５】
概略的に述べると、本発明の実施形態は、コンピュータ上にインストールしたプログラムによる有意なタスクの実行を許容しつつ、コンピュータの電力消費を最小限に抑えることを目的とする。一実施形態によれば、電源から利用可能な現在の電力最大出力に基づいて、電力維持対策を実施する方法を提供する。更に具体的には、この実施形態では、本方法は、電源からコンピュータに利用可能な現在の電力量を特定するステップを含む。次いで、コンピュータに現在利用可能な電力量が性能低下状態に関連付けられているか否かに関して鑑定を行う。現在の電力量が性能低下状態に関連付けられている場合、本方法は一部の電力消費デバイスの構成を変更して、コンピュータをしかるべき性能低下状態にする。
【０００６】
この摘要は、以下に詳細な説明において更に説明する概念から選択して、簡略化した形態で紹介するために設けられている。この摘要は、特許請求する主題の鍵となる特徴を特定することを意図するのではなく、特許請求する主題の範囲を決定する際の補助として用いられることも意図していない。
【０００７】
以上の態様および本発明の付随する利点の多くは、添付図面と関連付けて以下の詳細な説明を参照することにより、一層良く理解されるにしたがって、一層容易に認められるようになるであろう。
【図面の簡単な説明】
【０００８】
【図１】図１は、本発明の態様を実施するのに適したコンポーネントを有するコンピュータ例のブロック図である。
【図２】図２は、本発明の一実施形態にしたがって、コンピュータが消費する電力を維持するために性能状態遷移を特定し実行する方法例を示すのに適した電力管理ルーチンの機能流れ図である。
【発明を実施するための形態】
【０００９】
これより、コンピュータが実行するプログラム・モジュールのような、コンピュータ実行可能命令に関して、本発明について総合的に説明する。概して述べると、プログラム・モジュールは、ルーチン、プログラム、アプリケーション、ウィジェット、オブジェクト、コンポーネント、データ構造等を含み、特定のタスクを実行するか、または特定の抽象的データ・タイプを実装する。また、本発明は、コンピュータ・ネットワークを通じてリンクされているリモート処理デバイスによってタスクを実行する、分散型計算環境においても実用化することができる。分散型計算環境では、プログラム・モジュールはローカルおよび／またはリモート・コンピュータ記憶媒体に配置することができる。
【００１０】
本発明は、主に、利用可能電力量が任意に設定し必要に応じて再構成することができるある閾値量未満になったときに、コンピュータ上においてハードウェア・デバイスが消費する電力を削減するという文脈において説明するが、本発明は他の文脈でも摘要可能であることは、当業者およびその他の者には認められよう。いずれにしても、以下の説明では、最初に、本発明の態様を実施することができるコンピュータの総合的な概要を規定する。次いで、一実施形態にしたがって本発明を実行するルーチンまたは方法について説明する。ここに記載する図示例は、網羅的であることも、本発明を開示した形態そのものに限定することも意図していない。同様に、ここに記載するいずれのステップも、同じ目的を達成するために、他のステップまたはステップの組み合わせと相互交換可能であってもよい。
【００１１】
これより図１を参照して、本発明の態様を実施することができるハードウェアおよびソフトウェア・コンポーネント双方を有するコンピュータ１００の一例について説明する。尚、コンピュータ１００は、種々のデバイスのいずれでもよく、個人計算機、サーバ系計算機、ミニおよびメインフレーム・コンピュータ、ラップトップ、パーソナル・ディジタル・アシスタント（ＰＤＡ）、または何らかの形式のメモリを有するその他の電子デバイスを含むが、これらには限定されないことは、当業者およびその他の者には認められよう。図示を容易にするため、そして本発明の理解には重要ではないため、図１は、メモリ、キーボード、マウス、プリンタ、またはその他Ｉ／Ｏデバイス、ディスプレイ等のような、多くのコンピュータに典型的なコンポーネントを示していない。しかしながら、図１に示すように、コンピュータ１００は、アプリケーション・プログラム１０２、オペレーティング・システム１０４、およびハードウェア・プラットフォーム１０６を含む。この実施形態では、オペレーティング・システム１０４がドライバ１０８および電力管理ルーチン１１０を含む。その上、図１に更に示すように、ハードウェア・プラットフォーム１０６は、ＣＰＵ１１４、電力消費デバイス１１６、および電源１１８を含む。
【００１２】
例示の目的のため、そして一例としてのみ、図１は、オペレーティング・システム１０４がアプリケーション・プログラムに代わってハードウェア・リソースへのアクセスを管理するコンピュータ１００のコンポーネント・アーキテクチャを示す。これに関して、図１に示すオペレーティング・システム１０４は、Microsoft（登録商標）オペレーティング・システム、Linux（登録商用）オペレーティング・システム、UNIX（登録商標）オペレーティング・システム等のような、汎用オペレーティング・システムでよい。あるいは、オペレーティング・システム１０４は、リソース限定計算機のような、特殊ハードウェアに合わせて設計してもよい。この例では、オペレーティング・システム１０４は、Windows（登録商標）ＣＥオペレーティング・システム、Palm（登録商標）オペレーティング・システム等とすればよい。いずれにしても、コンピュータ１００のコンポーネントは積層されており、ハードウェア・プラットフォーム１０６が下層上にあり、アプリケーション・プログラム１０２が上層上にある。コンピュータ１００の積層は、コンピュータ１００の各層が下位層にあるシステムに従属する階層環境に本発明を実施することができることを例示する。更に具体的には、アプリケーション・プログラム１０２は、ハードウェア・プラットフォーム１０６のコンポーネントに直接アクセスすることができない。代わりに、アプリケーション・プログラム１０２は、ハードウェア・プラットフォーム１０６が提供するサービスを必要とするときには、オペレーティング・システム１０４に要求を発行する。要求を受け取ると、オペレーティング・システム１０４は、ドライバ１０８にアクセスし、ハードウェア・プラットフォーム１０６のコンポーネントとインターフェースする。例えば、ドライバ１０８は、オペレーティング・システム１０４がＣＰＵ１１４および電力消費デバイス１１６とインターフェースする方法を提供する。
【００１３】
一実施形態によれば、本発明は、オペレーティング・システム１０４の機能性を拡張して、電力リソースを維持する。これに関して、オペレーティング・システム１０４は、アプリケーション・プログラム１０２を起動するときまたはその後のある時点において、アプリケーション・プログラム１０２のハードウェア性能要件を特定するために用いることができる。コンピュータ１００から利用可能な電力最大出力が減少するに連れて、オペレーティング・システム１０２は、所与のシステムおよび／またはデバイス状態内で生ずる可能性がある異なる性能状態間で、ハードウェア・プラットフォーム１０６を遷移させることができる。一般的に述べると、本発明の態様は、オペレーティング・システム１０４が、アプリケーション・プログラム１０２の性能要件をハードウェア・プラットフォーム１０６の能力と一致させるための仲介物として作用することができるように、オペレーティング・システム１０４の機能性を拡張する。
【００１４】
オペレーティング・システム１０４がプログラムの実行を管理するために、ハードウェア・プラットフォーム１０６を記述した情報を入手する。通例、基本入出力システム（「ＢＩＯＳ」）として慣例的に知られているファームウェア・プログラムが、最初にコンピュータ１００に電力を供給するときに、ハードウェア・プラットフォーム１０６を初期化する機能を実行し、その後にＢＩＯＳがオペレーティング・システム１０４を「ブート」する。これに関して、コンピュータ１００に電力を投入するとき、コンピュータ１００のＢＩＯＳは、起動時自己検査（「ＰＯＳＴ」）と称するハードウェア・チェックを実行して、ハードウェア・プラットフォーム１０６が存在し現在作動しているか否か判定を行う。次いで、ＢＩＯＳ内にある命令が、「ブート・ローダ」として慣例的に知られているプログラムを直接制御して、オペレーティング・システム１０４をコンピュータ１００のシステム・メモリにロードする。システム・メモリは、慣例的に、ランダム・アクセス・メモリ（「ＲＡＭ」）のバンクとして実装されている。
【００１５】
図１に示すように、コンピュータ１００は、電源１０８を含む。電源１０８は、コンピュータ１００内部にある電子回路に電力を供給することを責務とする。電源１０８は、コンピュータ１００の筐体内に収容されているバッテリでもよい。この場合、ユーザがコンピュータ１００と双方向処理を行うと、電力最大出力量が減少し、バッテリを「再充電」するために無停電(uninterruptible)電源を用いない場合、電力が利用できなくなる場合もあり得る。本発明の態様は、特に、コンピュータに電力を供給するためにバッテリを用いるときに非常に適している。しかしながら、電源１０８は、コンピュータ１００に利用可能な電力最大出力が減少しない無停電電源であってもよい。この場合、本発明の態様は、一見無限の電力量が利用可能であるが、電源の消費を維持するために用いることができる。
【００１６】
通例、コンピュータ１００がブートするとき、１つ以上のドライバ１０８が、ＢＩＯＳが供給するデータを読み取り、ハードウェア・プラットフォーム１０６におけるシステム・デバイスの電力管理能力を発見することができ、あるいはドライバ１００またはその他の構成空間情報によってシステム・デバイスから直接電力管理能力を特定することができる。システムの中には、ＢＩＯＳが供給するデータ、またはオペレーティング・システム１０４の直接的な判断を、オペレーティング・システム１０４に含まれる電力規制典拠(authority)に受け渡し、コンピュータ１００によって拡大した電力を制御する場合もある。例えば、前述のように、ＡＣＰＩ規格に準拠するオペレーティング・システム１０４では、電力規制典拠は、コンピュータ１００上で実行する処理の量を定量化し、コンピュータ１００の忙／閑に基づいて、異なるシステム状態間で遷移させることができる。
【００１７】
本発明の態様は、既存の電力規制典拠が異なるシステム状態間で遷移するコンピュータにおいて実施することができる。この実施形態では、コンピュータ１００がアクティブ・システム状態（例えば、「Ｓ０」）にあるとき、本発明が提供する適応電力管理システムは、コンピュータ１００上で実行しているアプリケーション・プログラムの現在の電力最大出力レベルおよび／またはハードウェア性能の必要性に基づいて、特定のハードウェア・デバイスの性能状態を解除(de-feature)および／または低下させることができる。更に具体的には、コンピュータ１００に利用可能な電力最大出力が減少するに連れて、ハードウェア・デバイスの機構および／または性能状態を、作動中のシステムまたはデバイスの状態の中で調節して、残存電力容量に見合ったレベルにする。その結果、コンピュータの性能は、ユーザが有意なタスクを実行することを可能にしつつ、利用可能な電力の使用を最大限高めるレベルに設定される。電力規制典拠がアクティブ状態からシステム・スリープ状態に遷移する場合、本発明は追加の処理を実行しない。代わりに、異なるシステム・スリープ状態間で遷移することによって、電力規制典拠は、コンピュータ１００上における電力の使用を維持する。別の実施形態では、本発明は、電力規制典拠が電力を維持するために異なるシステム状態間で遷移しないコンピュータ１００において実施する。この場合、コンピュータ１００上における状態が、利用可能な電力量がある閾値量未満に低下したときのように、電力を維持しなければならなくなったときにはいつでも、ハードウェア・デバイス機構および／または性能状態を、本発明の態様によって調節する。
【００１８】
図１に示すように、コンピュータ１００は、ハードウェア・プラットフォーム１０６に含まれるＣＰＵ１１４を含む。尚、ＣＰＵ１１４は、プログラム命令の実行をサポートすることによって、コンピュータ１００の計算センターとしての役割を果たすことは、当業者およびその他の者には認められよう。これに関して、オペレーティング・システム１０４は、本発明を実施するプログラム命令を含むプログラム・命令を記憶装置（例えば、ハード・ドライブ）からコンピュータ１００のシステム・メモリ（図示せず）にロードさせる。次いで、ＣＰＵ１１４は、システム・メモリにロードされた命令を順次「取り出し」そして「実行する」ことによって、プログラムの機能性を実施する。尚、現在入手可能なＣＰＵの一部は、（１）ＣＰＵ１１４の電圧／周波数対を調節してエネルギ消費を削減することができる「Ｐ−状態」、および（２）所定の割合の時間だけＣＰＵ１１４がアイドルであることを可能にする「Ｃ−状態」のような、電力性能低下状態をサポートすることは、当業者およびその他の者には認められよう。以下で更に説明するが、本発明の態様は、コンピュータ１００がアクティブ・システム状態にある場合であっても、ＣＰＵ１１４に電力削減「Ｐ−状態」または「Ｃ−状態」に遷移させることができる。
【００１９】
図１に示す電力消費デバイス１１６は、電源１１８が供給する電気を用いる既存のデバイスまたは今後開発されるデバイスのいずれでもよい。例えば、既存のコンピュータ・システムでは、電力消費デバイス１１６は、大容量記憶装置（例えば、ハード・ドライブ）、ビデオ・カード、ＤＶＤ／ＣＤ−ＲＯＭドライブのような周辺デバイス、ネットワーク・カードおよびアダプタ、動作中に交換可能なデバイス、システム・メモリ（例えば、ＲＡＭ／ＲＯＭ）等を含むことができるが、これらに限定されるのではない。概して述べると、本発明の態様は、利用可能な電力を最大限使用するために、ＣＰＵ１１４およびその他の電力消費デバイス１１６の性能レベルを調節することを目的とする。
【００２０】
図１に示すように、オペレーティング・システム１０４は、電力管理ルーチン１１０を含む。電力管理ルーチン１１０は、ＣＰＵ１１４および電力消費デバイス１１６の性能レベルを調節し、コンピュータ１００が有意なタスクを実行することができる時間期間を最大にする。しかしながら、電力管理ルーチン１１０の態様については以下で図２を参照して詳細に説明するので、ルーチン１１０の詳細な説明はここでは行わない。とは言え、概して述べれば、電力管理ルーチン１１０は、電源１１８から利用可能な電力最大出力量を監視する。電力最大出力のレベルがある閾値レベル未満に低下した場合、電力管理ルーチン１１０は、コンピュータ１００のある種のハードウェア・デバイスに対して、性能低下状態を特定する。次いで、特定されたハードウェア・デバイスの性能レベルを、特定した性能低下状態に調節する。コンピュータ１００に利用可能な電力レベルが降下するに連れて、ハードウェア・デバイスを遷移させる性能低下状態も増々低くなり、ユーザがコンピュータ１００上で有意なタスクを実行することができる時間期間を最大にするように設計されている。
【００２１】
尚、図１に示すコンピュータ１００は、非常に簡略化した例であり、本発明の態様を説明するのに有用なコンポーネントのみを含むことは、当業者およびその他の者には認められよう。実際の実施形態では、コンピュータ１００は図１には示されていない追加のコンポーネントを有する。更に、図１に示すコンポーネントのアーキテクチャは、一例と解釈してしかるべきである。何故なら、本発明は、異なるコンポーネント・アーキテクチャを維持するコンピュータにおいても実施可能であることは、当業者およびその他の者には認められるはずであるからである。
【００２２】
これより図２を参照して、先に図１を参照して端的に述べた電力管理ルーチン１１０の一例について、更に詳しく説明する。尚、最新のコンピュータに含まれるハードウェアには、異なる性能レベルで機能するように構成されている場合、および／またはイネーブル／ディスエーブルすることができる機構を有する場合もあることは、当業者およびその他の者には認められよう。例えば、標準化されている「Ｄ−状態」を用いて、一部のハードウェア・デバイスについて性能レベルを定義する。従前からの電力管理方式では、デバイスが入ることができる各「Ｄ−状態」は、システム状態にマッピングすることができる。電力管理ルーチン１１０は、異なる性能レベル、例えば、「Ｄ−状態」で機能するように構成されているハードウェア・デバイスを用いることができる。しかしながら、従前からの電力管理方式とは異なり、電力管理ルーチン１１０は、コンピュータに利用可能な電力量に基づいて、アクティブ・デバイス状態「Ｄ０」の中で更に電力を維持する性能状態に、デバイスを遷移させることができる。暫定的事項として、電力管理ルーチン１１０を実行する前に、コンピュータ上に実装されているオペレーティング・システムが自動的にハードウェア・デバイスを入手するまたはこれらに問い合わせて、その電力節約能力を特定することができる。一実施形態によれば、電力管理ルーチン１１０は、オペレーティング・システムが入手する情報を用いて、プログラムの性能要件を、ハードウェア・デバイスの能力に合わせて、電力を維持する。
【００２３】
図２に示すように、電力管理ルーチン１１０はブロック１８０において開始し、ここでルーチン１１０は、アプリケーション・プログラムがシステム・メモリにロードされるまで、アイドル状態のまま留まる。尚、アプリケーション・プログラムを実行することが予定されている場合は、記憶装置（例えば、ハード・ドライブ）上のプログラム・コードを記憶装置からシステム・メモリにロードし、プログラム・コードがＣＰＵに容易にアクセス可能となっていることは、当業者およびその他の者には認められよう。しかしながら、プログラム・コードのシステム・メモリへのロードは、当技術分野では一般に周知である既存のシステムを用いて行われるので、これらのシステムに関するこれ以上の説明は、ここでは記載しない。
【００２４】
ブロック１９０において、電力管理ルーチン１１０は、ブロック１８０においてシステム・メモリにロードされたアプリケーション・プログラムに、ハードウェア要件設定情報について問い合わせる。以下で更に詳しく説明するが、電力管理ルーチン１１０は、ハードウェア・デバイスを、コンピュータに利用可能な電力量に応じて、異なる性能状態に遷移させることができる。更に具体的には、一実施形態によれば、ハードウェア・デバイスは、最大性能状態および４つの性能低下状態を含む、５つの異なる性能状態の１つにすることができる。これら４つの状態の各々では、維持する電力量が徐々に多くなる。アプリケーション・プログラムから入手するハードウェア要件設定情報は、異なる利用可能な性能状態の各々において、アプリケーション・プログラムに対するハードウェア要件を記載する。電力管理ルーチン１１０は、デバイスが５つの性能状態の内の１つとすることができるシステムについて記載するが、代替実施形態では、特許請求する主題の範囲から逸脱することなく、これよりも多いまたは少ない性能状態を実施することもできる。
【００２５】
判断ブロック１９５において、電力管理ルーチン１１０は、誘起イベントが発生して、性能状態遷移を実行するか否かに関して判断を行うようになるまで待機する。一例としてに過ぎないが、オペレーティング・システムは、周期的な間隔またはランダムに誘起イベントを発行するように構成することもできる。更に、別の実施形態では、オペレーティング・システムは、残存電力容量がある閾値量未満に低下したときに誘起イベントを発行するように構成されている。以下で更に詳しく説明するが、電力管理ルーチン１１０は、発生した誘起イベントに応答して性能状態遷移を行うか否か判定を行う。
【００２６】
ブロック２００において、コンピュータに利用可能な残存電力容量を表す値を、電力管理ルーチン１１０によって入手する。尚、既存のシステムを用いても、ブロック２００において電源から利用可能な残存電力容量を特定できることは当業者およびその他の者には認められよう。例えば、ＡＣＰＩに準拠したコンピュータは、オペレーティング・システムがハードウェア・プラットフォームとインターフェースしてこの種のデータを入手するために、標準化された方法を用意している。この例では、電力管理ルーチン１１０は、オペレーティング・システムが維持する表またはその他のデータ構造にアクセスして、このデータを入手する。しかしながら、その他の技法を用いて、ブロック２００において残りの電力最大出力を表す値を入手してもよく、ここに示す例は、限定的ではなく例示として解釈してしかるべきことは、当業者およびその他の者には認められよう。
【００２７】
ブロック２０２において、電力管理ルーチン１１０は、残りの電力最大出力を表す値（ブロック２００において入手）を、異なる性能状態と関連付けられた１組の所定値と比較する。概略的に述べると、コンピュータに利用可能な電力最大出力が減少するに連れて、電力管理ルーチン１１０は何らかのハードウェア・デバイスの性能を低下させる。一実施形態によれば、ブロック２０２において残りの電力最大出力を表す値を１組の所定値と比較して、コンピュータ上にあるデバイスについて性能状態を特定する。一例に過ぎないが、利用可能な電力最大出力量が最大値の８０パーセント（８０％）未満である場合、電力管理ルーチン１１０は１組の電力消費デバイスを性能低下状態に遷移させる。しかしながら、性能低下状態への遷移が発生するときを確定する、ここに記載した値は一例であることは、言うまでもない。
【００２８】
判断ブロック２０４において、電力管理ルーチン１１０は、電源から利用可能な残存電力容量が８０％以上であるか否か判定を行う。前述のように、ブロック２０２において比較を行い、残存電力容量から、コンピュータ上のデバイスに適した性能状態を特定する。ブロック２０４において、電力管理ルーチン１１０は、この比較の結果が、残存電力容量が８０％以上であることを示すか否か判定を行う。図２に示すように、残存電力容量が８０％以上である場合、電力管理ルーチン１１０はブロック２０６に進む。逆に、残存電力容量が最大値の８０％未満である場合、電力管理ルーチン１１０はブロック２０８に進む。ブロック２０８については、以下で更に詳しく説明する。
【００２９】
ブロック２０６において、電力管理ルーチン１１０は、本発明を実施するコンピュータ上のハードウェア・デバイスに、それらの最高性能状態で機能することを許可する。一実施形態では、利用可能な電力最大出力が８０％以上である場合、（１）コンピュータ・ディスプレイ・サブシステムがユーザに最も豊富な視覚体験を提供する、（２）メモリ、ＣＰＵ、ビデオ・カード、大容量ストレージ、ネットワーク・デバイス等のような電力消費デバイスが、それらのイネーブルされた機構の全てを用いて動作することを許可する、そして（３）スクリーン・セーバのようなアプリケーション・プログラムが、ユーザが定めた設定値にしたがって実行することを許可する。次いで、電力管理ルーチン１１０はブロック２２３に進む。ブロック２２３については、以下で更に詳しく説明する。
【００３０】
判断ブロック２０８において、電力管理ルーチン１１０は、電源から利用可能な残存電力容量が最大値の６０％から８０％の間であるか否か判定を行う。前述のように、ブロック２０２において比較を行い、利用可能な電力最大出力量から、コンピュータ上のデバイスに適した性能状態を特定する。図２に示すように、残存電力容量が最大値の６０％から８０％までの間である場合、電力管理ルーチン１１０はブロック２１０に進む。逆に、残存電力容量が最大値の６０％未満である場合、電力管理ルーチン１１０はブロック２１２に進む。ブロック２１２については、以下で更に詳しく説明する。
【００３１】
図２に更に示すように、ブロック２１０において、電力管理ルーチン１１０は、本発明を実施するコンピュータ上のある種の電力消費デバイスを、第１性能低下状態に遷移させる。第１性能低下状態は、利用可能な電力の最大未満の量を考慮しつつ、一定した(robust)ユーザ体験を提供するように設計されている。一実施形態では、利用可能な電力最大出力が最大値の６０％から８０％までの間であるとき、コンピュータ上のアプリケーション・プログラムによって利用することができるまたはできないディスプレイ・サブシステム（例えば、ビデオ・カード、コンピュータ・ディスプレイ等）から利用可能なある種の高級機構が現在使用されていないのであれば、これらを「削減」(scale back)する。例えば、一実施形態によれば、限定ではないが、外形マッピング(geometry mapping)、６４−テクスチュアリング(64-texturing)、１２８ビット計算、３２ビット・カラー表現、３−Ｄレンダリング・エンジン、および／または多数のＧＰＵのような、ある種のサブシステム機構を、アプリケーション・プログラムが当該機能の最大性能状態を必要としない限り、ブロック２１０において、次に低い利用可能な性能状態に低下させる。前述のように、現在実行中のアプリケーション・プログラムが利用するハードウェア要件は、プログラムがシステム・メモリにロードされるときに、電力管理ルーチン１１０によって特定される。ブロック２１０において、この情報を参照して、第１性能低下状態において「削減」することができるハードウェア機構を特定することができる。更に、ブロック２１０において、現在実行中のアプリケーション・プログラムの要件による影響を受けない、他の電力維持対策を実施する。例えば、一実施形態では、ブロック２１０において、ビデオ・サブシステムにおけるディスプレイ・バックライトの明るさを最大値の８０％にする。この実施形態では、メモリ、ＣＰＵ、ネットワーク・デバイス等のようなその他の電力消費デバイスは、最大性能レベルで機能することが許可される。しかしながら、大容量記憶装置（例えば、ハード・ドライブ）は、機構低下状態に移され、この状態では、大容量記憶装置は、用いられていないときには、「スピン・ダウン」することができる。次いで、電力管理ルーチン１１０はブロック２２３に進む。ブロック２２３については、以下で更に詳しく説明する。
【００３２】
判断ブロック２１２において、電力管理ルーチン１１０は、電源から利用可能な残存電力容量が最大値の４０％から６０％までの間であるか否か判定を行う。前述のように、ブロック２０２において比較を行い、利用可能な電力最大出力量から、コンピュータ上のデバイスに適した性能状態を特定する。図２に示すように、残存電力容量が最大値の４０％から６０％までの間である場合、電力管理ルーチン１１０はブロック２１４に進む。逆に、残存電力容量が最大値の４０％未満である場合、電力管理ルーチン１１０はブロック２１６に進む。ブロック２１６については、以下で更に詳しく説明する。
【００３３】
ブロック２１４において、電力管理ルーチン１１０は、本発明を実施するコンピュータ上のハードウェア・デバイスを、第２性能低下状態に遷移させる。一実施形態では、利用可能な電力最大出力が最大値の４０％から６０％までの間であるとき、ディスプレイ・サブシステム上で利用可能な機構が現在利用されていれる最中であっても、これらを「削減」する。例えば、共通のシステム表示タスクを「２−Ｄ」で実行し、計算精度を１２８ビットから６４ビットに調節し、６４ビット・テクスチャリングを３２ビットに低下させ、カラー表現を３２ビットから２４ビットに程度を落とし、ディスプレイ・バックライトを最大値の明るさの７０％に低下させる。メモリ、ＣＰＵ、ネットワーク・デバイス等のようなその他のコンピュータ・コンポーネントは、最大性能状態で機能することが許可される。しかしながら、一実施形態では、大容量記憶装置は、次の性能低下状態に移され、この状態では、大容量記憶装置にアクセスするときに、電力制御「スピン・アップ」シーケンスを実行する。
【００３４】
第２性能低下状態では、コンピュータ上でアプリケーション・プログラムがアクティブになるときのタイミングが、電力管理の判断に影響を及ぼす場合がある。例えば、一実施形態によれば、コンピュータが第２性能低下状態にある間に新しいアプリケーション・プログラムが実行を開始すると、このアプリケーションには、利用可能なデバイスのみというように、ハードウェア・デバイスが無効になって(de-featured)差し出される。別の一例として、コンピュータ上でアクティブなアプリケーション・プログラムが「スクリーン・セーバ」である場合、ある種の電力消費デバイスを性能低下状態に移す。一実施形態では、「スクリーン・セーバ」がアクティブであるとき、ＣＰＵは「Ｐ２」および「Ｃ１」性能状態に遷移する。次いで、電力管理ルーチン１１０はブロック２２３に進む。ブロック２２３については、以下で更に詳しく説明する。
【００３５】
判断ブロック２１６において、電力管理ルーチン１１０は、電源から利用可能な残存電力容量が最大値の２０％から４０％までの間であるか否か判定を行う。前述のように、ブロック２０２において比較を行い、利用可能な電力最大出力量から、コンピュータ上のデバイスに適した性能状態を特定する。図２に示すように、残存電力容量が最大値の２０％から４０％までの間である場合、電力管理ルーチン１１０はブロック２１８に進む。逆に、残存電力容量が２０％未満である場合、電力管理ルーチン１１０はブロック２２０に進む。ブロック２２０については、以下で更に詳しく説明する。
【００３６】
ブロック２１８において、電力管理ルーチン１１０は、本発明を実施するコンピュータ上のハードウェア・デバイスを第３性能低下状態に遷移させる。利用可能な電源容量が最大値の２０％から４０％までの間であるとき、本発明を実施するコンピュータ上の電力維持デバイスが備えている機構を低下させて、現在実行中のアプリケーション・プログラムの基本的要件を満たすようにする。
【００３７】
一実施形態によれば、電力管理ルーチン１１０は、ブロック２１８において現在実行中のアプリケーション・プログラムの基本的要件を満たすように、電力消費デバイス１１６（図１）の性能レベルを調節する。前述のように、現在実行中のアプリケーション・プログラムが利用するハードウェアの要件は、このプログラムがシステム・メモリにロードされるときに、電力管理ルーチン１１０によって特定される。ブロック２１８において、この情報を参照して、現在実行中のアプリケーション・プログラムの基本的要件を特定する。これに関して、アプリケーション・プログラム１０２はプログラム機能性を実装するために、電力消費デバイスを用いることもできる。しかしながら、アプリケーション・プログラムがそのデバイスの電力消費機構全ては必要としない場合もある。この場合、電力管理ルーチン１１０は、電力消費デバイスの機構を、アプリケーション・プログラム１０２の基本的要件に合わせる。例えば、第３性能低下状態に入るとき、電力管理ルーチン１１０はシステム・データにアクセスして、現在コンピュータ上でアクティブになっているアプリケーション・プログラムの種類を判定することができる。現在実行中のアプリケーション・プログラムには、ある種のグラフィック表現機構を必要とするものがない場合、例えば、ユーザがワード・プロセッシング・プログラム、データベース・アプリケーション等のような、テキスト系プログラムのみを実行しており、洗練されたグラフィクスのゲームを実行していない場合、コンピュータのディスプレイ・サブシステムを「テキストのみ」モードに移す。
【００３８】
第３性能低下状態に入ると、性能またはデバイス状態（例えば、「Ｄ−状態」を更に削減させる。例えば、一実施形態によれば、システム・メモリを「自己リフレッシュ」モードに移し、電力使用の減少が性能の低下を伴う場合、ネットワーク・デバイスの性能を低下させる。更に、大容量記憶装置に、速度を落として動作するように要求する。例えば、コンピュータのハード・ドライブの動作速度を毎分７２００回転から５４００回転に低下させることができる。次いで、電力管理ルーチン１１０はブロック２２３に進む。ブロック２２３については、以下で更に詳しく説明する。
【００３９】
判断ブロック２２０において、電力管理ルーチン１１０は、電源から利用可能な残存電力容量が最大値の２０％未満であるか否か判定を行う。前述のように、ブロック２０２において比較を行い、利用可能な電力最大出力量から、コンピュータ上のハードウェア・デバイスに適した性能レベルを特定する。図２に示すように、残存電力容量が最大値の２０％未満である場合、電力管理ルーチン１１０はブロック２２２に進む。逆に、残存電力容量が、任意の値に設定することができる危険レベルにある場合、オペレーティング・システムは終了過程(exit strategy)に入る。これは、本発明の範囲を超えている。この場合、電力管理ルーチン１１０は、ブロック１９５に戻り、誘起イベントが発生するのを待つ。
【００４０】
図２に更に示すように、ブロック２２２において、電力管理ルーチン１１０は、本発明を実施するコンピュータ上のハードウェア・デバイスに、第４性能低下状態に遷移させる。第４性能低下状態は、積極的に電力を維持しつつもユーザが有意なタスクを実行することを許容するリソースを供給するように設計されている。一実施形態では、利用可能な電力最大出力量が最大値の２０％未満であるとき、ディスプレイ・サブシステム上で利用可能なある種の機構がもはや使えなくなる。例えば、低性能のシステム・メモリを優先して、ビデオ・カードから利用可能な高性能ビデオ・メモリの使用を中断する。更に、一実施形態によれば、ビデオ・カードが用いる「パイプ」即ち通信チャネルの利用可能数を、現在のアプリケーション・プログラムの最小要件をサポートするのに必要な数に削減する。
【００４１】
コンピュータが第４性能低下状態にあるとき、ビデオ・サブシステム外部のその他の電力消費デバイスの使用を一緒に更に「削減」するか、または停止する。例えば、一実施形態によれば、現在実行中のアプリケーション・プログラムには関係なく、ＣＰＵ性能状態を「Ｐ０」から「Ｐ２」に程度を下げる。また、利用可能なシステム・メモリの量を、現在のアプリケーション・プログラムをサポートするのに必要な最小量に削減する。現在コンピュータに接続されていないネットワーク・デバイスをディスエーブルし、デバイスの検索を行なわなくてもよいようにする。更に、現在利用されていないいずれの電力消費デバイスも、アプリケーション・プログラムまたはユーザが必要としないのであれば、利用可能な最も深いデバイス状態（例えば、「Ｄ３」）に遷移させる。ＵＳＢまたはFireWireドライブのような外部取り付け型の動作中交換可能デバイスは、当該動作可能中交換可能デバイスを必要とすることが指示する割り込みが発生するまで、保留状態に移しておく。次いで、電力管理ルーチン１１０はブロック２２３に進む。
【００４２】
図２に示すように、判断ブロック２２３において、電力管理ルーチン１１０は、ブロック１８０においてシステム・メモリにロードしたアプリケーション・プログラムが終了したか否か判定を行う。一実施形態によれば、電力管理ルーチン１１０は、コンピュータ上でアクティブになっているアプリケーション・プログラム毎に、消費電力を規制するために用いられる。アプリケーション・プログラムが停止し、もはやコンピュータ上のプロセスとして表されない場合、電力管理ルーチン１１０は、停止したプログラムに関しては終了する。この例では、電力管理ルーチン１１０はブロック２２４に進み、ここで終了する。逆に、ブロック１８０においてシステム・メモリにロードしたアプリケーション・プログラムが停止していない場合、電力管理ルーチン１１０はブロック１９５に進み、プログラムが停止するまで、ブロック１９５から２２２までを繰り返す。
【００４３】
以上、図２を参照しながら、電力維持機構の具体的な例、および利用可能な電源に基づいた性能低下状態への遷移について説明したが、この実施形態は限定ではなく一例として解釈してしかるべきである。例えば、以上の説明では、電力管理ルーチン１１０は、４つの性能低下状態を有すると記載した。しかしながら、他の実施形態では、電力管理ルーチン１１０は、特許請求する主題の範囲から逸脱することなく、性能低下状態がそれよりも多くてもまたは少なくてもよい。
【００４４】
以上例示的な実施形態について図示し説明したが、本発明の主旨および範囲から逸脱することなく、種々の変更が可能であることは認められよう。
独占的所有権即ち特権を主張する発明の実施形態は、特許請求の範囲に定義されている。
【図１】
0005647460.tif 000002
【図２】
0005647460.tif 000003