(57)【要約】      （修正有）【課題】スカラータスク及び並列タスクの双方においてうまく動作するマイクロプロセッサを提供する。【解決手段】マルチコアプロセッサの構成を変更するための方法及び装置が開示されている。スロットルモジュール（又はスロットルロジック）２１０が、現在実行されているプログラムに存在する並列性の量を求めることができ、さまざまなコアにおけるそのプログラムのスレッドの実行を変更することができる。並列性の量が多い場合には、少ない電力を消費するように構成されたコアで多くの量のスレッドを実行するようにプロセッサを構成することができる。並列性の量が低い場合には、より大きなスカラー性能を得るように構成されたコアで少ない量のスレッドを実行するようにプロセッサを構成することができる。【選択図】図２
2010092483.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサであって、
該プロセッサのコアの属性の値を監視するためのモニタロジックと、
前記コアの前記属性に応じて、該プロセッサの電力消費の大きさを求めるための変換ロジックと、
前記電力消費の大きさに応じて、該プロセッサの１命令当たりのエネルギーのメトリックを調整するための制御ロジックと
を備えるプロセッサ。
【請求項２】
前記コアの前記属性は、コア実行状態である、請求項１に記載のプロセッサ。
【請求項３】
前記電力消費の大きさは、前記コア実行状態に、前記コアが該コア実行状態にある時に１クロック当たりに費やされるエネルギー量を乗算することによって求められる、請求項２に記載のプロセッサ。
【請求項４】
前記コアの前記属性は、１クロック当たりにリタイヤされる命令の個数である、請求項１に記載のプロセッサ。
【請求項５】
前記電力消費の大きさは、１クロック当たりにリタイヤされる命令の前記個数に、１クロック当たりの命令ごとに費やされるエネルギー量を乗算することによって求められる、請求項４に記載のプロセッサ。
【請求項６】
前記コアの前記属性は、前記コアの機能ブロックのアクティブステータスである、請求項１に記載のプロセッサ。
【請求項７】
前記電力消費の大きさは、前記機能ブロックの前記アクティブステータスに、該機能ブロックが該アクティブステータスにある時に１クロック当たりに費やされるエネルギー量を乗算することによって求められる、請求項６に記載のプロセッサ。
【請求項８】
前記属性は、コア電源電流である、請求項１に記載のプロセッサ。
【請求項９】
前記電力消費の大きさは、前記コア電源電流を含む、請求項８に記載のプロセッサ。
【請求項１０】
前記制御ロジックは、前記電力消費の大きさに応じて、前記プロセッサの動作電圧及び動作周波数を調整する、請求項１に記載のプロセッサ。
【請求項１１】
前記制御ロジックは、前記電力消費の大きさに応じて、前記プロセッサのラージコアとスモールコアとの間でプログラムのスレッドをマイグレーションする、請求項１に記載のプロセッサ。
【請求項１２】
前記制御ロジックは、前記電力消費の大きさに応じて、前記プロセッサの前記コアにおけるオプションの性能回路部をオンにする、請求項１に記載のプロセッサ。
【請求項１３】
前記制御ロジックは、前記電力消費の大きさに応じて、前記プロセッサの前記コアにおけるオプションの投機回路部をオンにする、請求項１に記載のプロセッサ。
【請求項１４】
前記電力消費の大きさと所望の電力消費との間の差を計算するための差ロジックをさらに備える、請求項１に記載のプロセッサ。
【請求項１５】
前記電力消費の大きさと所望の電力消費との間の前記差の時間積分を求めるための積分回路部をさらに備える、請求項１４に記載のプロセッサ。
【請求項１６】
サンプリング方法に従って、前記電力消費の大きさを前記制御ロジックに供給するためのサンプリング回路部をさらに備える、請求項１４に記載のプロセッサ。
【請求項１７】
高速フィードバック制御を可能にするためのクロックスロットル回路をさらに備える、請求項１に記載のプロセッサ。
【請求項１８】
プロセッサであって、
第１の複数の第１のタイプのコアと、
第２の複数の第２のタイプのコアと、
前記第１の複数の前記第１のタイプのコア又は前記第２の複数の前記第２のタイプのコアのいずれかの１つにスレッドを割り当てるためのモジュールと
を備えるプロセッサ。
【請求項１９】
前記モジュールは、電力バジェットに従って前記スレッドを割り当てる、請求項１８に記載のプロセッサ。
【請求項２０】
前記モジュールは、割り当て表に従って前記スレッドを割り当てる、請求項１８に記載のプロセッサ。
【請求項２１】
前記モジュールは、前記第２の複数のコアの１つに新しいスレッドを割り当てると共に、前記第１の複数のコアの１つから前記第２の複数のコアの１つへ既存のスレッドをマイグレーションするためのスレッドマイグレーションロジックを含む、請求項１８に記載のプロセッサ。
【請求項２２】
前記スレッドマイグレーションロジックは、論理コアを物理コアにマッピングするための表を含む、請求項２１に記載のプロセッサ。
【請求項２３】
前記スレッドマイグレーションロジックは、オペレーティングシステムスケジューラに応答する、請求項２１に記載のプロセッサ。
【請求項２４】
前記第１のタイプのコアは、設計によって、前記第２のタイプのコアよりも高い性能を有する、請求項１８に記載のプロセッサ。
【請求項２５】
前記第１のタイプのコアは、構成によって、前記第２のタイプのコアよりも高い性能を有する、請求項１８に記載のプロセッサ。
【請求項２６】
方法であって、
一組のスレッドを一組のプロセッサコアに割り当てること、
該プロセッサコアの消費電力を監視すること、
該消費電力と所望の電力との間の誤差値を計算すること、及び
該誤差値に基づいて前記割り当てから移行すること
を含む方法。
【請求項２７】
前記移行することは、前記一組のプロセッサコアにおける性能の高い方のコア及び性能の低い方のコアの間で、前記一組のスレッドの前記割り当てを変更することを含む、請求項２６に記載の方法。
【請求項２８】
前記移行することは、前記一組のプロセッサコアにおいて性能の高い方のコア及び性能の低い方のコアを構成することによって、前記性能の高い方のコア及び前記性能の低い方のコアの間で、前記一組のスレッドの前記割り当てを変更することを含む、請求項２６に記載の方法。
【請求項２９】
前記誤差値を時間にわたって積分することをさらに含む、請求項２６に記載の方法。
【請求項３０】
前記誤差値を時間にわたってサンプリングすることをさらに含む、請求項２６に記載の方法。
【請求項３１】
一組の実行スレッドを決定すること、及び
該スレッドのそれぞれを、一組のプロセッサコアのうちの１つに割り当てること
を含む方法であって、前記割り当てることは、電力バジェットに応答する、方法。
【請求項３２】
前記一組のプロセッサコアは、第１のタイプのコア及び第２のタイプのコアとして動作することができる構成可能なコアを含む、請求項３１に記載の方法。
【請求項３３】
前記一組のプロセッサコアは、第１のタイプのコア及び第２のタイプのコアとして設計されるコアを含む、請求項３１に記載の方法。
【請求項３４】
前記一組のプロセッサコアから第２のタイプのコアに新しいスレッドを割り当てること、及び、前記一組のプロセッサコアにおける第１のタイプのコアから前記第２のタイプのコアへ、前記一組の実行スレッドのうちの１つをマイグレーションすることをさらに含む、請求項３１に記載の方法。
【請求項３５】
前記マイグレーションすることは、スレッドマイグレーションロジックによって行われる、請求項３４に記載の方法。
【請求項３６】
前記マイグレーションすることは、オペレーティングシステムスケジューラに応答する、請求項３４に記載の方法。
【請求項３７】
システムであって、
プロセッサであって、該プロセッサのコアの属性の値を監視するためのモニタロジックと、前記コアの前記属性に応じて、該プロセッサの電力消費の大きさを求めるための変換ロジックと、前記電力消費の大きさに応じて、該プロセッサの１命令当たりのエネルギーのメトリックを調整するための制御ロジックとを備える、プロセッサと、
音声入出力ロジックと、
前記プロセッサを前記音声入出力ロジックに接続するためのインターフェースと
を備えるシステム。
【請求項３８】
前記コアの前記属性はコア実行状態であり、前記電力消費の大きさは、前記コア実行状態に、前記コアが該コア実行状態にある時に１クロック当たりに費やされるエネルギー量を乗算することによって求められる、請求項３７に記載のシステム。
【請求項３９】
前記コアの前記属性は１クロック当たりにリタイヤされる命令の個数であり、前記電力消費の大きさは、１クロック当たりにリタイヤされる命令の前記個数に、１クロック当たりの命令ごとに費やされるエネルギー量を乗算することによって求められる、請求項３７に記載のシステム。
【請求項４０】
前記コアの前記属性は前記コアの機能ブロックのアクティブステータスであり、前記電力消費の大きさは、前記機能ブロックの前記アクティブステータスに、該機能ブロックが該アクティブステータスにある時に１クロック当たりに費やされるエネルギー量を乗算することによって求められる、請求項３７に記載のシステム。
【請求項４１】
前記属性はコア電源電流であり、前記電力消費の大きさは、前記コア電源電流を含む、請求項３７に記載のシステム。
【請求項４２】
前記制御ロジックは、前記電力消費の大きさに応じて、前記プロセッサの動作電圧及び動作周波数を調整する、請求項３７に記載のシステム。
【請求項４３】
前記制御ロジックは、前記電力消費の大きさに応じて、前記プロセッサのラージコアとスモールコアとの間でプログラムのスレッドをマイグレーションする、請求項３７に記載のシステム。
【請求項４４】
前記制御ロジックは、前記電力消費の大きさに応じて、前記プロセッサの前記コアにおけるオプションの性能回路部をオンにする、請求項３７に記載のシステム。
【請求項４５】
前記制御ロジックは、前記電力消費の大きさに応じて、前記プロセッサの前記コアにおけるオプションの投機回路部をオンにする、請求項３７に記載のシステム。
【請求項４５】
前記プロセッサは、前記電力消費の大きさと所望の電力消費との間の差を計算するための差ロジックをさらに備える、請求項３７に記載のシステム。
【請求項４５】
前記プロセッサは、前記電力消費の大きさと所望の電力消費との間の前記差の時間積分を求めるための積分回路部をさらに備える、請求項４５に記載のシステム。
【請求項４６】
サンプリング方法に従って、前記電力消費の大きさを前記制御ロジックに供給するためのサンプリング回路部をさらに備える、請求項４５に記載のプロセッサ。
【請求項４７】
システムであって、
第１の複数の第１のタイプのコアと、第２の複数の第２のタイプのコアと、前記第１の複数の前記第１のタイプのコア又は前記第２の複数の前記第２のタイプのコアのいずれかの１つにスレッドを割り当てるためのモジュールとを含むプロセッサと、
音声入出力ロジックと、
前記プロセッサを前記音声入出力ロジックに接続するためのインターフェースと
を備えるシステム。
【請求項４８】
前記モジュールは、電力バジェットに従って前記スレッドを割り当てる、請求項４７に記載のシステム。
【請求項４９】
前記モジュールは、割り当て表に従って前記スレッドを割り当てる、請求項４７に記載のシステム。
【請求項５０】
前記モジュールは、前記第２の複数のコアの１つに新しいスレッドを割り当てると共に、前記第１の複数のコアの１つから前記第２の複数のコアの１つへ既存のスレッドをマイグレーションするためのスレッドマイグレーションロジックを含む、請求項４７に記載のシステム。
【請求項５１】
前記スレッドマイグレーションロジックは、論理コアを物理コアにマッピングするための表を含む、請求項５０に記載のシステム。
【請求項５２】
プロセッサであって、
一組のスレッドを一組のプロセッサコアに割り当てる手段と、
該プロセッサコアの消費電力を監視する手段と、
該消費電力と所望の電力との間の誤差値を計算する手段と、
該誤差値に基づいて前記割り当てから移行する手段と
を備えるプロセッサ。
【請求項５２】
前記移行する手段は、前記一組のプロセッサコアにおける性能の高い方のコア及び性能の低い方のコアの間で、前記一組のスレッドの前記割り当てを変更する手段を含む、請求項５２に記載のプロセッサ。
【請求項５３】
前記移行する手段は、前記一組のプロセッサコアにおいて性能の高い方のコア及び性能の低い方のコアを構成することによって、前記性能の高い方のコア及び前記性能の低い方のコアの間で、前記一組のスレッドの前記割り当てを変更する手段を含む、請求項５２に記載のプロセッサ。
【請求項５４】
前記誤差値を時間にわたって積分する手段をさらに備える、請求項５２に記載のプロセッサ。
【請求項５５】
前記誤差値を時間にわたってサンプリングする手段をさらに備える、請求項５２に記載のプロセッサ。
【請求項５６】
一組の実行スレッドを決定する手段と、
該スレッドのそれぞれを、一組のプロセッサコアの１つに割り当てる手段と
を備えるプロセッサであって、前記割り当てる手段は、電力バジェットに応答する、プロセッサ。
【請求項５７】
前記一組のプロセッサコアは、第１のタイプのコア及び第２のタイプのコアとして動作することができる構成可能なコアを含む、請求項５６に記載のプロセッサ。
【請求項５８】
前記一組のプロセッサコアは、第１のタイプのコア及び第２のタイプのコアとして設計されるコアを含む、請求項５６に記載のプロセッサ。
【請求項５９】
前記一組のプロセッサコアから第２のタイプのコアに新しいスレッドを割り当てる手段と、前記一組のプロセッサコアにおける第１のタイプのコアから前記第２のタイプのコアへ、前記一組の実行スレッドのうちの１つをマイグレーションする手段とをさらに備える、請求項５６に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、包括的には、変化するスカラー資源所要量及び並列資源所要量を有するプログラムを実行することができるマイクロプロセッサに関し、より具体的には、複数のコアを使用するマイクロプロセッサに関する。
【背景技術】
【０００２】
コンピュータワークロードは、いくつかの実施の形態では、本来的に並列性をほとんど有さない（大部分がスカラーである）ものから、かなりの量の並列性を有する（大部分が並列である）ものまで連続的に及んでおり、この性質は、ソフトウェアのセグメントごとに変化し得る。一般的なスカラーワークロードには、ソフトウェア開発ツール、オフィス生産性スイート、及びオペレーティングシステムカーネルルーチンが含まれる。一般的な並列ワークロードには、３Ｄグラフィックス、メディア処理、及び科学的応用が含まれる。スカラーワークロードは、１クロック当たりの命令数（ＩＰＣ）が０．２〜２．０の範囲で命令をリタイヤさせることができるのに対して、並列ワークロードは、４ＩＰＣ〜数千ＩＰＣの範囲のスループットを達成することができる。後者の高いＩＰＣは、命令レベルの並列性及びスレッドレベルの並列性の使用を通じて取得可能な場合がある。
【０００３】
従来技術のマイクロプロセッサは、多くの場合、スカラー性能又は並列性能のいずれかを主目的として設計されている。高いスカラー性能を達成するには、多くの場合、実行待ち時間をできるだけ削減することが望ましい。有効待ち時間を削減するためのマイクロアーキテクチャ技法には、投機的実行、分岐予測、及びキャッシュが含まれる。高いスカラー性能の追求の結果、パイプラインマイクロプロセッサは、大きなアウトオブオーダの、投機性の高い、深いパイプラインマイクロプロセッサとなっている。高い並列性能を達成するには、できるだけ大きな実行スループット（帯域幅）を提供することが望ましい場合がある。スループットを増大させるためのマイクロアーキテクチャ技法には、幅の広いスーパースカラー処理、単一命令複数データ命令、チップレベルマルチプロセシング、及びマルチスレッド化が含まれる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
問題は、スカラータスク及び並列タスクの双方においてうまく動作するマイクロプロセッサを構築しようとする時に発生し得る。１つの問題は、短い待ち時間を達成するのに必要とされる設計技法が、場合により、高いスループットを達成するのに必要とされる設計技法と非常に異なるという認識から発生し得る。
【０００５】
本発明は、添付図面の図に、限定ではなく一例として示されている。添付図面において、同じ参照符号は同様の構成要素を指す。
【発明を実施するための最良の形態】
【０００６】
以下の説明は、ソフトウェアプログラムにおいて利用可能な並列性の量に従って各命令を処理するのに費やされるエネルギー量を変化させるための技法を記載している。以下の説明では、本発明のより完全な理解を提供するために、ロジック実施態様、ソフトウェアモジュール割り当て、バス及び他のインターフェースシグナリング技法、オペレーションの詳細等の多数の具体的な詳細が述べられている。しかしながら、本発明は、このような具体的な詳細がなくても実施できることが当業者には十分理解されよう。それ以外の場合には、制御構造、ゲートレベルの回路、及び完全なソフトウェア命令シーケンスは、本発明を分かりにくくしないために詳細に示されていない。当業者は、含まれた説明によって、必要以上の実験を行うことなく適切な機能を実施することができる。特定の実施態様では、本発明は、Ｉｎｔｅｌ（登録商標）社によって生産されたようなＰｅｎｔｉｕｍ（登録商標）互換プロセッサのマルチコアの実施態様の形で開示されている。しかしながら、本発明は、Ｉｔａｎｉｕｍプロセッサファミリー互換プロセッサ、Ｘ−Ｓｃａｌｅ（登録商標）ファミリー互換プロセッサ、他のベンダ又は設計者のプロセッサアーキテクチャのいずれかからの多種多様な異なる汎用プロセッサのいずれか等の、他の種類のプロセッサにおいても実施することができる。加えて、いくつかの実施の形態は、グラフィックス、ネットワーク、画像、通信、他の任意の既知のタイプのプロセッサ又は別の方法で利用可能なタイプのプロセッサ等の、専用プロセッサを含むこともできるし、専用プロセッサとすることもできる。
【０００７】
電力効率は、１ワット当たりについての１秒当たりの命令数（ＩＰＳ）の点で測定することができる。ＩＰＳ／ワットのメトリックは、１命令当たりのエネルギーと等価である。より正確には、ＩＰＳ／ワットは、以下のように、１命令当たりのエネルギーの逆数に比例する。
【０００８】
【数１】
2010092483.tif 000003
（１）
【０００９】
１命令当たりのエネルギーのメトリックの重要な特性は、命令を処理するのに必要とされる時間とは独立であるということである。これによって、１命令当たりのエネルギーは、スループット性能にとって役立つメトリックとなる。
【００１０】
マイクロプロセッサの電力消費の近似解析は、命令が処理される度に充電又は放電されるコンデンサとしてマイクロプロセッサをモデル化することにより行うことができる（簡単にするために、漏れ電流及び短絡スイッチング電流は無視することができる）。この前提により、１命令当たりのエネルギーは、２つの事項、すなわち、（フェッチからリタイヤへ）各命令を処理するためにトグルされる静電容量及び電源電圧にのみ依存することができる。コンデンサに標準的に適用される既知の公式
【００１１】
【数２】
2010092483.tif 000004
（２）
【００１２】
をマイクロプロセッサにも同様に適用することができる。Ｅは、１つの命令を処理するのに必要とされるエネルギーであり、Ｃは、その１つの命令を処理する際にトグルされる静電容量であり、Ｖは、電源電圧である。
【００１３】
マイクロプロセッサは、たとえば１００ワット等の一定の電力バジェット内で動作することができる。或る時間にわたって平均化されたマイクロプロセッサの電力消費は、マイクロプロセッサ又はソフトウェアが何を行うかにかかわらず、この電力バジェットを超えるべきではない。この目的を達成するために、マイクロプロセッサは、或る種の動的な温度管理を組み込むことができる。同様に、チップレベルマルチプロセッサは、そのマルチプロセッサが、１クロックあたりの命令数（ＩＰＣ）がたとえば０．２個で命令をリタイヤしているのか、又は２０ＩＰＣで命令をリタイヤしているのかにかかわらず、一定の電力バジェット内に留まるようにそのアクティビティを調整（又はスロットル）することができる。良好な性能を発揮するために、チップレベルマルチプロセッサは、自身のＭＩＰＳ／ワットを変化させることができるべきである。すなわち、自身のエネルギー／命令を、この例では１００：１の範囲にわたって変化させることができるべきである。
【００１４】
高いスカラー性能及び高いスループット性能の双方を達成できるマイクロプロセッサを設計するための１つの手法は、ソフトウェアにおいて利用可能な並列性の量又は利用可能であると推定される並列性の量に従って、各命令を処理するのに費やされるエネルギー量を動的に変化させることである。換言すれば、並列性の量が少ない場合には、マイクロプロセッサは、すべての利用可能なエネルギーを、少数の命令を処理することに費やすことができ、並列性の量がより多い場合には、マイクロプロセッサは、各命令を処理することにほとんどエネルギーを費やすことができない。これは、
【００１５】
【数３】
2010092483.tif 000005
（３）
【００１６】
として表すことができる。ここで、Ｐは、一定の電力バジェットであり、ＥＰＩは、リタイヤされた１命令当たりの平均エネルギーであり、ＩＰＳは、すべてのプロセッサコアにわたって１秒あたりにリタイヤされた命令の総数である。この実施の形態は、全マルチプロセッサチップ電力をほぼ一定のレベルに維持しようと試みるものである。
【００１７】
相補型金属酸化膜半導体（ＣＭＯＳ）の電圧及び周波数のスケーリングは、１命令あたりのエネルギーの比について異なった比を達成するのに使用することができる。一実施の形態では、ロジックが、所望の性能レベル及び電力レベルに従って、マイクロプロセッサの電源電圧及びクロック周波数を調和して変化させる。チップレベルマルチプロセッサの全電力消費を一定の電力バジェット内に維持するために、電圧及び周波数のスケーリングを以下のように動的に適用することができる。スレッドの並列性が低い段階では、最良のスカラー性能を得るために、高い電源電圧及び高い周波数を使用して、少数のコアを実行することができる。スレッドの並列性が高い段階では、最良のスループット性能を得るために、低い電源電圧及び低い周波数を使用して、多数のコアを実行することができる。アクティブでないコアの電力消費は低いことが望ましい場合があるので、ダイナミックスリープトランジスタ（dynamic sleep transistor）やボディバイアス等の漏れ制御技法を使用することができる。
【００１８】
次に図１を参照すると、一実施の形態による、電圧及び周波数によって構成可能なコアを含むプロセッサの概略図が示されている。コア１  １２０、コア２  １３０、コア３  １４０、及びコア４  １５０が示されているが、他の実施の形態では、プロセッサのコアは４つよりも多くすることもできるし、少なくすることもできる。これらのコアの１つ又は複数は、電圧制御回路及びクロック周波数制御回路を有することができる。図１は、コア１  １２０が、電圧制御回路１２２及び周波数制御回路１２４を所有することを明示的に示しているが、他のコアも、同等の回路を同様に有することもできるし、電圧制御ロジック及び周波数制御ロジックを、特定のコアに直接関連付けられていない別個のロジックとすることもできる。
【００１９】
スロットルモジュール１１０は、情報を収集して、実行しているソフトウェアプログラムに存在する並列性の量又はその量の推定値を求めるのに使用することができる。一実施の形態では、並列性の量は、サポートされる同時スレッドの個数とすることができる。他の実施の形態では、１秒あたりにリタイヤされる命令の総数又はマルチスレッド化された投機的実行をサポートできる分岐命令の個数等の、他のメトリックを使用して、並列性の量を表すことができる。スロットルモジュール１１０は、オペレーティングシステムによって提供された情報を利用して、並列性の量を求めるのを助けることができる。他の実施の形態では、スロットルモジュール１１０は、プロセッサ内のハードウェアロジック及びプロセッサのコアを使用してこの並列性の量を求めることを行うことができる。この並列性の量を求めることは、連続的に行うこともできるし、定期的に行うこともできる。
【００２０】
スロットルモジュール１１０は、プログラムにおける並列性の量を求めるごとに、信号線１１２、１１４、１１６、及び１１８を介してコア１２０、１３０、１４０、１５０に、それらの電圧及びクロック周波数を変更するように指示することができる。一実施の形態では、信号線１１２、１１４、１１６、及び１１８は、コアをオン又はオフにするのに使用することもできるし、コアを収容する電力泉（power well）からの電力を除去するのに使用することもできる。他の実施の形態では、コアは、クロックゲーティング技法又は命令スタベーション（instruction starvation）技法によってオフにすることもできる。一実施の形態では、現在のスレッドレベルの並列性の量が以前の量を超え、その超える量がしきい値を超える場合、スロットルモジュールは、各コアの電圧及びクロック周波数を減少させながらより多数のコアでスレッドを実行することによって、より多数のスレッドの実行への移行を開始することができる。以前にオフにされていたコアをオンにして、より多数のスレッドをサポートすることができる。同様に、現在のスレッドレベルの並列性の量が以前の量を下回り、その下回る量がしきい値を超える場合、スロットルモジュールは、いくつかのコアの電圧及びクロック周波数を増加させながらより少数のこれらのコアでスレッドを実行することによって、より少数のスレッドの実行への移行を開始することができる。以前にオンにされていたいくつかのコアは、より少数のスレッドをサポートするのにもはや必要とされる場合はないので、それらのコアをオフにすることができる。
【００２１】
一実施の形態では、異なるマイクロアーキテクチャを使用して或る範囲の性能及び電力を補うことができる単一命令セットアーキテクチャ（ＩＳＡ）異種マルチコアマイクロプロセッサを設計することが可能な場合がある。一実施の形態では、チップレベルマルチプロセッサを２つのタイプのプロセッサコアから構築することができる。これら２つのタイプのコアは、ラージコア及びスモールコアと呼ぶことができる。これら２つのタイプのコアは、同じ命令セットアーキテクチャを実施することができ、キャッシュコヒーレンシを使用して共有メモリを実施することができ、それらのマイクロアーキテクチャのみが異なることができる。他の実施の形態では、２つのタイプのコアは、類似の命令セットアーキテクチャを実施することができる。すなわち、スモールコアは、ラージコアの命令セットのサブセットを実施することができる。ラージコアは、アウトオブオーダでスーパースカラーの深いパイプラインマシンとすることができるのに対して、スモールコアは、インオーダのスカラーの短いパイプラインマシンとすることができる。Ｉｎｔｅｌ  Ｐｅｎｔｉｕｍ４プロセッサ及びＩｎｔｅｌ  ｉ４８６プロセッサは、これら２つのクラスのコアの代表的なものである。他の実施の形態では、ほぼ同様又は同一の命令セットアーキテクチャを実行する３つ以上のクラスのコア又は３つ以上の性能レベルのコアを使用することができる。
【００２２】
一実施の形態では、チップレベルマルチプロセッサは、１つのラージコア及び２５個のスモールコアを含む。これら２つのタイプのコアは、電力消費が２５：１の比を有し、スカラー性能が５：１の比を有し、５：１レンジの１命令当たりのエネルギーを有する。チップレベルマルチプロセッサ又はこの実施の形態は、以下のように動作することができる。スレッドレベルの並列性が低い段階では、ラージコアが、最良のスカラー性能を得るために実行することができる。スレッドレベルの並列性が高い段階では、複数のスモールコアが、最良のスループット性能を得るために実行することができる。
【００２３】
どの瞬間においても、マイクロプロセッサは、１つのラージコア又は２５個のスモールコアのいずれかを実行することができる。利用可能なソフトウェアスレッドの個数は、時間と共に変化するので、非対称型マルチプロセッサは、ラージコアとスモールコアとの間でスレッドをマイグレーションできるべきである。スレッドマイグレーションロジックが、この機能をサポートするために実施される場合がある。
【００２４】
実際には、ラージコアをオフにスイッチングした時点におけるスループット性能の不連続を低減するために、ラージコアと同時に少数のスモールコアを実行することを可能にすることが望ましい場合がある。前の例では、ラージコアをオフにスイッチングすると共に２つのスモールコアをオンにスイッチングすることに起因して、３ユニットのスループットの不連続が生じる場合がある。たとえば、電源が、５個までのスモールコアをラージコアと同時に実行することを短時間の間サポートする場合に、失われる全スループットの割合を削減するために、この同時実行を可能にすることによって、不連続を、より多数の実行スレッドで発生するように移動させることができる。
【００２５】
今日のマイクロプロセッサを代表する２つのタイプのコアを使用すると、４：１レンジの１命令当たりのエネルギーが達成可能である。将来のマイクロプロセッサがさらに高いレベルのスカラー性能を発揮し続けると、可能な１命令当たりのエネルギーのレンジは、おそらく６：１、又は、この比よりもはるかに優れた比に増加すると予想することができる。
【００２６】
次に図２を参照すると、一実施の形態による、処理電力及び電力消費によって選択可能なコアを含むプロセッサの概略図が示されている。このプロセッサは、少数のラージコアであるＡコアを含むことができ、また、より多数のスモールコアであるコアＢも含むことができる。Ａコア１  ２２０、Ａコア２  ２２２、及びＢコア１  ２３０〜６０  ２６２が示されているが、他の実施の形態では、プロセッサに存在するＡコアは、２つよりも多くすることもできるし、少なくすることもでき、プロセッサに存在するＢコアは、６０個よりも多くすることもできるし、少なくすることもできる。
【００２７】
スロットルモジュール２１０は、この場合も、情報を収集して、実行しているソフトウェアプログラムに存在する並列性の量を求めるのに使用することができる。一実施の形態では、並列性の量は、サポートされる同時スレッドの個数とすることができる。他の実施の形態では、上述したように、他のメトリックを使用して、並列性の量を表すことができる。スロットルモジュール２１０は、オペレーティングシステムによって提供される情報を利用して、並列性の量を求めることを助けることができる。他の実施の形態では、スロットルモジュール２１０は、プロセッサ内のハードウェアロジック及びプロセッサのコアを使用してこの並列性の量を求めることを行うことができる。この並列性の量を求めることは、連続的に行うこともできるし、定期的に行うこともできる。
【００２８】
利用可能なソフトウェアスレッドの個数は、時間と共に変化するので、図１のプロセッサは、ラージＡコアとスモールＢコアとの間でスレッドをマイグレーションできるスレッドマイグレーションロジック２１２を含むことができる。ラージＡコアをオフにスイッチングした時点におけるスループット性能の不連続を低減するために、ラージＡコアと同時に少数のスモールＢコアを実行することを可能にすることが望ましい場合がある。失われる全スループットの割合を削減するために、たとえば、５個までのスモールコアをラージコアと同時に実行することを可能にすることによって、不連続を、より多数の実行スレッドで発生するように移動させることができる。
【００２９】
スロットルモジュール２１０は、プログラムにおける並列性の量を求めるごとに、信号線２２４〜２６６を使用してＡコア及びＢコアの電源投入又は電源切断を開始することができる。一実施の形態では、現在の並列性の量が以前の量を超え、その超える量がしきい値を超える場合、スロットルモジュール２１０は、スレッドマイグレーションロジック２１２を使用して、より多数のＢコアで実行できる、より多数のスレッドの実行への移行を開始することができる。以前にオフにされていたＢコアをオンにして、それら多数のスレッドをサポートすることができ、オンにされているどのＡコアもオフにすることができる。同様に、現在の並列性の量が以前の量を下回り、その下回る量がしきい値を超える場合、スロットルモジュールは、より少数のＡコアでスレッドを実行することによって、より少数のスレッドの実行への移行を開始することができる。以前にオンにされていたＢコアは、それら少数のスレッドをサポートするのにもはや必要とされる場合はないので、それらのＢコアをオフにすることができ、Ａコアをオンにして、それら少数のスレッドをサポートすることができる。上述したように、ラージコアをオフにスイッチングした時点におけるスループット性能の不連続を低減するために、Ａコアと同時に少数のＢコアを実行することを可能にすることが望ましい場合がある。
【００３０】
一実施の形態では、スロットルモジュールは、フィードバックループを必要としない方法で実施することができる。この点で、スロットルの制御動作（たとえば、どのタイプのいくつのコアがスレッドを実行するかの決定）が、入力値（たとえば、スレッドのコアの割り当て及び構成）に影響を与えるために戻されることはない。この実施の形態では、各Ａコア２２０、２２２は、Ｂコア２３０〜２６２の中の２５個と同じ電力量を消費できるものと仮定することができる。他の実施の形態では、異なる電力消費の比を使用することができる。プロセッサは、自身の全電力バジェットを２つの部分に分割することができる。各部分について、その電力バジェットにより、１つのＡコア及び５個までのＢコアが同時に動作することを可能にすることもできるし、Ａコアが動作せず、３０個までのＢコアが同時に動作することを可能にすることもできる。他の実施の形態では、電力バジェットは、他の方法で複数の部分に分割することができる。
【００３１】
一実施の形態では、表Ｉに従って、実行スレッド（ＲＴ）の個数を或る数量のＡコア（ＱＡＣ）及び或る数量のＢコア（ＱＢＣ）に割り当てることができる。
【００３２】
【表１】
2010092483.tif 000006
【００３３】
実行スレッドの個数が増加し、新しいスレッドが（一実施の形態では、プロセッサ間割り込みを介して）起動されると、スロットルモジュールは、現在の実行スレッドの個数を求めることができる。現在の実行スレッドの個数に応じて、上記表Ｉに従い、新しいスレッドをＡコア又はＢコアのいずれかに割り当てることができる。この実施の形態では、１２個のスレッドから１３個のスレッドに増加した時、又は３６個のスレッドから３７個のスレッドに増加した時等の特定の場合に、Ａコアで実行されている既存のスレッドは、Ｂコアにおける実行にマイグレーションされる。このマイグレーションが完了すると、マイグレーションされた既存のスレッド及び新しいスレッドの双方を起動することができる。この理由により、この実施の形態では、新しいスレッドは、起動の際に遅延を示す場合がある。
【００３４】
同様のプロセスは、実行スレッドの個数が減少した時にも発生し得る。特定のスレッドが終了し、そのコアが停止されると、さまざまな方法を使用して、残りのスレッドの１つをＢコアにおける実行からＡコアにおける実行へ、場合によりマイグレーションすることができる。これは、たとえば、実行スレッドの個数を１３個のスレッドから１２個のスレッドへ、又は３７個のスレッドから３６個のスレッドへ削減する時に発生する可能性がある。一実施の形態では、周期タイマを使用して、特定の時間間隔に１度だけマイグレーションを可能にすることができる。これによって、スレッドが高速に作成されて終了される場合に、スレッドマイグレーションがあまりにも頻繁に行われることを有利に防止することができる。影響を受けるスレッドは、特定の時間間隔までの間は、Ｂコアで引き続き実行し続けることができる。
【００３５】
一実施の形態では、スロットルモジュールは、ＡコアからＢコアへのマイグレーションを、ソフトウェアにトランスペアレントに行うことができる。スロットルモジュールのスレッドマイグレーションメカニズムは、論理コアを物理コアへマッピングするための表と、コアマイグレーションが必要とされていることを信号で伝えるための割り込みと、コアのプロセッサ状態をコピーするためのマイクロコード又は配線ロジックと、プロセッサのコア間の相互接続ネットワークとを含むことができる。論理コアの個数は、Ｂコアの個数と等しくすることができる。
【００３６】
別の実施の形態では、スロットルモジュールは、ＡコアからＢコアへのマイグレーションを、ソフトウェアにトランスペアレントでない方法で行うことができる。このスレッドマイグレーションは、オペレーティングシステムのスケジューラが行うことができる。オペレーティングシステムは、現在の実行スレッドを有するコアの個数を追跡して、新しいスレッドをコアに割り当て、ＡコアからＢコア（又はＢコアからＡコアへ）スレッドをマイグレーションすることができる。ソフトウェアスレッドマイグレーションは、ハードウェア実施態様について上述したものと同等の機能を使用することができる。一実施の形態では、スロットルモジュールの動作は、アプリケーションプログラムにはトランスペアレントとすることができるが、オペレーティングシステムにはトランスペアレントでないものとすることができる。
【００３７】
電力消費を調節するための１つの代替的な方法は、ロジックブロックのサイズ又は機能を調整することとすることができる。たとえば、大きなアレイサイズが必要とされない場合に、可変サイズのスケジューラ、キャッシュ、変換索引バッファ（ＴＬＢ）、分岐予測、及び他のオプションの性能回路を使用して、スイッチング容量（したがって、エネルギー）を削減することができる。アレイを動的にサイズ変更することに加えて、実行ユニット、パイプライン段、及び他のオプションの性能回路を動的に無効化することによって、コアの性能をより小さなコアの性能に低下させるラージコアを設計することも可能である。これらの技法は、まとめて適応型処理として既知である場合がある。
【００３８】
チップレベルマルチプロセッサの一実施の形態は、以下のように動作することができる。スレッドの並列性が低い段階では、少数のコアが、良好なスカラー性能を得るために、各コアにおける第１の一組の（たとえば、すべて又は多くの）利用可能なオプションの性能回路を使用して実行することができる。スレッドの並列性が高い段階では、良好なスループット性能を得るために、各コアにおいて使用するオプションの性能回路をより少なくして多くのコアを動作させることができる。
【００３９】
アレイサイズの削減及び実行ユニットの無効化の最終結果は、１命令当たりにトグルされる静電容量を削減することになる場合がある。しかしながら、スイッチング容量は、最初からより小さなコアを設計するほど多く削減されない場合がある。未使用の実行ハードウェアはゲート制御でオフにできるが、コアの物理サイズは変化せず、したがって、まだアクティブであるハードウェアブロックに関連したワイヤの長さは、スモールコアにおける長さよりも依然として長いままである場合がある。
【００４０】
１命令当たりの削減可能なエネルギーの推定は、大きなアウトオブオーダマイクロプロセッサの配置図（floorplan）を調べて、そのプロセッサを小さなインオーダマシンに変換するためにオプションの性能回路をいくつオフにできるかを求めることにより行うことができる（ブロックは物理的に移動できないことに留意されたい）。オフにされたプロセッサコア面積の割合をその後定量化することができる。この定量化によって、スイッチング容量の削減を近似することができる。式（２）から、１命令当たりのエネルギーは、スイッチング容量の量にほぼ比例する。
【００４１】
粗い推定は、場合により、スイッチング容量の５０％までをオフにできるということになり、その結果、１命令当たりのエネルギーの１倍から２倍の削減となる。いくつかの実施の形態では、クロックゲーティングに加えて、ダイナミックスリープトランジスタ及びボディバイアス等の漏れ制御技法を使用することにより、１命令当たりに消費されるエネルギーの削減を容易にすることができる。
【００４２】
次に図３を参照すると、一実施の形態による、オプションの性能回路によって構成可能なコアを含むプロセッサの概略図が示されている。この図３のプロセッサは、コア１  ３２０、コア２  ３７０、コア３  ３８０、及びコア４  ３９０の４つのコアを含むことができる。他の実施の形態では、４つよりも多くのコア又は少ないコアを使用することができる。コア１  ３２０は、さまざまなオプションの性能回路を示している。スケジューラＡ  ３３４は、オンにされると性能を高めることができるオプションのスケジューラＢ  ３３６に接続することができる。実行ユニット１  ３４０は、オンにされると性能を高めることができるオプションの実行ユニット２〜４の３４２、３４４、３４６に接続することができる。レベル０（Ｌ０）キャッシュＡ  ３２２は、オンにされると性能を高めることができるＬ０キャッシュＢ  ３２４に接続することができる。ＴＬＢ  Ａ  ３２６は、オンにされると性能を高めることができるＴＬＢ  Ｂ  ３２８に接続することができる。再配列バッファ（ＲＯＢ）３３８は、可変の個数のラインを有することができ、すなわち、完全にオフしてアウトオブオーダ実行を防止することができる。最後に、他のパイプライン段３３０とは別個のプリフェッチ段３３２は、電源が投入されると、投機的フェッチを行うことができる。他の実施の形態では、他のオプションの性能回路を使用することができる。
【００４３】
スロットルモジュール３１０は、この場合も、情報を収集して、実行しているソフトウェアプログラムに存在する並列性の量を求めるのに使用することができる。スロットルモジュール３１０は、図１及び図２に関して上述したものと同様のものとすることができる。スロットルモジュール３１０は、プログラムにおける並列性の量を求めるごとに、信号線３１２、３１４、３１６、及び３１８を介してコア３２０、３７０、３８０、及び３９０に、電源が投入又は切断されるオプションの性能回路の個数を変更するように指示することができる。一実施の形態では、信号線３１２、３１４、３１６、及び３１８は、コア３２０、３７０、３８０、及び３９０をオン又はオフにするのに使用することもできる。一実施の形態では、現在の並列性の量が以前の量を超え、その超える量がしきい値を超える場合、スロットルモジュールは、各コアでオンにされているオプションの性能回路を減少させながらより多数のこれらのコアでスレッドを実行することによって、より多数のスレッドの実行への移行を開始することができる。以前にオフにされていたコアをオンにして、より多数のスレッドをサポートすることができる。同様に、現在の並列性の量が以前の量を下回り、その下回る量がしきい値を超える場合、スロットルモジュールは、いくつかのコアでオンにされているオプションの性能回路を増加させながらより少数のこれらのコアでスレッドを実行することによって、より少数のスレッドの実行への移行を開始することができる。以前にオンにされていたいくつかのコアは、より少数のスレッドをサポートするのにもはや必要とされる場合はないので、それらのコアをオフにすることができる。
【００４４】
たとえば予測ミスした分岐に続く命令といった投機ミスした命令により浪費されるエネルギーを削減するためのさまざまな形態の投機制御が提案されている。追加されるエネルギーは、投機ミスした命令を処理するためにトグルされる静電容量に起因する。投機ミスした命令の結果は廃棄することができるが、エネルギーはすでに費やされている。このエネルギーは、次の正しく投機（リタイヤ）された命令にこのエネルギーを充電することによって考慮することができる。
【００４５】
パイプラインゲーティングは、１つ又は複数の信頼性の低い分岐予測によって廃棄される可能性のある命令でパイプラインが満たされることを回避するための技法である。投機制御を使用する一実施の形態では、チップレベルマルチプロセッサは、以下のように動作することができる。スレッドの並列性が低い段階では、良好なスカラー性能を得るために、投機の量を増加させて少数のコアを実行することができる。スレッドの並列性が高い段階では、良好なスループット性能を得るために、各コアにおける投機の量を減少させて多くのコアを実行することができる。
【００４６】
スケジューラ及び再配列バッファのエントリーの個数を削減することによって、投機できる命令の個数も削減されるので、可変サイズコア技法と投機制御との間には或る重複が存在する。キャッシュ、ＴＬＢ、分岐予測器等の他のプロセッサ資源のサイズは、可能な投機の量にそれほど大きな影響を与えることはできない。
【００４７】
次に図４を参照すると、本開示の一実施の形態による、オプションの投機回路によって構成可能なコアを含むプロセッサの概略図が示されている。この図４のプロセッサは、コア１  ４２０、コア２  ４７０、コア３  ４８０、及びコア４  ４９０の４つのコアを含むことができる。他の実施の形態では、４つよりも多くのコア又は少ないコアを使用することができる。コア１  ４２０は、さまざまなオプションの投機回路を示している。プリフェッチ段４３０は、命令を投機的にフェッチするのに使用することができる。分岐予測器４３４は、プログラムの分岐の投機的実行をサポートするのに使用することができる。他の予測器４３６は、実施の形態によっては、ループ予測器とすることもできるし、他の形態の投機的実行をサポートするための他の形態の予測器とすることもできる。他の実施の形態では、さらに別のオプションの投機回路を使用することができる。
【００４８】
スロットルモジュール４１０は、この場合も、情報を収集して、実行しているソフトウェアプログラムに存在する並列性の量を求めるのに使用することができる。スロットルモジュール４１０は、一般的に、図１、図２、及び図３に関して上述したように動作することができる。スロットルモジュール４１０は、プログラムにおける並列性の量を求めるごとに、信号線４１２、４１４、４１６、及び４１８を介してコア４２０、４７０、４８０、及び４９０に、電源が投入又は切断されるオプションの投機回路の個数を変更するように指示することができる。一実施の形態では、信号線４１２、４１４、４１６、及び４１８は、コア４２０、４７０、４８０、及び４９０をオン又はオフにするのに使用することもできる。一実施の形態では、現在の並列性の量が以前の量を超え、その超える量がしきい値を超える場合、スロットルモジュールは、各コアでオンにされているオプションの投機回路を減少させながらより多数のこれらのコアでスレッドを実行することによって、より多数のスレッドの実行への移行を開始することができる。以前にオフにされていたコアをオンにして、より多数のスレッドをサポートすることができる。同様に、現在の並列性の量が以前の量を下回り、その下回る量がしきい値を超える場合、スロットルモジュールは、いくつかのコアでオンにされているオプションの投機回路を増加させながらより少数のこれらのコアでスレッドを実行することによって、より少数のスレッドの実行への移行を開始することができる。以前にオンにされていたいくつかのコアは、より少数のスレッドをサポートするのにもはや必要とされる場合はないので、それらのコアをオフにすることができる。
【００４９】
図１、図２、図３、及び図４に関して上述した技法のそれぞれについて、スロットルモジュールは、マルチプロセッサの動作を調整して、全チップ電力を一定の電力バジェット内に維持することができる。スロットルモジュールハードウェアは、１秒当たりにリタイヤされる命令の総数に反比例する、１命令当たりのエネルギー量を変化させることによって、式（３）を満たすことができる。過電力状況に応じて、いくつかの実施の形態では、スロットルモジュールは、以下の動作、すなわち、電圧及び周波数を下げること（図１の電圧及び周波数のスケーリングの場合）、ラージコアからスモールコアへスレッドをマイグレーションすること（図２の非対称型コアの場合）、オプションの性能回路部の容量を削減すること（図３の可変サイズのコアの場合）、又は、投機の量を削減すること（図４の投機制御の場合）の１つ又は複数を取ることができる。
【００５０】
各場合において、たとえ正味のスループットが増加しても、ソフトウェアはより多くのスレッドを同時に実行するようにハードウェアに依頼するので、既存のスレッドはより遅くなるという独特の特性を有するが、ソフトウェアプログラムは、プロセッサを大きな対称型チップレベルマルチプロセッサとみなすことができる。この手法によれば、今日の共有メモリマルチプロセッサプログラミングモデル用に記述されたソフトウェアを、変更することなく、引き続き実行することができる。
【００５１】
次に図５を参照すると、本開示の一実施の形態による、コア、及び、スロットルモジュールの細部を含むプロセッサの概略図が示されている。数量Ｍのプロセッサコア１  ５０２〜Ｍ  ５０８は、実施の形態によっては、電圧及び周波数によって構成可能な図１のコア、処理電力及び電力消費が変化する図２のラージコア及びスモールコア、オプションの性能回路によって構成可能な図３のコア、オプションの投機回路によって構成可能な図４のコア、又は、これらのタイプの一部又は全部の混在したものとすることができる。他の実施の形態では、他のタイプのコアを使用することができる。
【００５２】
モニタ１  ５１２〜Ｍ  ５１８は、関連するコア及び補助的なプロセッサ回路部の１つ又は複数の属性を監視することができる。いくつかの実施の形態では、これらの属性には、コアが実行されているのか又は停止されているのか、１クロックサイクル当たりにリタイヤされる命令の瞬間の個数、コアの所与の機能ブロックがアクティブであるのか又はアイドルであるのか、コア内の機能ブロック以外のプロセッサの所与の機能ブロックがアクティブであるのか又はアイドルであるのか、並びに、コアの電源電流及び温度（又はダイの温度）が含まれ得る。コア内の機能ブロック以外のプロセッサの機能ブロックには、共有キャッシュ又はメモリコントローラ等の回路が含まれ得る。電源電流は、電流センサ抵抗器及びアナログ／デジタル（Ａ／Ｄ）変換器を介して測定することができる。温度は、サーマルダイオード及びＡ／Ｄ変換器を介して測定することができる。各モニタ１  ５１２〜Ｍ  ５１８の出力は、これらの属性のすべて又は或る部分の監視値とすることができる。
【００５３】
電力化変換（convert-to-power）ロジック５３０は、モニタ１  ５１２〜Ｍ  ５１８から１つ又は複数の監視された値を受け取ることができる。さまざまな実施の形態では、これら監視された値は、電力消費の大きさに変換することができる。監視された値が、コアが実行されているのか又は停止されているのかを反映する一実施の形態では、監視された値は、コアが実行（又は停止）状態にある間に１クロック当たりに費やされる平均エネルギー量をコアの実行（又は停止）状態に乗算することによって、電力消費に変換することができる。これらの積は、その後、プロセッサのすべてのコアについて合計することができる。監視された値が、１クロックサイクル当たりにリタイヤされる命令の瞬間の個数を反映する一実施の形態では、監視された値は、その命令数に、１クロック当たりの命令ごとに費やされる平均エネルギー量を乗算することによって電力消費に変換することができる。これらの積は、その後、プロセッサのすべてのコアについて合計することができる。監視された値が、コアの所与の機能ブロックがアクティブであるのか若しくはアイドルであるのか（又はいくつかの実施の形態では、コア内の機能ブロック以外のプロセッサの所与の機能ブロックがアクティブであるのか若しくはアイドルであるのか）を反映する一実施の形態では、監視された値は、ブロックがアクティブ（又はアイドル）状態である間に１クロック当たりに費やされる平均エネルギー量をアクティブ（又はアイドル）状態に乗算することによって電力消費に変換することができる。これらの積は、その後、各コアのすべてのブロックについて合計することができ、そして、プロセッサのすべてのコアについて合計することができる。コアの内部にないブロックが考慮される場合、その積を合計に含めることができる。これらの実施の形態のそれぞれにおいて、結果の合計は、電源電圧の２乗をクロック周波数に乗算したものに比例する値を乗算することによって、電圧及び周波数について調整することができる。
【００５４】
監視された値が各コアの電源電流を反映する一実施の形態では、監視された値は、電源電流に電源電圧を乗算することによって電力消費に変換することができる。
【００５５】
監視された値がコア又はダイの温度を反映する一実施の形態では、図５の回路を使用して、ほぼ一定の電力消費を維持する代わりに、ほぼ一定のコア又はダイの温度を維持することができる。
【００５６】
計算差ロジック５３４は、電力化変換ロジック５３０の変換された電力消費（又はダイの温度）出力と所望の電力消費値（又は所望のダイの温度値）との間の差を計算するのに使用することができる。この差は、「誤差」値として使用することができる。
【００５７】
積分ロジック５３８は、一実施の形態では、計算差ロジック５３４によって供給された誤差値の時間にわたる積分に比例する積分値を提供することができる。一実施の形態では、この積分は、アキュムレータを使用することによって計算することができる。このアキュムレータは、加算器及びレジスタを使用して実施することができる。アキュムレータは、オーバーフローを回避するために上限及び下限の双方で飽和させることができる。一実施の形態では、アキュムレータの出力は、たとえば、２〜６ビットの整数ビット及び２〜１６ビットの小数ビットを有する固定小数点の２進数とすることができる。アキュムレータの最上位ビットを調べることが可能である。これによって、出力をゆるやかに変化させるという特性を有利に与えることができる。積分ロジック５３８の使用によって、低速フィードバックループ５５０が時間と共に誤差値を０に削減しようとすることを助けることができる。積分ロジック５３８の使用は、誤差値が電力である場合に最も有利であり得る。その理由は、瞬間電力消費は、ほぼクロックサイクルごとに変化し得るからである。
【００５８】
他の実施の形態では、積分ロジック５３８を、誤差値に比例する値を与えるロジックと取り替えることができる。このロジックは、誤差値が温度である場合に有利となり得る。別の実施の形態では、このロジックは、誤差値の時間微分又は上記値のすべての或る線形結合に比例した値を与えることができる。
【００５９】
サンプルロジック５４４は、特定の実施の形態で使用することができる。たとえ積分ロジック５３８からの積分値が理論上は図５のロジックの速度に比べてゆるやかに変化する場合があっても、その集積値は、各クロックサイクルと共に変化する場合がある。いくつかの制御技法は、システムコストをほとんど伴うことなく、クロックサイクルごとにそれらの動作を変化させることができる。この場合、サンプリングは必要とされない場合がある。他の制御技法では、積分ロジック５３８の出力が遷移点に近くなった時に、各クロックと共に振動する値を低減することを助けるのにサンプリングを使用することが有利な場合がある。
【００６０】
一実施の形態では、一定サンプリング技法をサンプルロジック５４４に使用することができる。一定数Ｎのクロックサイクルごとに１回値をサンプリングすることができる。これによって、値が、Ｎクロックサイクルごとに１回よりも高速に変化することを防止することができる。しかしながら、この技法は、Ｎクロックサイクルよりも短い期間の間制御を行うことを可能にすることができず、積分が、Ｎクロックサイクルの期間と比較して遅い場合に、最もよく機能することができる。
【００６１】
別の実施の形態では、ヒステリシス技法をサンプルロジック５４４に使用することができる。サンプルロジック５４４の出力は、入力値と出力値との間の差がしきい値Ｔを超えた時にのみ変化することができる。この出力値は、差がＴを超えた時に入力値と取り替えることができ、そうでない時、出力値は変わらないままにすることができる。
【００６２】
低速フィードバックループ５５０を使用する実施の形態の場合、制御ロジック５４８を使用することができる。コアが、電源電圧及び周波数を変化させることによって電力消費を変化させることができる図１の実施の形態等の一実施の形態では、制御ロジック５４８は、電源電圧及び周波数の変更を指示することができる。これらの実施の形態では、電源電圧を変更することは、１００マイクロ秒等の比較的長い時間を要する場合があることに留意すべきである。一実施の形態では、表又は論理ブロックを使用して、電源電圧及び周波数を設定することができる。表ＩＩは、制御値（ＣＶ）のさまざまな値についてのこのような表又は論理ブロックの一例を与えている。
【００６３】
【表２】
2010092483.tif 000007
【００６４】
スレッドをラージコア及びスモールコアに割り当てることができる図２の実施の形態等の一実施の形態では、制御ロジック９４８は、制御値に従って、ソフトウェアに対してトランスペアレントにスレッドをコアに割り当てることができ、且つ、スレッドをマイグレーションすることができる。スレッドマイグレーションメカニズムは、「論理」プロセッサコアを「物理」プロセッサコアにマッピングするための表又は論理ブロックを含むことができる。また、スレッドマイグレーションメカニズムは、マイグレーションが要求されていることを信号で伝えるための割り込みと、プロセッサ状態をコピーするためのマイクロコード又は同等のロジックと、さまざまなプロセッサコア間の相互接続ネットワークとを含むこともできる。ソフトウェアに見える論理プロセッサの個数は、実行されているスモールコアの個数と等しくすることができる。電力バジェットが許す場合には、スモールコアの代わりにラージコアを使用することができる。ラージコアのこのような使用を制御値の関数として配分する（budget）のに使用される表又は論理ブロックは、一実施の形態では、表ＩＩＩに与えるものとすることができる。
【００６５】
【表３】
2010092483.tif 000008
【００６６】
ここで、ラージコアを使用できない時にスモールコアでスレッドを実行するという簡単な仮定を行うことができる。
【００６７】
資源を動的に変化させることができるコアにスレッドを割り当てることができる図３の実施の形態等の一実施の形態では、制御ロジック５４８は、コアの機能ユニットの数量又は容量を変更できる制御値を与えることができる。実施の形態によっては、コアの容量を変化させるのに、アレイを満たすか若しくはライトバックする必要がある場合、又は、パイプラインを補充する必要がある場合に、この変更に使用される時間は、１０マイクロ秒の範囲となる場合がある。コアの機能ユニットの使用を制御値の関数として配分するのに、表又は論理ブロックを使用することができる。機能ユニットのこのような使用を制御値の関数として配分するのに使用される表又は論理ブロックは、一実施の形態では、表ＩＶに与えるものとすることができる。ここで、機能ユニットは、コアの実行ユニットとすることができる。
【００６８】
【表４】
2010092483.tif 000009
【００６９】
投機の量を動的に変化させることができるコアにスレッドを割り当てることができる図４の実施の形態等の一実施の形態では、制御ロジック５４８は、コアで許可される投機の量を変更できる制御値を与えることができる。コアにおける投機の量の使用を制御値の関数として配分するのに表又は論理ブロックを使用することができる。投機の量を制御値の関数として調整するのに使用される表又は論理ブロックは、一実施の形態では、表Ｖに与えるものとすることができる。ここで、投機の量は、コアにおいて、非投機的な命令よりも先に投機的に実行される命令の個数によって与えることができる。
【００７０】
【表５】
2010092483.tif 000010
【００７１】
多くの実施の形態では、プロセッサコアは、上記属性のいくつかを含むことができる。たとえば、プロセッサは、電圧及び周波数のスケーリングが可能なコアを有することができ、また、調整可能な量の投機的実行が可能なコアも有することができる。一実施の形態では、図２のラージＡコア及びスモールＢコアも、図１に示すような電圧及び周波数のスケーリングを有することができる。一実施の形態について、電圧及び周波数は一定とすることができ、ラージＡコアは高電圧で実行するように構成され、スモールＢコアは低電圧で実行するように構成される。別の実施の形態では、電圧及び周波数の調整範囲が、ラージＡコアとスモールＢコアとの間で異なったものとすることができる。ラージＡコアとスモールＢコアとの間のマイグレーションを援助するために、スモールＢコアが最初に、高電圧及び高周波数で実行されている場合に、ラージＡコアからスモールＢコアへスレッドをマイグレーションすることができる。そのＢコアの電圧及び周波数は、その後、ラージＡコアが実行されなくなると、下げることができる。
【００７２】
この場合も、スレッドをラージＡコア又はスモールＢコアに割り当てるのに表又は論理ブロックを使用することができ、さらに、スレッドをコアの電圧及び周波数に割り当てるのにも表又は論理ブロックを使用することができる。制御値の関数としてこれらの調整を行うのに使用される表又は論理ブロックは、一実施の形態では、表ＶＩに与えるものとすることができる。
【００７３】
【表６】
2010092483.tif 000011
【００７４】
低速フィードバックループ５５０を巡って幾分一定の利得を維持することが有利な場合がある。この幾分一定の利得は、このような表又は論理ブロックの各段階の電力効果を同様の大きさにすることにより達成することができる。
【００７５】
特定の実施の形態では、前述した低速フィードバックループ５５０と併せて高速フィードバックループ５６０を使用することができる。一実施の形態では、たとえクロックスロットルを行うことが、１命令当たりのエネルギー量に影響を与えることができなくても、クロックスロットル５４０を使用することができる。クロックスロットル５４０を使用することは、上述した低速フィードバックループ５５０技法の１つ又は複数と組み合わせて使用されると有利な場合がある。
【００７６】
特定の場合に、待ち時間の短い高速フィードバックループ５６０を適用して、過電力状況を防止することができ、この適用は、低速フィードバック５５０が応答時間を有するまでしか効力を持続することができない。高速フィードバックループ９６０が実施されない実施の形態では、プロセッサ及びその電力供給システムは、低速フィードバックループ５５０の応答時間の間持続する過電力状況をハンドリングするように設計されるべきである。高速フィードバックループ５６０が追加される場合、過電力状況は、高速フィードバックループ５６０の応答時間よりも長く持続することはできない。この応答時間は、１０ナノ秒の範囲にすることができる。
【００７７】
クロックスロットル５４０は、その入力として計算差ロジック５３４で計算された誤差値を使用して、特定のデューティサイクルでコアクロックのオン及びオフをゲート制御するように動作することができる。１つの簡単な実施の形態では、誤差値が一定のしきい値を超えると、所与のサイクル数の間、クロックを停止することができる。この計算は、各クロックサイクルにおいて行うことができ、完全にパイプライン化することができる。この所与のサイクル数は、その電力を、（低速フィードバックループ５５０が応答することを可能にすることができる）所望の電力よりも多少大きい電力に制限するように選ぶことができるが、最大電力よりも大きくするように選ぶことはできない。
【００７８】
別の実施の形態では、クロックスロットル５５０は、計算差ロジック５３５によって供給された誤差値の大きさ（たとえば、プロセッサが、電力しきい値をどの程度上回って現在実行されているか）に応じて、デューティサイクルを調節することができる。一実施の形態では、デューティサイクル及び誤差値を表ＶＩＩのように関係付けることができる。
【００７９】
【表７】
2010092483.tif 000012
【００８０】
次に図６を参照すると、本開示の一実施の形態による、異なるコア構成への移行を示すフローチャートが示されている。このプロセスは、ブロック６１０で開始する。ブロック６１０は、さまざまなソフトウェアスレッドを利用可能なコアに割り当てることを含むことができる。一実施の形態では、スレッドの個数が求められ、各スレッドは１つのコアに割り当てられる。実施の形態によっては、この個数を求めることは、オペレーティングシステム等のソフトウェアが行うことができる。他の実施の形態では、この個数を求めることは、ハードウェアロジックが行うこともできるし、ハードウェア及びソフトウェアを組み合わせたものが行うこともできる。ブロック６１４において、各コアによって消費される電力量が監視され、観測された電力消費と所望の電力消費との間の誤差値が計算される。さまざまな実施の形態では、図５に関して上述した監視技法のいずれも使用することができる。次に、ブロック６１８において、ブロック６１４の誤差値は、図５に関して上述したような積分技法若しくはサンプリング技法又はその双方を受けることができる。実施の形態によっては、ブロック６１８はオプションとすることができる。ブロック６１８の出力は、或る期間の間の誤差値が、コアの構成を変更する性能ペナルティを正当とするのにほぼ十分であると判断できるまでコアの構成変更を防止できる制御値とすることができる。
【００８１】
判定ブロック６２２において、時間中の誤差値がコアの構成の変更を正当とするのに十分であるかどうかの判断を行うことができる。差が十分でない場合、プロセスは、ＮＯの経路を通って判定ブロック６２２を出ることができ、プロセスは繰り返す。一方、差が十分である場合、プロセスは、ＹＥＳの経路を通って判定ブロック６２２を出ることができる。
【００８２】
ブロック６２６において、電圧及び周波数を制御値に従って変更することができる。一実施の形態では、電圧及び周波数は、上記の表ＩＩで示したように制御値について変更することができる。一実施の形態では、さまざまなコアの電圧及び周波数をすべて同様に変更することができる。他の実施の形態では、電圧及び周波数をさまざまなコアにおいて異なって変更することができる。いずれの場合にも、プロセスはブロック６１０で繰り返す。
【００８３】
次に図７を参照すると、本開示の一実施の形態による、異なるコア構成への移行を示すフローチャートが示されている。このプロセスは、ブロック７１０で開始する。ブロック７１０は、さまざまなソフトウェアスレッドを利用可能なコアに割り当てることを含むことができる。一実施の形態では、スレッドの個数が求められ、各スレッドは１つのコアに割り当てられる。実施の形態によっては、この個数を求めることは、オペレーティングシステム等のソフトウェアが行うことができる。他の実施の形態では、この個数を求めることは、ハードウェアロジックが行うこともできるし、ハードウェア及びソフトウェアを組み合わせたものが行うこともできる。ブロック７１４において、各コアによって消費される電力量が監視され、観測された電力消費と所望の電力消費との間の誤差値が計算される。さまざまな実施の形態では、図５に関して上述した監視技法のいずれも使用することができる。次に、ブロック７１８において、ブロック７１４の誤差値は、図５に関して上述したような積分技法若しくはサンプリング技法又はその双方を受けることができる。実施の形態によっては、ブロック７１８はオプションとすることができる。ブロック７１８の出力は、或る期間の間の誤差値が、コアの構成を変更する性能ペナルティを正当とするのにほぼ十分であると判断できるまでコアの構成変更を防止できる制御値とすることができる。
【００８４】
判定ブロック７２２において、時間中の誤差値がコアの構成の変更を正当とするのに十分であるかどうかの判断を行うことができる。差が十分でない場合、プロセスは、ＮＯの経路を通って判定ブロック７２２を出ることができ、プロセスは繰り返す。一方、差が十分である場合、プロセスは、ＹＥＳの経路を通って判定ブロック７２２を出ることができる。
【００８５】
ブロック７２６において、制御値に従ってコア間にスレッドを再割り当てすることができる。一実施の形態では、スレッドは、上記の表ＩＩＩで示したように、制御値についての特定の個数のラージコアに再割り当てすることができる。一実施の形態では、ラージコアの個数は、表ＩＩＩのように与えられ、ラージコアで実行できないスレッドは、スモールコアに再割り当てすることができる。他の実施の形態では、スレッドをコアに再割り当てするための他の方式を使用することができる。いずれの場合にも、プロセスはブロック７１０で繰り返す。
【００８６】
次に図８を参照すると、本開示の一実施の形態による、異なるコア構成への移行を示すフローチャートが示されている。このプロセスは、ブロック８１０で開始する。ブロック８１０は、さまざまなソフトウェアスレッドを利用可能なコアに割り当てることを含むことができる。一実施の形態では、スレッドの個数が求められ、各スレッドは１つのコアに割り当てられる。実施の形態によっては、この個数を求めることは、オペレーティングシステム等のソフトウェアが行うことができる。他の実施の形態では、この個数を求めることは、ハードウェアロジックが行うこともできるし、ハードウェア及びソフトウェアを組み合わせたものが行うこともできる。ブロック８１４において、各コアによって消費される電力量が監視され、観測された電力消費と所望の電力消費との間の誤差値が計算される。さまざまな実施の形態では、図５に関して上述した監視技法のいずれも使用することができる。次に、ブロック８１８において、ブロック８１４の誤差値は、図５に関して上述したような積分技法若しくはサンプリング技法又はその双方を受けることができる。実施の形態によっては、ブロック８１８はオプションとすることができる。ブロック８１８の出力は、或る期間の間の誤差値が、コアの構成を変更する性能ペナルティを正当とするのにほぼ十分であると判断できるまでコアの構成変更を防止できる制御値とすることができる。
【００８７】
判定ブロック８２２において、時間中の誤差値がコアの構成の変更を正当とするのに十分であるかどうかの判断を行うことができる。差が十分でない場合、プロセスは、ＮＯの経路を通って判定ブロック８２２を出ることができ、プロセスは繰り返す。一方、差が十分である場合、プロセスは、ＹＥＳの経路を通って判定ブロック８２２を出ることができる。
【００８８】
ブロック８２６において、上記の表ＩＶで与えるように、制御値に従った量の、コアのオプションの回路部をオン又はオフにすることができる。一実施の形態では、上記の表ＩＶに示すような制御値について、電源をオン又はオフにされる実行ユニットの個数を変更することができる。他の実施の形態では、他のオプションの性能回路を、制御値に従ってオン又はオフにすることができる。これらの他のオプションの性能回路には、スケジューラ、キャッシュ、変換索引バッファ、スケジューラ、及び再配列バッファが含まれ得る。いずれの場合にも、プロセスはブロック８１０で繰り返す。
【００８９】
次に図９を参照すると、本開示の一実施の形態による、異なるコア構成への移行を示すフローチャートが示されている。このプロセスは、ブロック９１０で開始する。ブロック９１０は、さまざまなソフトウェアスレッドを利用可能なコアに割り当てることを含むことができる。一実施の形態では、スレッドの個数が求められ、各スレッドは１つのコアに割り当てられる。実施の形態によっては、この個数を求めることは、オペレーティングシステム等のソフトウェアが行うことができる。他の実施の形態では、この個数を求めることは、ハードウェアロジックが行うこともできるし、ハードウェア及びソフトウェアを組み合わせたものが行うこともできる。ブロック９１４において、各コアによって消費される電力量が監視され、観測された電力消費と所望の電力消費との間の誤差値が計算される。さまざまな実施の形態では、図５に関して上述した監視技法のいずれも使用することができる。次に、ブロック９１８において、ブロック９１４の誤差値は、図５に関して上述したような積分技法若しくはサンプリング技法又はその双方を受けることができる。実施の形態によっては、ブロック９１８はオプションとすることができる。ブロック９１８の出力は、或る期間の間の誤差値が、コアの構成を変更する性能ペナルティを正当とするのにほぼ十分であると判断できるまでコアの構成変更を防止できる制御値とすることができる。
【００９０】
判定ブロック９２２において、時間中の誤差値がコアの構成の変更を正当とするのに十分であるかどうかの判断を行うことができる。差が十分でない場合、プロセスは、ＮＯの経路を通って判定ブロック９２２を出ることができ、プロセスは繰り返す。一方、差が十分である場合、プロセスは、ＹＥＳの経路を通って判定ブロック９２２を出ることができる。
【００９１】
ブロック９２６において、コアにおける投機の量を、上記の表Ｖで与えるように制御値に従って変化させることができる。一実施の形態では、投機的に実行される命令の個数を、上記の表Ｖに示すような制御値について変更することができる。他の実施の形態では、他の方法を使用して、制御値に従って投機の量を変化させることができる。投機の量を変化させるためのこれらの他の方法は、プリフェッチユニット、分岐予測器、又は別の形態の予測器の電源をオン又はオフにすることを含むことができる。いずれの場合にも、プロセスはブロック９１０で繰り返す。
【００９２】
次に図１０Ａ及び図１０Ｂを参照すると、本開示の２つの実施の形態による、スロットル及び複数のコアを有するプロセッサを含むシステムの概略図が示されている。図１０Ａのシステムは、プロセッサとメモリと入出力デバイスとがシステムバスによって相互接続されているシステムを一般的に示しているのに対して、図１０Ｂのシステムは、プロセッサとメモリと入出力デバイスとが複数のポイントツーポイントインターフェースによって相互接続されているシステムを一般的に示している。
【００９３】
図１０Ａのシステムは、１つ又はいくつかのプロセッサを含むことができ、明確にするためにこれらプロセッサのうちの２つのプロセッサ４０、６０のみが図１０Ａに示されている。プロセッサ４０、６０は、レベル１キャッシュ４２、６２を含むことができる。図１０Ａのシステムは、システムバス６とのバスインターフェース４４、６４、１２、８を介して接続されているいくつかの機能を有することができる。一実施の形態では、システムバス６は、Ｉｎｔｅｌ（登録商標）社によって製造されたＰｅｎｔｉｕｍ（登録商標）クラスのマイクロプロセッサと共に利用されるフロントサイドバス（ＦＳＢ）とすることができる。他の実施の形態では、他のバスを使用することができる。実施の形態によっては、メモリコントローラ３４及びバスブリッジ３２は、まとめてチップセットと呼ばれる場合がある。いくつかの実施の形態では、チップセットの機能は、図１０Ａの実施の形態で示したようなものとは異なり、複数の物理チップに分割することができる。
【００９４】
メモリコントローラ３４は、プロセッサ４０、６０がシステムメモリ１０及び基本入出力システム（ＢＩＯＳ）消去可能プログラマブル読み出し専用メモリ（ＥＰＲＯＭ）３６から読み出し及び書き込みを行うことを可能にすることができる。いくつかの実施の形態では、ＢＩＯＳ  ＥＰＲＯＭ３６は、フラッシュメモリを利用することができる。メモリコントローラ３４は、メモリ読み出しデータ及びメモリ書き込みデータをシステムバス６のバスエージェントへ運ぶこと、及び、当該バスエージェントから運ぶことを可能にするためのバスインターフェース８を含むことができる。また、メモリコントローラ３４は、高性能グラフィックスインターフェース３９を通じて、高性能グラフィックス回路３８と接続することもできる。特定の実施の形態では、高性能グラフィックスインターフェース３９は、アドバンスドグラフィックスポートＡＧＰインターフェースとすることができる。メモリコントローラ３４は、システムメモリ１０からのデータを、高性能グラフィックスインターフェース３９を通じて高性能グラフィックス回路３８へ向けることができる。
【００９５】
図１０Ｂのシステムも、１つ又はいくつかのプロセッサを含むことができ、明確にするためにこれらプロセッサのうちの２つのプロセッサ７０、８０のみが示されている。プロセッサ７０、８０は、それぞれ、メモリ２、４と接続するためのローカルメモリコントローラハブ（ＭＣＨ）７２、８２を含むことができる。プロセッサ７０、８０は、ポイントツーポイントインターフェース回路７８、８８を使用して、ポイントツーポイントインターフェース５０を介してデータを交換することができる。プロセッサ７０、８０は、それぞれ、ポイントツーポイントインターフェース回路７６、９４、８６、９８を使用して、個別のポイントツーポイントインターフェース５２、５４を介してチップセット９０とデータを交換することができる。チップセット９０も、高性能グラフィックスインターフェース９２を介して高性能グラフィックス回路３８とデータを交換することができる。
【００９６】
図１０Ａのシステムでは、バスブリッジ３２が、システムバス６とバス１６との間のデータ交換を可能にすることができる。バス１６は、実施の形態によっては、業界標準アーキテクチャ（ＩＳＡ）バス又は周辺機器相互接続（ＰＣＩ）バスとすることができる。図１０Ｂのシステムでは、チップセット９０は、バスインターフェース９６を介してバス１６とデータを交換することができる。いずれのシステムにも、バス１６上にさまざまな入出力Ｉ／Ｏデバイス１４が存在することができる。これらの入出力Ｉ／Ｏデバイスには、いくつかの実施の形態では、低性能グラフィックスコントローラ、ビデオコントローラ、及びネットワーク接続コントローラが含まれる。別のバスブリッジ１８は、実施の形態によっては、バス１６とバス２０との間のデータ交換を可能にするのに使用することができる。バス２０は、実施の形態によっては、小型コンピュータシステムインターフェース（ＳＣＳＩ）バス、統合ドライブエレクトロニクス（ＩＤＥ）バス、又はユニバーサルシリアルバス（ＵＳＢ）バスとすることができる。追加のＩ／Ｏデバイスをバス２０と接続することもできる。これらの追加のＩ／Ｏデバイスには、マウスを含むキーボード／カーソル制御デバイス２２、音声Ｉ／Ｏ２４、モデム及びネットワークインターフェースを含む通信デバイス２６、並びにデータストレージデバイス２８が含まれ得る。ソフトウェアコード３０は、データストレージデバイス２８に記憶することができる。実施の形態によっては、データストレージデバイス２８は、固定磁気ディスク、フロッピーディスクドライブ、光ディスクドライブ、光磁気ディスクドライブ、磁気テープ、又はフラッシュメモリを含む不揮発性メモリとすることができる。
【００９７】
上記明細書では、本発明をその特定の実施の形態に関して説明してきた。しかしながら、添付の特許請求の範囲で述べられているような本発明のより広い精神及び範囲から逸脱することなく、それら実施の形態に対してさまざまな修正及び変更を行えることは明らかである。本明細書及び図面は、したがって、限定的な意味ではなく例示の意味とみなされるべきである。
【図面の簡単な説明】
【００９８】
【図１】一実施の形態による、電圧及び周波数によって構成可能なコアを含むプロセッサの概略図である。
【図２】一実施の形態による、処理電力及び電力消費によって選択可能なコアを含むプロセッサの概略図である。
【図３】一実施の形態による、オプションの性能回路によって構成可能なコアを含むプロセッサの概略図である。
【図４】本開示の一実施の形態による、オプションの投機回路によって構成可能なコアを含むプロセッサの概略図である。
【図５】本開示の一実施の形態による、コア、及び、スロットルの細部を含むプロセッサの概略図である。
【図６】本開示の一実施の形態による、異なるコア構成への移行を示すフローチャートである。
【図７】本開示の別の実施の形態による、異なるコア構成への移行を示すフローチャートである。
【図８】本開示の別の実施の形態による、異なるコア構成への移行を示すフローチャートである。
【図９】本開示の別の実施の形態による、異なるコア構成への移行を示すフローチャートである。
【図１０Ａ】本開示の一実施の形態による、スロットル及び複数のコアを有するプロセッサを含むシステムの概略図である。
【図１０Ｂ】本開示の別の実施の形態による、スロットル及び複数のコアを有するプロセッサを含むシステムの概略図である。
【図１】
2010092483.tif 000013
【図２】
2010092483.tif 000014
【図３】
2010092483.tif 000015
【図４】
2010092483.tif 000016
【図５】
2010092483.tif 000017
【図６】
2010092483.tif 000018
【図７】
2010092483.tif 000019
【図８】
2010092483.tif 000020
【図９】
2010092483.tif 000021
【図１０Ａ】
2010092483.tif 000022
【図１０Ｂ】
2010092483.tif 000023
【手続補正書】
【提出日】平成21年11月4日(2009.11.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
高い性能を有する第１の一組のコアおよび低い性能を有する第２の一組のコアを含む、複数の非対称型コアと、
前記高い性能を有する第１の一組のコアおよび前記低い性能を有する第２の一組のコアに接続された、スレッドマイグレーションロジックと、
を備え、
スレッドに対して要求される計算要求が所定の量より少なくなったことを検知することに応じて、前記スレッドマイグレーションロジックは、前記高い性能を有する第１の一組のコアの第１のコアから、前記低い性能を有する第２の一組のコアの第２のコアに、前記スレッドの実行をマイグレーションする、プロセッサ。
【請求項２】
前記スレッドマイグレーションロジックは、論理コアを物理コアへマッピングするための表を有する、請求項１に記載のプロセッサ。
【請求項３】
前記スレッドマイグレーションロジックは、さらに、前記第１の一組のコアおよび前記第２の一組のコアに関連付けられた電源電流を含む電力消費の大きさに応じてマイグレーションする、請求項１に記載のプロセッサ。
【請求項４】
前記スレッドマイグレーションロジックは、複数の前記第１の一組のコアおよび前記第２の一組のコアと、複数の前記第１の一組のコアおよび前記第２の一組のコアに割り当てられた任意の数の現在の実行スレッドと、を追跡するオペレーティングシステムに関連付けられたオペレーティングシステムのスケジューラに応じてマイグレーションする、請求項１に記載のプロセッサ。
【請求項５】
前記スレッドマイグレーションロジックは、さらに、マイグレーションをトリガする特定の時間間隔を発生する周期タイマに応じてマイグレーションする、請求項１に記載のプロセッサ。
【請求項６】
少なくとも１つのコアが、命令プリフェッチモジュールおよび命令デコーダを有する、異なる性能および電力特性の複数の非対称型コアと、
前記複数の非対称型コアに接続され、現在実行されているプログラムの計算特性を判定する、ロジックと、
前記複数の非対称型コアに接続され、判定された前記計算特性の少なくとも一部に基づいて、前記複数の非対称型コアの間で、前記現在実行されているプログラムの１つまたは複数のスレッドの実行をマイグレーションする、スレッドマイグレーションロジックと、
を備えるプロセッサ。
【請求項７】
前記スレッドマイグレーションロジックは、論理コアを物理コアへマッピングするための表を有する、請求項６に記載のプロセッサ。
【請求項８】
前記スレッドマイグレーションロジックは、さらに、第１の一組のコアおよび第２の一組のコアに関連付けられた電源電流を含む電力消費の大きさに応じてマイグレーションする、請求項６に記載のプロセッサ。
【請求項９】
前記スレッドマイグレーションロジックは、複数の第１の一組のコアおよび第２の一組のコアと、前記複数の第１の一組のコアおよび第２の一組のコアに割り当てられた任意の数の現在の実行スレッドと、を追跡するオペレーティングシステムに関連付けられたオペレーティングシステムのスケジューラに応じてマイグレーションする、請求項６に記載のプロセッサ。
【請求項１０】
前記スレッドマイグレーションロジックは、さらに、マイグレーションをトリガする特定の時間間隔を発生する周期タイマに応じてマイグレーションする、請求項６に記載のプロセッサ。
【請求項１１】
高い性能を有する第１の一組のコアおよび低い性能を有する第２の一組のコアを含む、複数の非対称型コアと、前記高い性能を有する第１の一組のコアおよび前記低い性能を有する第２の一組のコアに接続された、スレッドマイグレーションロジックと、を有するプロセッサと、
前記プロセッサに接続されたストレージ媒体と、
を備え、
前記スレッドマイグレーションロジックは、スレッドに対して要求される計算要求が所定の量より少なくなったことを検知することに応じて、前記スレッドマイグレーションロジックは、前記高い性能を有する第１の一組のコアの第１のコアから、前記低い性能を有する第２の一組のコアの第２のコアに、前記スレッドの実行をマイグレーションする、コンピュータシステム。
【請求項１２】
前記スレッドマイグレーションロジックは、論理コアを物理コアへマッピングするための表を有する、請求項１１に記載のコンピュータシステム。
【請求項１３】
前記スレッドマイグレーションロジックは、さらに、前記第１の一組のコアおよび前記第２の一組のコアに関連付けられた電源電流を含む電力消費の大きさに応じてマイグレーションする、請求項１１に記載のコンピュータシステム。
【請求項１４】
前記スレッドマイグレーションロジックは、さらに、複数の前記第１の一組のコアおよび前記第２の一組のコアと、複数の前記第１の一組のコアおよび前記第２の一組のコアに割り当てられた任意の数の現在の実行スレッドと、を追跡するオペレーティングシステムに関連付けられたオペレーティングシステムのスケジューラに応じてマイグレーションする、請求項１１に記載のコンピュータシステム。
【請求項１５】
前記スレッドマイグレーションロジックは、さらに、マイグレーションをトリガする特定の時間間隔を発生する周期タイマに応じてマイグレーションする、請求項１１に記載のコンピュータシステム。
【請求項１６】
少なくとも１つのコアが、命令プリフェッチモジュールおよび命令デコーダを有する、異なる性能および電力特性の複数の非対称型コアと、前記複数の非対称型コアに接続され、現在実行されているプログラムの計算特性を判定する、ロジックと、前記複数の非対称型コアに接続され、判定された前記計算特性の少なくとも一部に基づいて、前記複数の非対称型コアの間で、前記現在実行されているプログラムの１つまたは複数のスレッドの実行をマイグレーションする、スレッドマイグレーションロジックと、を有するプロセッサと、
前記プロセッサに接続されたストレージ媒体と、
を備えるコンピュータシステム。
【請求項１７】
前記スレッドマイグレーションロジックは、論理コアを物理コアへマッピングするための表を有する、請求項１６に記載のコンピュータシステム。
【請求項１８】
前記スレッドマイグレーションロジックは、さらに、第１の一組のコアおよび第２の一組のコアに関連付けられた電源電流を含む電力消費の大きさに応じてマイグレーションする、請求項１６に記載のコンピュータシステム。
【請求項１９】
前記スレッドマイグレーションロジックは、複数の第１の一組のコアおよび第２の一組のコアと、前記複数の第１の一組のコアおよび第２の一組のコアに割り当てられた任意の数の現在の実行スレッドと、を追跡するオペレーティングシステムに関連付けられたオペレーティングシステムのスケジューラに応じてマイグレーションする、請求項１６に記載のコンピュータシステム。
【請求項２０】
前記スレッドマイグレーションロジックは、さらに、マイグレーションをトリガする特定の時間間隔を発生する周期タイマに応じてマイグレーションする、請求項１６に記載のコンピュータシステム。
【請求項２１】
スレッドマイグレーションロジックが、スレッドに対して要求される計算要求が所定の量より少なくなったことを検知することに応じて、高い性能を有する第１の一組のコアの第１のコアから、低い性能を有する第２の一組のコアの第２のコアに、前記スレッドの実行をマイグレーションする段階を備え、
前記スレッドマイグレーションロジックは、前記高い性能を有する第１の一組のコアおよび前記低い性能を有する第２の一組のコアに接続され、
前記高い性能を有する第１の一組のコアおよび前記低い性能を有する第２の一組のコアは、複数の非対称型コアに含まれる、方法。
【請求項２２】
前記スレッドマイグレーションロジックは、論理コアを物理コアへマッピングするための表を有する、請求項２１に記載の方法。
【請求項２３】
前記第１の一組のコアおよび前記第２の一組のコアに関連付けられた電源電流を含む電力消費の大きさに応じてマイグレーションする段階をさらに備える、請求項２１に記載の方法。
【請求項２４】
複数の前記第１の一組のコアおよび前記第２の一組のコアと、複数の前記第１の一組のコアおよび前記第２の一組のコアに割り当てられた任意の数の現在の実行スレッドと、を追跡するオペレーティングシステムに関連付けられたオペレーティングシステムのスケジューラに応じてマイグレーションする段階をさらに備える、請求項２１に記載の方法。
【請求項２５】
マイグレーションをトリガする特定の時間間隔を発生する周期タイマに応じてマイグレーションする段階をさらに備える、請求項２１に記載の方法。
【請求項２６】
異なる性能および電力特性を提供する複数の非対称型コアに接続されるロジックが、現在実行されているプログラムの計算特性を判定する段階と、
前記複数の非対称型コアに接続されるスレッドマイグレーションロジックが、判定された前記計算特性の少なくとも一部に基づいて、前記複数の非対称型コアの間で、前記現在実行されているプログラムの１つまたは複数のスレッドの実行をマイグレーションする段階と、
を備え、
少なくとも１つの非対称型コアは命令プリフェッチモジュールおよび命令デコーダを有する、方法。
【請求項２７】
前記スレッドマイグレーションロジックは、論理コアを物理コアへマッピングするための表を有する、請求項２６に記載の方法。
【請求項２８】
第１の一組のコアおよび第２の一組のコアに関連付けられた電源電流を含む電力消費の大きさに応じてマイグレーションする段階をさらに備える、請求項２６に記載の方法。
【請求項２９】
複数の第１の一組のコアおよび第２の一組のコアと、前記複数の第１の一組のコアおよび第２の一組のコアに割り当てられた任意の数の現在の実行スレッドと、を追跡するオペレーティングシステムに関連付けられたオペレーティングシステムのスケジューラに応じてマイグレーションする段階をさらに備える、請求項２６に記載の方法。
【請求項３０】
マイグレーションをトリガする特定の時間間隔を発生する周期タイマに応じてマイグレーションする段階をさらに備える、請求項２６に記載の方法。
【外国語明細書】
2010092483.tif 000024
2010092483.tif 000025
2010092483.tif 000026
2010092483.tif 000027
2010092483.tif 000028
2010092483.tif 000029
2010092483.tif 000030
2010092483.tif 000031
2010092483.tif 000032
2010092483.tif 000033
2010092483.tif 000034
2010092483.tif 000035
2010092483.tif 000036
2010092483.tif 000037
2010092483.tif 000038
2010092483.tif 000039
2010092483.tif 000040
2010092483.tif 000041
2010092483.tif 000042
2010092483.tif 000043
2010092483.tif 000044
2010092483.tif 000045
2010092483.tif 000046
2010092483.tif 000047
2010092483.tif 000048
2010092483.tif 000049
2010092483.tif 000050
2010092483.tif 000051
2010092483.tif 000052
2010092483.tif 000053
2010092483.tif 000054
2010092483.tif 000055
2010092483.tif 000056
2010092483.tif 000057
2010092483.tif 000058
2010092483.tif 000059
2010092483.tif 000060
2010092483.tif 000061
2010092483.tif 000062
2010092483.tif 000063
2010092483.tif 000064
2010092483.tif 000065
2010092483.tif 000066
2010092483.tif 000067
2010092483.tif 000068
2010092483.tif 000069
2010092483.tif 000070
2010092483.tif 000071
2010092483.tif 000072