(57)【特許請求の範囲】
【請求項１】
第１のプロセッサ要素と、
第２のプロセッサ要素と、
タスクを受信し、前記第１のプロセッサ要素および前記第２のプロセッサ要素のうち一方がターボモードにあり、前記第１のプロセッサ要素および前記第２のプロセッサ要素のうち他方がアイドルモードにある場合に、タスクを実行するために前記ターボモードにあるプロセッサ要素を選択した場合のアクティブ性能損失、及び、タスクを実行するために前記アイドルモードにあるプロセッサ要素を選択した場合のウエイキング性能損失を比較することによる潜在的な性能損失の比較に基づいて前記第１のプロセッサ要素及び第２のプロセッサ要素のうちの一方を、前記タスクを実行するプロセッサ要素として選択するタスクルーティングロジックと、
を備える装置。
【請求項２】
前記タスクルーティングロジックに連結されて、
前記ターボモードにあるプロセッサ要素の動作周波数の低下量と共に、タスクを実行するために前記アイドルモードにあるプロセッサ要素を選択した場合の潜在的な前記ウエイキング性能損失の決定に用いる、前記ターボモードにあるプロセッサ要素の実行中のプログラムの周波数スケーラビリティファクタに関する情報を格納するメモリをさらに備える請求項１に記載の装置。
【請求項３】
前記タスクルーティングロジックに連結されて、
前記ターボモードにあるプロセッサ要素が実行中のプログラムの周波数スケーラビリティファクタと、前記アイドルモードにあるプロセッサ要素が前記タスクを実行するプロセッサ要素として選択された場合に、前記ターボモードにあるプロセッサ要素がターボモードから退出することに起因する前記ターボモードにあるプロセッサ要素の動作周波数の低下量とに基づいて、潜在的な前記ウエイキング性能損失を決定する性能計算ロジックをさらに備える請求項１又は２に記載の装置。
【請求項４】
前記ターボモードにあるプロセッサ要素による前記タスクの実行期間と、前記ターボモードにあるプロセッサ要素が実行中のプログラムワークロード及び前記タスクの全実行時間との比率に基づいて、潜在的な前記アクティブ性能損失を決定する性能計算ロジックをさらに備える請求項１から３のいずれか１項に記載の装置。
【請求項５】
前記タスクルーティングロジックは、前記第１のプロセッサ要素の選択および前記第２のプロセッサ要素の選択のそれぞれに関して、第１の性能損失および第２の性能損失のうち、小さいほうの性能損失を選択する請求項１に記載の装置。
【請求項６】
前記タスクルーティングロジックに連結されて、
前記第１のプロセッサ要素および前記第２のプロセッサ要素のうち前記アイドルモードにあるプロセッサ要素が前記タスクを実行するよう選択されたことにより、前記ターボモードにあるプロセッサ要素がターボモードから退出したときに、当該ターボモードにあるプロセッサ要素の動作周波数の低下量に関する情報を格納するメモリをさらに備える請求項１から５のいずれか１項に記載の装置。
【請求項７】
前記ターボモードにあるプロセッサ要素は、前記アイドルモードにあるプロセッサ要素から再配分された電力を受電し、通常モードにあるプロセッサ要素よりも高い周波数で動作する請求項１から６のいずれか１項に記載の装置。
【請求項８】
前記タスクは、前記第１のプロセッサ要素または前記第２のプロセッサ要素のいずれかが実行可能であり、前記第１のプロセッサ要素または前記第２のプロセッサ要素のいずれかに再ルーティング可能である割り込みイベントに応じて実行される請求項１から７のいずれか１項に記載の装置。
【請求項９】
複数のプロセッサ要素と、
タスクを受信し、
前記複数のプロセッサ要素のうち少なくとも１つがターボモードにあり、前記複数のプロセッサ要素のうち少なくとも一つがアイドルモードにある場合に、潜在的な性能損失の比較に基づいて、前記アイドルモードにあるプロセッサ要素および前記ターボモードにあるプロセッサ要素のうち一方を、前記タスクを実行するプロセッサ要素として選択するタスクルーティングロジックと、
前記タスクルーティングロジックに連結されて、前記複数のプロセッサ要素が実行するプログラムを格納するメモリとを備え、
前記潜在的な性能損失のアクティブ性能損失は、前記ターボモードにあるプロセッサ要素が、割り込みイベントに対するサービスに応答してタスクを実行するために、プログラムワークロードを完了する処理時間の増加割合である、
システム。
【請求項１０】
前記ターボモードにあるプロセッサ要素が実行中のプログラムの周波数スケーラビリティファクタと、前記アイドルモードにあるプロセッサ要素が前記タスクを実行するプロセッサ要素として選択された場合に、前記ターボモードにあるプロセッサ要素がターボモードから退出することに起因する前記ターボモードにあるプロセッサ要素の動作周波数の低下量とに基づいて、前記アイドルモードにあるプロセッサ要素が選択された場合の前記性能損失を決定する性能計算ロジックをさらに備える請求項９に記載のシステム。
【請求項１１】
前記ターボモードにあるプロセッサ要素の前記タスクの実行期間と、前記ターボモードにあるプロセッサ要素が実行中のプログラム及び前記タスクの全実行時間とに基づいて、前記ターボモードにあるプロセッサ要素が選択された場合の前記性能損失を決定する性能計算ロジックをさらに備える請求項９又は１０に記載のシステム。
【請求項１２】
前記タスクルーティングロジックは、アイドルモードにあるプロセッサ要素および前記ターボモードにあるプロセッサ要素のうち一方の選択のそれぞれに関して、タスクを実行するために前記ターボモードにあるプロセッサ要素を選択した場合のアクティブ性能損失、及び、タスクを実行するために前記アイドルモードにあるプロセッサ要素を選択した場合のウエイキング性能損失のうち、小さいほうの性能損失を選択する請求項９に記載のシステム。
【請求項１３】
タスクを実行する再ルーティング可能なイベントを受信する段階と、
複数のプロセッサ要素のいずれかがターボモードで動作しているか否かを判断する段階と、
前記複数のプロセッサ要素のうち少なくとも１つが前記ターボモードにあり、前記複数のプロセッサ要素のうち少なくとも１つがアイドルモードにある場合に、前記ターボモードにあるプロセッサ要素を選択した場合のアクティブ性能損失および前記アイドルモードにあるプロセッサ要素を選択した場合のウエイキング性能損失を含む潜在的な性能損失を比較して１つのプロセッサ要素を選択して、前記タスクを実行させる段階と
を備える方法。
【請求項１４】
前記アイドルモードにあるプロセッサ要素が選択された場合の前記ウエイキング性能損失は、
前記ターボモードにあるプロセッサ要素が実行中のプログラムの周波数スケーラビリティファクタと、前記アイドルモードにあるプロセッサ要素が前記タスクを実行するプロセッサ要素として選択されたことによって前記ターボモードにあるプロセッサ要素がターボモードから退出することに起因する前記ターボモードにあるプロセッサ要素の動作周波数の低下量とに基づく請求項１３に記載の方法。
【請求項１５】
前記ターボモードにあるプロセッサ要素が選択された場合の前記アクティブ性能損失は、前記ターボモードにあるプロセッサ要素の前記タスクの平均実行期間と、前記ターボモードにあるプロセッサ要素が実行中のプログラムワークロード及び前記タスクの全実行時間とに基づく、請求項１３又は１４に記載の方法。
【請求項１６】
ターボモードにあるアクティブなプロセッサ要素の選択に関する第１のアクティブ性能損失が、スリープ状態にあるプロセッサ要素を起こすことに関する第２のウエイキング性能損失よりも低い場合、前記ターボモードにあるプロセッサ要素に前記タスクを実行させるよう選択する段階をさらに備える請求項１３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、割り込みイベント処理に係り、より具体的には本発明の実施形態はイベント処理性能の向上に係る。
【背景技術】
【０００２】
マルチコアプロセッサにおいては、プロセッサコアを制御して、利用可能な電力のヘッドルームを利用して性能を最大化することが望ましいと思われる。特定のワークロードの処理に全てのプロセッサコアを利用する必要がない状況においては、アイドル状態にあるコアを停止して、アクティブ状態にある他のコアに対して電力をチャネリングする。アクティブ状態にあるコアは通常、より高い周波数において動作することによってターボモードへと遷移する。
【０００３】
マルチコアプロセッサにおけるタスクおよびイベント処理アルゴリズムは一般的に疑似ランダムであり、特定のコアがターボモードで動作するときの影響を考慮しない。この結果、システム性能全体に影響が及ぶことになる。
【図面の簡単な説明】
【０００４】
本発明の実施形態は、以下の詳細な説明を、本発明の様々な実施形態の添付図面とともに読むことでよりよく理解されるが、図面は本発明を特定の実施形態に制限する意図で捉えられるべきではなく、説明および理解を促す目的のみから示されていることを理解されたい。
【図１】割り込みイベントに応じてタスクを実行するプロセッサ要素を選択する装置を含むコンピュータシステムの一実施形態を示す。
【図２】割り込みイベントに応じてタスクを実行するプロセッサ要素を選択する処理の一実施形態のフロー図を示す。
【図３】本発明の一実施形態とともに利用されるコンピュータシステムを示す。
【図４】本発明の一実施形態とともに利用されるポイントツーポイントコンピュータシステムを示す。
【発明を実施するための形態】
【０００５】
イベント処理のための性能を向上させる装置の実施形態を示す。一実施形態では、装置は、複数のプロセッサ要素とタスクルーティングロジックとを含む。プロセッサ要素の少なくとも１つがターボモードにある場合には、タスクルーティングロジックは、性能損失の比較に少なくとも基づいて、タスクを実行するプロセッサ要素を選択する。
【０００６】
以下の記載において、多くの特定の詳細を示して本発明の実施形態の完全な理解を促す。しかし、本発明の実施形態がこれら特定の詳細がなくても実施可能であることは当業者であれば理解するところである。また一方で、公知の構造およびデバイスは詳細を示すのではなく、ブロック図という形態で示すことで、本発明の実施形態を曖昧にしないようにしている。
【０００７】
また一方で、例えばマイクロプロセッサアーキテクチャ、仮想マシンモニタ、電力制御、クロックゲーティング、および公知のロジックの動作の詳細等の公知のコンポーネントまたは方法は詳細に示さないことで本発明を不当に曖昧にしないようにしている。
【０００８】
しかし、これらおよび類似する用語の全ては、適切な物理量と関連付けられるべきものであり、便宜上の符号に過ぎないことを理解されたい。そうではないと明記しない限り、以下の説明から明らかとなるように、「処理（processing）」、「コンピューティング／計算（computing）」、「計算（calculating）」、「決定／判断（determining）」、「表示（displaying）」等の用語を用いて記載される本明細書の説明は、コンピュータシステムのレジスタおよび／またはメモリの物理（電子）量で表されるデータを、コンピュータシステムのメモリ、レジスタ、その他の同様の情報記憶、送信、または表示デバイス内の物理量として同様に表される他のデータに操作および／または変換する、コンピュータシステムまたは同様の電子コンピューティングデバイスの動作および／または処理のことを示している。
【０００９】
本発明の実施形態はさらに、ここで記載される動作を実行する装置に関する。装置のなかには、所望の目的に特別に構築されるものもあれば、コンピュータに格納されているコンピュータプログラムにより選択的に起動または再構成される汎用コンピュータを含むものもある。これらコンピュータプログラムは、フロッピー（登録商標）ディスク、光ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、光磁気ディスク等の任意の種類のディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ（登録商標）、ＮＶＲＡＭ、磁気カードまたは光カード、あるいは電子命令を格納し、各々がコンピュータシステムバスに連結された任意の種類の媒体を含むがこれらに限定されないコンピュータ可読記憶媒体に格納することができる。
【００１０】
ここで記載する方法および装置は、イベント処理用にプロセッサ要素を選択する目的に利用される。特に、イベント処理用にプロセッサ要素を選択することは、主に、マルチコアプロセッサコンピュータシステムとの関連で記載される。しかしながら、イベント処理用にプロセッサ要素を選択する方法および装置はこれに限定されず、任意の集積回路デバイスまたはシステム（例えば、セルラー式電話機、携帯情報端末（ＰＤＡ）、埋め込みコントローラ、モバイルプラットフォーム、デスクトッププラットフォーム、およびサーバプラットフォーム）上に、またはこれらと関連付けて実装することもでき、並びに、コア、ハードウェアスレッド、ソフトウェアスレッド、または論理プロセッサ、アクセラレータコア、その他のプロセッサリソースと協同させて実装することもできる。加えて、イベント処理用のプロセッサ要素の選択は、ハードウェア上で実行されているオペレーティングシステムまたはハイパーバイザ等の任意のハードウェア／ソフトウェア環境で行うことができる。
＜概略＞
【００１１】
イベント処理のための性能を向上させる装置の実施形態を示す。一実施形態では、装置は、複数のプロセッサ要素とタスクルーティングロジックとを含む。プロセッサ要素の少なくとも１つがターボモードにある場合には、タスクルーティングロジックが、性能損失の比較に少なくとも基づいて、タスクを実行するプロセッサ要素を選択する。
【００１２】
図１は、イベントに応じてタスクを実行するプロセッサ要素を選択する装置を含むコンピュータシステムの一実施形態を示す。バスおよび周辺装置等の多くの関連コンポーネントは示さないことで、本発明を曖昧にしないように示している。図１を参照すると、一実施形態では、プロセッサ１６０は性能計算ロジック１１０、タスクルーティングロジック１３０、ターボモードロジック１４０、および、プロセッサ要素１３１−１３４等の複数のプロセッサ要素を含む。一実施形態では、性能計算ロジックはさらにメモリ１１１を含む。
【００１３】
一実施形態では、プロセッサ要素は、プロセッサ１６０の他の共有リソース（例えば、保留ユニット、実行ユニット、より高レベルのキャッシュ、メモリ等）へのアクセスを共有するスレッド、処理（process）、コンテキスト、論理プロセッサ、ハードウェアスレッド、コア、アクセラレータコア、または、任意のプロセッサ要素を含む。一実施形態では、プロセッサ要素はスレッドユニット（つまり、ソフトウェアスレッドでの実行が独立してスケジュールされている命令を有することのできる要素のこと）である。一実施形態では、物理プロセッサは、任意の数の他のプロセッサ要素（例えばコアまたはハードウェアスレッド）を含む集積回路である。
【００１４】
一実施形態では、コアは、別のコアに関して独立したアーキテクチャ状態を維持することのできる集積回路に設けられるロジックである。各々独立して維持されるアーキテクチャ状態は、少なくとも一部の専用実行リソースと関連付けられる。一実施形態では、ハードウェアスレッドは、別のハードウェアスレッドに関して独立したアーキテクチャ状態を維持することのできる集積回路に設けられるロジックである。各々独立して維持されるハードウェアスレッドは、実行リソースへのアクセスを共有する。一部の実施形態では、コアおよびハードウェアスレッドは互換性を有する。一実施形態では、コアまたはハードウェアスレッドをプロセッサ要素とも称する。
【００１５】
一実施形態では、ハードウェアスレッド、コア、またはプロセッサ要素は、オペレーティングシステムまたは管理ソフトウェアから、個々の論理プロセッサとしてみなされる。ソフトウェアプログラムは、各論理プロセッサ上で動作を個々にスケジュールすることができる。加えて、一部の実施形態では、各コアが、複数のソフトウェアスレッドを実行する複数のハードウェアスレッドを含む。
【００１６】
一実施形態では、ハイパーバイザ（不図示）が、ソフトウェア（例えば仮想マシン）とハードウェアリソース（例えばプロセッサ１６０）との間のインタフェースを提供する。一実施形態では、ハイパーバイザは、複数の仮想マシンが並行に独立して実行可能となるようにハードウェアを抽象化（abstract）する。一実施形態では、仮想マシンは、例えばタスク、ユーザレベルのアプリケーション、ゲストソフトウェア、オペレーティングシステム、別の仮想マシン、仮想マシンモニタ、他の実行可能コード、あるいは任意のこれらの組み合わせといったプログラムに対してソフトウェア実行環境を提供する。一実施形態では、ハイパーバイザは、異なるプログラムに対してハードウェアリソース（例えばコア、ハードウェアスレッド、プロセッサ要素）を割り当てる。
【００１７】
一実施形態ではコンピュータシステムは、インターコネクトを介して信号を送受信する入出力（Ｉ／Ｏ）バッファを含む。このインターコネクトの例には、ＧＴＬ（gunning transceiver logic）バス、ＧＴＬ＋バス、ＤＤＲ（double data rate）バス、ポンプバス（pumped bus）、差動バス、キャッシュコヒーレントバス、ポイントツーポイントバス、マルチドロップバス、または、任意の公知のバスプロトコルが実装された他の公知のインターコネクトが含まれる。
【００１８】
一実施形態では、コンピュータシステムおよび特にプロセッサ１６０は異なる電力状態（例えばＣ２状態およびＣ３状態）を、電力制御インタフェース（ＡＣＰＩ）仕様（ＡＣＰＩ仕様、３．０ｂ改定版、２００６年１０月１０日参照）に従ってサポートする。一実施形態では、スリープ状態（例えばＣ２状態およびＣ３状態）はさらにアイドル状態とも称される。一実施形態では、アイドル状態にあるプロセッサ要素はスリープコア、アイドルコア、あるいは非アクティブコアとも称される。一実施形態では、電力ゲートは、アイドルプロセッサ要素への電力供給を遮断する。アイドルプロセッサ要素は、起こされることでプログラムの実行を再開する。
【００１９】
一実施形態では、ターボモードロジック１４０は、プロセッサ要素１３１−１３４を制御して、少なくとも１つのアクティブプロセッサ要素を、少なくとも１つの他のプロセッサ要素がアイドルである場合に、より高い周波数で動作させる。この結果、利用可能な電力および熱のヘッドルームがアクティブプロセッサ要素により利用されて、システムの性能全体が増加または向上する。一実施形態では、このような動作モードをターボモードと称する。ターボモードの間は、ターボモードロジック１４０が１以上のアイドルプロセッサ要素の電力および熱のヘッドルームを１以上のアクティブプロセッサ要素に再配分して、該１以上のアクティブプロセッサ要素の動作周波数を増加させる。
【００２０】
一実施形態では、プロセッサをターボモードへと、あるいはターボモードから遷移させる（例えば、より高い性能レベルへと、またはより低い性能レベルへと遷移させる）ファクタを、イベントと称する。一実施形態では、イベントは、プロセッサ要素１３１−１３４に再ルーティグ可能な割り込みイベントである。一実施形態では、プロセッサ１６０は一部の対応するタスクまたはサービスをイベントに応じて実行する。一実施形態では、割り込みイベントは、例えばディスクドライブ、ネットワークカード、および入出力デバイス等のデバイスから生じる。
【００２１】
一実施形態では、処理計算ロジック１１０が、イベント処理における性能損失を計算する。一実施形態では、プロセッサ１６０は、イベント処理に応じて１つのタスクまたは複数のタスクを実行することから、ワークロードの完了にさらに時間を要する。一実施形態では性能損失を百分率で表す。例えば、ワークロードの実行時間が１０ｍｓである場合、１０％の性能損失によって、ワークロードの完了には１１．１ｍｓ（つまり１０ｍｓ／（１−０．１０））が必要となる。
【００２２】
一実施形態では、プロセッサ１６０がターボモードの間に、タスクルーティングロジック１３０は（イベントの結果）タスク１０１を受信する。一実施形態では、例えば、プロセッサ要素１３１は、プロセッサ要素１３２がアイドルモードにある間、ターボモードにある。一実施形態では、ターボルーティングロジック１３０は、異なるプロセッサ要素からタスク１０１を完了するプロセッサ要素（アクティブプロセッサ要素、スリーププロセッサ要素のいずれであってもよい）を選択することに関する性能損失に基づいて、プロセッサ要素のいずれか１つを選択する。
【００２３】
一実施形態では、アイドルプロセッサ要素がタスク１０１実行に利用される場合の性能損失のことを、ＷＰＬ（Waking Performance Loss）と称する。一実施形態では、アクティブプロセッサ要素（ターボモードにある）は、より低い動作周波数へと遷移して、スリーププロセッサ要素を起こすべく電力をチャネリングする。一実施形態では、性能計算ロジックは、アクティブプロセッサ要素が実行中のプログラムのスケーラビリティファクタおよびアクティブプロセッサ要素に関する動作周波数の低下に基づいてＷＰＬを決定する。当業者であれば、他のファクタおよびそれらの組み合わせを用いてＷＰＬを決定することができることを理解する。
【００２４】
一実施形態では、周波数スケーラビリティファクタは、周波数の増加（あるいは低下）を、特定のワークロードの性能の増加（または低下）に変換するときに利用される比率である。例えば、動作周波数が１０％増加すると性能が１０％増加するようなワークロードは、スケーラビリティファクタ１に相当する。また例えば、動作周波数が１％低下すると性能が０．７５％低下するようであれば、スケーラビリティファクタ０．７５に相当する。
【００２５】
一実施形態では、メモリ１１１は、アクティブプロセッサ要素が実行中のプログラムの周波数スケーラビリティファクタに関する情報を格納する。一実施形態では、メモリ１１１は、アクティブプロセッサ要素がターボモードから遷移して退出したときの動作周波数の低下に関する情報を格納する。一実施形態では、この情報はモニタロジック（不図示）が収集し、現在の値を予測／推定する平均履歴値を含む。
【００２６】
一実施形態では、アクティブプロセッサ要素を利用してタスク１０１を実行するときの性能損失は、ＡＰＬ（Active Performance Loss）と称される。一実施形態では、性能計算ロジック１１０は、（イベントに応じて）タスク１０１を実行する処理時間の量およびアクティブプロセッサ要素が実行中のプログラムに関する利用率の値に基づいてＡＰＬを決定する。一実施形態では、イベント処理にかかる処理時間をプログラムワークロードの全ランタイムで除算して得られた値に基づいてＡＰＬを決定する。当業者であれば、他のファクタおよびそれらの組み合わせを用いてＡＰＬを決定することができることを理解する。
【００２７】
一実施形態では、メモリ１１１は、イベント処理に係る処理時間の量に関する情報を格納する。一実施形態では、この情報はモニタロジック（不図示）が収集し、現在の値を予測／推定する平均履歴値を含む。一実施形態では、モニタロジックはさらに、アクティブプロセッサ要素が実行中のプログラムに関する利用率の値を提供する。
【００２８】
一実施形態では、プロセッサ１６０がターボモードにある場合、タスクルーティングロジック１３０が、潜在的な性能損失の比較に基づいて、イベントを処理するプロセッサ要素を決定する。一実施形態では、タスクルーティングロジック１３０は、プロセッサ１６０（あるいはプロセッサ要素１３１−１３４のいずれか）がターボモードにあるか否かを、ターボモードロジック１４０からの情報に基づいて判断する。
【００２９】
一実施形態では、ＷＰＬがＡＰＬよりも小さい場合、タスクルーティングロジック１３０は、アイドルプロセッサ要素をイベント処理用に選択する。さもなくば、タスクルーティングロジック１３０はイベントを、（現在ターボモードにある）アクティブプロセッサ要素に送る。
【００３０】
一実施形態では、プロセッサ要素は、出口レイテンシーがより小さく節電効果が中間であるような浅いＣ状態（例えばＡＣＰＩのＣ１状態）から、出口レイテンシーがより長くより高い節電効果が行われるような深いＣ状態（例えばＡＣＰＩのＣ３状態）にわたる範囲の様々なスリープ状態での動作が可能である。従って、ＷＰＬおよびＡＰＬを含む性能損失の判断は、スリープコアのＣ状態によって異なる。一実施形態では、プロセッサ要素を深いＣ状態から起こすことは、プロセッサ要素を浅いＣ状態から起こすことよりも、高価である（従ってより高い性能損失を生じる）。
【００３１】
図２は、割り込みイベントに応じてタスクを実行する（プロセッサの）プロセッサ要素を選択する処理の一実施形態のフロー図を示す。処理は、ハードウェア（回路、専用ロジック等）、ソフトウェア（例えば汎用コンピュータシステムまたは専用マシンで実行されるようなもの）、あるいはこれら両方の組み合わせを含みうる処理ロジックが実行する。一実施形態では、処理は、コントローラ（図１のタスクルーティングロジック１３０）と協同して実行される。一実施形態では、処理は図３のコンピュータシステムが実行する。
【００３２】
図２を参照すると、一実施形態では、処理ロジックは、再ルーティング可能イベントを受信することから開始される（処理ブロック２００）。処理ロジックは、イベントに応じてタスクまたはサービスを実行する。
【００３３】
一実施形態では、処理ロジックは、（プロセッサの）プロセッサ要素のいずかがターボモードで動作しているか否かを判断する（処理ブロック２１０）。一実施形態では、いずれのプロセッサ要素もターボモードで動作していない場合には、処理ロジックは、イベントを処理するプロセッサ要素を任意に選択する（処理ブロック２４１）。別の実施形態では、いずれのプロセッサ要素もターボモードで動作していない場合には、処理ロジックは、節電モードにあるプロセッサ要素（例えばスリープコア）を選択して、イベントを処理させる。
【００３４】
一方、プロセッサ要素のいずれかがターボモードにある場合には、一実施形態では、処理ロジックは、潜在的な性能損失を決定する。
【００３５】
一実施形態では、処理ロジックは、アイドルプロセッサ要素を利用してタスクを実行するときのＷＰＬ（Waking Performance Loss）を決定する（処理ブロック２２０）。一実施形態では、処理ロジックは、アクティブプロセッサ要素が実行中のプログラムの周波数スケーラビリティファクタおよびアクティブプロセッサ要素に関する動作周波数の低下に基づいてＷＰＬを決定する。
【００３６】
一実施形態では、処理ロジックは、アクティブプロセッサ要素を利用してタスクを実行するときのＡＰＬ（Active Performance Loss）を決定する（処理ブロック２２１）。一実施形態では、処理ロジックは、タスクを実行する処理時間の量およびアクティブプロセッサ要素が実行中のプログラムに関する利用率の値に基づいてＡＰＬを決定する。
【００３７】
一実施形態では、処理ロジックは、ＷＰＬとＡＰＬとを比較する（処理ブロック２３０）。一実施形態では、ＷＰＬがＡＰＬより小さい場合、処理ロジックは、アイドルプロセッサ要素を選択してタスクを実行させる（処理ブロック２４２）。さもなくば、処理ロジックは、ターボモードにあるアクティブプロセッサ要素を選択してタスクを実行させる（処理ブロック２４３）。
【００３８】
本発明の実施形態は、様々な電子デバイスおよび論理回路での実装が可能である。さらに、本発明の実施形態を含むデバイスおよび回路は、様々なコンピュータシステムに組み込むことができる。本発明の実施形態はさらに、他のコンピュータシステムトポロジーおよびアーキテクチャに組み込むことができる。
【００３９】
例えば図３は、本発明の一実施形態とともに利用されるコンピュータシステムを示す。プロセッサ７０５は、レベル１（Ｌ１）キャッシュメモリ７０６、レベル２（Ｌ２）キャッシュメモリ７１０、およびメインメモリ７１５からのデータにアクセスする。本発明の他の実施形態では、キャッシュメモリ７０６は、マルチレベルキャッシュメモリであってよく、コンピュータシステムメモリ階層構造においてＬ１キャッシュとＬ２キャッシュ等の他のメモリとを含み、キャッシュメモリ７１０は、Ｌ３キャッシュまたはよりマルチレベルなキャッシュ等の、より低レベルの後続するキャッシュメモリである。さらに、他の実施形態では、コンピュータシステムは、複数のプロセッサコア用の共有キャッシュとして、キャッシュメモリ７１０を有することができる。
【００４０】
プロセッサ７０５は、任意の数のプロセッサコアを有することができる。しかし本発明の他の実施形態は、システムの他のデバイス内に実装することができ、または、システム全体にハードウェア、ソフトウェア、あるいはこれらのうちの組み合わせのいずれかとして分散させることもできる。一実施形態では、プロセッサ７０５は、例えば図１のタスクルーティングロジック１３０等のコンポーネントに類似したロジックを含む。
【００４１】
メインメモリ７１５は、ＤＲＡＭ，ＨＤＤ７２０、ＮＶＲＡＭ技術に基づく固体ディスク７２５、または、ネットワークインタフェース７３０を介して、または、様々な記憶デバイスおよび技術を含むワイヤレスインタフェース７４０を介してコンピュータシステムから遠隔に位置するメモリソース等の様々なメモリリソースに実装可能である。キャッシュメモリは、プロセッサ内、または、プロセッサに近接した位置（例えばプロセッサのローカルバス７０７上）に設けることができる。さらにキャッシュメモリは、６つのトランジスタ（６Ｔ）セルまたは、これと略等しい、または、これよりアクセススピードの速い他のメモリセル等の比較的高速のメモリセルを含んでよい。
【００４２】
しかし本発明の他の実施形態は、図３のシステム内の他の回路、論理ユニット、またはデバイスに設けることもできる。さらに、本発明の他の実施形態は、図３に示す複数の回路、論理ユニット、またはデバイスに分散させることもできる。
【００４３】
同様に、少なくとも１つの実施形態をポイントツーポイントコンピュータシステム内に実装することができる。例えば図４は、ポイントツーポイント（ＰｔＰ）構成のコンピュータシステムを示す。特に図４のシステムでは、プロセッサ、メモリ、入出力デバイスが複数のポイントツーポイントインタフェースで相互接続されている。
【００４４】
図４のシステムは、さらに複数のプロセッサを含んでよく、このうち、２つのみ（プロセッサ８７０、８８０）が明瞭化を目的として示されている。プロセッサ８７０、８８０は、各々、メモリ８５０、８５１と接続するローカルメモリコントローラハブ（ＭＣＨ）８１１、８２１を含んでよい。プロセッサ８７０、８８０は、ポイントツーポイント（ＰｔＰ）インタフェース回路８１２、８２２を利用してＰｔＰインタフェース８５３を介してデータを交換してよい。プロセッサ８７０、８８０は、各々、ポイントツーポイントインタフェース回路８１３、８２３、８６０、８６１を利用してＰｔＰインタフェース８３０、８３１を個々に介してチップセット８９０とデータを交換してよい。チップセット８９０はさらに、高性能グラフィックインタフェース８６２を介して高性能グラフィック回路８５２とデータを交換してよい。本発明の実施形態は、コンピュータバス（８３４または８３５）に連結されることも、チップセット８９０内に設けられることも、あるいは、データ記憶装置８７５と連結されることも、あるいは、図４のメモリ８５０に連結されることもできる。
【００４５】
しかし本発明の他の実施形態は、図４のシステム内の他の回路、論理ユニット、またはデバイスに設けることもできる。さらに、本発明の他の実施形態は、図４に示す複数の回路、論理ユニット、またはデバイスに分散させることもできる。
【００４６】
本発明は記載された実施形態に限定されず、添付請求項の精神および範囲内における変形および変更を行うことで実行することができる。例えば、本発明は、全ての種類の半導体集積回路（ＩＣ）チップに対する用途に利用可能であることを理解されたい。これらＩＣチップの例には、プロセッサ、コントローラ、チップセットコンポーネント、プログラム可能な論理アレイ（ＰＬＡ）、メモリチップ、ネットワークチップ等が含まれ、これらに限定はされない。さらに、サイズ、モデル、値、範囲について例示してきた場合であっても、本発明の実施形態がこれらに限定されるとうい意味ではないことを理解されたい。製造技術（例えばフォトリソグラフィー技術）の将来の進歩如何によって、より小型のデバイスが製造可能となることが予期される。
【００４７】
以上の記載を読んだ当業者が本発明の実施形態の変形例および変更例を想到するであろうことは疑いがないので、例示された特定の実施形態のいずれをも限定として捉えることは適切ではないことを理解されたい。従って、様々な実施形態の詳細についての言及は、発明の核心部分とみなされる特徴のみを記載する性質の請求項の範囲を限定する意図はない。
【図１】
0005406149.tif 000002
【図２】
0005406149.tif 000003
【図３】
0005406149.tif 000004
【図４】
0005406149.tif 000005