(57)【要約】ソフトウェア・エンティティの優先度に基づいて処理要素の電力および／またはパフォーマンスをスロットリングする方法および装置が本稿で記載される。優先度を考慮する電力管理論理が、ソフトウェア・エンティティの優先度レベルを受け取り、ソフトウェア・エンティティに関連付けられた処理要素の動作点をしかるべく修正する。したがって、電力節約モードにおいて、低優先度のアプリケーション／タスクを実行している処理要素は、より低い動作点、すなわちより低い電圧、より低い周波数、スロットルされた命令発行、スロットルされたメモリ・アクセスおよび／または共有資源へのより少ないアクセス、に低下させられる。さらに、利用論理が潜在的に、優先度レベルごとに資源の利用度を追跡し、これにより電力マネージャは、資源自身の観点から各優先度レベルの互いへの影響に基づいて動作点を決定できる。さらに、ソフトウェア・エンティティ自身が動作点を割り当て、それを電力マネージャが実施してもよい。
2010524087.tif 000002
【特許請求の範囲】
【請求項１】
複数のソフトウェア・エンティティのうち第一のソフトウェア・エンティティに関連付けられる、複数の処理要素のうちの第一の処理要素と；
前記第一のソフトウェア・エンティティの優先度レベルを受け取って、前記第一のソフトウェア・エンティティの優先度レベルに基づいて前記第一の処理要素の動作点を修正する、優先度を考慮する管理論理とを有する、
装置。
【請求項２】
前記第一および第二の処理要素が、コア、スレッドおよびコンテキストからなる群より選択される、請求項１記載の装置。
【請求項３】
前記第一の処理要素の動作点を修正する、優先度を考慮する管理論理が、前記第一の処理要素のレートを修正するためのレート制御論理を含む、請求項１記載の装置。
【請求項４】
前記第一の処理要素の動作点を修正する、優先度を考慮する管理論理が、前記第一の処理要素への共有資源の割り当てを修正するための割り当て制御論理を含む、請求項３記載の装置。
【請求項５】
前記第一の処理要素の動作点を修正することが、前記第一の処理要素の電圧レベルを修正することを含む、請求項１記載の装置。
【請求項６】
前記第一の処理要素の動作点を修正することが、前記第一の処理要素に関連付けられたクロックを変調することを含む、請求項１記載の装置。
【請求項７】
前記第一の処理要素の動作点を修正することが、前記第一の処理要素の周波数を修正することを含む、請求項１記載の装置。
【請求項８】
前記第一の処理要素の動作点を修正することが、前記第一の処理要素のメモリ・アクセス・レートを修正することを含む、請求項１記載の装置。
【請求項９】
前記第一の処理要素の動作点を修正することが、前記第一の処理要素の命令発行レートを修正することを含む、請求項１記載の装置。
【請求項１０】
前記第一の処理要素の動作点を修正することが、前記第一の処理要素に関連付けられた資源の利用量を修正することを含む、請求項１記載の装置。
【請求項１１】
前記資源がキャッシュ・メモリであり、前記資源の利用量を修正することが、前記第一の処理要素によりアクセス可能な前記キャッシュ・メモリの量を修正することを含む、請求項１０記載の装置。
【請求項１２】
前記資源がメモリであり、前記資源の利用量を修正することが、前記メモリへのアクセスの量を修正することを含む、請求項１０記載の装置。
【請求項１３】
前記第一のソフトウェア・エンティティが、オペレーティング・システム、仮想マシン・モニタ（VMM）、仮想マシン（VM）、ユーザー・レベル・アプリケーションおよびゲスト・ソフトウェアからなる群より選択される、請求項１記載の装置。
【請求項１４】
プロセッサを有する装置であって、
前記プロセッサが：
第一のソフトウェア・エンティティに関連付けられる第一の処理要素と；
第二のソフトウェア・エンティティに関連付けられる第二の処理要素と；
前記第一のソフトウェア・エンティティに関連付けられる第一の優先度レベルおよび前記第二のソフトウェア・エンティティに関連付けられる第二の優先度レベルを保持し、ここで、前記第一の優先度レベルは前記第二の優先度レベルより高い、記憶要素と；
前記第一の優先度レベルが前記第二の優先度レベルより高いことに基づいて、前記第一の処理要素の第一の動作点を、前記第二の処理要素の第二の動作点より高い動作点に設定する、優先度を考慮するマネージャとを有する、
装置。
【請求項１５】
前記第一の動作点が、前記第二の動作点における前記第二の処理要素のレートよりも高いレートで前記第一の処理要素を含む、請求項１４記載の装置。
【請求項１６】
前記第一および前記第二の処理要素がコアであり、前記第一の動作点が、前記第二の動作点の第二の電圧および第二の周波数よりも高い第一の電圧および第一の周波数を含む、請求項１４記載の装置。
【請求項１７】
前記第一の処理要素の前記第一の動作点が、キャッシュ・メモリのある第一の数の路（way）へのアクセスを含み、前記第二の処理要素の前記第二の動作点が、前記キャッシュ・メモリのある第二の数の路へのアクセスを含み、路の前記第一の数が路の前記第二の数より大きい、請求項１４記載の装置。
【請求項１８】
第一の優先度レベルに関連付けられた資源の利用度および第二の優先度レベルに関連付けられた前記資源の利用度を示し、ここで、前記第一の優先度レベルは前記第二の優先度レベルより低い、優先度使用論理と；
前記第一の優先度レベルに関連付けられた前記資源の利用度がある所定の利用量を上回ることに応答して、前記第一の優先度レベルのソフトウェア・エンティティに関連付けられるべき第一の処理要素の動作点を低下させる、前記優先度使用論理に結合された、優先度を考慮する管理論理とを有する、
装置。
【請求項１９】
前記第一の処理要素の前記第一の動作点が前記第一の処理要素の第一のレートを含み、前記第二の処理要素の前記第二の動作点が前記第二の処理要素の第二のレートを含み、前記第一のレートが前記第二のレートより大きい、請求項１８記載の装置。
【請求項２０】
前記第一の処理要素の前記第一の動作点が前記資源の第一の割当量を含み、前記第二の処理要素の前記第二の動作点が前記資源の第二の割当量を含み、前記第一の割当量が前記第二の割当量より大きい、請求項１８記載の装置。
【請求項２１】
前記第一の処理要素の前記第一の動作点がキャッシュ・メモリの第一の部分へのアクセスを含み、前記第二の処理要素の前記第二の動作点が前記キャッシュ・メモリの第二の部分へのアクセスを含み、前記第一の部分が前記第二の部分より大きい、請求項１８記載の装置。
【請求項２２】
前記優先度使用論理が、前記第一の優先度レベルに関連付けられた前記キャッシュ・メモリ中のエントリーの第一の数および前記第二の優先度レベルに関連付けられたエントリーの第二の数を追跡する追跡論理を含む、請求項２１記載の装置。
【請求項２３】
前記第一の処理要素の前記第一の動作点がメモリにアクセスするための第一の数のクレジットを含み、前記第二の処理要素の前記第二の動作点が前記メモリにアクセスするための第二の数のクレジットを含み、クレジットの前記第一の数がクレジットの前記第二の数より大きい、請求項１８記載の装置。
【請求項２４】
前記優先度使用論理が、前記メモリにアクセスするための前記第一の処理要素に発行されるクレジットの第三の数および前記メモリにアクセスするための前記第二の処理要素に発行されるクレジットの第四の数を追跡する追跡論理を含む、請求項２３記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサの分野に、より詳細にはコンピュータ・システムにおいてサービス品質（QoS:  Quality  of  Service）を提供することに関する。
【背景技術】
【０００２】
半導体処理および論理設計における進歩は、集積回路デバイス上に存在しうる論理の量の増大を許容してきた。結果として、コンピュータ・システム構成は、システム中の単一または複数の集積回路から、個々の集積回路上に存在する複数コアおよび複数論理プロセッサへと進化してきた。プロセッサまたは集積回路は典型的には単一のプロセッサ・ダイからなる。ここで、プロセッサ・ダイは、コア、スレッドおよび／または論理プロセッサといった処理資源をいくつ含んでいてもよい。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
複数スレッドをもつプロセッサでは、一つのスレッドの振る舞いが同じプロセッサ・コア上の他のスレッドの振る舞いに影響する可能性がある。これはキャッシュ、メモリおよび電力といった資源の共有のためである。しばしば、一つのスレッドの振る舞いが、共有される資源およびパイプラインの使用における不公正さを生じる。実際、一つのスレッドのパフォーマンスが同じコア上の他のスレッドに対して著しく変化するとき、しばしば共有される資源の不釣り合いな使用からの、パフォーマンスにおける大きな予測できない変動性が生じる。
【０００４】
結果として、低優先度のアプリケーションを実行している一つのスレッドまたはコアが潜在的に、より高い優先度のアプリケーションを実行しているコアまたはスレッドのパフォーマンスに悪影響を及ぼす。たとえば、ウイルス・スキャンのようなバックグラウンド・アプリケーションは、フォアグラウンド・アプリケーションを実行している第二のコアのパフォーマンスに悪影響を及ぼすのに十分な共有資源を利用して第一のコア上で実行されることがありうる。以前には、電圧および周波数のスロットリング（throttling）は電力節約のために利用されてきた。しかしながら、これらの努力は典型的には、現在のアプリケーション、仮想マシンまたはオペレーティング・システムのタスクの優先度を顧慮することなくスレッドやコアをスロットリングすることに関わる。これに対し、いくつかの努力は、すべてのアプリケーションにサービス品質を提供するための資源の分配に焦点を当ててきた。しかしながら、優先度や電力消費を顧慮しない分配は、潜在的には悪いパフォーマンスおよび電力使用を引き起こす。
【課題を解決するための手段】
【０００５】
従来技術の課題は請求項記載の手段により解決される。
【０００６】
本発明を例として図示するが、付属の図面の図によって限定されることは意図されていない。
【図面の簡単な説明】
【０００７】
【図１】関連付けられたアプリケーション優先度に基づいて処理要素の動作点を設定する優先度マネージャを含むマルチ処理要素のある実施形態を示す図である。
【図２ａ】処理要素のレートおよび共有される資源の割り当てを修正することのできる電力／パフォーマンス論理のある実施形態を示す図である。
【図２ｂ】処理要素のレートおよびキャッシュ・メモリの割り当てを修正することのできる電力／パフォーマンス論理のある実施形態を示す図である。
【図３】処理要素のレートおよび割り当てメモリ・バンド幅を修正することのできる電力／パフォーマンス論理のある実施形態を示す図である。
【発明を実施するための形態】
【０００８】
以下の記述では、本発明の十全な理解を与えるために、個別的な資源、資源の利用を追跡するための個別的な論理、アプリケーション優先度の個別的な通信などの例といった数多くの個別的な詳細が述べられる。しかしながら、当業者には、これらの個別的な詳細が本発明において実際に用いられる必要はないことは明白であろう。その一方で、マイクロプロセッサ・アーキテクチャ、仮想マシン・モニタ／マシン、電力／クロック・ゲーティング／変調および既知の論理の個別的な動作上の詳細といったよく知られたコンポーネントや方法は、本発明を無用に埋没させるのを避けるために詳細に述べてはいない。
【０００９】
本稿で記載される方法および装置は、処理要素に関連付けられたソフトウェア・エンティティの優先度に基づいて処理要素の電力および／またはパフォーマンスを絞るためのものである。具体的には、優先度（priority）に基づくスロットリング（throttling）は、主として、仮想化環境における複数コアを参照して論じられる。しかしながら、優先度に基づくスロットリングのための方法および装置はそれに限定されるものではなく、携帯電話、携帯情報端末（personal  digital  assistant）、組み込みコントローラ（embedded  controller）、モバイル・プラットフォーム、デスクトップ・プラットフォームおよびサーバー・プラットフォームのようないかなる集積回路デバイスまたはシステム上で、またいかなる集積回路デバイスまたはシステムとの関連で実装されてもよいし、コア、ハードウェア・スレッド、ソフトウェア・スレッドもしくは論理プロセッサまたは他の処理資源といったいかなる型の処理要素と連携して実装されてもよい。さらに、優先度に基づくスロットリングは、ハードウェア上で実行される伝統的なオペレーティング・システムまたはハイパーバイザといったいかなるハードウェア／ソフトウェア環境において生起してもよい。
【００１０】
図１を参照すると、処理要素に関連付けられたソフトウェア・エンティティの優先度に基づいて処理要素をスロットリングする機能のあるプロセッサの実施形態が示されている。ハードウェア１２０はプロセッサ１２５、ハブ１５０およびメモリ１６０を含む。ハブ１２５は、メモリ・コントローラ・ハブまたはチップセットのような、プロセッサ１２１とメモリ１３０との間の通信のためのいかなるデバイスをも含む。ハブ１２５はプロセッサ１２１またはメモリ１３０内に統合されていてもよいことを注意しておく。メモリ１６０はプロセッサ１２５に専用に供されてもよいし、あるいはシステム中の他のデバイスと共有されてもよい。メモリ１６０の例は動的ランダム・アクセス・メモリ（DRAM）、静的RAM（SRAM）、不揮発性メモリ（NVメモリ）および長期記憶装置を含む。
【００１１】
典型的には、プロセッサ１２５は、相互接続上のバス信号を送信および受信するための入出力（I/O）バッファを含む。相互接続（interconnect）の例は、ガニング・トランシーバー論理（GTL:  Gunning  Transceiver  Logic）バス、GTL+バス、倍速データレート（DDR:  double  data  rate）バス、ポンプ・バス（pumped  bus）、差動バス（differential  bus）、キャッシュ・コヒーレント・バス（cache  coherent  bus）、ポイントツーポイント・バス（point-to-point  bus）、マルチドロップ・バス（multi-drop  bus）または任意の既知のバス・プロトコルを実装する他の既知の相互接続を含む。
【００１２】
プロセッサ１２５は、処理要素１３０〜１３３のような複数の処理要素を含む。処理要素（processing  element）とは、スレッド、プロセス、コンテキスト、論理プロセッサ、ハードウェア・スレッド、コアおよび／または、予約ユニット、実行ユニットおよびより高レベルのキャッシュ／メモリなどといったプロセッサの他の共有される資源を共有する任意の処理する要素をいう。処理要素はスレッド・ユニットと称されてもよい。すなわち、ソフトウェア・スレッドによる実行のために独立してスケジューリングされる命令を有することのできる要素である。物理的プロセッサとは、典型的には集積回路のことをいい、これは潜在的にはコアまたはハードウェア・スレッドのような他の処理要素をいくつでも含みうる。
【００１３】
コア（core）はしばしば、独立したアーキテクチャ状態を維持することのできる集積回路上に位置する論理であって、独立して維持される各アーキテクチャ状態が少なくともいくつかの専用実行資源に関連付けられるものをいう。コアとは対照的に、ハードウェア・スレッド（hardware  thread）は典型的には、独立したアーキテクチャ状態を維持することのできる集積回路上に位置する任意の論理であって、独立して維持されるアーキテクチャ状態が実行資源へのアクセスを共有するものをいう
見て取れるように、ある種の処理資源は共有され、他の処理資源はあるアーキテクチャ状態の専用に供される。ハードウェア・スレッドとコアの命名法の間の境界線には重なりがある。しかしながら、しばしば、コアおよびハードウェア・スレッドはオペレーティング・システムおよび管理ソフトウェアによって個々の論理プロセッサと見なされ、該ソフトウェアはそれぞれの論理プロセッサ上での動作を個々にスケジューリングできる。換言すれば、ソフトウェアは物理プロセッサ上の二つのコアまたはスレッドを二つの独立したプロセッサと見なす。さらに、各コアは潜在的には、複数のソフトウェア・スレッドを実行するための複数のハードウェア・スレッドを含む。したがって、処理要素は、コア、スレッド、ハードウェア・スレッドまたは他の要素のような、コンテキストを維持することのできる前述の資源の任意のものを含む。
【００１４】
ハイパーバイザ１１０は、仮想マシン（VM）１０５〜１０７とハードウェア１２０のようなハードウェアとの間のインターフェースを提供するものである。しばしば、ハイパーバイザは、ハードウェア１２０を抽象化して、ハードウェア１２０上で複数の仮想マシンおよび／またはゲスト・アプリケーションが独立して走ることを許容する。仮想マシン１０５〜１０７はオペレーティング・システム、アプリケーション、ゲスト・ソフトウェアまたはハードウェア１２０上で実行される他のソフトウェアでありうる。仮想化環境が例示されているが、ハードウェア１２０は、ハードウェア１２０上で実行される伝統的なオペレーティング・システムのような他のファームウェアおよびソフトウェア環境において存在していてもよい。結果として、任意のタスク、ソフトウェア・プログラム、アプリケーション、ユーザー・レベル・アプリケーション、ゲスト・ソフトウェア、オペレーティング・システム、仮想マシン、仮想マシン・モニタまたは優先度が割り当てられることのできる他の実行可能コードがソフトウェア・エンティティ（software  entity）と称される。
【００１５】
ある実施形態では、処理要素（PE）１３０〜１３３はソフトウェア・エンティティに関連付けられる。第一の例として、ハイパーバイザ１１０および仮想マシン１０５〜１０８のようなソフトウェア・エンティティは、PE  １３０〜１３３に直接割り当てられる、あるいは、PE  １３０〜１３３はハイパーバイザ１１０および仮想マシン１０５〜１０８を実行することに専用に供される。もう一つの例としては、ソフトウェア・エンティティは単にPE  １３０〜１３３による該ソフトウェア・エンティティのためのコード／タスクの実行を通じて、PE  １３０〜１３３に関連付けられる。上記のように、処理要素１２５の例は、コア、スレッド、コンテキスト、論理プロセッサおよびそれらの組み合わせを含む。
【００１６】
ある実施形態では、処理要素１３０のような処理要素の動作点が、処理要素１３０に関連付けられたソフトウェア・エンティティの優先度レベルに基づいて設定される。処理要素の動作点（operating  point）とは、その処理要素のレート／電力レベル、その処理要素に利用可能にされた資源の割り当て／パフォーマンス・レベルまたはそれらの組み合わせをいう。一例として、処理要素の動作点は、クロック、周波数、電圧または電力といった資源を修正して処理要素のレートを変更することによって変えられる。これらの異なる電力および周波数状態は、しばしばP状態またはT状態と称され、動作点を例解する例である。さらに、命令発行（instruction  issue）およびメモリ・アクセス発行（memory  access  issue）のレートのような他の機構も異なる動作点について変更されうる。
【００１７】
追加的な例として、処理要素の動作点は、メモリ、メモリ・バンド幅、キャッシュ、フェッチ・ハードウェア、デコード・ハードウェア、順序外（out-of-order）ハードウェア、予約ハードウェアおよび処理要素によって利用される他の任意の論理／ハードウェアといった共有される資源の割り当てを修正することによって修正される。したがって、処理要素の動作点は、その処理要素のレートおよびその処理要素に利用可能にされる共有資源の割り当ての任意の組み合わせを含む。換言すれば、動作点は、処理要素の、キャッシュのような共有資源ならびに電圧および周波数のようなレート・レベルの割り当て／パフォーマンスを含みうる。
【００１８】
例解すると、処理要素１３０の第一の動作点が完全な電力／電圧、完全なクロック／周波数、共有キャッシュのすべての路（ウェイ［way］）へのアクセスおよびメモリへのアクセスのための禁止されないトークン／クレジットを含み、一方、処理要素１３０の第二の動作点が低下した電圧／電力、低下したクロック周波数、共有キャッシュの一部のみへのアクセスおよびメモリへのアクセスのための禁止されたトークン／クレジットを含むとする。この例は純粋に例示的であるが、動作点が特定のレベルでの資源の任意の組み合わせを含みうることを例証する。
【００１９】
優先度を考慮するマネージャ（priority  aware  manager）１４０は、処理要素１３０に関連付けられたソフトウェア・エンティティの優先度レベルを受け取り、その優先度レベルに基づいて処理要素１３０の動作点を修正する。ある実施形態では、優先度を考慮するマネージャ１４０は、優先度レベルに基づいて処理要素１３０についての動作点を決定する。たとえば、仮想マシン（VM）１０５が、低い優先度を割り当てられるバックグラウンドで走らされるべきウイルス・スキャン・ソフトウェアであり、VM  １０５がPE  １３０を利用して実行されるべきであるとする。ここで、VM  １０５の優先度は、VM  １０５の優先度レベルを示すために記憶要素１３５に記憶される。あるいはまた、VM  １０５を実行するタスクを与えられる際に、PE  １３０の優先度レベルは優先度要素１３５内に保持されうる。PE  １３０に関連付けられているVM  １０５の低い優先度に基づいて、マネージャ１４０はPE  １３０の動作点を低い動作点に修正する。上記のように、より低い動作点は、PE  １３０の、より低い電圧、より低い周波数またはより低い電力のようなより低いレートならびに低下した数のキャッシュ路へのアクセスのような共有資源への低下したアクセスの組み合わせを含みうる。
【００２０】
前記の例をさらに進めて、ハイパーバイザ１１０がPE  １３３上での実行のためにスケジューリングされる高優先度アプリケーションであるとする。マネージャ１４０は、ハイパーバイザ１１０およびPE  １３３について優先度要素１３５に保持されている高い優先度に基づいて、PE  １３３の動作点を、PE  １３０の動作点に比べ、より高い電圧、より高い周波数および／または共有資源への増加したアクセスのようなより高い動作点に設定する。キャッシュおよびメモリ・バンド幅レベルの割り当てのような動作点の他の例は図２および図３を参照してのちに論じる。動作点は、資源を変更するまたは共有資源へのアクセスを修正するためのいかなる既知の方法を通じて設定または修正されてもよい。たとえば、電圧は、回路またはゲーティングを通じて低下されてもよく、一方、クロックは変調され、増倍され、分割され、ゲーティングされ、あるいは抑制されてもよい。
【００２１】
上記では高い優先度および低い優先度といった言い方がされていることを注意されたい。しかしながら、優先度のいかなるレベル、あるいはいかなる数のレベルが使用されてもよい。たとえば、たった二つの優先度レベルがあるのでもよいし、あるいはソフトウェア・エンティティと同じ数の優先度レベルがあってもよい。例解する例として、図１について４つの優先度レベルがあり、ハイパーバイザ１１０は優先度レベル１、すなわち最高の優先度レベルにあり、VM  １０５は最低４の優先度にあり、VM  １０６は優先度レベル２にあり、VM  １０７は優先度レベル３にある。ソフトウェア優先度のハードウェアへの通信は、シリアル番号11/527,222および代理人整理番号42.P24869をもつ同時係属中の出願においてより詳細に議論されている。
【００２２】
もう一つの実施形態では、ソフトウェア・エンティティが、他のソフトウェア・エンティティの優先度レベルを両方とも決定し、他のソフトウェア・エンティティに関連付けられている処理要素に動作点を割り当てる。たとえば、仮想マシン・モニタ（VMM）であってもよいハイパーバイザ１１０は、処理要素１３０上で低優先度VM  １０５のための命令をスケジューリングするとともに、処理要素１３０が低動作点に修正／設定されるべきことを決定する。ここで、処理要素１３０のための選択された動作点がVMM  １１０によって優先度要素１３５に書き込まれ、それはPE  １３０のアーキテクチャ状態レジスタ内にも位置されてもよい。マネージャ１４０は次いで、適切な電力レベル、周波数レベルまたは資源割り当てレベルを修正することによってその動作点を実施する。この例では優先度および動作点を決めるソフトウェア・エンティティとしてVMMが論じられているが、オペレーティング・システムまたは特化したコードのようないかなるソフトウェア・エンティティが優先度レベルおよび／または動作点を決定してもよい。
【００２３】
優先度レベルに基づいて動作点を決定するのに加えて、マネージャ１４０は、潜在的には、資源利用に基づいても動作点を決定する。上記のように、マネージャ１４０はある実施形態では、処理要素のレートおよび処理要素へのハードウェア資源の割り当てを制御する機能をもつ。したがって、マネージャ１４０のポリシーは、ソフトウェア・エンティティ優先度レベルを考慮に入れるのみならず、ソフトウェア・エンティティの他の優先度ソフトウェア・エンティティへの影響をも考慮に入れうる。一例として、VM  １０５、すなわちウイルス・スキャン・ソフトウェアがハイパーバイザ１１０または他の高優先度アプリケーションに影響していない、すなわち電力、周波数、キャッシュ、メモリまたは他の資源といった資源１４５のあまりに多くを利用しているのでない場合、電力マネージャ１４０は、PE  １３０の動作点を低下させないことを決定してもよい。これに対し、VM  １０５を含む優先度レベルが資源１４５のあまりに多くを利用している場合には、電力マネージャ１４０は、VM  １０５の優先度レベルおよび資源１４５の利用度に基づいて、PE  １３０の動作点を低下させてもよい。
【００２４】
したがって、電力／パフォーマンス・マネージャ１４０は、ソフトウェア・エンティティ／処理要素の優先度を決定する、処理要素のレートを決定する、資源のパフォーマンスを決定する、処理要素のレートを設定する、資源のパフォーマンス割り当てを設定する、電力／パフォーマンス管理ポリシーを実装する、あるいはそれらの組み合わせを行うための、中央集中のまたは分散型のいかなる量の論理を含んでいてもよい。
【００２５】
ある実施形態では、資源１４５は、優先度レベルに関連付けられた資源１４５の利用度を示す優先度使用論理（priority  usage  logic）を含む。したがって、より低い優先度レベルが資源１４５のあまりに多く、すなわち資源１４５のある所定量より多くを利用している場合、利用論理は、その過剰利用をマネージャ１４０に対して示す。第一の例として、利用論理は、マネージャ１４０に対して、プロセッサ１２５についての電力予算のどれだけをそのPE  １３０が利用しているかを示す。その電力の量が20%などある閾値を超えていれば、電力マネージャ論理１４０は、PE  １３０の動作点が修正されるべきかどうかを決定する。VM  １０５は低優先度アプリケーションなので、マネージャ１４０は、PE  １３０の電力消費が他のより高い優先度のソフトウェア・エンティティに影響していると判定されるなら、前述したレート制御またはパフォーマンス制御機構をいくつでも使って、PE  １３０の動作点を低下させうる。レート制御機構の追加的な例は、周波数スケーリング、クロック変調、クロック抑制、命令発行スロットリング（instruction  issuance  throttling）、メモリ発行スロットリング（memory  issue  throttling）または他の資源ベースのレート変調技法を含む。
【００２６】
利用論理のもう一つの例は、メモリ・バンド幅論理１５１を含む。図示したように、論理１５１は、優先度レベルに関連付けられたメモリ相互接続上のトラフィックを追跡するために、ハブ１５０内に位置される。ここで、あまりに多くのメモリ・バンド幅が低優先度レベルによって利用されている場合、マネージャ１４０は、その、より低い優先度レベルに関連付けられている、処理要素１３０のような処理要素へのバンド幅割り当てを低下させてもよい。ハブ１５０内に描かれているが、論理１５１はハードウェア１２０内のどこにあってもよい。
【００２７】
図２ａに目を転じると、処理要素レートおよび共有資源割り当てを制御する機能をもつ電力／パフォーマンス論理のある実施形態が示されている。ここで、レート制御モジュール２５５は、処理要素（PE）２５１〜２５４のレートを修正するものである。たとえば、最高動作点において、PE  ２５１は最高の電圧、電力、周波数、クロッキング、命令発行容量およびメモリ・アクセス容量に設定される。しかしながら、動作点がより低い動作点に修正されるとき、前述のレート・ベースの機構の一つまたは複数が低下されうる。たとえば、PE  ２５１のためのクロックのサイクルが抑制されてもよい。PE  ２５１〜２５４のうち一つのPEについての資源の変更は、他のPEに影響しうることを注意しておく。伝統的には、PE  ２５１〜２５４について共通の電圧レールが利用されるが、他のPEに影響することなく単一のPEのレートを制御するよう電圧の独立した変調を許容するため、個々の電力レールが供給されてもよい。
【００２８】
レート・ベースの機構に加えて、電力／パフォーマンス・マネージャ２７５は、より高い優先度のソフトウェア・エンティティのための十分な資源容量を保証するために、共有資源２６０の割り当てを修正してもよい。ここで、モニタ２６５は、共有資源２６０の種々の優先度レベルによる使用を追跡するものである。低い優先度が共有資源２６０のあまりに多くを利用している、すなわち他のより高い優先度レベルに影響している場合、マネージャ２７５は、レート制御２５５を利用して、ソースからの、すなわちその低優先度レベルに関連付けられたPEからの共有資源２６０の利用を低下させうる。対照的に、マネージャ２７５は、割り当て論理２７０を利用して、共有資源２６０の割り当てを低優先度に修正してもよい。
【００２９】
例解すると、PE  ２５１が低優先度のソフトウェア・エンティティに関連付けられており、PE  ２５２がより高い優先度のソフトウェア・エンティティに関連付けられているとする。ある実施形態では、PE  ２５１はデフォルトにより、電力節約のため、より低い動作点に設定される。たとえば、マネージャ２７５は、レート制御２５５を利用して、電力節約のためにPE  ２５１への電圧および周波数を低下させる。もう一つの実施形態では、PE  ２５１は、モニタ２６５によって前記より低い優先度レベルがより高い優先度レベルのパフォーマンスに影響していることが検出されるまでは、通常に動作することを許容される。ここで、モニタ２６５は、前記より低い優先度レベルが共有資源２６０のあまりに多くを利用していることを判別する。結果として、マネージャ２７５は、前記より低い優先度のソフトウェアに関連付けられているPE  ２５１を、より低い動作点に設定する。
【００３０】
上記から、マネージャ２７５は、動作点を低下させるためにいかなるポリシーを実装してもよいことを注意しておく。たとえば、マネージャ２７５は、PE  ２５１が共有資源２６０の一部しか利用できないことを保証するために、電圧および周波数のようなレート制御機構ならびに割り当て論理２７０のような割り当て機構を利用してもよい。換言すれば、前記より高い優先度レベルが、共有資源２６０の少なくとも一部分の利用を保証される。共有資源２６０は、キャッシュ、メモリ、メモリ・アクセス機構または他の既知の共有ハードウェア、ファームウェアもしくはソフトウェアといった、二つ以上の処理要素によって共有される任意の資源を含む。
【００３１】
図２ｂに目を向けると、処理要素のレートおよびキャッシュ・メモリの割り当てを修正する機能をもつ電力／パフォーマンス論理のある実施形態が示されている。キャッシュ２００は、ダイレクト・マッピング・キャッシュ、フル・アソシアティブ・キャッシュまたはセット・アソシアティブ・キャッシュのようないかなる仕方で編成されていてもよい。図示したところでは、キャッシュ２００はK個の路（way）、すなわち４つの路２０５〜２０８をもつセット・アソシアティブ・キャッシュである。諸セット２０１は、それぞれの路内においては同じオフセット位置を含む。ここで、追加的なフィールド２１０〜２１６がキャッシュ２００の各セットに関連付けられ、対応するセット内での位置に関連付けられた優先度レベルを示す。追加的フィールドは、位置、路、セットまたは他の構成といったいかなるエントリーにおける優先度レベルを追跡するために利用されてもよいことを注意しておく。
【００３２】
ある実施形態では、第一の優先度レベルに関連付けられたキャッシュ・ラインがキャッシュ２００にもたらされるとき、カウンタ２２０は第一の優先度レベルについてのカウント値をインクリメントし、第一の優先度レベルに関連付けられたキャッシュ・ラインが追い出されるとき、前記カウント値はデクリメントされる。したがって、第一の優先度レベルに関連付けられたエントリーの第一の数が追跡される。同様にして、キャッシュ２００の利用が、複数の優先度レベルについて追跡されうる。カウンタ２２０によって追跡される種々の優先度の利用レベルに基づいて、マネージャ２３０は優先度レベルについての、すなわちその優先度レベルであるソフトウェア・エンティティに関連付けられている処理要素についての動作点を決定する。
【００３３】
前述したように、前記より低い優先度の諸キャッシュ・ラインに関連付けられた処理要素のようなソース要素のレートが低下させられ、それによりソース要素がキャッシュ２００を利用するレートが減少する。別個に、あるいはレート制御に加えて、マネージャ２３０は、キャッシュ２００の割り当てポリシーを修正してもよい。ここで、マスク２４０に関連付けられたある優先度レベルは、マスク２４０によって示されるキャッシュ２００の諸部分、すなわちいくつかの路へのアクセスを許容される。たとえば、ある低優先度レベルがキャッシュ２００の75%を利用しており、これがキャッシュの25%を利用する高優先度レベルのソフトウェア・エンティティに悪影響を与えているとする。
【００３４】
マネージャ２３０は、マスク２４０を二進値1000に設定する。この二進値1000は前記より低い優先度レベルに関連付けられた処理要素が、キャッシュ２００の路２０５にしかアクセスしえないことを表している。あるいはまた、前記より高い優先度レベルについての動作点は維持され、あるいは向上されてもよい。一例として、マスク２４０は1111に設定されてもよい。この1111はより高い優先度のソフトウェア・エンティティに関連付けられた処理要素がキャッシュ２００のすべての路にアクセスしうることを表している。結果として、より低い優先度レベルはキャッシュ２００の一つの路にのみアクセスが許され、影響される優先度レベルは、干渉なしにアクセスするためのキャッシュ２００の少なくとも３つの路をもつことが保証される。この例では、各優先度レベルについてのマスクの使用を通じて割り当てが実行される。しかしながら、優先度に基づいてキャッシュの一部分を専用に供する、制限するまたは制約するために、いかなる割り当てポリシーおよび論理が利用されてもよい。キャッシュの優先度利用を追跡することは、シリアル番号11/503,633および代理人整理番号42.P24235をもつ同時係属中の出願においてもより詳細に論じられている。
【００３５】
次に図３を参照すると、処理要素のレートおよびメモリのようなデバイスへの割り当てアクセスを修正する機能をもつ電力／パフォーマンス論理のある実施形態が示されている。キャッシュ・メモリと同様に、別個にあるいはレート制御に加えて、マネージャ３３０は、種々の動作点内における共有デバイスへのアクセス・ポリシーをも修正してもよい。ここで、処理要素３０６〜３０９は、メモリ３４０にアクセスするためのリング優先度を利用し、割り当て論理３１５は、種々の優先度レベルに関連付けられたメモリ・アクセスのためのバンド幅の種々の量を割り当てる機能をもつ。リング・アクセス・フォーマットが例示されているが、アクセスの追跡および割り当ては、シリアル相互接続その他について同様の仕方でなされてもよい。
【００３６】
ある実施形態では、クレジットまたは制御優先度待ち行列が、メモリ３４０へのアクセスのために利用される。要素３０６のような処理要素がメモリへのアクセスを要求する。アクセス要求は待ち行列に入れられ、それにより、メモリへのアクセスのため、クレジット／トークンが処理要素３０６に対して発行される。一例として、バンド幅モニタ３２５が、クレジット待ち行列に関連付けられたフィールドを含み、これが、メモリ・アクセス要求に関連付けられる優先度レベルおよび／または処理要素を追跡するために使用されうる。したがって、先に図２に示したように、より高いレベルのキャッシュへのミスおよび／またはメモリへのアクセスの数が、優先度レベルに関連付けられた要求されたクレジットの数によって追跡されうる。
【００３７】
もう一つの例として、バンド幅モニタ３２５は、各優先度レベルに関連付けられるカウンタを含む。特定の優先度レベルからの各アクセスについて、関連付けられたカウンタがインクリメントされる。所定の時間がたって、カウンタがその関連付けられた優先度レベルについての閾値に達していれば、マネージャ３３０に通知される。バンド幅モニタ３２５においては、メモリ・バンド幅、使用またはアクセスを追跡するための他のいかなる既知の論理が利用されてもよい。
【００３８】
マネージャ３３０が、より低い優先度レベルがあまりに多くのメモリ・バンド幅を利用していると通知されるとき、マネージャ３３０はしかるべくPE  ３０６〜３０９のレートを修正し、および／またはPE  ３０６〜３０９へのバンド幅の割り当てを修正しうる。たとえば、パフォーマンス・マネージャ３３０および割り当て論理３１５は、前記より低い優先度レベルに関連付けられた処理要素３０６のような処理要素に対してより少数のクレジット／トークンを許容するよう、クレジットまたは制御優先度待ち行列にバイアスをかける。さらに、サイクル当たりに発行される命令の数を低下させるまたはPE  ３０６の周波数を低下させることによって、ソースにおいて要求されたメモリ・アクセスの量を減少させるなどするよう、PE  ３０６のレートも変更されてもよい。
【００３９】
上記した諸方法、ソフトウェア、ファームウェアまたはコードの諸実施形態は、機械アクセス可能または機械読み取り可能媒体上に記憶された、処理要素によって実行可能な命令またはコードを介して実装されてもよい。機械アクセス可能／読み取り可能媒体は、コンピュータまたは電子システムのような機械によって読むことができる形で情報を提供する（すなわち記憶するおよび／または伝送する）任意の機構を含む。たとえば、機械アクセス可能媒体は、静的RAM（SRAM）または動的RAM（DRAM）といったランダム・アクセス・メモリ（RAM）；ROM；磁気または光学式記憶媒体；フラッシュメモリ・デバイス；電気的、光学的、音響的またはその他の形の伝搬信号（たとえば搬送波、赤外線信号、デジタル信号）等を含む。
【００４０】
本明細書を通じて「一つの実施形態」または「ある実施形態」という言い方は、その実施形態との関連で記述された特定の特徴、構造または特性が本発明の少なくとも一つの実施形態に含まれることを意味する。よって、「一つの実施形態では」あるいは「ある実施形態では」という句が本明細書を通じて随所に現れることは、必ずしもすべてが同じ実施形態を指すものではない。さらに、個別的な特徴、構造または特性は、一つまたは複数の実施形態において、いかなる好適な仕方で組み合わされてもよい。
【００４１】
上記の明細において、個別的な例示的な実施形態を参照して詳細な記述が与えられてきたが、付属の請求項に述べられる本発明の広義の精神および範囲から外れることなく、さまざまな修正及び変更がそれに対してなされうることは明白であろう。したがって、本明細書および図面は、制約するものというよりは例示的な意味に解されるべきものである。さらに、実施形態およびその他の例示的な言辞の上記の使用は、必ずしも同じ実施形態または同じ例を指すのではなく、潜在的には同じ実施形態を指すことがありうるのと同様、異なり、区別される実施形態を指すことがありうる。
【図１】
2010524087.tif 000003
【図２ａ】
2010524087.tif 000004
【図２ｂ】
2010524087.tif 000005
【図３】
2010524087.tif 000006
【国際調査報告】
2010524087.tif 000007
2010524087.tif 000008