多コア・プロセッサによる信頼できるコンピューティング
【課題】多コア・プロセッサの寿命の間に、多コア・プロセッサ中のコアのパフォーマンスを定期的に試験し、得られた試験データを、アプリケーションのパフォーマンスを改善するするために使う。
【解決手段】多コア・プロセッサ中のコアは、最大動作周波数、電力消費、電力リーク、機能的な正しさおよびその他のパラメータについての傾向情報を含む動的プロファイルを取得するために定期的に試験される。各コアについて動的プロファイルが生成されたら、多コア・プロセッサ中のコアはその特性に従って種々のビンにグルーピングされる。動的プロファイルおよび前記グルーピング情報に基づき、オペレーティング・システム(OS)または他のソフトウェアは、タスクを、そのタスクのために最も好適なコアに割り当てる。選択された諸コアの間での高いレベルの接続性を保証するよう、多コア・プロセッサ中の相互接続ファブリックが再構成される。
【解決手段】多コア・プロセッサ中のコアは、最大動作周波数、電力消費、電力リーク、機能的な正しさおよびその他のパラメータについての傾向情報を含む動的プロファイルを取得するために定期的に試験される。各コアについて動的プロファイルが生成されたら、多コア・プロセッサ中のコアはその特性に従って種々のビンにグルーピングされる。動的プロファイルおよび前記グルーピング情報に基づき、オペレーティング・システム(OS)または他のソフトウェアは、タスクを、そのタスクのために最も好適なコアに割り当てる。選択された諸コアの間での高いレベルの接続性を保証するよう、多コア・プロセッサ中の相互接続ファブリックが再構成される。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概括的にはマイクロプロセッサに、より特定的には多くのコアをもつプロセッサに関する。
【背景技術】
【0002】
多コア・プロセッサ(many-core processor)は複数の処理コアを同じダイ上にもつ。プロセス技術が非常に小さな大きさにスケールすると、プロセッサ周波数を上げることによって高パフォーマンスを達成する現在主流の設計手法は、劇的に増大した電力消費によって厳しく制限される。高パフォーマンスを達成する一つの代替的な設計手法は、典型的な「より大きな」コアより遅いスピードで並行して走る多くの「小さな」コアにアプリケーションを分散させることである。それぞれの「小さな」コアは、「大きな」コアよりも、より単純で、より小さく、食う電力がずっと少なく、それでいて著しいパフォーマンスを上げるので、この多コアに基づく設計手法は、大きなコアに基づく設計手法よりも効率的に電力消費を管理することを助けることができる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
多コア・プロセッサは単一コアまたは少数の大きなコアをもつプロセッサに対して利点を有するものの、プロセス技術が小さな大きさにスケールダウンするとともに多くの課題にも直面する。たとえば、静的であれ動的であれプロセス変動はトランジスタを信頼できなくする;記憶ノードでの静電容量が小さく、電圧が低いので、過渡エラー率が高くなりうる;時間の経過とともにトランジスタ劣化がひどくなりうるので、時間とともに信頼性は劣化しうる。そのような課題は、工場試験の間は良好に動作する多コア・プロセッサ中のコアが、時間とともに、前と同じくらい良好に動作しなかったり、完全に動作を停止したりする状況につながりうる。このため、伝統的なプロセッサに適用されているような、一度に行う工場試験およびバーンインは、多コア・プロセッサでの信頼できるコンピューティングを時間がたっても保証するにはそれほど効率的ではなくなる。したがって、多コア・プロセッサの寿命の間に、多コア・プロセッサ中のコアのパフォーマンスを定期的に試験し、こうして得られた試験データを、アプリケーションのためにそのパフォーマンスを改善するために使うことができることが望ましい。
開示される主題の特徴および利点は、該主題の以下の詳細な記述から明らかになるであろう。
【図面の簡単な説明】
【0004】
【図1】例示的な多コア・プロセッサを示す図である。
【図2】多コア・プロセッサ中の各コアについて動的プロファイリングを定期的に実行する動的プロファイリング装置の例示的なブロック図である。
【図3A】多コア・プロセッサにおいて動的プロファイリングを実行する例を示す図である。
【図3B】多コア・プロセッサにおいて動的プロファイリングを実行する例を示す図である。
【図4】多コア・プロセッサ中の各コアについて動的プロファイリングを実行する例示的なプロセスのフローチャートを示す図である。
【図5】多コア・プロセッサが使用されうる例示的なコンピューティング・システムを示す図である。
【図6】多コア・プロセッサが使用されうるもう一つの例示的なコンピューティング・システムを示す図である。
【図7】多コア・プロセッサが使用されうるさらにもう一つの例示的なコンピューティング・システムを示す図である。
【図8】タスク実行の効率を改善するために多コア・プロセッサ中の各コアの動的プロファイルを使うシステムの例示的なブロック図である。
【図9】多コア・プロセッサについてのパフォーマンスおよび電力消費の管理の一例を示す図である。
【図10】タスク実行の効率を改善するために多コア・プロセッサ中の各コアの動的プロファイルを使うための例示的なプロセスのフローチャートである。
【発明を実施するための最良の形態】
【0005】
本出願における開示される主題の実施形態によれば、多コア・プロセッサ中のコアは、その動的プロファイルを取得および/またはリフレッシュするために定期的に試験されうる。コアの動的プロファイルとは、その最大動作周波数、電力消費、電力リーク、機能的な正しさ(functional correctness)およびその他のパラメータについての情報を含みうる。動的プロファイルは、これらのパラメータの傾向情報(trending information)をも含みうる。それは、時間がたったときのコアの信頼性を示すものである。これらのパラメータは、多コア・プロセッサに組み込まれたモジュール、たとえば動作スピード測定モジュール、電力消費測定モジュール、温度センサーおよび機能的な正しさ検査モジュールなどによって取得されうる。各コアの機能的な正しさに関係する情報は、粗い粒度の機能的冗長性検査(FRC: functional redundancy checking)方式および/または細かい粒度のFRC方式を使うことによって取得されうる。各コアについての動的プロファイルは、コア自身のメモリ内に、あるいはコアの一部または全部によって共有されるメモリ内に記憶されうる。動的プロファイルが最初に取得されるとき、動的プロファイルは傾向情報は含まない。しかし、二回目の定期試験からは、傾向情報が取得され、のちの試験後に更新されうる。
【0006】
ひとたび各コアについて動的プロファイルが生成されたら、多コア・プロセッサ中のコアはその特性に従って種々のビンにグルーピングされてもよい。たとえば、最大動作周波数が高いコアは高速コアとラベル付けされうる;電力消費が低いコアは低電力消費コアとラベル付けされうる;良好な傾向情報をもつコアは信頼できるコアとラベル付けされうる;などである。動的プロファイルおよび前記グルーピング情報に基づき、オペレーティング・システム(OS)または中間ソフトウェア層は、タスクを、そのタスクのために最も好適なコアに割り当てうる。たとえば、タスクが集約的な計算を要求する場合、そのタスクは高速コアに割り当てられうる。ひとたびある種の諸コアがそのタスクのために選択されると、選択された諸コアにわたって少なくとも受け容れ可能な帯域幅および遅延が達成されうるよう、選択された諸コアの間での高いレベルの接続性を保証するよう、多コア・プロセッサ中の相互接続ファブリック(interconnect fabric)が再構成されうる。さらに、OSは、環境の変化に応答してタスクにコアを割り当て直してもよく、相互接続ファブリックがしかるべく再構成されてもよい。
【0007】
本明細書において、開示される主題の「一つの実施形態」または「ある実施形態」への言及は、その実施形態に関連して記載される特定の特徴、構造または特性が、開示される主題の少なくとも一つの実施形態に含まれることを意味している。よって、本明細書を通じて随所に現れる「ある実施形態では」の句の出現は、必ずしもみなが同じ実施形態を指すのではない。
【0008】
図1は、例示的な多コア・プロセッサ100の構造を示している。プロセッサ100は、二次元(2D)相互接続ファブリック130上に座するコア(たとえばコア110)の8×8のアレイを有する。各コアは、そのローカルなメモリ(図示せず)を有しうる。相互接続ファブリック130に取り付けられた共有メモリ(たとえば120)もある。単一コアまたは少数コアしかもたないプロセッサに比べ、多コア・プロセッサ中のコアの数は多い。結果として、多コア・プロセッサ中の各コアの大きさは、単一コアまたは少数コア・プロセッサ中のコアに比べて小さい。図1が示す例示的なプロセッサ100は、64個のコアしかもたないが、多コア・プロセッサにおけるコアの数は変わることができ、64よりずっと多くてもよい(たとえば256、512、1024)。プロセッサ100はまた、各コアを周辺機器(たとえばグラフィック・デバイス)と接続するための入出力(I/O)相互接続(図示せず)をも有する。ある実施形態では、I/O相互接続は、プロセッサ・ダイにおけるコアすべてを取り囲んでいてもよい。別の実施形態では、I/O相互接続はコアの間に組み込まれてもよい。
【0009】
典型的には、プロセッサは、パッケージングされたあと、適正にはたらくことを保証するよう試験される。しかしながら、将来の多コア・プロセッサについては、そのような一度きりの工場試験は、プロセス技術がスケールダウンする(たとえば35ナノメートル(nm)またはさらに細かいプロセス技術)ので、品質を保証するために十分ではないことがありうる。たとえば、コアの最大動作周波数は、エージングのため低下しうる。よって、多コア・プロセッサ内部のコアを定期的に試験し、そのプロセッサ上で走るアプリケーションをその試験データに適応させることが望ましい。定期的な試験からのデータを使用して、各コアについてプロファイルが生成されうる。該プロファイルは、各試験後に更新/リフレッシュされうるので、動的である。各コアの動的プロファイルは、そのコアの最大周波数、電力消費、電力リーク、機能的な正しさおよびその他のパラメータについての情報を含みうる。動的プロファイルはまた、これらのパラメータの傾向情報をも含みうる。
【0010】
図2は、多コア・プロセッサ中の各コアについて動的プロファイリングを定期的に実行する動的プロファイリング装置200の例示的なブロック図を示している。装置200は、電力消費測定モジュール210、温度センサー220、動作スピード測定モジュール230、機能的な正しさ検査モジュール240、信頼性追跡モジュール250およびコントローラ260を有する。動的プロファイリング装置は、図2に示されたものに加えてコアの他のパラメータを測定するために使われる他のコンポーネントを含んでいてもよいことを注意しておく。動的プロファイリング装置のコンポーネントは、ファームウェアおよび/またはハードウェアにおいて実装されてもよく、多コア・プロセッサ内に記憶されていてもよい。
【0011】
電力消費測定モジュール210は、コアの電力消費を、電力ウイルス(power virus)または他の電力ハングリーな(power hungry)アプリケーションを走らせることによって測定しうる。電力消費測定モジュールはまた、コアの電力消費を、コアによる電流ドレイン、電圧降下またさらにはコアの温度を測定することによって測定してもよい。ある実施形態では、多コア・プロセッサは、各試験の間にコア一つ一つの電力消費を逐次的または並列的に測定するために、一つの電力消費測定モジュールを有していてもよい。別の実施形態では、各コアが電力消費測定モジュールを有していてもよいし、あるいはいくつかのコアが一つの電力消費測定モジュールを共有する。温度センサー220は、電力消費測定モジュールと協働して、各コアによる電力消費から帰結する温度上昇を測定し、および/または多コア・プロセッサ中の各コアの電力リークを測定しうる。コアの電力リークは、コアの漏れ電流を通じて測定されうる。漏れ電流は、前記温度およびコアの電圧降下と組み合わせて、そのコアの電力リークおよび傾向情報を取得するために使用されうる。温度センサー220は、多コア・プロセッサのダイにわたる温度変動を判別し、ダイにおけるホット・スポットを同定するためにも使用されうる。そうして取得された情報は、どのコアが他のコアより多くの熱を生成しているかを示しうる。よって、OSは、より多くの熱を生成する傾向のあるコアに集中するのを避けるよう、しかるべくタスクにコアを割り当てうる。
【0012】
動作スピード測定モジュール230は、コアの電圧供給および位相ロック・ループ(PLL)クロック周波数を動的に変えることによって、コアの最大動作周波数を測定しうる。典型的には、電圧増はコアの動作周波数を上げるのを助ける。コアの最大動作周波数は、コアに供給されうる電圧の上限のもとで、PLLクロック周波数がそれ以上上げられなくなるまでPLLクロック周波数を逓増させることによって得られうる。一つのコアの動的プロファイルは、一組の動作周波数を維持しうる。個々の動作周波数は、ある電圧値のもとでの最大動作周波数である。動作周波数測定モジュールは、電力消費測定モジュールおよび温度センサーと協働して、協調してコアの電力消費および電力リークならびに最大動作周波数を測定しうる。
【0013】
機能的な正しさ検査モジュール240は、コア・レベルの機能検査方式を使うことによって、何らかのエラー(errors)または欠陥(faults)を動的に検出しうる。そのような方式が使われるとき、第二のコア、「チェッカー」が、「マスター」コアとロックステップで実行される。チェッカーはマスターの出力をサンプリングし、それらの値を内部的に計算した値と比較し、不一致が起こったらエラー信号をアサートする。チェッカーは他の動作もしていてもよい。こうして、それは単にFRC方式におけるような冗長コアではなく、同時に他の有用な仕事をしている。チェッカーからの結果がマスターからの結果に一致しないときに計算を再実行するために第三のコアが使用されてもよい。第三のコアからの結果がチェッカーまたはマスターのいずれかからの結果に一致する場合、チェッカーとマスターとのうちで、第三のコアからの結果に不一致な結果を与えたコアが、エラーを起こしているコアであると同定されうる。第三のコアからの結果がチェッカーからの結果にもマスターからの結果にも一致しない場合は、第三のコア自身が欠陥があることがありえ、計算を再実行するために第四のコアが必要とされることがありうる。このプロセスは、計算を再実行する追加的なコアからの結果がチェッカーまたはマスターのいずれかからの結果に一致するまで続けられうる。欠陥があるまたは遅いプロセッサは、適切なタスク割り当てのため、特定の欠陥ビンに置かれるよう、フラグが立てられる。
【0014】
機能的な正しさ検査モジュールは、細かい粒度レベル(たとえば1サイクルまたは数サイクル毎)で、あるいは粗い粒度レベル(たとえば100サイクル毎)で結果を検査しうる。機能的な正しさ検査モジュールは、失敗した試験の割合、エラーの数などといった粗い粒度の情報ならびにどの機能ブロックまたは命令がエラーを与えるかといった細かい粒度の情報を取得しうる。FRCベースの機能的な正しさ検査は、図3Aおよび図3Bに示されるように二つの隣り合うコアの間で実行されうる。機能的な正しさ検査のためのペアの割り当ては定期的に変えられてもよい(たとえば図3Aに示す割り当てから図3Bに示す割り当てに)。ある欠陥コアが常に、ある正しく機能しているコアを検査する可能性を減らすためである。もう一つの実施形態では、FRCベースの機能的な正しさ検査をプロセッサ内の他のすべてのコアについて実行するために、若干のコアが選択されてもよい。それらの選択されたコアは、それらの間でも機能的な正しさ検査を実行する(たとえば、自分たちの間でのペアごとの検査)。機能的な正しさ検査モジュールは、どのように検査を実行するか、ペアごとの検査が使われるかどうかおよびいつペアが変えられるか、あるいは検査を実施するためにいくつかのコアが選択されるかどうかを決定しうる。
【0015】
機能的な正しさ検査モジュールは、通常動作の間に検査を実行しうる。その際、計算結果が規則的なチェックポイントで検証される。これらの検査は、機能的な精度よりも電力消費のほうが重要な因子でありうるような、非クリティカル・アプリケーションについては待機モードで実行されることもできる。例は、携帯機器で走るグラフィック・アプリケーションである。機能上の検査は、コアの各機能モードを系統的に検査するユーザー・アプリケーション・プログラムまたは事前に特徴付けられた試験ルーチンを使うことができる。機能的な正しさ検査の間に見出されたエラーは、過渡的または静的のいずれでもありうる。同じ検査を再実施することによって過渡的エラーは静的エラーから区別されうる。再検査後にエラーが消えていれば、これらのエラーは過渡的であり、そうでなければこれらのエラーは静的である。過渡的エラーは静的エラーほど有害ではないかもしれないが、過渡的エラーを受けやすいコアは、より緊密なモニタリングのためにフラグを付けてもよい。
【0016】
図2に示されるような信頼性追跡モジュール250は、組み込まれたルーチンを使用して、最大動作周波数、電力消費および電力リーク、機能上のエラーのレートなどといったパラメータの傾向情報を取得しうる。傾向情報は最初の試験後には手にはいらないことがありうる。二番目の試験後、二番目の試験の結果が最初の試験の結果と比較されて、両試験の間の変化が取得されうる。典型的には、傾向情報は時間がたつにつれて、より多くのデータが利用できるので、より信頼できるものになる。
【0017】
コントローラ260は、動的プロファイリング装置200中の種々のコンポーネントの間の調整をし、それらのコンポーネントの動作を制御しうる。たとえば、コントローラは、動的プロファイリングのための試験をトリガーしうる。ひとたび試験がトリガーされると、種々のコンポーネント(たとえば、電力消費測定モジュールおよび動作スピード測定モジュール)がそれらの対応するパラメータの測定を開始しうる。ある実施形態では、コントローラは、動的プロファイリングするための試験を、定期的に自分でトリガーしうる。もう一つの実施形態では、OSがコントローラに試験をトリガーすることを要求してもよい。
【0018】
さらに、コントローラは、各試験の間、各コンポーネントによる測定のタイミングを制御しうる。たとえば、コントローラは、温度センサーに、試験アプリケーション(たとえば電力ハングリーなアプリケーション)が一定期間走るまで待ってから温度測定をするよう依頼しうる。また、コントローラは、試験の間、何も実行しないようコンポーネントに命じてもよい。たとえば、いちばん最初の試験の間、コントローラは信頼性追跡モジュールに、何も実行しないよう依頼してもよい;そしてコントローラはまた、信頼性追跡モジュールに、単一試験毎ではなく数回の試験毎に傾向情報を取得するよう要求してもよい。さらに、コントローラは、コンポーネントに、所望される情報を得るようある方法を使うよう指令してもよい。たとえば、コントローラは、機能的な正しさ検査モジュールに、検査を実施するために前記ペアごとの方法を使い、一定回数の試験後にペアを変更するよう指令してもよい。さらに、コントローラは、種々のコンポーネントの間で、あるパラメータを取得するよう調整してもよい。たとえば、コントローラは、コアの電力消費、電圧、電力リークおよび動作スピードの間の関係を取得するよう、電力消費測定モジュール、温度センサーおよび動作スピード測定モジュールの間で調整してもよい。
【0019】
図2には示していないが、動的プロファイリングの間に取得された情報は、多コア・プロセッサ中の共有メモリ内に記憶されてもよい。共有メモリのあらかじめ定義されたセクタが、すべてのコアについての動的プロファイルを記憶するために指定されてもよい。動的プロファイルは、OSおよび/または他のアプリケーションによってアクセスされうる。
【0020】
ある実施形態では、あるコアについての動的プロファイルは、図3A〜図3Bに示されるように隣のコアによって構築されうる。たとえば、各コアは、その隣のコアの電力消費および電力リークを測定するために使うことのできる電力消費測定モジュールを有していてもよい。動的プロファイルを構築するためのペアの割り当ては、規則的に変えられてもよい(たとえば図3Aに示す割り当てから図3Bに示す割り当てに)。ある欠陥コアが常に、ある正しく機能しているコアについて誤ったプロファイルを構築する可能性を減らすためである。もう一つの実施形態では、いくつかのコアがプロファイル・ビルダーとして指定されてもよい。これらのプロファイル・ビルダーは、自分たちの間で互いについて他のコアについての動的プロファイルを構築する。
【0021】
図4は、多コア・プロセッサ中の各コアについて動的プロファイリングを実行するための一つの例示的なプロセス400のフローチャートを示す。ブロック410では、試験が開始されうる。試験は定期的に(たとえば1時間毎に)開始されてもよいし、あるいはOSによって任意の時刻に開始されてもよい。ブロック420では、各コアによる電力消費が測定されうる。ブロック430では、各コアの最大動作スピードが測定されうる。各レベルの電圧での最大動作スピードが測定されうる。ブロック440では、各コアのダイ領域にわたる温度が測定され、ホット・スポットおよび温度変動が同定されうる。ブロック450では、機能的な正しさ検査が実行されうる。ブロック420ないし450は図4では解説のため別個に示されているが、これらのブロックにまつわる機能は逐次的に実行されても、並列に実行されても、あるいはインターリーブされた仕方で実行されてもよい。さらに、各コアの動的プロファイルのためのさらなるパラメータまたは該パラメータ間の関係を取得するために実行される他の動作があってもよい。
【0022】
ブロック460では、ブロック420ないし450で実行される機能から得られるデータから、コアを特徴付けるさらなるパラメータが導出されうる。ブロック460のところに形成される機能は、これまでのブロック(たとえばブロック420またはいくつかのブロックの組み合わせ)において実行される機能とマージされてもよい。ブロック470では、現在の試験の間に得られたパラメータと以前の試験から得られたパラメータとを比較することによって、傾向情報が取得されうる。これは、第二の試験から始まって実行される。コアの信頼性は、コアを特徴付けるパラメータの傾向情報によって示されうる。ブロック480では、各コアについて、すべてのパラメータおよびその傾向情報を含む動的プロファイルが取得され、保存されうる。このブロックは、解説上の目的のため、他のブロックとは別個に示されていることを注意しておく。実際上は、パラメータは、ひとたび取得されたら記憶されるのでもよい。
【0023】
図5は、多コア・プロセッサが使用されうるある例示的なコンピューティング・システム500を示している。コンピューティング・システム500は、システム相互接続515に結合された一つまたは複数のプロセッサ510を有しうる。プロセッサ510は、各コアについて動的プロファイルを構築するための動的プロファイリング装置を有する多コア・プロセッサでありうる。動的プロファイルは、動的プロファイリング装置自身によって開始される定期的試験を通じて構築されても、あるいはOSによって開始される試験を通じて構築されてもよい。各動的プロファイルは、コアの最大動作周波数、電力消費、電力リーク、機能的な正しさおよび他のパラメータについての情報を含みうる。動的プロファイルは、これらのパラメータの傾向情報をも含みうる。
【0024】
コンピューティング・システム500は、システム相互接続515に結合されたチップセット530をも含んでいてもよい。チップセット530は、一つまたは複数の集積回路パッケージまたはチップを含みうる。チップセット530は、コンピューティング・システム500の他のコンポーネント560へのおよび/または他のコンポーネント560からのデータ転送をサポートするために、一つまたは複数のデバイス・インターフェース535を有しうる。たとえば、BIOSファームウェア、キーボード、マウス、記憶装置、ネットワーク・インターフェースなどといったものである。チップセット530は、周辺コンポーネント相互接続(PCI)バス570に結合されていてもよい。チップセット530は、PCIバス570にインターフェースを提供するPCIブリッジ545を含んでいてもよい。PCIブリッジ545は、プロセッサ510および他のコンポーネント560と周辺機器との間のデータ経路を提供してもよい。周辺機器とはたとえば、オーディオ装置580およびディスク・ドライブ590といったものである。図示しないが、他の装置もPCIバス570に結合されていてもよい。
【0025】
さらに、チップセット530は、メイン・メモリ550に結合しているメモリ・コントローラ525を有しうる。メイン・メモリ550は、データおよびプロセッサ510またはシステムに含まれる他の任意の装置によって実行される命令のシーケンスを保存しうる。メモリ・コントローラ525は、プロセッサ510およびコンピューティング・システム500内の他の装置に関連したメモリ・トランザクションに応答して、メイン・メモリ550にアクセスしうる。ある実施形態では、メモリ・コントローラ550は、プロセッサ510または他の何らかの回路内に位置されうる。メイン・メモリ550は、メモリ・コントローラ525がデータを読み出しおよび/または書き込みうるアドレス指定可能な記憶位置を提供するさまざまなメモリ・デバイスを含みうる。メイン・メモリ550は、動的ランダム・アクセス・メモリ(DRAM)デバイス、同期DRAM(SDRAM)デバイス、二倍データレート(DDR)SDRAMデバイスまたは他のメモリ・デバイスといった一つまたは複数の異なる型のメモリ・デバイスを含んでいてもよい。
【0026】
図6は、多コア・プロセッサが使用されうるもう一つの例示的なコンピューティング・システム600を示している。システム600は、プロセッサ0 620Aのような複数プロセッサを含みうる。システム600内の一つまたは複数のプロセッサは多数のコアを有しうる。多コア・プロセッサ(単数または複数)は、各コアについて動的プロファイルを構築するための動的プロファイリング装置を有しうる。動的プロファイルは、動的プロファイリング装置自身によって開始される定期的な試験を通じて、あるいはOSによって開始される試験を通じて構築されうる。各動的プロファイルは、コアの最大動作周波数、電力消費、電力リーク、機能的な正しさおよび他のパラメータについての情報を含みうる。動的プロファイルはまた、これらのパラメータの傾向情報をも含みうる。システム600内の諸プロセッサは、システム相互接続610を使って互いに接続されうる。システム相互接続610は、フロント・サイド・バス(FSB)でありうる。各プロセッサは、システム相互接続を通じて、入出力(IO)デバイスならびにメモリ630に接続されうる。
【0027】
図7は、多コア・プロセッサが使用されうるさらにもう一つの例示的なコンピューティング・システム700を示している。システム700では、複数プロセッサ(たとえば720A、720B、720Cおよび720D)を接続するシステム相互接続710はリンクベースのポイントツーポイント接続である。各プロセッサは、リンクス・ハブ(links hub)(たとえば730A、730B、730Cおよび730D)を通じたシステム相互接続に接続しうる。いくつかの実施形態では、リンクス・ハブは、システム・メモリに出入りするトラフィックを調整するメモリ・コントローラと共位置でもよい。一つまたは複数のプロセッサが多くのコアを有していてもよい。多コア・プロセッサ(単数または複数)は、各コアについて動的プロファイルを構築するための動的プロファイリング装置を有しうる。動的プロファイルは、動的プロファイリング装置自身によって開始される定期的な試験を通じて、あるいはOSによって開始される試験を通じて構築されうる。各動的プロファイルは、コアの最大動作周波数、電力消費、電力リーク、機能的な正しさおよび他のパラメータについての情報を含みうる。動的プロファイルはまた、これらのパラメータの傾向情報をも含みうる。
【0028】
図8は、タスク実行の効率を改善するために多コア・プロセッサ中の各コアの動的プロファイルを使う例示的なシステム800のブロック図を示している。システム800は、多コア・プロセッサ中のコアすべてについての動的プロファイル810、コア・ビン分けモジュール820、タスク・コントローラ830、再構成器840およびパフォーマンスおよび電力マネージャ850を有しうる。動的プロファイル810は、図2に記載されたような動的プロファイリング装置によって構築およびリフレッシュされうる。動的プロファイルは、多コア・プロセッサ内のコアによって供給されるメモリの指定されたセクション内に保存されうる。動的プロファイルはOSによってアクセス可能である。
【0029】
コア・ビン分けモジュール820は、多コア・プロセッサ中のコアを、動的プロファイル内の一つまたは複数のコア特徴付けパラメータに従って一つまたは複数のビンにグループ化しうる。たとえば、動的プロファイルに基づいて、いくつかのコアが高速コアに割り当てられてもよく、いくつかが低速コアに割り当てられてもよく、他のものが予備コアとしてリザーブされてもよい。ビンの数は、特定のビン内のコアの数のよりよいコントロールを得るために調整されてもよい。コアは、時間がたつと、そのパフォーマンスの劣化のため、高速プールから低速プールに移動されてもよい。これが起こるとき、そのビン・レベルにおいて、当該プロセッサのパフォーマンスを維持するため、いくつかのオプションを追求しうる。予備のコアが高速プールに加えられてもよいし、あるいは既存のコアが、電圧スケーリングまたはボディ・バイアス調整技法を使って、より高い周波数で走らされてもよい。
【0030】
もう一つの例では、コアは、その電力消費のレベルに従って、あるいは信頼性パラメータのような他のパラメータに従ってビンにグループ分けされてもよい。さらにもう一つの例では、コアは異なる複数のセットのビンにグループ化されてもよい:一つのセットは動作スピードに基づくもの、一つは電力消費レベルに基づくもの、一つは信頼性パラメータに基づくもの、などである。ある実施形態では、コアは動的プロファイルが構築されたあと、異なる複数のセットのビンにグループ化されてもよい。ビン分けプロセスは、多コア・プロセッサ内に組み込まれたソフトウェア/ファームウェア・モジュールによって実行されうる。もう一つの実施形態では、ビン分けプロセスは、タスクがOSによって受け取られるときに実行されうる。それにより、コアは、タスクの特定の要求に従ってビンにグループ化されうる。たとえば、あるタスクが非常に計算集約的である場合、コアは、その動作スピードに従ってビンにグループ化されうる;あるタスクがバッテリーで実行される場合、コアは、その電力消費レベルに従ってビンにグループ化されうる。さらにもう一つの実施形態では、コア・ビン分けモジュールは、コアを、動的プロファイルがすべてのコアについて構築されたあとで、動作スピードおよび電力消費といったいくつかのパラメータに従って少数の基本的なビンにグループ化してもよく、タスクが受け取られるときにOSの指令のもとにそのタスクの個別的な要求に従って他のビンのセットにグループ化してもよい。個別的なタスク(単数または複数)のために形成されるビンは、そのタスクが完了したのち、解体されても、保持されてもよい。
【0031】
コアの特性が、ある試験と別の試験とで変わりうるので、種々のビンにわたる諸コアは、各試験後にシャッフルし直す必要があることがある。および/または、元来あるビンにはいったが、新たな試験後にはそのビンの基準を満たさなくなったコアの条件を調整して、そのビンにそのまま居続けられるようにしてもよい。たとえば、コアの電圧を上げれば、その動作スピードが上がりうるし、コアの電圧および/またはスピードを下げれば、そのコアの電力消費が低下しうる。
【0032】
図8に示されるようなタスク割り当て器830は、コアの現在の動的プロファイルに基づいて、タスクをコアに割り当て、および/または動的に再割り当てしうる。ある実施形態では、各タスクの要求はタスク・カテゴリーに基づいてあらかじめ決定されてもよい。たとえば、タスクがリアルタイムで大量のデータを処理することであれば、そのタスクは高速コアを要求しうる;タスクが、プロセッサがバッテリー電力で動作中に実行されるものであれば、そのタスクは低レベルの電力消費をもつコアを要求しうる。もう一つの実施形態では、OSがタスクを解析してその要求を判別してもよい。各タスクの要求に基づいて、タスク割り当て器はタスクを、対応する特性をもつコア(単数または複数)に、あるいはタスクの要求が満たされるような異なるコアの組み合わせに割り当てうる。コア・プロファイルがタスクの実行中に変わる場合、タスク割り当て器は、そのタスクに割かれるパフォーマンス・レベルを維持するために、その割り当てを動的に変えてもよい。
【0033】
再構成器840は、異なるコアの間で相互接続を再構成しうる。多コア・プロセッサ(図1に示されるような)における相互接続ファブリックは、コアの各ビンから良好な恩恵を導出するよう再構成可能であってもよい。コアのある特定のビンへの帰属は時間がたつと変わりうるので、静的なファブリックではコア間の帯域幅および遅延は幅広い揺動を受ける。こうして、柔軟かつ動的に再構成可能なファブリックを有することが望ましい。ビン内のコアの混合が変更されるチェックポイント毎に、ビン内の諸コアにわたる利用可能な帯域幅および遅延が評価されてもよく、必要なら、高いレベルの接続性を維持するためにファブリックが再構成されてもよい。ダイ上の諸コアの物理的な位置は変わらないながら、同じビン内の諸コアが互いに論理的に近接するよう、ファブリックをなすスイッチが再構成されてもよい。複数コア、予備コアのプールおよび接続性の高いファブリックの利用可能性は、欠陥からの、最小限のパフォーマンス劣化での迅速な回復を可能にする。試験によってある特定のコアについて問題が同定されるやいなや、そのコアは供用停止され、アクティブなサービスから外されうる。予備のプールからのコアがその代わりとなりうる。したがって、相互接続ファブリックも、欠陥コアがサービスから脱落することの効果を緩和するよう再構成されてもよい。これは、プロセッサが、変動および劣化に起因する欠陥を許容する能力を著しく改善する。
【0034】
図8に示されるようなパフォーマンスおよび電力マネージャ850は、変化する環境に応じて、タスクをコアの異なる組み合わせに割り当て直し、あるいは同じセットの諸コアを再バランスしうる。電源電力からバッテリー電力にシステムを移行することは、タスクを、よりリークが少なく、より消費電力が少ないコアに割り当て直すことが必要となりうる例である。多数の電力ハングリーなアプリケーションに起因するシステム負荷の増大も、コア間での作業負荷の再バランスを必要とすることがありうる。こうして、コア・プロファイル自身に加えて、システムおよび環境の因子が、コアの動的管理において考慮される必要がある。パフォーマンス要求をもつ単一コア・プロセッサについて電圧、周波数、ボディ・バイアスをバランスさせる技法は、利用可能なコアの数の追加的な最適化変数とともに、多コア環境に適用されうる。たとえば、スピード段階変化(stepping)技法は、変化する状況に応じてタスクに割り当てられるコアを再バランスさせるために使用されうる。この場合、コアのスピードが、その電圧供給を下げるか上げるかすることにより、それぞれ下げるか上げるかされうる。そしてコアの電力消費は、その動作スピードおよび/またはその電圧供給を下げることによって低下させられうる。
【0035】
図9は、多コア・プロセッサについてパフォーマンスおよび電力消費の管理の一例を示している。この図のx軸はGFLOP単位でのパフォーマンスを示し、y軸は一群のコアによって消費される電力を示している。図中の曲線は、異なるコア数について、パフォーマンスと電力消費の間の関係を表す。曲線910は、コア数64(たとえば8×8)の場合を表し、曲線920はコア数80(たとえば8×10)の場合を表し、曲線930はコア数96(たとえば8×12)の場合を表す。使われるコアが多いほど、パフォーマンスはよくなり、電力消費は少なくなることが示される。これは、使われるコアが多くなると、各コアが並列に低電圧で走って同じまたはよりよいパフォーマンス(使われるコア数がより少なく、各コアが高い電圧で走る状況と比べて)を達成でき、よって総合的な電力消費が低下されうるからである。したがって、変化する環境が電力消費が引き下げられることを要求するとき、パフォーマンスおよび電力マネージャはより多くのコアを使い、各コアへの電圧供給を下げるよう決定しうる。
【0036】
図10は、タスク実行の効率を改善するために多コア・プロセッサ中の各コアの動的プロファイルを使うための例示的なプロセス1000のフローチャートを示している。プロセス1000は、多コア・プロセッサ中のコアの動的プロファイルが構築されたのちに実行されうる。ブロック1010では、タスクがOSによって受領されうる。ブロック1020では、OSはタスクを解析してその要求(たとえばパフォーマンスおよび電力上の要求)を判別しうる。タスクの要求を判別するある例示的な手法は、タスクによって処理されるべきデータを見ることである。たとえば、リアルタイムで処理されるべき大量のデータがあれば、そのタスクはおそらく高速コアを必要とする。状況によっては、タスクの要求が何らかの所定のタスク・カテゴリーに基づいて事前に特徴付けられているため、OSがタスクの要求を判別するためにタスクを解析する必要はないこともありうる(たとえば、バッテリーを電源とするモバイル・アプリケーションは、低電力消費を要求するものとして事前に特徴付けされうる)。ブロック1030では、多コア・プロセッサ中のコアが、コアの動的プロファイルおよびタスクの要求に基づいて、異なる複数のビンにグループ化されうる。ある実施形態では、このブロックでのビン分けプロセスは、タスクが受け取られさえしないうちに部分的または完全に実行されうる。
【0037】
ブロック1040では、タスクがそのタスクの要求を満たせるような特性をもつコアに割り当てられうる。ブロック1050では、多コア・プロセッサにおける相互接続ファブリックが再構成されて、同じタスクを実行するコアどうしが接続されて、利用可能な帯域幅を増し、それらにわたる遅延を減らすようにされうる。ブロック1060では、タスクが実行されうる。タスクを実行するプロセスの間、変化する環境により、そのタスクへの異なるセットの諸コアの再割り当ておよび/または同じセットの諸コアの再バランスがトリガーされうる。
【0038】
開示される主題の例示的な実施形態が図1ないし図10のブロック図および流れ図を参照して記載されているが、当業者は開示される手段を実装する他の多くの方法が代わりに使用されうることを容易に理解するであろう。たとえば、流れ図におけるブロックの実行順序は変更してもよいし、および/または記載されるブロック図/流れ図におけるブロックのいくつかは変更されたり、消去されたり、組み合わされたりしてもよい。
【0039】
上記の記述において、開示される主題のさまざまな側面が記載されてきた。主題の十全な理解を与えるために、説明の目的上、個別的な数字、システムおよび構成が述べられた。しかしながら、本開示の恩恵を有する当業者には、主題が個別的な詳細なしで実施されうることは明らかである。他方、よく知られた特徴、コンポーネントまたはモジュールは、開示される主題をかすませないために、省略されたり、単純化されたり、組み合わされたり、分割されたりした。
【0040】
開示される主題のさまざまな実施形態は、ハードウェア、ファームウェア、ソフトウェアまたはそれらの組み合わせにおいて実装されることができ、プログラム・コードを参照して、あるいはプログラム・コードとの関連で記載されてもよい。プログラム・コードとは、命令、関数、手続き、データ構造、論理、アプリケーション・プログラム、設計のシミュレーション、エミュレーションおよび製造のための設計表現またはフォーマットといったもので、機械によってアクセスされると、該機械が、抽象的なデータ型または低レベルのハードウェア・コンテキストを定義するタスクを実行する、あるいは結果を生じるという結果を生じるものである。
【0041】
シミュレーションのためには、プログラム・コードは、ハードウェア記述言語または他の機能記述言語を使ってハードウェアを表現してもよい。機能記述言語とは、本質的には、設計されたハードウェアがどのように実行されると期待されるかのモデルを提供するものである。プログラム・コードは、アセンブリまたは機械語、あるいはコンパイルおよび/またはインタープリットされうるデータであってもよい。さらに、当技術分野では、ソフトウェアが何らかの形で動作するとか結果を引き起こすといった言い方が普通にされる。そのような表現は単に、プログラム・コードの処理システムによる実行がプロセッサをして動作を実行させ、あるいは結果を生じさせることを述べる短縮された言い方に過ぎない。
【0042】
プログラム・コードはたとえば、揮発性および/または不揮発性メモリ内に保存されうる。該メモリはたとえば、記憶装置および/または付随する機械可読もしくは機械アクセス可能媒体であり、半導体メモリ、ハード・ドライブ、フロッピー(登録商標)・ディスク、光記憶、テープ、フラッシュメモリ、メモリースティック、デジタル・ビデオ・ディスク、デジタル多用途ディスク(DVD)などが含まれる。さらには機械アクセス可能な生物学的状態保存記憶(biological state preserving storage)といったより変わった媒体も含まれる。機械可読媒体は、機械によって可読な形の情報を保存、送信または受信するためのいかなる機構をも含みうる。該媒体は、プログラム・コードをエンコードしている電気的、光学的、音響学的または他の形の伝搬される信号または搬送波が通りうる、アンテナ、光ファイバー、通信インターフェースなどといった具体的な媒体を含みうる。プログラム・コードはパケット、シリアル・データ、パラレル・データ、伝搬信号などの形で伝送されてもよく、圧縮されたまたは暗号化されたフォーマットで使われてもよい。
【0043】
プログラム・コードは、移動型または静止型コンピュータ、携帯情報端末、セットトップボックス、携帯電話およびポケベルならびにその他の電子機器といったプログラム可能機械上で実行されるプログラムにおいて実装されてもよい。そうしたプログラム可能機械のそれぞれは、プロセッサ、該プロセッサによって可読な揮発性および/または不揮発性メモリ、少なくとも一つの入力装置および/または一つまたは複数の出力装置を含んでいる。プログラム・コードは、記載された諸実施形態を実行し、出力情報を生成するために、入力装置を使って入力されたデータに適用されうる。出力情報は、一つまたは複数の出力装置に適用されうる。当業者は、開示される主題の諸実施形態が、さまざまなコンピュータ・システム構成で実施できることを理解しうる。そうした構成には、マルチプロセッサまたは複数コアプロセッサ・システム、ミニコンピュータ、メインフレーム・コンピュータならびに実質的にいかなる機器にも組み込まれうる浸透型(pervasive)またはミニチュア・コンピュータまたはプロセッサが含まれる。開示される主題の実施形態はまた、タスクが通信ネットワークを通じてリンクされているリモートな複数の処理装置によって実行されうる、分散されたコンピューティング環境においても実施できる。
【0044】
動作は逐次的な処理として記載されていることもあるが、動作の一部は実際には並列に、並行しておよび/または分散環境で、単一または複数プロセッサ機械によるアクセスのためにローカルおよび/またはリモートに保存されたプログラム・コードで実行されてもよい。さらに、いくつかの実施形態では、動作の順序は、開示される主題の精神から外れることなく再配列されうる。プログラム・コードは、組み込まれたコントローラによって、あるいは組み込まれたコントローラとの関連で使用されてもよい。
【0045】
開示される主題は、例示的な実施形態を参照しつつ記載されてきたが、本記載は限定的な意味に解釈されることは意図されていない。開示される主題に係る技術分野の当業者に明らかな例示的な実施形態のさまざまな修正および主題の他の実施形態は、開示される主題の範囲内であると見なされる。
【0046】
いくつかの態様を記載しておく。
〔態様1〕
多コア・プロセッサであって:
複数の処理コアと;
相互接続ファブリックと;
少なくとも一つのメモリ・モジュールと;
当該多コア・プロセッサ中の各コアの特性を動的にプロファイリングするプロファイリング・モジュールとを有しており、
前記複数のコアおよび前記少なくとも一つのメモリ・モジュールが前記相互接続ファブリックに結合されている、多コア・プロセッサ。
〔態様2〕
態様1記載のプロセッサであって、前記プロファイリング・モジュールが:
前記多コア・プロセッサ中の各コアによる電力消費を、種々の電圧および種々のスピードのもとで定期的に測定する電力消費測定モジュールと;
前記多コア・プロセッサ中の各コアの最大スピードを、種々の電圧のもとで定期的に測定する動作スピード測定モジュールと;
前記多コア・プロセッサ中の各コアの信頼性情報を、少なくとも部分的に前記多コア・プロセッサ中の各コアの前記の測定された電力消費データおよび最大スピードに基づいて取得する信頼性追跡モジュールとを有する、
プロセッサ。
〔態様3〕
温度分布を測定し、前記多コア・プロセッサ中の各コアのダイ領域および前記相互接続ファブリックにわたるホット・スポットを同定するための少なくとも一つの温度センサーをさらに有する、態様2記載のプロセッサ。
〔態様4〕
前記信頼性追跡モジュールが、前記温度分布および前記ホット・スポットの傾向情報を時間を通じて取得する、態様3記載のプロセッサ。
〔態様5〕
前記多コア・プロセッサ中の各コアの機能的な正しさを検査する機能的な正しさ検査モジュールをさらに有する、態様2記載のプロセッサ。
〔態様6〕
前記機能的な正しさ検査モジュールが、少なくとも粗い粒度のレベルで機能的な正しさ検査を実行する、態様5記載のプロセッサ。
〔態様7〕
前記信頼性追跡モジュールが、前記多コア・プロセッサ中の各コアの機能的な正しさの傾向情報を時間を通じて取得する、態様5記載のプロセッサ。
〔態様8〕
前記多コア・プロセッサ中の各コアの特性を動的にプロファイリングするプロセスにおいて、少なくとも前記電力消費測定モジュール、前記動作スピード測定モジュールおよび前記信頼性追跡モジュールを、制御し、協調させるコントローラをさらに有する、態様2記載のプロセッサ。
〔態様9〕
多コア・プロセッサ中の各コアの特性を動的にプロファイリングする方法であって:
前記多コア・プロセッサ中の各コアについて定期的に試験を開始し;
各試験の間に、種々の電圧および種々の動作スピードのもとで、前記多コア・プロセッサ中の各コアの電力消費データを測定し;
各試験の間に、種々の電圧のもとで、前記多コア・プロセッサ中の各コアの最大動作スピードを測定し;
前記多コア・プロセッサ中の各コアの信頼性情報を、少なくとも部分的に、各試験の間に取得された前記電力消費データおよび前記最大動作スピードに基づいて取得することを含む、
方法。
〔態様10〕
前記多コア・プロセッサ中の各コアのダイ領域および前記相互接続ファブリックにわたるホット・スポットおよび温度分布を取得するために温度を測定し;
機能的な正しさ検査を実施して前記多コア・プロセッサ中の各コアの機能的な正しさ情報を取得することをさらに含む、
態様9記載の方法。
〔態様11〕
前記信頼性情報が、前記多コア・プロセッサ中の各コアの、前記ダイ領域にわたる前記ホット・スポットおよび温度変動ならびに前記機能的な正しさ情報の傾向情報を含む、態様10記載の方法。
〔態様12〕
前記多コア・プロセッサ中の各コアについてパフォーマンス・プロファイルを取得し、記憶することをさらに含む態様10記載の方法であって、前記パフォーマンス・プロファイルは、前記電力消費データ、前記最大動作スピード、前記機能的な正しさ情報、各コアのダイ領域にわたる前記ホット・スポットおよび温度変動ならびに前記多コア・プロセッサ中の各コアについてのそれらの傾向情報を含む、方法。
〔態様13〕
多コア・プロセッサであって、該プロセッサ中の各コアについて動的プロファイルを生成するプロファイリング・モジュールを含む多コア・プロセッサと;
タスクを受領し、該タスク・アプリケーションを、少なくとも部分的に該タスクの要求および前記プロセッサ中の各コアの前記動的プロファイルに基づいて第一のセットのコアに割り当てるタスク割り当てモジュールとを有する、
コンピューティング・システム。
〔態様14〕
前記プロセッサがさらに、コアの少なくとも一つの特性を基準として使って、前記プロセッサ中のコアを、各コアの前記動的プロファイルに基づく複数のビンにグループ分けするコア・ビン分けモジュールを有しており、前記複数のビンは前記タスク割り当てモジュールによって、前記タスクを前記第一のセットのコアに割り当てるために使用される、態様13記載のシステム。
〔態様15〕
変化する条件に応答して、前記タスクを第二のセットのコアに再割り当てするおよび前記第一のセットのコアを再バランスするのうち少なくとも一方をするパフォーマンスおよび電力マネージャをさらに有し、ここで、前記第二のセットのコアは前記第一のセットのコアとは異なるコアを少なくとも一つ含んでいる、態様13記載のシステム。
〔態様16〕
前記第一のセットのコアおよび前記第二のセットのコアのうちの少なくとも一方の間で相互接続を再構成する再構成器をさらに有する、態様15記載のシステム。
〔態様17〕
前記変化する条件が、前記第一のセットのコアのうち少なくとも一つのコアの変化する条件と、変化する環境とのうちの少なくとも一方を含む、態様15記載のシステム。
〔態様18〕
多コア・プロセッサを使ってタスクを効率的に実行する方法であって:
タスクを受領し;
前記タスクを解析して前記タスクの要求を判別し;
前記タスクを、前記タスクの前記要求に基づいて、前記多コア・プロセッサ中の第一のセットのコアに割り当て;
前記タスクを、前記第一のセットのコアを使って実行することを含む、
方法。
〔態様19〕
前記多コア・プロセッサ中の諸コアを、前記多コア・プロセッサ中のコアの少なくとも一つの特性に従って、各コアの動的プロファイルに基づいて、複数のビンにグループ分けすることをさらに含む、態様18記載の方法。
〔態様20〕
変化する条件に応答して、前記タスクを第二のセットのコアに再割り当てすることおよび前記第一のセットのコアを再バランスすることのうち少なくとも一方を含んでおり、ここで、前記第二のセットのコアは前記第一のセットのコアとは異なるコアを少なくとも一つ含んでいる、態様18記載の方法。
〔態様21〕
前記変化する条件が、前記第一のセットのコアのうち少なくとも一つのコアの変化する条件と、変化する環境とのうちの少なくとも一方を含む、態様20記載の方法。
〔態様22〕
前記第一のセットのコアおよび前記第二のセットのコアのうちの少なくとも一方の間で相互接続を再構成することをさらに含む、態様20記載の方法。
【技術分野】
【0001】
本開示は、概括的にはマイクロプロセッサに、より特定的には多くのコアをもつプロセッサに関する。
【背景技術】
【0002】
多コア・プロセッサ(many-core processor)は複数の処理コアを同じダイ上にもつ。プロセス技術が非常に小さな大きさにスケールすると、プロセッサ周波数を上げることによって高パフォーマンスを達成する現在主流の設計手法は、劇的に増大した電力消費によって厳しく制限される。高パフォーマンスを達成する一つの代替的な設計手法は、典型的な「より大きな」コアより遅いスピードで並行して走る多くの「小さな」コアにアプリケーションを分散させることである。それぞれの「小さな」コアは、「大きな」コアよりも、より単純で、より小さく、食う電力がずっと少なく、それでいて著しいパフォーマンスを上げるので、この多コアに基づく設計手法は、大きなコアに基づく設計手法よりも効率的に電力消費を管理することを助けることができる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
多コア・プロセッサは単一コアまたは少数の大きなコアをもつプロセッサに対して利点を有するものの、プロセス技術が小さな大きさにスケールダウンするとともに多くの課題にも直面する。たとえば、静的であれ動的であれプロセス変動はトランジスタを信頼できなくする;記憶ノードでの静電容量が小さく、電圧が低いので、過渡エラー率が高くなりうる;時間の経過とともにトランジスタ劣化がひどくなりうるので、時間とともに信頼性は劣化しうる。そのような課題は、工場試験の間は良好に動作する多コア・プロセッサ中のコアが、時間とともに、前と同じくらい良好に動作しなかったり、完全に動作を停止したりする状況につながりうる。このため、伝統的なプロセッサに適用されているような、一度に行う工場試験およびバーンインは、多コア・プロセッサでの信頼できるコンピューティングを時間がたっても保証するにはそれほど効率的ではなくなる。したがって、多コア・プロセッサの寿命の間に、多コア・プロセッサ中のコアのパフォーマンスを定期的に試験し、こうして得られた試験データを、アプリケーションのためにそのパフォーマンスを改善するために使うことができることが望ましい。
開示される主題の特徴および利点は、該主題の以下の詳細な記述から明らかになるであろう。
【図面の簡単な説明】
【0004】
【図1】例示的な多コア・プロセッサを示す図である。
【図2】多コア・プロセッサ中の各コアについて動的プロファイリングを定期的に実行する動的プロファイリング装置の例示的なブロック図である。
【図3A】多コア・プロセッサにおいて動的プロファイリングを実行する例を示す図である。
【図3B】多コア・プロセッサにおいて動的プロファイリングを実行する例を示す図である。
【図4】多コア・プロセッサ中の各コアについて動的プロファイリングを実行する例示的なプロセスのフローチャートを示す図である。
【図5】多コア・プロセッサが使用されうる例示的なコンピューティング・システムを示す図である。
【図6】多コア・プロセッサが使用されうるもう一つの例示的なコンピューティング・システムを示す図である。
【図7】多コア・プロセッサが使用されうるさらにもう一つの例示的なコンピューティング・システムを示す図である。
【図8】タスク実行の効率を改善するために多コア・プロセッサ中の各コアの動的プロファイルを使うシステムの例示的なブロック図である。
【図9】多コア・プロセッサについてのパフォーマンスおよび電力消費の管理の一例を示す図である。
【図10】タスク実行の効率を改善するために多コア・プロセッサ中の各コアの動的プロファイルを使うための例示的なプロセスのフローチャートである。
【発明を実施するための最良の形態】
【0005】
本出願における開示される主題の実施形態によれば、多コア・プロセッサ中のコアは、その動的プロファイルを取得および/またはリフレッシュするために定期的に試験されうる。コアの動的プロファイルとは、その最大動作周波数、電力消費、電力リーク、機能的な正しさ(functional correctness)およびその他のパラメータについての情報を含みうる。動的プロファイルは、これらのパラメータの傾向情報(trending information)をも含みうる。それは、時間がたったときのコアの信頼性を示すものである。これらのパラメータは、多コア・プロセッサに組み込まれたモジュール、たとえば動作スピード測定モジュール、電力消費測定モジュール、温度センサーおよび機能的な正しさ検査モジュールなどによって取得されうる。各コアの機能的な正しさに関係する情報は、粗い粒度の機能的冗長性検査(FRC: functional redundancy checking)方式および/または細かい粒度のFRC方式を使うことによって取得されうる。各コアについての動的プロファイルは、コア自身のメモリ内に、あるいはコアの一部または全部によって共有されるメモリ内に記憶されうる。動的プロファイルが最初に取得されるとき、動的プロファイルは傾向情報は含まない。しかし、二回目の定期試験からは、傾向情報が取得され、のちの試験後に更新されうる。
【0006】
ひとたび各コアについて動的プロファイルが生成されたら、多コア・プロセッサ中のコアはその特性に従って種々のビンにグルーピングされてもよい。たとえば、最大動作周波数が高いコアは高速コアとラベル付けされうる;電力消費が低いコアは低電力消費コアとラベル付けされうる;良好な傾向情報をもつコアは信頼できるコアとラベル付けされうる;などである。動的プロファイルおよび前記グルーピング情報に基づき、オペレーティング・システム(OS)または中間ソフトウェア層は、タスクを、そのタスクのために最も好適なコアに割り当てうる。たとえば、タスクが集約的な計算を要求する場合、そのタスクは高速コアに割り当てられうる。ひとたびある種の諸コアがそのタスクのために選択されると、選択された諸コアにわたって少なくとも受け容れ可能な帯域幅および遅延が達成されうるよう、選択された諸コアの間での高いレベルの接続性を保証するよう、多コア・プロセッサ中の相互接続ファブリック(interconnect fabric)が再構成されうる。さらに、OSは、環境の変化に応答してタスクにコアを割り当て直してもよく、相互接続ファブリックがしかるべく再構成されてもよい。
【0007】
本明細書において、開示される主題の「一つの実施形態」または「ある実施形態」への言及は、その実施形態に関連して記載される特定の特徴、構造または特性が、開示される主題の少なくとも一つの実施形態に含まれることを意味している。よって、本明細書を通じて随所に現れる「ある実施形態では」の句の出現は、必ずしもみなが同じ実施形態を指すのではない。
【0008】
図1は、例示的な多コア・プロセッサ100の構造を示している。プロセッサ100は、二次元(2D)相互接続ファブリック130上に座するコア(たとえばコア110)の8×8のアレイを有する。各コアは、そのローカルなメモリ(図示せず)を有しうる。相互接続ファブリック130に取り付けられた共有メモリ(たとえば120)もある。単一コアまたは少数コアしかもたないプロセッサに比べ、多コア・プロセッサ中のコアの数は多い。結果として、多コア・プロセッサ中の各コアの大きさは、単一コアまたは少数コア・プロセッサ中のコアに比べて小さい。図1が示す例示的なプロセッサ100は、64個のコアしかもたないが、多コア・プロセッサにおけるコアの数は変わることができ、64よりずっと多くてもよい(たとえば256、512、1024)。プロセッサ100はまた、各コアを周辺機器(たとえばグラフィック・デバイス)と接続するための入出力(I/O)相互接続(図示せず)をも有する。ある実施形態では、I/O相互接続は、プロセッサ・ダイにおけるコアすべてを取り囲んでいてもよい。別の実施形態では、I/O相互接続はコアの間に組み込まれてもよい。
【0009】
典型的には、プロセッサは、パッケージングされたあと、適正にはたらくことを保証するよう試験される。しかしながら、将来の多コア・プロセッサについては、そのような一度きりの工場試験は、プロセス技術がスケールダウンする(たとえば35ナノメートル(nm)またはさらに細かいプロセス技術)ので、品質を保証するために十分ではないことがありうる。たとえば、コアの最大動作周波数は、エージングのため低下しうる。よって、多コア・プロセッサ内部のコアを定期的に試験し、そのプロセッサ上で走るアプリケーションをその試験データに適応させることが望ましい。定期的な試験からのデータを使用して、各コアについてプロファイルが生成されうる。該プロファイルは、各試験後に更新/リフレッシュされうるので、動的である。各コアの動的プロファイルは、そのコアの最大周波数、電力消費、電力リーク、機能的な正しさおよびその他のパラメータについての情報を含みうる。動的プロファイルはまた、これらのパラメータの傾向情報をも含みうる。
【0010】
図2は、多コア・プロセッサ中の各コアについて動的プロファイリングを定期的に実行する動的プロファイリング装置200の例示的なブロック図を示している。装置200は、電力消費測定モジュール210、温度センサー220、動作スピード測定モジュール230、機能的な正しさ検査モジュール240、信頼性追跡モジュール250およびコントローラ260を有する。動的プロファイリング装置は、図2に示されたものに加えてコアの他のパラメータを測定するために使われる他のコンポーネントを含んでいてもよいことを注意しておく。動的プロファイリング装置のコンポーネントは、ファームウェアおよび/またはハードウェアにおいて実装されてもよく、多コア・プロセッサ内に記憶されていてもよい。
【0011】
電力消費測定モジュール210は、コアの電力消費を、電力ウイルス(power virus)または他の電力ハングリーな(power hungry)アプリケーションを走らせることによって測定しうる。電力消費測定モジュールはまた、コアの電力消費を、コアによる電流ドレイン、電圧降下またさらにはコアの温度を測定することによって測定してもよい。ある実施形態では、多コア・プロセッサは、各試験の間にコア一つ一つの電力消費を逐次的または並列的に測定するために、一つの電力消費測定モジュールを有していてもよい。別の実施形態では、各コアが電力消費測定モジュールを有していてもよいし、あるいはいくつかのコアが一つの電力消費測定モジュールを共有する。温度センサー220は、電力消費測定モジュールと協働して、各コアによる電力消費から帰結する温度上昇を測定し、および/または多コア・プロセッサ中の各コアの電力リークを測定しうる。コアの電力リークは、コアの漏れ電流を通じて測定されうる。漏れ電流は、前記温度およびコアの電圧降下と組み合わせて、そのコアの電力リークおよび傾向情報を取得するために使用されうる。温度センサー220は、多コア・プロセッサのダイにわたる温度変動を判別し、ダイにおけるホット・スポットを同定するためにも使用されうる。そうして取得された情報は、どのコアが他のコアより多くの熱を生成しているかを示しうる。よって、OSは、より多くの熱を生成する傾向のあるコアに集中するのを避けるよう、しかるべくタスクにコアを割り当てうる。
【0012】
動作スピード測定モジュール230は、コアの電圧供給および位相ロック・ループ(PLL)クロック周波数を動的に変えることによって、コアの最大動作周波数を測定しうる。典型的には、電圧増はコアの動作周波数を上げるのを助ける。コアの最大動作周波数は、コアに供給されうる電圧の上限のもとで、PLLクロック周波数がそれ以上上げられなくなるまでPLLクロック周波数を逓増させることによって得られうる。一つのコアの動的プロファイルは、一組の動作周波数を維持しうる。個々の動作周波数は、ある電圧値のもとでの最大動作周波数である。動作周波数測定モジュールは、電力消費測定モジュールおよび温度センサーと協働して、協調してコアの電力消費および電力リークならびに最大動作周波数を測定しうる。
【0013】
機能的な正しさ検査モジュール240は、コア・レベルの機能検査方式を使うことによって、何らかのエラー(errors)または欠陥(faults)を動的に検出しうる。そのような方式が使われるとき、第二のコア、「チェッカー」が、「マスター」コアとロックステップで実行される。チェッカーはマスターの出力をサンプリングし、それらの値を内部的に計算した値と比較し、不一致が起こったらエラー信号をアサートする。チェッカーは他の動作もしていてもよい。こうして、それは単にFRC方式におけるような冗長コアではなく、同時に他の有用な仕事をしている。チェッカーからの結果がマスターからの結果に一致しないときに計算を再実行するために第三のコアが使用されてもよい。第三のコアからの結果がチェッカーまたはマスターのいずれかからの結果に一致する場合、チェッカーとマスターとのうちで、第三のコアからの結果に不一致な結果を与えたコアが、エラーを起こしているコアであると同定されうる。第三のコアからの結果がチェッカーからの結果にもマスターからの結果にも一致しない場合は、第三のコア自身が欠陥があることがありえ、計算を再実行するために第四のコアが必要とされることがありうる。このプロセスは、計算を再実行する追加的なコアからの結果がチェッカーまたはマスターのいずれかからの結果に一致するまで続けられうる。欠陥があるまたは遅いプロセッサは、適切なタスク割り当てのため、特定の欠陥ビンに置かれるよう、フラグが立てられる。
【0014】
機能的な正しさ検査モジュールは、細かい粒度レベル(たとえば1サイクルまたは数サイクル毎)で、あるいは粗い粒度レベル(たとえば100サイクル毎)で結果を検査しうる。機能的な正しさ検査モジュールは、失敗した試験の割合、エラーの数などといった粗い粒度の情報ならびにどの機能ブロックまたは命令がエラーを与えるかといった細かい粒度の情報を取得しうる。FRCベースの機能的な正しさ検査は、図3Aおよび図3Bに示されるように二つの隣り合うコアの間で実行されうる。機能的な正しさ検査のためのペアの割り当ては定期的に変えられてもよい(たとえば図3Aに示す割り当てから図3Bに示す割り当てに)。ある欠陥コアが常に、ある正しく機能しているコアを検査する可能性を減らすためである。もう一つの実施形態では、FRCベースの機能的な正しさ検査をプロセッサ内の他のすべてのコアについて実行するために、若干のコアが選択されてもよい。それらの選択されたコアは、それらの間でも機能的な正しさ検査を実行する(たとえば、自分たちの間でのペアごとの検査)。機能的な正しさ検査モジュールは、どのように検査を実行するか、ペアごとの検査が使われるかどうかおよびいつペアが変えられるか、あるいは検査を実施するためにいくつかのコアが選択されるかどうかを決定しうる。
【0015】
機能的な正しさ検査モジュールは、通常動作の間に検査を実行しうる。その際、計算結果が規則的なチェックポイントで検証される。これらの検査は、機能的な精度よりも電力消費のほうが重要な因子でありうるような、非クリティカル・アプリケーションについては待機モードで実行されることもできる。例は、携帯機器で走るグラフィック・アプリケーションである。機能上の検査は、コアの各機能モードを系統的に検査するユーザー・アプリケーション・プログラムまたは事前に特徴付けられた試験ルーチンを使うことができる。機能的な正しさ検査の間に見出されたエラーは、過渡的または静的のいずれでもありうる。同じ検査を再実施することによって過渡的エラーは静的エラーから区別されうる。再検査後にエラーが消えていれば、これらのエラーは過渡的であり、そうでなければこれらのエラーは静的である。過渡的エラーは静的エラーほど有害ではないかもしれないが、過渡的エラーを受けやすいコアは、より緊密なモニタリングのためにフラグを付けてもよい。
【0016】
図2に示されるような信頼性追跡モジュール250は、組み込まれたルーチンを使用して、最大動作周波数、電力消費および電力リーク、機能上のエラーのレートなどといったパラメータの傾向情報を取得しうる。傾向情報は最初の試験後には手にはいらないことがありうる。二番目の試験後、二番目の試験の結果が最初の試験の結果と比較されて、両試験の間の変化が取得されうる。典型的には、傾向情報は時間がたつにつれて、より多くのデータが利用できるので、より信頼できるものになる。
【0017】
コントローラ260は、動的プロファイリング装置200中の種々のコンポーネントの間の調整をし、それらのコンポーネントの動作を制御しうる。たとえば、コントローラは、動的プロファイリングのための試験をトリガーしうる。ひとたび試験がトリガーされると、種々のコンポーネント(たとえば、電力消費測定モジュールおよび動作スピード測定モジュール)がそれらの対応するパラメータの測定を開始しうる。ある実施形態では、コントローラは、動的プロファイリングするための試験を、定期的に自分でトリガーしうる。もう一つの実施形態では、OSがコントローラに試験をトリガーすることを要求してもよい。
【0018】
さらに、コントローラは、各試験の間、各コンポーネントによる測定のタイミングを制御しうる。たとえば、コントローラは、温度センサーに、試験アプリケーション(たとえば電力ハングリーなアプリケーション)が一定期間走るまで待ってから温度測定をするよう依頼しうる。また、コントローラは、試験の間、何も実行しないようコンポーネントに命じてもよい。たとえば、いちばん最初の試験の間、コントローラは信頼性追跡モジュールに、何も実行しないよう依頼してもよい;そしてコントローラはまた、信頼性追跡モジュールに、単一試験毎ではなく数回の試験毎に傾向情報を取得するよう要求してもよい。さらに、コントローラは、コンポーネントに、所望される情報を得るようある方法を使うよう指令してもよい。たとえば、コントローラは、機能的な正しさ検査モジュールに、検査を実施するために前記ペアごとの方法を使い、一定回数の試験後にペアを変更するよう指令してもよい。さらに、コントローラは、種々のコンポーネントの間で、あるパラメータを取得するよう調整してもよい。たとえば、コントローラは、コアの電力消費、電圧、電力リークおよび動作スピードの間の関係を取得するよう、電力消費測定モジュール、温度センサーおよび動作スピード測定モジュールの間で調整してもよい。
【0019】
図2には示していないが、動的プロファイリングの間に取得された情報は、多コア・プロセッサ中の共有メモリ内に記憶されてもよい。共有メモリのあらかじめ定義されたセクタが、すべてのコアについての動的プロファイルを記憶するために指定されてもよい。動的プロファイルは、OSおよび/または他のアプリケーションによってアクセスされうる。
【0020】
ある実施形態では、あるコアについての動的プロファイルは、図3A〜図3Bに示されるように隣のコアによって構築されうる。たとえば、各コアは、その隣のコアの電力消費および電力リークを測定するために使うことのできる電力消費測定モジュールを有していてもよい。動的プロファイルを構築するためのペアの割り当ては、規則的に変えられてもよい(たとえば図3Aに示す割り当てから図3Bに示す割り当てに)。ある欠陥コアが常に、ある正しく機能しているコアについて誤ったプロファイルを構築する可能性を減らすためである。もう一つの実施形態では、いくつかのコアがプロファイル・ビルダーとして指定されてもよい。これらのプロファイル・ビルダーは、自分たちの間で互いについて他のコアについての動的プロファイルを構築する。
【0021】
図4は、多コア・プロセッサ中の各コアについて動的プロファイリングを実行するための一つの例示的なプロセス400のフローチャートを示す。ブロック410では、試験が開始されうる。試験は定期的に(たとえば1時間毎に)開始されてもよいし、あるいはOSによって任意の時刻に開始されてもよい。ブロック420では、各コアによる電力消費が測定されうる。ブロック430では、各コアの最大動作スピードが測定されうる。各レベルの電圧での最大動作スピードが測定されうる。ブロック440では、各コアのダイ領域にわたる温度が測定され、ホット・スポットおよび温度変動が同定されうる。ブロック450では、機能的な正しさ検査が実行されうる。ブロック420ないし450は図4では解説のため別個に示されているが、これらのブロックにまつわる機能は逐次的に実行されても、並列に実行されても、あるいはインターリーブされた仕方で実行されてもよい。さらに、各コアの動的プロファイルのためのさらなるパラメータまたは該パラメータ間の関係を取得するために実行される他の動作があってもよい。
【0022】
ブロック460では、ブロック420ないし450で実行される機能から得られるデータから、コアを特徴付けるさらなるパラメータが導出されうる。ブロック460のところに形成される機能は、これまでのブロック(たとえばブロック420またはいくつかのブロックの組み合わせ)において実行される機能とマージされてもよい。ブロック470では、現在の試験の間に得られたパラメータと以前の試験から得られたパラメータとを比較することによって、傾向情報が取得されうる。これは、第二の試験から始まって実行される。コアの信頼性は、コアを特徴付けるパラメータの傾向情報によって示されうる。ブロック480では、各コアについて、すべてのパラメータおよびその傾向情報を含む動的プロファイルが取得され、保存されうる。このブロックは、解説上の目的のため、他のブロックとは別個に示されていることを注意しておく。実際上は、パラメータは、ひとたび取得されたら記憶されるのでもよい。
【0023】
図5は、多コア・プロセッサが使用されうるある例示的なコンピューティング・システム500を示している。コンピューティング・システム500は、システム相互接続515に結合された一つまたは複数のプロセッサ510を有しうる。プロセッサ510は、各コアについて動的プロファイルを構築するための動的プロファイリング装置を有する多コア・プロセッサでありうる。動的プロファイルは、動的プロファイリング装置自身によって開始される定期的試験を通じて構築されても、あるいはOSによって開始される試験を通じて構築されてもよい。各動的プロファイルは、コアの最大動作周波数、電力消費、電力リーク、機能的な正しさおよび他のパラメータについての情報を含みうる。動的プロファイルは、これらのパラメータの傾向情報をも含みうる。
【0024】
コンピューティング・システム500は、システム相互接続515に結合されたチップセット530をも含んでいてもよい。チップセット530は、一つまたは複数の集積回路パッケージまたはチップを含みうる。チップセット530は、コンピューティング・システム500の他のコンポーネント560へのおよび/または他のコンポーネント560からのデータ転送をサポートするために、一つまたは複数のデバイス・インターフェース535を有しうる。たとえば、BIOSファームウェア、キーボード、マウス、記憶装置、ネットワーク・インターフェースなどといったものである。チップセット530は、周辺コンポーネント相互接続(PCI)バス570に結合されていてもよい。チップセット530は、PCIバス570にインターフェースを提供するPCIブリッジ545を含んでいてもよい。PCIブリッジ545は、プロセッサ510および他のコンポーネント560と周辺機器との間のデータ経路を提供してもよい。周辺機器とはたとえば、オーディオ装置580およびディスク・ドライブ590といったものである。図示しないが、他の装置もPCIバス570に結合されていてもよい。
【0025】
さらに、チップセット530は、メイン・メモリ550に結合しているメモリ・コントローラ525を有しうる。メイン・メモリ550は、データおよびプロセッサ510またはシステムに含まれる他の任意の装置によって実行される命令のシーケンスを保存しうる。メモリ・コントローラ525は、プロセッサ510およびコンピューティング・システム500内の他の装置に関連したメモリ・トランザクションに応答して、メイン・メモリ550にアクセスしうる。ある実施形態では、メモリ・コントローラ550は、プロセッサ510または他の何らかの回路内に位置されうる。メイン・メモリ550は、メモリ・コントローラ525がデータを読み出しおよび/または書き込みうるアドレス指定可能な記憶位置を提供するさまざまなメモリ・デバイスを含みうる。メイン・メモリ550は、動的ランダム・アクセス・メモリ(DRAM)デバイス、同期DRAM(SDRAM)デバイス、二倍データレート(DDR)SDRAMデバイスまたは他のメモリ・デバイスといった一つまたは複数の異なる型のメモリ・デバイスを含んでいてもよい。
【0026】
図6は、多コア・プロセッサが使用されうるもう一つの例示的なコンピューティング・システム600を示している。システム600は、プロセッサ0 620Aのような複数プロセッサを含みうる。システム600内の一つまたは複数のプロセッサは多数のコアを有しうる。多コア・プロセッサ(単数または複数)は、各コアについて動的プロファイルを構築するための動的プロファイリング装置を有しうる。動的プロファイルは、動的プロファイリング装置自身によって開始される定期的な試験を通じて、あるいはOSによって開始される試験を通じて構築されうる。各動的プロファイルは、コアの最大動作周波数、電力消費、電力リーク、機能的な正しさおよび他のパラメータについての情報を含みうる。動的プロファイルはまた、これらのパラメータの傾向情報をも含みうる。システム600内の諸プロセッサは、システム相互接続610を使って互いに接続されうる。システム相互接続610は、フロント・サイド・バス(FSB)でありうる。各プロセッサは、システム相互接続を通じて、入出力(IO)デバイスならびにメモリ630に接続されうる。
【0027】
図7は、多コア・プロセッサが使用されうるさらにもう一つの例示的なコンピューティング・システム700を示している。システム700では、複数プロセッサ(たとえば720A、720B、720Cおよび720D)を接続するシステム相互接続710はリンクベースのポイントツーポイント接続である。各プロセッサは、リンクス・ハブ(links hub)(たとえば730A、730B、730Cおよび730D)を通じたシステム相互接続に接続しうる。いくつかの実施形態では、リンクス・ハブは、システム・メモリに出入りするトラフィックを調整するメモリ・コントローラと共位置でもよい。一つまたは複数のプロセッサが多くのコアを有していてもよい。多コア・プロセッサ(単数または複数)は、各コアについて動的プロファイルを構築するための動的プロファイリング装置を有しうる。動的プロファイルは、動的プロファイリング装置自身によって開始される定期的な試験を通じて、あるいはOSによって開始される試験を通じて構築されうる。各動的プロファイルは、コアの最大動作周波数、電力消費、電力リーク、機能的な正しさおよび他のパラメータについての情報を含みうる。動的プロファイルはまた、これらのパラメータの傾向情報をも含みうる。
【0028】
図8は、タスク実行の効率を改善するために多コア・プロセッサ中の各コアの動的プロファイルを使う例示的なシステム800のブロック図を示している。システム800は、多コア・プロセッサ中のコアすべてについての動的プロファイル810、コア・ビン分けモジュール820、タスク・コントローラ830、再構成器840およびパフォーマンスおよび電力マネージャ850を有しうる。動的プロファイル810は、図2に記載されたような動的プロファイリング装置によって構築およびリフレッシュされうる。動的プロファイルは、多コア・プロセッサ内のコアによって供給されるメモリの指定されたセクション内に保存されうる。動的プロファイルはOSによってアクセス可能である。
【0029】
コア・ビン分けモジュール820は、多コア・プロセッサ中のコアを、動的プロファイル内の一つまたは複数のコア特徴付けパラメータに従って一つまたは複数のビンにグループ化しうる。たとえば、動的プロファイルに基づいて、いくつかのコアが高速コアに割り当てられてもよく、いくつかが低速コアに割り当てられてもよく、他のものが予備コアとしてリザーブされてもよい。ビンの数は、特定のビン内のコアの数のよりよいコントロールを得るために調整されてもよい。コアは、時間がたつと、そのパフォーマンスの劣化のため、高速プールから低速プールに移動されてもよい。これが起こるとき、そのビン・レベルにおいて、当該プロセッサのパフォーマンスを維持するため、いくつかのオプションを追求しうる。予備のコアが高速プールに加えられてもよいし、あるいは既存のコアが、電圧スケーリングまたはボディ・バイアス調整技法を使って、より高い周波数で走らされてもよい。
【0030】
もう一つの例では、コアは、その電力消費のレベルに従って、あるいは信頼性パラメータのような他のパラメータに従ってビンにグループ分けされてもよい。さらにもう一つの例では、コアは異なる複数のセットのビンにグループ化されてもよい:一つのセットは動作スピードに基づくもの、一つは電力消費レベルに基づくもの、一つは信頼性パラメータに基づくもの、などである。ある実施形態では、コアは動的プロファイルが構築されたあと、異なる複数のセットのビンにグループ化されてもよい。ビン分けプロセスは、多コア・プロセッサ内に組み込まれたソフトウェア/ファームウェア・モジュールによって実行されうる。もう一つの実施形態では、ビン分けプロセスは、タスクがOSによって受け取られるときに実行されうる。それにより、コアは、タスクの特定の要求に従ってビンにグループ化されうる。たとえば、あるタスクが非常に計算集約的である場合、コアは、その動作スピードに従ってビンにグループ化されうる;あるタスクがバッテリーで実行される場合、コアは、その電力消費レベルに従ってビンにグループ化されうる。さらにもう一つの実施形態では、コア・ビン分けモジュールは、コアを、動的プロファイルがすべてのコアについて構築されたあとで、動作スピードおよび電力消費といったいくつかのパラメータに従って少数の基本的なビンにグループ化してもよく、タスクが受け取られるときにOSの指令のもとにそのタスクの個別的な要求に従って他のビンのセットにグループ化してもよい。個別的なタスク(単数または複数)のために形成されるビンは、そのタスクが完了したのち、解体されても、保持されてもよい。
【0031】
コアの特性が、ある試験と別の試験とで変わりうるので、種々のビンにわたる諸コアは、各試験後にシャッフルし直す必要があることがある。および/または、元来あるビンにはいったが、新たな試験後にはそのビンの基準を満たさなくなったコアの条件を調整して、そのビンにそのまま居続けられるようにしてもよい。たとえば、コアの電圧を上げれば、その動作スピードが上がりうるし、コアの電圧および/またはスピードを下げれば、そのコアの電力消費が低下しうる。
【0032】
図8に示されるようなタスク割り当て器830は、コアの現在の動的プロファイルに基づいて、タスクをコアに割り当て、および/または動的に再割り当てしうる。ある実施形態では、各タスクの要求はタスク・カテゴリーに基づいてあらかじめ決定されてもよい。たとえば、タスクがリアルタイムで大量のデータを処理することであれば、そのタスクは高速コアを要求しうる;タスクが、プロセッサがバッテリー電力で動作中に実行されるものであれば、そのタスクは低レベルの電力消費をもつコアを要求しうる。もう一つの実施形態では、OSがタスクを解析してその要求を判別してもよい。各タスクの要求に基づいて、タスク割り当て器はタスクを、対応する特性をもつコア(単数または複数)に、あるいはタスクの要求が満たされるような異なるコアの組み合わせに割り当てうる。コア・プロファイルがタスクの実行中に変わる場合、タスク割り当て器は、そのタスクに割かれるパフォーマンス・レベルを維持するために、その割り当てを動的に変えてもよい。
【0033】
再構成器840は、異なるコアの間で相互接続を再構成しうる。多コア・プロセッサ(図1に示されるような)における相互接続ファブリックは、コアの各ビンから良好な恩恵を導出するよう再構成可能であってもよい。コアのある特定のビンへの帰属は時間がたつと変わりうるので、静的なファブリックではコア間の帯域幅および遅延は幅広い揺動を受ける。こうして、柔軟かつ動的に再構成可能なファブリックを有することが望ましい。ビン内のコアの混合が変更されるチェックポイント毎に、ビン内の諸コアにわたる利用可能な帯域幅および遅延が評価されてもよく、必要なら、高いレベルの接続性を維持するためにファブリックが再構成されてもよい。ダイ上の諸コアの物理的な位置は変わらないながら、同じビン内の諸コアが互いに論理的に近接するよう、ファブリックをなすスイッチが再構成されてもよい。複数コア、予備コアのプールおよび接続性の高いファブリックの利用可能性は、欠陥からの、最小限のパフォーマンス劣化での迅速な回復を可能にする。試験によってある特定のコアについて問題が同定されるやいなや、そのコアは供用停止され、アクティブなサービスから外されうる。予備のプールからのコアがその代わりとなりうる。したがって、相互接続ファブリックも、欠陥コアがサービスから脱落することの効果を緩和するよう再構成されてもよい。これは、プロセッサが、変動および劣化に起因する欠陥を許容する能力を著しく改善する。
【0034】
図8に示されるようなパフォーマンスおよび電力マネージャ850は、変化する環境に応じて、タスクをコアの異なる組み合わせに割り当て直し、あるいは同じセットの諸コアを再バランスしうる。電源電力からバッテリー電力にシステムを移行することは、タスクを、よりリークが少なく、より消費電力が少ないコアに割り当て直すことが必要となりうる例である。多数の電力ハングリーなアプリケーションに起因するシステム負荷の増大も、コア間での作業負荷の再バランスを必要とすることがありうる。こうして、コア・プロファイル自身に加えて、システムおよび環境の因子が、コアの動的管理において考慮される必要がある。パフォーマンス要求をもつ単一コア・プロセッサについて電圧、周波数、ボディ・バイアスをバランスさせる技法は、利用可能なコアの数の追加的な最適化変数とともに、多コア環境に適用されうる。たとえば、スピード段階変化(stepping)技法は、変化する状況に応じてタスクに割り当てられるコアを再バランスさせるために使用されうる。この場合、コアのスピードが、その電圧供給を下げるか上げるかすることにより、それぞれ下げるか上げるかされうる。そしてコアの電力消費は、その動作スピードおよび/またはその電圧供給を下げることによって低下させられうる。
【0035】
図9は、多コア・プロセッサについてパフォーマンスおよび電力消費の管理の一例を示している。この図のx軸はGFLOP単位でのパフォーマンスを示し、y軸は一群のコアによって消費される電力を示している。図中の曲線は、異なるコア数について、パフォーマンスと電力消費の間の関係を表す。曲線910は、コア数64(たとえば8×8)の場合を表し、曲線920はコア数80(たとえば8×10)の場合を表し、曲線930はコア数96(たとえば8×12)の場合を表す。使われるコアが多いほど、パフォーマンスはよくなり、電力消費は少なくなることが示される。これは、使われるコアが多くなると、各コアが並列に低電圧で走って同じまたはよりよいパフォーマンス(使われるコア数がより少なく、各コアが高い電圧で走る状況と比べて)を達成でき、よって総合的な電力消費が低下されうるからである。したがって、変化する環境が電力消費が引き下げられることを要求するとき、パフォーマンスおよび電力マネージャはより多くのコアを使い、各コアへの電圧供給を下げるよう決定しうる。
【0036】
図10は、タスク実行の効率を改善するために多コア・プロセッサ中の各コアの動的プロファイルを使うための例示的なプロセス1000のフローチャートを示している。プロセス1000は、多コア・プロセッサ中のコアの動的プロファイルが構築されたのちに実行されうる。ブロック1010では、タスクがOSによって受領されうる。ブロック1020では、OSはタスクを解析してその要求(たとえばパフォーマンスおよび電力上の要求)を判別しうる。タスクの要求を判別するある例示的な手法は、タスクによって処理されるべきデータを見ることである。たとえば、リアルタイムで処理されるべき大量のデータがあれば、そのタスクはおそらく高速コアを必要とする。状況によっては、タスクの要求が何らかの所定のタスク・カテゴリーに基づいて事前に特徴付けられているため、OSがタスクの要求を判別するためにタスクを解析する必要はないこともありうる(たとえば、バッテリーを電源とするモバイル・アプリケーションは、低電力消費を要求するものとして事前に特徴付けされうる)。ブロック1030では、多コア・プロセッサ中のコアが、コアの動的プロファイルおよびタスクの要求に基づいて、異なる複数のビンにグループ化されうる。ある実施形態では、このブロックでのビン分けプロセスは、タスクが受け取られさえしないうちに部分的または完全に実行されうる。
【0037】
ブロック1040では、タスクがそのタスクの要求を満たせるような特性をもつコアに割り当てられうる。ブロック1050では、多コア・プロセッサにおける相互接続ファブリックが再構成されて、同じタスクを実行するコアどうしが接続されて、利用可能な帯域幅を増し、それらにわたる遅延を減らすようにされうる。ブロック1060では、タスクが実行されうる。タスクを実行するプロセスの間、変化する環境により、そのタスクへの異なるセットの諸コアの再割り当ておよび/または同じセットの諸コアの再バランスがトリガーされうる。
【0038】
開示される主題の例示的な実施形態が図1ないし図10のブロック図および流れ図を参照して記載されているが、当業者は開示される手段を実装する他の多くの方法が代わりに使用されうることを容易に理解するであろう。たとえば、流れ図におけるブロックの実行順序は変更してもよいし、および/または記載されるブロック図/流れ図におけるブロックのいくつかは変更されたり、消去されたり、組み合わされたりしてもよい。
【0039】
上記の記述において、開示される主題のさまざまな側面が記載されてきた。主題の十全な理解を与えるために、説明の目的上、個別的な数字、システムおよび構成が述べられた。しかしながら、本開示の恩恵を有する当業者には、主題が個別的な詳細なしで実施されうることは明らかである。他方、よく知られた特徴、コンポーネントまたはモジュールは、開示される主題をかすませないために、省略されたり、単純化されたり、組み合わされたり、分割されたりした。
【0040】
開示される主題のさまざまな実施形態は、ハードウェア、ファームウェア、ソフトウェアまたはそれらの組み合わせにおいて実装されることができ、プログラム・コードを参照して、あるいはプログラム・コードとの関連で記載されてもよい。プログラム・コードとは、命令、関数、手続き、データ構造、論理、アプリケーション・プログラム、設計のシミュレーション、エミュレーションおよび製造のための設計表現またはフォーマットといったもので、機械によってアクセスされると、該機械が、抽象的なデータ型または低レベルのハードウェア・コンテキストを定義するタスクを実行する、あるいは結果を生じるという結果を生じるものである。
【0041】
シミュレーションのためには、プログラム・コードは、ハードウェア記述言語または他の機能記述言語を使ってハードウェアを表現してもよい。機能記述言語とは、本質的には、設計されたハードウェアがどのように実行されると期待されるかのモデルを提供するものである。プログラム・コードは、アセンブリまたは機械語、あるいはコンパイルおよび/またはインタープリットされうるデータであってもよい。さらに、当技術分野では、ソフトウェアが何らかの形で動作するとか結果を引き起こすといった言い方が普通にされる。そのような表現は単に、プログラム・コードの処理システムによる実行がプロセッサをして動作を実行させ、あるいは結果を生じさせることを述べる短縮された言い方に過ぎない。
【0042】
プログラム・コードはたとえば、揮発性および/または不揮発性メモリ内に保存されうる。該メモリはたとえば、記憶装置および/または付随する機械可読もしくは機械アクセス可能媒体であり、半導体メモリ、ハード・ドライブ、フロッピー(登録商標)・ディスク、光記憶、テープ、フラッシュメモリ、メモリースティック、デジタル・ビデオ・ディスク、デジタル多用途ディスク(DVD)などが含まれる。さらには機械アクセス可能な生物学的状態保存記憶(biological state preserving storage)といったより変わった媒体も含まれる。機械可読媒体は、機械によって可読な形の情報を保存、送信または受信するためのいかなる機構をも含みうる。該媒体は、プログラム・コードをエンコードしている電気的、光学的、音響学的または他の形の伝搬される信号または搬送波が通りうる、アンテナ、光ファイバー、通信インターフェースなどといった具体的な媒体を含みうる。プログラム・コードはパケット、シリアル・データ、パラレル・データ、伝搬信号などの形で伝送されてもよく、圧縮されたまたは暗号化されたフォーマットで使われてもよい。
【0043】
プログラム・コードは、移動型または静止型コンピュータ、携帯情報端末、セットトップボックス、携帯電話およびポケベルならびにその他の電子機器といったプログラム可能機械上で実行されるプログラムにおいて実装されてもよい。そうしたプログラム可能機械のそれぞれは、プロセッサ、該プロセッサによって可読な揮発性および/または不揮発性メモリ、少なくとも一つの入力装置および/または一つまたは複数の出力装置を含んでいる。プログラム・コードは、記載された諸実施形態を実行し、出力情報を生成するために、入力装置を使って入力されたデータに適用されうる。出力情報は、一つまたは複数の出力装置に適用されうる。当業者は、開示される主題の諸実施形態が、さまざまなコンピュータ・システム構成で実施できることを理解しうる。そうした構成には、マルチプロセッサまたは複数コアプロセッサ・システム、ミニコンピュータ、メインフレーム・コンピュータならびに実質的にいかなる機器にも組み込まれうる浸透型(pervasive)またはミニチュア・コンピュータまたはプロセッサが含まれる。開示される主題の実施形態はまた、タスクが通信ネットワークを通じてリンクされているリモートな複数の処理装置によって実行されうる、分散されたコンピューティング環境においても実施できる。
【0044】
動作は逐次的な処理として記載されていることもあるが、動作の一部は実際には並列に、並行しておよび/または分散環境で、単一または複数プロセッサ機械によるアクセスのためにローカルおよび/またはリモートに保存されたプログラム・コードで実行されてもよい。さらに、いくつかの実施形態では、動作の順序は、開示される主題の精神から外れることなく再配列されうる。プログラム・コードは、組み込まれたコントローラによって、あるいは組み込まれたコントローラとの関連で使用されてもよい。
【0045】
開示される主題は、例示的な実施形態を参照しつつ記載されてきたが、本記載は限定的な意味に解釈されることは意図されていない。開示される主題に係る技術分野の当業者に明らかな例示的な実施形態のさまざまな修正および主題の他の実施形態は、開示される主題の範囲内であると見なされる。
【0046】
いくつかの態様を記載しておく。
〔態様1〕
多コア・プロセッサであって:
複数の処理コアと;
相互接続ファブリックと;
少なくとも一つのメモリ・モジュールと;
当該多コア・プロセッサ中の各コアの特性を動的にプロファイリングするプロファイリング・モジュールとを有しており、
前記複数のコアおよび前記少なくとも一つのメモリ・モジュールが前記相互接続ファブリックに結合されている、多コア・プロセッサ。
〔態様2〕
態様1記載のプロセッサであって、前記プロファイリング・モジュールが:
前記多コア・プロセッサ中の各コアによる電力消費を、種々の電圧および種々のスピードのもとで定期的に測定する電力消費測定モジュールと;
前記多コア・プロセッサ中の各コアの最大スピードを、種々の電圧のもとで定期的に測定する動作スピード測定モジュールと;
前記多コア・プロセッサ中の各コアの信頼性情報を、少なくとも部分的に前記多コア・プロセッサ中の各コアの前記の測定された電力消費データおよび最大スピードに基づいて取得する信頼性追跡モジュールとを有する、
プロセッサ。
〔態様3〕
温度分布を測定し、前記多コア・プロセッサ中の各コアのダイ領域および前記相互接続ファブリックにわたるホット・スポットを同定するための少なくとも一つの温度センサーをさらに有する、態様2記載のプロセッサ。
〔態様4〕
前記信頼性追跡モジュールが、前記温度分布および前記ホット・スポットの傾向情報を時間を通じて取得する、態様3記載のプロセッサ。
〔態様5〕
前記多コア・プロセッサ中の各コアの機能的な正しさを検査する機能的な正しさ検査モジュールをさらに有する、態様2記載のプロセッサ。
〔態様6〕
前記機能的な正しさ検査モジュールが、少なくとも粗い粒度のレベルで機能的な正しさ検査を実行する、態様5記載のプロセッサ。
〔態様7〕
前記信頼性追跡モジュールが、前記多コア・プロセッサ中の各コアの機能的な正しさの傾向情報を時間を通じて取得する、態様5記載のプロセッサ。
〔態様8〕
前記多コア・プロセッサ中の各コアの特性を動的にプロファイリングするプロセスにおいて、少なくとも前記電力消費測定モジュール、前記動作スピード測定モジュールおよび前記信頼性追跡モジュールを、制御し、協調させるコントローラをさらに有する、態様2記載のプロセッサ。
〔態様9〕
多コア・プロセッサ中の各コアの特性を動的にプロファイリングする方法であって:
前記多コア・プロセッサ中の各コアについて定期的に試験を開始し;
各試験の間に、種々の電圧および種々の動作スピードのもとで、前記多コア・プロセッサ中の各コアの電力消費データを測定し;
各試験の間に、種々の電圧のもとで、前記多コア・プロセッサ中の各コアの最大動作スピードを測定し;
前記多コア・プロセッサ中の各コアの信頼性情報を、少なくとも部分的に、各試験の間に取得された前記電力消費データおよび前記最大動作スピードに基づいて取得することを含む、
方法。
〔態様10〕
前記多コア・プロセッサ中の各コアのダイ領域および前記相互接続ファブリックにわたるホット・スポットおよび温度分布を取得するために温度を測定し;
機能的な正しさ検査を実施して前記多コア・プロセッサ中の各コアの機能的な正しさ情報を取得することをさらに含む、
態様9記載の方法。
〔態様11〕
前記信頼性情報が、前記多コア・プロセッサ中の各コアの、前記ダイ領域にわたる前記ホット・スポットおよび温度変動ならびに前記機能的な正しさ情報の傾向情報を含む、態様10記載の方法。
〔態様12〕
前記多コア・プロセッサ中の各コアについてパフォーマンス・プロファイルを取得し、記憶することをさらに含む態様10記載の方法であって、前記パフォーマンス・プロファイルは、前記電力消費データ、前記最大動作スピード、前記機能的な正しさ情報、各コアのダイ領域にわたる前記ホット・スポットおよび温度変動ならびに前記多コア・プロセッサ中の各コアについてのそれらの傾向情報を含む、方法。
〔態様13〕
多コア・プロセッサであって、該プロセッサ中の各コアについて動的プロファイルを生成するプロファイリング・モジュールを含む多コア・プロセッサと;
タスクを受領し、該タスク・アプリケーションを、少なくとも部分的に該タスクの要求および前記プロセッサ中の各コアの前記動的プロファイルに基づいて第一のセットのコアに割り当てるタスク割り当てモジュールとを有する、
コンピューティング・システム。
〔態様14〕
前記プロセッサがさらに、コアの少なくとも一つの特性を基準として使って、前記プロセッサ中のコアを、各コアの前記動的プロファイルに基づく複数のビンにグループ分けするコア・ビン分けモジュールを有しており、前記複数のビンは前記タスク割り当てモジュールによって、前記タスクを前記第一のセットのコアに割り当てるために使用される、態様13記載のシステム。
〔態様15〕
変化する条件に応答して、前記タスクを第二のセットのコアに再割り当てするおよび前記第一のセットのコアを再バランスするのうち少なくとも一方をするパフォーマンスおよび電力マネージャをさらに有し、ここで、前記第二のセットのコアは前記第一のセットのコアとは異なるコアを少なくとも一つ含んでいる、態様13記載のシステム。
〔態様16〕
前記第一のセットのコアおよび前記第二のセットのコアのうちの少なくとも一方の間で相互接続を再構成する再構成器をさらに有する、態様15記載のシステム。
〔態様17〕
前記変化する条件が、前記第一のセットのコアのうち少なくとも一つのコアの変化する条件と、変化する環境とのうちの少なくとも一方を含む、態様15記載のシステム。
〔態様18〕
多コア・プロセッサを使ってタスクを効率的に実行する方法であって:
タスクを受領し;
前記タスクを解析して前記タスクの要求を判別し;
前記タスクを、前記タスクの前記要求に基づいて、前記多コア・プロセッサ中の第一のセットのコアに割り当て;
前記タスクを、前記第一のセットのコアを使って実行することを含む、
方法。
〔態様19〕
前記多コア・プロセッサ中の諸コアを、前記多コア・プロセッサ中のコアの少なくとも一つの特性に従って、各コアの動的プロファイルに基づいて、複数のビンにグループ分けすることをさらに含む、態様18記載の方法。
〔態様20〕
変化する条件に応答して、前記タスクを第二のセットのコアに再割り当てすることおよび前記第一のセットのコアを再バランスすることのうち少なくとも一方を含んでおり、ここで、前記第二のセットのコアは前記第一のセットのコアとは異なるコアを少なくとも一つ含んでいる、態様18記載の方法。
〔態様21〕
前記変化する条件が、前記第一のセットのコアのうち少なくとも一つのコアの変化する条件と、変化する環境とのうちの少なくとも一方を含む、態様20記載の方法。
〔態様22〕
前記第一のセットのコアおよび前記第二のセットのコアのうちの少なくとも一方の間で相互接続を再構成することをさらに含む、態様20記載の方法。
【特許請求の範囲】
【請求項1】
多コア・プロセッサであって:
複数の処理コアと;
当該多コア・プロセッサ中の各処理コアの特性を動的にプロファイリングするプロファイリング・モジュールであって、処理コアの特性は該処理コアによる電力消費および該処理コアの電圧レベルに対応する最大動作スピードを含む、プロファイリング・モジュールとを有する、
多コア・プロセッサ。
【請求項2】
請求項1記載の多コア・プロセッサであって、前記プロファイリング・モジュールが:
前記多コア・プロセッサ中の各処理コアによる電力消費を、種々の電圧および種々のスピードのもとで定期的に測定する電力消費測定モジュールと;
前記多コア・プロセッサ中の各処理コアの最大動作スピードを、種々の電圧のもとで定期的に測定する動作スピード測定モジュールと;
前記多コア・プロセッサ中の各処理コアの信頼性情報を、少なくとも部分的に前記多コア・プロセッサ中の各処理コアの前記の測定された電力消費データおよび最大スピードに基づいて取得する信頼性追跡モジュールとを有する、
多コア・プロセッサ。
【請求項3】
温度分布を測定し、前記多コア・プロセッサ中の各処理コアのダイ領域にわたるホット・スポットを同定するための少なくとも一つの温度センサーをさらに有し、前記信頼性追跡モジュールが、前記温度分布および前記ホット・スポットの傾向情報を時間を通じて取得する、
請求項2記載の多コア・プロセッサ。
【請求項4】
前記多コア・プロセッサ中の各処理コアの機能的な正しさを検査する機能的な正しさ検査モジュールをさらに有し、前記信頼性追跡モジュールが、前記多コア・プロセッサ中の各処理コアの機能的な正しさの傾向情報を時間を通じて取得する、請求項2記載の多コア・プロセッサ。
【請求項5】
多コア・プロセッサであって、該多コア・プロセッサ中の各処理コアについて動的プロファイルを生成するプロファイリング・モジュールを含み、処理コアの動的プロファイルは該処理コアによる電力消費および該処理コアの電圧レベルに対応する最大動作スピードを含む、多コア・プロセッサと;
タスクを受領し、該タスクを、少なくとも部分的に該タスクの要求および前記多コア・プロセッサ中の各処理コアの前記動的プロファイルに基づいて第一のセットの処理コアに割り当てるタスク割り当てモジュールとを有する、
コンピューティング・システム。
【請求項6】
変化する条件に応答して、前記タスクを第二のセットの処理コアに再割り当てするおよび前記第一のセットの処理コアを再バランスするのうち少なくとも一方をするパフォーマンスおよび電力マネージャをさらに有し、ここで、前記第二のセットの処理コアは前記第一のセットの処理コアとは異なる処理コアを少なくとも一つ含んでいる、請求項5記載のシステム。
【請求項7】
前記変化する条件が、前記第一のセットの処理コアのうち少なくとも一つの処理コアの変化する条件と、少なくとも一つの処理コアが置かれた環境の変化する条件とのうちの少なくとも一方を含む、請求項6記載のシステム。
【請求項8】
多コア・プロセッサを使ってタスクを効率的に実行する方法であって:
タスクを受領し;
前記タスクを解析して前記タスクの要求を判別し;
前記タスクを、前記多コア・プロセッサ中の第一のセットの処理コアに割り当て、ここで、割り当ては前記タスクの前記要求および前記第一のセットの処理コアの動的プロファイルに基づいて行われ、処理コアの動的プロファイルは該処理コアによる電力消費および該処理コアの電圧レベルに対応する最大動作スピードを含み;
前記タスクを、前記第一のセットの処理コアを使って実行することを含む、
方法。
【請求項9】
変化する条件に応答して、前記タスクを第二のセットの処理コアに再割り当てすることおよび前記第一のセットの処理コアを再バランスすることのうち少なくとも一方をさらに含んでおり、ここで、前記第二のセットの処理コアは前記第一のセットの処理コアとは異なる処理コアを少なくとも一つ含んでいる、請求項8記載の方法。
【請求項10】
前記変化する条件が、前記第一のセットの処理コアのうち少なくとも一つの処理コアの変化する条件と、変化する環境とのうちの少なくとも一方を含む、請求項9記載の方法。
【請求項1】
多コア・プロセッサであって:
複数の処理コアと;
当該多コア・プロセッサ中の各処理コアの特性を動的にプロファイリングするプロファイリング・モジュールであって、処理コアの特性は該処理コアによる電力消費および該処理コアの電圧レベルに対応する最大動作スピードを含む、プロファイリング・モジュールとを有する、
多コア・プロセッサ。
【請求項2】
請求項1記載の多コア・プロセッサであって、前記プロファイリング・モジュールが:
前記多コア・プロセッサ中の各処理コアによる電力消費を、種々の電圧および種々のスピードのもとで定期的に測定する電力消費測定モジュールと;
前記多コア・プロセッサ中の各処理コアの最大動作スピードを、種々の電圧のもとで定期的に測定する動作スピード測定モジュールと;
前記多コア・プロセッサ中の各処理コアの信頼性情報を、少なくとも部分的に前記多コア・プロセッサ中の各処理コアの前記の測定された電力消費データおよび最大スピードに基づいて取得する信頼性追跡モジュールとを有する、
多コア・プロセッサ。
【請求項3】
温度分布を測定し、前記多コア・プロセッサ中の各処理コアのダイ領域にわたるホット・スポットを同定するための少なくとも一つの温度センサーをさらに有し、前記信頼性追跡モジュールが、前記温度分布および前記ホット・スポットの傾向情報を時間を通じて取得する、
請求項2記載の多コア・プロセッサ。
【請求項4】
前記多コア・プロセッサ中の各処理コアの機能的な正しさを検査する機能的な正しさ検査モジュールをさらに有し、前記信頼性追跡モジュールが、前記多コア・プロセッサ中の各処理コアの機能的な正しさの傾向情報を時間を通じて取得する、請求項2記載の多コア・プロセッサ。
【請求項5】
多コア・プロセッサであって、該多コア・プロセッサ中の各処理コアについて動的プロファイルを生成するプロファイリング・モジュールを含み、処理コアの動的プロファイルは該処理コアによる電力消費および該処理コアの電圧レベルに対応する最大動作スピードを含む、多コア・プロセッサと;
タスクを受領し、該タスクを、少なくとも部分的に該タスクの要求および前記多コア・プロセッサ中の各処理コアの前記動的プロファイルに基づいて第一のセットの処理コアに割り当てるタスク割り当てモジュールとを有する、
コンピューティング・システム。
【請求項6】
変化する条件に応答して、前記タスクを第二のセットの処理コアに再割り当てするおよび前記第一のセットの処理コアを再バランスするのうち少なくとも一方をするパフォーマンスおよび電力マネージャをさらに有し、ここで、前記第二のセットの処理コアは前記第一のセットの処理コアとは異なる処理コアを少なくとも一つ含んでいる、請求項5記載のシステム。
【請求項7】
前記変化する条件が、前記第一のセットの処理コアのうち少なくとも一つの処理コアの変化する条件と、少なくとも一つの処理コアが置かれた環境の変化する条件とのうちの少なくとも一方を含む、請求項6記載のシステム。
【請求項8】
多コア・プロセッサを使ってタスクを効率的に実行する方法であって:
タスクを受領し;
前記タスクを解析して前記タスクの要求を判別し;
前記タスクを、前記多コア・プロセッサ中の第一のセットの処理コアに割り当て、ここで、割り当ては前記タスクの前記要求および前記第一のセットの処理コアの動的プロファイルに基づいて行われ、処理コアの動的プロファイルは該処理コアによる電力消費および該処理コアの電圧レベルに対応する最大動作スピードを含み;
前記タスクを、前記第一のセットの処理コアを使って実行することを含む、
方法。
【請求項9】
変化する条件に応答して、前記タスクを第二のセットの処理コアに再割り当てすることおよび前記第一のセットの処理コアを再バランスすることのうち少なくとも一方をさらに含んでおり、ここで、前記第二のセットの処理コアは前記第一のセットの処理コアとは異なる処理コアを少なくとも一つ含んでいる、請求項8記載の方法。
【請求項10】
前記変化する条件が、前記第一のセットの処理コアのうち少なくとも一つの処理コアの変化する条件と、変化する環境とのうちの少なくとも一方を含む、請求項9記載の方法。
【図1】
【図2】
【図3A】
【図3B】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図2】
【図3A】
【図3B】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【公開番号】特開2012−216232(P2012−216232A)
【公開日】平成24年11月8日(2012.11.8)
【国際特許分類】
【出願番号】特願2012−139498(P2012−139498)
【出願日】平成24年6月21日(2012.6.21)
【分割の表示】特願2008−533529(P2008−533529)の分割
【原出願日】平成18年9月26日(2006.9.26)
【出願人】(593096712)インテル コーポレイション (931)
【Fターム(参考)】
【公開日】平成24年11月8日(2012.11.8)
【国際特許分類】
【出願日】平成24年6月21日(2012.6.21)
【分割の表示】特願2008−533529(P2008−533529)の分割
【原出願日】平成18年9月26日(2006.9.26)
【出願人】(593096712)インテル コーポレイション (931)
【Fターム(参考)】
[ Back to top ]