(57)【要約】  リソース制限を介するヘテロジニアスチップマルチプロセッサ（ＣＭＰ）のための方法および装置である。一実施例において、方法は、リソース利用レジスタにアクセスしてリソース利用ポリシーを特定することを含む。アクセスされると、プロセッサコアは、プロセッサコントローラにより、リソース利用ポリシーによって特定された態様で共有リソースを確実に利用できるようになる。一実施例において、ＣＭＰ内の各プロセッサコアは、命令発行スロットルリソース利用レジスタ、命令フェッチスロットルリソース利用レジスタおよびその他の、最小レベルから最大レベルの間で共有リソースの利用を制限する方法を含む。一実施例において、リソース制限は、ハードウェアまたはソフトウェアによって制御され得るＣＭＰプロセッサコアに電流および電力のリソースを割り当てるための弾力的メカニズムを与える。その他の実施例が記載され請求される。【選択図】図３Ｂ
2008505396.tif 000002
【特許請求の範囲】
【請求項１】
（ａ）リソース利用ポリシーを決定するべくプロセッサリソース利用レジスタにアクセスすることと、
（ｂ）制限されたリソースに向けられるプロセッサ利用を、前記決定されたリソース利用ポリシーに従って制限することと、
を含む方法。
【請求項２】
前記リソース利用レジスタはビットのベクトルを含み、各ビットは、前記制限されたリソースに向けられるプロセッサ利用が許可および不許可のうちの一つであるサイクルを表す、請求項１に記載の方法。
【請求項３】
前記プロセッサは、前記リソース利用レジスタの現在のビット位置がディアサートされる場合、現在のプログラムサイクル中に前記制限されたリソースの利用が無効にされる、請求項２に記載の方法。
【請求項４】
前記制限されたリソースは、プロセッサアクティビティ、メモリ参照および共有キャッシュメモリのうちの一つである、請求項１に記載の方法。
【請求項５】
前記プロセッサアクティビティは、プロセス命令発行、プロセッサ命令フェッチおよびプロセッサメモリ要求発行のうちの一つである、請求項４に記載の方法。
【請求項６】
チップマルチプロセッサの少なくとも一つのコアプロセッサに対するサイクル当たりの許可された所定数のリソース要求をリソース制御ベクトルに従って制限するべく共有リソースを制限することをさらに含む、請求項１に記載の方法。
【請求項７】
（ｃ）Ｎを整数とした場合の前記リソース利用レジスタ内に格納されたＮビット値に従って前記リソース利用レジスタをシフトさせて、隣接ビット値を現在のビット位置の値として中に移動させることと、
（ａ）から（ｃ）を各プログラムサイクルに対して繰り返すことと、
を含む、請求項２に記載の方法。
【請求項８】
アクセスすることに先立って、前記制限されたリソースに向けられるプロセッサ利用に対するリソース利用ポリシーを、Ｎを整数とした場合の最小アクティビティレベルから最大アクティビティレベルまでのプログラムサイクル増分のＮ分の１に定義するべく、特権ソフトウェアによって前記リソース利用レジスタ内にＮビット値を書き込むことをさらに含む、請求項１に記載の方法。
【請求項９】
前記プロセッサ利用を制限することは、前記決定されたリソース利用ポリシーに従って各サイクルごとに行われる、請求項１に記載の方法。
【請求項１０】
命令処理カウントを前記プロセッサから定期的に受け取ることと、
前記処理カウントに応答してプロセッサアクティビティの増加または減少のいずれかを特定するべく前記リソース利用ポリシーを調整して前記リソース制限レジスタをアップデートすることと、
をさらに含む、請求項１に記載の方法。
【請求項１１】
制限されたリソースに関連する最小利用レベルから最大利用レベルまでにリソース利用ポリシーを定義するべくチップマルチプロセッサの少なくとも一つのプロセッサコアのリソース利用レジスタを投入することと、
前記プロセッサコアから命令処理カウントを定期的に受け取ることと、
前記処理カウントに応答して前記リソース利用ポリシーを調整するべく前記リソース利用をアップデートすることと、
を含む方法。
【請求項１２】
チップマルチプロセッサリソースのリソース制御レジスタを投入して、前記チップマルチプロセッサの少なくとも一つのプロセッサコアからの、サイクル当たり所定数の許可された要求を制限すること、をさらに含む請求項１１に記載の方法。
【請求項１３】
投入することは、
アプリケーションの最も性能上重要なスレッドを実行するべく割り当てられたプロセッサコアのアクティビティスロットルベクトルに値を書き込み、最大プロセッサコアアクティビティレベルを定義するリソース利用ポリシーに従って前記プロセッサコアを動作させることをさらに含む、請求項１１に記載の方法。
【請求項１４】
アップデートすることは、
前記チップマルチプロセッサの性能を向上させるべく各プロセッサコアから受け取られた前記命令処理カウントから決定された作業負荷特性に従って少なくとも一つのプロセッサコアのアクティビティスロットルベクトルを修正することをさらに含む、請求項１１に記載の方法。
【請求項１５】
前記チップマルチプロセッサの性能を向上させるべく受け取られた前記命令処理カウントによって決定された作業負荷特性に従って前記チップマルチプロセッサの電圧要求および周波数要求を変更することをさらに含む、請求項１１に記載の方法。
【請求項１６】
制限されたリソースに関連する最小利用レベルから最大利用レベルまでにリソース利用ポリシーを定義するべくチップマルチプロセッサの少なくとも一つのプロセッサコアのリソース利用レジスタを投入することと、
前記プロセッサコアから命令処理カウントを定期的に受け取ることと、
前記処理カウントに応答して前記リソース利用ポリシーを調整するべく前記リソース利用をアップデートすることと、
を含む方法を行うようにシステムをプログラムするべく用いられる命令を格納した、機械読み取り可能媒体を含む製造物品。
【請求項１７】
チップマルチプロセッサリソースのリソース制御レジスタを投入して、前記チップマルチプロセッサの少なくとも一つのプロセッサコアからの、サイクル当たり所定数の許可された要求を制限することと、を含む請求項１６に記載の製造物品。
【請求項１８】
投入することは、
アプリケーションの最も性能上重要なスレッドを実行するべく割り当てられたプロセッサコアのアクティビティスロットルベクトルに値を書き込み、最大プロセッサコアアクティビティレベルを定義するリソース利用ポリシーに従って前記プロセッサコアを動作させることをさらに含む、請求項１６に記載の製造物品。
【請求項１９】
アップデートすることは、
前記チップマルチプロセッサの性能を向上させるべく各プロセッサコアから受け取られた前記命令処理カウントにより決定された作業負荷特性に従って少なくとも一つのプロセッサコアのアクティビティスロットルベクトルを修正することをさらに含む、請求項１６に記載の製造物品。
【請求項２０】
前記チップマルチプロセッサの性能を向上させるべく受け取られた前記命令処理カウントによって決定された作業負荷特性に従って前記チップマルチプロセッサの電圧要求および周波数要求を変更することをさらに含む、請求項１６に記載の製造物品。
【請求項２１】
少なくとも一つのプロセッサコアを含み、
前記プロセッサコアは、リソース利用レジスタおよびプロセッサコントローラを含み、
前記プロセッサコントローラは、リソース利用ポリシーを決定するべく前記リソース利用レジスタにアクセスし、制限されたリソースに向けられるプロセッサ利用を、前記決定されたリソース利用ポリシーに従って制限する、装置。
【請求項２２】
前記リソース利用レジスタは、プログラムサイクル当たりの最大発行速度に従って、少なくとも一つのプログラムサイクル中に前記プロセッサコントローラにプロセッサ命令発行を制限させる命令発行スロットルベクトルをさらに含む、請求項２１に記載の装置。
【請求項２３】
リソース利用レジスタは、プログラムサイクル当たりの最大命令フェッチ速度に従って、少なくとも一つのプログラムサイクル中に前記プロセッサコントローラにプロセッサ命令発行を制限させる浮動小数点命令発行スロットルベクトルをさらに含む、請求項２２に記載の装置。
【請求項２４】
前記リソース利用レジスタは、前記制限されたリソース非アクティビティのプロセッサコア利用に対するリソース利用ポリシーを、Ｎを整数とした場合の最小利用レベルから最大利用レベルまでのプログラムサイクル増分のＮ分の１に定義するＮビットのバレルシフトレジスタを含む、請求項２１に記載の装置。
【請求項２５】
前記プロセッサコアに接続されたリソースコントローラをさらに含み、前記リソースコントローラは、前記プロセッサコアから命令処理カウントを受け取り、前記命令処理カウントを少なくとも一つのソフトウェア可視レジスタ内に記録する、請求項２１に記載の装置。
【請求項２６】
相互接続ネットワークに接続されたシステムメモリと、
前記相互接続ネットワークに接続された少なくとも複数のプロセッサコアを含むチップマルチプロセッサと、
前記複数のプロセッサコアに接続された電力コントローラと、を含み、
各プロセッサコアは、少なくとも一つのリソース利用レジスタと、前記リソース利用レジスタに接続されたプロセッサコントローラとを含み、
前記プロセッサコントローラは、リソース利用ポリシーを決定するべく前記リソース利用レジスタにアクセスし、制限されたリソースに向けられるプロセッサコア利用を、前記リソース制限レジスタへの前記アクセスが少なくとも一つのサイクル中にリソース制限を示す場合に、前記決定されたリソース利用ポリシーに従って制限し、
前記電力コントローラは、各プロセッサコアから命令処理カウントを受け取り、各プロセッサコアから受け取った前記命令処理カウントを少なくとも一つのソフトウェア可視レジスタ内に格納する、システム。
【請求項２７】
前記電力コントローラは、前記チップマルチプロセッサの性能を向上させるべく各プロセッサコアからの前記受け取られた命令処理カウントによって決定された作業負荷特性に従って前記プロセッサコアの前記リソース利用レジスタを修正する、請求項２６に記載のシステム。
【請求項２８】
前記リソースコントローラは、前記チップマルチプロセッサの性能を向上させるべく前記受け取られた命令処理カウントによって決定された作業負荷特性に従って前記チップマルチプロセッサの電圧要求および周波数要求を変更する、請求項２６に記載のシステム。
【請求項２９】
前記リソースコントローラは、共有チップマルチプロセッサリソースのリソース制御レジスタを投入して、前記チップマルチプロセッサの少なくとも一つのプロセッサコアに対するサイクル当たり所定数の許可された要求を制限する、請求項２６に記載のシステム。
【請求項３０】
前記リソース利用レジスタは、
プロセッサコントローラに少なくとも一つのプログラムサイクル中のプロセッサ命令発行を禁止させる命令発行スロットルベクトルと、
前記プロセッサコントローラに少なくとも一つのプログラムサイクル中のプロセッサ命令フェッチを禁止させる命令フェッチスロットルベクトルと、
をさらに含む、請求項２６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の一つ以上の実施例は一般に、集積回路およびコンピュータシステム設計の分野に関する。より詳しくは、本発明の一つ以上の実施例は、リソースの割り当ておよび制限を介するヘテロジニアスチップマルチプロセッサのための方法および装置に関する。
【背景技術】
【０００２】
チップマルチプロセッサ（ＣＭＰ）は、この十年間の終わりまでには主流となるだろう。現在のＣＭＰは、「コピー・イグザクトリ」アプローチを使用して製造される。コピー・イグザクトリ・アプローチを使用して製造されたＣＭＰにおいては、ＣＭＰ上のＣＰＵはすべて同一であり、ＡＬＵ、キャッシュおよびパイプラインの正確なコピーを有する。このアプローチによって、ＣＭＰ設計の複雑性が最小化される。設計する必要があるのは一つのＣＰＵのみであり、それが多数回にわたり具体化されるからである。
【０００３】
シングルスレッド性能に左右されやすいソフトウェアアプリケーションもあれば、マルチスレッドまたはスループット性能に左右されやすいソフトウェアアプリケーションもある。シングルスレッド性能に左右されやすく、かつ、多くのリソースからの恩恵を受け得るアプリケーションにとっては、シングルスレッドを実行しているＣＰＵに対してより多くのリソースを割り当てて、性能にあまり敏感ではないスレッドを実行しているＣＰＵにはより少ないリソースを割り当てることが望ましい。マルチスレッド性能に左右されやすいアプリケーションにとっては、すべてのスレッド間でより均一にリソースを共有させることが有利である。さらに、アプリケーション自体が変化して、性能がシングルスレッドに左右されやすくなることもあれば、すべてのスレッドに対してそうなることもある。
【０００４】
開発段階にあるＣＭＰはまた、電力損失および電流引き込みに関する制限に対処する必要がある。例えば、すべてのＣＰＵが同時にフルアクティブである場合には、ＣＭＰが電流および電力の制限値以下に確実に維持されるように、電圧および周波数が低下される必要がある。しかし、一つのＣＰＵがアクティブである場合には、電圧および周波数は、最大の電圧および周波数に設定することができ、利用可能なすべてのリソースがそれに割り当てられる。電力および電流がＣＰＵごとに割り当てられる場合は、より大きな電力を割り当てられたＣＰＵは、より少なく割り当てられた他のＣＰＵよりもプログラムを速く実行することができる。知能（ソフトウェアによる命令、またはソフトウェアもしくはハードウェアのアルゴリズムによる推定のいずれか）が追加されることによって、ＣＭＰは、一つ以上の特定の実行スレッドの性能を向上させるように電力を割り当てること、またはすべてのスレッドのスループットを最大化させるように電力のバランスをとることができる。すなわち、チップの電力は、割り当てられるべきリソースとなる。
【発明の開示】
【０００５】
本発明の様々な実施例が、添付の図面において、限定としてではなく例として示される。
【発明を実施するための最良の形態】
【０００６】
リソース制限を介するヘテロジニアスチップマルチプロセッサ（ＣＭＰ）のための方法および装置である。一実施例において、方法は、リソース利用レジスタにアクセスしてリソース利用ポリシーを特定することを含む。ひとたびアクセスされると、プロセッサコアは、プロセッサコントローラにより、リソース利用ポリシーによって特定された態様で共有リソースを確実に利用できるようになる。一実施例において、ＣＭＰ内の各プロセッサコアは、命令発行スロットルリソース利用レジスタ、命令フェッチスロットルリソース利用レジスタおよびその他の、最小レベルから最大レベルの間で共有リソースの利用を制限する方法を含む。一実施例において、リソース制限は、ハードウェアまたはソフトウェアによって制御され得るＣＭＰプロセッサコアに電流および電力のリソースを割り当てるための弾力的なメカニズムを与える。
【０００７】
システム
図１は、一実施例に係る、プロセッサコントローラと少なくとも一つのリソース利用レジスタ１３０（１３０−１，...，１３０−Ｎ）とを有するプロセッサコア（ＣＰＵ）１１０（１１０−１，...，１１０−Ｎ）を含み、少なくとも一つのプログラムサイクル中の少なくとも一つのリソース制限または割り当てに従ってＣＰＵ１１０のアクティビティを制限するチップマルチプロセッサ（ＣＭＰ）１００を示すブロック図である。代表的には、ＣＭＰ１００は、同一のダイ上に製造された複数のＣＰＵ１１０、共有キャッシュおよびその他の機能部を含む。図示のように、ＣＰＵ１１０は、共有キャッシュ１８０にアクセスするべく相互接続ネットワーク１７０に接続される。一実施例において、各ＣＰＵ１１０は、最小から最大利用レベルまでに制限されたリソースをＣＰＵ１１０が利用することを制限するために特権ソフトウェアによって書き込まれるスロットルリソース利用レジスタ１３０を含む。
【０００８】
一実施例において、ＣＰＵ１１０は、相互接続ネットワーク１７０に接続されたシステムメモリバス１９２を介してシステムメモリ１９０にアクセスする。一実施例において、システムメモリ１９０は、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ）ＳＤＲＡＭ（ＤＤＲ−ＳＤＲＡＭ）、ラムバスＤＲＡＭ（ＲＤＲＡＭ）または各メモリモジュール内データの高速な一時格納をサポートすることができる任意の装置からなるメモリモジュールを含む両面メモリパッケージを含むが、これに限られない。
【０００９】
ＣＭＰ１００のようなＣＭＰ設計には、共有キャッシュ、共有メモリポート、共有電力供給等、実行プログラム間で共有されるリソースが含まれる。平均的な使用が良好でも、プログラムは時々、いくつかの共有リソースへの過剰要求をもたらす同期パターンに入り込むことがある。これは、余分なキューイング遅延をもたらし、ライブロックまたはデッドロックとなりかねない。このため、一実施例において、かかる問題を回避すべく共有ＣＭＰリソースに対するプロセッサコアアクティビティを制限することで共有ＣＭＰリソースへのアクセスを制限するために、ＣＭＰリソース制限が用いられる。
【００１０】
一実施例において、リソース割り当てによって、共有ＣＭＰリソースは、ＣＭＰ１００の少なくとも一つのプロセッサコアに対して、サイクル当たりのリソース要求数を制限する。その他の実施例において、リソース割り当ては、ＣＭＰ１００の少なくとも一つのプロセッサコアに対し、未決の同時リソース要求数を固定数にまで制限することによって、リソース利用を制限する。その他の実施例において、リソース割り当ては、ＣＭＰ１００の一つ以上のプロセッサコアに対して弾力的に区切られたリソースを、その他の一つ以上のプロセッサコアに対するそれよりも多く確保する。
【００１１】
図１に示されるように、各ＣＰＵ１１０は、アクティビティスロットリングリソース利用レジスタ１３０を含む。一実施例において、プロセッサリソースに関連する最小アクティビティレベルから最大アクティビティレベルまでの一つからの一つ以上のプログラムサイクル中に、プロセッサコアリソースアクティビティを定義するべく各アクティビティスロットルベクトルが投入される。一実施例において、図２に示されるように、最小アクティビティレベルは、無効のすなわちゼロのアクティビティレベルを言及する。一実施例において、アクティビティスロットルベクトル１３０は、プロセッサアクティビティレベルを、サイクル当たりのまたはいくつかのサイクルにわたってのリソース利用のパーセンテージまで制限する。
【００１２】
一実施例において、アクティビティスロットルベクトル１３０は、命令サイクル当たりのプロセッサの最大発行速度を制限するための命令発行スロットルベクトルを含む。例えば、命令発行制限は、プログラムサイクル当たり２つの命令まで最大命令発行速度を制限することを介して行われる。その制限がなければ、プロセッサはサイクル当たり４つの命令を発行する。一実施例において、この種の命令は、電力消費のまたはその他の必要なリソースに基づいて制限され得る。
【００１３】
本明細書に記載されるリソース制限は、バッファ制限（例えば、インフライトのメモリ参照数の制限）、キャッシュ経路制限、およびその他のリソース割り当て形態のような、リソース割り当てを与えるためのリソース制御ベクトルを含む。一実施例において、共有キャッシュ１８０内のキャッシュ経路アクセスはキャッシュトラッキングによって中央キャッシュレベルに割り当てられており、そのコアはリソース制御ベクトル１８２に従って要求を生成してキャッシュのサブセット内に結果的データを割り当てる。一実施例において、メモリ要求の中央キューへの割り当てが、リソース制御ベクトルに従って実行される。一実施例において、コントローラまたは特権ソフトウェアは、各プロセッサコアに対して最大リミットをセッティングすることによって、リソース制御ベクトルを投入する。一実施例において、割り当てリソース制御ベクトルに対するプログラムのアクティビティがモニタされて、リソースの割り当ては、システムの集約プログラムアクティビティの全体的プロファイルをベストフィットさせるように調整できる。
【００１４】
一実施例において、アクティビティスロットルベクトル１３０は、図２に示されるように、特権ソフトウェアによって書き込み可能なＮビットのバレルシフトレジスタである。図２は、一実施例に係る、図１に示されるプロセッサコントローラ１２０をさらに示すブロック図である。代表的には、アクティビティスロットルベクトル１３０のビット位置１３２は、リソースが所定サイクルで使用を許可されるか否かを示す。一実施例において、スロットルベクトル１３０の要素（ｃｏｎｔｅｎｔ）はサイクルごとにシフトされる。図２に示されるように、一実施例において、各ＣＰＵ１１０は、リソース有効／無効ロジック１２２を有するプロセッサコントローラ１２０を含む。
【００１５】
代表的には、リソース有効／無効ロジック１２２は、対応スロットルベクトル１３０の現在のビット位置１３２にアクセスする。代表的には、現在のビット位置１３２は、現在ののまたは来たるべきプログラムサイクル内の各プロセッサリソースが完全に利用可能であることを示すようにセットされる。それとは逆に、一実施例において、現在のビット位置１３２は、現在ののまたは来たるべきプログラムサイクル内の各プロセッサリソースが利用不可能であることを示すようにディアサートされる。別の実施例において、アクティビティレベルは、最小アクティビティレンジから最大アクティビティレンジまでのアクティビティスロットルベクトルによって特定される。以下に記載するように、ＣＰＵ１１０は、プロセッサ命令発行、プロセッサ命令フェッチ、浮動小数点（ＦＰ）命令発行、整数命令発行、メモリ要求発行またはその他のＣＰＵアクティビティのようなプロセッサアクティビティを制御する多重スロットルベクトルを含んでよい。
【００１６】
このため、一実施例において、各プログラムまたはクロックサイクル中に、プロセッサコントローラ１２０は、リソース有効／無効ロジック１２２を介して、アクティビティスロットルベクトル１３０の現在のビット位置１３２にアクセスして、各サイクル中にリソースにプロセッサアクセスを許可すべきか否かを決定する。このため、一実施例において、Ｎビット値をスロットルベクトル１３０内に格納することによって、例えば特権ソフトウェアは、ＣＰＵ１１０のアクティビティを、最小アクティビティレベルから最大アクティビティレベルまでのプログラムサイクル増分のＮ分の１に定義することが可能となる。本明細書で使用される「Ｎ」は整数である。一実施例において、リソース有効／無効ロジック１２２は、状態機械、マイクロコードまたは集積回路ロジックを用いて実装される。
【００１７】
図１を参照すると、一実施例において、ＣＭＰ１００は、ＣＰＵ１１０ごとのアクティビティスロットルベクトル１３０を含む。ここで、任意の所定サイクルにおける命令発行が、ベクトル１３０によって許可または不許可となる。一実施例において、ＣＰＵ１１０は、スロットルベクトルの０番目のビット位置が「１」（セット）である場合に命令を発行するように許可されるのみである。スロットルベクトルが各々１６ビットであれば、ソフトウェアは、各ＣＰＵの命令発行アクティビティを、ノーアクティビティからフルアクティビティまでの増分の１６分の１に制限することができる。所定のプロセッサリソースがこのフルレンジを許可しない場合もあるが、スロットルベクトルは、アクティビティレベルを所定の最小レベルから所定の最大レベルまでに制御するべく使用される。
【００１８】
本明細書に記載される、ＣＰＵ１１０、リソースコントローラ２００またはその他のシステムコンポーネントのような、ＣＭＰ１００のコンポーネントによって検出または発行された様々な信号は、アクティブ高信号またはアクティブ低信号を表す。このため、本明細書に記載される用語「アサート」、「アサートする」、「アサートされる」、「セット」、「セッティング」、「ディアサート」、「ディアサートされる」、「ディアサートする」またはその他の類似用語は、アクティブ低信号またはアクティブ高信号のいずれかのデータ信号を言及する。したがって、信号に関連する場合、かかる用語は、アクティブ高信号またはアクティブ低信号のいずれかを要求するかまたは意味するために互換的に使用される。
【００１９】
図３Ａは、一実施例に係る、リソース利用レジスタ（ＲＵＲ）１３０を備えるＣＭＰ１００を示す。一実施例において、ＲＵＲ１３０は、制限されたリソースに利用ポリシーを与えるＣＳＲ（保護されたＩ／Ｏアドレス空間にマッピングされて特権ソフトウェアによって書き込み可能な設定システムレジスタ）である。代表的には、ＣＰＵ１１０は、ステータス情報をリソースコントローラ２００に伝達する。一実施例において、実際に発行されたＣＰＵ１１０のプロセッサ命令処理カウント（ＩＰＣ）のスナップショットは、例えば、ＣＰＵ１１０−１が命令を発行してカウンタオーバーフローを電力コントローラ２００に送るたびに、ＣＰＵ１１０−１内のカウンターを増加させることによって報告される。
【００２０】
一実施例において、各ＣＰＵ１１０は、実行プログラムの性能特性をトラッキングし続ける。この情報がリソースコントローラ２００に送られる。一実施例において、リソースコントローラ２００はその後、共有キャッシュ１８０のリソース制御ベクトル１８２のような共有ＣＭＰリソースのリソース制御ベクトルを投入することによりＣＭＰ１００の全体的な性能を向上させるべく、リソースの再割り当てを決定する。この再割り当ては、プログラム実行中に、サービスをなんら阻害することなく発生する。例えば、並列プログラムが実行されていて、一つ以上がまだ実行中であるにもかかわらずほとんどのＣＰＵ１１０が同期点に達している場合、リソースコントローラ２００は、リソースを初期フィニッシャ（ｆｉｎｉｓｈｅｒｓ）からストラグラ（ｓｔｒａｇｇｌｅｒｓ）まで動的にシフトさせてＣＭＰ性能を向上させることができる。一実施例において、電力コントローラ２００は、状態機械、マイクロコードまたは集積回路ロジックを用いて実装される。
【００２１】
図３Ｂは、命令発行アクティビティスロットルベクトル１３０を備えたＣＭＰ１００を示すブロック図である。代表的には、ＣＰＵ１１０−１が、その発行スロットルベクトル１３０をすべて１にセッティングすることによって、ＣＰＵ１１０−２からＣＰＵ１１０−Ｎまでよりも優先される一方で、ＣＰＵ１１０−２からＣＰＵ１１０−Ｎは、電力節約のため８サイクルのうち１サイクルで命令を発行するように制限される。一実施例において、高性能ＣＰＵ１１０−１が性能上最も重要なスレッドに与えられるように、ＣＭＰ１００のＣＰＵ１１０がアンバランスにされる。その結果、ＣＭＰ１００は、並列処理の恩恵を実行プログラムに与える一方で、作業の一部が直列化して並列実行により与えられる全体的な性能向上を制限する障害が頻繁に生じることを防止する。
【００２２】
一実施例において、プロセッサコアは、例えばヘルパースレッドのような、あまりリソース集中的でないアプリケーションスレッドを実行するべく選択される。ヘルパースレッドは先端技術であり、いくつかのスレッドが別のスレッドよりも先に実行されてその別のスレッドの作業負荷を制限することによりメモリデータのプリフェッチ効果を作り出すにもかかわらず、実際のプログラムの作業は行わない、というものである。ヘルパースレッドに対するリソース要求は極めて小さく、適切にリソース割り当てを低減してメインスレッドのために電力を節約することができる。
【００２３】
図４は、一実施例に係る、ＣＰＵリソースに向けられたＣＰＵアクティビティスロットリングをさらに示すためのＣＰＵ１１０のマイクロアーキテクチャを、さらに示すブロック図である。図示の実施例において、ＣＰＵ１１０は、動的実行を行うように設定される。しかし、当業者であれば、ＣＭＰ１００内のＣＰＵ１１０は、動的実行を行う必要がなく、本明細書に記載の実施例の範囲内にあることがわかるだろう。本明細書に記載される動的実行とは、プログラム順序に従って次の命令をフェッチして、システムパイプライン内でその後実行するべくその命令を準備するためのフロントエンドロジック１４０の使用を言及する。
【００２４】
代表的には、フロントエンドロジック１４０は、実行のために来たるべきプログラム命令をフェッチして、システムパイプライン内で将来的に使用するべくその命令を準備する命令フェッチユニット（ＩＦＵ）１４２からなる。実際には、フロントエンドロジック１４０の命令発行ロジックは、デコードされた命令の高帯域幅ストリームを、命令の実行（実際の完了）を指示する実行コア１１６に供給する。このため、フロントエンドロジック１４０は、例えば、バスインターフェースユニット（ＢＩＵ）１１２を介して共有キャッシュ１８０からマクロ命令をフェッチするための命令フェッチユニット（ＩＦＵ）１４２を含む。
【００２５】
ひとたび命令がフェッチされると、命令はデコードされて、実行ユニット（ＥＵ）１１８が実行するマイクロオペレーション（ｕＯＰ）として本明細書に言及されるベーシックオペレーションになる。すなわち、ＩＦＵ１４２は、マクロ命令を、例えば共有キャッシュ１８０からフェッチする。共有キャッシュ１８０は、命令発行ロジック１５０の命令デコーダ（ＩＤ）１５２に与えられる。受け取られたマクロ命令に応答して、ＩＤ１５２は、マクロ命令を、命令デコーダキュー（ＩＤＱ）１５４に与えられる一つ以上のｕＯＰにデコードする。
【００２６】
一実施例において、フロントエンドロジック１４０は、リソース有効／無効ロジック１２２を含むプロセッサコントローラ１２０を含む。代表的には、プロセッサコントローラ１２０は、一つ以上のリソース利用レジスタ（ＲＵＲ）１３０（１３０−１，...，１３０−Ｎ）に接続される。一実施例において、リソース利用レジスタ１３０−１は命令発行アクティビティスロットルベクトル１３０−１であり、リソース利用レジスタ１３０−Ｎは命令フェッチアクティビティスロットルベクトル１３０−Ｎである。代表的には、例えば、命令フェッチスロットルベクトル１３０−Ｎの現在のビット位置の値に基づいて、プロセッサコントローラ１２０は、命令フェッチユニット１４２をプログラムサイクル中に無効にする。ここで、命令フェッチスロットルベクトル１３０−Ｎの現在のビット値はディアサートされる。しかし、命令フェッチスロットルベクトル１３０−Ｎの現在のビット値がセットされるプログラムサイクル中は、プロセッサコントローラ１２０は、ＩＦＵ１４２が通常のオペレーティング条件に従って機能することを許可する。一般には、スロットルベクトルは、制限ＣＭＰリソースに対して最小および最大のアクティビティレベルを定義することによって、単純なオンまたはオフの状態ではないリソースを制御するためのカウンタおよび制限値を含む。
【００２７】
さらに図示されているように、一実施例において、命令発行スロットルベクトル１３０−１はまた、プロセッサコントローラ１２０によってモニタされ、命令発行スロットルベクトル１３０−Ｎの現在のビット値がディアサートされるプログラムサイクル中、プロセッサコントローラ１２０は命令発行ロジック１５０を無効にする。このため、かかる非アクティビティのサイクル中は、ＣＰＵ１１０によって消費される電力および電流が制限される。これは、ＯＯＯコア１１６および実行ユニット１１８が、発行された命令を受け取らないことによって、ＣＰＵ１１０が消費するプロセッサリソースを低減するからである。
【００２８】
一実施例において、スロットルベクトル１３０は、電力割り当ての向上を目的として、ＣＰＵ１１０アクティビティを細粒度で制限することができる。例えば、ＣＰＵ１１０ごとのスロットルベクトル１３０の代わりは、いくつかあり得る。フェッチを制御するスロットルベクトル、浮動小数点（ＦＰ）命令発行を制御するスロットルベクトル、整数命令発行を制御するスロットルベクトル、およびメモリ発行を制御するスロットルベクトルである。さらに、所定の作業負荷がＦＰ実行リソースを使用することはほとんどない。ＣＭＰ１００の電圧点および周波数点は、電流問題すなわち突然の電圧降下を引き起こしかねない突然のアクティビティのバーストの責任を負えるように選択される必要がある。ＦＰ実行がほとんどないので、ＦＰスロットルベクトルは、性能に悪影響を及ぼすことなく最大ＦＰ発行速度を１６サイクル当たり１に制限するようセットアップできる。これで、電圧および周波数を、ＦＰアクティビティのバーストによって引き起こされるエラーの恐れなしに高くセットできる。
【００２９】
それとは逆に、ＨＰＴＣ（高性能テクニカルコンピューティング）アプリケーションは、ＦＰユニットを広範に使用する。ＦＰユニットの実際のＩＰＣのニーズをモニタすることによって、電力コントローラ２００または特権ソフトウェアは、アプリケーションのニーズに応じて電圧点および周波数点を調整することができる。一実施例において、電力コントローラ２００は、このＩＰＣ情報を利用してＣＰＵ１１０ごとのスロットルベクトル１３０、ならびに電圧および周波数を修正し、多岐にわたる特性を備える様々な作業負荷に対して性能を最大限にする。
【００３０】
図４を参照すると、命令が発行されない場合は、ＣＰＵマイクロアーキテクチャ１１０の機能ユニットおよびそれに関連するロジックは不要である。所定サイクルに命令発行がないことは、プロセッサコントローラ１２０を使用することによって事前に予測される。プロセッサコントローラ１２０は、スロットルベクトル１３０内の別の（将来の）ビット位置を検査し、一つ以上の検出されたＣＰＵ非アクティビティサイクル中にクロックゲート化ロジックのクリティカルパスを無効にする。このため、命令発行が禁止されて、対象となるＣＰＵ１１０の動的な電流引き込みおよび電力損失が低減される結果となる。さらに、ＣＰＵの発行アクティビティを制限することは必ずしも、発行許可の減少に伴い直線的にその性能も減少するということではない。ＣＰＵは一般に、すべてのサイクルで命令を発行するわけではないからである。一つ以上の実施例を行うための手順的な方法を説明する。
【００３１】
動作
図５は、一実施例に係る、リソース利用ポリシーに従って少なくとも一つのプログラムサイクル中に少なくとも一つのプロセッサコアのリソース利用レジスタを使用する、リソース制限のための方法３００を示すフローチャートである。一実施例において、例えば図１から図４に示すように、リソース利用レジスタは、チップマルチプロセッサ（ＣＭＰ）のプロセッサコア（ＣＰＵ）の、アクティビティスロットルベクトルである。一実施例において、リソース利用ポリシーは、制限されたリソースに関連するプロセッサアクティビティを特定する。このプロセッサアクティビティは、例えば、プロセッサ命令発行、プロセッサ命令フェッチ、浮動小数点（ＦＰ）命令発行、整数命令発行、メモリ発行またはその他の、一つ以上のプロセッサコアの電流および電力消費ならびに共有ＣＭＰリソースへの負荷を低減するためのプロセッサアクティビティ等を含む。
【００３２】
代表的には、工程ブロック３１０において、アクティビティスロットルベクトルがアクセスされて、任意のリソース制限が特定される。工程ブロック３２０において、少なくとも一つのプログラムサイクル中にアクティビティスロットルベクトルがリソース制限を示すか否かが決定される。制限されたプロセッサアクティビティが示されると、工程ブロック３２２において、プロセッサアクティビティレベルのようなリソース利用ポリシーが決定される。工程ブロック３５０において、少なくとも一つのプログラムサイクル中のリソース利用ポリシーに従って、決定されたプロセッサアクティビティレベルまでプロセッサアクティビティが制限される。工程ブロック３６０において、ＣＭＰシャットダウンが検出されるまで、ＣＭＰの各プロセッサコアに対して工程ブロック３１０〜３５０が並列して繰り返される。
【００３３】
図６は、一実施例に係る、図５の工程ブロック３２２のプロセッサアクティビティを制限するための方法３３０を示すフローチャートである。工程ブロック３３２において、アクティビティスロットルベクトルの現在のビット位置が問い合わせられる。工程ブロック３３４において、利用ポリシーは、アクティビティスロットルベクトルの現在のビット位置の値に従って現在のプログラムサイクル中に有効または無効にされた、制限されたリソースに関連するプロセッサアクティビティを特定する。工程ブロック３３６において、アクティビティスロットルベクトルの現在のビット位置がディアサートされているか否かを決定する。スロットルベクトルの現在のビット位置がディアサートされている場合、工程ブロック３３８においてプロセッサが無効にされて、現在のプログラムサイクル中は、制限されたリソースに向けられたアクティビティを行えなくなる。そうでない場合は、工程ブロック３４０においてプロセッサが有効にされて、現在のプログラムサイクル中にリソースアクティビティを行うことができる。一実施例において、図５および図６の方法は、図１に示されるＣＭＰ１００の各ＣＰＵ１１０に対して並列して行われる。
【００３４】
図７は、一実施例に係る、最小アクティビティレベルから最大アクティビティレベルまでのプロセッサアクティビティを定義するリソース利用ポリシーに従って、一つ以上のアクティビティスロットルベクトルを投入するための方法４００を示すフローチャートである。工程ブロック４１０において、プログラムサイクル増分のＮ分の１のプロセッサアクティビティのようなリソース利用ポリシーを定義するプロセッサアクティビティスロットルベクトル内に、Ｎビット値が特権ソフトウェアによって書き込まれる。一実施例において、工程ブロック４１０は、例えば、図１に示すＣＭＰの各プロセッサコアに対して並列に行われる。工程ブロック４２０において、プロセッサコア命令処理カウント（ＩＰＣ）が、各ＣＭＰプロセッサコアから定期的に受け取られる。工程ブロック４３０において、アクティビティスロットルベクトル内に格納されたＮビット値が、増加プロセスアクティビティまたは減少プロセスアクティビティのいずれかに変更される。一実施例において、リソースコントローラは、共有ＣＭＰリソースのリソース制御ベクトルを投入して、サイクル当たりのプロセッサコア要求を所定の定義値に制限する。
【００３５】
図８は、一実施例に係る、来たるべきプロセッサコアリソースの非アクティビティに従って、ＣＭＰのＣＰＵ機能ユニットおよびそれに関連するロジックを有効／無効にするための方法４４０を示すフローチャートである。工程ブロック４４２において、ＣＭＰのＣＰＵが選択される。ひとたび選択されると、工程ブロック４４４において、選択されたＣＰＵのスロットルベクトルが検査されて、リソース非アクティビティに係る一つ以上の来たるべきプログラムサイクルが特定される。ひとたび検出されると、工程ブロック４４６において、機能ユニットおよびそれに関連するリソースロジックは、リソース非アクティビティに係る特定されたプログラムサイクル中に無効にされて、ＣＭＰの電力および電流の消費が低減される。工程ブロック４４８において、工程ブロック４４２〜４４６が各ＣＭＰのＣＰＵに対して繰り返される。
【００３６】
図９は、一実施例に係る、ＣＭＰプロセッサコアの決定された作業負荷特性に従ってＣＭＰの電圧要求および周波数要求を変更するための方法４５０を示すフローチャートである。工程ブロック４５２において、各ＣＭＰプロセッサコアから受け取られたＩＰＣに従って、ＣＭＰプロセッサコアに対して作業負荷特性が決定される。ひとたび決定されると、工程ブロック４５４において、ＣＭＰの電圧要求および周波数要求が、工程ブロック４５２の作業負荷特性に決定された通りに変更される。
【００３７】
したがって、一実施例において、ソフトウェアまたはハードウェアのコントローラは、作業負荷情報を利用して、ＣＰＵごとのリソース利用レジスタならびに電圧および周波数を修正して、多岐にわたる特性を備える様々な作業負荷に対して性能を最大限にすることができる。一実施例において、ソフトウェアは、各プロセッサコア上で実行されている各スレッドの作業負荷のリソース利用特性に関連して、ハードウェアによって収集されたＩＰＣまたはその他のフィードバックを読み取ることができる。リソース利用レジスタをアップデートして、リソース利用が作業負荷特性により良くマッチするように変更することができる。電圧および周波数を、新しいリソース利用レジスタセッティングに合うように変更することができる。
【００３８】
一実施例において、アクティビティスロットリングは、電力を最も有効なところにシフトさせる。しかし、その他のリソースもまた、本技術によって、間接的ではあるが割り当てられる。ＣＭＰの発行速度をスロットリングすることによって、ＣＰＵの負荷がシステムリソースに基づいて制御される。システムリソースは、その後、その他の要求を自由に与えることができる。これは、３次レベルキャッシュ、システムロック、メインメモリ、相互プロセッサリンクおよびＩ／Ｏ（入力／出力）のような共有リソースへのアクセスを制御するためには特に重要である。
【００３９】
図１０は、開示の技術を用いて、設計をシミュレーション、エミュレーションおよび製造するための様々な表現またはフォーマットを示すブロック図である。設計を表現するデータは、いくつかの態様で設計を表現することができる。まず、シミュレーションにおいて有用であるが、ハードウェアは、ハードウェア記述言語、またはその他の機能記述言語を用いて表現される。これにより、設計されたハードウェアがどのように機能すると予測されるかに係るコンピュータ処理モデルが基本的に与えられる。ハードウェアモデル５１０は、コンピュータメモリのような記憶媒体５００に格納される。特定のテストスイート（ｔｅｓｔ  ｓｕｉｔｅ）５３０をそのハードウェアモデルに適用して、それが実際に意図されたように機能するか否かを決定するシミュレーションソフトウェア５２０を用いてそのモデルがシミュレーションされる。いくつかの実施例においては、シミュレーションソフトウェアは、媒体に記録され、取り込まれ、または含まれることがない。
【００４０】
設計のいずれの表現においても、データは、任意の形態の機械読み取り可能媒体に格納される。機械読み取り可能媒体とは、かかる情報を伝送するべく変調またはさもなければ生成された光波もしくは電波５６０、メモリ５５０、または磁気的もしくは光学的記憶装置５４０である。これらの媒体はいずれも、設計情報を運ぶ。すなわち、用語「運ぶ」（例えば、情報を運ぶ機械読み取り可能媒体）は、記憶装置に格納された情報、または搬送波の中もしくは上にエンコードもしくは変調された情報をカバーする。設計または設計の詳細を記述するビットのセットは、（キャリアまたは記憶媒体のような機械読み取り可能媒体に埋め込まれた場合）それ自身の内または外にシールされるか、または、さらなる設計または製造のためにその他のものによって用いられる物品である。
【００４１】
代替実施例
上述における、ロジック実装、信号およびバスのサイズおよび名称、システムコンポーネントの種類および相互関係、ならびにロジックのパーティショニング／インテグレーション選択のような多数の具体的詳細が、さらに徹底的な理解を与えるために示される。しかし、当業者であれば、かかる具体的詳細がなくとも本発明が実施できることがわかるだろう。その他の場合では、本発明をあいまいにするのを避けるため制御構造およびゲートレベル回路は詳細に示さない。当業者であれば、本明細書の記載によって、過度の実験なしに所定のロジックまたはソフトウェアを実装することができるだろう。
【００４２】
上述において、本発明の特徴を説明するために所定の技術用語が使用される。例えば、「ロジック」とは、一つ以上の機能を実行するために設定されるハードウェアおよび／またはソフトウェアを表す。例えば、「ハードウェア」の例は、集積回路、有限状態機械またはさらに組み合わせ論理回路（ｃｏｍｂｉｎａｔｏｒｉａｌ  ｌｏｇｉｃ）を含むが、これらに制限または限定されない。集積回路は、マイクロプロセッサ、特定用途向け集積回路、デジタル信号プロセッサ、マイクロコントローラ等の形態をとる。
【００４３】
「ソフトウェア」の例は、アプリケーション、アプレット、ルーチンまたはさらに一連の命令の形態の実行可能なコードを含む。一実施例において、製造物品は、ソフトウェアが格納された機械またはコンピュータ読み取り可能媒体を含む。この読み取り可能媒体は、一実施例に係る工程を行うべくコンピュータ（またはその他の電子装置）をプログラムするために用いられる。コンピュータまたは機械読み取り可能媒体は、プログラミング可能電子回路、揮発性メモリ（例えば、ランダムアクセスメモリ等）および／または不揮発性メモリ（例えば、任意の種類のリードオンリーメモリ「ＲＯＭ」、フラッシュメモリ）を含む半導体メモリ装置、フロッピディスク（登録商標）、光学ディスク（例えば、コンパクトディスクまたはデジタルビデオディスク「ＤＶＤ」）、ハードドライブディスク、テープ等を含むがこれらに限られない。
【００４４】
なお、その他の実施例に対しては、異なるシステム設定が用いられる。例えば、システム１００はチップマルチプロセッサシステムを含む一方、その他の実施例では、少なくとも一つのプロセッサコアを有するシステムが、様々な実施例のプロセッサベクトルスロットリングの恩恵を受ける場合もある。例えば、サーバ、ワークステーション、デスクトップコンピュータシステム、ゲームシステム、組み込みコンピュータシステム、ブレードサーバ等のような、さらに異なる種類のシステムまたは異なる種類のコンピュータシステムがその他の実施例に対して用いられてよい。
【００４５】
開示の実施例およびベストモードがあれば、以下の請求項によって定義される本発明の実施例の範囲内にありながらも、開示の実施例に対する修正および変形を行うことができる。
【図面の簡単な説明】
【００４６】
【図１】一実施例に係る、ＣＭＰリソースを割り当てるためのプロセッサアクティビティを制限するためのプロセッサコントローラを有する一つ以上のプロセッサコアを含むチップマルチプロセッサ（ＣＭＰ）を示すブロック図である。
【図２】一実施例に係る、図１に示すプロセッサコントローラをさらに示すブロック図である。
【図３Ａ】一実施例に係る、図１のＣＭＰと、リソース制限を与える関連プロセッサコアとをさらに示すブロック図である。
【図３Ｂ】一実施例に係る、図１のＣＭＰと、プロセッサアクティビティ・スロットリングを与える関連プロセッサコアとをさらに示すブロック図である。
【図４】一実施例に係る、図３のプロセッサコアをさらに示すブロック図である。
【図５】一実施例に係る、プロセッサアクティビティがＣＭＰリソースを割り当てるのを制限するための方法を示すフローチャートである。
【図６】一実施例に係る、プロセッサアクティビティスロットルベクトルに従って少なくとも一つの現在のプログラムサイクルのプロセッサアクティビティを制限するための方法を示すフローチャートである。
【図７】一実施例に係る、ＣＭＰの一つ以上のアクティビティスロットルベクトルを投入して、プロセッサアクティビティを、最小アクティビティレベルから最大アクティビティレベルまでのプログラムサイクル増分のＮ分の１に定義するための方法を示すフローチャートである。
【図８】一実施例に係る、制限されたアクティビティプロセッササイクル中に共有リソースにかかる電力／消費および負荷を低減するためにリソースロジックを無効にするための方法を示すフローチャートである。
【図９】一実施例に係る、ＣＭＰのプロセッサコアから受け取られた命令処理カウントに従って、ＣＭＰ電圧、周波数およびその他のＣＭＰリソース要求を変化させるための方法を示すフローチャートである。
【図１０】開示の技術を用いて、エミュレーション、シミュレーションおよび製造のための様々な設計の表現またはフォーマットを示すブロック図である。
【図１】
2008505396.tif 000003
【図２】
2008505396.tif 000004
【図３Ａ】
2008505396.tif 000005
【図３Ｂ】
2008505396.tif 000006
【図４】
2008505396.tif 000007
【図５】
2008505396.tif 000008
【図６】
2008505396.tif 000009
【図７】
2008505396.tif 000010
【図８】
2008505396.tif 000011
【図９】
2008505396.tif 000012
【図１０】
2008505396.tif 000013
【国際調査報告】
2008505396.tif 000014
2008505396.tif 000015
2008505396.tif 000016