(57)【特許請求の範囲】
【請求項１】
電力管理モジュールを含む装置が実行する低電力動作方法であって、
低電力モードに入るための要求を受信し、低電力モードのために１以上の非親和性のソフトウェアスレッドを検出するステップであって、前記非親和性のソフトウェアスレッドはアフィニティが設定されていないソフトウェアスレッドである、ステップと、
マルチコアプロセッサのプロセッサコアのそれぞれについて電力特性又は熱特性を取得するステップと、
取得した電力特性又は熱特性に基づいてプロセッサコアのセットを選択するステップと、
前記マルチコアプロセッサのうち選択されたプロセッサコアのセットにより処理を実行するため、検出された少なくとも１つの非親和性のソフトウェアスレッドにアフィニティを設定するステップであって、前記選択されたプロセッサコアのセットは、前記マルチコアプロセッサに属するプロセッサコアの総数に満たない数のプロセッサコアを含む、ステップと、
前記プロセッサコアのセットにおけるプロセッサコアの数を低減するステップと、
数が低減されたプロセッサコアのセットで実行するため、少なくとも１つの非親和性のソフトウェアスレッドにアフィニティを設定し、前記マルチコアプロセッサのパフォーマンスを低減するステップと、
を含む低電力動作方法。
【請求項２】
前記電力特性又は熱特性が示す現在値が目標値に到達していなかった場合に、前記プロセッサコアのセットにおけるプロセッサコアの数を低減するステップが行われる、請求項１記載の低電力動作方法。
【請求項３】
前記低電力モードが終了した場合に、親和性のソフトウェアスレッドを非親和性のスレッドに変更するステップを更に有する請求項１又は２に記載の低電力動作方法。
【請求項４】
前記マルチコアプロセッサの複数のプロセッサコアの１つで実行するため、前記１以上の非親和性のソフトウェアスレッドを親和性のソフトウェアスレッドに変更するステップを含む、請求項１記載の低電力動作方法。
【請求項５】
低電力モードに入るための要求を受信し、低電力モードのために１以上の非親和性のソフトウェアスレッドを検出する手段であって、前記非親和性のソフトウェアスレッドはアフィニティが設定されていないソフトウェアスレッドである、手段と、
マルチコアプロセッサのプロセッサコアのそれぞれについて電力特性又は熱特性を取得する手段と、
取得した電力特性又は熱特性に基づいてプロセッサコアのセットを選択する手段と、
前記マルチコアプロセッサのうち選択されたプロセッサコアのセットにより処理を実行するため、検出された少なくとも１つの非親和性のソフトウェアスレッドにアフィニティを設定する手段であって、前記選択されたプロセッサコアのセットは、前記マルチコアプロセッサに属するプロセッサコアの総数に満たない数のプロセッサコアを含む、手段と、
前記プロセッサコアのセットにおけるプロセッサコアの数を低減する手段と、
数が低減されたプロセッサコアのセットで実行するため、少なくとも１つの非親和性のソフトウェアスレッドにアフィニティを設定し、前記マルチコアプロセッサのパフォーマンスを低減する手段と
を有する電力管理モジュールを有する装置。
【請求項６】
前記電力特性又は熱特性が示す現在値が目標値に到達していなかった場合に、前記プロセッサコアのセットにおけるプロセッサコアの数を低減する処理が行われる、請求項５記載の装置。
【請求項７】
前記低電力モードが終了した場合に、親和性のソフトウェアスレッドを非親和性のスレッドに変更する手段を更に有する請求項５又は６に記載の装置。
【請求項８】
前記マルチコアプロセッサの複数のプロセッサコアの１つで実行するため、前記１以上の非親和性のソフトウェアスレッドを親和性のソフトウェアスレッドに変更する手段を含む、請求項５記載の装置。
【請求項９】
電力管理モジュールを含む装置に低電力動作方法を実行させるコンピュータプログラムであって、前記低電力動作方法は、
低電力モードに入るための要求を受信し、低電力モードのために１以上の非親和性のソフトウェアスレッドを検出するステップであって、前記非親和性のソフトウェアスレッドはアフィニティが設定されていないソフトウェアスレッドである、ステップと、
マルチコアプロセッサのプロセッサコアのそれぞれについて電力特性又は熱特性を取得するステップと、
取得した電力特性又は熱特性に基づいてプロセッサコアのセットを選択するステップと、
前記マルチコアプロセッサのうち選択されたプロセッサコアのセットにより処理を実行するため、検出された少なくとも１つの非親和性のソフトウェアスレッドにアフィニティを設定するステップであって、前記選択されたプロセッサコアのセットは、前記マルチコアプロセッサに属するプロセッサコアの総数に満たない数のプロセッサコアを含む、ステップと、
前記プロセッサコアのセットにおけるプロセッサコアの数を低減するステップと、
数が低減されたプロセッサコアのセットで実行するため、少なくとも１つの非親和性のソフトウェアスレッドにアフィニティを設定し、前記マルチコアプロセッサのパフォーマンスを低減するステップと、
を含む、コンピュータプログラム。
【請求項１０】
前記電力特性又は熱特性が示す現在値が目標値に到達していなかった場合に、前記プロセッサコアのセットにおけるプロセッサコアの数を低減するステップが行われる、請求項９記載のコンピュータプログラム。
【請求項１１】
前記低電力動作方法は、前記低電力モードが終了した場合に、親和性のソフトウェアスレッドを非親和性のスレッドに変更するステップを更に有する、請求項９又は１０に記載のコンピュータプログラム。
【請求項１２】
前記低電力動作方法は、前記マルチコアプロセッサの複数のプロセッサコアの１つで実行するため、前記１以上の非親和性のソフトウェアスレッドを親和性のソフトウェアスレッドに変更するステップを含む、請求項９記載のコンピュータプログラム。
【請求項１３】
マルチコアプロセッサと電力管理モジュールとを有するシステムであって、前記電力管理モジュールは、
低電力モードに入るための要求を受信し、低電力モードのために１以上の非親和性のソフトウェアスレッドを検出する手段であって、前記非親和性のソフトウェアスレッドはアフィニティが設定されていないソフトウェアスレッドである、手段と、
マルチコアプロセッサのプロセッサコアのそれぞれについて電力特性又は熱特性を取得する手段と、
取得した電力特性又は熱特性に基づいてプロセッサコアのセットを選択する手段と、
前記マルチコアプロセッサのうち選択されたプロセッサコアのセットにより処理を実行するため、検出された少なくとも１つの非親和性のソフトウェアスレッドにアフィニティを設定する手段であって、前記選択されたプロセッサコアのセットは、前記マルチコアプロセッサに属するプロセッサコアの総数に満たない数のプロセッサコアを含む、手段と、
前記プロセッサコアのセットにおけるプロセッサコアの数を低減する手段と、
数が低減されたプロセッサコアのセットで実行するため、少なくとも１つの非親和性のソフトウェアスレッドにアフィニティを設定し、前記マルチコアプロセッサのパフォーマンスを低減する手段と
を有する、システム。
【請求項１４】
前記電力特性又は熱特性が示す現在値が目標値に到達していなかった場合に、前記プロセッサコアのセットにおけるプロセッサコアの数を低減する処理が行われる、請求項１３記載のシステム。
【請求項１５】
前記電力管理モジュールは、前記低電力モードが終了した場合に、親和性のソフトウェアスレッドを非親和性のスレッドに変更する手段を更に有する請求項１３又は１４に記載のシステム。
【請求項１６】
前記電力管理モジュールは、前記マルチコアプロセッサの複数のプロセッサコアの１つで実行するため、前記１以上の非親和性のソフトウェアスレッドを親和性のソフトウェアスレッドに変更する手段を含む、請求項１３記載のシステム。
【請求項１７】
前記電力管理モジュールを記憶する揮発性メモリを有する、請求項１３記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチコアプロセッサの低電力動作の方法及び装置に関する。
【背景技術】
【０００２】
現代のコンピュータシステムの性能は、近年において迅速に増加している。性能が進化している１つの特定の領域は、プロセッサ技術である。今日のコンピュータシステムにおける多くのプロセッサは、複数のコアを含む。マルチコアプロセッサにより提供される処理能力の増加により、サイズにおいて縮小し続けているコンピュータシステムにおいて消費電力量及び熱発生量が増加する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
マルチコアプロセッサにおける処理能力及びコア数が増加し続けるので、電力消費量と熱発生量における低減が重要な課題となる。結果として、電力を節約して熱の発生を低減するために、可能であれば、マルチコアプロセッサを適合させることが望まれる。結果的に、マルチコアプロセッサシステムの電力消費量と熱発生量を減少するための技術が必要とされる。
【課題を解決するための手段】
【０００４】
本発明の実施の形態は、マルチコアプロセッサを利用したコンピュータシステムにおける消費電力量と熱発生量を低減するために設計された技術に向けられる。様々な実施の形態は、コンピュータシステムの低電力モードを初期化し、１以上の親和性が与えられていない（un-affinitized）ソフトウェアスレッド検出し、マルチコアプロセッサのプロセッサコアのセットで実行するため、１以上の親和性が与えられていないソフトウェアスレッドに親和性を与える（affinitize）電力管理モジュールを含む技術を提供し、プロセッサコアのセットは、マルチコアプロセッサの全体のプロセッサコアの数未満のプロセッサコアの数を含む。他の実施の形態が記載及び特許請求される。
【０００５】
マルチコアプロセッサの使用に関して時間を通した進行につれて、アクティブな作業負荷を実行するときの電力消費量は確実に上昇する。マルチコアプロセッサが著しい性能の利点を与える一方、アクティブな作業負荷を実行するときの関連する電力消費量により、コンピュータシステムは、より高い温度で動作し、動作の間のファン及び他の冷却装置の使用により更に多くの雑音を発生する。さらに、多くの普及している現代のオペレーティングシステムは、オンザフライでプロセッサコアを追加及び削除する手段を提供しない。さらに、プロセッサの追加又は削除は、高いオーバヘッド動作を有することがあり、強制された親和化（affinitization）は、たとえば低いオーバヘッドの動作を有することがある。
【０００６】
従来のコンピュータシステムでは、電力消費量を低減するために利用可能な手段は、マルチコアプロセッサの全てのコアを強制的に低い性能の状態（たとえばＰ状態）にし、次いで、電力及び／又は温度を所定のレベル以下に維持するためにコアを調節することである。マルチコアの動作により、利用可能な最大の調節量は、クロックされるコアの漏れが重要であるとき、冷たさ及び静かさの閾値に到達するために電力消費量を低減するのに十分ではないことがある。従来のコンピュータシステムでは、電力を低減するために利用可能な手段は、低電力又はクロックされない状態にコアをアレンジすることである。係るように、アクティブな作業負荷を実行するマルチコアプロセッサの電力消費量を制限するために効果的な手段が今日存在しない。結果的に、本実施の形態で記載される様々な実施の形態は、アクティブな作業負荷を実行するとき、マルチコアプロセッサの電力消費量及び熱発生量を低減する効果的な手段を提供するものであり、マルチコアプロセッサシステムの、冷却され且つ静かな動作が可能となる。
【０００７】
実施の形態は、１以上のエレメントを含む。エレメントは、所定の動作を実行するためにアレンジされる構造を有する。それぞれのエレメントは、設計パラメータ又は性能の制約の所与のセットについて望まれるとき、ハードウェア、ソフトウェア又はその組み合わせとして実現される場合がある。実施の形態は例示を通して所定のアレンジメントで特定のエレメントにより記載されるが、実施の形態は、代替的なアレンジメントにおける他のエレメントの組み合わせを含む場合がある。
【０００８】
「１実施の形態」又は「実施の形態」に対する参照は、実施の形態と共に記載される特定の特徴、構造又は特性が少なくとも１つの実施の形態に含まれることを意味する。明細書における様々な位置におけるフレーズ「１実施の形態では」又は「実施の形態では」の出現は、必ずしも同じ実施の形態を全て参照するものではない。
【図面の簡単な説明】
【０００９】
【図１】本発明に係る装置の１実施の形態を例示する図である。
【図２】本発明に係る１実施の形態の第一のロジックダイアグラムである。
【図３】本発明に係る１実施の形態の第二のロジックダイアグラムである。
【図４】本発明に係る１実施の形態のシステムである。
【発明を実施するための形態】
【００１０】
図１は、１実施の形態の装置を例示する。図１は、装置１００のブロック図を示す。装置１００は、幾つかの実施の形態におけるコンピュータシステムを含む。図１に示されるように、装置１００は、電力管理モジュール１０２、メモリ１０４、オペレーティングシステム１０６、及びコア１０８−１〜１０８−ｍを含むマルチコアプロセッサ１０８のような多数のエレメントを有する。しかし、実施の形態は、この図に示されるエレメント又はコンフィギュレーションに限定されない。
【００１１】
様々な実施の形態では、マルチコアプロセッサ１０８は、１以上のプロセッサコア１０８−１〜１０８−ｍを有する中央処理装置を有する場合がある。プロセッサ１０８は、たとえばＣＰＵ、マルチプロセッシングユニット、ＲＩＳＣ（Reduced  Instruction  Set  Computer）、パイプラインを有するプロセッサ、ＣＩＳＣ（Complex  Instruction  Set  Computer）、ＤＳＰ（Digital  Signal  Processor）等のような任意のタイプの処理装置を含む場合がある。
【００１２】
様々な実施の形態では、メモリ１０４は、任意の適切なタイプのメモリユニット、メモリデバイス、メモリ製品、メモリメディア、ストレージデバイス、ストレージ製品、ストレージメディア及び／又はストレージユニットを含み、たとえば、メモリ、取り外し可能又は取り外し不可能なメディア、揮発性又は不揮発性メモリ又はメディア、消去可能又は消去不可能なメディア、書換え可能又は書換え不可能なメディア、デジタル又はアナログメディア、ハードディスク、フロプティカルディスク、コンパクトディスク・リードオンリメモリ（ＣＤ−ＲＯＭ）、コンパクトディスク・レコーダブル（ＣＤ−Ｒ）、コンパクトディスク・リライタブル（ＣＤ−ＲＷ）、光ディスク、磁気ディスク、光磁気ディスク、取り外し可能なメモリカード又はディスク、各種タイプのデジタルバーサティルディスク（ＤＶＤ）、テープ、カセット等を含む。
【００１３】
オペレーティングシステム（ＯＳ）１０６は、幾つかの実施の形態において、装置１００の各種ハードウェアコンポーネントとユーザとの間のインタフェースを有する。様々な実施の形態では、ＯＳ１０６は、動作の管理及び調整、並びにコンピュータシステム１００のリソースの共有の役割を果たす。幾つかの実施の形態では、ＯＳ１０６は、コンピュータシステム１００で実行される様々なコンピュータアプリケーションのホストとして機能する。たとえば、ＯＳ１０６は、幾つかの実施の形態では、ワシントン州レドモンドのマイクロソフト社（登録商標）によるウィンドウズ（登録商標）オペレーティングシステムを有する場合がある。他の実施の形態が記載及び特許請求される。
【００１４】
様々な実施の形態では、電力管理モジュール１０２は、コンピュータシステム１００の電力及び熱発生を管理するソフトウェアドライバ又はアプリケーションを有する。幾つかの実施の形態では、電力管理モジュール１０２は、たとえば冷却され且つ静かな電力計画すなわち低電力計画のような特定の電力計画へのエントリ及び特定の電力計画の管理を制御するＯＳ１０６下で実行しているソフトウェアドライバを有する。低電力計画は、様々な実施の形態において、アクティブな作業負荷の間のプロセッサの電力消費量を低減する設定可能な計画を有する。電力管理モジュール１０２がコンピュータシステム１００における個別のコンポーネントとして示されているが、ＯＳ１０６の一部としてメモリ１０４に含まれるか、又は任意の他のロケーション又はコンフィギュレーションに含まれる場合があり、記載される実施の形態に含まれる。他の実施の形態が記載及び特許請求される。
【００１５】
幾つかの実施の形態では、電力管理モジュール１０２は、コンピュータシステム１００の低電力モードを初期化するために動作する。低電力モード（又は冷却され且つ静かなモード）は、通常又は従来の動作モードと比較して、コンピュータシステム１００が低減された電力消費量、低減された熱発生量及び低減された雑音量で動作するのを可能にする設定可能な電力計画を有する。
【００１６】
低電力モードの初期化は、検出されたシステムパフォーマンス及び／又はシステム又はコンポーネントの状態に基づいて、ユーザによるボタンの押下から生じるか又は特定の電力計画へのエントリから生じる。たとえば、幾つかの実施の形態では、電力管理モジュール１０２は、コンピュータシステム１００の様々なコンポーネントにより現在発生されている電力消費量及び／又は熱又は雑音レベルに関連する情報を受け、低電力モードに自動的に入る。幾つかの実施の形態では、ユーザは、ハードウェア又はソフトウェアの何れかにおいて、低電力モードをイネーブルにするためにボタンを押下して低電力モードを手動的に始動するか、又は低電力モードのシステムのプリファレンスを有効又は作動することで低電力モードを始動する。他の実施の形態が記載及び特許請求される。
【００１７】
様々な実施の形態では、電力管理モジュール１０２は、アクティブな作業負荷をモニタし、低電力モードに入ることに応じて所定の作業負荷を割り当て直す。たとえば、電力管理モジュール１０２は、コンピュータシステム１００で実行している１以上のアクティブなアプリケーションに関連するソフトウェアスレッドをモニタする。ソフトウェアスレッドは、たとえば、タスクを遂行するために実行される命令を含む。幾つかの実施の形態では、コンピュータシステム１００のようなマルチコアシステムでは、スレッド又はタスクは、同時に（たとえば並列に）実行され、それぞれのプロセッサ１０８又はそれぞれのプロセッサコア１０８−１〜１０８−ｍは、特定のスレッド又はタスクを実行する。幾つかの従来のコンピュータシステムは、スレッドに親和性を与える能力を含み、この能力は、専門化したシステムナレッジが相当な利益を達成するために必要とされることがあるとき、典型的に実現されない。多くの従来のシステムでは、大部分のアプリケーションは、特定のプロセッサについてそれらのタスクに親和性を与えない。たとえば、従来のシステムでは、ＯＳスケジューラは、その自由裁量により、ロジカルプロセッサでソフトウェアスレッドをシンプルに実行させる。別の言い方をすれば、従来のコンピュータシステムにおけるＯＳスケジューラは、全ての利用可能なロジカルプロセッサ（たとえばプロセッサコア１０８−１〜１０８−ｍ）でスレッドをスケジュールする。
【００１８】
電力管理モジュール１０２は、幾つかの実施の形態において、１以上の親和性が与えられていないソフトウェアスレッドを検出するために動作する。たとえば、電力管理モジュール１０２は、スレッドの形成、削除、及び／又はモード変化のため、たとえばＯＳ１０６のようなＯＳ環境を連続的にモニタし、親和性が与えられないスレッドであって、特に断りがなければ親和性を与えることから免除又は除外されたスレッドを識別する。様々な実施の形態では、電力管理モジュール１０２は、マルチコアプロセッサ１０８のプロセッサコアのセット上で実行するため、１以上の親和性が与えられていないソフトウェアスレッドに親和性を与えるために動作する。たとえば、電力管理モジュール１０２は、マルチコアプロセッサ１０８の全体のプロセッサコアの数に満たない数のプロセッサコアで動作するため、１以上の親和性が与えられていないソフトウェアスレッドに親和性を与える。他の実施の形態が記載及び特許請求される。
【００１９】
幾つかの実施の形態では、電力管理モジュール１０２は、低電力モードにあるとき、親和性が与えられていないソフトウェアスレッドに、設定された特定のセットの全ての論理プロセッサへの親和性を連続的に与える。様々な実施の形態では、プロセッサトポロジーが既知であるとき、実行するためにソフトウェアスレッドに親和性が与えられるプロセッサコアのセットは、特定の物理的なプロセッサコアと関連する論理プロセッサを排除するように設定又は選択される。たとえば、パワーマネージメントモジュール１０２は、マルチコアプロセッサ１０８のプロセッサコア１０８−１〜１０８−ｍのそれぞれの電力特性又は熱特性を検出し、電力特性又は熱特性に基づいて親和性を与えるために使用されるプロセッサコアのセットを選択するために動作する。
【００２０】
幾つかの実施の形態では、低電力モードの起動の結果として所定のコアで作業をスケジュールするのをＯＳスケジューラが停止したとき、コアは、必然的にアイドル状態になり、プロセッサを低電力状態にする。これは、たとえば少ない数のプロセッサコアでの高い利用となり、コンピュータシステム１００の全体のパフォーマンスは、電力消費量、熱発生量及び雑音発生量と共に低減される。さらに、幾つかの実施の形態では、電力管理モジュール１０２は、プロセッサコアの選択されたセットにおけるプロセッサコアの数を連続的に低減し、低減されたセットのプロセッサコアで実行するため、１以上の親和性が与えられていないソフトウェアスレッドに親和性を与え、電力消費量並びに熱及び雑音の発生量を連続的に低減する。
【００２１】
様々な実施の形態では、コンピュータシステムの最低電力の動作は、全てのソフトウェアスレッドに１つのプロセッサコアへの親和性を与えることで始動され、プロセッサのホットリムーブ動作（hot  remove  operation）により達成される動作を効果的にエミュレートする。たとえば、電力管理モジュール１０２は、幾つかの実施の形態では、マルチコアプロセッサ１０８の複数のプロセッサコア１０８−１〜１０８−ｍのうちの１つで実行するため、１以上の親和性が与えられていないソフトウェアスレッドに親和性を与えるために動作する。
【００２２】
全てのソフトウェアスレッドに１つのプロセッサコアへの親和性を与えることで、コンピュータシステム１００の低減された電力消費量、並びに熱及び雑音の発生量となる。しかし、幾つかの実施の形態では、電力消費量並びに熱及び雑音の発生量は、ひとたび効果的な１つのコアの動作が達成されると、プロセッサのパフォーマンスの状態のＯＳ１０６の利用を設定された数の低いパフォーマンスの状態に低減することで更に低減される。たとえば、電力管理モジュール１０２は、スレッドの親和化のために選択されたプロセッサコアのセットにおける１以上のプロセッサコア１０８−１〜１０８−ｍのプロセッサコアの状態を低減するために動作する。様々な実施の形態では、低電力動作は、残りのコアについてＯＳのＰ状態の使用を１つの最低電力のＰ状態に制限することで達成される。他の実施の形態が記載及び特許請求される。
【００２３】
幾つかの実施の形態では、１つのプロセッサコアで実行するために全てのスレッドに親和性が与えられ、そのコアがその最低のＰ状態で動作している、リニアスロットリング（linear  throttling）を使用して、更なるアクティブな作業負荷の電力の低減が達成される。たとえば、電力管理モジュール１０２は、プロセッサコアのセットにおいて１以上のプロセッサコアにリニアスロットリングを適用するために動作する。様々な実施の形態では、リニアスロットリング動作自身は、システムのパフォーマンスに影響を及ぼす電力コストを有する。結果として、利用が検出され、たとえば利用が設定可能な閾値を超えて上昇したときにのみスロットリングが適用される。たとえば、電力管理モジュール１０２は、利用の閾値に基づいてリニアスロットリングを適用するために動作する。
【００２４】
幾つかの実施の形態では、利用率の閾値は、システムのプラスに戻るポイント（たとえばスロットリングが電力を増加せず、電力が減少するポイント）で設定される。
【００２５】
図２は、ロジックフロー２００の１実施の形態を例示する。ロジックフロー２００は、様々なシステム及び／又は装置により実行され、所与のセットの設計パラメータ又はパフォーマンスの制約について要望に通りに、ハードウェア、ソフトウェア、ファームウェア及び／又はその組み合わせとして実現される場合がある。たとえば、１以上のロジックフロー２００の動作は、ロジックデバイス（たとえばコンピュータ、プロセッサ）により実行されるべき実行可能なプログラミング又はコンピュータ読み取り可能な命令により実現される。ロジックフロー２００は、装置１００及び電力節約モジュール１０２を参照して上述された電力節約機能を説明する。
【００２６】
様々な実施の形態では、ステップ２０２で低電力モジュールとなるか、初期化される。たとえば、ユーザは、ボタンを押下することで、又はさもなければコンピュータシステムで低電力モードに入る要求を示すことで低電力モードを選択する。ステップ２０４で、１以上のソフトウェアスレッドが検出される。たとえば、デバイスドライバ又は他のアプリケーションプログラムは、マルチコアプロセッサによる実行のためにスケジュールされるソフトウェアスレッドを連続してモニタして検出するために構成される。ステップ２０６で、検出されたソフトウェアスレッドに親和性が与えられるか否かに関して判定が行われる。１以上のスレッドに既に親和性が与えられているか又は親和性を与えることから免除又は排除されている場合、これらのスレッドに親和性を与えることは変更されない。親和性が与えられないスレッドが検出されない場合、ソフトウェアスレッドの連続的なモニタ及び検出が行われる。
【００２７】
幾つかの実施の形態では、１以上のスレッドに親和性が与えられない場合であって、親和性を与えることから免除又は排除されている場合、スレッドは、ステップ２０６で親和性が与えられる。たとえば、親和性が与えられないスレッドは、マルチコアプロセッサの全体の利用可能なコアの数に満たない数のコアでの実行のためにスケジュールされる。検出された親和性が与えられていないスレッドの強制された親和化に続いて、ステップ２１０で、静的又は動的な設定が有効にされるか及び／又は望まれるかに関する判定が行われる。たとえば、予め決定されたパフォーマンスの基準を含む静的な設定が選択される場合があり、又は、結果として得られる設定にかかわらず適合されるパフォーマンスの目標を含む動的な設定が選択される場合がある。他の実施の形態が記載及び特許請求される。
【００２８】
静的な設定が選択された場合、ステップ２２２で、残りのプロセッサ又はプロセッサコアについて予め決定されたパフォーマンスの状態（たとえばＰ状態）が選択される。ステップ２２４で、最低のＰ状態が選択されているかに関する判定が行われ、選択されている場合、ステップ２２６で、利用の閾値に到達しているかに関する判定が行われる。到達している場合、ステップ２２８で、スロットリングが適用される。他の実施の形態が記載及び特許請求される。
【００２９】
様々な実施の形態において、動的な設定が選択された場合、ステップ２１２で、より多くの電力の節約が望まれるか、或いは達成された熱又は音の目標値が満足されているかに関する判定が行われる。更なる電力の節約が望まれるか又は目標値に到達していない場合、ステップ２１４で、ソフトウェアスレッドの親和化のために選択されたコアのパフォーマンスの状態（たとえばＰ状態）が低減される。様々な実施の形態では、更なる電力の節約が望まれるか、或いは電力、熱又は音の目標値に未だ到達していないかが判定される。更なる電力の節約が望まれるか、或いは目標値に到達していない場合、ステップ２１８で、利用の閾値を超えているか否かに関する判定が行われ、超えている場合、ステップ２２０で、リニアスロットリングが適用される。
【００３０】
幾つかの実施の形態では、動的な設定は、目標値に到達するまで、論理プロセッサを連続して利用するためにスレッドに親和性を与えることを含む。たとえば、動的な設定は、目標値に到達するまで、利用されるコアの数における連続的な低減を含む。他の実施の形態が記載及び特許請求される。
【００３１】
様々な実施の形態では、低電力モードは、限定されないが、たとえばユーザが終了を選択したか又はパフォーマンスに基づいた終了を含めて、幾つかの理由のために任意の時間で終了される。幾つかの実施の形態では、低電力モードからの終了は、ステップ２４０で検出される。様々な実施の形態では、終了は、たとえばスロットリング及びＰ状態及びコアの使用が取り消されたとき、及び／又は目標値に到達したときといった、動的な設定で行われる。低電力モードからの終了の場合、親和性が与えられたスレッドは、ステップ２４２で親和性が与えられなくなり、システムは、ステップ２４４で通常の動作を再開する。他の実施の形態が記載及び特許請求される。
【００３２】
所定の実施の形態はソフトウェアスレッドの観点で記載されたが、任意の数のスレッド及び任意の数のマルチコアプロセッサのコアを使用することができ、記載された実施の形態に含まれる。さらに、幾つかの実施の形態では、ロジックフロー２００は、実質的に同時に複数のスレッドを処理して複数のコアを制御することを含めて、並列にタスクを実行するために実現又は構成されることを理解されるべきである。さらに、ロジックフロー２００はロジックフローのほんの一例であり、ロジックフロー２００に記載される動作の異なる数、順序及び／又はアレンジメントが実現され、記載された実施の形態に含まれることを理解されたい。他の実施の形態が記載及び特許請求される。
【００３３】
図３は、１実施の形態の第二のロジックフロー３００を例示する。ロジックフロー２００を参照して上述されたように、ロジックフロー３００は、様々なシステム及び／又は装置により実行され、所与のセットの設計パラメータ又はパフォーマンスの制約について要望通り、ハードウェア、ソフトウェア、ファームウェア及び／又は任意の組み合わせとして実現される。たとえば、ロジックフロー３００の１以上の動作は、ロジックデバイス（たとえばコンピュータ、プロセッサ）により実行されるべき実行可能なプログラミング又はコンピュータにより読取り可能な命令により実現される。
【００３４】
１実施の形態では、ステップ３０２で、低電力モードが初期化される。たとえば、電力管理モジュール１０２は、コンピュータシステム１００について、低電力、すなわち冷却され且つ静かな動作モードを初期化する。ステップ３０２で、１以上の親和性が与えられていないソフトウェアスレッドが検出される。たとえば、電力管理モジュール１０２は、マルチコアプロセッサ１０８による実行のためにスケジュールされる１以上の親和性が与えられていないソフトウェアスレッドを検出する。
【００３５】
様々な実施の形態では、１以上の親和性が与えられていないソフトウェアスレッドは、ステップ３０６で、マルチコアプロセッサのうちのプロセッサコアのセットで実行するために親和性が与えられる場合がある。幾つかの実施の形態では、プロセッサコアのセットは、マルチコアプロセッサのうちの全体のプロセッサコアの数に満たない数のプロセッサコアを有する。たとえば、１実施の形態では、１以上の親和性が与えられていないソフトウェアスレッドは、マルチコアプロセッサ１０８の複数のプロセッサコア１０８−１〜１０８−ｍのうちの１つで実行するために親和性が与えられる。他の実施の形態が記載及び特許請求される。
【００３６】
幾つかの実施の形態では、電力特性及び／又は熱特性は、マルチコアプロセッサのうちのプロセッサコアのそれぞれについて検出され、プロセッサコアのセットは、電力特性及び／又は熱特性に基づいて選択される。たとえば、電力管理モジュール１０２は、様々なコンピュータシステム１００のコンポーネントをモニタし、コンポーネントの特性に基づいてソフトウェアスレッドに親和性を与えるために使用されるプロセッサコア１０８−１のセットを選択する。
【００３７】
様々な実施の形態では、プロセッサコアのセットにおけるプロセッサコアの数は、連続して低減され、１以上の親和性が与えられていないソフトウェアスレッドは、低減されたセットのプロセッサコアで実行されるために親和性が与えられる。たとえば、電力管理モジュール１０２は、マルチコアプロセッサ１０８、及びマルチコアプロセッサ１０８により実行されるか又はマルチコアプロセッサ１０８による実行のためにスケジュールされるソフトウェアスレッドを連続してモニタするために動作し、正当ならば、ソフトウェアスレッドの親和化のために使用される選択されたコアのセットを更に低減する。
【００３８】
幾つかの実施の形態では、スレッドの親和化を使用して達成された節約に加えて、更なる電力の節約が望まれるとき、プロセッサコアのセットにおける１以上のプロセッサコアのパフォーマンス状態が低減される。たとえば、マルチコアプロセッサ１０８の１つのコアが複数のソフトウェアスレッドを実行するために使用されている場合、１つのコアのＰ状態を低減することで、更なる電力の節約が達成される。リニアスロットリングがプロセッサコアのセットにおける１以上のプロセッサコアに適用される場合、なお更なる電力の節約が達成される。様々な実施の形態では、リニアスロットリングは、利用率の閾値に基づいて適用される。
【００３９】
図４は、例示的なシステムの実施の形態の図である。特に、図４は、様々なエレメントを含むシステム４００を示す図である。たとえば、図４は、システム４００が、プロセッサ４０２、チップセット４０４、入力／出力（Ｉ／Ｏ）装置４０６、（ダイナミックＲＡＭ（ＤＲＡＭ）のような）ランダムアクセスメモリ（ＲＡＭ）、及びリードオンリメモリ（ＲＯＭ）４１０、様々なプラットフォームコンポーネント４１４（たとえばファン、クロス流れブロワー、ヒートシンク、ＤＴＭシステム、クーリングシステム、ハウジング、ベント等）を含むことを示す。これらのエレメントは、ハードウェア、ソフトウェア又は任意の組み合わせで実現される。しかし、実施の形態は、これらのエレメントに限定されない。
【００４０】
図４に示されるように、Ｉ／Ｏ装置４０６、ＲＡＭ４０８及びＲＯＭ４１０は、チップセット４０４を経由してプロセッサ４０２に結合される。チップセット４０４は、バス４１２によりプロセッサ４０２に結合される。したがって、バス４１２は、多数のラインを含む場合がある。
【００４１】
プロセッサ４０２は、１以上のプロセッサコアを含む中央処理装置であり、任意の数のプロセッサコアを有する任意の数のプロセッサを含む。プロセッサ４０２は、たとえばＣＰＵ、マルチプロセッシングユニット、ＲＩＳＣ（Reduced  Instruction  Set  Computer）、パイプラインを有するプロセッサ、ＣＩＳＣ（Complex  Instruction  Set  Computer）、ＤＳＰ（Digital  Signal  Processor）等のような任意のタイプの処理装置を含む。
【００４２】
図示されないが、システム４００は、Ethernet（登録商標）インタフェース及び／又はUSB（Universal  Serial  Bus）インタフェース等のような様々なインタフェース回路を含む。幾つかの例示的な実現では、I/O装置４０６は、システム４００にデータ及びコマンドを入力するインタフェース回路に接続される１以上の入力装置を有する。たとえば、入力装置は、キーボード、マウス、タッチスクリーン、トラックパッド、トラックボール、アイソポイント、音声認識システム等を含む。同様に、I/O装置４０６は、オペレータに情報を出力するインタフェース回路に接続される１以上の出力装置を有する。たとえば、出力装置は、望まれる場合、１以上のディスプレイ、プリンタ、スピーカ、及び／又は他の出力装置を含む。たとえば、出力装置のうちの１つは、ディスプレイである。ディスプレイは、陰極線管（CRT）、液晶ディスプレイ（LCD）、又は任意のタイプのディスプレイである。
【００４３】
システム４００は、ネットワークへのコネクションを介して他の装置とデータをやり取りするため、有線又は無線ネットワークインタフェースを有する。ネットワークコネクションは、Ethernet（登録商標）コネクション、デジタル加入者回線（DSL）、電話回線、同軸ケーブル等のような任意のタイプのネットワークコネクションである。ネットワークは、インターネット、電話ネットワーク、ケーブルネットワーク、無線ネットワーク、パケット交換網、回線交換網等のような任意のタイプのネットワークである。
【００４４】
様々な特定の詳細は、実施の形態の全体的な理解を提供するために説明された。しかし、実施の形態はこれらの特定の詳細なしに実施される場合があることを当業者により理解されるであろう。他の例では、公知の動作、コンポーネント及び回路は、実施の形態を曖昧にしないように詳細に記載されていない。本実施の形態で開示された特定の構造的及び機能的な詳細は、代表的なものであって、必ずしも本実施の形態の範囲を制限するものではないことを理解されたい。
【００４５】
様々な実施の形態は、ハードウェアエレメント、ソフトウェアエレメント又は両者の組み合わせを使用して実現される。ハードウェアエレメントの例は、プロセッサ、マイクロプロセッサ、回路、回路素子（たとえばトランジスタ、抵抗、キャパシタ、インダクタ等）、集積回路、特定用途向け集積回路（ASIC）、プログラマブルロジックデバイス（PLD）、デジタルシグナルプロセッサ（DSP）、フィールドプログラマブルゲートアレイ（FPGA）、ロジックゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセット等を含む。ソフトウェアの例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、機能、方法、手順、ソフトウェアインタフェース、アプリケーションプログラムインタフェース（API）、命令のセット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、又はその任意の組み合わせを含む。実施の形態がハードウェアエレメント及び／又はソフトウェアエレメントを使用して実現されるかに関する判定は、所望の計算速度、電力レベル、熱耐性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバス速度、及び他の設計又はパフォーマンスの制約のような任意の数のファクタに従って変化する。
【００４６】
幾つかの実施の形態は、表現「結合される“coupled”」及び「接続される“connected”」をそれらの派生語と共に使用して記載される。これらの用語は、互いについて類語として意図されない。たとえば、幾つかの実施の形態は、２以上のエレメントがダイレクトに物理的又は電気的に接触することを示すため、用語「接続される“connected”」及び／又は「結合される“coupled”」を使用して記載される。しかし、用語「結合される“coupled”」は、２以上のエレメントが互いにダイレクトに接触していないが、依然として協働又は互いに相互作用することを意味する。
【００４７】
幾つかの実施の形態は、たとえば、コンピュータ又はプロセッサにより実行された場合、実施の形態に係る方法及び／又は動作をコンピュータ又はプロセッサに実行させる命令、命令のセット又はコンピュータ実行可能なコードを使用して実現される。係るコンピュータは、たとえば任意の適切な処理プラットフォーム、コンピューティングプラットフォーム、コンピューティング装置、処理装置、コンピューティングシステム、処理システム、コンピュータ、プロセッサ等を含み、ハードウェア及び／又はソフトウェアの任意の適切な組み合わせを使用して実現される。コンピュータ読み取り可能な媒体又は製品は、たとえば、任意の適切なタイプのメモリユニット、メモリデバイス、メモリ製品、メモリメディア、ストレージデバイス、ストレージ製品、ストレージメディア及び／又はストレージユニットを含み、たとえば、メモリ、取り外し可能な又は取り外し不可能なメディア、揮発性又は不揮発性メモリ又はメディア、消去可能又は消去不可能なメディア、書換え可能又は再書換え可能なメディア、デジタル又はアナログメディア、ハードディスク、フロプティカルディスク、コンパクトディスク・リードオンリメモリ（ＣＤ−ＲＯＭ）、コンパクトディスク・レコーダブル（ＣＤ−Ｒ）、コンパクトディスク・リライタブル（ＣＤ−ＲＷ）、光ディスク、磁気メディア、光磁気メディア、取り外し可能なメモリカード又はディスク、各種のタイプのデジタルバーサティルディスク（DVD）、テープ、カセット等を含む。命令は、任意の適切な高水準、低水準、オブジェクト指向、ビジュアル、コンパイル及び／又は解釈されたプログラミング言語を使用して実現される、ソースコード、コンパイルされたコード、解釈されたコード、実行可能なコード、スタティックコード、ダイナミックコード、暗号化されたコード等のような任意の適切なタイプのコードを含む。
【００４８】
特に断りがない限り、「処理“processing”」、「計算“computing”」、「計算“calculating”」、「決定“determining”」等のような用語は、コンピューティングシステムのレジスタ及び／又はメモリ内の（たとえば電子的な）物理量として表されるデータを、コンピューティングシステムのメモリ、レジスタ又は他の係る情報ストレージ、送信又は表示装置内の物理量として同様に表される他のデータに処理及び／又は変換するコンピュータ又はコンピューティングシステム、又は類似の電子計算装置の動作及び／又は処理を示す。実施の形態は、この環境に限定されない。
【００４９】
なお、本実施の形態で記載される方法は、記載された順序で実行される必要はなく、任意の特定の順序で実行される場合がある。さらに、本実施の形態で識別される本方法に関して記載される様々なアクティビティは、シリアル又はパラレルな方式で実行することができる。
【００５０】
特定の実施の形態が本実施の形態で図示及び記載されたが、同じ目的を達成するために計算された任意のアレンジメントが図示された特定の実施の形態について置き換えられることを理解されたい。この開示は、様々な実施の形態の何れか及び全ての適合又は変形をカバーすることを理解されたい。先の記載は、限定的な方法ではなく例示的な方法で行われることを理解されたい。先の実施の形態の組み合わせ、及び本実施の形態で特に記載されていない他の実施の形態は、先の記載を検討することに応じて当業者にとって明らかであろう。したがって、様々な実施の形態の範囲は、先の構成、構造及び方法が使用される任意の他のアプリケーションを含む。
【００５１】
この開示の要約は、技術的な開示の特徴を読者が迅速に確認するのを可能にする要約書を要求している37C.F.R.§1.72(b)に準じて提供される。要約書は、請求項の範囲又は意味を解釈又は制限するために使用されないことを理解されたい。さらに、上述された詳細な説明において、この開示をストリーミングするために１つの実施の形態において様々な特徴が互いにグループ化されることがわかる。この開示の方法は、特許請求される実施の形態がそれぞれの請求項において明示的に引用されるよりも多くの特徴を必要とするという意図を反映するものとして解釈されるべきではない。むしろ、以下の特許請求の範囲は、１つの開示される実施の形態の全ての特徴に満たない本発明の対象を反映する。したがって、以下の特許請求の範囲は、発明の詳細な説明に盛り込まれ、それぞれの請求項は、個別の好適な実施の形態を意味する。特許請求の範囲では、用語「含む“include”」及び「そこで“in  which”」は、それぞれの用語「備える“comprising”」及び「そこで“wherein”」の分かりやすい英語の等価な用語として使用される。さらに、用語「第一“first”」、「第二“second”」及び「第三“third”」等は、ラベルとして使用され、それらの対象に対する数値的な要件を課すことが意図されない。
【００５２】
対象は構造的な特徴及び／又は方法の動作に特化した言語で記載されているが、特許請求の範囲で定義される対象は、必ずしも上述された特定の特徴又は動作に限定されるものではないことを理解されたい。むしろ、上述された特定の特徴及び動作は、請求項を実現するために例示的な形式として開示される。
【符号の説明】
【００５３】
４００：システム
４０２：プロセッサ
４０４：チップセット
４０６：I/O装置
４０８：RAM
４１０：ROM
４１４：プラットフォームコンポーネント
【図１】
0005746271.tif 000002
【図２】
0005746271.tif 000003
【図３】
0005746271.tif 000004
【図４】
0005746271.tif 000005