(57)【特許請求の範囲】
【請求項１】
メモリと、
メモリに接続された複数のプロセッサコアと、
前記複数のプロセッサコアに接続される基本入出力システム（ＢＩＯＳ）とを備え、
前記基本入出力システムは、
Ｉ／Ｏオペレーションに応答して、ストール機能を呼び出すＩ／Ｏデバイスモジュールと、
前記Ｉ／Ｏデバイスモジュールに接続される電力管理モジュールと、
前記電力管理モジュールに接続されるタイマモジュールとを有し、
前記電力管理モジュールは、前記タイマモジュールのタイマ周期を前記ストール機能のストール遅延に調整し、前記タイマ周期の間に１つのプロセッサコアをスリープ状態にし、継続するストール機能が呼び出されるかを監視するタイマイベントを設定するシステム。
【請求項２】
前記電力管理モジュールの電力管理ドライバがロードされていないと判断されると、前記ストール機能が呼び出される請求項１に記載のシステム。
【請求項３】
前記電力管理モジュールの電力管理ドライバがロードされている場合には、前記電力管理モジュールは更に前記ストール機能をフックする請求項１に記載のシステム。
【請求項４】
前記プロセッサコアは、１以上の論理プロセッサコア及びブートストラッププロセッサコアを含む請求項１から３の何れか一項に記載のシステム。
【請求項５】
前記ストール遅延が所定の閾値より大きく、調整前に前記ストール遅延が前記タイマ周期に等しくないと判断されると、前記電力管理モジュールは、前記タイマ周期を前記ストール遅延に調整する請求項１から４の何れか一項に記載のシステム。
【請求項６】
呼び出すべき継続するストール機能が存在すると判断されると、前記電力管理モジュールは、前記タイマ周期を初期値に戻す請求項１から５の何れか一項に記載のシステム。
【請求項７】
第１プロセッサコアをディセーブルモード又はスリープモードにする段階と、
Ｉ／Ｏオペレーションに応答して呼び出されたストール機能に応答して、前記ストール機能のストール遅延と、タイマに関する所定の閾値とを比較する段階と、
前記ストール遅延が前記所定の閾値よりも小さくなく、前記ストール遅延が現在のタイマ周期と等しくないと判断されると、前記現在のタイマ周期を前記ストール遅延に設定する段階と、
前記タイマ周期の間に、第２プロセッサコアを前記スリープモードに設定する段階とを備える方法。
【請求項８】
継続するストールが存在するかを監視するタイマイベントを設定する段階を更に備える請求項７に記載の方法。
【請求項９】
オペレーションソフトウェアアプリケーション休止オペレーションにおいて、前記第１プロセッサコアはディセーブルモード又はスリープモードにされる請求項７又は８に記載の方法。
【請求項１０】
Ｉ／Ｏオペレーションに対してＩ／Ｏが準備完了状態であるかを検出するべく、前記タイマ周期の終了においてタイマ割り込みによって前記第２プロセッサコアが起動される請求項７から９の何れか一項に記載の方法。
【請求項１１】
継続するストールが存在しないと判断されると、前記タイマ周期を初期値に設定する段階を更に備える請求項８から１０の何れか一項に記載の方法。
【請求項１２】
実行されるとコンピュータシステムに、
前記コンピュータシステムの基本入出力システム（ＢＩＯＳ）を使用して、前記コンピュータシステムの第１プロセッサをスリープモード又はディセーブルモードにする段階と、
前記基本入出力システムを使用して、Ｉ／Ｏオペレーションに対してストール機能をフックする段階と、
前記基本入出力システムを使用して、前記ストール機能のストール遅延の間、第２プロセッサを前記スリープモードにする段階と、
前記基本入出力システムを使用して、呼び出される継続するストール機能が存在するかを監視するタイマイベントを設定する段階とを実行させるプログラム。
【請求項１３】
前記プログラムは更に、前記コンピュータシステムに、
前記基本入出力システムを使用して、前記ストール遅延と、タイマの所定の閾値とを比較する段階と、
前記ストール遅延が前記閾値よりも小さいと判断されると、前記ストール機能を呼び出して、前記第２プロセッサを、前記Ｉ／Ｏオペレーションに対してＩ／Ｏ準備完了状態であるかを確認可能にする段階とを更に実行させる請求項１２に記載のプログラム。
【請求項１４】
前記プログラムは更に、前記コンピュータシステムに、
前記基本入出力システムを使用して、前記ストール遅延と、タイマの所定の閾値とを比較する段階と、
前記ストール遅延が前記閾値よりも長いと判断された場合に、前記基本入出力システムを使用して、タイマのタイマ周期を前記ストール遅延に等しくなるように設定する段階と、
呼び出さすべき継続するストール機能が存在しないと判断された場合には、前記基本入出力システムを使用して、前記タイマ周期を初期値に戻す段階とを更に実行させる請求項１２に記載のプログラム。
【請求項１５】
前記基本入出力システムは、ユニファイド・エクステンシブル・ファームウェア・インタフェース（ＵＥＦＩ）によって実装される請求項１２から１４の何れか一項に記載のプログラム。
【発明の詳細な説明】
【背景技術】
【０００１】
多くのデジタル／電子システムは、システムが動作する時に電力を消費する。電子システム内の１以上の構成要素又はサブシステムがアイドル状態であるイベントでも、１以上のサブシステムが電力を消費している場合がある。例えば、コンピュータシステムでは、システムが１以上のプロセッサの最大計算能力を使用していない時、そのシステムにおける１以上のプロセッサは不必要に電力を消費している場合がある。ある種のシステムは、オペレーティングシステム（ＯＳ）を利用して、プロセッサを低電力モードにするものが存在する。
【０００２】
以下、発明の実施形態が例示されるが、これらは図面に示された構成によって限定されるものではない。図示の単純化及び明瞭化のために、図示された要素は必ずしも実寸法で描かれていない。例えば、いくつかの要素の寸法は、明瞭化のために他の要素に比べて拡大して描かれていることがある。さらに、適切であると考えられる場合、対応する又は類似する要素を示すのに参照番号が図面間で繰り返し使用されている。
【図面の簡単な説明】
【０００３】
【図１Ａ】本発明の一実施形態に係るシステムの一例を説明するブロック図である。
【図１Ｂ】本発明の別の実施形態に係るシステムの別の例を説明するブロック図である。
【図２】本発明の一実施形態に係るシステムの別の例の概略図である。
【図３Ａ】本発明の一部の実施形態に係るフローチャートである。
【図３Ｂ】本発明の一部の実施形態に係るフローチャートである。
【図４Ａ】本発明の一部の実施形態に係るタイマ周期の変更の例を示した概略図である。
【図４Ｂ】本発明の一部の実施形態に係るタイマ周期の変更の例を示した概略図である。
【図５Ａ】本発明の一部の実施形態に係るフローチャートである。
【図５Ｂ】本発明の一部の実施形態に係るフローチャートである。
【発明を実施するための形態】
【０００４】
以下の説明では、低消費電力モードを提供する使用モデルを提供する技術について記載する。本技術の実装は、コンピュータシステムに限らず、同様な目的で任意の実行環境に適用可能であり、例えば、任意のデジタル／電子デバイスに適用可能である。以下の説明では、本発明の完全な理解を提供する目的から、ロジック実装、オペコード、オペランドを特定する手段、リソースパーティショニング／共有／複製の実装、システム構成要素間の関係及び種類、及び、ロジックパーティショニング／インテグレーション選択肢等の数多くの詳細事項が記載される。しかしながら、本発明は、このような詳細事項がなくとも実行可能である。また、本発明を不明瞭にしない目的から、制御構造及び完全なソフトウェア命令シーケンスを詳細に示していない。
【０００５】
また、"一実施形態"、"ある実施形態"、"例示的実施形態"、"様々な実施形態"等の言葉は、少なくとも本発明の実施形態が、実施形態に関連した特定の特徴、構造又は特性を含むことを示唆するが、必ずしも全ての実施形態が、これら特定の特徴、構造及び特性を含むことを意味しない。更に、このような言葉は、必ずしも同一の実施形態を意味しない。また、実施形態に関連して特定の特徴、構造又は特性が説明される場合は、明示されていない場合であっても、当業者であれば、このような特徴、構造又は特性を別の実施形態と関連付けることができることを意味する。
【０００６】
本発明の様々な実施形態が、ハードウェア、ファームウェア、ソフトウェア、及びこれらの組み合わせにより実施可能である。また、本発明は、機械可読媒体に含まれる命令として実装可能であり、当該命令は、１以上のプロセッサによって、読み出され、実行される。機械可読媒体としては、機械（例えば、コンピューター）が読み出し可能な形態で情報を格納又は送信するためのあらゆる機構を含む。そのような機械可読メディアとしては、これらに限定されないが、例えば、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学式記憶媒体、フラッシュメモリ装置、電気的、光学的、音波的、あるいは他の形態の伝播信号（例えば、搬送波、赤外線信号、デジタル信号、信号を送受信するインターフェース等）が含まれる。
【０００７】
以下の説明に含まれる、第１、第２等の言葉は、説明することのみを目的として使用されており、これに限定されると解釈されるべきではない。
【０００８】
図１Ａは、システム１００の一実施形態例のブロック図である。システム１００は、プロセッサ１０２を備える。プロセッサ１０２は、ソフトウェアを実行可能な及び／又はデータ信号を処理可能な任意の種類のプロセッサを含む。一実施形態において、プロセッサ１０２は、複合命令セットコンピュータ（complex instruction set computer：ＣＩＳＣ）マイクロプロセッサ、縮小命令セットコンピュータ（reduced instruction set computing：ＲＩＳＣ）マイクロプロセッサ、超命令語（very long instruction word：ＶＬＩＷ）マイクロプロセッサ、命令セットの組み合わせを実装するプロセッサ、又は、マイクロプロセッサ、デジタル信号プロセッサ又はマイクロコントローラのようなデジタル信号プロセッサのようなその他のプロセッサデバイスであってもよい。
【０００９】
図１Ａには、上記のようなプロセッサであるプロセッサ１０２のみが示されているが、システム１００内には１以上のプロセッサが存在してもよく、また、１以上のプロセッサは、複数のスレッド、複数のコア等を含んでもよい。本発明の拡張対象は、コンピュータシステムにとどまらない。本発明の別の実施形態を、ユニファイド・エクステンシブル・ファームウェア・インタフェース（ＵＥＦＩ）基本入出力システム（ＢＩＯＳ）を使用する任意のフォームファクターデバイス、例えば、ハンドヘルドデバイスや埋め込みアプリケーションで利用することが可能である。ハンドヘルドデバイスの例としては、携帯電話、インターネットプロトコルデバイス、デジタルカメラ、パーソナルデジタルアシスタント（ＰＤＡ）、又は、ネットブック若しくはノートブックのようなハンドヘルドＰＣが挙げられる。埋め込みアプリケーションとしては、マイクロコントローラ、デジタル信号プロセッサ（ＤＳＰ）、システムオンチップ、ネットワークコンピュータ（ＮｅｔＰＣ）、セットトップボックス、ネットワークハブ、ワイドエリアネットワーク（ＷＡＮ）スイッチ、又は、その他のシステムが含まれてもよい。
【００１０】
プロセッサ１９２は、システムロジックチップ１０４と接続されてもよい。例えば、図示された実施例では、システムロジックチップ１０４は、メモリ制御ハブ（ＭＣＨ）であってもよい。一実施形態において、ＭＣＨ１０４は、システムメモリ１０６に対して、命令及びデータ記憶及び／又は、例えば、グラフィックス命令、データ及びテクスチャを記憶するためのメモリパス１２０を提供してもよい。メモリ１２０は、メモリバスを含んでもよい。ＭＣＨ１０４は、プロセッサ１０２、システムメモリ１０６及びシステム１００内のその他の構成要素間のデータ信号を伝達してもよく、また、プロセッサ１０２、システムメモリ１０６、及び、システムＩ／Ｏ間でデータ信号を橋渡ししてもよい。メモリ１０６は、ハードディスク、フロッピー（登録商標）ディスク、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、フラッシュメモリ、又は、プロセッサ１０２が可読なその他の種類の媒体であってもよい。
【００１１】
ＭＣＨ１０４は、ローカルＩ／Ｏインターコネクトを介して、Ｉ／Ｏ制御ハブ（ＩＣＨ）１０８に接続されてもよい。一実施形態では、ローカルＩ／Ｏインターコネクトは、ペリフェラル コンポーネント インターコネクト（ＰＣＩ）バスのような高速Ｉ／Ｏバスであってもよい。ＩＣＨ１０８は、例えば、ローカルＩ／Ｏインターコネクトを介して、１以上のＩ／Ｏデバイスに接続を提供してもよい。一部の例では、データ記憶デバイス１１８、オーディオＩ／Ｏ１２０、キーボード／マウスＩ／Ｏ１２２、及び、ネットワークコントローラ１１６、又は、ＩＤＥ（integrated driver electronics）のようなその他のインテグレィティッドＩ／Ｏコンポーネント、ローカルエリアネットワーク（ＬＡＮ）、ユニーバーサルシリアルバス（ＵＳＢ）のようなシリアル拡張ポート、ＰＣＩスロット（図示せず）、無線送受信機、レガシーＩ／Ｏコントローラ等が含まれてもよい。データ記憶デバイス１１８としては、ハードディスクドライブ、フロッピー（登録商標）ディスクドライブ、ＣＤ−ＲＯＭデバイス、フラッシュメモリデバイス、又は、その他のマスストレージデバイスが含まれてもよい。
【００１２】
図１Ａに示すように、フラッシュメモリ１１２のような不揮発性メモリが、例えば、ＬＰＣ（low pin count）バスを介して、ＩＣＨ１０８と接続されてもよい。ＢＩＯＳファームウェア１１４がフラッシュメモリ１１２に存在して、起動されると、フラッシュメモリ又はファームウェアからの命令が実行されてもよい。図１Ａには、ＢＩＯＳファームウェア１１４がフラッシュメモリ１１２に存在するように描かれているが、別の実施形態では、ＢＩＯＳファームウェア１１４は、ファームウェアハブ等のその他の不揮発性メモリに格納されてもよい。一実施形態において、ユニファイド・エクステンシブル・ ファームウェア・インタフェース（ＵＥＦＩ）ファームウェア又はその他のファームウェアによって、ＢＩＯＳファームウェア１１４が実装されてもよい。
【００１３】
図１Ａにシステム１００が示されたが、本発明に係る実施形態は、複数のプロセッサコアを使用するプラットフォーム又は１つのプロセッサ若しくは１つのコプロセッサを使用するプラットフォーム、Ｉ／Ｏハブを使用するプラットフォーム等のその他のハードウェア構造で使用されてもよく、又は、プロセッサ内に埋め込まれたメモリ制御等が使用されてもよい。
【００１４】
図１Ｂには、本発明の原理を実装するシステム１４０の別の実施形態が示されている。システム１４０は、プロセッサ１４２を備える。プロセッサ１４２は、ソフトウェアを実行可能な及び／又はデータ信号を処理可能な任意の種類のプロセッサを含む。一実施形態において、プロセッサ１４２は、プロセッサ１０２に関して上記で説明したような任意の種類のプロセッサ又はプロセッサデバイスを含んでもよい。一実施形態において、プロセッサ１４２は、メモリパス（図示せず）を介して、命令及びデータ記憶及び／又は、例えば、グラフィックス命令、データ及びテクスチャを記憶するためのステムメモリ１４４と接続されていてもよい。別の実施形態では、プロセッサ１４２は、ＰＣＩインターコネクトを介して、１以上のペリフェラル コンポーネント インターコネクト（ＰＣＩ）ポート１６０に接続されてもよい。しかしながら、ある実施形態では、ＰＣＩポート１６０を設ける必要がない。メモリ１４４は、ハードディスク、フロッピー（登録商標）ディスク、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、フラッシュメモリ、又は、プロセッサ１４２が可読なその他の種類の媒体であってもよい。
【００１５】
図１Ｂには、上記のようなプロセッサであるプロセッサ１４２のみが示されているが、システム１４０内には１以上のプロセッサが存在してもよく、また、１以上のプロセッサは、複数のスレッド、複数のコア等を含んでもよい。本発明の拡張対象は、コンピュータシステム又はデータ処理デバイスシステムにとどまらない。本発明の別の実施形態を、ユニファイド・エクステンシブル・ファームウェア・インタフェース（ＵＥＦＩ）基本入出力システム（ＢＩＯＳ）を使用する任意のフォームファクターデバイス、例えば、ハンドヘルドデバイスや埋め込みアプリケーションで利用することが可能である。ハンドヘルドデバイスの例としては、携帯電話、インターネットプロトコルデバイス、デジタルカメラ、パーソナルデジタルアシスタント（ＰＤＡ）、又は、ネットブック若しくはノートブックのようなハンドヘルドＰＣが挙げられる。埋め込みアプリケーションとしては、マイクロコントローラ、デジタル信号プロセッサ（ＤＳＰ）、システムオンチップ、ネットワークコンピュータ（ＮｅｔＰＣ）、セットトップボックス、ネットワークハブ、ワイドエリアネットワーク（ＷＡＮ）スイッチ、又は、その他のシステムが含まれてもよい。
【００１６】
プロセッサ１４２は、システムロジックチップ１４６に接続されてもよい。例えば、図示される実施形態におけるシステムロジックチップ１４６は、プラットフォーム制御ハブ（ＰＣＨ）であってもよい。ＰＣＨ１４６は、例えば、ローカルＩ／Ｏインターコネクトを介して、１以上のＩ／Ｏデバイスに接続を提供してもよい。一実施形態では、ローカルＩ／Ｏインターコネクトは、ペリフェラル コンポーネント インターコネクト（ＰＣＩ）バスのような高速Ｉ／Ｏバスであってもよい。ＰＣＨ１４６は、プロセッサ１４２とシステム１４０内のその他の構成要素との間で信号又はその他の情報を伝達してもよく、また、プロセッサ１４２とシステムＩ／Ｏ間でデータ信号又は情報を橋渡ししてもよい。
【００１７】
１以上の構成要素の例として、データ記憶デバイス１４２、１以上のＰＣＩポート１５４、ネットワーク制御１５６、ＵＳＢポート１５８が含まれる。一実施形態において、データ記憶デバイス１５２としては、ハードディスクドライブ、フロッピー（登録商標）ディスクドライブ、ＣＤ−ＲＯＭデバイス、フラッシュメモリデバイス、又は、その他のマスストレージデバイスが含まれてもよい。図１Ｂに示される構成要素の例以外にも、ＰＣＨ１４６はその他の構成要素に接続を提供してもよく、例えば、オーディオＩ／Ｏ、キーボード／マウスＩ／Ｏ、及び、ＩＤＥ（integrated driver electronics）のようなその他のインテグレィティッドＩ／Ｏコンポーネント、ローカルエリアネットワーク（ＬＡＮ）、シリアル拡張ポート、無線送受信機、レガシーＩ／Ｏコントローラ等に接続を提供してもよい。
【００１８】
図１Ｂに示すように、フラッシュメモリ１４８のような不揮発性メモリが、例えば、ＬＰＣ（low pin count）バスを介して、ＰＣＨ１４６と接続されてもよい。ＢＩＯＳファームウェア１５０がフラッシュメモリ１４８に存在して、起動されると、フラッシュメモリ又はファームウェアからの命令が実行されてもよい。図１Ｂには、ＢＩＯＳファームウェア１５０がフラッシュメモリ１４８に存在するように描かれているが、別の実施形態では、ＢＩＯＳファームウェア１５０は、ファームウェアハブ等のその他の不揮発性メモリに格納されてもよい。一実施形態において、ユニファイド・エクステンシブル・ ファームウェア・インタフェース（ＵＥＦＩ）ファームウェア又はその他のファームウェアによって、ＢＩＯＳファームウェア１５０が実装されてもよい。
【００１９】
図１Ｂにシステム１４０が示されたが、本発明に係る実施形態は、複数のプロセッサコアを使用するプラットフォーム又は１つのプロセッサ若しくは１つのコプロセッサを使用するプラットフォーム、Ｉ／Ｏハブを使用するプラットフォーム等のその他のハードウェア構造で使用されてもよく、又は、プロセッサ内に埋め込まれたメモリ制御等が使用されてもよい。
【００２０】
図２は、本発明の一実施形態のハードウェア及びファームウェアの階層図を示したブロック図である。図２に示すように、システム２００は、１以上の論理プロセッサ２０２及び１つのブートストラッププロセッサ（ＢＳＰ）２０４を備えてもよい。一実施形態において、論理プロセッサ２０２は、アプリケーションプロセッサ（ＡＰ）２０２であってもよい。ＡＰ２０２及びＢＳＰ２０４は、ファームウェア２２０を実行してもよい。別の実施形態では、これらプロセッサは、電源が投入されると、ランダムにＡＰ又はＢＳＰであると指定されてもよい。一実施形態において、ファームウェア２２０は、ＢＩＯＳ環境に実装されてもよく、例えば、ＵＥＦＩ環境又はその他のオペレーティングシステム（ＯＳ）休止アプリケーション環境に実装されてもよい。図２には、４つのプロセッサコアが示されているが、ある実施形態では、異なる数のプロセッサコアが、システム２００に含まれてもよい。図２には、ＡＰ２０２及びＢＳＰ２０４が描かれているが、実施形態は、任意のその他のプロセッサコアを有するシステムに適用可能である。
【００２１】
図２に示すように、一実施形態において、ＡＰ２０２及びＢＳＰ２０４は、様々な電力モードで動作してもよい。一実施形態において、ＵＥＦＩファームウェア２２０は、例えば、Ｐステート、Ｃステート若しくはその他のスリープ状態を含む低電力モードで動作するように、又は、プロセッサの１以上をディセーブルするように、ＡＰ２０２及び／又はＢＳＰ２０４に命令してもよい。例えば、ＵＥＦＩファームウェア２２０は、ＡＰ２０２及び／又はＢＳＰ２０４がＰステートで動作するように命令を供給してもよく、この場合、プロセッサは、最低の／より低い電圧及び／又は最低の／より低い周波数で動作してもよい。例えば、Ｐステートでは、ＡＰ２０２は、最大計算能力を有さないが、計算能力の一部を発揮できる。別の実施形態では、Ｐステートでは、ＢＳＰ２０４は、例えば、Ｉ／Ｐステータスビットの準備ができたかをポーリングするといったように、Ｉ／Ｏ機能を有してもよい。別の実施形態では、ファームウェア２２０は、ＡＰ２０２及び／又はＢＳＰ２０４がＣステートで動作するように命令を供給してもよく、この場合、複数のプロセッサにおける少なくとも１以上の構成要素の電力を切って、これら構成要素が動作しないようにするが、ステータスは維持されるようにする。一実施形態において、ＢＳＰプロセッサ２０４は、スリープ状態のＡＰ２０２を起動させる能力を有してもよい。
【００２２】
別の実施形態では、ファームウェア２２０は、ＡＰ２０２がディセーブルステートで動作するように命令を供給してもよく、この場合、ＡＰ２０２がディセーブルされる。一実施形態において、ディセーブルされたＡＰ２０２は、ＢＳＰ２０４に対して不可視であってもよい。一実施形態において、ディセーブルステートでは、割り込みウェークアップ機能がディセーブルされる。別の実施形態では、ＢＳＰ２０４は、Ｉ／Ｏデバイスステータスビットの準備が完了しているかをポーリングするべくＰステートで動作してもよい。一実施形態において、Ｃステートのプロセッサは、Ｐステートにある時よりも消費電力が少なくてもよい。別の実施形態では、Ｉ／Ｏアクティビティが存在しない時には、ＢＳＰ２０４はＣステートで動作してもよい。
【００２３】
図２に示すように、一実施形態において、ＵＥＦＩファームウェア２２０は、ネットワークＩ／Ｏデバイスモジュール２１２及びディスクＩ／Ｏデバイスモジュール２１４のような１以上のＩ／Ｏデバイスを含んでもよい。一実施形態において、Ｉ／Ｏデバイスモジュール２１２及びディスクＩ／Ｏデバイスモジュール２１４は、Ｉ／Ｏオペレーション又はイベントに応答して、ブートストラップ・ストール機能を呼びだしてもよく、Ｉ／Ｏオペレーション又はイベントの例としては、ネットワーク転送、ネットワークダウンロード、ハードディスクアクセス、ウイルススキャン、データバックアップ、任意のその他のＩ／Ｏオペレーション又はＭＰ３の曲を再生する、ＯＳの前又はプレブート時に画像／動画を見るというリクエスト、オフラインダウンロード、ＶｏＩＰ（Voice over Internet Protocol）等が挙げられる。図２に示すように、Ｉ／Ｏデバイスモジュールは、電力管理ドライバ又はモジュール２１６とインタフェース接続されてもよい。ＵＥＦＩファームウェア２２０は、更に、タイマ２１８を提供してもよい。一実施形態において、ファームウェア２２０は、消費電力とタスク負荷をとのバランスを取るべく、タイマ２１８のタイマ周期を調整してもよい。
【００２４】
一実施形態において、システムブートしてＵＥＦＩモードに入り、次のＯＳモード又はプレＯＳモードに入るべくＵＥＦＩモードを終了しないようなシステムブートに応答して、電力管理モジュール又は制御モジュール２１６をロードしてもよい。別の実施形態では、メインのＯＳ（例えば、Ｗｉｎｄｏｗｓ（登録商標）、Ｌｉｎｕｘ（登録商標）、埋め込みソフトウェア、及び／又は、グラフィカルユーザインターフェース等）がスリープモード（例えば、Ｓ３又はＳ４環境）である場合に、電力管理モジュール２１６がロードされてもよい。ロードされた電力管理モジュール２１６は、システムブート又はＯＳスリープモードに応答して、若しくは、その他のＯＳ休止環境の場合に、ＡＰ２０２をディセーブルする又はＡＰ２０２をスリープモード若しくは低電力モード、例えば、Ｐ又はＣステートにしてもよい。スリープモード又は低電力モードであっても、ＢＳＰ２０４のようなメインプロセッサは、通常のように機能する。別の実施形態では、ＡＰ２０２がディセーブルされた後又はスリープモード若しくは低電力モードになった後で、電力管理モジュール２１６がロードされてもよい。
【００２５】
Ｉ／Ｏオペレーションに応答して、Ｉ／Ｏデバイスモジュール２１２又は２１４は、ブートサービスストール（）機能を呼び出してもよい。電力管理モジュール２１６がロードされる前に、ブートサービスストール（）機能が呼び出されてもよい。一実施形態において、ＢＳＰ２０４はスリープ状態ではなく、例えば、Ｐステート（最も低い電力状態ではない場合もある）にあり、Ｉ／Ｏが準備完了しているかどうかを常にチェックしてもよい。電力管理モジュール２１６がロードされると、ロードされた電力管理モジュール２１６は、例えば、図３Ａ及び３Ｂ又は図５Ａ及び５Ｂでのフローに示すように、元のブートサービスストール機能を停止させてもよい。Ｉ／Ｏデバイスモジュールによってストール（）機能が呼び出されると、ロードされた電力管理モジュール２１６は、ストール（）機能のストール遅延と、所定の閾値との比較を行ってもよい。一実施形態において、閾値は、タイマモジュール２１８の最小タイマ周期であってもよく、別の実施形態では、閾値は、最小タイマ周期でなくてもよい。別の実施形態では、閾値は、タイマモジュール２１８の精度、所望の電力消費値又はその他の１以上の因子に基づいて決定されてもよい。
【００２６】
ストール遅延が短いと判断された場合には、電力管理モジュール２１６は、遅延時間が満足されるまでＢＳＰ２０４が常にタイマＩ／Ｏをポーリングする元の保存されたブートサービスストール（）機能を呼び出してもよい。ストール遅延の終了時間に応答して、電力管理モジュール２１６はストール機能を終了してもよい。
【００２７】
別の実施形態では、電力管理モジュール２１６がストール遅延が長いと判断した場合には、電力管理モジュール２１６は更に、ストール遅延と、タイマ２１８の現在のタイマ周期とを比較してもよい。ストール遅延が現在のタイマ周期と等しいと判断された場合には、タイマモジュール２１８のタイマ周期によって、ＢＳＰ２０４が、例えば、Ｐステートよりも低い電力を消費するＣステートのような低電力状態に入ってもよい。ＢＳＰ２０４は、例えば、タイマ周期の終了のようなタイマ２１８からのタイマ割り込みイベントによって、起動（waken up）されてもよい。ＢＳＰ２０４は、スリープＣ状態から起動されてもよい。別の実施形態では、電力管理モジュール２１６は、タイマ割り込みに応答して、ストール（）機能を終了してもよい。ある実施形態では、プロセッサが低電力状態にある場合、バス上のその他のデバイスは、低電力モードでなくてもよい。例えば、プロセッサが低電力状態にある場合、ネットワークインターフェースカード（ＮＩＣ）アダプタは、パケットをプロセッサに及びプロセッサから送受信してもよく、又は、ハードドライブがＰＣＩバスにわたるメモリアクセスを振り分けてもよい。
【００２８】
一実施形態において、ストール遅延が現在のタイマ周期と等しくないと判断されると、電力管理モジュール２１６は、タイマ周期を、ストール（）機能のストール遅延に設定してもよい。電力管理モジュール２１６は更に、タイマコールバックイベント等のタイマイベントを設定するべく、タイマ割り込みをフックしてもよい。タイマ周期の終了時に、ＢＳＰ２０４はＣステートに入り、起動されてもよい。タイマ割り込みコールバック機能では、電力管理モジュール２１６は、継続したストール又は次に続くストールが呼び出されるかを監視する。継続したストールが存在しないと判断された場合には、タイマ周期は、システムの初期値に設定される又は戻される。反対に、電力管理モジュール２１６は、継続するストールのチェックを継続してもよい。別の実施形態では、タイマ割り込みが周期的に呼び出されてもよく、タイマイベントがタイマ割り込みハンドラにフックされてもよい、又は、選択的にイネーブル若しくはディセーブルされてもよい。
【００２９】
図３Ａ及び図３Ｂには、本発明の一実施形態に係る方法の一例のフローチャートが示されている。図２及び図３Ａには環境の一例が示されており、ブロック３０２では、システム１００の電源が投入されたことに応答して、システムブートが実行されてもよい。一実施形態において、ＢＩＯＳ１１４（例えば、ＵＥＦＩファームウェア２２０）は、命令及びオペレーションを供給して、システムブートされるとシステム１００を初期化してもよい。一実施形態において、ブロック３０２におけるシステムブートは、ＯＳブートステージを含まなくてもよい。別の実施形態では、ブロック３０２におけるシステムブートは、プリＯＳステージと関連していてもよい。ブロック３０４では、別のＯＳ休止環境の一実施形態が示されており、システム１００は、Ｓ３環境で動作してもよい。一実施形態において、Ｓ３環境は、スリープモード、スタンバイモード、又は、ＲＡＭの電源が投入されたままとなるＲＡＭモードへのサスペンドであってもよい。一実施形態において、Ｓ３環境の下では、ＯＳ、アプリケーション、オープンドキュメント又はその他のソフトウェアがディセーブルされてもよい。一実施形態において、Ｓ３環境では、ディセーブルされたソフトウェアがメモリに存在してもよい。図３ＡにはＳ３環境が示されているが、ある実施形態では、図３Ａのフローを、Ｓ４環境又はメインＯＳ（例えば、Ｗｉｎｄｏｗｓ（登録商標）、Ｌｉｎｕｘ（登録商標）等）がスリープモードであるシステム休止環境のような、その他のＯＳ休止環境に適用してもよい。
【００３０】
ブロック３０６において、システムがブートされてＵＥＦＩ２２０（ブロック３０２）になる又はシステムがＳ３又はＳ４環境に入る（ブロック３０４）又はその他のＯＳ休止環境に入ると、ＢＩＯＳ１１４は、ＡＰ２０２をＣステート若しくはＰステートにする又はＡＰ２０２をディセーブルする命令及び／又はオペレーションを供給してもよい。一実施形態において、ＢＩＯＳ１１４は、ＵＥＦＩにブートして、ＡＰ２０２をＰステート、Ｃステート又はディセーブルステートにする命令又はオペレーションを供給してもよく、ＵＥＦＩを終了して次のＯＳに入らなくてもよい。別の実施形態では、システム１００は、ＯＳに入らず、ＢＩＯＳ１１４又はＵＥＦＩファームウェア２２０が実行環境にあるＯＳ休止アプリケーション環境で動作してもよい。
【００３１】
フローは、ブロック３０８に移る。ブロック３０８では、ネットワークＩ／Ｏオペレーション又はハードディスクＩ／Ｏオペレーション等のＩ／Ｏオペレーションに応答して、対応するＩ／Ｏデバイスモジュール２１２又は２１４は、ＢＳＰ２０４によって実行されて、ブートサービスストール機能を呼び出してもよい。フローは、ひし形３１０に移り、ＢＳＰ２０４は、電力管理モジュール２１６の電力管理ドライバがロードされたかを確認してもよい。図３Ａに示すように、電力管理ドライバがロードされていないと判断された場合には、ブロック３１６において、ブートサービスストール機能が呼び出される。
【００３２】
ひし形３１０において、電力管理ドライバがロードされたと判断された場合には、フローはブロック３１２に移り、電力管理モジュール２１６が、ブートサービスストール機能をフックする。ひし形３１４では、電力管理モジュール２１６は、ブートサービスストール機能のストール遅延が、所定の閾値よりも小さいかを確認してもよい。（ひし形３１４において）ストール遅延が所定の閾値よりも小さいと判断された場合には、フローはブロック３１６に移り、ブートサービスストール機能が呼び出される。
【００３３】
ひし形３１４において、ストール遅延が所定の閾値よりも小さくないと判断された場合には、フローはブロック３１６に戻り、ストール遅延が、タイマモジュール２１８の現在のタイマ周期、例えば、システムデフォルト値に等しいかを確認する。ブロック３１８において、ストール遅延が現在のタイマ周期に等しいと判断されると、電力管理モジュール２１６は、ストール遅延期間又は現在のタイマ周期に、ＢＳＰ２０４をＣステートにしてもよい。ブロック３２０において、タイマ割り込みを、ストール遅延の終わり又はタイマ周期の終わりにおいてトリガして、電力管理モジュール２１６がＢＳＰ２０４を起こしてもよい。一実施形態において、ＢＳＰ２０４は、ブロック３２６において起動する又はストール機能を終了してもよい。ＢＳＰ２０４の起動時には、Ｉ／Ｏ準備ステータスビットをチェックしてもよい。Ｉ／Ｏ準備ステータスビットが設定されていると判断された場合には、ＢＳＰ２０４は、Ｉ／Ｏオペレーションを実行してもよい。反対に、ストール遅延期間にＩ／Ｏ準備ステータスビットが設定されていないと起動されたＢＳＰ２０４が判断した場合には、ＢＳＰ２０４は、Ｉ／Ｏオペレーションを実行しなくてもよい。別の実施形態では、ＢＳＰ２０４の起動で、Ｉ／Ｏ準備ステータスビットがストール遅延期間に設定されていないと判断された場合には、対応するＩ／Ｏデバイスモジュール２１２又は２１４は、例えば、３０８から３２６にしたがって、別のＢＳストール機能を呼び出してもよい。
【００３４】
図３Ａに示すように、ストール遅延が現在のタイマ周期と等しくないと判断された場合には（ひし形３１８）、電力管理モジュール２１６は、タイマ周期をストール遅延に設定してもよい（ブロック３２２）。ブロック３２４において、電力管理モジュール２１６は、タイマコールバックイベントを設定してもよい。図３Ｂに示すように、一実施形態において、タイマコールバックイベントが設定されたことに応答して、タイマ割り込みコールバック機能が呼び出されてもよい（ブロック３２８）。ひし形３３０では、タイマ割り込みコールバック機能において、電力管理モジュール２１６は、継続するストールが呼び出されるかを監視してもよい。継続するストールが存在しないと判断された場合には、タイマ周期は、システム初期値に設定される又は戻されてもよい。反対に、電力管理モジュール２１６は、ひし形３３０において継続するストールがあるかの確認を続けてもよい。図３Ａに戻り、ブロック３２４においてタイマコールバックイベントに応答して、フローがブロック３２０に移ってもよい。
【００３５】
図４Ａ及び図４Ｂには、システムＩ／Ｏ負荷のワークロードに基づくタイマ周期の変化を示した実施形態が示されている。図４Ａ及び図４Ｂに示すように、初期タイマ周期は１００ミリ秒であってもよい。２００ミリ秒の時点では、タスクＡがＩ／Ｏオペレーションを開始し、電力管理モジュール２１６は、タイマ周期を、例えば、Ｉ／Ｏオペレーションに対応するＢＳストール機能のストール遅延に従って、１０ミリ秒に設定してもよい。ＢＳＰ２０４は、１０ミリ秒の期間それぞれの間で、低電力状態にとどまってもよい。一実施形態において、ＢＳＰ２０４は、Ｉ／Ｏステータスビットを１０ミリ秒毎に確認するべく、より高い電力状態に設定されてもよい。２３０ミリ秒の時点では、ＢＳＰ２０４は、ステータスビットが設定されていることを発見し、図４ＡのＣで示されているように、２０ミリ秒の間にタスクＡを実行してもよい。ＢＳＰ２０４が、２５０ミリ秒の時点でＩ／Ｏオペレーションを完了したことに応答して、電力管理モジュール２１６が実行されて、図４Ｂに示すようにタイマ周期を１０ミリ秒から１００ミリ秒へと戻してもよい。
【００３６】
図４Ａに示すように、３５０ミリ秒の時点で、タスクＢがＩ／Ｏオペレーションを開始する。電力管理モジュール２１６は、Ｉ／Ｏオペレーションに従って、タイマ周期を、５０ミリ秒に調整してもよい。ＢＳＰ２０４は、５０ミリ秒の周期のそれぞれの間は、例えば、Ｃステートである低電力状態にとどまってもよい。ＢＳＰ２０４を、高電力ステートであるＰステートに設定して、５０ミリ秒毎にＩ／Ｏステータスビットをチェックしてもよい。ＢＳＰ２０４が、ステータスビットが４５０ミリ秒の時点で設定されていることを検出した場合、ＢＳＰは、５０ミリ秒の間（図４ＡのＤで示されている）タスクを実行してもよい。ＢＳＰ２０４が、５００ミリ秒の時点でＩ／Ｏオペレーションを完了すると、電力管理モジュール２１６は、タイマ周期を５０ミリ秒から、初期値である、例えば、１００ミリ秒に再び戻してもよい。
【００３７】
一実施形態において、Ｉ／Ｏデバイスモジュール２１２及び２１４は、ストールサービスの変化を知らなくてもよい。別の実施形態では、Ｉ／Ｏオペレーションに対するストール機能のストール遅延は、所定の閾値よりも長くなるように予め規定されてもよく、プロセッサは、図３Ａ及び図３Ｂのフローに従って、例えば、Ｃステートのような低電力状態にとどまってもよい。
【００３８】
図５Ａ及び図５Ｂには、本発明の一実施形態に係る方法の一例を示したフローチャートが示されている。図５Ａに示すように、ブロック５０２及びブロック５０４はそれぞれ、ブロック３０２及びブロック３０４と同様である。ブロック５０６では、電力管理モジュール２１６のための電力管理ドライバがロードされてもよい。ブロック５０８において、電力管理ドライバは、１以上のＡＰ２０４を、Ｐステート、Ｃステート又はディセーブルステートにする。ブロック５１０において、電力管理ドライバは、ＢＳストール機能をフックしてもよい。ブロック５１２において、電力管理ドライバは、タイマ２１８に関する閾値を示すフラグＴｍｉｎを設定してもよい。ブロック５１４において、電力管理ドライバは、タイマ２１８のタイマ周期を、タイマ周期の初期値Ｔｄに更新してもよい。ブロック５１６において、電源管理ドライバは、フラグＴｃｕｒｒｅｎｔをＴｄへと設定してもよい。例えば、フラグＴｃｕｒｒｅｎｔは現在のタイマ周期を示しており、ブロック５１８において、電力管理ドライバは、フラグＴｉｍｅｒＣｈａｎｇｅ（タイマ変更）及びフラグＣｏｎｔｉｎｕｅ（継続）をＦＡＬＳＥに設定してもよい。フラグＴｉｍｅｒＣｈａｎｇｅは、タイマ周期が変更されるか否かを示してもよい。フラグＣｏｎｔｉｎｕｅは、継続するストール機能が呼び出されるか否かを示してもよい。ブロック５２０では、電力管理ドライバは、タイマ割り込みハンドラをフックしてもよい。ブロック５２２において、フローは、電力管理ドライバを終わりにしてもよい。一実施形態において、ブロック５０６から５２２へのフローは、電力管理ドライバの初期化に使用されてもよい。
【００３９】
図５Ｂに示すように、ブロック５２４では、ネットワークＩ／Ｏオペレーション又はハードディスクＩ／Ｏオペレーション等のＩ／Ｏオペレーションに応答して、対応するＩ／Ｏデバイスモジュール２１２又は２１４はブートサービスストール機能を呼び出してもよい。ひし形５２６では、電力管理モジュール２１６が、ブートサービスストール機能のストール遅延が、例えば、所定の閾値であるＴｍｉｎよりも小さいかをチェックしてもよい。ストール遅延が所定の閾値よりも小さいと判断された場合には、フローはブロック５２８に移り、ブートサービスストール機能が呼び出される。ブロック５２８は、図３Ａのブロック３１６を参照してもよい。
【００４０】
ひし形５３０において、電力管理モジュールは２１６は、フラグＴｉｍｅｒＣｈａｎｇｅがＴＲＵＥと等しいかをチェックしてもよい。ブロック５３４において、フラグＴｉｍｅｒＣｈａｎｇｅがＴＲＵＥと等しい場合には、電力管理モジュール２１６は、フラグＣｏｎｔｉｎｕｅをＴＲＵＥに設定してもよい。反対に、フラグＴｉｍｅｒＣｈａｎｇｅがＴＲＵＥと等しくない場合には、電力管理モジュール２１６は更に、ひし形５３２において、ストール遅延がフラグＴｃｕｒｒｅｎｔと等しいかを判断する。ストール遅延が（ひし形５３２において）フラグＴｃｕｒｒｅｎｔと等しいと判断された場合には、フローがブロック５４２に移ってもよい。反対に、等しくないと判断された場合には、フローはブロック５３６に移り、電力管理モジュール２１６は、フラグＴｉｍｅｒＣｈａｎｇｅ及びフラグＣｏｎｔｉｎｕｅをＴＲＵＥに設定してもよい。ブロック５３８において、電力管理モジュール２１６は、フラグＴｃｕｒｒｅｎｔをストール遅延に設定する。ブロック５４０において、電力管理モジュール２１６は、Ｔｃｕｒｒｅｎｔに基づいて、タイマ２１８のタイマ周期を更新してもよい。
【００４１】
ブロック５４２において、電力管理モジュール２１６は、ＢＳＰ２０４をＣステートにしてもよい。ブロック５４４において、ＢＳＰ２０４は、例えば、タイマ周期の終わりに、タイマ割り込みによって起動されてもよい。ＢＳＰ２０４は、起動時に、Ｉ／Ｏが準備完了状態であるかを確認してもよい。ブロック５６４において、タイマ割り込みによってトリガされても、ストール機能は実行されない。ブロック５２０において、電力管理ドライバ初期化の間に、フックされたタイマ割り込みハンドラを実行するべく、フローはブロック５６４に戻る。
【００４２】
ひし形５４８において、電力管理モジュール２１６は、フラグＴｉｍｅｒＣｈａｎｇｅがＴＲＵＥであるかをチェックしてもよい。ブロック５６０において、フラグＴｉｍｅｒＣｈａｎｇｅがＴＲＵＥでないと判断された場合には、電力管理モジュール２１６は、タイマ割り込みを終了してもよい。反対に、フラグＴｉｍｅｒＣｈａｎｇｅがＴＲＵＥである場合には、フローはひし形５５０に移り、フラグＣｏｎｔｉｎｕｅがＴＲＵＥであるかを確認する。フラグＣｏｎｔｉｎｕｅがＴＲＵＥである場合には、フローは５５２に移り、電力管理モジュール２１６は、フラグＣｏｎｔｉｎｕｅをＦＡＬＳＥに設定して、フローはタイマ周期を終了してもよい。フラグＣｏｎｔｉｎｕｅがＴＲＵＥでない場合（ひし形５５０）、フローはブロック５５４に移り、ＴｃｕｒｒｅｎｔがＴｄに設定される。ブロック５５６では、ＴｉｍｅｒＣｈａｎｇｅフラグがＦＡＬＳＥに設定されて、タイマ２１８のタイマ期間がＴｃｕｒｒｅｎｔで更新されて、フローが５６０に移る。５６２において、タイマ割り込みを終了した後、ストール機能が依然として実行状態である場合には、フローが５６２に移り、ストール機能を終了してもよい。
【００４３】
図３Ａ、図３Ｂ、図５Ａ及び図５Ｂに示した方法では、一連のプロセスが含まれるが、ある実施形態では、方法は、異なる順番で図示されたプロセスを実行してもよい。
【００４４】
本発明の特定の特徴が実施形態を参照して説明されたが、これらの説明は限定するものとして解釈されるべきではない。実施形態の様々な変形及び本発明の別の実施形態が当業者に明らかであり、本発明の精神及び範囲に含まれると考えられる。
【図１Ａ】
0005701399.tif 000002
【図１Ｂ】
0005701399.tif 000003
【図２】
0005701399.tif 000004
【図３Ａ】
0005701399.tif 000005
【図３Ｂ】
0005701399.tif 000006
【図４Ａ】
0005701399.tif 000007
【図４Ｂ】
0005701399.tif 000008
【図５Ａ】
0005701399.tif 000009
【図５Ｂ】
0005701399.tif 000010