(57)【要約】マルチノードコンピューティングシステム用の効率的な電力管理を実行するためのシステム、装置及び方法が開示される。コンピューティングシステムは複数のノードを含む。パワーダウンのネゴシエーションが分散化されたとき、パワーダウンのためのネゴシエーションがノード階層の高位レベルにおいて発生する前に、システム全体のパワーダウンのためのネゴシエーションがノード階層の低位レベル内で行われる。パワーダウンのネゴシエーションが集中化されたとき、所与のノードは、そのクライアントの状態と、その下りリンク上で受信された通知とを組み合わせ、その組み合わせに基づいて上りリンク上で通知を送信する。ルートノードのみがパワーダウン要求を送信する。【選択図】図３
2021509240.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードであって、それぞれが、
アプリケーションを処理するように構成された１つ以上のクライアントと、
前記複数のノードのうちの１つ以上の他のノードに結合された複数のリンクであって、前記複数のノードのうちの２つ以上が完全には接続されていない、前記複数のリンクと、
電力コントローラと、を含む、複数のノードを備え、
前記複数のノード内の各クライアントがアイドルであると前記複数のノードのうちの第１のノードが判定したことに応答して、前記複数のノードの各ノードが、前記複数のリンク及び前記１つ以上のクライアントをパワーダウンするように構成される、コンピューティングシステム。
【請求項２】
前記複数のノードのうちの第２のノードの前記電力コントローラが、前記複数のノードの第１のサブセット内の各クライアントがアイドルであることを示す通知を前記複数のノードのうちの第３のノードに送信するように構成され、前記第３のノードが、前記第２のノードに接続された任意の他のノードに接続されていない、請求項１に記載のコンピューティングシステム。
【請求項３】
前記第２のノードの前記電力コントローラが、
前記第２のノード内の前記１つ以上のクライアントの各クライアントがアイドルであると判定したことと、
前記複数のノードの前記第１のサブセットよりも小さい第２のサブセット内の各クライアントがアイドルであることを示す通知を第４のノードから受信したことと、
に応答して、前記通知を送信するように構成される、請求項２に記載のコンピューティングシステム。
【請求項４】
前記複数のノードの所与のサブセット内の各クライアントがアイドルであるとの通知を前記第１のノードの各リンク上で受信したことに応答して、前記第１のノードの前記電力コントローラが、直接接続された各隣接ノードにパワーダウンのための要求を送信するように構成される、請求項２に記載のコンピューティングシステム。
【請求項５】
前記第２のノードと前記第４のノードとが、前記複数のノードのうちのノードの同一のサブセット内にあり、前記サブセット内の各ノードが所与の第１レベルのリンクを用いて互いに完全に接続されており、
前記第２のノードと前記第３のノードとが、ノードの別個のサブセット内にあり、第２レベルのリンクを用いて接続されており、別個のサブセット内のノードが互いに完全には接続されていない、請求項２に記載のコンピューティングシステム。
【請求項６】
前記第２のノードの前記電力コントローラが、前記第２のノードの各リンク上でパワーダウン要求及びパワーダウン応答を転送したことに応答して前記第２のノードの各リンク及び各クライアントをパワーダウンするように構成される、請求項５に記載のコンピューティングシステム。
【請求項７】
前記第２のノード内の各クライアントがアイドルであると判定したことに応答して、前記第２のノードの前記電力コントローラが、
前記第２のノード内の各クライアントがアイドルであることを示す通知を第１レベルのリンク上で前記第４のノードに送信することと、
前記複数のノード内の少なくとも１つのクライアントが非アイドルであることを示す通知を第２レベルのリンク上で前記第３のノードに送信することと、
を行うように構成される、請求項５に記載のコンピューティングシステム。
【請求項８】
前記第４のノード上の各クライアントがアイドルであることを示す通知を前記第１レベルのリンク上で受信したことに応答して、前記第２のノードの前記電力コントローラが、前記複数のノードの前記第１のサブセット内の各クライアントがアイドルであることを示す通知を前記第２レベルのリンク上で送信するように構成される、請求項７に記載のコンピューティングシステム。
【請求項９】
前記複数のノードがツリー階層で接続されており、リーフノードからルートノードへの上流方向のリンク上でメッセージが移動し、前記ルートノードから前記リーフノードへの下流方向のリンク上でメッセージが移動し、
前記第１のノードが前記ツリー階層のルートノードである、請求項２に記載のコンピューティングシステム。
【請求項１０】
前記第２のノードの前記電力コントローラが、前記複数のノードをパワーダウンするための要求を、
前記第２のノード内の各クライアントがアイドルであると判定したことと、
前記複数のノードをパワーダウンするように指定する通知を前記上りリンク上で受信したことと、
に応答して、前記下りリンク上で送信するように構成される、請求項９に記載のコンピューティングシステム。
【請求項１１】
前記第２のノードの前記電力コントローラが、前記複数のノード内の少なくとも１つのクライアントがアイドルであることを示す通知を、
前記所与のノードの前記電力コントローラが、論理的に切断されたリンク状態を上りリンク上で送信したことと、
前記電力コントローラが、任意の通知を先行して下りリンク上で送信したことと、
前記所与のノードが前記複数のノードのツリー階層の中間レベルにあることと、
に応答して、前記上りリンク上で送信するように構成される、請求項１に記載のコンピューティングシステム。
【請求項１２】
前記所与のノードの前記電力コントローラが、前記複数のノード内の少なくとも１つのクライアントが非アイドルであることを示す通知を、
前記第２のノード内の少なくとも１つのクライアントが非アイドルになったと判定したことと、
前記複数のノード内の少なくとも１つのクライアントが非アイドルであることを示す通知を前記下りリンク上で受信したことと、
のうちの１つ以上に応答して、上りリンク上で送信するように構成される、請求項１に記載のコンピューティングシステム。
【請求項１３】
複数のノードによってアプリケーションを処理することであって、各ノードが、
前記アプリケーションを処理するように構成された１つ以上のクライアントと、
前記複数のノードのうちの１つ以上の他のノードに結合された複数のリンクであって、前記複数のノードのうちの２つ以上が完全には接続されていない、前記複数のリンクと、
電力コントローラと、を含む、処理することと、
前記複数のノード内の各クライアントがアイドルであると前記複数のノードのうちの第１のノードが判定したことに応答して、前記複数のノードの各ノードにより、前記複数のリンク及び前記１つ以上のクライアントをパワーダウンすることと、
を含む方法。
【請求項１４】
前記複数のノードのうちの第２のノードの前記電力コントローラにより、前記複数のノードの第１のサブセット内の各クライアントがアイドルであることを示す通知を前記複数のノードのうちの第３のノードに送信することであって、前記第３のノードが、前記第２のノードに接続された任意の他のノードに接続されていない、送信することをさらに含む、請求項１３に記載の方法。
【請求項１５】
前記第２のノードの前記電力コントローラにより、前記通知を、
前記第２のノード内の前記１つ以上のクライアントの各クライアントがアイドルであると判定したことと、
前記複数のノードの前記第１のサブセットよりも小さい第２のサブセット内の各クライアントがアイドルであることを示す通知を第４のノードから受信したことと、
に応答して送信することをさらに含む、請求項１４に記載の方法。
【請求項１６】
前記複数のノードの所与のサブセット内の各クライアントがアイドルであるとの通知を前記第１のノードの各リンク上で受信したことに応答して、前記方法が、前記第１のノードの前記電力コントローラにより、直接接続された各隣接ノードにパワーダウンのための要求を送信することをさらに含む、請求項１４に記載の方法。
【請求項１７】
アプリケーションを処理するように構成された１つ以上のクライアントと、
複数のノードのうちの１つ以上の他のノードに結合された複数のリンクであって、前記複数のノードのうちの２つ以上が完全には接続されていない、前記複数のリンクと、
電力コントローラと、を含む処理ノードであって、
前記電力コントローラが、前記複数のノード内の各クライアントがアイドルであると前記複数のノードのうちの外部の第１のノードが判定したことに応答して、前記複数のリンク及び前記１つ以上のクライアントをパワーダウンするように構成される、処理ノード。
【請求項１８】
前記電力コントローラが、前記複数のノードの第１のサブセット内の各クライアントがアイドルであることを示す通知を前記複数のノードのうちの第３のノードに送信するように構成され、前記第３のノードが、前記処理ノードに接続された任意の他のノードに接続されていない、請求項１７に記載の処理ノード。
【請求項１９】
前記電力コントローラが、前記通知を、
前記１つ以上のクライアントの各クライアントがアイドルであると判定したことと、
前記複数のノードの前記第１のサブセットよりも小さい第２のサブセット内の各クライアントがアイドルであることを示す通知を外部の第４のノードから受信したことと、
に応答して送信するように構成される、請求項１８に記載の処理ノード。
【請求項２０】
前記電力コントローラが、各リンク上でパワーダウン要求及びパワーダウン応答を転送したことに応答して各リンク及び各クライアントをパワーダウンするように構成される、請求項１８に記載の処理ノード。
【発明の詳細な説明】
【背景技術】
【０００１】
関連技術の説明
今日の集積回路（ＩＣ）の電力消費により、半導体チップの各世代で設計上の問題がますます大きくなってきた。電力消費が増加するにつれて、より大きいファンやヒートシンクなどのより高コストの冷却システムを利用して、余分な熱を排除し、ＩＣの故障を防ぐようにしなければならない。しかしながら、冷却システムによってシステムコストが増加する。ＩＣの電力損失制約は、携帯用コンピュータ及び移動通信デバイスにとって問題であるだけでなく、高性能マイクロプロセッサを利用したデスクトップコンピュータ及びサーバにとっても問題である。これらのマイクロプロセッサは、複数のプロセッサコア、すなわちコア、及びコア内の複数のパイプラインを含む。
【０００２】
様々なサーバなどの様々なコンピューティングデバイスは、ヘテロジニアス集積を利用する。ヘテロジニアス集積は、システムの機能を提供するために複数の種類のＩＣを集積する。複数の機能には、オーディオ／ビデオ（Ａ／Ｖ）データ処理、医療分野及び商業分野のための他の高データ並列アプリケーション、汎用命令セットアーキテクチャ（ＩＳＡ）の処理命令、ならびにデジタル、アナログ、混合信号及び無線周波数（ＲＦ）機能などが含まれる。複数の種類のＩＣを集積するためにシステムパッケージングにとって様々な選択肢が存在する。あるコンピューティングデバイスでは、システムオンチップ（ＳＯＣ）が使用されるのに対し、他のコンピューティングデバイスでは、より小さく、かつより高い歩留まりのチップが、マルチチップモジュール（ＭＣＭ）内の大型チップとしてパッケージングされる。一部のコンピューティングデバイスは、システムインパッケージ（ＳｉＰ）内の２つ以上のダイを垂直にスタックし、電気的に接続するためにダイスタッキング技術、ならびにシリコンインタポーザ、スルーシリコンビア（ＴＳＶ）及び他の機構を利用した３次元集積回路（３Ｄ  ＩＣ）を含む。
【０００３】
システムパッケージングのための選択肢に関係なく、選択されたパッケージの複製をそれぞれが有する複数のソケットを備えたコンピューティングシステムをパワーダウンすることは困難である。各パッケージは電力コントローラを含み、したがって、システムは複数の電力コントローラを有する。各電力コントローラがシステム内の他の各電力コントローラに接続されている場合、システムをパワーダウンするときを通信することがより容易になる。しかしながら、性能を高めるためにソケットの数を増加させるといった、システムのスケーリングが難しくなる。加えて、複数の接続をルーティングすることにより、ソケット間で信号の量が増加し、インタフェース用の領域が増加する。
【０００４】
上記を考慮して、マルチノードコンピューティングシステム用の効率的な電力管理を実行するための効率的な方法及びシステムが必要である。
【０００５】
本明細書で説明される方法及び機構の利点は、添付の図面と併せて以下の説明を参照することによってより良く理解され得る。
【図面の簡単な説明】
【０００６】
【図１】一実施形態の処理ノードのブロック図である。
【図２】一実施形態のマルチノードコンピューティングシステムのブロック図である。
【図３】マルチノードコンピューティングシステム用の電力管理を実行するための一実施形態の方法のフロー図である。
【図４】マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法のフロー図である。
【図５】マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法のフロー図である。
【図６】マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法のフロー図である。
【図７】マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法のフロー図である。
【図８】別の実施形態のマルチノードコンピューティングシステムのブロック図である。
【図９】マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法のフロー図である。
【図１０】マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法のフロー図である。
【図１１】マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法のフロー図である。
【図１２】マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法のフロー図である。
【０００７】
本発明は、様々な修正及び代替形態を受け入れるが、具体的な実施形態を図面中の例として示し、本明細書で詳細に説明する。しかしながら、図面及びそれに対する詳細な説明は、開示された特定の形態に本発明を限定することを意図するものではないが、別の見方をすれば、本発明は、添付された特許請求の範囲によって定められるような本発明の範囲内に収まる全ての修正、均等物及び代替物を網羅しようとするものであることが理解されるべきである。
【発明を実施するための形態】
【０００８】
以下の説明では、本明細書に提示する方法及び機構の完全な理解を提供するために、多くの具体的な詳細が述べられている。しかしながら、当業者は、それらの特定の詳細なしに様々な実施形態を実施することができることを認識するべきである。いくつかの例では、本明細書で説明されるアプローチを曖昧にすることを回避するために、公知の構造、コンポーネント、信号、コンピュータプログラム命令、及び技術が詳細には示されていない。例示の簡潔性及び明確さのために、図に示される要素は、必ずしも縮尺通りに描かれていないことが認識されよう。例えば、一部の要素の寸法が他の要素に比べて誇張されている場合がある。
【０００９】
マルチノードコンピューティングシステム用の効率的な電力管理を実行するための各種のシステム、装置、方法及びコンピュータ可読媒体が開示される。各種の実施形態では、処理ノードは、処理アプリケーション用の１つ以上のクライアントを含む。ノード内のクライアントの例は、汎用中央処理ユニット（ＣＰＵ）、グラフィックス処理ユニット（ＧＰＵ）、アクセラレーテッド処理ユニット（ＡＰＵ）及び入出力（Ｉ／Ｏ）デバイスなどを含む。処理ノードはまた、電力コントローラ、及び他のノードに対してメッセージを転送するための複数のリンクインタフェースを少なくとも含む。本明細書で使用される場合、処理ノードはノードとも呼ばれる。
【００１０】
各種の実施形態では、コンピューティングシステムは、他のノードに完全には接続されていない２つ以上のノードを備えたマルチノードシステムである。各ノードは、１つ以上のクライアント、複数のリンクインタフェース及び電力コントローラを含む。これらのノードが完全には接続されていないにも関わらず、各ノードは、そのリンク及びクライアントを、マルチノードシステム内の各クライアントがアイドルであると第１のノードが判定したときにパワーダウンすることが可能である。実施形態では、マルチノードコンピューティングシステムは、各ノードが要求元である階層型トポロジを使用する。システム全体のパワーダウンのためのネゴシエーションは分散化される。各ノードは、階層の低いレベルまたは第１レベルにおいて１つ以上のリンクを有する。第１レベルにおけるリンクは、グループ内のノードのサブセットを互いに直接接続するために使用される。加えて、１つ以上のノードは、階層のより高いレベルまたは第２レベルにおいて１つ以上のリンクを有する。第２レベルにおけるリンクは、第１のグループ内の第１のノードと第２のグループ内の第２のノードとを直接接続するために使用される。システム全体のパワーダウンが分散化されたとき、複数のノードのうちのいずれかを、システム全体のパワーダウンを開始する第１のノードとすることができる。電力管理のための分散化アプローチを使用すると、パワーダウンのためのネゴシエーションが階層の高位レベルにおいて継続する前に、システム全体のパワーダウンのためのネゴシエーションが階層の低位レベル内で行われる。
【００１１】
他の実施形態では、マルチノードコンピューティングシステムは、１つ以上のリーフノード、単一のルートノード、及びルートノードと１つ以上のリーフノードとの間の１つ以上の中間ノードを備えたツリー階層を含む。各中間ノードは、上流のノードに直接接続されており、かつ下流のノードに直接接続されている。上流方向はルート方向とも呼ばれるのに対し、下流方向はリーフ方向とも呼ばれる。システム全体のパワーダウンのためのネゴシエーションは集中化され、これはルートノードによって実行される。パワーアップのためのネゴシエーションは分散化されたままであり、これはシステム内のノードのいずれかによって開始される。各種の実施形態では、分散化アプローチ及び集中化アプローチのそれぞれは、システム全体のパワーダウンを実行する前にリンクのパワーダウンを回避する電力管理のためのネゴシエーションを実行する。これにより、その後のパワーアップの不利益が排除される。
【００１２】
図１を参照すると、一実施形態の処理ノード１００の概略ブロック図が示されている。図示されているように、処理ノード１００は、各クライアント１１０、メモリコントローラ１３０、電力コントローラ１７０及びリンクインタフェース１８０の間に通信ファブリック１２０を含む。いくつかの実施形態では、処理ノード１００の構成要素は、システムオンチップ（ＳＯＣ）などの、集積回路（ＩＣ）上の個々のダイである。他の実施形態では、構成要素は、システムインパッケージ（ＳｉＰ）またはマルチチップモジュール（ＭＣＭ）内の個々のダイである。
【００１３】
例示された実施形態では、クライアント１１０は、中央処理ユニット（ＣＰＵ）１１２、グラフィックス処理ユニット（ＧＰＵ）１１４及びハブ１１６を含む。ハブ１１６は、マルチメディアエンジン１１８と通信するために使用される。ＣＰＵ１１２、ＧＰＵ１１４及びマルチメディアエンジン１１８は、処理アプリケーションに対応したコンピューティングリソースの例である。図示されていないが、他の実施形態では、他の種類のコンピューティングリソースがクライアント１１０内に含まれる。ＣＰＵ１１２内の１つ以上のプロセッサコアのそれぞれは、所与の選択された命令セットアーキテクチャ（ＩＳＡ）にしたがって命令を実行するための回路を含む。各種の実施形態では、ＣＰＵ１１２内のプロセッサコアのそれぞれは、所与のＩＳＡの命令を処理するために使用されるスーパースカラ・マルチスレッド型マイクロアーキテクチャを含む。実施形態では、ＧＰＵ１１４は、有意な数の並列実行レーンを備えた高並列データマイクロアーキテクチャを含む。一実施形態では、マイクロアーキテクチャは、並列実行レーンについて単一命令複数データ（ＳＩＭＤ）パイプラインを使用する。マルチメディアエンジン１１８は、マルチメディアアプリケーション用のオーディオデータ及びビジュアルデータを処理するためのプロセッサを含む。
【００１４】
各種の実施形態では、通信ファブリック１２０は、コンピューティングリソース１１０とメモリコントローラ１３０との間でトラフィックを前後に転送し、各通信プロトコルをサポートするためのインタフェースを含む。いくつかの実施形態では、通信ファブリック１２０は、要求及び応答を記憶するためのキュー、内部ネットワークを越えて要求を送信する前に受信した要求の間の調停を行うための選択ロジック、パケットの構築及び復号を行うためのロジック、ならびにパケットのルートを選択するためのロジックを少なくとも含む。
【００１５】
単一のメモリコントローラ１３０が図示されているが、他の実施形態では、別の数のメモリコントローラが処理ノード１００内で使用される。各種の実施形態では、メモリコントローラ１３０は、通信ファブリック１２０を経由してクライアント１１０からメモリ要求を受信し、そのメモリ要求をスケジューリングし、スケジューリングされたメモリ要求をシステムメモリ及びメインメモリのうちの１つ以上に送信する。メモリコントローラ１３０はまた、システムメモリ及びメインメモリから応答を受信し、クライアント１１０内の対応する要求の送信元にその応答を送信する。各種の実施形態では、システムメモリには、Ｉ／Ｏコントローラ及びバス１６０ならびにメモリバス１５０を介してメインメモリからデータが満たされる。要求されたブロックを伴う対応するキャッシュフィルラインは、元のメモリ要求を完了させるために、メインメモリからクライアント１１０内のキャッシュメモリサブシステムのうちの対応する１つに伝達される。キャッシュフィルラインは、キャッシュの１つ以上のレベルに配置される。
【００１６】
いくつかの実施形態では、処理ノード１００のアドレス空間は、少なくとも、ＣＰＵ１１２、ＧＰＵ１１４及びハブ１１６、ならびに入出力（Ｉ／Ｏ）周辺デバイス（図示せず）及び他の種類のコンピューティングリソースなどの１つ以上の他の構成要素の間で分割される。メモリマップは、どのアドレスがどの構成要素にマッピングされるか、したがって特定のアドレスを求めるメモリ要求がＣＰＵ１１２、ＧＰＵ１１４及びハブ１１６のうちのどの１つにルーティングされるべきかを決定するために保持される。実施形態では、システムメモリは、様々な動的ランダムアクセスメモリ（ＤＲＡＭ）のうちの１つであり、対応するプロトコルは、メモリコントローラ１３０によってサポートされる。プロトコルは、クロックサイクル毎のデータ転送数、信号電圧レベル、信号タイミング、信号及びクロックの位相ならびにクロック周波数などの、情報転送のために使用される値を決定する。いくつかの実施形態では、メインメモリは、様々な種類の不揮発性・ランダムアクセスのデータ補助記憶装置のうちの１つである。メインメモリの例は、ハードディスクドライブ（ＨＤＤ）及びソリッドステートディスク（ＳＳＤ）である。
【００１７】
リンクインタフェース１８０は、リンク上でメッセージを転送することによって処理ノード１００と他の処理ノードとの間の通信をサポートする。各種の実施形態では、ノード間のリンクを越えて送信されるメッセージは、１つ以上のノードのための動作状態の通知、パワーダウン要求、要求に対する応答、割り込み及び他の情報を含む。各種の実施形態では、各リンクは、２つのノード間のポイント・ツー・ポイント通信チャネルである。物理レベルにおいて、リンクは１つ以上のレーンを含む。いくつかの実施形態では、リンクインタフェース１８０、対応するリンク及び他のノードは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）、ＩｎｆｉｎｉＢａｎｄ、ＲａｐｉｄＩＯ及びＨｙｐｅｒＴｒａｎｓｐｏｒｔなどの通信プロトコル接続を含む。いくつかの実施形態では、リンクインタフェース１８０は、相互接続リンクを経由して他のノードと通信するために使用される制御ロジック及びバッファまたはキューを含む。
【００１８】
一実施形態では、電力コントローラ１７０は、クライアント１１０からデータを収集する。いくつかの実施形態では、電力コントローラ１７０はまた、メモリコントローラ１３０からデータを収集する。いくつかの実施形態では、収集されたデータは、所定のサンプリングされた信号を含む。サンプリングされた信号の切り替えは、切り替えられたキャパシタンスの量を示す。サンプルに対する選択信号の例は、クロックゲートイネーブル信号、バスドライバイネーブル信号、連想メモリ（ＣＡＭ）内の不一致、及びＣＡＭワード線（ＷＬ）ドライバなどを含む。実施形態では、電力コントローラ１７０は、データを収集して、所与のサンプル間隔中のノード１００内の電力消費を特徴付ける。
【００１９】
いくつかの実施形態では、ノード１００内のオンダイ電流センサ及び温度センサも電力コントローラ１７０に情報を送信する。電力コントローラ１７０は、センサ情報、発行された命令または発行されたスレッドのカウント、及び重み付きでサンプリングされた信号の和のうちの１つ以上を使用して、ノード１００の電力消費を推定する。ノード１００が閾限界を上回って（下回って）動作している場合、電力コントローラ１７０は電力消費を減少させる（または増加させる）。いくつかの実施形態では、電力コントローラ１７０は、クライアント１１０内のコンピューティングリソースのそれぞれについて各電力性能状態（Ｐ状態）を選択する。Ｐ状態は、動作電圧及び動作クロック周波数を少なくとも含む。各種の実施形態では、電力コントローラ１７０及びノード１００は、Ｎ個のＰ状態をサポートする。ここでＮは、ゼロ以外の正の整数である。
【００２０】
各種の実施形態では、電力コントローラ１７０は、クライアント１１０のうちの１つ以上がいつアイドルになるかを検出する。クライアント１１０のそれぞれがアイドルになった場合、電力コントローラ１７０は、この情報をリンクインタフェース１８０を経由して１つ以上のノードに中継する。実施形態では、電力コントローラ１７０が情報を１つのリンク上で送信するか、それとも複数のリンク上で送信するかは、システム全体のパワーダウンのためのネゴシエーションが分散化されるか、それとも集中化されるかに基づく。例えば、各種の実施形態では、ノード１００は、マルチノードシステム内の複数のノードのうちの１つのノードである。実施形態では、システムは、複数のサーバのうちのサーバである。場合によっては、複数のサーバに対するバッチとして送信されたジョブが各サーバに割り当てられない。所与のサーバは、相当の時間アイドルになり得る。電力消費を削減するために、サーバ内の複数のノードをパワーダウンすることができる。しかしながら、１つ以上のノードが互いに直接接続されていないため、パワーダウンのためのノード内の電力コントローラ間の通信は直送されない。システム全体のパワーダウンをネゴシエーションするための分散化アプローチ及び集中化アプローチのそれぞれが、以下の説明において提供される。
【００２１】
図２を参照すると、一実施形態のマルチノードコンピューティングシステム２００の概略ブロック図が示されている。例示された実施形態では、パッケージ２１０は、リンク２４０によって互いに直接接続されたノード２２０Ａ及び２２０Ｂを含む。いくつかの実施形態では、パッケージ２１０及び２３０のそれぞれは、サーバ内のマルチソケットマザーボードのソケット内に配置されたマルチチップモジュール（ＭＣＭ）である。図示されているように、ノード２２０Ａは、クライアント２２２Ａ〜２２２Ｃ及び電力コントローラ２２４を含む。リンクインタフェース、通信ファブリック、メモリインタフェース、位相同期ループ（ＰＬＬ）または他のクロック生成回路は、説明を容易にするために図示されていない。クライアント２２２Ａ〜２２２Ｃの例は、ＣＰＵ、ＧＰＵ、マルチメディアエンジン及びＩ／Ｏ周辺デバイスなどである。各種の実施形態では、電力コントローラ２２４は、（図１の）電力コントローラ１７０の機能を有する。
【００２２】
実施形態では、リンク２４０〜２４６は、ＰＣＩｅ、ＩｎｆｉｎｉＢａｎｄ、ＲａｐｉｄＩＯ及びＨｙｐｅｒＴｒａｎｓｐｏｒｔなどの通信プロトコル接続を利用する。いくつかの実施形態では、コンピューティングシステム２００は、リンク２４０〜２４６に加えて、ノード２２０Ａ〜２２０Ｄの間の他のリンクを含む。実施形態では、これらの他のリンクは、サービス要求に対するデータ移送のために使用されるのに対し、リンク２４０〜２４６は、システム全体のパワーダウンをネゴシエーションするためのメッセージなどのメッセージ送信のために使用される。
【００２３】
各種の実施形態では、コンピューティングシステム２００は、ノード２２０Ａ〜２２０Ｄのそれぞれが要求元である階層型トポロジを使用する。第１レベルにおけるリンクは、グループまたはクラスタ内のノード２２０Ａ〜２２０Ｄのサブセットを互いに直接接続するために使用される。例えば、ノード２２０Ａは、第１レベルのリンク２４０を介してパッケージ２１０内のノード２２０Ｂに直接接続されている。同様に、ノード２２０Ｃは、第１レベルのリンク２４２を介してパッケージ２３０内のノード２２０Ｄに直接接続されている。第２レベルにおけるリンクは、第１のクラスタ内の第１のノードと第２のクラスタ内の第２のノードとを直接接続するために使用される。例えば、パッケージ２１０内のノード２２０Ａは、第２レベルのリンク２４４を介してパッケージ２３０内のノード２２０Ｃに直接接続されている。しかしながら、ノード２２０Ａは、パッケージ２３０内のノード２２０Ｄに直接接続されていない。同様に、パッケージ２１０内のノード２２０Ｂは、第２レベルのリンク２４６を介してパッケージ２３０内のノード２２０Ｄに直接接続されている。しかしながら、ノード２２０Ｂは、パッケージ２３０内のノード２２０Ｃに直接接続されていない。第２レベルのリンク２４４及び２４６は、第１レベルのリンク２４０及び２４２よりも階層のレベルが高い。
【００２４】
電力管理のための分散化アプローチを使用すると、コンピューティングシステム２００におけるシステム全体のパワーダウンのためのネゴシエーションは、パワーダウンのためのネゴシエーションが階層の高位レベルにおいて継続する前に階層の低位レベル内で行われる。例示された実施形態では、ノード２２０Ａ〜２２０Ｄのそれぞれは、２つのリンクを有する。例えば、ノード２２０Ａは、リンク２４０及び２４４を有する。しかしながら、他の実施形態では、パッケージ内の別の数のノード及び別の数のリンクが使用される。
【００２５】
実施形態では、ノード２２０Ａの電力コントローラ２２４は、ノード２２０Ａ〜２２０Ｄの第１のサブセット内の各クライアントがアイドルであることを示す通知を第２レベルのリンク２４４上でノード２２０Ｃに送信することが可能である。ノード２２０Ｃは、ノード２２０Ａに接続された任意の他のノードに接続されていない。ノードの第１のサブセットは、ノード２２０Ａ及びノード２２０Ｂを含む。ノード２２０Ａの電力コントローラ２２４は、この通知を、クライアント２２２Ａ〜２２２Ｃのそれぞれ１つがアイドルであると電力コントローラ２２４が判定し、かつ複数のノードの第１のサブセットよりも小さい第２のサブセット内の各クライアントがアイドルであるとの通知が第１レベルのリンク２４０上でノード２２０Ｂから受信されたときにノード２２０Ｃに送信する。この例では、第２のサブセットは、ノード２２０Ｂ内の各クライアントを含む。
【００２６】
ノード２２０Ａの電力コントローラ２２４は、ノード２２０Ａが、その各リンク２４０及び２４４上で、所与のサブセット内の各クライアントがアイドルであるとの通知を受信し、かつ電力コントローラ２２４が、クライアント２２２Ａ〜２２２Ｃのそれぞれ１つがアイドルであると判定したとき、ノード２２０Ｂ及びノード２２０Ｃなどの直接接続された各隣接ノードに、パワーダウンのための要求を送信することができる。他のノード２２０Ｂ〜２２０Ｄ内の電力コントローラは、パワーダウン要求を同様の方式で送信することが可能である。
【００２７】
次に図３を参照すると、マルチノードコンピューティングシステム用の電力管理を実行するための一実施形態の方法３００が示されている。議論の都合上、この実施形態の（ならびに図４〜図７及び図９〜図１２の）ステップは順番に示されている。しかしながら、説明される方法の各種の実施形態では、説明される要素のうちの１つ以上が、同時に実行されるか、示された順序とは異なる順序で実行されるか、または完全に省略されることに留意されたい。他の追加的な要素も必要に応じて実行される。本明細書で説明される各種のシステムまたは装置のいずれかが、方法３００を実施するように構成される。
【００２８】
２つ以上のノードが、この２つ以上のノードのそれぞれが第１レベルのリンクを使用して互いに完全に接続された状態でサブセット内に配置される（ブロック３０２）。２つ以上のサブセットは、ノード間で完全には接続されない方式で第２レベルのリンクを用いて接続される（ブロック３０４）。このような階層の例は、（図２の）コンピューティングシステム２００において提供されている。所与のサブセット内の各ノードは、第２レベルのリンクを経由して他の各サブセットに接続されているが、所与のサブセット内の各ノードは、別のサブセット内の他の各ノードには接続されていない。コンピューティングシステム２００を参照すると、別のサブセットが追加された場合、パッケージ２１０内のノード２２０Ａ及び２２０Ｂのそれぞれは、他のサブセット内のノードへの追加的な第２レベルのリンクを有する。同様の接続が、パッケージ２３０内のノード２２０Ｃ及び２２０Ｄに使用される。したがって、システム内の各ノードがシステム内の他の各ノードに完全には接続されていないため、マルチノードシステムのサイズが効率的にスケーリングされる。システム全体のパワーダウンは分散化される。複数のノードのいずれかが、システム全体のパワーダウンを開始することができる。システム全体のパワーダウンのためのネゴシエーションは、パワーダウンのためのネゴシエーションが第２レベルのリンク上で階層の高位レベルにおいて継続する前に、第１レベルのリンク上で階層の低位レベル内で行われる。
【００２９】
複数のノードがタスクを処理する（ブロック３０６）。ノード内の１つ以上のクライアントは、コンピュータプログラム、すなわちソフトウェアアプリケーションを実行する。いくつかの実施形態では、複数のノードはマルチソケットサーバ内にあり、オペレーティングシステムによってバッチジョブが受信される。オペレーティングシステムは、複数のノードのうちの１つ以上にタスクを割り当てる。ノード内の電力コントローラは、第２レベルのリンク上の階層型通信に少なくとも基づいて各ノードがアイドルのクライアントを有するかどうかを判定する（ブロック３０８）。したがって、システム全体のパワーダウンは、システム内の完全に接続されたノードに依存せずに行われる。これにより、効率的にサイズをスケーリングすることが可能になる。加えて、電力管理のためのネゴシエーションは、システム全体のパワーダウンを実行する前にリンクのパワーダウンを回避する。これにより、その後のパワーアップの不利益が排除される。
【００３０】
マルチノードシステム内の１つ以上のクライアントが非アイドルであると判定された場合（条件付きのブロック３１０の「ｎｏ」分岐）、方法３００の制御フローはブロック３０６に戻る。このブロックでは、１つ以上のクライアントが非アイドルである間、複数のノードを用いてタスクが処理される。コンピューティングシステム内の１つのノード以外の全てが単にアイドルのクライアントを有する場合でも、パワーダウン要求は生成されない。各ノード内の各クライアントがアイドルであると判定された場合（条件付きのブロック３１０の「ｙｅｓ」分岐）、各ノードの各リンク及び各クライアントがパワーダウンされる（ブロック３１２）。複数のノードが互いに接続されていないにも関わらず、システム全体のパワーダウンが行われる。各種の実施形態では、所与のノードをパワーダウンすることは、リンクインタフェース用のドライバを無効にすること、クライアント用のクロックを無効にすること、及びＤＲＡＭが使用されているときにセルフリフレッシュを実行するようにシステムメモリを設定することのうちの１つ以上を含む。
【００３１】
次に図４を参照すると、マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法４００が示されている。方法３００及び方法５００〜７００と同様に、方法４００のマルチノードコンピューティングシステムは、各ノードが要求元であり、システム全体のパワーダウンのためのネゴシエーションが分散化される階層型トポロジを使用する。例えば、システム全体のパワーダウンのためのネゴシエーションは、パワーダウンのためのネゴシエーションが第２レベルのリンク上で階層の高位レベルにおいて継続する前に、第１レベルのリンク上で階層の低位レベル内で行われる。システム全体のパワーダウンのためのネゴシエーションが分散化されつつ、複数のノードがタスクを処理する（ブロック４０２）。
【００３２】
所与のノード上の１つ以上の非アイドルのクライアントが、１つ以上のタスクを処理する（ブロック４０４）。所与のノード内の各クライアントがアイドルになった場合（条件付きのブロック４０６の「ｙｅｓ」分岐）、所与のノード内の各クライアントがアイドルであることを示す通知が第１レベルの各リンク上で送信される（ブロック４０８）。隣接ノード内の各クライアントがアイドルであることを示す応答が第１レベルの各リンク上で受信された場合（条件付きのブロック４１０の「ｙｅｓ」分岐）、複数のノードのサブセット内の各クライアントがアイドルであることを示す通知が第２レベルの各リンク上で送信される（ブロック４１２）。したがって、応答を提供したノード内でアイドルであるとクライアントが認識されたときのみ、この場合の階層型通信が継続する。ブロック４０８〜４１２のステップにより、システム全体のパワーダウンのネゴシエーションの、階層の次の高位レベルへの伝搬がゲーティングされる。
【００３３】
次に図５に目を向けると、マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法５００が示されている。システム全体のパワーダウンのためのネゴシエーションが分散されつつ、複数のノードがタスクを処理する（ブロック５０２）。第２のノード内の各クライアントがアイドルであることを示す通知が、第１のノードの第１レベルのリンク上で受信される（ブロック５０４）。１つ以上のクライアントが第１のノード内で非アイドルである場合（条件付きのブロック５０６の「ｎｏ」分岐）、第１のノードは、第１のノード内の１つ以上のクライアントが非アイドルであることを示す第１レベルのリンク上の通知によって第２のノードに応答する（ブロック５０８）。各クライアントが第１のノード内でアイドルである場合（条件付きのブロック５０６の「ｙｅｓ」分岐）、第１のノードは、第１のノード内の各クライアントがアイドルであることを示す第１レベルのリンク上の通知によって第２のノードに応答する（ブロック５１０）
【００３４】
第２のノード内の各クライアントがアイドルであることを示すための所与の通知が第１のノード内で更新される（ブロック５１２）。第１のノード内または第１レベルのリンク上で第１のノードに接続された任意のノード内で１つ以上のクライアントが非アイドルである場合（条件付きのブロック５１４の「ｎｏ」分岐）、方法５００の制御フローはブロック５１６に移動し、このブロックで階層型通信を完了させる。
【００３５】
第１のノード内及び第１レベルのリンク上で第１のノードに接続された任意のノード内で各クライアントがアイドルである場合（条件付きのブロック５１４の「ｙｅｓ」分岐）、複数のノードのサブセット内の各クライアントがアイドルであることを示す通知が第２レベルの各リンク上で送信される（ブロック５１８）。例えば、第１のノードと、第１レベルのリンクを用いて第１のノードに完全に接続された各ノードとは、複数のノードのサブセットである。一時的に図２を参照すると、パッケージ２１０が、複数のノードのサブセットである。いくつかの実施形態では、ノード２２０Ａ上のクライアント２２２Ａ〜２２２Ｃのそれぞれ１つがアイドルであることを示す第１レベルのリンク２４０上の通知をノード２２０Ｂが受信し、ノード２２０Ｂがノード２２０Ａに応答するときに方法５００が使用される。加えて、いくつかの実施形態では、ノード２２０Ａ及びノード２２０Ｂのそれぞれが非アイドルのクライアントを全く有していないとノード２２０Ｂが判定したとき、ノード２２０Ｂは、ノード２２０Ｄに通知を送信する。さらに、実施形態では、ノード２２０Ｂ上の各クライアントがアイドルであることを示す第１レベルのリンク２４０上の通知をノード２２０Ａが受信し、ノード２２０Ａが、ノード２２０Ｂに応答し、条件付きで通知をノード２２０Ｃに送信するときに方法５００が使用される。
【００３６】
次に図６を参照すると、マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法６００が示されている。システム全体のパワーダウンのためのネゴシエーションが分散化されつつ、複数のノードがタスクを処理する（ブロック６０２）。複数のノードのサブセット内の各クライアントがアイドルであることを示す通知が、第１のノードの第２レベルのリンク上で受信される（ブロック６０４）。例えば、サブセットは、第１レベルのリンクを用いて互いに完全に接続された一群のノードである。ノード２２０Ａ及び２２０Ｂを備えた（図２の）パッケージ２１０は、サブセットの一例であり、ノード２２０Ｃは、第２レベルのリンク２４４上で通知を受信する。
【００３７】
１つ以上のクライアントが第１のノード内で非アイドルである場合（条件付きのブロック６０６の「ｎｏ」分岐）、第１のノードは、複数のノード内の１つ以上のクライアントが非アイドルであることを示す第２レベルのリンク上の通知によって応答する（ブロック６０８）。各クライアントが第１のノード内でアイドルである場合（条件付きのブロック６０６の「ｙｅｓ」分岐）、第１のノードの第１レベルの各リンクについて、複数のノードのサブセット内の１つ以上のクライアントが非アイドルであることを示す通知が第１のノードによって受信されたかどうかが判定される（ブロック６１０）。第１のノードの任意の第１レベルのリンクがこのような通知を受信した場合（条件付きのブロック６１２の「ｙｅｓ」分岐）、方法６００の制御フローはブロック６０８に移る。このブロックで第１のノードは、複数のノード内の１つ以上のクライアントが非アイドルであることを示す第２レベルのリンク上の通知によって応答する。第１のノードの第１レベルのリンクがいずれもこのような通知を受信しなかった場合（条件付きのブロック６１２の「ｎｏ」分岐）、第１のノードは、複数のノードのサブセット内の各クライアントがアイドルであることを示す第２レベルのリンク上の通知によって応答する（ブロック６１４）。
【００３８】
一時的に図２を参照すると、パッケージ２３０が、複数のノードのサブセットである。いくつかの実施形態では、パッケージ２１０などのサブセット内の各クライアントがアイドルであることを示す通知をノード２２０Ｃが第２レベルのリンク２４４上で受信するときに方法６００が使用される。ノード２２０Ｃは、ノード２２０Ｃのクライアントがアイドルであるかどうかと、第１レベルのリンク２４２上でノード２２０Ｄから受信した通知とに基づき、第２レベルのリンク２４４上でノード２２０Ａに応答する。
【００３９】
次に図７を参照すると、マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法７００が示されている。システム全体のパワーダウンのためのネゴシエーションは分散化される。各ローカルクライアントがアイドルになって応答を待っていると判定したことに少なくとも基づいてアイドルの所与のノードが各リンク（第１レベル及び第２レベル）上で通知を送信した後、複数のノードを用いてタスクが処理される（ブロック７０２）。各種の実施形態では、所与のノードは、第２レベルのリンク上でノードに連絡する前に、第１レベルのリンク上で最初にノードに連絡した。各リンクについて、複数のノード内の１つ以上のクライアントが非アイドルであることを示す通知が受信されたかどうかが判定される（ブロック７０４）。
【００４０】
所与のノードの任意のリンク（第１レベルまたは第２レベル）がこのような通知を受信した場合（条件付きのブロック７０６の「ｙｅｓ」分岐）、複数のノードは、ウェイクアップ条件が発生したかどうかを監視しつつ、継続してタスクを処理し、隣接ノードからのリンクの更新に継続して応答する（ブロック７０８）。ウェイクアップ条件の例には、割り当て済みのタスクをオペレーティングシステムから受信すること、及び１つ以上の非アイドルのクライアントを有する別のノードからローカルキャッシュプローブを求めるリモート要求またはシステムメモリ内のローカルデータを求めるリモートメモリ要求を受信することなどのうちの１つ以上がある。所与のノードのリンク（第１レベルまたは第２レベル）がいずれも応答においてこのような通知を受信しなかった場合（条件付きのブロック７０６の「ｎｏ」分岐）、パワーダウンのために所与のノードの各リンク上で要求が送信される（ブロック７１０）。
【００４１】
パワーダウンに対して各リンク上で応答が受信されなかった場合（条件付きのブロック７１２の「ｎｏ」分岐）、パワーダウンに対する応答を受信した任意のリンクがパワーダウンされる（ブロック７１４）。その後、方法７００の制御フローは、複数のノードが継続してタスクを処理するブロック７０８に移る。パワーダウンに対して各リンク上で応答が受信された場合（条件付きのブロック７１２の「ｙｅｓ」分岐）、所与のノードの各リンク及び各クライアントはパワーダウンされる（ブロック７１４）。他のノードも、これらのステップを実行する。複数のノードが互いに接続されていないにも関わらず、システム全体のパワーダウンが行われる。各種の実施形態では、所与のノードをパワーダウンすることは、リンクインタフェース用のドライバを無効にすること、クライアント用のクロックを無効にすること、ＤＲＡＭが使用されているときにセルフリフレッシュを実行するようにシステムメモリを設定すること、電力コントローラ以外のノード内の各構成要素用の（クライアント用だけではない）クロックを無効にすること、メモリコントローラ、通信ファブリック、メモリ及び入出力（Ｉ／Ｏ）ドライバ、ネットワークインタフェース用のクロックを無効にすることに加えてパワーダウンのための他のステップを実行すること、ならびに保持電圧を選択することのうちの１つ以上を含む。
【００４２】
各種の実施形態では、所与のノードが所与のリンク上でパワーダウン要求を受信したとき、所与のノードは、そのクライアントのそれぞれがアイドルであるかどうかを判定する。クライアントのそれぞれがアイドルである場合、所与のノードは、パワーダウンを指示する応答によって所与のリンク上で応答する。その後、所与のノードは所与のリンクをパワーダウンする。加えて、所与のノードは、もしあれば、所与のノードの他の各リンク上でパワーダウン要求を送信する。所与のノードがこれらの他のリンクのうちの特定のリンク上でパワーダウン応答を受信した場合、所与のノードは、この特定のリンクをパワーダウンする。所与のノードの各リンクがパワーダウン要求とパワーダウン応答との両方を転送した場合、所与のノードは各リンクをパワーダウンする。各リンクが所与のノードにおいてパワーダウンされたとき、所与のノードは、各クライアントのパワーダウンを続行する。いくつかの実施形態では、所与のノードが、そのクライアントのうちの少なくとも１つが非アイドルであると判定したとき、所与のノードは、所与のノードがパワーダウンする予定ではないとの通知によって所与のリンク上でパワーダウン要求に応答する。加えて、実施形態では、所与のノードは、何らのパワーダウン要求も他のリンク上で送信しない。
【００４３】
図８を参照すると、別の実施形態のマルチノードコンピューティングシステム８００の概略ブロック図が示されている。例示された実施形態では、ノード８１０Ａはコンピューティングシステム８００のルートノード（マスタノード）であるのに対し、ノード８１０Ｇ及びノード８１０Ｈのそれぞれはリーフノードである。ノード８１０Ｂ〜８１０Ｆのそれぞれは、ルートノード８１０Ａとリーフノード８１０Ｇ〜８１０Ｈとの間の中間ノードである。したがって、リングデータ通信トポロジが使用される。しかしながら、システム全体の、階層型通信の電力管理をサポートするために、ツリー階層型トポロジがリングトポロジ内で使用される。システム全体のパワーダウンのためのネゴシエーションは集中化され、これはコンピューティングシステム８００内のルートノード８１０Ａによって実行される。パワーアップのためのネゴシエーションは分散化されたままであり、これはシステム内のノードのいずれかによって開始される。図示されていないが、ノード８１０Ａ〜８１０Ｈのそれぞれは、１つ以上のクライアント、電力コントローラ、リンクインタフェース、通信ファブリック、メモリインタフェース、及び位相同期ループ（ＰＬＬ）または他のクロック生成回路などを含む。クライアントの例は、ＣＰＵ、ＧＰＵ、マルチメディアエンジン及びＩ／Ｏ周辺デバイスなどである。各種の実施形態では、電力コントローラは、（図１の）電力コントローラ１７０の機能を有する。
【００４４】
実施形態では、リンク８２０〜８３４は、ＰＣＩｅ、ＩｎｆｉｎｉＢａｎｄ、ＲａｐｉｄＩＯ及びＨｙｐｅｒＴｒａｎｓｐｏｒｔなどの通信プロトコル接続を利用する。いくつかの実施形態では、コンピューティングシステム８００は、リンク８２０〜８３４に加えて、ノード８１０Ａ〜８１０Ｈの間の他のリンクを含む。これらの他のリンク（図示せず）はデータ通信のために使用されるのに対し、リンク８２０〜８３４は電力管理メッセージ送信のために使用される。したがって、実施形態では、これらの他のリンクは、サービス要求に対するデータ移送のために使用されるのに対し、リンク８２０〜８３４は、システム全体のパワーダウンをネゴシエーションするためのメッセージなどのメッセージ送信のために使用される。図示されているように、中間ノード８１０Ｂ〜８１０Ｆのそれぞれ１つは、単一の上流ノードに直接接続されており、かつ単一の下流ノードに直接接続されている。上流方向はルート方向とも呼ばれるのに対し、下流方向はリーフ方向とも呼ばれる。上流方向及び下流方向のそれぞれは、サービス要求に使用されるデータ通信ではなく、電力管理メッセージ送信に関連する。リーフノードのそれぞれは、追加的にリンク８２８を使用する。このリンクは、上流端及び下流端ではなく、各終端上で同一のレベルを有する。実施形態では、同一のレベルは、電力管理制御ロジックによって下流レベルとして扱われる。
【００４５】
次に図９を参照すると、マルチノードコンピューティングシステム用の電力管理を実行するための一実施形態の方法９００が示されている。各種の実施形態では、マルチノードコンピューティングシステムは、電力管理の目的でツリー階層型トポロジ内の複数のノードを接続する。このトポロジは、単一のルートノード（マスタノード）、１つ以上のリーフノード、及びルートノードと１つ以上のリーフノードとの間の１つ以上の中間ノードを含む（ブロック９０２）。いくつかの実施形態では、マルチノードコンピューティングシステムは、サービス要求に使用されるデータ通信のためにリングトポロジを使用し、ツリートポロジは、電力管理メッセージ送信のために使用される。実施形態では、各中間ノードは、上流方向のノードに直接接続されており、かつ下流方向のノードに直接接続されている。換言すれば、システム全体のパワーダウンのためのネゴシエーションは集中化されるのに対し、システム全体のパワーアップは分散化されたままである。しかしながら、性能を高めるためにソケットの数を増加させるといった、システムのスケーリングは、ノードが完全には接続されていないためにより効率的になる。加えて、ノードが完全には接続されていないときに接続をルーティングすることにより、より少ない量の信号がソケット間で使用され、インタフェースのための領域が減少する。したがって、システム全体のパワーダウンは、システム内の完全に接続されたノードに依存せずに行われる。これにより、効率的にサイズをスケーリングすることが可能になる。加えて、電力管理のためのネゴシエーションは、システム全体のパワーダウンを実行する前にリンクのパワーダウンを回避する。これにより、その後のパワーアップの不利益が排除される。
【００４６】
複数のノードがタスクを処理する（ブロック９０４）。ノード内の１つ以上のクライアントは、コンピュータプログラム、すなわちソフトウェアアプリケーションを実行する。いくつかの実施形態では、複数のノードはマルチソケットサーバ内にあり、オペレーティングシステムによってバッチジョブが受信される。オペレーティングシステムは、複数のノードのうちの１つ以上にタスクを割り当てる。ルートノードのリンク上の階層型通信に少なくとも基づき、各ノードがアイドルのクライアントを有するかどうかが判定される（ブロック９０６）。
【００４７】
マルチノードシステム内の１つ以上のクライアントが非アイドルであると判定された場合（条件付きのブロック９０８の「ｎｏ」分岐）、方法９００の制御フローはブロック９０４に戻る。このブロックでは、１つ以上のクライアントが非アイドルである間、複数のノードを用いてタスクが処理される。コンピューティングシステム内の１つのノード以外の全てが単にアイドルのクライアントを有する場合でも、パワーダウン要求は生成されない。各ノード内の各クライアントがアイドルであると判定された場合（条件付きのブロック９０８の「ｙｅｓ」分岐）、各ノードの各リンク及び各クライアントがパワーダウンされる（ブロック９１０）。複数のノードが互いに接続されていないにも関わらず、システム全体のパワーダウンが行われる。各種の実施形態では、所与のノードをパワーダウンすることは、リンクインタフェース用のドライバを無効にすること、クライアント用のクロックを無効にすること、及びＤＲＡＭが使用されているときにセルフリフレッシュを実行するようにシステムメモリを設定することのうちの１つ以上を含む。
【００４８】
次に図１０を参照すると、マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法１０００が示されている。方法９００及び方法１１００〜１２００と同様に、方法１０００のマルチノードコンピューティングシステムは、ツリー階層型トポロジを使用する。このトポロジは、単一のルートノード（マスタノード）、１つ以上のリーフノード、及びルートノードと１つ以上のリーフノードとの間の１つ以上の中間ノードを含む。各中間ノードは、上流方向のノードに直接接続されており、かつ下流方向のノードに直接接続されている。換言すれば、システム全体のパワーダウンのためのネゴシエーションは集中化されるのに対し、システム全体のパワーアップは分散化されたままである。
【００４９】
複数のノードがタスクを処理する（ブロック１００２）。ノード内の１つ以上のクライアントは、コンピュータプログラム、すなわちソフトウェアアプリケーションを実行する。いくつかの実施形態では、複数のノードはマルチソケットサーバ内にあり、オペレーティングシステムによってバッチジョブが受信される。オペレーティングシステムは、複数のノードのうちの１つ以上にタスクを割り当てる。非ルートの所与のノード上の１つ以上の非アイドルのクライアントが、１つ以上のタスクを処理する（ブロック１００４）。所与のノード内の各クライアントがアイドルになった場合（条件付きのブロック１００６の「ｙｅｓ」分岐）、所与のノード内の各クライアントがアイドルであることを示す通知が下りリンク上で送信される（ブロック１００８）。複数のノードのサブセット内の各クライアントがアイドルであることを示す応答が所与のノードの下りリンク上で受信された場合（条件付きのブロック１０１０の「ｙｅｓ」分岐）、複数のノードのサブセット内の各クライアントがアイドルであることを示す通知が上りリンク上で送信される（ブロック１０１２）。したがって、応答を提供したノード内でアイドルであるとクライアントが認識されたときのみ、この場合の階層型通信が継続する。ブロック１００８〜１０１２のステップにより、システム全体のパワーダウンのネゴシエーションの、階層の次の高位レベルへの伝搬がゲーティングされる。
【００５０】
次に図１１に目を向けると、マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法１１００が示されている。複数のノードがタスクを処理する（ブロック１１０２）。複数のノードのサブセット内の各クライアントがアイドルであることを示す通知が、非リーフ及び非ルートの所与のノードの下りリンク上で受信される（ブロック１１０４）。例えば、サブセットは、所与のノードから下流に各ノードを含む。所与のノードの１つ以上のクライアントが非アイドルである場合（条件付きのブロック１１０６の「ｎｏ」分岐）、実施形態では、所与のノードは、所与のノード内の１つ以上のクライアントが非アイドルであることを示す下りリンク上の通知によって応答する（ブロック１１０８）。所与のノード内で各クライアントがアイドルである場合（条件付きのブロック１１０６の「ｙｅｓ」分岐）、実施形態では、所与のノードは、所与のノード内の各クライアントがアイドルであることを示す下りリンク上の通知によって応答する（ブロック１１１０）。
【００５１】
複数のノードのサブセット内の各クライアントがアイドルであることを示すための所与の通知が所与のノード内で更新される（ブロック１１１２）。サブセットは、所与のノードからリーフノードへの下流に各ノードを含む。所与のノード内または所与のノードから下流の任意のノード内で１つ以上のクライアントが非アイドルである場合（条件付きのブロック１１１４の「ｎｏ」分岐）、方法１１００の制御フローはブロック１１１６に移動し、このブロックで階層型通信を完了させる。所与のノード及び所与のノードから下流の任意のノード内で各クライアントがアイドルである場合（条件付きのブロック１１１４の「ｙｅｓ」分岐）、複数のノードのサブセット内の各クライアントがアイドルであることを示す通知が上りリンク上で送信される（ブロック１１１８）。サブセットは、所与のノードと、所与のノードから下流の各ノードとを含む。
【００５２】
次に図１２を参照すると、マルチノードコンピューティングシステム用の電力管理を実行するための別の実施形態の方法１２００が示されている。複数のノードは、ルートノードの各クライアントがアイドルである間、タスクを処理する（ブロック１２０２）。各下りリンクについて、複数のノード内の１つ以上のクライアントが非アイドルであることを示す通知が受信されたかどうかが判定される（ブロック１２０４）。ルートノードの任意の下りリンクがこのような通知を受信した場合（条件付きのブロック１２０６の「ｙｅｓ」分岐）、複数のノードは、ウェイクアップ条件が発生したかどうかを監視しつつ、継続してタスクを処理し、隣接ノードからのリンクの更新に継続して応答する（ブロック１２０８）。
【００５３】
ルートノードの下りリンクがいずれも応答においてこのような通知を受信しなかった場合（条件付きのブロック１２０６の「ｎｏ」分岐）、パワーダウンするために所与のノードの各下りリンク上で要求が送信される（ブロック１２１０）。パワーダウンに対してルートノードの各下りリンク上で応答が受信されなかった場合（条件付きのブロック１２１２の「ｎｏ」分岐）、パワーダウンに対する応答を受信した任意の下りリンクがパワーダウンされる（ブロック１２１４）。その後、方法１２００の制御フローは、複数のノードが継続してタスクを処理するブロック１２０８に移る。パワーダウンに対してルートノードの各下りリンク上で応答が受信された場合（条件付きのブロック１２１２の「ｙｅｓ」分岐）、ルートノードの各リンク及び各クライアントはパワーダウンされる（ブロック１２１４）。他のノードも、これらのステップを実行する。複数のノードが互いに接続されていないにも関わらず、システム全体のパワーダウンが行われる。各種の実施形態では、所与のノードをパワーダウンすることは、リンクインタフェース用のドライバを無効にすること、クライアント用のクロックを無効にすること、及びＤＲＡＭが使用されているときにセルフリフレッシュを実行するようにシステムメモリを設定することのうちの１つ以上を含む。
【００５４】
分散化アプローチにおけるノードと同様に、各種の実施形態では、集中化アプローチにおける所与のノードが上りリンク上でパワーダウン要求を受信したとき、所与のノードは、そのクライアントのそれぞれがアイドルであるかどうかを判定する。クライアントのそれぞれがアイドルである場合、所与のノードは、パワーダウンを指示する応答によって上りリンク上で応答する。その後、所与のノードは上りリンクをパワーダウンする。加えて、所与のノードは、所与のノードの下りリンク上でパワーダウン要求を送信する。所与のノードが下りリンク上でパワーダウン応答を受信した場合、所与のノードは下りリンクをパワーダウンする。所与のノードの上りリンク及び下りリンクのそれぞれがパワーダウン要求とパワーダウン応答との両方を転送した場合、所与のノードは各リンクをパワーダウンする。各リンクが所与のノード内でパワーダウンされたとき、所与のノードは、各クライアントのパワーダウンを続行する。いくつかの実施形態では、所与のノードが、そのクライアントのうちの少なくとも１つが非アイドルであると判定したとき、所与のノードは、所与のノードがパワーダウンする予定ではないとの通知によって上りリンク上でパワーダウン要求に応答する。加えて、実施形態では、所与のノードは、いずれのパワーダウン要求も下りリンク上で送信しない。
【００５５】
各種の実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、先に説明した方法及び／または機構を実施する。プログラム命令は、Ｃなどの高水準プログラミング言語でハードウェアの挙動を記述する。あるいは、Ｖｅｒｉｌｏｇなどのハードウェア設計言語（ＨＤＬ）が使用される。プログラム命令は、非一時的コンピュータ可読記憶媒体上に記憶される。複数の種類の記憶媒体が利用可能である。記憶媒体は、プログラム命令及び付随するデータをコンピューティングシステムに提供してプログラムを実行するために、使用中にコンピューティングシステムによるアクセスが可能である。コンピューティングシステムは、１つ以上のメモリ、及びプログラム命令を実行する１つ以上のプロセッサを備える。
【００５６】
上記で説明された実施形態は、実装態様の非限定的な例に過ぎないことが強調されるべきである。上記の開示が一旦完全に理解されると、多くの変形及び修正が当業者にとって明らかになるであろう。以下の特許請求の範囲は、全てのそのような変形及び修正を包含すると解釈されることが意図される。
【図１】
2021509240.tif 000003
【図２】
2021509240.tif 000004
【図３】
2021509240.tif 000005
【図４】
2021509240.tif 000006
【図５】
2021509240.tif 000007
【図６】
2021509240.tif 000008
【図７】
2021509240.tif 000009
【図８】
2021509240.tif 000010
【図９】
2021509240.tif 000011
【図１０】
2021509240.tif 000012
【図１１】
2021509240.tif 000013
【図１２】
2021509240.tif 000014
【国際調査報告】
2021509240.tif 000015
2021509240.tif 000016