プロセッサであって、該プロセッサのコアの属性の値を監視するためのモニタロジックと、前記コアの前記属性に応じて、該プロセッサの電力消費の大きさを求めるための変換ロジックと、前記電力消費の大きさに応じて、該プロセッサの1命令当たりのエネルギーのメトリックを調整するための制御ロジックとを備えるプロセッサ。前記コアの前記属性は、コア実行状態である、請求項1に記載のプロセッサ。前記電力消費の大きさは、前記コア実行状態に、前記コアが該コア実行状態にある時に1クロック当たりに費やされるエネルギー量を乗算することによって求められる、請求項2に記載のプロセッサ。前記コアの前記属性は、1クロック当たりにリタイヤされる命令の個数である、請求項1に記載のプロセッサ。前記電力消費の大きさは、1クロック当たりにリタイヤされる命令の前記個数に、1クロック当たりの命令ごとに費やされるエネルギー量を乗算することによって求められる、請求項4に記載のプロセッサ。前記コアの前記属性は、前記コアの機能ブロックのアクティブステータスである、請求項1に記載のプロセッサ。前記電力消費の大きさは、前記機能ブロックの前記アクティブステータスに、該機能ブロックが該アクティブステータスにある時に1クロック当たりに費やされるエネルギー量を乗算することによって求められる、請求項6に記載のプロセッサ。前記属性は、コア電源電流である、請求項1に記載のプロセッサ。前記電力消費の大きさは、前記コア電源電流を含む、請求項8に記載のプロセッサ。前記制御ロジックは、前記電力消費の大きさに応じて、前記プロセッサの動作電圧及び動作周波数を調整する、請求項1に記載のプロセッサ。前記制御ロジックは、前記電力消費の大きさに応じて、前記プロセッサのラージコアとスモールコアとの間でプログラムのスレッドをマイグレーションする、請求項1に記載のプロセッサ。前記制御ロジックは、前記電力消費の大きさに応じて、前記プロセッサの前記コアにおけるオプションの性能回路部をオンにする、請求項1に記載のプロセッサ。前記制御ロジックは、前記電力消費の大きさに応じて、前記プロセッサの前記コアにおけるオプションの投機回路部をオンにする、請求項1に記載のプロセッサ。前記電力消費の大きさと所望の電力消費との間の差を計算するための差ロジックをさらに備える、請求項1に記載のプロセッサ。前記電力消費の大きさと所望の電力消費との間の前記差の時間積分を求めるための積分回路部をさらに備える、請求項14に記載のプロセッサ。サンプリング方法に従って、前記電力消費の大きさを前記制御ロジックに供給するためのサンプリング回路部をさらに備える、請求項14に記載のプロセッサ。高速フィードバック制御を可能にするためのクロックスロットル回路をさらに備える、請求項1に記載のプロセッサ。プロセッサであって、第1の複数の第1のタイプのコアと、第2の複数の第2のタイプのコアと、前記第1の複数の前記第1のタイプのコア又は前記第2の複数の前記第2のタイプのコアのいずれかの1つにスレッドを割り当てるためのモジュールとを備えるプロセッサ。前記モジュールは、電力バジェットに従って前記スレッドを割り当てる、請求項18に記載のプロセッサ。前記モジュールは、割り当て表に従って前記スレッドを割り当てる、請求項18に記載のプロセッサ。前記モジュールは、前記第2の複数のコアの1つに新しいスレッドを割り当てると共に、前記第1の複数のコアの1つから前記第2の複数のコアの1つへ既存のスレッドをマイグレーションするためのスレッドマイグレーションロジックを含む、請求項18に記載のプロセッサ。前記スレッドマイグレーションロジックは、論理コアを物理コアにマッピングするための表を含む、請求項21に記載のプロセッサ。前記スレッドマイグレーションロジックは、オペレーティングシステムスケジューラに応答する、請求項21に記載のプロセッサ。前記第1のタイプのコアは、設計によって、前記第2のタイプのコアよりも高い性能を有する、請求項18に記載のプロセッサ。前記第1のタイプのコアは、構成によって、前記第2のタイプのコアよりも高い性能を有する、請求項18に記載のプロセッサ。方法であって、一組のスレッドを一組のプロセッサコアに割り当てること、該プロセッサコアの消費電力を監視すること、該消費電力と所望の電力との間の誤差値を計算すること、及び該誤差値に基づいて前記割り当てから移行することを含む方法。前記移行することは、前記一組のプロセッサコアにおける性能の高い方のコア及び性能の低い方のコアの間で、前記一組のスレッドの前記割り当てを変更することを含む、請求項26に記載の方法。前記移行することは、前記一組のプロセッサコアにおいて性能の高い方のコア及び性能の低い方のコアを構成することによって、前記性能の高い方のコア及び前記性能の低い方のコアの間で、前記一組のスレッドの前記割り当てを変更することを含む、請求項26に記載の方法。前記誤差値を時間にわたって積分することをさらに含む、請求項26に記載の方法。前記誤差値を時間にわたってサンプリングすることをさらに含む、請求項26に記載の方法。一組の実行スレッドを決定すること、及び該スレッドのそれぞれを、一組のプロセッサコアのうちの1つに割り当てることを含む方法であって、前記割り当てることは、電力バジェットに応答する、方法。前記一組のプロセッサコアは、第1のタイプのコア及び第2のタイプのコアとして動作することができる構成可能なコアを含む、請求項31に記載の方法。前記一組のプロセッサコアは、第1のタイプのコア及び第2のタイプのコアとして設計されるコアを含む、請求項31に記載の方法。前記一組のプロセッサコアから第2のタイプのコアに新しいスレッドを割り当てること、及び、前記一組のプロセッサコアにおける第1のタイプのコアから前記第2のタイプのコアへ、前記一組の実行スレッドのうちの1つをマイグレーションすることをさらに含む、請求項31に記載の方法。前記マイグレーションすることは、スレッドマイグレーションロジックによって行われる、請求項34に記載の方法。前記マイグレーションすることは、オペレーティングシステムスケジューラに応答する、請求項34に記載の方法。システムであって、プロセッサであって、該プロセッサのコアの属性の値を監視するためのモニタロジックと、前記コアの前記属性に応じて、該プロセッサの電力消費の大きさを求めるための変換ロジックと、前記電力消費の大きさに応じて、該プロセッサの1命令当たりのエネルギーのメトリックを調整するための制御ロジックとを備える、プロセッサと、音声入出力ロジックと、前記プロセッサを前記音声入出力ロジックに接続するためのインターフェースとを備えるシステム。前記コアの前記属性はコア実行状態であり、前記電力消費の大きさは、前記コア実行状態に、前記コアが該コア実行状態にある時に1クロック当たりに費やされるエネルギー量を乗算することによって求められる、請求項37に記載のシステム。前記コアの前記属性は1クロック当たりにリタイヤされる命令の個数であり、前記電力消費の大きさは、1クロック当たりにリタイヤされる命令の前記個数に、1クロック当たりの命令ごとに費やされるエネルギー量を乗算することによって求められる、請求項37に記載のシステム。前記コアの前記属性は前記コアの機能ブロックのアクティブステータスであり、前記電力消費の大きさは、前記機能ブロックの前記アクティブステータスに、該機能ブロックが該アクティブステータスにある時に1クロック当たりに費やされるエネルギー量を乗算することによって求められる、請求項37に記載のシステム。前記属性はコア電源電流であり、前記電力消費の大きさは、前記コア電源電流を含む、請求項37に記載のシステム。前記制御ロジックは、前記電力消費の大きさに応じて、前記プロセッサの動作電圧及び動作周波数を調整する、請求項37に記載のシステム。前記制御ロジックは、前記電力消費の大きさに応じて、前記プロセッサのラージコアとスモールコアとの間でプログラムのスレッドをマイグレーションする、請求項37に記載のシステム。前記制御ロジックは、前記電力消費の大きさに応じて、前記プロセッサの前記コアにおけるオプションの性能回路部をオンにする、請求項37に記載のシステム。前記制御ロジックは、前記電力消費の大きさに応じて、前記プロセッサの前記コアにおけるオプションの投機回路部をオンにする、請求項37に記載のシステム。前記プロセッサは、前記電力消費の大きさと所望の電力消費との間の差を計算するための差ロジックをさらに備える、請求項37に記載のシステム。前記プロセッサは、前記電力消費の大きさと所望の電力消費との間の前記差の時間積分を求めるための積分回路部をさらに備える、請求項45に記載のシステム。サンプリング方法に従って、前記電力消費の大きさを前記制御ロジックに供給するためのサンプリング回路部をさらに備える、請求項45に記載のプロセッサ。システムであって、第1の複数の第1のタイプのコアと、第2の複数の第2のタイプのコアと、前記第1の複数の前記第1のタイプのコア又は前記第2の複数の前記第2のタイプのコアのいずれかの1つにスレッドを割り当てるためのモジュールとを含むプロセッサと、音声入出力ロジックと、前記プロセッサを前記音声入出力ロジックに接続するためのインターフェースとを備えるシステム。前記モジュールは、電力バジェットに従って前記スレッドを割り当てる、請求項47に記載のシステム。前記モジュールは、割り当て表に従って前記スレッドを割り当てる、請求項47に記載のシステム。前記モジュールは、前記第2の複数のコアの1つに新しいスレッドを割り当てると共に、前記第1の複数のコアの1つから前記第2の複数のコアの1つへ既存のスレッドをマイグレーションするためのスレッドマイグレーションロジックを含む、請求項47に記載のシステム。前記スレッドマイグレーションロジックは、論理コアを物理コアにマッピングするための表を含む、請求項50に記載のシステム。プロセッサであって、一組のスレッドを一組のプロセッサコアに割り当てる手段と、該プロセッサコアの消費電力を監視する手段と、該消費電力と所望の電力との間の誤差値を計算する手段と、該誤差値に基づいて前記割り当てから移行する手段とを備えるプロセッサ。前記移行する手段は、前記一組のプロセッサコアにおける性能の高い方のコア及び性能の低い方のコアの間で、前記一組のスレッドの前記割り当てを変更する手段を含む、請求項52に記載のプロセッサ。前記移行する手段は、前記一組のプロセッサコアにおいて性能の高い方のコア及び性能の低い方のコアを構成することによって、前記性能の高い方のコア及び前記性能の低い方のコアの間で、前記一組のスレッドの前記割り当てを変更する手段を含む、請求項52に記載のプロセッサ。前記誤差値を時間にわたって積分する手段をさらに備える、請求項52に記載のプロセッサ。前記誤差値を時間にわたってサンプリングする手段をさらに備える、請求項52に記載のプロセッサ。一組の実行スレッドを決定する手段と、該スレッドのそれぞれを、一組のプロセッサコアの1つに割り当てる手段とを備えるプロセッサであって、前記割り当てる手段は、電力バジェットに応答する、プロセッサ。前記一組のプロセッサコアは、第1のタイプのコア及び第2のタイプのコアとして動作することができる構成可能なコアを含む、請求項56に記載のプロセッサ。前記一組のプロセッサコアは、第1のタイプのコア及び第2のタイプのコアとして設計されるコアを含む、請求項56に記載のプロセッサ。前記一組のプロセッサコアから第2のタイプのコアに新しいスレッドを割り当てる手段と、前記一組のプロセッサコアにおける第1のタイプのコアから前記第2のタイプのコアへ、前記一組の実行スレッドのうちの1つをマイグレーションする手段とをさらに備える、請求項56に記載のプロセッサ。問題は、スカラータスク及び並列タスクの双方においてうまく動作するマイクロプロセッサを構築しようとする時に発生し得る。1つの問題は、短い待ち時間を達成するのに必要とされる設計技法が、場合により、高いスループットを達成するのに必要とされる設計技法と非常に異なるという認識から発生し得る。本発明は、添付図面の図に、限定ではなく一例として示されている。添付図面において、同じ参照符号は同様の構成要素を指す。以下の説明は、ソフトウェアプログラムにおいて利用可能な並列性の量に従って各命令を処理するのに費やされるエネルギー量を変化させるための技法を記載している。以下の説明では、本発明のより完全な理解を提供するために、ロジック実施態様、ソフトウェアモジュール割り当て、バス及び他のインターフェースシグナリング技法、オペレーションの詳細等の多数の具体的な詳細が述べられている。しかしながら、本発明は、このような具体的な詳細がなくても実施できることが当業者には十分理解されよう。それ以外の場合には、制御構造、ゲートレベルの回路、及び完全なソフトウェア命令シーケンスは、本発明を分かりにくくしないために詳細に示されていない。当業者は、含まれた説明によって、必要以上の実験を行うことなく適切な機能を実施することができる。特定の実施態様では、本発明は、Intel登録商標社によって生産されたようなPentium登録商標互換プロセッサのマルチコアの実施態様の形で開示されている。しかしながら、本発明は、Itaniumプロセッサファミリー互換プロセッサ、X-Scale登録商標ファミリー互換プロセッサ、他のベンダ又は設計者のプロセッサアーキテクチャのいずれかからの多種多様な異なる汎用プロセッサのいずれか等の、他の種類のプロセッサにおいても実施することができる。加えて、いくつかの実施の形態は、グラフィックス、ネットワーク、画像、通信、他の任意の既知のタイプのプロセッサ又は別の方法で利用可能なタイプのプロセッサ等の、専用プロセッサを含むこともできるし、専用プロセッサとすることもできる。電力効率は、1ワット当たりについての1秒当たりの命令数IPSの点で測定することができる。IPS/ワットのメトリックは、1命令当たりのエネルギーと等価である。より正確には、IPS/ワットは、以下のように、1命令当たりのエネルギーの逆数に比例する。11命令当たりのエネルギーのメトリックの重要な特性は、命令を処理するのに必要とされる時間とは独立であるということである。これによって、1命令当たりのエネルギーは、スループット性能にとって役立つメトリックとなる。マイクロプロセッサの電力消費の近似解析は、命令が処理される度に充電又は放電されるコンデンサとしてマイクロプロセッサをモデル化することにより行うことができる簡単にするために、漏れ電流及び短絡スイッチング電流は無視することができる。この前提により、1命令当たりのエネルギーは、2つの事項、すなわち、フェッチからリタイヤへ各命令を処理するためにトグルされる静電容量及び電源電圧にのみ依存することができる。コンデンサに標準的に適用される既知の公式2をマイクロプロセッサにも同様に適用することができる。Eは、1つの命令を処理するのに必要とされるエネルギーであり、Cは、その1つの命令を処理する際にトグルされる静電容量であり、Vは、電源電圧である。マイクロプロセッサは、たとえば100ワット等の一定の電力バジェット内で動作することができる。或る時間にわたって平均化されたマイクロプロセッサの電力消費は、マイクロプロセッサ又はソフトウェアが何を行うかにかかわらず、この電力バジェットを超えるべきではない。この目的を達成するために、マイクロプロセッサは、或る種の動的な温度管理を組み込むことができる。同様に、チップレベルマルチプロセッサは、そのマルチプロセッサが、1クロックあたりの命令数IPCがたとえば0.2個で命令をリタイヤしているのか、又は20IPCで命令をリタイヤしているのかにかかわらず、一定の電力バジェット内に留まるようにそのアクティビティを調整又はスロットルすることができる。良好な性能を発揮するために、チップレベルマルチプロセッサは、自身のMIPS/ワットを変化させることができるべきである。すなわち、自身のエネルギー/命令を、この例では100:1の範囲にわたって変化させることができるべきである。高いスカラー性能及び高いスループット性能の双方を達成できるマイクロプロセッサを設計するための1つの手法は、ソフトウェアにおいて利用可能な並列性の量又は利用可能であると推定される並列性の量に従って、各命令を処理するのに費やされるエネルギー量を動的に変化させることである。換言すれば、並列性の量が少ない場合には、マイクロプロセッサは、すべての利用可能なエネルギーを、少数の命令を処理することに費やすことができ、並列性の量がより多い場合には、マイクロプロセッサは、各命令を処理することにほとんどエネルギーを費やすことができない。これは、3として表すことができる。ここで、Pは、一定の電力バジェットであり、EPIは、リタイヤされた1命令当たりの平均エネルギーであり、IPSは、すべてのプロセッサコアにわたって1秒あたりにリタイヤされた命令の総数である。この実施の形態は、全マルチプロセッサチップ電力をほぼ一定のレベルに維持しようと試みるものである。相補型金属酸化膜半導体CMOSの電圧及び周波数のスケーリングは、1命令あたりのエネルギーの比について異なった比を達成するのに使用することができる。一実施の形態では、ロジックが、所望の性能レベル及び電力レベルに従って、マイクロプロセッサの電源電圧及びクロック周波数を調和して変化させる。チップレベルマルチプロセッサの全電力消費を一定の電力バジェット内に維持するために、電圧及び周波数のスケーリングを以下のように動的に適用することができる。スレッドの並列性が低い段階では、最良のスカラー性能を得るために、高い電源電圧及び高い周波数を使用して、少数のコアを実行することができる。スレッドの並列性が高い段階では、最良のスループット性能を得るために、低い電源電圧及び低い周波数を使用して、多数のコアを実行することができる。アクティブでないコアの電力消費は低いことが望ましい場合があるので、ダイナミックスリープトランジスタdynamicsleeptransistorやボディバイアス等の漏れ制御技法を使用することができる。次に図1を参照すると、一実施の形態による、電圧及び周波数によって構成可能なコアを含むプロセッサの概略図が示されている。コア1120、コア2130、コア3140、及びコア4150が示されているが、他の実施の形態では、プロセッサのコアは4つよりも多くすることもできるし、少なくすることもできる。これらのコアの1つ又は複数は、電圧制御回路及びクロック周波数制御回路を有することができる。図1は、コア1120が、電圧制御回路122及び周波数制御回路124を所有することを明示的に示しているが、他のコアも、同等の回路を同様に有することもできるし、電圧制御ロジック及び周波数制御ロジックを、特定のコアに直接関連付けられていない別個のロジックとすることもできる。スロットルモジュール110は、情報を収集して、実行しているソフトウェアプログラムに存在する並列性の量又はその量の推定値を求めるのに使用することができる。一実施の形態では、並列性の量は、サポートされる同時スレッドの個数とすることができる。他の実施の形態では、1秒あたりにリタイヤされる命令の総数又はマルチスレッド化された投機的実行をサポートできる分岐命令の個数等の、他のメトリックを使用して、並列性の量を表すことができる。スロットルモジュール110は、オペレーティングシステムによって提供された情報を利用して、並列性の量を求めるのを助けることができる。他の実施の形態では、スロットルモジュール110は、プロセッサ内のハードウェアロジック及びプロセッサのコアを使用してこの並列性の量を求めることを行うことができる。この並列性の量を求めることは、連続的に行うこともできるし、定期的に行うこともできる。スロットルモジュール110は、プログラムにおける並列性の量を求めるごとに、信号線112、114、116、及び118を介してコア120、130、140、150に、それらの電圧及びクロック周波数を変更するように指示することができる。一実施の形態では、信号線112、114、116、及び118は、コアをオン又はオフにするのに使用することもできるし、コアを収容する電力泉powerwellからの電力を除去するのに使用することもできる。他の実施の形態では、コアは、クロックゲーティング技法又は命令スタベーションinstructionstarvation技法によってオフにすることもできる。一実施の形態では、現在のスレッドレベルの並列性の量が以前の量を超え、その超える量がしきい値を超える場合、スロットルモジュールは、各コアの電圧及びクロック周波数を減少させながらより多数のコアでスレッドを実行することによって、より多数のスレッドの実行への移行を開始することができる。以前にオフにされていたコアをオンにして、より多数のスレッドをサポートすることができる。同様に、現在のスレッドレベルの並列性の量が以前の量を下回り、その下回る量がしきい値を超える場合、スロットルモジュールは、いくつかのコアの電圧及びクロック周波数を増加させながらより少数のこれらのコアでスレッドを実行することによって、より少数のスレッドの実行への移行を開始することができる。以前にオンにされていたいくつかのコアは、より少数のスレッドをサポートするのにもはや必要とされる場合はないので、それらのコアをオフにすることができる。一実施の形態では、異なるマイクロアーキテクチャを使用して或る範囲の性能及び電力を補うことができる単一命令セットアーキテクチャISA異種マルチコアマイクロプロセッサを設計することが可能な場合がある。一実施の形態では、チップレベルマルチプロセッサを2つのタイプのプロセッサコアから構築することができる。これら2つのタイプのコアは、ラージコア及びスモールコアと呼ぶことができる。これら2つのタイプのコアは、同じ命令セットアーキテクチャを実施することができ、キャッシュコヒーレンシを使用して共有メモリを実施することができ、それらのマイクロアーキテクチャのみが異なることができる。他の実施の形態では、2つのタイプのコアは、類似の命令セットアーキテクチャを実施することができる。すなわち、スモールコアは、ラージコアの命令セットのサブセットを実施することができる。ラージコアは、アウトオブオーダでスーパースカラーの深いパイプラインマシンとすることができるのに対して、スモールコアは、インオーダのスカラーの短いパイプラインマシンとすることができる。IntelPentium4プロセッサ及びInteli486プロセッサは、これら2つのクラスのコアの代表的なものである。他の実施の形態では、ほぼ同様又は同一の命令セットアーキテクチャを実行する3つ以上のクラスのコア又は3つ以上の性能レベルのコアを使用することができる。一実施の形態では、チップレベルマルチプロセッサは、1つのラージコア及び25個のスモールコアを含む。これら2つのタイプのコアは、電力消費が25:1の比を有し、スカラー性能が5:1の比を有し、5:1レンジの1命令当たりのエネルギーを有する。チップレベルマルチプロセッサ又はこの実施の形態は、以下のように動作することができる。スレッドレベルの並列性が低い段階では、ラージコアが、最良のスカラー性能を得るために実行することができる。スレッドレベルの並列性が高い段階では、複数のスモールコアが、最良のスループット性能を得るために実行することができる。どの瞬間においても、マイクロプロセッサは、1つのラージコア又は25個のスモールコアのいずれかを実行することができる。利用可能なソフトウェアスレッドの個数は、時間と共に変化するので、非対称型マルチプロセッサは、ラージコアとスモールコアとの間でスレッドをマイグレーションできるべきである。スレッドマイグレーションロジックが、この機能をサポートするために実施される場合がある。実際には、ラージコアをオフにスイッチングした時点におけるスループット性能の不連続を低減するために、ラージコアと同時に少数のスモールコアを実行することを可能にすることが望ましい場合がある。前の例では、ラージコアをオフにスイッチングすると共に2つのスモールコアをオンにスイッチングすることに起因して、3ユニットのスループットの不連続が生じる場合がある。たとえば、電源が、5個までのスモールコアをラージコアと同時に実行することを短時間の間サポートする場合に、失われる全スループットの割合を削減するために、この同時実行を可能にすることによって、不連続を、より多数の実行スレッドで発生するように移動させることができる。今日のマイクロプロセッサを代表する2つのタイプのコアを使用すると、4:1レンジの1命令当たりのエネルギーが達成可能である。将来のマイクロプロセッサがさらに高いレベルのスカラー性能を発揮し続けると、可能な1命令当たりのエネルギーのレンジは、おそらく6:1、又は、この比よりもはるかに優れた比に増加すると予想することができる。次に図2を参照すると、一実施の形態による、処理電力及び電力消費によって選択可能なコアを含むプロセッサの概略図が示されている。このプロセッサは、少数のラージコアであるAコアを含むことができ、また、より多数のスモールコアであるコアBも含むことができる。Aコア1220、Aコア2222、及びBコア1230~60262が示されているが、他の実施の形態では、プロセッサに存在するAコアは、2つよりも多くすることもできるし、少なくすることもでき、プロセッサに存在するBコアは、60個よりも多くすることもできるし、少なくすることもできる。スロットルモジュール210は、この場合も、情報を収集して、実行しているソフトウェアプログラムに存在する並列性の量を求めるのに使用することができる。一実施の形態では、並列性の量は、サポートされる同時スレッドの個数とすることができる。他の実施の形態では、上述したように、他のメトリックを使用して、並列性の量を表すことができる。スロットルモジュール210は、オペレーティングシステムによって提供される情報を利用して、並列性の量を求めることを助けることができる。他の実施の形態では、スロットルモジュール210は、プロセッサ内のハードウェアロジック及びプロセッサのコアを使用してこの並列性の量を求めることを行うことができる。この並列性の量を求めることは、連続的に行うこともできるし、定期的に行うこともできる。利用可能なソフトウェアスレッドの個数は、時間と共に変化するので、図1のプロセッサは、ラージAコアとスモールBコアとの間でスレッドをマイグレーションできるスレッドマイグレーションロジック212を含むことができる。ラージAコアをオフにスイッチングした時点におけるスループット性能の不連続を低減するために、ラージAコアと同時に少数のスモールBコアを実行することを可能にすることが望ましい場合がある。失われる全スループットの割合を削減するために、たとえば、5個までのスモールコアをラージコアと同時に実行することを可能にすることによって、不連続を、より多数の実行スレッドで発生するように移動させることができる。スロットルモジュール210は、プログラムにおける並列性の量を求めるごとに、信号線224~266を使用してAコア及びBコアの電源投入又は電源切断を開始することができる。一実施の形態では、現在の並列性の量が以前の量を超え、その超える量がしきい値を超える場合、スロットルモジュール210は、スレッドマイグレーションロジック212を使用して、より多数のBコアで実行できる、より多数のスレッドの実行への移行を開始することができる。以前にオフにされていたBコアをオンにして、それら多数のスレッドをサポートすることができ、オンにされているどのAコアもオフにすることができる。同様に、現在の並列性の量が以前の量を下回り、その下回る量がしきい値を超える場合、スロットルモジュールは、より少数のAコアでスレッドを実行することによって、より少数のスレッドの実行への移行を開始することができる。以前にオンにされていたBコアは、それら少数のスレッドをサポートするのにもはや必要とされる場合はないので、それらのBコアをオフにすることができ、Aコアをオンにして、それら少数のスレッドをサポートすることができる。上述したように、ラージコアをオフにスイッチングした時点におけるスループット性能の不連続を低減するために、Aコアと同時に少数のBコアを実行することを可能にすることが望ましい場合がある。一実施の形態では、スロットルモジュールは、フィードバックループを必要としない方法で実施することができる。この点で、スロットルの制御動作たとえば、どのタイプのいくつのコアがスレッドを実行するかの決定が、入力値たとえば、スレッドのコアの割り当て及び構成に影響を与えるために戻されることはない。この実施の形態では、各Aコア220、222は、Bコア230~262の中の25個と同じ電力量を消費できるものと仮定することができる。他の実施の形態では、異なる電力消費の比を使用することができる。プロセッサは、自身の全電力バジェットを2つの部分に分割することができる。各部分について、その電力バジェットにより、1つのAコア及び5個までのBコアが同時に動作することを可能にすることもできるし、Aコアが動作せず、30個までのBコアが同時に動作することを可能にすることもできる。他の実施の形態では、電力バジェットは、他の方法で複数の部分に分割することができる。一実施の形態では、表Iに従って、実行スレッドRTの個数を或る数量のAコアQAC及び或る数量のBコアQBCに割り当てることができる。実行スレッドの個数が増加し、新しいスレッドが一実施の形態では、プロセッサ間割り込みを介して起動されると、スロットルモジュールは、現在の実行スレッドの個数を求めることができる。現在の実行スレッドの個数に応じて、上記表Iに従い、新しいスレッドをAコア又はBコアのいずれかに割り当てることができる。この実施の形態では、12個のスレッドから13個のスレッドに増加した時、又は36個のスレッドから37個のスレッドに増加した時等の特定の場合に、Aコアで実行されている既存のスレッドは、Bコアにおける実行にマイグレーションされる。このマイグレーションが完了すると、マイグレーションされた既存のスレッド及び新しいスレッドの双方を起動することができる。この理由により、この実施の形態では、新しいスレッドは、起動の際に遅延を示す場合がある。同様のプロセスは、実行スレッドの個数が減少した時にも発生し得る。特定のスレッドが終了し、そのコアが停止されると、さまざまな方法を使用して、残りのスレッドの1つをBコアにおける実行からAコアにおける実行へ、場合によりマイグレーションすることができる。これは、たとえば、実行スレッドの個数を13個のスレッドから12個のスレッドへ、又は37個のスレッドから36個のスレッドへ削減する時に発生する可能性がある。一実施の形態では、周期タイマを使用して、特定の時間間隔に1度だけマイグレーションを可能にすることができる。これによって、スレッドが高速に作成されて終了される場合に、スレッドマイグレーションがあまりにも頻繁に行われることを有利に防止することができる。影響を受けるスレッドは、特定の時間間隔までの間は、Bコアで引き続き実行し続けることができる。一実施の形態では、スロットルモジュールは、AコアからBコアへのマイグレーションを、ソフトウェアにトランスペアレントに行うことができる。スロットルモジュールのスレッドマイグレーションメカニズムは、論理コアを物理コアへマッピングするための表と、コアマイグレーションが必要とされていることを信号で伝えるための割り込みと、コアのプロセッサ状態をコピーするためのマイクロコード又は配線ロジックと、プロセッサのコア間の相互接続ネットワークとを含むことができる。論理コアの個数は、Bコアの個数と等しくすることができる。別の実施の形態では、スロットルモジュールは、AコアからBコアへのマイグレーションを、ソフトウェアにトランスペアレントでない方法で行うことができる。このスレッドマイグレーションは、オペレーティングシステムのスケジューラが行うことができる。オペレーティングシステムは、現在の実行スレッドを有するコアの個数を追跡して、新しいスレッドをコアに割り当て、AコアからBコア又はBコアからAコアへスレッドをマイグレーションすることができる。ソフトウェアスレッドマイグレーションは、ハードウェア実施態様について上述したものと同等の機能を使用することができる。一実施の形態では、スロットルモジュールの動作は、アプリケーションプログラムにはトランスペアレントとすることができるが、オペレーティングシステムにはトランスペアレントでないものとすることができる。電力消費を調節するための1つの代替的な方法は、ロジックブロックのサイズ又は機能を調整することとすることができる。たとえば、大きなアレイサイズが必要とされない場合に、可変サイズのスケジューラ、キャッシュ、変換索引バッファTLB、分岐予測、及び他のオプションの性能回路を使用して、スイッチング容量したがって、エネルギーを削減することができる。アレイを動的にサイズ変更することに加えて、実行ユニット、パイプライン段、及び他のオプションの性能回路を動的に無効化することによって、コアの性能をより小さなコアの性能に低下させるラージコアを設計することも可能である。これらの技法は、まとめて適応型処理として既知である場合がある。チップレベルマルチプロセッサの一実施の形態は、以下のように動作することができる。スレッドの並列性が低い段階では、少数のコアが、良好なスカラー性能を得るために、各コアにおける第1の一組のたとえば、すべて又は多くの利用可能なオプションの性能回路を使用して実行することができる。スレッドの並列性が高い段階では、良好なスループット性能を得るために、各コアにおいて使用するオプションの性能回路をより少なくして多くのコアを動作させることができる。アレイサイズの削減及び実行ユニットの無効化の最終結果は、1命令当たりにトグルされる静電容量を削減することになる場合がある。しかしながら、スイッチング容量は、最初からより小さなコアを設計するほど多く削減されない場合がある。未使用の実行ハードウェアはゲート制御でオフにできるが、コアの物理サイズは変化せず、したがって、まだアクティブであるハードウェアブロックに関連したワイヤの長さは、スモールコアにおける長さよりも依然として長いままである場合がある。1命令当たりの削減可能なエネルギーの推定は、大きなアウトオブオーダマイクロプロセッサの配置図floorplanを調べて、そのプロセッサを小さなインオーダマシンに変換するためにオプションの性能回路をいくつオフにできるかを求めることにより行うことができるブロックは物理的に移動できないことに留意されたい。オフにされたプロセッサコア面積の割合をその後定量化することができる。この定量化によって、スイッチング容量の削減を近似することができる。式2から、1命令当たりのエネルギーは、スイッチング容量の量にほぼ比例する。粗い推定は、場合により、スイッチング容量の50までをオフにできるということになり、その結果、1命令当たりのエネルギーの1倍から2倍の削減となる。いくつかの実施の形態では、クロックゲーティングに加えて、ダイナミックスリープトランジスタ及びボディバイアス等の漏れ制御技法を使用することにより、1命令当たりに消費されるエネルギーの削減を容易にすることができる。次に図3を参照すると、一実施の形態による、オプションの性能回路によって構成可能なコアを含むプロセッサの概略図が示されている。この図3のプロセッサは、コア1320、コア2370、コア3380、及びコア4390の4つのコアを含むことができる。他の実施の形態では、4つよりも多くのコア又は少ないコアを使用することができる。コア1320は、さまざまなオプションの性能回路を示している。スケジューラA334は、オンにされると性能を高めることができるオプションのスケジューラB336に接続することができる。実行ユニット1340は、オンにされると性能を高めることができるオプションの実行ユニット2~4の342、344、346に接続することができる。レベル0L0キャッシュA322は、オンにされると性能を高めることができるL0キャッシュB324に接続することができる。TLBA326は、オンにされると性能を高めることができるTLBB328に接続することができる。再配列バッファROB338は、可変の個数のラインを有することができ、すなわち、完全にオフしてアウトオブオーダ実行を防止することができる。最後に、他のパイプライン段330とは別個のプリフェッチ段332は、電源が投入されると、投機的フェッチを行うことができる。他の実施の形態では、他のオプションの性能回路を使用することができる。スロットルモジュール310は、この場合も、情報を収集して、実行しているソフトウェアプログラムに存在する並列性の量を求めるのに使用することができる。スロットルモジュール310は、図1及び図2に関して上述したものと同様のものとすることができる。スロットルモジュール310は、プログラムにおける並列性の量を求めるごとに、信号線312、314、316、及び318を介してコア320、370、380、及び390に、電源が投入又は切断されるオプションの性能回路の個数を変更するように指示することができる。一実施の形態では、信号線312、314、316、及び318は、コア320、370、380、及び390をオン又はオフにするのに使用することもできる。一実施の形態では、現在の並列性の量が以前の量を超え、その超える量がしきい値を超える場合、スロットルモジュールは、各コアでオンにされているオプションの性能回路を減少させながらより多数のこれらのコアでスレッドを実行することによって、より多数のスレッドの実行への移行を開始することができる。以前にオフにされていたコアをオンにして、より多数のスレッドをサポートすることができる。同様に、現在の並列性の量が以前の量を下回り、その下回る量がしきい値を超える場合、スロットルモジュールは、いくつかのコアでオンにされているオプションの性能回路を増加させながらより少数のこれらのコアでスレッドを実行することによって、より少数のスレッドの実行への移行を開始することができる。以前にオンにされていたいくつかのコアは、より少数のスレッドをサポートするのにもはや必要とされる場合はないので、それらのコアをオフにすることができる。たとえば予測ミスした分岐に続く命令といった投機ミスした命令により浪費されるエネルギーを削減するためのさまざまな形態の投機制御が提案されている。追加されるエネルギーは、投機ミスした命令を処理するためにトグルされる静電容量に起因する。投機ミスした命令の結果は廃棄することができるが、エネルギーはすでに費やされている。このエネルギーは、次の正しく投機リタイヤされた命令にこのエネルギーを充電することによって考慮することができる。パイプラインゲーティングは、1つ又は複数の信頼性の低い分岐予測によって廃棄される可能性のある命令でパイプラインが満たされることを回避するための技法である。投機制御を使用する一実施の形態では、チップレベルマルチプロセッサは、以下のように動作することができる。スレッドの並列性が低い段階では、良好なスカラー性能を得るために、投機の量を増加させて少数のコアを実行することができる。スレッドの並列性が高い段階では、良好なスループット性能を得るために、各コアにおける投機の量を減少させて多くのコアを実行することができる。スケジューラ及び再配列バッファのエントリーの個数を削減することによって、投機できる命令の個数も削減されるので、可変サイズコア技法と投機制御との間には或る重複が存在する。キャッシュ、TLB、分岐予測器等の他のプロセッサ資源のサイズは、可能な投機の量にそれほど大きな影響を与えることはできない。次に図4を参照すると、本開示の一実施の形態による、オプションの投機回路によって構成可能なコアを含むプロセッサの概略図が示されている。この図4のプロセッサは、コア1420、コア2470、コア3480、及びコア4490の4つのコアを含むことができる。他の実施の形態では、4つよりも多くのコア又は少ないコアを使用することができる。コア1420は、さまざまなオプションの投機回路を示している。プリフェッチ段430は、命令を投機的にフェッチするのに使用することができる。分岐予測器434は、プログラムの分岐の投機的実行をサポートするのに使用することができる。他の予測器436は、実施の形態によっては、ループ予測器とすることもできるし、他の形態の投機的実行をサポートするための他の形態の予測器とすることもできる。他の実施の形態では、さらに別のオプションの投機回路を使用することができる。スロットルモジュール410は、この場合も、情報を収集して、実行しているソフトウェアプログラムに存在する並列性の量を求めるのに使用することができる。スロットルモジュール410は、一般的に、図1、図2、及び図3に関して上述したように動作することができる。スロットルモジュール410は、プログラムにおける並列性の量を求めるごとに、信号線412、414、416、及び418を介してコア420、470、480、及び490に、電源が投入又は切断されるオプションの投機回路の個数を変更するように指示することができる。一実施の形態では、信号線412、414、416、及び418は、コア420、470、480、及び490をオン又はオフにするのに使用することもできる。一実施の形態では、現在の並列性の量が以前の量を超え、その超える量がしきい値を超える場合、スロットルモジュールは、各コアでオンにされているオプションの投機回路を減少させながらより多数のこれらのコアでスレッドを実行することによって、より多数のスレッドの実行への移行を開始することができる。以前にオフにされていたコアをオンにして、より多数のスレッドをサポートすることができる。同様に、現在の並列性の量が以前の量を下回り、その下回る量がしきい値を超える場合、スロットルモジュールは、いくつかのコアでオンにされているオプションの投機回路を増加させながらより少数のこれらのコアでスレッドを実行することによって、より少数のスレッドの実行への移行を開始することができる。以前にオンにされていたいくつかのコアは、より少数のスレッドをサポートするのにもはや必要とされる場合はないので、それらのコアをオフにすることができる。図1、図2、図3、及び図4に関して上述した技法のそれぞれについて、スロットルモジュールは、マルチプロセッサの動作を調整して、全チップ電力を一定の電力バジェット内に維持することができる。スロットルモジュールハードウェアは、1秒当たりにリタイヤされる命令の総数に反比例する、1命令当たりのエネルギー量を変化させることによって、式3を満たすことができる。過電力状況に応じて、いくつかの実施の形態では、スロットルモジュールは、以下の動作、すなわち、電圧及び周波数を下げること図1の電圧及び周波数のスケーリングの場合、ラージコアからスモールコアへスレッドをマイグレーションすること図2の非対称型コアの場合、オプションの性能回路部の容量を削減すること図3の可変サイズのコアの場合、又は、投機の量を削減すること図4の投機制御の場合の1つ又は複数を取ることができる。各場合において、たとえ正味のスループットが増加しても、ソフトウェアはより多くのスレッドを同時に実行するようにハードウェアに依頼するので、既存のスレッドはより遅くなるという独特の特性を有するが、ソフトウェアプログラムは、プロセッサを大きな対称型チップレベルマルチプロセッサとみなすことができる。この手法によれば、今日の共有メモリマルチプロセッサプログラミングモデル用に記述されたソフトウェアを、変更することなく、引き続き実行することができる。次に図5を参照すると、本開示の一実施の形態による、コア、及び、スロットルモジュールの細部を含むプロセッサの概略図が示されている。数量Mのプロセッサコア1502~M508は、実施の形態によっては、電圧及び周波数によって構成可能な図1のコア、処理電力及び電力消費が変化する図2のラージコア及びスモールコア、オプションの性能回路によって構成可能な図3のコア、オプションの投機回路によって構成可能な図4のコア、又は、これらのタイプの一部又は全部の混在したものとすることができる。他の実施の形態では、他のタイプのコアを使用することができる。モニタ1512~M518は、関連するコア及び補助的なプロセッサ回路部の1つ又は複数の属性を監視することができる。いくつかの実施の形態では、これらの属性には、コアが実行されているのか又は停止されているのか、1クロックサイクル当たりにリタイヤされる命令の瞬間の個数、コアの所与の機能ブロックがアクティブであるのか又はアイドルであるのか、コア内の機能ブロック以外のプロセッサの所与の機能ブロックがアクティブであるのか又はアイドルであるのか、並びに、コアの電源電流及び温度又はダイの温度が含まれ得る。コア内の機能ブロック以外のプロセッサの機能ブロックには、共有キャッシュ又はメモリコントローラ等の回路が含まれ得る。電源電流は、電流センサ抵抗器及びアナログ/デジタルA/D変換器を介して測定することができる。温度は、サーマルダイオード及びA/D変換器を介して測定することができる。各モニタ1512~M518の出力は、これらの属性のすべて又は或る部分の監視値とすることができる。電力化変換converttopowerロジック530は、モニタ1512~M518から1つ又は複数の監視された値を受け取ることができる。さまざまな実施の形態では、これら監視された値は、電力消費の大きさに変換することができる。監視された値が、コアが実行されているのか又は停止されているのかを反映する一実施の形態では、監視された値は、コアが実行又は停止状態にある間に1クロック当たりに費やされる平均エネルギー量をコアの実行又は停止状態に乗算することによって、電力消費に変換することができる。これらの積は、その後、プロセッサのすべてのコアについて合計することができる。監視された値が、1クロックサイクル当たりにリタイヤされる命令の瞬間の個数を反映する一実施の形態では、監視された値は、その命令数に、1クロック当たりの命令ごとに費やされる平均エネルギー量を乗算することによって電力消費に変換することができる。これらの積は、その後、プロセッサのすべてのコアについて合計することができる。監視された値が、コアの所与の機能ブロックがアクティブであるのか若しくはアイドルであるのか又はいくつかの実施の形態では、コア内の機能ブロック以外のプロセッサの所与の機能ブロックがアクティブであるのか若しくはアイドルであるのかを反映する一実施の形態では、監視された値は、ブロックがアクティブ又はアイドル状態である間に1クロック当たりに費やされる平均エネルギー量をアクティブ又はアイドル状態に乗算することによって電力消費に変換することができる。これらの積は、その後、各コアのすべてのブロックについて合計することができ、そして、プロセッサのすべてのコアについて合計することができる。コアの内部にないブロックが考慮される場合、その積を合計に含めることができる。これらの実施の形態のそれぞれにおいて、結果の合計は、電源電圧の2乗をクロック周波数に乗算したものに比例する値を乗算することによって、電圧及び周波数について調整することができる。監視された値が各コアの電源電流を反映する一実施の形態では、監視された値は、電源電流に電源電圧を乗算することによって電力消費に変換することができる。監視された値がコア又はダイの温度を反映する一実施の形態では、図5の回路を使用して、ほぼ一定の電力消費を維持する代わりに、ほぼ一定のコア又はダイの温度を維持することができる。計算差ロジック534は、電力化変換ロジック530の変換された電力消費又はダイの温度出力と所望の電力消費値又は所望のダイの温度値との間の差を計算するのに使用することができる。この差は、誤差値として使用することができる。積分ロジック538は、一実施の形態では、計算差ロジック534によって供給された誤差値の時間にわたる積分に比例する積分値を提供することができる。一実施の形態では、この積分は、アキュムレータを使用することによって計算することができる。このアキュムレータは、加算器及びレジスタを使用して実施することができる。アキュムレータは、オーバーフローを回避するために上限及び下限の双方で飽和させることができる。一実施の形態では、アキュムレータの出力は、たとえば、2~6ビットの整数ビット及び2~16ビットの小数ビットを有する固定小数点の2進数とすることができる。アキュムレータの最上位ビットを調べることが可能である。これによって、出力をゆるやかに変化させるという特性を有利に与えることができる。積分ロジック538の使用によって、低速フィードバックループ550が時間と共に誤差値を0に削減しようとすることを助けることができる。積分ロジック538の使用は、誤差値が電力である場合に最も有利であり得る。その理由は、瞬間電力消費は、ほぼクロックサイクルごとに変化し得るからである。他の実施の形態では、積分ロジック538を、誤差値に比例する値を与えるロジックと取り替えることができる。このロジックは、誤差値が温度である場合に有利となり得る。別の実施の形態では、このロジックは、誤差値の時間微分又は上記値のすべての或る線形結合に比例した値を与えることができる。サンプルロジック544は、特定の実施の形態で使用することができる。たとえ積分ロジック538からの積分値が理論上は図5のロジックの速度に比べてゆるやかに変化する場合があっても、その集積値は、各クロックサイクルと共に変化する場合がある。いくつかの制御技法は、システムコストをほとんど伴うことなく、クロックサイクルごとにそれらの動作を変化させることができる。この場合、サンプリングは必要とされない場合がある。他の制御技法では、積分ロジック538の出力が遷移点に近くなった時に、各クロックと共に振動する値を低減することを助けるのにサンプリングを使用することが有利な場合がある。一実施の形態では、一定サンプリング技法をサンプルロジック544に使用することができる。一定数Nのクロックサイクルごとに1回値をサンプリングすることができる。これによって、値が、Nクロックサイクルごとに1回よりも高速に変化することを防止することができる。しかしながら、この技法は、Nクロックサイクルよりも短い期間の間制御を行うことを可能にすることができず、積分が、Nクロックサイクルの期間と比較して遅い場合に、最もよく機能することができる。別の実施の形態では、ヒステリシス技法をサンプルロジック544に使用することができる。サンプルロジック544の出力は、入力値と出力値との間の差がしきい値Tを超えた時にのみ変化することができる。この出力値は、差がTを超えた時に入力値と取り替えることができ、そうでない時、出力値は変わらないままにすることができる。低速フィードバックループ550を使用する実施の形態の場合、制御ロジック548を使用することができる。コアが、電源電圧及び周波数を変化させることによって電力消費を変化させることができる図1の実施の形態等の一実施の形態では、制御ロジック548は、電源電圧及び周波数の変更を指示することができる。これらの実施の形態では、電源電圧を変更することは、100マイクロ秒等の比較的長い時間を要する場合があることに留意すべきである。一実施の形態では、表又は論理ブロックを使用して、電源電圧及び周波数を設定することができる。表IIは、制御値CVのさまざまな値についてのこのような表又は論理ブロックの一例を与えている。スレッドをラージコア及びスモールコアに割り当てることができる図2の実施の形態等の一実施の形態では、制御ロジック948は、制御値に従って、ソフトウェアに対してトランスペアレントにスレッドをコアに割り当てることができ、且つ、スレッドをマイグレーションすることができる。スレッドマイグレーションメカニズムは、論理プロセッサコアを物理プロセッサコアにマッピングするための表又は論理ブロックを含むことができる。また、スレッドマイグレーションメカニズムは、マイグレーションが要求されていることを信号で伝えるための割り込みと、プロセッサ状態をコピーするためのマイクロコード又は同等のロジックと、さまざまなプロセッサコア間の相互接続ネットワークとを含むこともできる。ソフトウェアに見える論理プロセッサの個数は、実行されているスモールコアの個数と等しくすることができる。電力バジェットが許す場合には、スモールコアの代わりにラージコアを使用することができる。ラージコアのこのような使用を制御値の関数として配分するbudgetのに使用される表又は論理ブロックは、一実施の形態では、表IIIに与えるものとすることができる。ここで、ラージコアを使用できない時にスモールコアでスレッドを実行するという簡単な仮定を行うことができる。資源を動的に変化させることができるコアにスレッドを割り当てることができる図3の実施の形態等の一実施の形態では、制御ロジック548は、コアの機能ユニットの数量又は容量を変更できる制御値を与えることができる。実施の形態によっては、コアの容量を変化させるのに、アレイを満たすか若しくはライトバックする必要がある場合、又は、パイプラインを補充する必要がある場合に、この変更に使用される時間は、10マイクロ秒の範囲となる場合がある。コアの機能ユニットの使用を制御値の関数として配分するのに、表又は論理ブロックを使用することができる。機能ユニットのこのような使用を制御値の関数として配分するのに使用される表又は論理ブロックは、一実施の形態では、表IVに与えるものとすることができる。ここで、機能ユニットは、コアの実行ユニットとすることができる。投機の量を動的に変化させることができるコアにスレッドを割り当てることができる図4の実施の形態等の一実施の形態では、制御ロジック548は、コアで許可される投機の量を変更できる制御値を与えることができる。コアにおける投機の量の使用を制御値の関数として配分するのに表又は論理ブロックを使用することができる。投機の量を制御値の関数として調整するのに使用される表又は論理ブロックは、一実施の形態では、表Vに与えるものとすることができる。ここで、投機の量は、コアにおいて、非投機的な命令よりも先に投機的に実行される命令の個数によって与えることができる。多くの実施の形態では、プロセッサコアは、上記属性のいくつかを含むことができる。たとえば、プロセッサは、電圧及び周波数のスケーリングが可能なコアを有することができ、また、調整可能な量の投機的実行が可能なコアも有することができる。一実施の形態では、図2のラージAコア及びスモールBコアも、図1に示すような電圧及び周波数のスケーリングを有することができる。一実施の形態について、電圧及び周波数は一定とすることができ、ラージAコアは高電圧で実行するように構成され、スモールBコアは低電圧で実行するように構成される。別の実施の形態では、電圧及び周波数の調整範囲が、ラージAコアとスモールBコアとの間で異なったものとすることができる。ラージAコアとスモールBコアとの間のマイグレーションを援助するために、スモールBコアが最初に、高電圧及び高周波数で実行されている場合に、ラージAコアからスモールBコアへスレッドをマイグレーションすることができる。そのBコアの電圧及び周波数は、その後、ラージAコアが実行されなくなると、下げることができる。この場合も、スレッドをラージAコア又はスモールBコアに割り当てるのに表又は論理ブロックを使用することができ、さらに、スレッドをコアの電圧及び周波数に割り当てるのにも表又は論理ブロックを使用することができる。制御値の関数としてこれらの調整を行うのに使用される表又は論理ブロックは、一実施の形態では、表VIに与えるものとすることができる。低速フィードバックループ550を巡って幾分一定の利得を維持することが有利な場合がある。この幾分一定の利得は、このような表又は論理ブロックの各段階の電力効果を同様の大きさにすることにより達成することができる。特定の実施の形態では、前述した低速フィードバックループ550と併せて高速フィードバックループ560を使用することができる。一実施の形態では、たとえクロックスロットルを行うことが、1命令当たりのエネルギー量に影響を与えることができなくても、クロックスロットル540を使用することができる。クロックスロットル540を使用することは、上述した低速フィードバックループ550技法の1つ又は複数と組み合わせて使用されると有利な場合がある。特定の場合に、待ち時間の短い高速フィードバックループ560を適用して、過電力状況を防止することができ、この適用は、低速フィードバック550が応答時間を有するまでしか効力を持続することができない。高速フィードバックループ960が実施されない実施の形態では、プロセッサ及びその電力供給システムは、低速フィードバックループ550の応答時間の間持続する過電力状況をハンドリングするように設計されるべきである。高速フィードバックループ560が追加される場合、過電力状況は、高速フィードバックループ560の応答時間よりも長く持続することはできない。この応答時間は、10ナノ秒の範囲にすることができる。クロックスロットル540は、その入力として計算差ロジック534で計算された誤差値を使用して、特定のデューティサイクルでコアクロックのオン及びオフをゲート制御するように動作することができる。1つの簡単な実施の形態では、誤差値が一定のしきい値を超えると、所与のサイクル数の間、クロックを停止することができる。この計算は、各クロックサイクルにおいて行うことができ、完全にパイプライン化することができる。この所与のサイクル数は、その電力を、低速フィードバックループ550が応答することを可能にすることができる所望の電力よりも多少大きい電力に制限するように選ぶことができるが、最大電力よりも大きくするように選ぶことはできない。別の実施の形態では、クロックスロットル550は、計算差ロジック535によって供給された誤差値の大きさたとえば、プロセッサが、電力しきい値をどの程度上回って現在実行されているかに応じて、デューティサイクルを調節することができる。一実施の形態では、デューティサイクル及び誤差値を表VIIのように関係付けることができる。次に図6を参照すると、本開示の一実施の形態による、異なるコア構成への移行を示すフローチャートが示されている。このプロセスは、ブロック610で開始する。ブロック610は、さまざまなソフトウェアスレッドを利用可能なコアに割り当てることを含むことができる。一実施の形態では、スレッドの個数が求められ、各スレッドは1つのコアに割り当てられる。実施の形態によっては、この個数を求めることは、オペレーティングシステム等のソフトウェアが行うことができる。他の実施の形態では、この個数を求めることは、ハードウェアロジックが行うこともできるし、ハードウェア及びソフトウェアを組み合わせたものが行うこともできる。ブロック614において、各コアによって消費される電力量が監視され、観測された電力消費と所望の電力消費との間の誤差値が計算される。さまざまな実施の形態では、図5に関して上述した監視技法のいずれも使用することができる。次に、ブロック618において、ブロック614の誤差値は、図5に関して上述したような積分技法若しくはサンプリング技法又はその双方を受けることができる。実施の形態によっては、ブロック618はオプションとすることができる。ブロック618の出力は、或る期間の間の誤差値が、コアの構成を変更する性能ペナルティを正当とするのにほぼ十分であると判断できるまでコアの構成変更を防止できる制御値とすることができる。判定ブロック622において、時間中の誤差値がコアの構成の変更を正当とするのに十分であるかどうかの判断を行うことができる。差が十分でない場合、プロセスは、NOの経路を通って判定ブロック622を出ることができ、プロセスは繰り返す。一方、差が十分である場合、プロセスは、YESの経路を通って判定ブロック622を出ることができる。ブロック626において、電圧及び周波数を制御値に従って変更することができる。一実施の形態では、電圧及び周波数は、上記の表IIで示したように制御値について変更することができる。一実施の形態では、さまざまなコアの電圧及び周波数をすべて同様に変更することができる。他の実施の形態では、電圧及び周波数をさまざまなコアにおいて異なって変更することができる。いずれの場合にも、プロセスはブロック610で繰り返す。次に図7を参照すると、本開示の一実施の形態による、異なるコア構成への移行を示すフローチャートが示されている。このプロセスは、ブロック710で開始する。ブロック710は、さまざまなソフトウェアスレッドを利用可能なコアに割り当てることを含むことができる。一実施の形態では、スレッドの個数が求められ、各スレッドは1つのコアに割り当てられる。実施の形態によっては、この個数を求めることは、オペレーティングシステム等のソフトウェアが行うことができる。他の実施の形態では、この個数を求めることは、ハードウェアロジックが行うこともできるし、ハードウェア及びソフトウェアを組み合わせたものが行うこともできる。ブロック714において、各コアによって消費される電力量が監視され、観測された電力消費と所望の電力消費との間の誤差値が計算される。さまざまな実施の形態では、図5に関して上述した監視技法のいずれも使用することができる。次に、ブロック718において、ブロック714の誤差値は、図5に関して上述したような積分技法若しくはサンプリング技法又はその双方を受けることができる。実施の形態によっては、ブロック718はオプションとすることができる。ブロック718の出力は、或る期間の間の誤差値が、コアの構成を変更する性能ペナルティを正当とするのにほぼ十分であると判断できるまでコアの構成変更を防止できる制御値とすることができる。判定ブロック722において、時間中の誤差値がコアの構成の変更を正当とするのに十分であるかどうかの判断を行うことができる。差が十分でない場合、プロセスは、NOの経路を通って判定ブロック722を出ることができ、プロセスは繰り返す。一方、差が十分である場合、プロセスは、YESの経路を通って判定ブロック722を出ることができる。ブロック726において、制御値に従ってコア間にスレッドを再割り当てすることができる。一実施の形態では、スレッドは、上記の表IIIで示したように、制御値についての特定の個数のラージコアに再割り当てすることができる。一実施の形態では、ラージコアの個数は、表IIIのように与えられ、ラージコアで実行できないスレッドは、スモールコアに再割り当てすることができる。他の実施の形態では、スレッドをコアに再割り当てするための他の方式を使用することができる。いずれの場合にも、プロセスはブロック710で繰り返す。次に図8を参照すると、本開示の一実施の形態による、異なるコア構成への移行を示すフローチャートが示されている。このプロセスは、ブロック810で開始する。ブロック810は、さまざまなソフトウェアスレッドを利用可能なコアに割り当てることを含むことができる。一実施の形態では、スレッドの個数が求められ、各スレッドは1つのコアに割り当てられる。実施の形態によっては、この個数を求めることは、オペレーティングシステム等のソフトウェアが行うことができる。他の実施の形態では、この個数を求めることは、ハードウェアロジックが行うこともできるし、ハードウェア及びソフトウェアを組み合わせたものが行うこともできる。ブロック814において、各コアによって消費される電力量が監視され、観測された電力消費と所望の電力消費との間の誤差値が計算される。さまざまな実施の形態では、図5に関して上述した監視技法のいずれも使用することができる。次に、ブロック818において、ブロック814の誤差値は、図5に関して上述したような積分技法若しくはサンプリング技法又はその双方を受けることができる。実施の形態によっては、ブロック818はオプションとすることができる。ブロック818の出力は、或る期間の間の誤差値が、コアの構成を変更する性能ペナルティを正当とするのにほぼ十分であると判断できるまでコアの構成変更を防止できる制御値とすることができる。判定ブロック822において、時間中の誤差値がコアの構成の変更を正当とするのに十分であるかどうかの判断を行うことができる。差が十分でない場合、プロセスは、NOの経路を通って判定ブロック822を出ることができ、プロセスは繰り返す。一方、差が十分である場合、プロセスは、YESの経路を通って判定ブロック822を出ることができる。ブロック826において、上記の表IVで与えるように、制御値に従った量の、コアのオプションの回路部をオン又はオフにすることができる。一実施の形態では、上記の表IVに示すような制御値について、電源をオン又はオフにされる実行ユニットの個数を変更することができる。他の実施の形態では、他のオプションの性能回路を、制御値に従ってオン又はオフにすることができる。これらの他のオプションの性能回路には、スケジューラ、キャッシュ、変換索引バッファ、スケジューラ、及び再配列バッファが含まれ得る。いずれの場合にも、プロセスはブロック810で繰り返す。次に図9を参照すると、本開示の一実施の形態による、異なるコア構成への移行を示すフローチャートが示されている。このプロセスは、ブロック910で開始する。ブロック910は、さまざまなソフトウェアスレッドを利用可能なコアに割り当てることを含むことができる。一実施の形態では、スレッドの個数が求められ、各スレッドは1つのコアに割り当てられる。実施の形態によっては、この個数を求めることは、オペレーティングシステム等のソフトウェアが行うことができる。他の実施の形態では、この個数を求めることは、ハードウェアロジックが行うこともできるし、ハードウェア及びソフトウェアを組み合わせたものが行うこともできる。ブロック914において、各コアによって消費される電力量が監視され、観測された電力消費と所望の電力消費との間の誤差値が計算される。さまざまな実施の形態では、図5に関して上述した監視技法のいずれも使用することができる。次に、ブロック918において、ブロック914の誤差値は、図5に関して上述したような積分技法若しくはサンプリング技法又はその双方を受けることができる。実施の形態によっては、ブロック918はオプションとすることができる。ブロック918の出力は、或る期間の間の誤差値が、コアの構成を変更する性能ペナルティを正当とするのにほぼ十分であると判断できるまでコアの構成変更を防止できる制御値とすることができる。判定ブロック922において、時間中の誤差値がコアの構成の変更を正当とするのに十分であるかどうかの判断を行うことができる。差が十分でない場合、プロセスは、NOの経路を通って判定ブロック922を出ることができ、プロセスは繰り返す。一方、差が十分である場合、プロセスは、YESの経路を通って判定ブロック922を出ることができる。ブロック926において、コアにおける投機の量を、上記の表Vで与えるように制御値に従って変化させることができる。一実施の形態では、投機的に実行される命令の個数を、上記の表Vに示すような制御値について変更することができる。他の実施の形態では、他の方法を使用して、制御値に従って投機の量を変化させることができる。投機の量を変化させるためのこれらの他の方法は、プリフェッチユニット、分岐予測器、又は別の形態の予測器の電源をオン又はオフにすることを含むことができる。いずれの場合にも、プロセスはブロック910で繰り返す。次に図10A及び図10Bを参照すると、本開示の2つの実施の形態による、スロットル及び複数のコアを有するプロセッサを含むシステムの概略図が示されている。図10Aのシステムは、プロセッサとメモリと入出力デバイスとがシステムバスによって相互接続されているシステムを一般的に示しているのに対して、図10Bのシステムは、プロセッサとメモリと入出力デバイスとが複数のポイントツーポイントインターフェースによって相互接続されているシステムを一般的に示している。図10Aのシステムは、1つ又はいくつかのプロセッサを含むことができ、明確にするためにこれらプロセッサのうちの2つのプロセッサ40、60のみが図10Aに示されている。プロセッサ40、60は、レベル1キャッシュ42、62を含むことができる。図10Aのシステムは、システムバス6とのバスインターフェース44、64、12、8を介して接続されているいくつかの機能を有することができる。一実施の形態では、システムバス6は、Intel登録商標社によって製造されたPentium登録商標クラスのマイクロプロセッサと共に利用されるフロントサイドバスFSBとすることができる。他の実施の形態では、他のバスを使用することができる。実施の形態によっては、メモリコントローラ34及びバスブリッジ32は、まとめてチップセットと呼ばれる場合がある。いくつかの実施の形態では、チップセットの機能は、図10Aの実施の形態で示したようなものとは異なり、複数の物理チップに分割することができる。メモリコントローラ34は、プロセッサ40、60がシステムメモリ10及び基本入出力システムBIOS消去可能プログラマブル読み出し専用メモリEPROM36から読み出し及び書き込みを行うことを可能にすることができる。いくつかの実施の形態では、BIOROM36は、フラッシュメモリを利用することができる。メモリコントローラ34は、メモリ読み出しデータ及びメモリ書き込みデータをシステムバス6のバスエージェントへ運ぶこと、及び、当該バスエージェントから運ぶことを可能にするためのバスインターフェース8を含むことができる。また、メモリコントローラ34は、高性能グラフィックスインターフェース39を通じて、高性能グラフィックス回路38と接続することもできる。特定の実施の形態では、高性能グラフィックスインターフェース39は、アドバンスドグラフィックスポートAGPインターフェースとすることができる。メモリコントローラ34は、システムメモリ10からのデータを、高性能グラフィックスインターフェース39を通じて高性能グラフィックス回路38へ向けることができる。図10Bのシステムも、1つ又はいくつかのプロセッサを含むことができ、明確にするためにこれらプロセッサのうちの2つのプロセッサ70、80のみが示されている。プロセッサ70、80は、それぞれ、メモリ2、4と接続するためのローカルメモリコントローラハブMCH72、82を含むことができる。プロセッサ70、80は、ポイントツーポイントインターフェース回路78、88を使用して、ポイントツーポイントインターフェース50を介してデータを交換することができる。プロセッサ70、80は、それぞれ、ポイントツーポイントインターフェース回路76、94、86、98を使用して、個別のポイントツーポイントインターフェース52、54を介してチップセット90とデータを交換することができる。チップセット90も、高性能グラフィックスインターフェース92を介して高性能グラフィックス回路38とデータを交換することができる。図10Aのシステムでは、バスブリッジ32が、システムバス6とバス16との間のデータ交換を可能にすることができる。バス16は、実施の形態によっては、業界標準アーキテクチャISAバス又は周辺機器相互接続PCIバスとすることができる。図10Bのシステムでは、チップセット90は、バスインターフェース96を介してバス16とデータを交換することができる。いずれのシステムにも、バス16上にさまざまな入出力I/Oデバイス14が存在することができる。これらの入出力I/Oデバイスには、いくつかの実施の形態では、低性能グラフィックスコントローラ、ビデオコントローラ、及びネットワーク接続コントローラが含まれる。別のバスブリッジ18は、実施の形態によっては、バス16とバス20との間のデータ交換を可能にするのに使用することができる。バス20は、実施の形態によっては、小型コンピュータシステムインターフェースSCSIバス、統合ドライブエレクトロニクスIDEバス、又はユニバーサルシリアルバスUSBバスとすることができる。追加のI/Oデバイスをバス20と接続することもできる。これらの追加のI/Oデバイスには、マウスを含むキーボード/カーソル制御デバイス22、音声I/O24、モデム及びネットワークインターフェースを含む通信デバイス26、並びにデータストレージデバイス28が含まれ得る。ソフトウェアコード30は、データストレージデバイス28に記憶することができる。実施の形態によっては、データストレージデバイス28は、固定磁気ディスク、フロッピーディスクドライブ、光ディスクドライブ、光磁気ディスクドライブ、磁気テープ、又はフラッシュメモリを含む不揮発性メモリとすることができる。上記明細書では、本発明をその特定の実施の形態に関して説明してきた。しかしながら、添付の特許請求の範囲で述べられているような本発明のより広い精神及び範囲から逸脱することなく、それら実施の形態に対してさまざまな修正及び変更を行えることは明らかである。本明細書及び図面は、したがって、限定的な意味ではなく例示の意味とみなされるべきである。