(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-04-17
(45)【発行日】2023-04-25
(54)【発明の名称】システム全体の低電力管理
(51)【国際特許分類】
H04L 41/0833 20220101AFI20230418BHJP
【FI】
H04L41/0833
(21)【出願番号】P 2020536179
(86)(22)【出願日】2018-09-20
(86)【国際出願番号】 US2018051916
(87)【国際公開番号】W WO2019133085
(87)【国際公開日】2019-07-04
【審査請求日】2021-09-17
(32)【優先日】2017-12-28
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ベンジャミン チェン
(72)【発明者】
【氏名】グレゴリー ディー. ダンリー
(72)【発明者】
【氏名】ブライアン ピー. ブルッサール
【審査官】佐々木 洋
(56)【参考文献】
【文献】米国特許出願公開第2016/0187952(US,A1)
【文献】米国特許出願公開第2013/0311804(US,A1)
【文献】米国特許出願公開第2013/0179621(US,A1)
【文献】米国特許出願公開第2014/0019788(US,A1)
【文献】米国特許出願公開第2017/0353926(US,A1)
【文献】特表2005-508041(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/00-12/66
H04L 41/00-101/695
(57)【特許請求の範囲】
【請求項1】
少なくとも第1のノードと第2のノードとを含む複数のノードであって、それぞれが、
アプリケーションを処理するように構成された1つ以上のクライアントと、
前記複数のノードのうちの1つ以上の他のノードに結合された複数のリンクであって、前記複数のノードのうちの2つ以上が完全には接続されていない、前記複数のリンクと、
電力コントローラと、を含む、複数のノードを備え、
前記第2のノードが、前記複数のノードのうちの少なくとも2つのノードを含むノードの第1のサブセット内の各クライアントがアイドルであることを示す通知を前記第1のノードに送信するように構成されており、
前記複数のノード内の各クライアントがアイドルであると前記複数のノードのうちの第1のノードが判定したことに応答して、前記複数のノードの各ノードが、前記複数のリンク及び前記1つ以上のクライアントをパワーダウンするように構成される、コンピューティングシステム。
【請求項2】
前記複数のノードのうちの第
3のノー
ドが、前記複数のノードの第
2のサブセット内の各クライアントがアイドルであることを示す通知を前記複数のノードのうちの
前記第
2のノードに送信するように構成され、前記第3のノードが、前記第
1のノード
に直接接続されていない、請求項1に記載のコンピューティングシステム。
【請求項3】
前記第2のノードの前記電力コントローラが、
前記第2のノード内の前記1つ以上のクライアントの各クライアントがアイドルであると判定したことと、
前記複数のノード
の第2のサブセット内の各クライアントがアイドルであることを示す通知を第
3のノードから受信したことと、
に応答して、前記通知を送信するように構成される、請求項
1に記載のコンピューティングシステム。
【請求項4】
前記複数のノードの所与のサブセット内の各クライアントがアイドルであるとの通知を前記第1のノードの各リンク上で受信したことに応答して、前記第1のノードの前記電力コントローラが、直接接続された各隣接ノードにパワーダウンのための要求を送信するように構成される、請求項2に記載のコンピューティングシステム。
【請求項5】
前記
複数のノードの第1のサブセットが、前記第2のノードと、前記第1のノード以外の少なくとも1つの他のノードと、を含む、請求項
1に記載のコンピューティングシステム。
【請求項6】
前記第2のノードの前記電力コントローラが、前記第2のノードの各リンク上でパワーダウン要求及びパワーダウン応答を転送したことに応答して前記第2のノードの各リンク及び各クライアントをパワーダウンするように構成される、請求項
1に記載のコンピューティングシステム。
【請求項7】
前記
複数のノードが完全には接続されていない、請求項
1に記載のコンピューティングシステム。
【請求項8】
前記第
2のノード
が、前記複数のノードのうちの第3のノード内のクライアントがアイドルであることを示す通知を受信したことに少なくとも部分的に基づいて、前記第2のノード内の各クライアントがアイドルであることを示す通知を送信するように構成される、請求項
1に記載のコンピューティングシステム。
【請求項9】
前記複数のノードがツリー階層で接続されており、リーフノードからルートノードへの上流方向のリンク上でメッセージが移動し、前記ルートノードから前記リーフノードへの下流方向のリンク上でメッセージが移動し、
前記第1のノードが前記ツリー階層のルートノードである、請求項2に記載のコンピューティングシステム。
【請求項10】
前記第2のノードの前記電力コントローラが、前記複数のノードをパワーダウンするための要求を、
前記第2のノード内の各クライアントがアイドルであると判定したことと、
前記複数のノードをパワーダウンするように指定する通知
を上りリンク上で受信したことと、
に応答して
、下りリンク上で送信するように構成される、請求項9に記載のコンピューティングシステム。
【請求項11】
前記第2のノードの前記電力コントローラが、前記複数のノード内の少なくとも1つのクライアントがアイドルであることを示す通知
を上りリンク上で送信するように構成される、請求項1に記載のコンピューティングシステム。
【請求項12】
前記
第1のノードがルートであり、前記第2のノードが中間ノードであり、前記第3のノードがリーフノードである、請求項
2に記載のコンピューティングシステム。
【請求項13】
少なくとも第1のノードと第2のノードとを含む複数のノードによってアプリケーションを処理することであって、各ノードが、
前記アプリケーションを処理するように構成された1つ以上のクライアントと、
前記複数のノードのうちの1つ以上の他のノードに結合された複数のリンクであって、前記複数のノードのうちの2つ以上が完全には接続されていない、前記複数のリンクと、
電力コントローラと、を含む、処理することと、
前記第2のノードによって、前記複数のノードのうちの少なくとも2つのノードを含むノードの第1のサブセット内の各クライアントがアイドルであることを示す通知を前記第1のノードに送信することと、
前記複数のノード内の各クライアントがアイドルであると前記複数のノードのうちの第1のノードが判定したことに応答して、前記複数のノードの各ノードにより、前記複数のリンク及び前記1つ以上のクライアントをパワーダウンすることと、
を含む方法。
【請求項14】
前記複数のノードのうちの第
3のノー
ドによって、前記複数のノードの第
2のサブセット内の各クライアントがアイドルであることを示す通知を前記複数のノードのうちの
前記第
2のノードに送信することであって、前記第3のノードが、前記第
1のノード
に直接接続されていない、送信することをさらに含む、請求項13に記載の方法。
【請求項15】
前記第2のノー
ドにより、前記通知を、
前記第2のノード内
の1つ以上のクライアントの各クライアントがアイドルであると判定したことと、
前記複数のノード
の第2のサブセット内の各クライアントがアイドルであることを示す通知を第
3のノードから受信したことと、
に応答して送信することをさらに含む、請求項14に記載の方法。
【請求項16】
前記複数のノードの所与のサブセット内の各クライアントがアイドルであるとの通知を前記第1のノードの各リンク上で受信したことに応答して、前記方法が、前記第1のノードの前記電力コントローラにより、直接接続された各隣接ノードにパワーダウンのための要求を送信することをさらに含む、請求項14に記載の方法。
【請求項17】
アプリケーションを処理するように構成された1つ以上のクライアントと、
上りリンクと、
下りリンクと、
電力コントローラと、を含む処理ノードであって、
前記電力コントローラが、
1つ以上のクライアントがアイドルであると
判定したことと、前記下りリンクに接続されたノード内の各クライアントがアイドルであることを示す通知を、前記上りリンクを介して受信したことと、に応答して、
少なくとも2つの処理ノードを含む処理ノードのサブセット内の各クライアントがアイドルであることを示す通知を、前記上りリンクを介して送信するように構成され
、
前記電力コントローラが、前記通知を、前記上りリンクを介して送信した後に、他のノードから前記上りリンクを介して通知を受信したことに応答して、前記上りリンク、前記下りリンク及び前記1つ以上のクライアントをパワーダウンするように構成される、処理ノード。
【請求項18】
前記
処理ノードのサブセットが、
前記処理ノードと、前記下りリンクに接続された少なくとも1つのノードと、を含む、請求項17に記載の処理ノード。
【請求項19】
前記
上りリンクが、ルートノードに接続するように構成され、前記下りリンクが、リーフノード又は中間ノードの何れかに接続するように構成される、請求項18に記載の処理ノード。
【請求項20】
前記電力コントローラが、各リンク上でパワーダウン要求及びパワーダウン応答を転送したことに応答して各リンク及び各クライアントをパワーダウンするように構成される、請求項18に記載の処理ノード。
【発明の詳細な説明】
【背景技術】
【0001】
関連技術の説明
今日の集積回路(IC)の電力消費により、半導体チップの各世代で設計上の問題がますます大きくなってきた。電力消費が増加するにつれて、より大きいファンやヒートシンクなどのより高コストの冷却システムを利用して、余分な熱を排除し、ICの故障を防ぐようにしなければならない。しかしながら、冷却システムによってシステムコストが増加する。ICの電力損失制約は、携帯用コンピュータ及び移動通信デバイスにとって問題であるだけでなく、高性能マイクロプロセッサを利用したデスクトップコンピュータ及びサーバにとっても問題である。これらのマイクロプロセッサは、複数のプロセッサコア、すなわちコア、及びコア内の複数のパイプラインを含む。
【0002】
様々なサーバなどの様々なコンピューティングデバイスは、ヘテロジニアス集積を利用する。ヘテロジニアス集積は、システムの機能を提供するために複数の種類のICを集積する。複数の機能には、オーディオ/ビデオ(A/V)データ処理、医療分野及び商業分野のための他の高データ並列アプリケーション、汎用命令セットアーキテクチャ(ISA)の処理命令、ならびにデジタル、アナログ、混合信号及び無線周波数(RF)機能などが含まれる。複数の種類のICを集積するためにシステムパッケージングにとって様々な選択肢が存在する。あるコンピューティングデバイスでは、システムオンチップ(SOC)が使用されるのに対し、他のコンピューティングデバイスでは、より小さく、かつより高い歩留まりのチップが、マルチチップモジュール(MCM)内の大型チップとしてパッケージングされる。一部のコンピューティングデバイスは、システムインパッケージ(SiP)内の2つ以上のダイを垂直にスタックし、電気的に接続するためにダイスタッキング技術、ならびにシリコンインタポーザ、スルーシリコンビア(TSV)及び他の機構を利用した3次元集積回路(3D IC)を含む。
【0003】
システムパッケージングのための選択肢に関係なく、選択されたパッケージの複製をそれぞれが有する複数のソケットを備えたコンピューティングシステムをパワーダウンすることは困難である。各パッケージは電力コントローラを含み、したがって、システムは複数の電力コントローラを有する。各電力コントローラがシステム内の他の各電力コントローラに接続されている場合、システムをパワーダウンするときを通信することがより容易になる。しかしながら、性能を高めるためにソケットの数を増加させるといった、システムのスケーリングが難しくなる。加えて、複数の接続をルーティングすることにより、ソケット間で信号の量が増加し、インタフェース用の領域が増加する。
【0004】
上記を考慮して、マルチノードコンピューティングシステム用の効率的な電力管理を実行するための効率的な方法及びシステムが必要である。
【0005】
本明細書で説明される方法及び機構の利点は、添付の図面と併せて以下の説明を参照することによってより良く理解され得る。
【図面の簡単な説明】
【0006】
【
図1】一実施形態の処理ノードのブロック図である。
【
図2】一実施形態のマルチノードコンピューティングシステムのブロック図である。
【
図3】マルチノードコンピューティングシステム用の電力管理を実行するための一実施形態の方法のフロー図である。
【
図4】マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法のフロー図である。
【
図5】マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法のフロー図である。
【
図6】マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法のフロー図である。
【
図7】マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法のフロー図である。
【
図8】別の実施形態のマルチノードコンピューティングシステムのブロック図である。
【
図9】マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法のフロー図である。
【
図10】マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法のフロー図である。
【
図11】マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法のフロー図である。
【
図12】マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法のフロー図である。
【0007】
本発明は、様々な修正及び代替形態を受け入れるが、具体的な実施形態を図面中の例として示し、本明細書で詳細に説明する。しかしながら、図面及びそれに対する詳細な説明は、開示された特定の形態に本発明を限定することを意図するものではないが、別の見方をすれば、本発明は、添付された特許請求の範囲によって定められるような本発明の範囲内に収まる全ての修正、均等物及び代替物を網羅しようとするものであることが理解されるべきである。
【発明を実施するための形態】
【0008】
以下の説明では、本明細書に提示する方法及び機構の完全な理解を提供するために、多くの具体的な詳細が述べられている。しかしながら、当業者は、それらの特定の詳細なしに様々な実施形態を実施することができることを認識するべきである。いくつかの例では、本明細書で説明されるアプローチを曖昧にすることを回避するために、公知の構造、コンポーネント、信号、コンピュータプログラム命令、及び技術が詳細には示されていない。例示の簡潔性及び明確さのために、図に示される要素は、必ずしも縮尺通りに描かれていないことが認識されよう。例えば、一部の要素の寸法が他の要素に比べて誇張されている場合がある。
【0009】
マルチノードコンピューティングシステム用の効率的な電力管理を実行するための各種のシステム、装置、方法及びコンピュータ可読媒体が開示される。各種の実施形態では、処理ノードは、処理アプリケーション用の1つ以上のクライアントを含む。ノード内のクライアントの例は、汎用中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、アクセラレーテッド処理ユニット(APU)及び入出力(I/O)デバイスなどを含む。処理ノードはまた、電力コントローラ、及び他のノードに対してメッセージを転送するための複数のリンクインタフェースを少なくとも含む。本明細書で使用される場合、処理ノードはノードとも呼ばれる。
【0010】
各種の実施形態では、コンピューティングシステムは、他のノードに完全には接続されていない2つ以上のノードを備えたマルチノードシステムである。各ノードは、1つ以上のクライアント、複数のリンクインタフェース及び電力コントローラを含む。これらのノードが完全には接続されていないにも関わらず、各ノードは、そのリンク及びクライアントを、マルチノードシステム内の各クライアントがアイドルであると第1のノードが判定したときにパワーダウンすることが可能である。実施形態では、マルチノードコンピューティングシステムは、各ノードが要求元である階層型トポロジを使用する。システム全体のパワーダウンのためのネゴシエーションは分散化される。各ノードは、階層の低いレベルまたは第1レベルにおいて1つ以上のリンクを有する。第1レベルにおけるリンクは、グループ内のノードのサブセットを互いに直接接続するために使用される。加えて、1つ以上のノードは、階層のより高いレベルまたは第2レベルにおいて1つ以上のリンクを有する。第2レベルにおけるリンクは、第1のグループ内の第1のノードと第2のグループ内の第2のノードとを直接接続するために使用される。システム全体のパワーダウンが分散化されたとき、複数のノードのうちのいずれかを、システム全体のパワーダウンを開始する第1のノードとすることができる。電力管理のための分散化アプローチを使用すると、パワーダウンのためのネゴシエーションが階層の高位レベルにおいて継続する前に、システム全体のパワーダウンのためのネゴシエーションが階層の低位レベル内で行われる。
【0011】
他の実施形態では、マルチノードコンピューティングシステムは、1つ以上のリーフノード、単一のルートノード、及びルートノードと1つ以上のリーフノードとの間の1つ以上の中間ノードを備えたツリー階層を含む。各中間ノードは、上流のノードに直接接続されており、かつ下流のノードに直接接続されている。上流方向はルート方向とも呼ばれるのに対し、下流方向はリーフ方向とも呼ばれる。システム全体のパワーダウンのためのネゴシエーションは集中化され、これはルートノードによって実行される。パワーアップのためのネゴシエーションは分散化されたままであり、これはシステム内のノードのいずれかによって開始される。各種の実施形態では、分散化アプローチ及び集中化アプローチのそれぞれは、システム全体のパワーダウンを実行する前にリンクのパワーダウンを回避する電力管理のためのネゴシエーションを実行する。これにより、その後のパワーアップの不利益が排除される。
【0012】
図1を参照すると、一実施形態の処理ノード100の概略ブロック図が示されている。図示されているように、処理ノード100は、各クライアント110、メモリコントローラ130、電力コントローラ170及びリンクインタフェース180の間に通信ファブリック120を含む。いくつかの実施形態では、処理ノード100の構成要素は、システムオンチップ(SOC)などの、集積回路(IC)上の個々のダイである。他の実施形態では、構成要素は、システムインパッケージ(SiP)またはマルチチップモジュール(MCM)内の個々のダイである。
【0013】
例示された実施形態では、クライアント110は、中央処理ユニット(CPU)112、グラフィックス処理ユニット(GPU)114及びハブ116を含む。ハブ116は、マルチメディアエンジン118と通信するために使用される。CPU112、GPU114及びマルチメディアエンジン118は、処理アプリケーションに対応したコンピューティングリソースの例である。図示されていないが、他の実施形態では、他の種類のコンピューティングリソースがクライアント110内に含まれる。CPU112内の1つ以上のプロセッサコアのそれぞれは、所与の選択された命令セットアーキテクチャ(ISA)にしたがって命令を実行するための回路を含む。各種の実施形態では、CPU112内のプロセッサコアのそれぞれは、所与のISAの命令を処理するために使用されるスーパースカラ・マルチスレッド型マイクロアーキテクチャを含む。実施形態では、GPU114は、有意な数の並列実行レーンを備えた高並列データマイクロアーキテクチャを含む。一実施形態では、マイクロアーキテクチャは、並列実行レーンについて単一命令複数データ(SIMD)パイプラインを使用する。マルチメディアエンジン118は、マルチメディアアプリケーション用のオーディオデータ及びビジュアルデータを処理するためのプロセッサを含む。
【0014】
各種の実施形態では、通信ファブリック120は、コンピューティングリソース110とメモリコントローラ130との間でトラフィックを前後に転送し、各通信プロトコルをサポートするためのインタフェースを含む。いくつかの実施形態では、通信ファブリック120は、要求及び応答を記憶するためのキュー、内部ネットワークを越えて要求を送信する前に受信した要求の間の調停を行うための選択ロジック、パケットの構築及び復号を行うためのロジック、ならびにパケットのルートを選択するためのロジックを少なくとも含む。
【0015】
単一のメモリコントローラ130が図示されているが、他の実施形態では、別の数のメモリコントローラが処理ノード100内で使用される。各種の実施形態では、メモリコントローラ130は、通信ファブリック120を経由してクライアント110からメモリ要求を受信し、そのメモリ要求をスケジューリングし、スケジューリングされたメモリ要求をシステムメモリ及びメインメモリのうちの1つ以上に送信する。メモリコントローラ130はまた、システムメモリ及びメインメモリから応答を受信し、クライアント110内の対応する要求の送信元にその応答を送信する。各種の実施形態では、システムメモリには、I/Oコントローラ及びバス160ならびにメモリバス150を介してメインメモリからデータが満たされる。要求されたブロックを伴う対応するキャッシュフィルラインは、元のメモリ要求を完了させるために、メインメモリからクライアント110内のキャッシュメモリサブシステムのうちの対応する1つに伝達される。キャッシュフィルラインは、キャッシュの1つ以上のレベルに配置される。
【0016】
いくつかの実施形態では、処理ノード100のアドレス空間は、少なくとも、CPU112、GPU114及びハブ116、ならびに入出力(I/O)周辺デバイス(図示せず)及び他の種類のコンピューティングリソースなどの1つ以上の他の構成要素の間で分割される。メモリマップは、どのアドレスがどの構成要素にマッピングされるか、したがって特定のアドレスを求めるメモリ要求がCPU112、GPU114及びハブ116のうちのどの1つにルーティングされるべきかを決定するために保持される。実施形態では、システムメモリは、様々な動的ランダムアクセスメモリ(DRAM)のうちの1つであり、対応するプロトコルは、メモリコントローラ130によってサポートされる。プロトコルは、クロックサイクル毎のデータ転送数、信号電圧レベル、信号タイミング、信号及びクロックの位相ならびにクロック周波数などの、情報転送のために使用される値を決定する。いくつかの実施形態では、メインメモリは、様々な種類の不揮発性・ランダムアクセスのデータ補助記憶装置のうちの1つである。メインメモリの例は、ハードディスクドライブ(HDD)及びソリッドステートディスク(SSD)である。
【0017】
リンクインタフェース180は、リンク上でメッセージを転送することによって処理ノード100と他の処理ノードとの間の通信をサポートする。各種の実施形態では、ノード間のリンクを越えて送信されるメッセージは、1つ以上のノードのための動作状態の通知、パワーダウン要求、要求に対する応答、割り込み及び他の情報を含む。各種の実施形態では、各リンクは、2つのノード間のポイント・ツー・ポイント通信チャネルである。物理レベルにおいて、リンクは1つ以上のレーンを含む。いくつかの実施形態では、リンクインタフェース180、対応するリンク及び他のノードは、PCIe(Peripheral Component Interconnect Express)、InfiniBand、RapidIO及びHyperTransportなどの通信プロトコル接続を含む。いくつかの実施形態では、リンクインタフェース180は、相互接続リンクを経由して他のノードと通信するために使用される制御ロジック及びバッファまたはキューを含む。
【0018】
一実施形態では、電力コントローラ170は、クライアント110からデータを収集する。いくつかの実施形態では、電力コントローラ170はまた、メモリコントローラ130からデータを収集する。いくつかの実施形態では、収集されたデータは、所定のサンプリングされた信号を含む。サンプリングされた信号の切り替えは、切り替えられたキャパシタンスの量を示す。サンプルに対する選択信号の例は、クロックゲートイネーブル信号、バスドライバイネーブル信号、連想メモリ(CAM)内の不一致、及びCAMワード線(WL)ドライバなどを含む。実施形態では、電力コントローラ170は、データを収集して、所与のサンプル間隔中のノード100内の電力消費を特徴付ける。
【0019】
いくつかの実施形態では、ノード100内のオンダイ電流センサ及び温度センサも電力コントローラ170に情報を送信する。電力コントローラ170は、センサ情報、発行された命令または発行されたスレッドのカウント、及び重み付きでサンプリングされた信号の和のうちの1つ以上を使用して、ノード100の電力消費を推定する。ノード100が閾限界を上回って(下回って)動作している場合、電力コントローラ170は電力消費を減少させる(または増加させる)。いくつかの実施形態では、電力コントローラ170は、クライアント110内のコンピューティングリソースのそれぞれについて各電力性能状態(P状態)を選択する。P状態は、動作電圧及び動作クロック周波数を少なくとも含む。各種の実施形態では、電力コントローラ170及びノード100は、N個のP状態をサポートする。ここでNは、ゼロ以外の正の整数である。
【0020】
各種の実施形態では、電力コントローラ170は、クライアント110のうちの1つ以上がいつアイドルになるかを検出する。クライアント110のそれぞれがアイドルになった場合、電力コントローラ170は、この情報をリンクインタフェース180を経由して1つ以上のノードに中継する。実施形態では、電力コントローラ170が情報を1つのリンク上で送信するか、それとも複数のリンク上で送信するかは、システム全体のパワーダウンのためのネゴシエーションが分散化されるか、それとも集中化されるかに基づく。例えば、各種の実施形態では、ノード100は、マルチノードシステム内の複数のノードのうちの1つのノードである。実施形態では、システムは、複数のサーバのうちのサーバである。場合によっては、複数のサーバに対するバッチとして送信されたジョブが各サーバに割り当てられない。所与のサーバは、相当の時間アイドルになり得る。電力消費を削減するために、サーバ内の複数のノードをパワーダウンすることができる。しかしながら、1つ以上のノードが互いに直接接続されていないため、パワーダウンのためのノード内の電力コントローラ間の通信は直送されない。システム全体のパワーダウンをネゴシエーションするための分散化アプローチ及び集中化アプローチのそれぞれが、以下の説明において提供される。
【0021】
図2を参照すると、一実施形態のマルチノードコンピューティングシステム200の概略ブロック図が示されている。例示された実施形態では、パッケージ210は、リンク240によって互いに直接接続されたノード220A及び220Bを含む。いくつかの実施形態では、パッケージ210及び230のそれぞれは、サーバ内のマルチソケットマザーボードのソケット内に配置されたマルチチップモジュール(MCM)である。図示されているように、ノード220Aは、クライアント222A~222C及び電力コントローラ224を含む。リンクインタフェース、通信ファブリック、メモリインタフェース、位相同期ループ(PLL)または他のクロック生成回路は、説明を容易にするために図示されていない。クライアント222A~222Cの例は、CPU、GPU、マルチメディアエンジン及びI/O周辺デバイスなどである。各種の実施形態では、電力コントローラ224は、(
図1の)電力コントローラ170の機能を有する。
【0022】
実施形態では、リンク240~246は、PCIe、InfiniBand、RapidIO及びHyperTransportなどの通信プロトコル接続を利用する。いくつかの実施形態では、コンピューティングシステム200は、リンク240~246に加えて、ノード220A~220Dの間の他のリンクを含む。実施形態では、これらの他のリンクは、サービス要求に対するデータ移送のために使用されるのに対し、リンク240~246は、システム全体のパワーダウンをネゴシエーションするためのメッセージなどのメッセージ送信のために使用される。
【0023】
各種の実施形態では、コンピューティングシステム200は、ノード220A~220Dのそれぞれが要求元である階層型トポロジを使用する。第1レベルにおけるリンクは、グループまたはクラスタ内のノード220A~220Dのサブセットを互いに直接接続するために使用される。例えば、ノード220Aは、第1レベルのリンク240を介してパッケージ210内のノード220Bに直接接続されている。同様に、ノード220Cは、第1レベルのリンク242を介してパッケージ230内のノード220Dに直接接続されている。第2レベルにおけるリンクは、第1のクラスタ内の第1のノードと第2のクラスタ内の第2のノードとを直接接続するために使用される。例えば、パッケージ210内のノード220Aは、第2レベルのリンク244を介してパッケージ230内のノード220Cに直接接続されている。しかしながら、ノード220Aは、パッケージ230内のノード220Dに直接接続されていない。同様に、パッケージ210内のノード220Bは、第2レベルのリンク246を介してパッケージ230内のノード220Dに直接接続されている。しかしながら、ノード220Bは、パッケージ230内のノード220Cに直接接続されていない。第2レベルのリンク244及び246は、第1レベルのリンク240及び242よりも階層のレベルが高い。
【0024】
電力管理のための分散化アプローチを使用すると、コンピューティングシステム200におけるシステム全体のパワーダウンのためのネゴシエーションは、パワーダウンのためのネゴシエーションが階層の高位レベルにおいて継続する前に階層の低位レベル内で行われる。例示された実施形態では、ノード220A~220Dのそれぞれは、2つのリンクを有する。例えば、ノード220Aは、リンク240及び244を有する。しかしながら、他の実施形態では、パッケージ内の別の数のノード及び別の数のリンクが使用される。
【0025】
実施形態では、ノード220Aの電力コントローラ224は、ノード220A~220Dの第1のサブセット内の各クライアントがアイドルであることを示す通知を第2レベルのリンク244上でノード220Cに送信することが可能である。ノード220Cは、ノード220Aに接続された任意の他のノードに接続されていない。ノードの第1のサブセットは、ノード220A及びノード220Bを含む。ノード220Aの電力コントローラ224は、この通知を、クライアント222A~222Cのそれぞれ1つがアイドルであると電力コントローラ224が判定し、かつ複数のノードの第1のサブセットよりも小さい第2のサブセット内の各クライアントがアイドルであるとの通知が第1レベルのリンク240上でノード220Bから受信されたときにノード220Cに送信する。この例では、第2のサブセットは、ノード220B内の各クライアントを含む。
【0026】
ノード220Aの電力コントローラ224は、ノード220Aが、その各リンク240及び244上で、所与のサブセット内の各クライアントがアイドルであるとの通知を受信し、かつ電力コントローラ224が、クライアント222A~222Cのそれぞれ1つがアイドルであると判定したとき、ノード220B及びノード220Cなどの直接接続された各隣接ノードに、パワーダウンのための要求を送信することができる。他のノード220B~220D内の電力コントローラは、パワーダウン要求を同様の方式で送信することが可能である。
【0027】
次に
図3を参照すると、マルチノードコンピューティングシステム用の電力管理を実行するための一実施形態の方法300が示されている。議論の都合上、この実施形態の(ならびに
図4~
図7及び
図9~
図12の)ステップは順番に示されている。しかしながら、説明される方法の各種の実施形態では、説明される要素のうちの1つ以上が、同時に実行されるか、示された順序とは異なる順序で実行されるか、または完全に省略されることに留意されたい。他の追加的な要素も必要に応じて実行される。本明細書で説明される各種のシステムまたは装置のいずれかが、方法300を実施するように構成される。
【0028】
2つ以上のノードが、この2つ以上のノードのそれぞれが第1レベルのリンクを使用して互いに完全に接続された状態でサブセット内に配置される(ブロック302)。2つ以上のサブセットは、ノード間で完全には接続されない方式で第2レベルのリンクを用いて接続される(ブロック304)。このような階層の例は、(
図2の)コンピューティングシステム200において提供されている。所与のサブセット内の各ノードは、第2レベルのリンクを経由して他の各サブセットに接続されているが、所与のサブセット内の各ノードは、別のサブセット内の他の各ノードには接続されていない。コンピューティングシステム200を参照すると、別のサブセットが追加された場合、パッケージ210内のノード220A及び220Bのそれぞれは、他のサブセット内のノードへの追加的な第2レベルのリンクを有する。同様の接続が、パッケージ230内のノード220C及び220Dに使用される。したがって、システム内の各ノードがシステム内の他の各ノードに完全には接続されていないため、マルチノードシステムのサイズが効率的にスケーリングされる。システム全体のパワーダウンは分散化される。複数のノードのいずれかが、システム全体のパワーダウンを開始することができる。システム全体のパワーダウンのためのネゴシエーションは、パワーダウンのためのネゴシエーションが第2レベルのリンク上で階層の高位レベルにおいて継続する前に、第1レベルのリンク上で階層の低位レベル内で行われる。
【0029】
複数のノードがタスクを処理する(ブロック306)。ノード内の1つ以上のクライアントは、コンピュータプログラム、すなわちソフトウェアアプリケーションを実行する。いくつかの実施形態では、複数のノードはマルチソケットサーバ内にあり、オペレーティングシステムによってバッチジョブが受信される。オペレーティングシステムは、複数のノードのうちの1つ以上にタスクを割り当てる。ノード内の電力コントローラは、第2レベルのリンク上の階層型通信に少なくとも基づいて各ノードがアイドルのクライアントを有するかどうかを判定する(ブロック308)。したがって、システム全体のパワーダウンは、システム内の完全に接続されたノードに依存せずに行われる。これにより、効率的にサイズをスケーリングすることが可能になる。加えて、電力管理のためのネゴシエーションは、システム全体のパワーダウンを実行する前にリンクのパワーダウンを回避する。これにより、その後のパワーアップの不利益が排除される。
【0030】
マルチノードシステム内の1つ以上のクライアントが非アイドルであると判定された場合(条件付きのブロック310の「no」分岐)、方法300の制御フローはブロック306に戻る。このブロックでは、1つ以上のクライアントが非アイドルである間、複数のノードを用いてタスクが処理される。コンピューティングシステム内の1つのノード以外の全てが単にアイドルのクライアントを有する場合でも、パワーダウン要求は生成されない。各ノード内の各クライアントがアイドルであると判定された場合(条件付きのブロック310の「yes」分岐)、各ノードの各リンク及び各クライアントがパワーダウンされる(ブロック312)。複数のノードが互いに接続されていないにも関わらず、システム全体のパワーダウンが行われる。各種の実施形態では、所与のノードをパワーダウンすることは、リンクインタフェース用のドライバを無効にすること、クライアント用のクロックを無効にすること、及びDRAMが使用されているときにセルフリフレッシュを実行するようにシステムメモリを設定することのうちの1つ以上を含む。
【0031】
次に
図4を参照すると、マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法400が示されている。方法300及び方法500~700と同様に、方法400のマルチノードコンピューティングシステムは、各ノードが要求元であり、システム全体のパワーダウンのためのネゴシエーションが分散化される階層型トポロジを使用する。例えば、システム全体のパワーダウンのためのネゴシエーションは、パワーダウンのためのネゴシエーションが第2レベルのリンク上で階層の高位レベルにおいて継続する前に、第1レベルのリンク上で階層の低位レベル内で行われる。システム全体のパワーダウンのためのネゴシエーションが分散化されつつ、複数のノードがタスクを処理する(ブロック402)。
【0032】
所与のノード上の1つ以上の非アイドルのクライアントが、1つ以上のタスクを処理する(ブロック404)。所与のノード内の各クライアントがアイドルになった場合(条件付きのブロック406の「yes」分岐)、所与のノード内の各クライアントがアイドルであることを示す通知が第1レベルの各リンク上で送信される(ブロック408)。隣接ノード内の各クライアントがアイドルであることを示す応答が第1レベルの各リンク上で受信された場合(条件付きのブロック410の「yes」分岐)、複数のノードのサブセット内の各クライアントがアイドルであることを示す通知が第2レベルの各リンク上で送信される(ブロック412)。したがって、応答を提供したノード内でアイドルであるとクライアントが認識されたときのみ、この場合の階層型通信が継続する。ブロック408~412のステップにより、システム全体のパワーダウンのネゴシエーションの、階層の次の高位レベルへの伝搬がゲーティングされる。
【0033】
次に
図5に目を向けると、マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法500が示されている。システム全体のパワーダウンのためのネゴシエーションが分散されつつ、複数のノードがタスクを処理する(ブロック502)。第2のノード内の各クライアントがアイドルであることを示す通知が、第1のノードの第1レベルのリンク上で受信される(ブロック504)。1つ以上のクライアントが第1のノード内で非アイドルである場合(条件付きのブロック506の「no」分岐)、第1のノードは、第1のノード内の1つ以上のクライアントが非アイドルであることを示す第1レベルのリンク上の通知によって第2のノードに応答する(ブロック508)。各クライアントが第1のノード内でアイドルである場合(条件付きのブロック506の「yes」分岐)、第1のノードは、第1のノード内の各クライアントがアイドルであることを示す第1レベルのリンク上の通知によって第2のノードに応答する(ブロック510)
【0034】
第2のノード内の各クライアントがアイドルであることを示すための所与の通知が第1のノード内で更新される(ブロック512)。第1のノード内または第1レベルのリンク上で第1のノードに接続された任意のノード内で1つ以上のクライアントが非アイドルである場合(条件付きのブロック514の「no」分岐)、方法500の制御フローはブロック516に移動し、このブロックで階層型通信を完了させる。
【0035】
第1のノード内及び第1レベルのリンク上で第1のノードに接続された任意のノード内で各クライアントがアイドルである場合(条件付きのブロック514の「yes」分岐)、複数のノードのサブセット内の各クライアントがアイドルであることを示す通知が第2レベルの各リンク上で送信される(ブロック518)。例えば、第1のノードと、第1レベルのリンクを用いて第1のノードに完全に接続された各ノードとは、複数のノードのサブセットである。一時的に
図2を参照すると、パッケージ210が、複数のノードのサブセットである。いくつかの実施形態では、ノード220A上のクライアント222A~222Cのそれぞれ1つがアイドルであることを示す第1レベルのリンク240上の通知をノード220Bが受信し、ノード220Bがノード220Aに応答するときに方法500が使用される。加えて、いくつかの実施形態では、ノード220A及びノード220Bのそれぞれが非アイドルのクライアントを全く有していないとノード220Bが判定したとき、ノード220Bは、ノード220Dに通知を送信する。さらに、実施形態では、ノード220B上の各クライアントがアイドルであることを示す第1レベルのリンク240上の通知をノード220Aが受信し、ノード220Aが、ノード220Bに応答し、条件付きで通知をノード220Cに送信するときに方法500が使用される。
【0036】
次に
図6を参照すると、マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法600が示されている。システム全体のパワーダウンのためのネゴシエーションが分散化されつつ、複数のノードがタスクを処理する(ブロック602)。複数のノードのサブセット内の各クライアントがアイドルであることを示す通知が、第1のノードの第2レベルのリンク上で受信される(ブロック604)。例えば、サブセットは、第1レベルのリンクを用いて互いに完全に接続された一群のノードである。ノード220A及び220Bを備えた(
図2の)パッケージ210は、サブセットの一例であり、ノード220Cは、第2レベルのリンク244上で通知を受信する。
【0037】
1つ以上のクライアントが第1のノード内で非アイドルである場合(条件付きのブロック606の「no」分岐)、第1のノードは、複数のノード内の1つ以上のクライアントが非アイドルであることを示す第2レベルのリンク上の通知によって応答する(ブロック608)。各クライアントが第1のノード内でアイドルである場合(条件付きのブロック606の「yes」分岐)、第1のノードの第1レベルの各リンクについて、複数のノードのサブセット内の1つ以上のクライアントが非アイドルであることを示す通知が第1のノードによって受信されたかどうかが判定される(ブロック610)。第1のノードの任意の第1レベルのリンクがこのような通知を受信した場合(条件付きのブロック612の「yes」分岐)、方法600の制御フローはブロック608に移る。このブロックで第1のノードは、複数のノード内の1つ以上のクライアントが非アイドルであることを示す第2レベルのリンク上の通知によって応答する。第1のノードの第1レベルのリンクがいずれもこのような通知を受信しなかった場合(条件付きのブロック612の「no」分岐)、第1のノードは、複数のノードのサブセット内の各クライアントがアイドルであることを示す第2レベルのリンク上の通知によって応答する(ブロック614)。
【0038】
一時的に
図2を参照すると、パッケージ230が、複数のノードのサブセットである。いくつかの実施形態では、パッケージ210などのサブセット内の各クライアントがアイドルであることを示す通知をノード220Cが第2レベルのリンク244上で受信するときに方法600が使用される。ノード220Cは、ノード220Cのクライアントがアイドルであるかどうかと、第1レベルのリンク242上でノード220Dから受信した通知とに基づき、第2レベルのリンク244上でノード220Aに応答する。
【0039】
次に
図7を参照すると、マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法700が示されている。システム全体のパワーダウンのためのネゴシエーションは分散化される。各ローカルクライアントがアイドルになって応答を待っていると判定したことに少なくとも基づいてアイドルの所与のノードが各リンク(第1レベル及び第2レベル)上で通知を送信した後、複数のノードを用いてタスクが処理される(ブロック702)。各種の実施形態では、所与のノードは、第2レベルのリンク上でノードに連絡する前に、第1レベルのリンク上で最初にノードに連絡した。各リンクについて、複数のノード内の1つ以上のクライアントが非アイドルであることを示す通知が受信されたかどうかが判定される(ブロック704)。
【0040】
所与のノードの任意のリンク(第1レベルまたは第2レベル)がこのような通知を受信した場合(条件付きのブロック706の「yes」分岐)、複数のノードは、ウェイクアップ条件が発生したかどうかを監視しつつ、継続してタスクを処理し、隣接ノードからのリンクの更新に継続して応答する(ブロック708)。ウェイクアップ条件の例には、割り当て済みのタスクをオペレーティングシステムから受信すること、及び1つ以上の非アイドルのクライアントを有する別のノードからローカルキャッシュプローブを求めるリモート要求またはシステムメモリ内のローカルデータを求めるリモートメモリ要求を受信することなどのうちの1つ以上がある。所与のノードのリンク(第1レベルまたは第2レベル)がいずれも応答においてこのような通知を受信しなかった場合(条件付きのブロック706の「no」分岐)、パワーダウンのために所与のノードの各リンク上で要求が送信される(ブロック710)。
【0041】
パワーダウンに対して各リンク上で応答が受信されなかった場合(条件付きのブロック712の「no」分岐)、パワーダウンに対する応答を受信した任意のリンクがパワーダウンされる(ブロック714)。その後、方法700の制御フローは、複数のノードが継続してタスクを処理するブロック708に移る。パワーダウンに対して各リンク上で応答が受信された場合(条件付きのブロック712の「yes」分岐)、所与のノードの各リンク及び各クライアントはパワーダウンされる(ブロック714)。他のノードも、これらのステップを実行する。複数のノードが互いに接続されていないにも関わらず、システム全体のパワーダウンが行われる。各種の実施形態では、所与のノードをパワーダウンすることは、リンクインタフェース用のドライバを無効にすること、クライアント用のクロックを無効にすること、DRAMが使用されているときにセルフリフレッシュを実行するようにシステムメモリを設定すること、電力コントローラ以外のノード内の各構成要素用の(クライアント用だけではない)クロックを無効にすること、メモリコントローラ、通信ファブリック、メモリ及び入出力(I/O)ドライバ、ネットワークインタフェース用のクロックを無効にすることに加えてパワーダウンのための他のステップを実行すること、ならびに保持電圧を選択することのうちの1つ以上を含む。
【0042】
各種の実施形態では、所与のノードが所与のリンク上でパワーダウン要求を受信したとき、所与のノードは、そのクライアントのそれぞれがアイドルであるかどうかを判定する。クライアントのそれぞれがアイドルである場合、所与のノードは、パワーダウンを指示する応答によって所与のリンク上で応答する。その後、所与のノードは所与のリンクをパワーダウンする。加えて、所与のノードは、もしあれば、所与のノードの他の各リンク上でパワーダウン要求を送信する。所与のノードがこれらの他のリンクのうちの特定のリンク上でパワーダウン応答を受信した場合、所与のノードは、この特定のリンクをパワーダウンする。所与のノードの各リンクがパワーダウン要求とパワーダウン応答との両方を転送した場合、所与のノードは各リンクをパワーダウンする。各リンクが所与のノードにおいてパワーダウンされたとき、所与のノードは、各クライアントのパワーダウンを続行する。いくつかの実施形態では、所与のノードが、そのクライアントのうちの少なくとも1つが非アイドルであると判定したとき、所与のノードは、所与のノードがパワーダウンする予定ではないとの通知によって所与のリンク上でパワーダウン要求に応答する。加えて、実施形態では、所与のノードは、何らのパワーダウン要求も他のリンク上で送信しない。
【0043】
図8を参照すると、別の実施形態のマルチノードコンピューティングシステム800の概略ブロック図が示されている。例示された実施形態では、ノード810Aはコンピューティングシステム800のルートノード(マスタノード)であるのに対し、ノード810G及びノード810Hのそれぞれはリーフノードである。ノード810B~810Fのそれぞれは、ルートノード810Aとリーフノード810G~810Hとの間の中間ノードである。したがって、リングデータ通信トポロジが使用される。しかしながら、システム全体の、階層型通信の電力管理をサポートするために、ツリー階層型トポロジがリングトポロジ内で使用される。システム全体のパワーダウンのためのネゴシエーションは集中化され、これはコンピューティングシステム800内のルートノード810Aによって実行される。パワーアップのためのネゴシエーションは分散化されたままであり、これはシステム内のノードのいずれかによって開始される。図示されていないが、ノード810A~810Hのそれぞれは、1つ以上のクライアント、電力コントローラ、リンクインタフェース、通信ファブリック、メモリインタフェース、及び位相同期ループ(PLL)または他のクロック生成回路などを含む。クライアントの例は、CPU、GPU、マルチメディアエンジン及びI/O周辺デバイスなどである。各種の実施形態では、電力コントローラは、(
図1の)電力コントローラ170の機能を有する。
【0044】
実施形態では、リンク820~834は、PCIe、InfiniBand、RapidIO及びHyperTransportなどの通信プロトコル接続を利用する。いくつかの実施形態では、コンピューティングシステム800は、リンク820~834に加えて、ノード810A~810Hの間の他のリンクを含む。これらの他のリンク(図示せず)はデータ通信のために使用されるのに対し、リンク820~834は電力管理メッセージ送信のために使用される。したがって、実施形態では、これらの他のリンクは、サービス要求に対するデータ移送のために使用されるのに対し、リンク820~834は、システム全体のパワーダウンをネゴシエーションするためのメッセージなどのメッセージ送信のために使用される。図示されているように、中間ノード810B~810Fのそれぞれ1つは、単一の上流ノードに直接接続されており、かつ単一の下流ノードに直接接続されている。上流方向はルート方向とも呼ばれるのに対し、下流方向はリーフ方向とも呼ばれる。上流方向及び下流方向のそれぞれは、サービス要求に使用されるデータ通信ではなく、電力管理メッセージ送信に関連する。リーフノードのそれぞれは、追加的にリンク828を使用する。このリンクは、上流端及び下流端ではなく、各終端上で同一のレベルを有する。実施形態では、同一のレベルは、電力管理制御ロジックによって下流レベルとして扱われる。
【0045】
次に
図9を参照すると、マルチノードコンピューティングシステム用の電力管理を実行するための一実施形態の方法900が示されている。各種の実施形態では、マルチノードコンピューティングシステムは、電力管理の目的でツリー階層型トポロジ内の複数のノードを接続する。このトポロジは、単一のルートノード(マスタノード)、1つ以上のリーフノード、及びルートノードと1つ以上のリーフノードとの間の1つ以上の中間ノードを含む(ブロック902)。いくつかの実施形態では、マルチノードコンピューティングシステムは、サービス要求に使用されるデータ通信のためにリングトポロジを使用し、ツリートポロジは、電力管理メッセージ送信のために使用される。実施形態では、各中間ノードは、上流方向のノードに直接接続されており、かつ下流方向のノードに直接接続されている。換言すれば、システム全体のパワーダウンのためのネゴシエーションは集中化されるのに対し、システム全体のパワーアップは分散化されたままである。しかしながら、性能を高めるためにソケットの数を増加させるといった、システムのスケーリングは、ノードが完全には接続されていないためにより効率的になる。加えて、ノードが完全には接続されていないときに接続をルーティングすることにより、より少ない量の信号がソケット間で使用され、インタフェースのための領域が減少する。したがって、システム全体のパワーダウンは、システム内の完全に接続されたノードに依存せずに行われる。これにより、効率的にサイズをスケーリングすることが可能になる。加えて、電力管理のためのネゴシエーションは、システム全体のパワーダウンを実行する前にリンクのパワーダウンを回避する。これにより、その後のパワーアップの不利益が排除される。
【0046】
複数のノードがタスクを処理する(ブロック904)。ノード内の1つ以上のクライアントは、コンピュータプログラム、すなわちソフトウェアアプリケーションを実行する。いくつかの実施形態では、複数のノードはマルチソケットサーバ内にあり、オペレーティングシステムによってバッチジョブが受信される。オペレーティングシステムは、複数のノードのうちの1つ以上にタスクを割り当てる。ルートノードのリンク上の階層型通信に少なくとも基づき、各ノードがアイドルのクライアントを有するかどうかが判定される(ブロック906)。
【0047】
マルチノードシステム内の1つ以上のクライアントが非アイドルであると判定された場合(条件付きのブロック908の「no」分岐)、方法900の制御フローはブロック904に戻る。このブロックでは、1つ以上のクライアントが非アイドルである間、複数のノードを用いてタスクが処理される。コンピューティングシステム内の1つのノード以外の全てが単にアイドルのクライアントを有する場合でも、パワーダウン要求は生成されない。各ノード内の各クライアントがアイドルであると判定された場合(条件付きのブロック908の「yes」分岐)、各ノードの各リンク及び各クライアントがパワーダウンされる(ブロック910)。複数のノードが互いに接続されていないにも関わらず、システム全体のパワーダウンが行われる。各種の実施形態では、所与のノードをパワーダウンすることは、リンクインタフェース用のドライバを無効にすること、クライアント用のクロックを無効にすること、及びDRAMが使用されているときにセルフリフレッシュを実行するようにシステムメモリを設定することのうちの1つ以上を含む。
【0048】
次に
図10を参照すると、マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法1000が示されている。方法900及び方法1100~1200と同様に、方法1000のマルチノードコンピューティングシステムは、ツリー階層型トポロジを使用する。このトポロジは、単一のルートノード(マスタノード)、1つ以上のリーフノード、及びルートノードと1つ以上のリーフノードとの間の1つ以上の中間ノードを含む。各中間ノードは、上流方向のノードに直接接続されており、かつ下流方向のノードに直接接続されている。換言すれば、システム全体のパワーダウンのためのネゴシエーションは集中化されるのに対し、システム全体のパワーアップは分散化されたままである。
【0049】
複数のノードがタスクを処理する(ブロック1002)。ノード内の1つ以上のクライアントは、コンピュータプログラム、すなわちソフトウェアアプリケーションを実行する。いくつかの実施形態では、複数のノードはマルチソケットサーバ内にあり、オペレーティングシステムによってバッチジョブが受信される。オペレーティングシステムは、複数のノードのうちの1つ以上にタスクを割り当てる。非ルートの所与のノード上の1つ以上の非アイドルのクライアントが、1つ以上のタスクを処理する(ブロック1004)。所与のノード内の各クライアントがアイドルになった場合(条件付きのブロック1006の「yes」分岐)、所与のノード内の各クライアントがアイドルであることを示す通知が下りリンク上で送信される(ブロック1008)。複数のノードのサブセット内の各クライアントがアイドルであることを示す応答が所与のノードの下りリンク上で受信された場合(条件付きのブロック1010の「yes」分岐)、複数のノードのサブセット内の各クライアントがアイドルであることを示す通知が上りリンク上で送信される(ブロック1012)。したがって、応答を提供したノード内でアイドルであるとクライアントが認識されたときのみ、この場合の階層型通信が継続する。ブロック1008~1012のステップにより、システム全体のパワーダウンのネゴシエーションの、階層の次の高位レベルへの伝搬がゲーティングされる。
【0050】
次に
図11に目を向けると、マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法1100が示されている。複数のノードがタスクを処理する(ブロック1102)。複数のノードのサブセット内の各クライアントがアイドルであることを示す通知が、非リーフ及び非ルートの所与のノードの下りリンク上で受信される(ブロック1104)。例えば、サブセットは、所与のノードから下流に各ノードを含む。所与のノードの1つ以上のクライアントが非アイドルである場合(条件付きのブロック1106の「no」分岐)、実施形態では、所与のノードは、所与のノード内の1つ以上のクライアントが非アイドルであることを示す下りリンク上の通知によって応答する(ブロック1108)。所与のノード内で各クライアントがアイドルである場合(条件付きのブロック1106の「yes」分岐)、実施形態では、所与のノードは、所与のノード内の各クライアントがアイドルであることを示す下りリンク上の通知によって応答する(ブロック1110)。
【0051】
複数のノードのサブセット内の各クライアントがアイドルであることを示すための所与の通知が所与のノード内で更新される(ブロック1112)。サブセットは、所与のノードからリーフノードへの下流に各ノードを含む。所与のノード内または所与のノードから下流の任意のノード内で1つ以上のクライアントが非アイドルである場合(条件付きのブロック1114の「no」分岐)、方法1100の制御フローはブロック1116に移動し、このブロックで階層型通信を完了させる。所与のノード及び所与のノードから下流の任意のノード内で各クライアントがアイドルである場合(条件付きのブロック1114の「yes」分岐)、複数のノードのサブセット内の各クライアントがアイドルであることを示す通知が上りリンク上で送信される(ブロック1118)。サブセットは、所与のノードと、所与のノードから下流の各ノードとを含む。
【0052】
次に
図12を参照すると、マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法1200が示されている。複数のノードは、ルートノードの各クライアントがアイドルである間、タスクを処理する(ブロック1202)。各下りリンクについて、複数のノード内の1つ以上のクライアントが非アイドルであることを示す通知が受信されたかどうかが判定される(ブロック1204)。ルートノードの任意の下りリンクがこのような通知を受信した場合(条件付きのブロック1206の「yes」分岐)、複数のノードは、ウェイクアップ条件が発生したかどうかを監視しつつ、継続してタスクを処理し、隣接ノードからのリンクの更新に継続して応答する(ブロック1208)。
【0053】
ルートノードの下りリンクがいずれも応答においてこのような通知を受信しなかった場合(条件付きのブロック1206の「no」分岐)、パワーダウンするために所与のノードの各下りリンク上で要求が送信される(ブロック1210)。パワーダウンに対してルートノードの各下りリンク上で応答が受信されなかった場合(条件付きのブロック1212の「no」分岐)、パワーダウンに対する応答を受信した任意の下りリンクがパワーダウンされる(ブロック1214)。その後、方法1200の制御フローは、複数のノードが継続してタスクを処理するブロック1208に移る。パワーダウンに対してルートノードの各下りリンク上で応答が受信された場合(条件付きのブロック1212の「yes」分岐)、ルートノードの各リンク及び各クライアントはパワーダウンされる(ブロック1214)。他のノードも、これらのステップを実行する。複数のノードが互いに接続されていないにも関わらず、システム全体のパワーダウンが行われる。各種の実施形態では、所与のノードをパワーダウンすることは、リンクインタフェース用のドライバを無効にすること、クライアント用のクロックを無効にすること、及びDRAMが使用されているときにセルフリフレッシュを実行するようにシステムメモリを設定することのうちの1つ以上を含む。
【0054】
分散化アプローチにおけるノードと同様に、各種の実施形態では、集中化アプローチにおける所与のノードが上りリンク上でパワーダウン要求を受信したとき、所与のノードは、そのクライアントのそれぞれがアイドルであるかどうかを判定する。クライアントのそれぞれがアイドルである場合、所与のノードは、パワーダウンを指示する応答によって上りリンク上で応答する。その後、所与のノードは上りリンクをパワーダウンする。加えて、所与のノードは、所与のノードの下りリンク上でパワーダウン要求を送信する。所与のノードが下りリンク上でパワーダウン応答を受信した場合、所与のノードは下りリンクをパワーダウンする。所与のノードの上りリンク及び下りリンクのそれぞれがパワーダウン要求とパワーダウン応答との両方を転送した場合、所与のノードは各リンクをパワーダウンする。各リンクが所与のノード内でパワーダウンされたとき、所与のノードは、各クライアントのパワーダウンを続行する。いくつかの実施形態では、所与のノードが、そのクライアントのうちの少なくとも1つが非アイドルであると判定したとき、所与のノードは、所与のノードがパワーダウンする予定ではないとの通知によって上りリンク上でパワーダウン要求に応答する。加えて、実施形態では、所与のノードは、いずれのパワーダウン要求も下りリンク上で送信しない。
【0055】
各種の実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、先に説明した方法及び/または機構を実施する。プログラム命令は、Cなどの高水準プログラミング言語でハードウェアの挙動を記述する。あるいは、Verilogなどのハードウェア設計言語(HDL)が使用される。プログラム命令は、非一時的コンピュータ可読記憶媒体上に記憶される。複数の種類の記憶媒体が利用可能である。記憶媒体は、プログラム命令及び付随するデータをコンピューティングシステムに提供してプログラムを実行するために、使用中にコンピューティングシステムによるアクセスが可能である。コンピューティングシステムは、1つ以上のメモリ、及びプログラム命令を実行する1つ以上のプロセッサを備える。
【0056】
上記で説明された実施形態は、実装態様の非限定的な例に過ぎないことが強調されるべきである。上記の開示が一旦完全に理解されると、多くの変形及び修正が当業者にとって明らかになるであろう。以下の特許請求の範囲は、全てのそのような変形及び修正を包含すると解釈されることが意図される。