(57)【要約】  電力認識スレッドスケジューリングおよびプロセッサーの動的使用を行うための手法および装置が開示される。一部の態様では、マルチコアシステムが、コアの活動を判定するために監視される。コアの活動は、電力節約プランとパフォーマンスプランとのバランスを取る電力ポリシーと比較できる。コアの１つまたは複数は、比較に応答して、マルチコアシステムによる電力消費を減少させるために保留にすることができる。追加の態様で、コアを動的に保留にする、または保留解除するために電力認識スケジューリングが所定のインターバル中に実行できる。さらに別の態様には、コアの活動および電力ポリシーの比較に応答して保留解除コアの電力状態を調整するステップがある。【選択図】図２
2011515776.tif 000002
【特許請求の範囲】
【請求項１】
複数のコアを有するコンピューティングデバイスのパフォーマンスと電力節約のバランスを取る方法であって、
作業を処理するためにどのコアが使用されるかを定義する（２０２、２０４）ステップと、
前記定義済みおよび未定義のコア両方に対するパフォーマンスおよび電力節約プランを開始するための電力ポリシーを決定する（２１０、２１４、４０６）ステップと、
前記電力ポリシーに基づいて前記未定義のコアの少なくとも１つを保留にする（２２２）ステップと
を含む方法。
【請求項２】
電力ポリシーを前記決定するステップが、
コア保留マスクを作成する（２０２）ステップと、
スレッドプロセッサーアフィニティを決定する（２１０）ステップと、
使用可能プロセッサーセットを作成する（２２０）ために前記コア保留マスクと前記スレッドプロセッサーアフィニティマスクを結合する（２１４）ことにより、前記コア用の前記パフォーマンスおよび電力節約プランの少なくとも一部を提供するステップと、
前記使用可能プロセッサーセット、および作業をアクティブに処理中のコア（２２２）に基づいて、どのコアが保留または保留解除されるかを算出するステップと
をさらに含む、請求項１に記載の方法。
【請求項３】
電力ポリシーを前記決定するステップが反復プロセス（２１０、２１４、２２０）として動的に実行される、請求項２に記載の方法。
【請求項４】
前記電力ポリシーに基づいて前記定義済みコアの少なくとも１つを基準化する（５１２）ステップをさらに含む、請求項１に記載の方法。
【請求項５】
前記定義済みコアの少なくとも１つを前記基準化するステップが、電力節約を増やすためにコア有用性またはコアの電力状態（ｐ状態）の少なくとも１つを調整する（５１２）ステップを含む、請求項４に記載の方法。
【請求項６】
前記未定義のコアの少なくとも１つを前記保留にするステップが、
保留解除コアブロックが保留コアを含むかを判定する（３１６（２））ステップと、
前記保留コアを有する前記保留解除コアブロックが判定されると、前記保留解除コアブロック内の少なくとも１つの保留解除コアを保留にする（３２０）ステップと
を含む、請求項１に記載の方法。
【請求項７】
コアおよびシステムヒューリスティック（７０８）と、
プロセッサー依存関係（７１０、７１４、７１８）と、
コア保留用のコアポリシーパラメータ（７０６）と
のうちの少なくとも１つを使用する前記電力ポリシーを修正するステップをさらに含む、請求項１に記載の方法。
【請求項８】
マルチコアシステム内のコアの活動を監視する（４０２）ステップと、
前記マルチコアシステム内の各コアの電力節約と処理パフォーマンスとのバランスを取る、前記マルチコアシステム用の電力ポリシーを取得する（４０６）ステップと、
前記電力ポリシーに基づいて前記コアの活動に応じて少なくとも１つのコアを保留にする（４１２）ステップと
を含む方法。
【請求項９】
コアを前記保留にするステップが、コア電力状態を最小電力のプロセッサーアイドル電力状態（Ｃ状態）に減少させる（５２４）ステップを含む、請求項８に記載の方法。
【請求項１０】
前記マルチコアシステム内の少なくとも１つの保留解除コアの電力状態を調整する（５２０）ステップをさらに含む、請求項８に記載の方法。
【請求項１１】
前記コアの活動に応じて少なくとも１つのコアを前記保留にするステップが、所定の頻度で動的に開始される（５０２、５０４）、請求項８に記載の方法。
【請求項１２】
マルチコアシステム内のコアの活動を前記監視するステップが所定の期間にわたって実行され（４２０）、前記コアの活動に応じて少なくとも１つのコアを前記保留にするステップが、前記監視されたコアの活動によって検出された電力節約の機会に応じて動的に実行される（２１０、２１４、２２０）、請求項８に記載の方法。
【請求項１３】
前記コアの活動に応じて少なくとも１つのコアを前記保留にするステップが、プログラムスケジュールに関連付けられたアフィニティマスクによって許可されたとおりに保留解除コアへの作業切り替えを行うステップ（７１２、７１４）を含む、請求項８に記載の方法。
【請求項１４】
修正されたコアの活動を作成するために前記監視されたコアの活動を修正する（５０８）ステップと、
前記電力ポリシーに基づいて、前記修正されたコアの活動に応じて少なくとも１つのコアを保留解除する（５１２）ステップと、
少なくとも１つのスレッドを前記少なくとも１つの保留解除コアに再割り当てする（５１４）ステップと
をさらに含む、請求項８に記載の方法。
【請求項１５】
複数のプロセッサー（１０４）と、
前記複数のプロセッサーに結合されたコントローラー（１０６）であって、
パフォーマンススケジュールを実施するための、
電力節約ポリシーを実施するための、および
前記複数のプロセッサーの１つまたは複数を保留にすることにより、前記パフォーマンススケジュールと前記電力節約ポリシーとのバランスを取るための
コントローラーと
を備えた、多重論理プロセッサーシステム。
【請求項１６】
前記コントローラーが、システムメモリーに常駐しているカーネル電力マネージャー（１１４）から電力節約ポリシーを実施するための命令を受け取る、請求項１５に記載のシステム。
【請求項１７】
前記電力節約ポリシー（７０２）が、作業をスケジューリングする（１１６、２２０）ための基になるプロセッサーの結果セットを決定するためにプログラムモジュールスケジュールと結合されたコア保留マスク（２０２）を含む、請求項１５に記載のシステム。
【請求項１８】
前記複数のプロセッサーが、複数のコアを有する少なくとも１つのコアブロック（３００）を含む、請求項１５に記載のシステム。
【請求項１９】
前記パフォーマンススケジュールと前記電力節約ポリシーとのバランスを取るステップが、少なくとも１つの保留コアを有する前記コアブロック（３１８、７１４）内の保留解除コアにコア保留優先順位付けを作成するステップを含む、請求項１８に記載のシステム。
【請求項２０】
少なくとも１つの保留解除コアの前記電力状態を調整する（５２０）ステップをさらに含む、請求項１５に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]電力消費のコンピューターシステム管理は、バッテリーの稼働能力を拡張するため、および全体の電力消費を減少させるために重要であり、そのどちらもが経済上および環境上の利益をもたらす。非モバイルコンピューターの場合でも、電力所要量の減少は、重要な全域リソースを節約し、通常電力の中断中などにバッテリーバックアップシステムに依存する場合の稼働を延長するのに役立つ。
【０００２】
[0002]システム動作中はコンピューティングシステムのほとんどのコンポーネントが電力を使用するが、プロセッサーは、システム電力を不釣り合いな配分で使用する。民生用中心のシステムを含めて、多くのコンピューターシステムが複数のプロセッサーおよび／または複数のコアを備えたプロセッサーを有する。複数のプロセッサーを有すると、コンピューターは並行して実行する作業レベルを上げることができるが、プロセッサーを追加すると、電力消費も増大する。最新のプロセッサーは、非常に低電力のアイドル電力状態を特徴としており、それは、マルチコアシステムのコア別に適用することができ、オペレーティング・システムによって制御できる。さらに、プロセッサー頻度は、システムによる電力使用を減らすためにコア単位、またはコアグループ単位で基準化することができる。
【発明の概要】
【０００３】
[0003]この概要では、以下の「発明を実施するための形態」でさらに説明される、電力認識スレッドスケジューリングおよびプロセッサーの動的使用を行う概念を簡略化して紹介する。この概要は、特許請求の範囲の主題の本質的な特徴を特定するようには意図されておらず、特許請求の範囲の主題の範囲を決定するために使用されるようにも意図されていない。
【０００４】
[0004]電力認識スレッドスケジューリングおよびプロセッサーの動的使用を行うための例示的な手法および装置が開示される。１つまたは複数の実施形態によれば、マルチコアシステムが、コアの活動を判定するために監視される。コア用のパフォーマンスおよび電力節約プランを開始するために電力ポリシーが取得される。電力ポリシーおよびコアの活動に基づいてマルチコアシステムのコアのうちの１つまたは複数が保留にされる（システム指定の低電力状態にされる）。１つまたは複数のコアが保留にされていると、保留解除されているコアは、残りのシステム活動のすべてを扱うように任される。一部の実施形態では、電力ポリシーは、電力節約またはシステムパフォーマンスに影響を与える追加要因を含むように修正できる。少なくとも１つの他の実施形態では、マルチコアシステムは、１つまたは複数の保留解除されているコアを保留にすることに加えて、その１つまたは複数のコアの電力状態を動的に調整することができる。
【０００５】
[0005]
詳細な説明は、添付の図面を参照しながら説明される。図面において、参照番号の左端の数字は、その参照番号が最初に使用された図面を表す。異なる図面内の同じ参照番号は、類似または同一の項目を指す。
【図面の簡単な説明】
【０００６】
【図１】[0006]電力認識スレッドスケジューリングおよびプロセッサーの動的使用の少なくとも１つの実施形態を実施するために使用できる例示のシステム図である。
【図２】[0007]プロセッサーへの作業の割り振りを可能にするためにスレッドスケジューラーでコア保留マスクを作成し、そのマスクを実施するプロセスの少なくとも１つの実施形態を示した流れ図である。
【図３】[0008]図３Ａは、本開示の少なくとも１つの実施形態による例示のコア利用率を示した図である。
【０００７】
図３Ｂは、本開示の少なくとも１つの実施形態による例示のコア利用率を示した図である。より具体的には、図３Ｂは、図３Ａに示された例示のシステムコア利用率に対応した例示の修正版コア利用率を示した図である。
【図４】[0009]スレッドスケジューリングおよびプロセッサーの動的使用を評価し、プロセッサーのための修正された構成を決定する例示のプロセスの少なくとも１つの実施形態を示した流れ図である。
【図５】[0010]電力認識スレッドスケジューリングおよびプロセッサーの動的使用を行う例示のプロセスの少なくとも１つの実施形態を示した流れ図である。
【図６】[0011]さらにドメインアイドルアカウンティングを含む、電力認識スレッドスケジューリングおよびプロセッサーの動的使用を行う例示のプロセスの少なくとも１つの実施形態を示した、もう１つの流れ図である。
【図７】[0012]電力認識スレッドスケジューリングおよびプロセッサーの動的使用のための追加設定を行う、少なくとも１つの実施形態を示した例示の流れ図である。
【発明を実施するための形態】
【０００８】
[0013]プロセッサーは、電力をまったく消費しない（ゼロ・ワット）アイドル状態を含めて、低電力アイドル電力状態を可能にすることができる。オペレーティング・システムは、実行する有用な作業がない時、１つまたは複数のプロセッサー（または単に「コア」）をアイドル電力状態（すなわち、プロセッサースリープ状態）にさせることができる。このような低電力状態で過ぎる時間を最大にすれば、システムのエネルギー効率を高め、および／またはバッテリーパフォーマンスを拡大することができる。これらのプロセッサーアイドル電力状態に加えて、プロセッサーは、プロセッサーの頻度を、単独で、またはプロセッサーコア電圧の同時減少と関連付けて基準化するための制御機能を提供することもできる。これらの制御機能は、総称してプロセッサー電力管理（ＰＰＭ）機能と呼ぶことができる。
【０００９】
[0014]プロセッサーは、１秒で数十億個の命令の実行を促進することができる。プロセッサーは、コンピューター命令を実行するためにそのように高い能力を有しているが、作業負荷に、短い期間、相当な差異がある可能性がある。例えば、タイピストのキーストローク間の遅延ほどの短い期間に、ＰＰＭは、プロセッサー電力を瞬間的に減少させる、または短時間のスリープ状態にすらすることができる可能性がある。１秒の数分の１の電力は妥協可能のように思われるが、より長い期間にわたる累積電力の節約は相当なものになる可能性がある。
【００１０】
[0015]したがって、プロセッサーがより高い電力状態を正当化する適切な作業負荷を有していない時、ＰＰＭは、使用されていないプロセッサーを低電力状態またはスリープ状態（「保留」状態）にさせることにより、電力需要を減らすことができる。保留コアは、最小の電力量を使用するか、または電力をまったく使用しないプロセッサーアイドル電力状態（ＡＣＰＩ  Ｃ状態）になることができる。システムで実行すべきアクティブ作業は、保留解除されているプロセッサー上で時間多重化される。
【００１１】
[0016]したがって、電力認識スレッドスケジューリングおよびプロセッサーの動的使用の実施を容易にするための手法および装置は、本明細書では、以下の様々なセクションに分けて説明される。
【００１２】
例示の環境
[0017]図１は、電力認識スレッドスケジューリングおよびプロセッサーの動的使用の少なくとも１つの実施形態を実施するために使用できる例示のシステム１００である。システム１００は、コンピューティングデバイス１０２を含む。例えば、コンピューティングデバイスは、他の可能なコンピューティングデバイスの中でも特にモバイルコンピューター１０２（１）、デスクトップコンピューター１０２（２）、および／またはサーバー１０２（Ｎ）であってよい。非常に基本的な構成において、コンピューティングデバイス１０２は、一般的に１つまたは複数のプロセッサー（「プロセッサー」）１０４を含む。例えば、プロセッサー１０４は、並列または直列に構成された複数の独立プロセッサーのうちの少なくとも１つおよびマルチコアプロセッシングユニットであってよく、単独の構成でも、様々な組み合わせの構成でもよい。マルチコアプロセッサーは、同じチップ上または集積回路上に２つ以上のプロセッサー（「コア」）を備えることができる。用語「プロセッサー」、「コア」、および「論理プロセッサー」は、特定の要素を参照して特に断りがない限り、本開示全体にわたって交換可能である。
【００１３】
[0018]加えて、コンピューティングデバイス１０２はシステムメモリー１０６を含む。コンピューティングデバイスの厳密な構成およびタイプに応じて、システムメモリー１０６は揮発性（ＲＡＭなど）、不揮発性（ＲＯＭ、フラッシュメモリーなど）、またはその２つ何らかの組み合わせでよい。システムメモリー１０６は、一般的にはオペレーティング・システム１０８、１つまたは複数のプログラムモジュール１１０を含み、プログラムデータ１１２を含むこともある。
【００１４】
[0019]オペレーティング・システム１０８は、プロセッサー電力管理（ＰＰＭ）機能の使用を指示することを担当するカーネル電力マネージャー１１４を含むことができる。カーネル電力マネージャー１１４は、パフォーマンス状態（ｐ状態）または線形スロットル状態（ｔ状態）を使用してプロセッサー１０４のパフォーマンス（例えば、速度）を調整することができる。例えば、カーネル電力マネージャー１１４は、可能な時にはエネルギーを節約するために、プロセッサー１０４の電力消費と現在の作業負荷とのバランスを取ることができる。加えて、または別法として、カーネル電力マネージャー１１４は、プロセッサー１０４が作業負荷の需要に応じて最大処理能力を発揮できるようにすることもできる。さらに、カーネル電力マネージャー１１４は、プログラムモジュール１１０のスレッドなど、実行準備されているアクティブスレッドがない時、プロセッサー１０４のうちの１つまたは複数を低電力のスリープ状態にさせることができる。
【００１５】
[0020]オペレーティング・システム１０８は、システム１００内のすべての使用可能なプロセッサー１０４全体にわたって作業単位（スレッド）を待機させる、スケジューリングする、優先順位付けする、およびディスパッチするためのモジュールを提供することができ、これらのモジュールは、総称してカーネルスレッドスケジューラー１１６と呼ばれるモジュールの集合として表すことができる。実行準備ができているアクティブスレッドがある場合、カーネルスケジューラー１１６は、１つまたは複数のモジュールを介して、そのスレッドをいずれかの使用可能なコアに処理のためにディスパッチする。
【００１６】
[0021]一般的に言えば、カーネル電力マネージャー１１４およびカーネルスケジューラー１１６は、プロセッサー１０４の制御および稼働に関して持つ利害が競合する。カーネル電力マネージャーは、プロセッサー１０４の電力消費を最小にするように構成され、そのため、プロセッサー１０４のうちの１つまたは複数の頻度および／または電力状態を減少させようとする。逆に、カーネルスケジューラー１１６は、処理のスループットを最大にするように構成され、そのため、すべてプロセッサー１０４に作業を分散させるほうを好む。
【００１７】
[0022]コンピューティングデバイス１０２は、追加機能または追加の機能性を有することができる。例えば、コンピューティングデバイス１０２は、例えば、磁気ディスク、光ディスク、またはテープなど、追加のデータストレージデバイス（取り外し可能および／または取り外し不可）を備えることもできる。そのような追加ストレージは、図１に、取り外し可能ストレージ１１８および取り外し不可ストレージ１２０として示されている。コンピューターストレージ媒体には、コンピューター読み取り可能な命令、データ構造、プログラムモジュール、または他のデータなどの情報を保管するための、任意の方法または技術で実装される揮発性および不揮発性、取り外し可能および取り外し不可の媒体などがあり得る。システムメモリー１０６、取り外し可能ストレージ１１８、および取り外し不可ストレージ１２０はすべて、コンピューターストレージ媒体の例である。コンピューターストレージ媒体には、限定ではないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリー、または他のメモリー技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）あるいは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは所望の情報を保管するために使用できて、コンピューティングデバイス１０２によってアクセスできる他の媒体がある。そのようなコンピューターストレージ媒体はどれでも、コンピューターデバイス１０２の一部になり得る。
【００１８】
[0023]コンピューティングデバイス１０２は、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなど、１つまたは複数の入力デバイス１２２を備えることもできる。ディスプレイ、スピーカー、プリンターなど、１つまたは複数の出力デバイス１２４も、直接に、またはコンピューティングデバイス１０２への接続を介して備えることができる。
【００１９】
[0024]コンピューティングデバイス１００は、そのデバイスがネットワークなどを介して他のコンピューティングデバイスと通信できるようにする通信接続１２６も備えることができる。通信接続１２６は、通信媒体の１つの例である。通信媒体は、一般的に、コンピューター読み取り可能な命令、データ構造、またはプログラムモジュールによって具体化できる。用語「変調データ信号」とは、信号の特性のうちの１つまたは複数が、信号内の情報を符号化するような方法で設定または変更された信号を意味する。例であって、限定ではないが、通信媒体には、ワイヤードネットワークまたは直接ワイヤード接続などのワイヤード媒体、ならびに音波、ＲＦ、赤外線および他のワイヤレス媒体などのワイヤレス媒体がある。コンピューター読み取り可能な媒体は、コンピューティングデバイス１０２によってアクセス可能な任意の入手可能な媒体であってよい。例であって、限定ではないが、コンピューター読み取り可能な媒体は、「コンピューターストレージ媒体」および「通信媒体」で構成することができる。
【００２０】
[0025]本明細書では、様々なモジュールおよび手法が、１つまたは複数のコンピューターまたは他のデバイスによって実行されるコンピューター実行可能な命令、例えば、プログラムモジュールなどという一般的なコンテキストで説明されることがある。一般的に、プログラムモジュールには、特定のタスクを実行するための、または特定の抽象データタイプを実装するためのルーチン、プログラム、オブジェクト、コンポーネント、データ構造などがある。このようなプログラムモジュールなどは、仮想マシンで、または他のジャストインタイムコンパイル実行環境などでネイティブコードとして実行することもできるし、ダウンロードして実行することもできる。一般的には、プログラムモジュールの機能は、様々な環境での所望に応じて、結合または分散することができる。これらのモジュールおよび手法を実装するには、モジュールおよび手法を何らかの形のコンピューター読み取り可能な媒体に保管することもできるし、そのような媒体を介して伝送することもできる。
【００２１】
例示のプロセッサー構成
[0026]図２は、プロセッサーへの作業の割り振りを可能にするためにスレッドスケジューラーでコア保留マスクを作成し、そのマスクを実施するプロセス２００の少なくとも１つの実施形態の流れ図を示している。プロセス２００は論理的な流れ図の中でブロックの集まりとして示されており、ブロックの集まりは、ハードウェア、ソフトウェア、またはそれらの組み合わせで実施できる動作のシーケンスを表している。ソフトウェアのコンテキストでは、ブロックは、１つまたは複数のプロセッサーによって実行されると、列挙された動作を実行するコンピューター実行可能な命令を表している。一般的に、コンピューター実行可能な命令には、特定の機能を実行する、または特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などがある。動作が説明される順序は、限定として解釈するようには意図されておらず、説明されるブロックは、このプロセスを実施するために、任意の数を任意の順序で、および／または並行に結合することができる。本開示の中で説明されるプロセス２００以外のプロセスもそれに応じて解釈すべきものとする。説明の目的で、プロセス２００は、図１のシステム１００を参照しながら説明される。
【００２２】
[0027]図２に示されているように、２０２で、システムメモリーにコア保留マスクが作成される。例えば、２０２で、カーネル電力マネージャー１１４がコア保留マスクを作成することができるが、カーネル電力マネージャー１１４はオペレーティング・システム１０８内に常駐している。例示のコア保留マスク（「ビットマスク」または単に「マスク」）２０４は、対応するコアを表すセルを提供できる。図２に示されているように、例示のシステムは８個のコアを有しているが、使用されるコアはそれより多くても、少なくてもよい。ビットマスク２０４は各セルにビット値を有するが、各セル内で「１」は保留コアを表し、「０」は保留解除コアを表す。保留コアとは、低電力のスリープ状態にされたコアである。一部の実施形態では、保留コアは電力消費がまったくなく、したがって、ゼロ・ワットを消費する。一部の実施形態では、コアは、共用ハードウェア回路などの依存関係を有する。両方のコアを低電力状態にできる場合、依存関係も暗黙に低電力状態にできる。したがって、一方のマスクに比べて電力節約を最大にするコア保留マスクが選択できる。例えば、単一のプロセッサーソケット内のすべてのコアをオフにすると、２つのプロセッサーソケット内のコアの半分をオフにするよりも、より多くの電力を節約できる可能性がある。ビットマスク２０４は、（右から左へ、０から７へ）番号３、５、６および７の４つの保留コアを有する。その結果、コア０、１、２および４は、保留解除コアということになる。
【００２３】
[0028]１つまたは複数の実施形態によれば、２０６で、ビットマスク２０４が反転されて、反転ビットマスク２０８が作成できる。例えば、カーネル電力マネージャー１１４が反転ビットマスク２０８を作成できる。反転ビットマスクは、各セル（すなわち、コア）に対して反転されたビット値を有する。したがって、「１」を指定されたコアはデータを処理するために選択することができ、「０」を指定されたコアはアプリケーションスレッドを処理するために選択することはできない。
【００２４】
[0029]２１０で、カーネルスケジューラー１１６などによってアプリケーションスケジュールが決定される。例えば、コンピューティングデバイス１０２がプログラムモジュール１１０のうちの１つまたは複数を実行中であることは可能である。プログラムモジュール１１０のうちのいくつかは単一スレッドのプログラムを含み、他のプログラムモジュールはマルチスレッドのモジュールを含むことが可能である。一般的に、カーネルスケジューラー１１６は、優先順位、コアの可用性、アフィニティ（スケジューリング制限）および他の要因など、多くの要因に基づいて使用可能なコアに各スレッドをスケジューリングする。スレッドの数が使用可能なコアの数を超えると、カーネルスケジューラー１１６はスレッドを交替させるか、そうでなければ、スレッドを、それらのスレッドが結果的に確実に前進するように（すなわち、プロセッサーによって実行されるように）スケジューリングする。プロセッサー１０４は単一のコア上で１秒間に何回もスレッドを交替させることができ、そのため、カーネルスケジューラー１１６は、使用可能なコアにスレッドを有効にスケジューリングする機会が与えられる。
【００２５】
[0030]多くのプログラムモジュールはスレッドを特定のプロセッサーに割り当てないが、一部の複雑なプログラムモジュールは、スレッドが特定のプロセッサーによって実行されることを必要とし、これは、スレッドのプロセッサーアフィニティを設定すると言われる。プログラムモジュールスレッドアフィニティマスク２１２は、プログラムモジュール１１０によって決定された、スレッドの処理のために要求されるコアを表している。例えば、第１のプログラムモジュールは、スレッドがカーネルスケジューラー１１６によってコア０および１上にスケジューリングされなければならないことを表した第１のアフィニティマスク２１２（１）を有することができる。第２のプログラムモジュールに関連付けられた第２のアフィニティマスク２１２（２）は、スレッドがコア２および３にスケジューリングできることを表すことができ、もう１つのプログラムモジュールは、スレッドが、使用可能なコアのどれにでもスケジューリングできることを表した（すべてのコアが選択されたことが示されている）アフィニティマスク２１２（Ｐ）を有することができる。アフィニティマスク２１２（Ｐ）は、コアへのスレッドの割り振りに事実上制約がないという点で特殊な事例であることに留意されたい。
【００２６】
[0031]一部の実施形態では、２１４で、プログラムモジュールアフィニティマスク２１２が、一度に１つずつ、「ＡＮＤ」演算子２１６を使って反転ビットマスク２０８と結合されて、適格なプロセッサーのセットが決定され、使用可能プロセッサーセット２１８が得られる。２２０で、第１のアフィニティマスク２１２（１）を使用して第１の使用可能プロセッサーセット２１８（１）が作成される。プロセス２００は、各プログラムモジュールに対する（すなわち、反転ビットマスク２０８とアフィニティマスク２１２の各組み合わせに対する）動作２１０、２１４および２２０の反復プロセスを含むことができる。このように、動作２１０、２１４および２２０の第２の反復では、第２のアフィニティマスク２１２（２）を使用して第２の使用可能プロセッサーセット２１８（２）が作成される。
【００２７】
[0032]上述のように、各コア（例えば、コア０、・・・コア７）に対するビット値を使用して、スレッドをスケジューリングするための使用可能プロセッサーセット２１８が決定される。「ＡＮＤ」演算子２１６は、両方のオペランドが、特定のコアに対してスレッドがアフィニティを設定されていることを表す「１」を有している場合にコアビット値「１」（すなわち、１つのコアに対する結合されたビット値）を返す。例えば、第１のアフィニティマスク２１２（１）が反転ビットマスク２０８と結合される時、コア０および１は両方ともアクティブコアであり、コアビット値「１」を返すが、残りのコア２〜７は、第１の使用可能プロセッサーセット２１８（１）に例として示されているようにコアビット値「０」を有する。
【００２８】
[0033]第２のアフィニティマスク２１２（２）はコア３にコア値「１」を有するが、反転ビットマスク２０８は、コア３が保留されることを表している。カーネルスケジューラー１１６は、第２のアフィニティマスク２１２（２）に合わせて反転ビットマスクを上書きすることを選択することができ、そのことは、コア３がコア値「１」を有する第２の使用可能プロセッサーセット２１８（２）に表されており、したがって、反転ビットマスク２０８で保留と指定されているコア（後で保留解除できる）に作業を切り替えることができる。一部の実施形態では、スレッドは任意の数のヒューリスティックを用いてスケジューリングできる。反転ビットマスク２０８を無視して、スレッドのアフィニティに関して最適なコアを使用することができる。最適なコアが保留にされている場合、フォールバックが、優先コアと同じＮＵＭＡ（Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ：非一律メモリーアクセス）ノード内のプロセッサーを選択することを含んでよい。スケジューラーは、コア保留反転マスクをスレッドを実行するための優先場所のヒントとして扱うが、最もパフォーマンスが良い選択肢と思われるものという厳しい制限（厳しいアフィニティ）の中から選択する。
【００２９】
[0034]アフィニティマスク２１２（Ｐ）のようにすべてのコアが使用可能と指定されている場合、プログラムモジュールは、そのマスクはスレッドがどのコアによって実行されることも許容することを示されているので、ビット値は無視できる。アフィニティマスク２１２（Ｐ）は、反転ビットマスク２０８で示されたコアのどれにでも、例えば、コア０、１、２および４に、使用可能プロセッサーセット２１８（Ｐ）で「１／０」を示すコア値で表されるように、スケジューリングされたコアを有することができる（「１／０」は「１」または「０」を表し、アフィニティマスク２１２（Ｐ）の作業をスケジューリングできるためには、少なくとも１つのコアはコア値「１」を有する必要がある）。一部の実施形態では、使用可能プロセッサーセット２１８（Ｐ）は、使用可能なコアへの作業の割り振りを決定する時に、保留解除された、アイドルなコアを選択することができる。作業の切り替えは、作業をコア０、１、２および３に割り振ることができ、したがって、コア４を後の処置で使用せず、おそらく保留のままにすることが理想的である。以下で説明されるように、他を検討することにより、アフィニティマスク２１２（Ｐ）に応じてどのコアが作業を割り振られるかが決定できて、優先場所を作成することができる。例えば、優先場所は、オプショナルのメモリーアクセスパフォーマンスなどの要因に基づいてもよい。
【００３０】
[0035]動作２１０、２１４および２２０を使用して、図２を参照して上述されたように、スレッドをスケジューリングすることができる。加えて、プロセス２００内で動作２１０、２１４および２２０によって他の作業、例えば、遅延プロシージャー呼び出し（ＤＰＣ）、タイマー、割り込みの処理、または他のプロセッサー作業などが実行できる。
【００３１】
[0036]１つまたは複数の実施形態によれば、図２は、タイムスライスを行うためのコアの使い方例２２２を示している。例えば、使用可能プロセッサーセット２１８に基づくアクティブなコアの組み合わせは、制限がなければ１００ミリ秒などの所与の時間チェックインターバルの間、コアの使い方２２２のような結果になり得る。コア使い方２２２のコア４は、上述のように、作業が使用可能プロセッサーセット２１８（Ｐ）のコア４にスケジューリングされるかどうかに応じて「使用」と表示されることもあれば、表示されないこともある。カーネル電力マネージャー１１４から見ると、コアの使い方２２２は、コア４にコア値「０」を有し、したがって、保留解除コアの数が最小になり、その結果、電力消費が減少することが理想的である。コアの使い方２２２に関係なく、次のタイムスライス用に新しいコア保留マスクを作成することができるが、その作成では、コアの使い方２２２からの情報を使用して新しいコア保留マスクを決定することができる。いくつかの事例では、コア２が第２のアフィニティマスク２１２（２）を満足させるに十分な処理利用率を有する可能性があるので、コア３は不要である可能性があるが、コア３はそれでも保留解除コアである。
【００３２】
[0037]図３Ａおよび図３Ｂは、本開示の少なくとも１つの実施形態による例示のコア利用率を示している。より具体的には、図３Ｂは、図３Ａに示された例示のシステムコア利用率に対応した例示の修正版コア利用率を示している。
【００３３】
[0038]１つまたは複数の実施形態によれば、図３Ａは、多数のコア３０２、３０４、３０６および３０８を含むシステム３００を示しているが、システム３００の代替実施形態では、含まれるコアはそれより多くても、少なくてもよい。カーネル電力マネージャー１１４は、電力ポリシーを使用してコアを制御することができる。電力ポリシーはアクティブコアの数を決定することができ、カーネル電力マネージャー１１４が、使用可能なコアのセットをどのように計算できるかに影響を与える可能性がある。電力ポリシーは、使用可能なコアの数を制限するために、またはカーネル電力マネージャー１１４が使用可能コアの数を基準化できるようにするために使用できる。プラットフォームによってサポートされるコアの数は異なるシステム間で違う可能性があり、そのため、いくつのコアが使用可能であるかを前もって知らずにカーネル電力マネージャーがコアの数を指定できるようにするために柔軟な体系が必要である。したがって、一部の実施形態では、使用されるコアの数は、最大コア利用率のパーセンテージで表すことができる。したがって、コアの実装には、コアの数を表す、次に使用可能な数に合わせてパーセンテージを丸めることが必要なことがある。例えば、コア使用パーセントが６０パーセントと計算されることがあるだろう。システムが４つのコアを有している場合、そのパーセントは７５％に丸めることができ、３つのコアが保留解除されて、１つのコアが保留にされる。
【００３４】
[0039]各コアは、コアのパフォーマンス状態とは関係なく、そのコアの合計時間に対する実行時間のパーセンテージとして表される、コアの作業負荷を表すコア利用率（「コア有用性」）３１０を有する。例えば、コア０  ３０２はコア有用性８０％を有することが可能であって、それは、コア「０」の作業負荷最大キャパシティより２０％少ない作業を実行することを表す。したがって、コア有用性１００％は最大キャパシティの作業を実行するコアを表し、０％のコア有用性を有するコアは、使用されないコアを表す。一部の実施形態では、カーネル電力マネージャー１１４はコア有用性３１０を監視することができる。
【００３５】
[0040]加えて、各コアは、パフォーマンス状態（高度な構成および電力インターフェース（ＡＣＰＩ）ｐ状態）３１２を有することができる。ｐ状態３１２は、コア頻度と電圧の設定であり、カーネル電力マネージャー１１４によって制御される。ｐ状態３１２は、モーターのスロットル制御と似ている。１００％というｐ状態３１２はコアの最大パフォーマンス状態を表し、５０％というｐ状態３１２は、最大頻度が半分で、対応するコア電圧レベルが低下したコアを表す。コアの実際の電力消費がｐ状態３１２と一致しない、または比例しないことがあることに留意されたい。例えば、コアのｐ状態３１２を２倍にしても、コアの電力漏洩、コアの基本電力消費および／または他の要因など、他の要因のためにコアの電力消費は２倍にならないことがある。一部の実施形態では、カーネル電力マネージャー１１４が、電力ポリシーを参照することなどにより、ｐ状態３１２を決定および／または制御できる。
【００３６】
[0041]各コアは、合計作業負荷キャパシティに関するコアの作業負荷を表す出力利用率値（「出力有用性」）３１４を有する。例えば、出力有用性３１４は、０〜１０，０００で基準化することができるが、ここで、０は、無の利用率を表し、１０，０００は最大利用率を表す。出力有用性３１４は、コア有用性３１０とｐ状態３１２を乗算することにより算出できる。例えば、コア０  ３０２は、コア有用性８０％およびｐ状態８０％を有しているので、出力有用性は６，４００である。一部の実施形態では、出力有用性３１４は、電力ポリシーを参照するなどしてコア保留決定を決めるため、および／またはｐ状態３１２設定値を決めるためにカーネル電力マネージャー１１４によって使用される。
【００３７】
[0042]一部の実施形態では、システム３００は、コアブロック３１６、例えば、第１のコアブロック３１６（１）および第２のコアブロック３１６（２）を有することができるが、システム３００に実装されるコアブロックはそれより多くても、少なくてもよい。コアブロック３１６は、単一の回路で複数のコアを有するプラットフォーム、例えば、デュアルコアまたはマルチコアプロセッサーを表すことができる。各コアブロック３１６は、固有の電力消費特性を有することができる。例えば、コアは、アクティブレベルの電力消費、コア漏洩、またはブロック内のコアのどちらかが保留解除されている時に発生する他の電力損失を有することができる。例えば、第１のコアブロック３１６（１）内の両方のコアが保留解除されていて、１０，０００の出力有用性を有している場合、結合された電力消費は２ｘワットになり得る。第１のコアブロック３１６（１）内のコア０  ３０２が後で保留にされ（例えば、出力利用率が０である）、コア１  ３０４が変更されないままの場合、コアブロック３１６に関連付けられた、電力漏洩、アクティブな電力消費および／または他の要因などの要因のために、結合された電力消費はｘワットより大きくなる可能性がある。コア１が後で保留にされた場合、結果の電力消費は０ワットになり得る。したがって、他のコアが後で保留にされる前にコアブロック全体が保留になるようにコアを保留し、このように電力節約を最大にすることが有利であろう。
【００３８】
[0043]図３Ａに示されているように、システム３００の例示の実装では、コア３  ３０８は保留にされており、他のコアは保留解除されている（すなわち、アクティブである）。コア３はｐ状態１００％を有しているが、これは、コア３に電力が供給されることを表していないことがある。別の言い方をすれば、カーネル電力マネージャー１１４は、ｐ状態を０％より大きいレベルにしたまま、コアを保留にすることができる。
【００３９】
[0044]利用率のシナリオの一例では、カーネル電力マネージャー１１４は、システム３００の出力を算出して、最大合計システム有用性３０，０００（すなわち、３つの保留解除コア×１０，０００）＝３０，０００）のうち、合計システム有用性１２，６００（すなわち、６，４００＋３，２００＋３，０００＝１２，６００）と決定することができる。上述の中で引用された利用率の数値は、事実上、合計システム有用性を使用して実行できる計算を説明するための数値として意図されているのであって、本開示に限定されるものではない。
【００４０】
[0045]図３Ｂは、修正されたシステム３１８の、図３Ａに示された合計システム利用率に対応した例示の修正版コア利用率を示している。修正されたシステム３１８は、コア３０２、３０４、３０６および３０８の保留／保留解除状態が修正されている。上述のように、システム３００を参照すると、合計システム有用性は、例の中で１２，６００と計算されている。したがって、合計システム有用性が２つのコアの最大利用率キャパシティより小さいので（すなわち、１２、６００＜２０、０００）、カーネル電力マネージャー１１４は、現在の作業負荷の需要を満たすためのシステムの能力を落とさずに追加コアを保留にすることができる。一部の実施形態によれば、カーネル電力マネージャー１１４は、おそらく電力ポリシーまたは他の要因に基づいて、保留にすべきコアを選択できるが、このことは、システムのユーザーには完全に透過にすることができる。ユーザー透過性とは、電力効率の改善という基本目標を除いて、ユーザーが気付くシステムへの影響、またはアプリケーションのパフォーマンスへの影響がないことである。コア保留を実施するために必要な変更は、非常に低レベルのオペレーティング・システム内部コンポーネントに課すことができ、したがって、コア保留に関連した、エンドユーザーに対する動作上または体験上の変更はなくすことができる。
【００４１】
[0046]第２のコアが保留にされると、修正されたシステムの最大合計システム有用性は２０，０００（２コア×１０，０００）に落ちる。カーネル電力マネージャー１１４は、（図３Ａで示された）以前の状態でアクティブであったコアのどれでも保留にすることができる。上述のように、コア２  ３０６を保留にして、第２のコアブロック３１６（２）を完全に保留にして保留コアブロック３２０になるようにすることが有利であろう。したがって、保留コアブロック３２０にすると、コア２  ３０６の代わりにコア０  ３０２またはコア１  ３０４を保留にすることに比べて、電力節約が大きくなる可能性がある。
【００４２】
[0047]システム３１８のユーザーに対する透過の変更に対応するためには、保留コア（コア２）の出力有用性が吸収されるか、残りの保留解除コア（すなわち、コア０およびコア１）に再割り振りされる必要がある。図３Ａから、コア２の出力有用性は３，０００であった。したがって、１つの事例では、保留解除コアは、各コアに、各コアに対して追加出力有用性の１，５００を負担する修正出力有用性３２２を持たせることにより負担を均等に分担することができる。事例によって、有用性を保留解除コアに割り振る時、保留コアの合計有用性の他の分割を行ってもよい。例えば、保留解除コアは、キャパシティ（１０，０００に近い合計有用性であって、これは最大有用性である）の近くで稼働することができる。そのような事例では、より大きい帯域幅を有するコアは、保留コアの合計有用性のより多くを吸収することができる。
【００４３】
[0048]１つまたは複数の実施形態では、カーネル電力マネージャー１１４は、コア０  ３０２およびコア１  ３０４のコア有用性３１０を、それぞれ、７９％および４７％に調整することができる。加えて、カーネル電力マネージャー１１４は、保留解除コアの両方に対してｐ状態３１２を１００％に上げることができる。したがって、修正されたシステム３１８の合計システム有用性は、システム３００の合計システム有用性である１２，６００と等しいままである。
【００４４】
[0049]修正されたシステム３１８は、ユーザーには透過で、一方、修正されたシステム３１８の電力消費は減少させるコア修正に対応するための保留／保留解除状態、コア有用性３１０および／またはｐ状態３１２の１つの可能な修正を示している。しかし、システム３１８には、結果として電力消費を減少させ、結果としてユーザーに透過な多くの他の修正を行うことができる。例えば、コア１  ３０４のコア有用性３１０を９４％に上げ、ｐ状態を５０％に減らして、合計有用性を４７００にすることができる。修正戦略は、カーネル電力マネージャー１１４とカーネルスケジューラー１１６の競合する利害関係を考慮に入れる電力ポリシーによって決定することができる。
【００４５】
[0050]電力ポリシーには、修正されたシステム３１８に影響を与える可能性がある他の考察事項を実装することができる。例えば、時間に敏感でないスレッド（例えば、バックグラウンドスレッド）は、コア保留の決定に、より小さい影響を与える可能性があるが、変更はユーザーに対して透過のままにある。より具体的には、所与のコアで実行される平均実行時間を全スレッド優先度にわたって分散させることを含むことにより、カーネル電力マネージャー１１４は、コアの算出された利用率を、低優先度のスレッドおよび作業負荷が高優先度スレッドおよび作業負荷ほどに重視されないように基準化することができる。
【００４６】
[0051]図４は、スレッドスケジューリングおよびプロセッサーの動的使用を評価し、プロセッサーのための修正された構成を決定する例示のプロセス４００の少なくとも１つの実施形態の流れ図を示している。プロセス４００は、オペレーティング・システム１０８内、および／またはシステムメモリー１０６に常駐している他のモジュールに加え、カーネル電力マネージャー１１４によっても実施できる。
【００４７】
[0052]１つまたは複数の実施形態によれば、カーネル電力マネージャー１１４は、（コア有用性３１０、ｐ状態３１２などのうちから特に）出力有用性３１４を監視する期間を評価する。各スレッドを処理するために使用可能なタイムスライスと等しいか、より長い期間が選択できる。所与の頻度で、カーネル電力マネージャー１１４はコアの監視を開始することができる。
【００４８】
[0053]４０４で、カーネル電力マネージャー１１４は、合計システム利用率および最大合計システム利用率を算出できる。カーネル電力マネージャー１１４は、カーネル電力マネージャー１１４の電力節約の必要性とカーネルスケジューラー１１６のコア可用性（処理パフォーマンス）の必要性とのバランスを取るために、コア使用をどのように調整するかを決定するために電力ポリシー４０６を精査することができる。４０８で、他の要因を使用して、コア使用を調整するか、調整する場合、ユーザーにとって透過な変更などのシステム目標を達成するために、熱要件に対応するために、および／または他の制約に対応するためにどのように調整するかを決定することができる。
【００４９】
[0054]４１０で、カーネル電力マネージャー１１４は、コアの新しい構成を算出できる。例えば、カーネル電力マネージャーは、図２に示されるように、新しいビットマスク２０２を算出できる。１つまたは複数の実施形態では、４１０で、そのビットマスクは、使用可能プロセッサーセット２１８を作成するように調整できる。４１２で、カーネル電力マネージャー１１４は４１０からの構成を実装できる。一部の実施形態では、プロセス４００は、所定の頻度を繰り返すことなどにより、動的コア割り振りの作成を繰り返すことができる。別法として、プロセス４００は、所与の期間にわたる静的コア割り振りを作成してもよい。
【００５０】
例示の動作
[0055]図５は、電力認識スレッドスケジューリングおよびプロセッサーの動的使用を行う例示のプロセス５００の少なくとも１つの実施形態の流れ図を示している。プロセス５００は、プロセスの順序付けおよび実施に関しては図２のプロセス２００と同様に解釈すべきである。例えば、プロセス５００の動作が説明される順序は限定として解釈されるようには意図されておらず、プロセスを実施するために、説明されるブロックは任意の数だけ任意の順に、および／または並列に結合することができる。説明の目的で、プロセス５００は、図１のシステム１００を参照しながら説明される。
【００５１】
[0056]１つまたは複数の実施形態によれば、「ＴｉｍｅＣｈｅｃｋ（時間チェック）」定期評価ルーチンは５０２から始まってよい。例えば、遅延プロシージャー呼び出し（ＤＰＣ）が５０２から始まってよい。一部の実施形態では、各コア上で、時間値を表す電力ポリシーパラメータ「ＴｉｍｅＣｈｅｃｋ」、例えば、１００ｍｓ、５０ｍｓ、または別の時間値などによって構成される固定定期速度で実行されるＤＰＣを介して状態マシンに入る。５０４で、カーネル電力マネージャー１１４はコアに関する指標を収集できる。例えば、ＤＰＣは、アクティブコアの指標のスナップを取るために現在アクティブな各コアに対して待機させられる。指標には、他の可能な指標の中でも特に、コア利用率、スレッド優先順位分散、各コアについて準備済みスレッドの平均待ち時間、および／またはアイドル状態の常駐性について成功と失敗の指標があり得る。
【００５２】
[0057]５０６で、カーネル電力マネージャー１１４はビットマスク、例えば、コア保留マスク２０４などを算出する。例えば、利用率しきい値、電力ポリシー、および／または何らかの依存関係に基づいて、アクティブコアの目標数を表す新しい値が算出できる。５０８で、カーネル電力マネージャー１１４によって統制されているプロセス２００の一部を実施することなどにより、アクティブセットを更新して、使用可能プロセッサーセット２１８を作成することができる。
【００５３】
[0058]５１０で、アクティブセットがオペレーティング・システム１０８によって実装できる。５１２で、カーネル電力マネージャー１１４はコアが追加された（保留解除された）かを判定することができる。コアが保留解除された場合、５１４で、カーネルスケジューラー１１６は通知を受けることができて、スレッドをスケジューリングするために、保留解除されたコアの使用を開始できる。保留解除されたコアは、リモートスレッドスケジューリング（すなわち、異なるプロセッサーから）の目標にもなれるし、または他のプロセッサーからスレッドを選択することを積極的に選択することもできる。一部の実施形態では、保留解除されたコアで実行されるようにスレッドを再割り当てすることができ、それにより、他の保留解除されたコアから作業負荷を減らすことができる。
【００５４】
[0059]５１６で、期待されるコア出力利用率がカーネル電力マネージャー１１４によって算出できて、その期待されるコア出力利用率は５０６からの保留解除コアを含むことができる。したがって、５０６で決定されたアクティブコアの数を表す新しい値を使用して、期待されるプロセッサー利用率が算出される。５１８で、カーネル電力マネージャー１１４は、Ｐ状態を表す新しい値を算出できる。一部の実施形態では、各コア上で、そのコアの目標ｐ状態を更新するためにＤＰＣがスケジューリングされる。一例では、期待される利用率が上がると、５１２でコアが保留解除されていなければ、ｐ状態値も大きくなる可能性がある。しかし、５１２でコアが保留解除されている場合、カーネル電力マネージャー１１４の電力節約の必要性とカーネルスケジューラー１１６の処理の必要性とのバランスを取るために、ｐ状態は大きくなる可能性も、小さくなる可能性もある。
【００５５】
[0060]５２０で、カーネル電力マネージャー１１４は、ｐ状態および／またはｔ状態（線形スロットル状態）の現行値を、５１８での計算結果に基づいて修正すべきかどうかを判定する。ｐ状態および／またはｔ状態が５２０で変更される場合、カーネル電力マネージャー１１４は、５２２で、影響を受けるコアに対する移行ＤＰＣを待機させることができる。したがって、カーネルスケジューラー１１６によってスケジューリングされるスレッドは、５２０で実装された新しいｐ状態および／またはｔ状態で実行されるコアにスケジューリングできる。
【００５６】
[0061]５２４で、カーネル電力マネージャー１１４は、５０６でコアが保留にされたかを判定する。例えば、５１６での期待されるコア出力利用率は、現行利用率より小さい可能性がある。５２４でコアが保留にされた場合、カーネル電力マネージャー１１４は、５２６でカーネルスケジューラー１１６に、新しく保留にされたコアへのスレッドのスケジューリングを終了するように通知する。アクティブコアマスクに追加または除去されたコアの場合、そのコアに対してＤＰＣがスケジューリングされる。図３Ａおよび図３Ｂを参照しながら説明されたように、保留にされたコアからの作業は、１つまたは複数の保留解除コアに再割り振りすることができる。一部の実施形態では、新しく保留にされたコアは、利用可能な最深のｃ状態にすることができる。最後に、５２８でプロセス５００が反復できる。
【００５７】
[0062]図６は、さらにドメインアイドルアカウンティングを含む、電力認識スレッドスケジューリングおよびプロセッサーの動的使用を行う例示のプロセス６００の少なくとも１つの実施形態の流れ図を示している。プロセス６００は、図５で説明されたサブプロセスの多くを含む、したがって、図５からのサブプロセスは再度説明されない。
【００５８】
[0063]６０２で、カーネル電力マネージャー１１４は、ドメインアイドルアカウンティングが使用可能にされているかを判定することができる。ドメインアイドルアカウンティングが使用可能にされている場合、ドメインマスターは、６０４で、そのドメイン（例えば、コアブロック３１６または全コア）の指標のスナップを取る。
【００５９】
[0064]一部の実施形態では、ドメインアイドルアカウンティングは、６９６で、別の決定を開始することができる。ドメインアイドルアカウンティングが使用可能にされている場合、カーネル電力マネージャー１１４は、６０８で、ドメインの目標ｐ状態を算出できる。最後に、６１０でプロセス６００が反復できる。
【００６０】
[0065]図７は、追加の電力ポリシーの設定ならびに電力認識スレッドスケジューリングおよびプロセッサーの動的使用のための他の入力を行うプロセス７００の少なくとも１つの実施形態の流れ図を示している。一部の実施形態では、コア保留は、プロセッサーのパフォーマンス状態に対して使用する目標状態を算出する既存の状態マシンの拡張機能として実施することができる。任意の所与の時点で使用するコアの正しい数は、プロセス７００を参照しながら以下で説明されるように、多くの要因に基づいて決定される。
【００６１】
[0066]１つまたは複数の実施形態によれば、７０２で、現行電力ポリシーを使用して、使用するコアの数を設定することができる。７０４で、コアの最小数または最大数が設定できる。カーネル電力マネージャー１１４は、所与の作業負荷をエネルギー効率の良い方法で完了させるために必要なアクティブコアの数を算出できる。いくつかの事例では、最小数のコアを稼働させることは、電力節約のために有利になり得るし、カーネル電力マネージャー１１４にも利益をもたらし得る。逆に最大数のコアを稼働させることは、最高レベルのパフォーマンスを提供し得て、そのため、カーネルスケジューラー１１６に利益をもたらし得る。
【００６２】
[0067]７０６で、サブプロセス７０６（１）・・・、７０６（４）のうちの１つまたは複数を使用して、カーネル電力マネージャー１１４によってコア保留に関する追加の電力ポリシーパラメータが実装できる。７０６（１）で、コアを保留するため、および／または保留解除するための必要な時間インターバルが調整できる。例えば、コアを保留および／または保留解除する頻度は、インターバルを変更することにより操作できる。一部の実施形態では、コアは第１のインターバルで保留にされて、第２のインターバルで保留解除されることがある。例えば、電力節約を好むポリシーは、１００ｍｓごとという頻繁さでコアを保留し、５００ｍｓごとに保留解除するだけということもあり得る。
【００６３】
[0068]７０７（２）で、カーネル電力マネージャー１１４はポリシーを増加し、および／または減少させることができる。例えば、第１のポリシーオプションは、一度に、設定された数だけのコアを保留することができる。例えば、一度に１つのコアを保留できる。第２のポリシーオプションは、理想のコア利用率を達成するようにコアを保留または保留解除することができ、そのため、一度に複数のコアを保留および／または保留解除する。第３のポリシーは両極端の一方になり得る（できるだけ多くを保留するか、またはできるだけ多くを保留解除する）。
【００６４】
[0069]７０６（３）で、必要な利用率しきい値は、プロセッサーの忙しさに基づいて増やす、または減らすことができる。例えば、プロセッサーは、保留された状態または保留解除された状態の変更を、そのプロセッサー（または他のプロセッサー）が所与の期間にわたって忙しい状態を有するまで、受け入れないことがある。これは、プロセッサーが保留状態と保留解除状態の間で高速に連続して反転することを減らすことができる。
【００６５】
[0070]最後に、７０６（４）で、保留解除コアを基準化するためのポリシーが実施できる。例えば、カーネル電力マネージャー１１４は、現在のアクティブセット内のプロセッサーコアの数に基づいて、理想の目標プロセッサーパフォーマンス状態を算出することができる。電力節約、パフォーマンス、および特定の作業負荷に対する応答性の間で最良のトレードオフを行うには、カーネル電力マネージャー１１４は、より少ない数のプロセッサーをより高いパフォーマンス状態で稼働させるか、または反対に、より多くの数のコアをより低いパフォーマンス状態で稼働させることが有利であろう。
【００６６】
[0071]７０８で、コアおよびシステムヒューリスティックが、サブプロセス７０８（１）および７０８（２）のうちの１つまたは複数を使用して、カーネル電力マネージャー１１４によって実装できる。７０８（１）で、カーネル電力マネージャー１１４は、深いプロセッサーアイドル電力状態（スリープ状態）の成功した使い方に基づいて、必要なアクティブコアの数、およびアクティブに使用中のコアの最適なパフォーマンス状態を算出することができる。これにより、カーネル電力マネージャーは、より深いアイドル状態が、いつ、アクティブな（保留解除されている）コアのセット全体にわたって効果的に使用されないかを検出することができる。電力を節約し、それでもパフォーマンスを提供するには、より多くのコアを保留状態にし、確実に作業が効果的に実行されるように残りのアクティブコアのパフォーマンス状態を上げることが利益をもたらすであろう。
【００６７】
[0072]７０８（２）で、コアへの割り振り（割り当て）準備済みスレッドに対して平均待ち時間を使用することができる。例えば、カーネル電力マネージャー１１４は、準備済み状態のスレッドに対する平均待ち時間の分散を使用することによって必要になるプロセッサーコアの数を算出することができ、その結果、カーネル電力マネージャーは、使用中のコアの数を基準化して、準備済み状態のスレッドが実行できるようになるまでの待機時間を短縮し、このようにしてパフォーマンスおよび応答性を向上させることができる。１つの例において、多数のスレッドが実行される必要がある場合、各コアはスレッドを一度に１つしか処理できないので、コアのｐ状態を減少させながらコアを保留解除することが有利であろう。したがって、いくつかの事例では、コア可用性が高いほど、多数のスレッドを処理することができる。
【００６８】
[0073]７１０で、アイドル状態の依存関係をカーネル電力マネージャー１１４が使用して、コア保留の実装を調整することができる。カーネル電力マネージャー１１４が、どの特定のコアが保留されるべきか、または保留解除されるべきかを選択する時、カーネル電力マネージャー１１４は、最初に、コアのアイドル状態依存関係を調べて、どのコアが電力またはクロックリソースを共用できるかを判定し、共用制御に基づいて、最も電力効率の良い方法でコアを保留または保留解除することを選択できる。
【００６９】
[0074]７１２で、１つまたは複数のコアを保留または保留解除するかを決定する時、パフォーマンスとスロットル状態の関係が検討されてもよい。パフォーマンス状態またはスロットリング制御を共用するコアは、より大きい電力効率を実現するために一緒に保留または保留解除されてよい。
【００７０】
[0075]７１４で、コアブロックの効率に関して、およびより具体的には、新しいコアブロック内で別のコアを保留する前にコアブロックを保留することに関して図３Ａおよび図３Ｂで説明された依存関係のような、コアパッケージ（ブロック）の関係が検討されてもよい。最後に、７１６で、コア保留の検討を実施する時、カーネル電力マネージャー１１４によってメモリーの局所性が使用できる。例えば、共用メモリーバンク（例えば、ＮＵＭＡ（Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ：非一律メモリーアクセス）ノード）を有する物理的プロセッサーパッケージをコアが共用するなどのパッケージ関係を２つ以上のコアが有することができる。共用メモリーバンクは、コアに、共用メモリーバンクを共用しないコアに比べてメモリーアクセス時間を短縮させることができる。
【００７１】
結論
[0076]上述の手法、システムおよび装置は、電力認識スレッドスケジューリングおよびプロセッサーの動的使用を提供することに関する。手法、システムおよび装置は構造上の特徴および／または方法論的な行為に特有な文言で説明されているが、添付の特許請求の範囲は、必ずしも、上述の具体的な特徴または行為に限定されないことを理解されたい。より正確に言えば、上記の具体的な特徴および行為は、そのような手法および装置を実施する方法の例として開示されている。
【図１】
2011515776.tif 000003
【図２】
2011515776.tif 000004
【図３】
2011515776.tif 000005
【図４】
2011515776.tif 000006
【図５】
2011515776.tif 000007
【図６】
2011515776.tif 000008
【図７】
2011515776.tif 000009
【国際調査報告】
2011515776.tif 000010
2011515776.tif 000011