(57)【要約】  マルチコアプロセッサにおいて、メモリ参照の完了を待っているコアへのクロックを無効にするコア割り当てによって周波数の制限をゆるめ、電力節減をしながらパフォーマンスを向上させることを可能にする方法、システムおよび装置。【特許請求の範囲】
【請求項１】
少なくとも部分的には処理負荷に基づいて実行コア制限を計算し、
ｎを整数としてｎ本の利用可能スレッドを実行し、
ｍを利用可能スレッド数ｎ以下の整数としてｍ個のプロセッサコアを有効にする、
ことを含む、複数のプロセッサコアのうち少なくとも一つのプロセッサコアへのクロックを無効にする方法。
【請求項２】
少なくとも一つのプロセッサコアへのクロックを、該プロセッサコアがメモリ動作を待つアイドル時間期間の間無効にすることを特徴とする、請求項１記載の方法。
【請求項３】
少なくとも一つのプロセッサコアへのクロックを無効にすることが電力消費の低下につながることを特徴とする、請求項１記載の方法。
【請求項４】
少なくとも一つのプロセッサコアへのクロックを無効にすることがそのプロセッサコアの動作周波数を上げることを可能にすることを特徴とする、請求項１記載の方法。
【請求項５】
複数のプロセッサコアのうち少なくとも一つのプロセッサコアの電圧および周波数動作点を選択するための方法であって、
前記複数のプロセッサコア全体の上で走る複数のスレッドの活動レベルを予測し、
少なくとも部分的には前記活動レベルに基づいて前記複数のプロセッサコアの部分集合を有効にする、
ことを特徴とする方法。
【請求項６】
前記活動レベルが、少なくとも部分的には熱的電力事情に基づく実行コア制限であることを特徴とする、請求項１記載の方法。
【請求項７】
前記実行コア制限が少なくとも部分的には公式に基づいており、Ｎが内容を有するスレッドの数を表し、％Ｅが実行時間百分率を表し、％Ｍがメモリ参照時間百分率を表すとして前記公式が：
int（N×(%E／(%E＋%M))）
であることを特徴とする、請求項６記載の方法。
【請求項８】
割り当てられたスレッドのないコアのための第一の状態と、
割り当てられたスレッドのあるコアを記憶する待ち行列のための第二の状態と、
コアがスレッドを走らせられるよう有効にする第三の状態と、
コアを無効にする第四の状態、
とを有することを特徴とする、複数のマルチコアプロセッサのための状態図。
【請求項９】
前記待ち行列が先入れ先出し（ＦＩＦＯ）待ち行列であることを特徴とする、請求項８記載の状態図。
【請求項１０】
有効にされたコアの数がある実行コア制限より小さい場合に前記コアが第二の状態から前記第三の状態に遷移することを特徴とする、請求項８記載の状態図。
【請求項１１】
前記実行コア制限が少なくとも部分的には公式に基づいており、Ｎが内容を有するスレッドの数を表し、％Ｅが実行時間百分率を表し、％Ｍがメモリ参照時間百分率を表すとして前記公式が：
int（N×(%E／(%E＋%M))）
であることを特徴とする、請求項１０記載の状態図。
【請求項１２】
コアがメモリ動作の完了を待ってアイドル状態である場合に第三の状態から前記第四の状態に遷移することを特徴とする、請求項８記載の状態図。
【請求項１３】
割り当てられたスレッドのないコアに第一の状態を割り当て、
割り当てられたスレッドのあるコアを記憶する待ち行列のための第二の状態を割り当て、
有効にされたコアの数をある実行コア制限と比較し、該有効にされたコアの数が実行コア制限より小さい場合にはコアがスレッドを走らせられるよう有効にするための第三の状態を割り当て、
コアを無効にするために第四の状態を割り当てる、
ことを有することを特徴とする、複数のマルチコアプロセッサのための状態図のための方法。
【請求項１４】
前記待ち行列が先入れ先出し（ＦＩＦＯ）待ち行列であることを特徴とする、請求項１３記載の方法。
【請求項１５】
前記実行コア制限が少なくとも部分的には公式に基づいており、Ｎが内容を有するスレッドの数を表し、％Ｅが実行時間百分率を表し、％Ｍがメモリ参照時間百分率を表すとして前記公式が：
int（N×(%E／(%E＋%M))）
であることを特徴とする、請求項１３記載の方法。
【請求項１６】
コアがメモリ動作の完了を待ってアイドル状態である場合に第三の状態から前記第四の状態に遷移することを特徴とする、請求項１３記載の状態図。
【請求項１７】
キャッシュメモリに結合され、要求および応答を受信するための少なくとも２本の時計回り方向のバスに結合された少なくとも一つのマルチコアプロセッサと、
有効にされたコアの数がある実行コア制限以下となるよう管理するためのコア割り当て論理、
とを有することを特徴とする、マルチコアプロセッサのシステム。
【請求項１８】
前記実行コア制限が少なくとも部分的には公式に基づいており、Ｎが内容を有するスレッドの数を表し、％Ｅが実行時間百分率を表し、％Ｍがメモリ参照時間百分率を表すとして前記公式が：
int（N×(%E／(%E＋%M))）
であることを特徴とする、請求項１７記載のシステム。
【請求項１９】
メモリＤＩＭＭのための複数のメモリ・コントローラと、
他のプロセッサ・ダイまたはＩ／Ｏサブシステムへの相互接続リンクを扱うための経路制御論理と、
コア割り当て論理、
とを含むシステムインターフェースをさらに有することを特徴とする、請求項１７記載のシステム。
【請求項２０】
要求および応答を受信するための少なくとも２本の反時計回り方向のバスをさらに有することを特徴とする、請求項１７記載のシステム。
【請求項２１】
前記キャッシュメモリが複数の独立したメモリバンクを用いたレベル３（Ｌ３）メモリであることを特徴とする、請求項１７記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は電力管理の分野に関するものである。より詳細には、本開示は電力に制約があってもマルチコアプロセッサのパフォーマンスを改善するための新しい方法および装置に関する。
【背景技術】
【０００２】
電力管理法は、サーバー、ラップトップパソコン、プロセッサ、デスクトップパソコンといったさまざまな種類のシステムおよび集積装置のための低電力での応用を達成するための電力消費削減を可能にする。システムおよび集積装置が複数の電力状態に対応して、少なくとも部分的に中央処理装置（CPU:  Central  Processing  Unit）の動作に基づいてパフォーマンスを最適化するよう、典型的にはソフトウェア的な諸方法が用いられる。
【０００３】
現在の電力管理諸法は、電力消費削減のために電圧または周波数またはその両方を減少させる。しかし、これは全体としてのパフォーマンスの低下につながる。また、いくつかの方法はアナログ的な設計を組み込んでいるが、それは、過渡的な処理負荷に対するループ安定性、較正およびチューニングに関するさまざまな難題がある。
【０００４】
複数コアをもつプロセッサの導入とともに、高周波数、高電圧で動作するコアが増え、また熱的限界、最大電流およびＶｃｃ範囲といったさまざまな電力制約条件に従う必要があるため、電力管理は主要な課題となる。
【０００５】
本発明は、あくまでも例であって限定ではない付属の図面の図において解説される。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
以下の記述は、電力に制約があってもマルチコアプロセッサのパフォーマンスを改善するための方法および装置を提供する。以下の記述においては、本発明のより完全な理解を提供するために数多くの個別的な詳細が記載される。しかし、当業者には、本発明がそのような個別的詳細なしでも実施しうることが認識されることであろう。通常の当業者はここに含まれる記述により、いたずらに試行することなく適切な論理回路を実装することができるであろう。
【課題を解決するための手段】
【０００７】
先述のように、電力制約条件に従いつつプロセッサのパフォーマンスを改善するための問題が存在する。現在の諸方法は、全体的なパフォーマンスを犠牲にして電圧または周波数を下げることを含んでいる。それに対し、ここに特許請求される主題は電力制約条件に従いつつ全体としてのパフォーマンスを改善する。たとえば、「プロセッサシステムのための実行コアの数の割り当て」の概念により、メモリトランザクションの完了を待つ間アイドル状態にあるコアへのクロックを無効にする結果として周波数を上げることを可能にする。たとえば、特許請求される主題は、プロセッサコアのアイドル状態の時間期間を、そのコアへのクロックを無効にすることによって活用し、その結果電力散逸が少なくなる。こうして、電力散逸の減少の結果として、より高い周波数が利用できる。ある実施形態では、適切な実行コア制限がある処理負荷に対して計算される。また、その同じ実施形態において、実行コアの数は、利用可能で準備のできているスレッドの数以下である。スレッドというのは、ある特定のアプリケーションのための命令の独立な集合である。
【０００８】
ある実施形態では、特許請求される主題はコア全部で集団的に走っているスレッドの活動レベルの予測に基づいて電圧／周波数の動作点を選択することを容易にする。たとえば、ＴＰＣ−Ｃスレッドが５０〜６０％の時間活動し、４０〜５０％の時間をメモリ参照が完了するのを待ってアイドル状態で過ごす傾向が見られるとする。そのような環境では、実行コア制限を、ダイ上のコアの総数の（ある実施例では）６０％などと指定する。この場合、コアが８あれば実行コア制限を５に設定することになる。すると、どの時点でも５つのコアだけがアクティブで３つのコアが非アクティブ（低電力状態）であることに対応する電圧・周波数動作点が指定される。これは、８つのコア全部が同時にアクティブになることを許す場合の指定に比べ、著しく高い動作周波数である。コア割り当て論理がダイの動作を制約し、いかなる瞬間にも５個まで（今の場合）のコアしかアクティブにならないことを保証する。「待機」（Waiting）および「割り当て」（Rationing）の待ち行列（これらについてはのちに図１との関連でさらに議論する）の埋まり具合に関して統計が集められる。適宜こうした統計が解析されて動作点（実行コア制限およびそれに対応する電圧／周波数の組）を変更すべきかどうかが決定される。「待機」待ち行列がすいていて「割り当て」待ち行列がいっぱいになる傾向があるとすると、それは、いくつかのコアが進行できるのに進行していないこと、そしてパフォーマンスを改善するために実行コア制限を上げて電圧／周波数を下げるべきであることの指標である。逆に、「割り当て」待ち行列がすいていて「待機」待ち行列がいっぱいになる傾向があるとすると、これは、実行コア制限を下げて電圧／周波数点を上げることでパフォーマンスを向上させられることの指標でありうる。
【発明を実施するための最良の形態】
【０００９】
図１は、ある実施形態に基づいて利用される方法のためのフローチャートを示している。一つの実施例では、このフローチャートは状態図のための方法を表す。
【００１０】
その同じ実施例において、前記状態図は、あるシステム中のプロセッサコアのための所定の状態機械を示す。この同じ実施例において、前記状態機械は、メモリトランザクションが完了するのを待っているコアへのクロックを無効にする結果としてプロセッサパフォーマンスを改善するための「コアの割り当て」を容易にする。
【００１１】
一つの実施例では、前記状態図は４つの定義された状態を有する。「コア未割り当て」状態２０２、「実行」状態２０４、「割り当てＦＩＦＯ待ち行列」状態２０６、「待機」状態２０８である。最初は、「コア未割り当て」状態が次のように定義される：各コアがスレッドを割り当てられていない。その後、あるコアにスレッドが割り当てられた場合、特許請求される主題は「割り当てＦＩＦＯ待ち行列」状態２０６へと遷移する。一つの実施例では、ＦＩＦＯはFirst  In  First  Out（先入れ先出し）として定義される。
【００１２】
「割り当てＦＩＦＯ待ち行列」状態に遷移すると、実行コア数と実行コア制限（ECL:  executing  core  limit）との比較が決定される。一つの実施例では、プロセッサまたはシステム仕様が熱的な電力事情に従うために適正な実行コア制限を決定する。一つの実施例では、ＥＣＬはのちに本出願において記述される公式によって決定される。実行コアの数がＥＣＬより少なければ、ＦＩＦＯ待ち行列において処理すべき次の位置にある特定のコアが「実行」状態２０４に遷移する。そうでなければ、そのコアは「割り当てＦＩＦＯ」待ち行列２０６に留まる。
【００１３】
「実行」状態にはいると、コアは、メモリ参照および加熱イベントならびに／または公平化のための時間切れ（fairness  timeout）といったイベントが発生しない限りこの状態に留まる。たとえば、公平化のための時間切れはライブロック（live  lock）状態になる可能性を防止するのに利用しうる。ここで、メモリ参照というのは当該プロセッサに結合されているどのキャッシュメモリ内でもない（「キャッシュメモリの全レベルでのミス」）ある特定のメモリアドレスに対する読み出しまたは書き込み動作のことである。それによりメインメモリへのアクセスが開始される。
【００１４】
前述したようなイベントが発生した場合には、当該コアは「待機」状態２０８に遷移する。前記イベントが完了すると、当該コアは「割り当てＦＩＦＯ」待ち行列状態に遷移する。状態２０４、２０６、２０８の間のこの巡回のシーケンスは、その特定のスレッドが完了するまで生じる。スレッドが完了すると、当該コアは「コア未割り当て」状態に遷移する。
【００１５】
ただし、特許請求される主題は、前記状態図における４つの定義された状態に限られるものではない。特許請求される主題は異なる量の状態をサポートする。図１は単に、実行コアの数を利用可能なスレッド数より少なくなるよう制限する例を示すだけである。たとえば、複数の待機状態を認める実施例もある。代替的に、待機状態をもう一つの待ち行列状態によって置き換えてもよい。また、状態図のその他の実施例では、コアに対して複数の優先レベルを認めたり、実行状態からの離脱を引き起こしたイベントの性質に応じて異なる待機待ち行列（メモリ待ち、熱的待ち、ＡＣＰＩ待ちなど）があったりすることもある。
【００１６】
典型的には、コアはメモリの読み出しまたは書き込み動作を実行し、その後、該動作に依存する動作を実行する（たとえば、メモリ読み込み動作によって返されたデータを使うなど）。したがって、コアはそのメモリ動作が完了するのを待って「停止」（stall）する。そのような場合、そのコアは中央コアの割り当て論理に停止したことを示す信号を送る。これは、コア割り当て論理によって無効にされる候補となったことの指標である。コア割り当て論理はこの信号に反応して当該コアを「仮眠」（nap）させる――そのコアに「仮眠」信号を送り、それを受けて当該コアは命令発行を封止し、（キャッシュコヒーレントな）低電力状態に遷移する。さらに、コア割り当て論理はそのコアの識別子を「待機」待ち行列に入れる。前記メモリ動作が完了すると、当該コアは前記「停止」信号の取り消しを送る。コア割り当て論理はこれに反応してそのコアの識別子を「待機」待ち行列から「割り当て」待ち行列に移す。現在実行中の（「仮眠」していない）コアの数が実行コア制限以下であれば、コア割り当て論理は「割り当て」待ち行列から一番古い識別子を除去して、そのコアへの「仮眠」信号を取り消す。
【００１７】
図２は、ある実施形態に基づいて利用される棒グラフを示している。一つの実施例では、この棒グラフは、さまざまな処理負荷についてモンテカルロシミュレーションによって計算された、１６コアマルチプロセッサについての実行に使われる時間百分率を描く。独立変数軸はＥＣＬが２，４，６，８，１０，１２，１４，１６の場合を示している。また、各ＥＣＬについて異なる処理負荷での棒がある。それぞれ（実行時間に関して）メモリ参照のデューティーサイクルが１％、３０％、４０％、５０％としてシミュレーションしたものである。
【００１８】
メモリ参照のデューティーサイクルが５０％の場合を分析すると、実行時間百分率が５０％で飽和するという事実がはっきりする。このように、ＥＣＬが利用可能スレッド数に等しいとき、メモリ参照の処理は実行時間の半分を消費するのである。
【００１９】
図３は、ある実施形態に基づいて利用される棒グラフである。図２に加えて、図３は実行時間百分率および周波数の積によって計算された全体的パフォーマンスを示している。この全体的パフォーマンスはまた、周波数がＥＣＬに反比例するという事実も取り入れている。先述のように、この関係があるのは、実行コアの数を減らすと電力散逸が減る結果となるためである。それゆえに、定常状態の熱的限界に留まるために周波数を上げることができるのである。
【００２０】
また、図２は、メモリ参照のデューティーサイクルが３０％の場合、最大実行時間百分率は７０％であることをも示している。また、飽和限界とスレッド数との積が飽和の開始点を画定する。この飽和開始点は、改善された、あるいは最適なパフォーマンスを与える領域となりうるのでとりわけ注目に値する。
【００２１】
一つの実施例では、適切なＥＣＬを決定するために自己最適化公式が利用される。その公式で、Ｎは内容を有するスレッドの数を表し、％Ｅは実行時間百分率を表し、％Ｍはメモリ参照時間百分率を表す。公式は次のようになる：
int（N×(%E／(%E＋%M))）
【００２２】
図４は、一つの実施形態に基づく装置を示している。一つの実施例では、その装置は、個々にレベル３（Ｌ３）キャッシュメモリの独立なバンクに結合された複数のプロセッサ４１０をもつマルチコア・プロセッサ・システムを表す。その同じ実施例において、４つのバスが２つの逆方向に回る「リング」を形成する――時計回り方向の要求／応答（Request/Response）リング（REQ0/RES0）（４０２および４０４）ならびに反時計回り方向の要求／応答リング（REQ1/RES1）（４０６および４０８）である。「Ｐ」および「Ｃ」の間の円は、各リングについての一対の状態装置を表している。このように、一組の環状パイプラインを使って、各プロセッサコア／キャッシュバンクから他の任意のプロセッサコア／キャッシュバンクに情報が渡される。システムインターフェース論理は、メモリＤＩＭＭのためのメモリ・コントローラ、他のプロセッサ・ダイおよび／またはＩ／Ｏサブシステムへの相互接続リンクを扱うための経路制御論理、ならびにその他さまざまなシステム制御論理（中央コア割り当てコントローラを含む）を含んでいる。
【００２３】
付属の図面ではある代表例としての実施形態を記述し、示してきたが、そのような実施形態は単に説明するものであって広い本発明を制限するものではないこと、そして通常の当業者にはこの開示を研究すればさまざまな他の修正が思いつくであろうゆえ、本発明が示され、述べられた特定の構成および配置に限定されるものではないことを理解しておくものとする。
【図面の簡単な説明】
【００２４】
【図１】ある実施形態に基づいて利用される方法のためのフローチャートである。
【図２】ある実施形態に基づいて利用される棒グラフである。
【図３】ある実施形態に基づいて利用される棒グラフである。
【図４】一つの実施形態に基づく装置を示す図である。
【図１】
2007535721.tif 000002
【図２】
2007535721.tif 000003
【図３】
2007535721.tif 000004
【図４】
2007535721.tif 000005
【手続補正書】
【提出日】平成18年1月13日(2006.1.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
少なくとも部分的には処理負荷に基づいて実行コア制限を計算し、
ｎを整数としてｎ本の利用可能スレッドを実行し、
ｍを利用可能スレッド数ｎ以下の整数としてｍ個のプロセッサコアを有効にする、
ことを含む、複数のプロセッサコアのうち少なくとも一つのプロセッサコアへのクロックを無効にする方法。
【請求項２】
少なくとも一つのプロセッサコアへのクロックを、該プロセッサコアがメモリ動作を待つアイドル時間期間の間無効にすることを特徴とする、請求項１記載の方法。
【請求項３】
少なくとも一つのプロセッサコアへのクロックを無効にすることが電力消費の低下につながることを特徴とする、請求項１記載の方法。
【請求項４】
少なくとも一つのプロセッサコアへのクロックを無効にすることがそのプロセッサコアの動作周波数を上げることを可能にすることを特徴とする、請求項１記載の方法。
【請求項５】
複数のプロセッサコアのうち少なくとも一つのプロセッサコアの電圧および周波数動作点を選択するための方法であって、
前記複数のプロセッサコア全体の上で走る複数のスレッドの活動レベルを予測し、
少なくとも部分的には前記活動レベルに基づいて前記複数のプロセッサコアの部分集合を有効にする、
ことを特徴とする方法。
【請求項６】
前記活動レベルが、少なくとも部分的には熱的電力事情に基づく実行コア制限であることを特徴とする、請求項１記載の方法。
【請求項７】
前記実行コア制限が少なくとも部分的には公式に基づいており、Ｎが内容を有するスレッドの数を表し、％Ｅが実行時間百分率を表し、％Ｍがメモリ参照時間百分率を表すとして前記公式が：
int（N×(%E／(%E＋%M))）
であることを特徴とする、請求項６記載の方法。
【請求項８】
割り当てられたスレッドのないコアのための第一の動作状態と、
割り当てられたスレッドのあるコアを記憶する待ち行列のための第二の動作状態と、
コアがスレッドを走らせられるよう有効にする第三の動作状態と、
コアを無効にする第四の動作状態、
とを有することを特徴とする、複数のコアを用いたマルチスレッドをサポートする集積回路。
【請求項９】
前記待ち行列が先入れ先出し（ＦＩＦＯ）待ち行列であることを特徴とする、請求項８記載の複数のコアを用いたマルチスレッドをサポートする集積回路。
【請求項１０】
有効にされたコアの数がある実行コア制限より小さい場合に前記コアが第二の状態から前記第三の状態に遷移することを特徴とする、請求項８記載の複数のコアを用いたマルチスレッドをサポートする集積回路。
【請求項１１】
前記実行コア制限が少なくとも部分的には公式に基づいており、Ｎが内容を有するスレッドの数を表し、％Ｅが実行時間百分率を表し、％Ｍがメモリ参照時間百分率を表すとして前記公式が：
int（N×(%E／(%E＋%M))）
であることを特徴とする、請求項１０記載の複数のコアを用いたマルチスレッドをサポートする集積回路。
【請求項１２】
コアがメモリ動作の完了を待ってアイドル状態である場合に第三の状態から前記第四の状態に遷移することを特徴とする、請求項８記載の複数のコアを用いたマルチスレッドをサポートする集積回路。
【請求項１３】
割り当てられたスレッドのないコアに第一の状態を割り当て、
割り当てられたスレッドのあるコアを記憶する待ち行列のための第二の状態を割り当て、
有効にされたコアの数をある実行コア制限と比較し、該有効にされたコアの数が実行コア制限より小さい場合にはコアがスレッドを走らせられるよう有効にするための第三の状態を割り当て、
コアを無効にするために第四の状態を割り当てる、
ことを有することを特徴とする、複数のマルチコアプロセッサのための状態図のための方法。
【請求項１４】
前記待ち行列が先入れ先出し（ＦＩＦＯ）待ち行列であることを特徴とする、請求項１３記載の方法。
【請求項１５】
前記実行コア制限が少なくとも部分的には公式に基づいており、Ｎが内容を有するスレッドの数を表し、％Ｅが実行時間百分率を表し、％Ｍがメモリ参照時間百分率を表すとして前記公式が：
int（N×(%E／(%E＋%M))）
であることを特徴とする、請求項１３記載の方法。
【請求項１６】
コアがメモリ動作の完了を待ってアイドル状態である場合に第三の状態から前記第四の状態に遷移することを特徴とする、請求項１３記載の状態図。
【請求項１７】
キャッシュメモリに結合され、要求および応答を受信するための少なくとも２本の時計回り方向のバスに結合された少なくとも一つのマルチコアプロセッサと、
有効にされたコアの数がある実行コア制限以下となるよう管理するためのコア割り当て論理、
とを有することを特徴とする、マルチコアプロセッサのシステム。
【請求項１８】
前記実行コア制限が少なくとも部分的には公式に基づいており、Ｎが内容を有するスレッドの数を表し、％Ｅが実行時間百分率を表し、％Ｍがメモリ参照時間百分率を表すとして前記公式が：
int（N×(%E／(%E＋%M))）
であることを特徴とする、請求項１７記載のシステム。
【請求項１９】
メモリＤＩＭＭのための複数のメモリ・コントローラと、
他のプロセッサ・ダイまたはＩ／Ｏサブシステムへの相互接続リンクを扱うための経路制御論理と、
コア割り当て論理、
とを含むシステムインターフェースをさらに有することを特徴とする、請求項１７記載のシステム。
【請求項２０】
要求および応答を受信するための少なくとも２本の反時計回り方向のバスをさらに有することを特徴とする、請求項１７記載のシステム。
【請求項２１】
前記キャッシュメモリが複数の独立したメモリバンクを用いたレベル３（Ｌ３）メモリであることを特徴とする、請求項１７記載のシステム。