(57)【要約】  いくつかの実施例では、プロセッサ遷移状態を検出する方法及び装置が記載される。いくつかの実施例は、オペレーティングシステムによる電力状態遷移を提供する高低のプライオリティ状態を検出する少なくとも２つのスレッドを有する。低プライオリティスレッドは、アイドル又は低電力状態へのエントリ直前に実行される。高プライオリティスレッドは、アイドル状態が終了すると、又は最も高い電力状態に到達すると実行される。いくつかの実施例では、これらのスレッドの利用は、オペレーティングシステムから独立にプロセッサ状態の移行及びアイドルタイムを検出する。他の実施例が記載される。
2009520302.tif 000002
【特許請求の範囲】
【請求項１】
他のスレッドのうち実質的に最も高いプライオリティにおいてプロセッサにより実行される高プライオリティスレッドを生成するステップと、
他のスレッドのうち実質的に最も低いプライオリティにおいてプロセッサにより実行される低プライオリティスレッドを生成するステップと、
前記高プライオリティスレッドと前記低プライオリティスレッドとによりアクセス可能な共有メモリを生成するステップと、
を有する方法。
【請求項２】
前記共有メモリに電力管理状態エントリ情報を格納するステップと、
前記共有メモリに電力管理状態イグジット情報を格納するステップと、
をさらに有する、請求項１記載の方法。
【請求項３】
前記共有メモリにおける前記電力管理状態エントリ情報及び／又は前記電力管理状態イグジット情報を更新するステップをさらに有する、請求項２記載の方法。
【請求項４】
前記高プライオリティスレッドは、
前記共有メモリに電力状態イグジットタイムを格納し、
前記電力状態イグジットタイムから電力状態エントリタイムを差し引くことによって、アイドルタイムを計算し、
実行準備状態に入るよう前記低プライオリティスレッドに通知し、
ウェイトオンタイマーイベントをスケジューリングする、
ことから構成される、請求項１記載の方法。
【請求項５】
前記低プライオリティスレッドは、
前記共有メモリに電力状態エントリタイムを格納し、
前記電力状態エントリタイムから電力状態イグジットタイムを差し引くことによって、ビジータイムを計算し、
前記高プライオリティスレッドからウェイトオン信号状態をスケジューリングする、
ことから構成される、請求項１記載の方法。
【請求項６】
アクセスされるとマシーンに、
他のスレッドのうち実質的に最も高いプライオリティにおいてプロセッサにより実行される高プライオリティスレッドを生成するステップと、
他のスレッドのうち実質的に最も低いプライオリティにおいてプロセッサにより実行される低プライオリティスレッドを生成するステップと、
前記高プライオリティスレッドと前記低プライオリティスレッドとによりアクセス可能な共有メモリを生成するステップと、
を実行させる命令を有するマシーンアクセス可能な媒体。
【請求項７】
前記命令はさらに、
前記共有メモリに電力管理状態エントリ情報を格納するステップと、
前記共有メモリに電力管理状態イグジット情報を格納するステップと、
を実行させる、請求項６記載のマシーンアクセス可能な媒体。
【請求項８】
前記命令はさらに、前記共有メモリにおける前記電力管理状態エントリ情報及び／又は前記電力管理状態イグジット情報を更新するステップを実行させる、請求項７記載のマシーンアクセス可能な媒体。
【請求項９】
前記高プライオリティスレッドは、
前記共有メモリに電力状態イグジットタイムを格納し、
前記電力状態イグジットタイムから電力状態エントリタイムを差し引くことによって、アイドルタイムを計算し、
実行準備状態に入るよう前記低プライオリティスレッドに通知し、
ウェイトオンタイマーイベントをスケジューリングする、
ことから構成される、請求項６記載のマシーンアクセス可能な媒体。
【請求項１０】
前記低プライオリティスレッドは、
前記共有メモリに電力状態エントリタイムを格納し、
前記電力状態エントリタイムから電力状態イグジットタイムを差し引くことによって、ビジータイムを計算し、
前記高プライオリティスレッドからウェイトオン信号状態をスケジューリングする、
ことから構成される、請求項６記載のマシーンアクセス可能な媒体。
【請求項１１】
マシーンアクセス可能な媒体と、
前記マシーンアクセス可能な媒体に符号化される命令と、
を有する装置であって、
前記命令は、計算システムにおいて実行されると、計算システムに、
他のスレッドのうち実質的に最も高いプライオリティにおいてプロセッサにより実行される高プライオリティスレッドを生成するステップと、
他のスレッドのうち実質的に最も低いプライオリティにおいてプロセッサにより実行される低プライオリティスレッドを生成するステップと、
前記高プライオリティスレッドと前記低プライオリティスレッドとによりアクセス可能な共有メモリを生成するステップと、
を実行させる装置。
【請求項１２】
前記命令はさらに、
前記共有メモリに電力管理状態エントリ情報を格納するステップと、
前記共有メモリに電力管理状態イグジット情報を格納するステップと、
を実行させる、請求項１１記載の装置。
【請求項１３】
前記命令はさらに、前記共有メモリにおける前記電力管理状態エントリ情報及び／又は前記電力管理状態イグジット情報を更新するステップを実行させる、請求項１２記載の装置。
【請求項１４】
前記高プライオリティスレッドは、
前記共有メモリに電力状態イグジットタイムを格納し、
前記電力状態イグジットタイムから電力状態エントリタイムを差し引くことによって、アイドルタイムを計算し、
実行準備状態に入るよう前記低プライオリティスレッドに通知し、
ウェイトオンタイマーイベントをスケジューリングする、
ことから構成される、請求項１１記載の装置。
【請求項１５】
前記低プライオリティスレッドは、
前記共有メモリに電力状態エントリタイムを格納し、
前記電力状態エントリタイムから電力状態イグジットタイムを差し引くことによって、ビジータイムを計算し、
前記高プライオリティスレッドからウェイトオン信号状態をスケジューリングする、
ことから構成される、請求項１１記載の装置。
【請求項１６】
マシーンアクセス可能な媒体と、
前記マシーンアクセス可能な媒体に応答するプロセッサと、
前記マシーンアクセス可能な媒体に符号化される命令と、
を有する計算システムであって、
前記命令は、前記プロセッサにより実行されると、
他のスレッドのうち実質的に最も高いプライオリティにおいてプロセッサにより実行される高プライオリティスレッドを生成するステップと、
他のスレッドのうち実質的に最も低いプライオリティにおいてプロセッサにより実行される低プライオリティスレッドを生成するステップと、
前記高プライオリティスレッドと前記低プライオリティスレッドとによりアクセス可能な共有メモリを生成するステップと、
を実行させる計算システム。
【請求項１７】
前記命令はさらに、
前記共有メモリに電力管理状態エントリ情報を格納するステップと、
前記共有メモリに電力管理状態イグジット情報を格納するステップと、
を実行させる、請求項１６記載の計算システム。
【請求項１８】
前記命令はさらに、前記共有メモリにおける前記電力管理状態エントリ情報及び／又は前記電力管理状態イグジット情報を更新するステップを実行させる、請求項１７記載の計算システム。
【請求項１９】
前記高プライオリティスレッドは、
前記共有メモリに電力状態イグジットタイムを格納し、
前記電力状態イグジットタイムから電力状態エントリタイムを差し引くことによって、アイドルタイムを計算し、
実行準備状態に入るよう前記低プライオリティスレッドに通知し、
ウェイトオンタイマーイベントをスケジューリングする、
ことから構成される、請求項１６記載の計算システム。
【請求項２０】
前記低プライオリティスレッドは、
前記共有メモリに電力状態エントリタイムを格納し、
前記電力状態エントリタイムから電力状態イグジットタイムを差し引くことによって、ビジータイムを計算し、
前記高プライオリティスレッドからウェイトオン信号状態をスケジューリングする、
ことから構成される、請求項１６記載の計算システム。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
［背景］
技術分野
本発明の実施例は、一般に計算システムにおけるプロセッサ状態遷移に関する。
【０００２】
説明
計算システムの電力消費は、多くのユーザについてますます気になる問題となってきている。大部分のケースにおいて、ユーザはより低いエネルギー請求書を所望する。ユーザはまた、より少ないノイズと熱しか生じない計算システムを好み、典型的には、計算システムにより消費される電力と当該計算システムにより発生するノイズと熱の大きさとの間には正の関係が存在する。さらに、ラップトップコンピュータ、携帯電話（セルフォン）、携帯情報端末（ＰＤＡ）などのバッテリにより駆動される計算システムでは、電力消費の低減は計算システムのバッテリ寿命を増大させる貴重な効果を有する（すなわち、バッテリが充電又は交換される必要が生じる前に、計算システムが利用可能な時間を増大させること）。
【０００３】
典型的には、計算システムは、プロセッサ若しくはマイクロプロセッサ、データ記憶装置、各種入出力（Ｉ／Ｏ）装置などの多数の各種コンポーネントを有する。計算システムがオフでないとき、計算システム内の各コンポーネントは一定の電力を消費する。さらに、計算システムのマイクロプロセッサアーキテクチャの高度化の進展は、電力管理問題の影響を増大させてきた。計算システム上で実行されるソフトウェアアプリケーションなどのロジックは、計算システム又はそれのコンポーネントの電力状態に意識していないかもしれない。これは、ソフトウェアアプリケーションの動作がユーザに容易には明らかでないとき問題となりうる。さらに、ロジックは、異なるオペレーティングシステム又はオペレーティングシステム（ＯＳ）のバージョンにおいて実行され、オペレーティングシステム（ＯＳ）から電力状態情報を取得することができないかもしれない。
【０００４】
従って、計算システムの電力管理状態をロジックに意識させるための方法を提供することが必要とされる。特に、ＯＳが計算システムの電力状態を変更しようとする時点をＯＳに独立な方法によりロジックが検出することが必要とされる。
【０００５】
［詳細な説明］
本発明の実施例が参照される。それらの実施例が添付された図面に示される。本発明が実施例に関して説明されるが、本発明をこれらの実施例に限定するものでないことが理解されるであろう。他方、本発明は添付した請求項により規定されるような本発明の趣旨及び範囲内に含まれる変更、改良及び均等をカバーするものである。さらに、本発明の以下の詳細な説明では、本発明の完全な理解を提供するため、多数の具体的詳細が与えられる。しかしながら、本発明は、これら具体的な詳細なしに実現可能である。他の例では、本発明の特徴を不必要に不明りょうにしないため、周知の方法、手順、コンポーネント及び回路は詳細には説明されていない。
【０００６】
本発明のいくつかの実施例は、計算システムに限定されるものでないが、シングル又はマルチコアプロセッサを使用するなど、プロセッサ状態遷移を検出するシステム及び方法に関する。本システムのいくつかの実施例は、限定されるものでないが、２００４年９月２日に公開されたＡｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ（ＡＣＰＩ）仕様書（ＡＣＰＩ  Ｖｅｒ．３．０）を使用した計算システムによりサポートされる各種プロセッサ電力管理状態、すなわち、“Ｃ状態”などの計算システム又はシングル若しくはマルチコアプロセッサの１以上のアイドルタイムを効果的に検出するのに利用可能な各種電力管理状態を検出するための方法及びシステムに関する。
【０００７】
明細書における本発明の“一実施例”又は“いくつかの実施例”という表現は、当該実施例に関して説明される特定の特徴、機能、構成又は特性が本発明の少なくとも１つの実施例に含まれることを意味する。このため、明細書の各所に出現する“一実施例では”又は“実施例によると”というフレーズの出現は、必ずしもすべてが同一の実施例を参照しているとは限らない。
【０００８】
本発明の実施例は、大きく高度化されたシングル、デュアル及び他のマルチコアマイクロプロセッサを有する計算システムにより実現可能である。しばしば、これらのマルチコアプロセッサは、共通のレベル２（Ｌ２）キャッシュと共通のパッケージ及び他の構成とを共有しながら、独自の計算リソースを含む。これは、以下に限定されるものでないが、電力管理問題をもたらすかもしれない。
【０００９】
ａ．プロセススケジューリングは、オペレーティングシステム（ＯＳ）によりシングルパッケージが複数のプロセッサによって共有されていることが把握されないとき、より複雑なものとなるかもしれない。これは、プロセスを利用可能な処理コア上で非効率的にスケジューリングし、これによりより大きな電力消費をもたらす。
【００１０】
ｂ．計算システム上で実行されるアプリケーションは、インタラクティブアプリケーション（限定されるものでないが、Ｍｉｃｒｏｓｏｆｔ（登録商標）のＥｘｃｅｌ（登録商標）やＷｏｒｄ（登録商標）など）対バックグラウンドアプリケーション（限定されるものでないが、Ｓｙｍａｎｔｅｃ（登録商標）のＡｎｔｉｖｉｒｕｓ（登録商標）又はＰｅｒｓｏｎａｌ  Ｆｉｒｅｗａｌｌ（登録商標）など）としては分類されないかもしれない。これらのアプリケーションは等しい実行機会を取得せず、それらの実行は必要でないかもしれず、このため、電力流失の多くを生じさせるかもしれない。電力流失は、バッテリを利用して動作するモバイル計算システムには問題であるかもしれない。
【００１１】
インテル（登録商標）コーポレイションは、広範なサービスについて低電力消費と高パフォーマンス処理をサポートする技術を搭載したプロセッサを製造している。いくつかのケースでは、低電力消費と高パフォーマンス処理をサポートするこれらのプロセッサの技術は、ＡＣＰＩ仕様書などの電力管理システムに準拠するかもしれない。インテル（登録商標）コーポレイションは、様々な製品指示又は型番の下で上記又は同様の技術を特色とした１以上のプロセッサファミリを販売している。
【００１２】
さらに、ここに記載される本発明の実施例は、システムのハードウェアによりサポート可能な各種低電力モードを利用するため、これらのモードがシステムのＯＳによりサポートされていないときでさえ、利用されるかもしれない。例えば、インテル（登録商標）ＰＸＡ２６ｘ及びＰＸＡ２７ｘプロセッサファミリのプロセッサは、パフォーマンススイッチングのための技術を含む。同様の技術が、Ｍｏｂｉｌｅ  Ｉｎｔｅｌ（登録商標）Ｐｅｎｔｉｕｍ（登録商標）ＩＩＩ  Ｐｒｏｃｅｓｓｏｒ−Ｍと呼ばれるタイプのプロセッサなど、インテル（登録商標）コーポレイションにより販売されている各種モバイルプロセッサに含まれている。これらのプロセッサに含まれるパフォーマンススイッチングのための技術は、一般にＩｎｔｅｌ  ＳｐｅｅｄＳｔｅｐ（登録商標）技術と呼ばれるかもしれない。本発明の実施例は、このような技術がサポートする電力セーブの可能性をより効率的に利用するのに利用可能である。本発明の他の実施例は、他のタイプのパフォーマンス又は電力管理技術を利用するプロセッサを含む他のタイプのプロセッサを利用する処理システムの効率性を向上させるのに利用可能である。
【００１３】
ここに記載される本発明の実施例は、ＡＣＰＩ仕様又は同様のシステムをサポートするプロセッサを有する計算システムを含むかもしれない。本発明の他の実施例は、インテル（登録商標）コーポレイション又は他のメーカーにより製造されるか否かに関係なく、他のタイプのプロセッサを有する計算システムを含む。
【００１４】
図１及び２は、本発明の実施例による計算システムの具体例のブロック図であり、図３〜６に記載される処理のための具体例を提供する。以下の記載は、本発明の特定の特徴が実現可能な適切な環境の全体的な記載を提供するためのものである。ここに使用される“計算システム”という用語は、広くは単一のマシーン又は通信可能に接続される一緒に動作するマシーン又は装置のシステムを含むことを意図する。一例となる計算システムは、限定されるものでないが、分散計算システム、スーパーコンピュータ、計算クラスタ、メインフレームコンピュータ、ミニコンピュータ、クライアント・サーバシステム、パーソナルコンピュータ、ワークステーション、サーバ、ポータブルコンピュータ、ラップトップコンピュータ、タブレット処理システム、電話、携帯情報端末（ＰＤＡ）、携帯装置、モバイルハンドセット、オーディオ及び／又はビデオ装置などの娯楽装置、並びに除法を処理若しくは送信するための他の装置を含む。
【００１５】
図１及び２のシステムは、例えば、集積回路（ＩＣ）として実現可能である。システムのコンポーネントは、当業者が理解するように、１以上の揮発性又は不揮発性データ記憶装置に接続可能である。また、これらの図は計算システムのすべての可能なコンポーネントを含むものでない。計算システムはまた、１以上のＩＤＥ（Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ）ドライブ、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）ドライブ、又は他のタイプのハードディスクドライブなどの大容量記憶装置に通信可能に接続されるかもしれない。本発明の実施例によると、計算システムにより利用可能な他のタイプの大容量記憶装置及び記憶媒体は、フロッピー（登録商標）ディスク、光ストレージ、テープ、メモリスティック、デジタルビデオディスク、バイオロジカルストレージなどを含むかもしれない。
【００１６】
さらに、計算システムはまた、１以上のバスブリッジを含むかもしれない。上記ブリッジ及び係るバスの１以上が、１以上の記憶装置、デバイスコントローラ、入出力（Ｉ／Ｏ）ポート及びＩ／Ｏデバイスなどの追加的なコンポーネントと直接的に又は間接的に図１に示されるプロセッサを接続するのに利用されるかもしれない。例えば、追加的なコンポーネントは、ビデオコントローラ、ＳＣＳＩコントローラ、ネットワークコントローラ、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）コントローラ、キーボードコントローラなどを含むかもしれない。本発明のいくつかの実施例では、このようなコンポーネントは、プログラマブル又は非プログラマブルロジック装置若しくはアレイ、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、埋め込みコンピュータ、スマートカードなどのコンポーネントを利用して、埋め込み装置として実現可能である。
【００１７】
図１は、複数のコア１１２（１１２ａ〜１１２ｂ）を有するプロセッサ１１０を示す。ここで、各コア１１２は、命令フェッチユニット、命令デコーダ、レベル１（Ｌ１）キャッシュ１１４（１１４ａ〜１１４ｂ）、実行ユニットなどにより十分機能する。図示されたプロセッサ１１０は２つのコア１１２を有するが、本発明の実施例はそれに限定されるものでない。実際、ここに記載される技術は、電力消費が問題となる任意のマルチコアアーキテクチャに有用である。このため、任意数のコアが、ここに記載される実施例の趣旨及び範囲から逸脱することなく利用可能である。
【００１８】
各コア１１２は、コア１１２のアイドル状態への移行を要求するコマンドを検出可能である。このコマンドは、コア１１２の内部から発生するか、又はコア１１２の外部から発生するものであるかもしれない。アイドル状態は、ＡＣＰＩ仕様書に記載される“Ｃ状態”の１つなどのプロセッサ電力状態とすることが可能である。一般に、よりディープなアイドル状態は、より少ない電力消費とより長い終了遅延（ｅｘｉｔ  ｌａｔｅｎｃｙ）に関連付けされる。以下に限定されるものでないが、プロセッサ周波数、プロセッサ電圧などの直接的なモニタリングなどの他のアプローチもまた利用可能である。
【００１９】
プロセッサ１１０は、コア１１２により共有されるレベル２（Ｌ２）キャッシュ１２０を有することが可能である。他方、Ｌ１キャッシュ１１４は、各自のコア１１２に専用とされてもよい。以下で詳細に説明されるように、Ｌ１キャッシュ１１４の専用性は、コア単位の電力管理の機会を提供する。コア１１２はまた、コア単位の電力セーブを実現するためゲート処理することが可能な専用のクロック入力１１５（１１５ａ〜１１５ｂ）を有する。ハードウェア調整ロジック１１６は、複数のコア１１２のそれぞれのアイドル状態１１８（１１８ａ〜１１８ｂ）とコマンドに基づき、所与のコア１１２の電力消費を管理することが可能である。複数のコア１１２と複数のアイドル状態１１８を調整することによって、図示されたプロセッサ１１０はより複雑なアーキテクチャをサポートすることが可能であり、従来のソフトウェアアプローチより迅速に状態変化に応答することが可能である。図示されたプロセッサ１１０はまた、調整ロジック１１６を利用して、実際の電力状態の遷移に先行して電力セーブ機能を開始することが可能である。その結果は大きな電力の節約となりうる。
【００２０】
例えば、利用の欠落に基づき、Ｃ４状態は第１コア１１２ａに適していると判断されるかもしれない。その他の電力管理状態に関してディープであるＣ４状態は、典型的には、パッケージワイド電圧及び／又は周波数設定などの共有リソースに関連付けされる。他方、第２コア１１２ｂは、アクティブ状態とされるかもしれない。このような状態の下、調整ロジック１１６は、第１コア１２ａが依然として電力を節約することができるように、第１コアを特定の専用の電力セーブ機能に開始に係る“仮の”状態に移行させることが可能である。さらに、第２コア１１２ｂが以降にＣ４状態に移行するためのリクエストを受け付けた場合、調整ロジック１１６はまた、コア１１２がＣ４状態に移行している間に、より多くの電力を節約するため共有電力セーブ機能を開始することが可能である。同様の効果が、すべてのコアが同じ状態に移行している時点を検出することによって、その他のアイドル状態について実現可能である。
【００２１】
本発明の実施例によると、１以上のオペレーティングシステム（ＯＳ）１２２がプロセッサ１１０上で実行されるかもしれない。いくつかの実施例では、ＯＳ１２２はメモリ（図示せず）にロードされる。それらの双方がプロセッサ１１０にアクセス可能である。ＡＣＰＩロジック１２４は、少なくとも上述した特徴を提供するためＯＳ１２２内にインスタンス化されてもよく、さらにここに記載されるような本発明の実施例の状態情報を提供するかもしれない。本発明のいくつかの実施例では、ＯＳ１２２とＡＣＰＩロジック１２４は、限定されるものでないが、ハードディスクなどの大容量記憶装置（図示せず）に格納されてもよい。
【００２２】
図２は、上述されるような複数のコア１１２’（１１２ａ’〜１１２ｂ’）とハードウェア調整ロジック１１６’を備えるプロセッサ１１０’を有するシステム２２２を示す。図示されたシステム２２２はまた、チップセット２３０を介しプロセッサ１１０’に接続される１以上の入出力（Ｉ／Ｏ）装置２２４、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２２６及びＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２２８を有する。ＲＡＭ２２６及びＲＯＭ２２８は、コア１１２’により１以上のスレッド及び／又はプロセスとして実行可能な命令２３２を格納する。命令２３２の実行は電力消費を低減させることが可能である。アイドル状態移行コマンドが、コア１１２’によりチップセット２３０及び／又はオペレーティングシステムから受け付けされると、ハードウェア調整ロジック１１６’は、システム２２２の電力消費を実質的に低減することが可能である。
【００２３】
本発明の実施例によると、１以上のＯＳ１２２’がプロセッサ１１０’上で実行可能である。ＡＣＰＩロジック１２４’は、少なくとも上述した機能を提供するためＯＳ１２２’内でインスタンス化され、ここに記載される本発明の実施例の状態情報をさらに提供するかもしれない。本発明のいくつかの実施例では、ＯＳ１２２’及びＡＣＰＩロジック１２４’は、限定されるものでないが、ハードディスクなどの大容量記憶装置（図示せず）に格納されてもよい。
【００２４】
本発明の実施例は、限定されるものでないが、ＯＳのアイドル状態を示すプロセッサ電力管理状態などのプロセッサ電力状態へのＯＳのエントリ（イグジット）を検出することに関する。本発明の実施例によると、プロセッサ電力管理状態エントリ／イグジットが検出されると、ＯＳのスケジューラは、スケジューリング及び／又は電力管理を管理するため、フォアグラウンド対バックグラウンドアプリケーションを知ることと同時に、プラットフォーム及び／又はユーザに固有の選好により拡張されるかもしれない。
【００２５】
本発明のいくつかの実施例では、本方法及び装置は、ＯＳ内で動作可能なＯＳアイドルハンドラ及び／又はＯＳスケジューラによるプロセッサ電力管理状態とのエントリ及びイグジットを検出するかもしれない。本発明は、マシーンによりアクセ右されると、マシーンにタスクを実行させ、アブストラクションデータタイプ又は低レベルハードウェアコンテクストを規定させる命令、関数、手順、データ構造、アプリケーションプログラムなどを含む関連データを参照して又は関連して説明されるかもしれない。データは、一般にソフトウェアとして参照され、揮発性及び／又は不揮発性データストレージに格納されてもよい。
【００２６】
図３は、ＯＳにより割り当てられるプロセス及びスレッドプライオリティを示す。ブロック図３００により示されるように、プライオリティは、単なる理解の簡単化のため、垂直的な配置により図面の左側にカテゴリ化され、ハードウェアプライオリティ３０２、ディスパッチプライオリティ３０４、ソフトウェアプライオリティハイ３０６、ソフトウェアプライオリティノーマル３０８及びソフトウェアプライオリティロー３１０としてそれぞれリストされる。図３の右側には、矢印により示されるような１以上のプロセスに係るスレッドが示される。いくつかの実施例では、割り込みサービスルーチン３１２がハードウェアプライオリティ３０２に関連付けされ、ＯＳスケジューラ３１４がディスパッチプライオリティ３０４に関連付けされ、本実施例に示されるように、ブロック３０６，３０８及び３１０により示されるソフトウェアアプリケーションより高いプライオリティを有する。本発明の実施例によると、ＯＳスケジューラ３１４はまた、何れのスレッド及びプロセスが次の時間単位において実行されるべきか決定するかもしれない。また、典型的には、低いプライオリティに設定し（少なくともブロック３０６，３０８及び３１０の少なくとも１つを含む）、プロセッサを何れの時点で低電力状態に置くか決定するアプリケーションに接触させないＯＳアイドルハンドラがあってもよい。
【００２７】
また、図３に示されるように、リアルタイムアプリケーション３１６がソフトウェアプライオリティハイ３０６に関連付けされる。リアルタイムアプリケーション３１６は、ユーザにより直接アクセスされるソフトウェアアプリケーションを有し、計算システムの処理リソースのより多くの部分を必要とするかもしれない。本発明のいくつかの実施例によると、電力状態検出プロセスハイプライオリティスレッド３２２が、リアルタイムアプリケーション３１６と共にインスタンス化され、ソフトウェアプライオリティハイ３０６に関連付けされるかもしれない。
【００２８】
１以上のフォアグラウンドタスク３１８は、本発明の実施例によるとソフトウェアプライオリティノーマル３０８に関連付けされる。また本発明のいくつかの実施例では、バックグラウンドタスク３２０がソフトウェアプライオリティロー３１０に関連付けされるかもしれない。バックグラウンドタスク３２０は、ユーザにより直接アクセスされるものでないソフトウェアアプリケーションを有し、典型的には、電力管理を考慮することなく動作するかもしれない。本発明のいくつかの実施例によると、電力状態検出プロセスロープライオリティスレッド３２４は、バックグラウンドタスク３２０と共にインスタンス化され、ソフトウェアプライオリティロー３１０に関連付けされるかもしれない。
【００２９】
本発明の実施例によると、機構は、ＯＳがアイドル状態によりプロセッサを低電力状態にした時点をＯＳに独立な方法によりほぼ検出し、またプロセッサが低電力状態からアプリケーションを実行するための通常の実行状態にウェイクアップした時点を検出するかもしれない。本発明のいくつかの実施例では、これは、１つのスレッドが典型的なシステムの他のアプリケーションより高いプライオリティを有し、他のスレッドがアプリケーションスレッドが有することが可能な少なくとも可能性のあるプライオリティを有する２つのスレッドによる少なくとも１つのプロセスを生成することにより実現可能である。図３に示されるように、スレッド３２２及び３２４は、それぞれ最も高いスレッドと最も低いスレッドとしてインスタンス化されるかもしれない。
【００３０】
さらに、本発明は特定のＯＳに限定されるものでなく、広範なＯＳを利用する計算システムにおいて利用可能である。
【００３１】
図４〜６の方法は、図１及び２に関して図示及び説明された計算システムの１以上のモジュールにより実行されるかもしれない。特に本発明の実施例によると、ＯＳ１２２，１２２’とＡＣＰＩ１２４，１２４’は、本発明のためのロジックの一部又はすべてを提供するかもしれない。図４〜６は、インスタンス化される計算システムの論理及び物理モジュールを不必要に参照することなく、本発明の実施例について記載している。
【００３２】
図４は、本発明のいくつかの実施例によるＯＳアイドルハンドラによる電力状態エントリ／イグジットがどのように検出されるかのフローチャートを示す。確認できるように、検出処理は、検出アプリケーションにより生成される２つのスレッドにより実行可能である。プロセス４００は、スタート４０２から開始され、すぐに４０４に移行して、高プライオリティスレッド及び低プライオリティスレッドを生成する。その後プロセスは４０６に移行し、電力状態エントリ／イグジット情報を格納するため、２つのスレッドの間で共有されるメモリを生成する。本発明のいくつかの実施例では、プロセスは、システムシャットダウン４０８まで２つのスレッドを実行する。本発明の実施例によると、プロセスは電子装置４１０の状態に関する更新された情報を受け付けるかもしれない。電子装置は、コンピュータシステム、又は図１のマルチコアプロセッサなどの計算システムの１以上のモジュールを有するかもしれない。その後４１０において、プロセスは図４に示されるように、繰り返される。
【００３３】
図５は、本発明の実施例による高プライオリティスレッドのフローチャートを示す。当該スレッドのプロセス５００は５０２からスタートし、すぐに５０４に移行する。５０４において、プロセスは、共有メモリに電力状態イグジットタイムスタンプを格納する。このタイムスタンプは、イグジットタイムと呼ばれるかもしれない。その後、プロセスは５０６に移行する。５０６において、プロセスはエントリタイムをイグジットタイムから差し引くことによって、アイドル時間を計算する。本発明のいくつかの実施例では、アイドル時間は、低プライオリティスレッドにより格納される。その後、プロセスは５０８に移行し、本発明のいくつかの実施例では、他の何れかの電力管理又はスケジュール変更がバックグラウンド対フォアグラウンドプロセスのユーザ入力及び／又は知識に基づき実行される必要があるか決定する。その後、プロセスは、５１０においてプロセッサに他のスレッドを生成させ、５１２に移行する。５１２において、プロセスは、実行準備状態に入るよう低プライオリティスレッドに通知する。本発明の実施例では、プロセスは、後述されるように、６１２において低プライオリティスレッド６００と通信する。その後、プロセスは、５１４において次のＯＳタイマーチックのウェイトオンタイマー（ｗａｉｔ−ｏｎ−ｔｉｍｅｒ）イベントをスケジューリングし、本発明のいくつかの実施例では、プロセス５００が必要に応じて繰り返される５１６で終了する。
【００３４】
図６は、本発明の実施例による低プライオリティスレッドのフローチャートを示す。スレッドに対するプロセス６００は６０２からスタートし、すぐに６０４に移行する。６０４において、プロセスは共有メモリに電力状態エントリタイムスタンプを格納する。このタイムスタンプはエントリタイムと呼ばれるかもしれない。その後、プロセスは６０６に移行する。６０６において、プロセスは、エントリタイムからイグジットタイムを差し引くことによって、ビジータイムを計算する。本発明のいくつかの実施例では、ビジータイムは高プライオリティスレッドにより格納される。その後、プロセスは６０８に移行し、本発明のいくつかの実施例では、他の何れかの電力管理又はスケジューリング変更が、バックグラウンド対フォアグラウンドプロセスのユーザ入力及び／又は知識に基づき実行される必要があるか決定される。その後、プロセスは６１０においてプロセッサに他のスレッドを生成させ、６１２に移行する。６１２において、本発明のいくつかの実施例によると、プロセスは高プライオリティスレッドからウェイトオン信号をスケジューリングし、５１２において、高プライオリティスレッド５００と通信するかもしれない。その後、プロセス６００は６１４に移行してエンドし、必要に応じて繰り返されるかもしれない。
【００３５】
本発明の実施例によると、低プライオリティスレッド６００は、例えば、ＯＳスケジューラがプライオリティに基づきスケジュール順序を決定し、低プライオリティスレッドが、スリープ、レスト又は同様の低動作レベルに係る電力状態へのエントリの直前に続くとき、実行する機会を得るかもしれない。このため、それは、次の時間単位がＯＳアイドルハンドラにより利用され、電力状態へのエントリを生じさせる大変良好な指標となるかもしれない。同様に、高プライオリティスレッド５００をすべてのソフトウェアアプリケーションスレッドの中で最も高いプライオリティにより実行させるかもしれないため、本発明の実施例によると、それは典型的には、すべてのハードウェア割込がサービスされた後に始めて実行する機会が与えられるであろう。本発明のいくつかの実施例によると、このプロセスの結果は、ＯＳが電力状態を終了し、ユーザモードの実行が開始される時点の通知を与えるかもしれない。
【００３６】
すなわち、いくつかの実施例では、低プライオリティスレッドは、アイドル又は低電力状態へのエントリ直前に実行され、高プライオリティスレッドは、アイドル状態が終了するか、又は最も高い電力状態に到達したときに実行されてもよい。本発明のいくつかの実施例では、スレッドの何れか又は両方が、タスクを完了させると直ぐに他のスレッド引き継がれるかもしれない。これを実現する１つの方法は、オペレーティングシステムにより許可される最小時間の間、これらのスレッドをスリープ状態に置くことである。これは、次のタイマーの割り込みまでこれらのスレッドをスリープ状態に維持し、ＯＳアイドルハンドラを含む他のスレッドに実行機会を与えるかもしれない。
【００３７】
本発明のいくつかの実施例では、ユーザモード実行の知識及び電力状態遷移若しくは他の動作の通知は、様々なアプリケーション実行モデルを決定及び最適化するのに大いに役立ちうる。例えば、本発明のいくつかの実施例では、スケジューラヘルパー管理アプリケーションは、ＯＳスケジューラが典型的には知らない特定のアプリケーションに関する追加的な知識があるとき、複数存在する場合、特定のプロセスが実行されるべき時点と何れのプロセッサ／コア上で実行されるべきか決定するかもしれない。例えば、本発明の実施例では、アプリケーション管理コンソールはまたこの情報を利用して、共有プロセッサトポロジーの１つのプロセッサがアクティブ状態になったとき、便乗してバックグラウンドスレッドを実行するかもしれない。このタイプのインテリジェントなディスパッチ処理は、各プロセスをパラレルに実行することによって、パッケージ電力状態機会を最大化する。このタイプの技術は、共有された電圧レール実現形態を有するプロセッサにおいて特に有用であるかもしれない。
【００３８】
ここに記載された発明は、システム上で実行される各プロセスに関する追加的な特定の知識を取得し、パフォーマンス、ユーザの体感、電力消費などを効果的に向上させるため、これらのアプリケーションのスケジューリングを変更する管理アプリケーションにより実現可能である。
【００３９】
典型的には、プロセッサがアイドル状態であるときについて、またそれがアプリケーションコードを実行するのに利用されるべきときについての決定が、ＯＳにより判断される。しかしながら、本発明の実施例によると、上記方法及び装置は、ＯＳの外部のソフトウェアがＣＰＵアイドルタイムを効果的に検出することを可能にするかもしれない。この技術は、このような手段が市販のオペレーティングシステムのトップに追加されることを可能にするかもしれない。
【００４０】
本発明の実施例は、ここでの関連する部分において説明された計算システム又は同様のマシーンによる本発明の実現を含む、当業者が本発明を実現することを可能にするのに十分な詳細さにより記載されるかもしれない。他の実施例が利用可能であり、本発明の範囲から逸脱することなく、構造的、論理的及び知能的な変更が可能であるかもしれない。
【００４１】
ここに記載及び図示された原理及び実施例に基づき、図示された実施例はこのような原理から逸脱することなく構成及び詳細において変更可能であることが認識されるであろう。例えば、１以上の実施例が、携帯電話、ＰＤＡ、ラップトップコンピュータ、タブレットコンピュータ又は他の携帯処理システムなどのバッテリ駆動装置に関して説明されたが、本発明はこのようなシステムでの利用に限定されるものでなく、デスクトップコンピュータやサーバなどの他の多数のタイプのシステムにおいて効果的に利用可能である。従って、本発明のいくつかの実現形態又は実施例の主要な効果の１つは、ソフトウェアアプリケーションにプロセッサの電力状態の変更を認識させることによってバッテリ寿命を延長させるものであるが、他の実現形態又は実施例では、他の効果がより重要であるかもしれない。例えば、ノイズと熱の低減は、いくつかの実現形態又は実施例では主要な効果であるかもしれないが、他の実現形態又は実施例では、エネルギーコストの低下が主要な効果であるかもしれない。
【００４２】
本発明の他の実施例はまた、本発明の処理を実行するためのマシーンアクセス可能なメディア符号化を含む。このような実施例はまた、プログラムプロダクトと呼ばれるかもしれない。このようなマシーンアクセス可能なメディアは、限定されるものでないが、フロッピー（登録商標）ディスク、ハードディスク、ＣＤ−ＲＯＭ、ＤＶＤ、ＲＯＭ、ＲＡＭなどの記憶媒体と共に、アンテナ、配線、光ファイバ、マイクロ波、無線波、他の磁気若しくは光搬送波などの通信媒体を含むかもしれない。このため、命令及び他のデータは、パケット、シリアルデータ、パラレルデータ、伝搬信号などの形態により伝送環境又はネットワークを介し送信され、分散環境において利用され、シングル又はマルチプロセッサマシーンによるアクセスのためローカル及び／又はリモートに格納されるかもしれない。
【００４３】
また、ここに示されるハードウェア及びソフトウェアコンポーネントは、それぞれが他のものから実質的に独立して設計、構成又は更新可能となるように、自己完結した機能要素を表す。他の実施例では、多くのコンポーネントは、ここに記載及び図示された機能を提供するハードウェア、ソフトウェア又はハードウェアとソフトウェアの組み合わせとして実現可能である。
【００４４】
さらに、異なるものであるが、本発明の各種実施例は必ずしも互いに排他的でないことが理解されるべきである。例えば、いくつかの実施例において記載される特定の特徴、構成又は特性は他の実施例に含まれるかもしれない。当業者は、上記説明から、本発明の実施例の技術が様々な形態により実現可能であることを理解することが可能である。このため、本発明の実施例が特定の具体例に関連して説明されたが、図面、明細書及び移行の請求項を参照することにより他の変形が当業者に明らかとなるため、本発明の実施例の真の範囲がそれに限定されるものでない。
【図面の簡単な説明】
【００４５】
【図１】図１は、本発明のいくつかの実施例による計算システムの一例のブロック図である。
【図２】図２は、本発明のいくつかの実施例による計算システムの一例のブロック図である。
【図３】図３は、本発明のいくつかの実施例による電力状態エントリ／イグジット検出スレッドによる一例となるオペレーティングシステムのプロセス及びスレッドプライオリティのブロック図である。
【図４】図４は、本発明のいくつかの実施例による電力状態検出を開始するプロセスのフローチャートである。
【図５】図５は、本発明のいくつかの実施例による高プライオリティ検出スレッドのプロセスのフローチャートである。
【図６】図６は、本発明のいくつかの実施例による低プライオリティ検出スレッドのプロセスのフローチャートである。
【図１】
2009520302.tif 000003
【図２】
2009520302.tif 000004
【図３】
2009520302.tif 000005
【図４】
2009520302.tif 000006
【図５】
2009520302.tif 000007
【図６】
2009520302.tif 000008
【国際調査報告】
2009520302.tif 000009
2009520302.tif 000010
2009520302.tif 000011