(57)【要約】マルチノードコンピューティングシステムに対して効率的な電力管理を実行するシステム、装置、及び方法が開示される。複数のノードを含むコンピューティングシステムは、非一様メモリアクセス（ＮＵＭＡ）アーキテクチャを利用する。第１のノードは、第２のノードからブロードキャストプローブを受信する。第１のノードは、パワーダウンした第３のノードに対してミス応答をスプーフし、それは、第３のノードがブロードキャストプローブに応答するよう呼び出されることを防止する。パワーダウンする前に、第３のノードは、そのプローブフィルタ及びキャッシュをフラッシュしており、受信されたダーティキャッシュラインによりそのシステムメモリを更新している。コンピューティングシステムは、調停割り込みに対して複数のコアの割り込み優先度をコンピューティングシステムに記憶するためのマスタノードを含む。コアは、各コアに対して固定割り込み識別子のインジケーションをコンピューティングシステムに記憶する。調停割り込み及び固定割り込みは、ブロードキャストメッセージではなく、ポイントツーポイントユニキャストメッセージによりコアによって扱われる。【選択図】図６
2021507412.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードを備え、前記複数のノードの各々は、
アプリケーションを処理するように構成された１つ以上のクライアントと、
前記複数のノードの他のノードに結合された複数のリンクと、
電力コントローラと、を含み、
前記複数のノードの第１のノードからブロードキャストプローブを受信したことに応答して、前記複数のノードの第２のノードは、
前記複数のノードの第３のノードがパワーダウンしたと判定したことに応答して、前記第２のノードに直接接続された前記第３のノードに対してミス応答を生成し、
前記第１のノードに前記ミス応答を送信する、ように構成されている、コンピューティングシステム。
【請求項２】
ブロードキャストプローブを生成したことに応答して、前記複数のノードの前記第１のノードは、
前記複数のノードの第４のノードがパワーダウンしたと判定したことに応答して、前記第１のノードに直接接続された前記第４のノードに対してミス応答を生成する、ように構成されている、請求項１に記載のコンピューティングシステム。
【請求項３】
前記第１のノードは、
メモリ要求が使用可能にされるようにプローブフィルタを維持し、
前記１つ以上のクライアントの各クライアントがアイドルであると判定したことに応答して、
前記プローブフィルタ内の各エントリを取り消し、
前記プローブフィルタ内のエントリを取り消した結果として受信されたダーティキャッシュラインにより前記第１のノードに接続されたシステムメモリを更新し、
前記複数のリンク及び前記第１のノードの前記１つ以上のクライアントをパワーダウンさせる、ように構成されている、請求項１に記載のコンピューティングシステム。
【請求項４】
前記１つ以上のクライアントの少なくとも１つのクライアントは、複数のコアを含み、前記複数のノードのマスタノードは、調停割り込みに対して前記複数のコアの割り込み優先度を前記複数のノードに記憶するように構成されている、請求項１に記載のコンピューティングシステム。
【請求項５】
調停割り込みを検出したことに応答して、前記第１のノードは、
前記マスタノードに、最下位優先度を有する所与のコア及び前記所与のコアを含む所与のノードを識別する要求を送信し、
前記所与のコア及び前記所与のノードを識別する前記マスタノードからの応答に基づいて、前記所与のノードに、前記所与のコアによる前記調停割り込みを扱う要求を送信する、ように構成されている、請求項４に記載のコンピューティングシステム。
【請求項６】
調停割り込みに対するコアの優先度が前記第１のノードにおいて更新されたと判定したことに応答して、前記第１のノードは、前記マスタノードに記憶された調停割り込みに対してコアの優先度を更新するために、前記マスタノードに前記更新された優先度を送信するように構成されている、請求項４に記載のコンピューティングシステム。
【請求項７】
前記１つ以上のクライアントの少なくとも１つのクライアントは、複数のコアを含み、少なくとも前記第１のノードは、前記複数のコアの各コアに対して固定割り込み識別子（ＩＤ）のインジケーションを記憶するように構成されている、請求項１に記載のコンピューティングシステム。
【請求項８】
固定割り込みを検出したことに応答して、前記第１のノードは、
前記検出された固定割り込みの固定割り込みＩＤに一致する固定割り込みＩＤを有する所与のコアを含む所与のノードを識別し、
前記所与のノードに、前記所与のコアによる前記固定割り込みを扱う要求を送信する、ように構成されている、請求項７に記載のコンピューティングシステム。
【請求項９】
複数のノードによってアプリケーションを処理することを備え、前記複数のノードの各々は、
前記アプリケーションを処理するように構成された１つ以上のクライアントと、
前記複数のノードの他のノードに結合された複数のリンクと、
電力コントローラと、を含み、
前記複数のノードの第１のノードからブロードキャストプローブを受信したことに応答して、前記複数のノードの第２のノードは、
前記複数のノードの第２のノードによって、前記複数のノードの第３のノードがパワーダウンしたと判定したことに応答して、前記第２のノードに直接接続された前記第３のノードに対してミス応答を生成し、
前記第２のノードによって、前記第１のノードに前記ミス応答を送信する、ように構成されている、方法。
【請求項１０】
ブロードキャストプローブを生成したことに応答して、
前記第１のノードによって、前記複数のノードの第４のノードがパワーダウンしたと判定したことに応答して、前記第１のノードに直接接続された前記第４のノードに対してミス応答を生成することを備えた、請求項９に記載の方法。
【請求項１１】
前記第１のノードによって、メモリ要求が使用可能にされるようにプローブフィルタを維持することと、
前記第１のノード内の前記１つ以上のクライアントの各クライアントがアイドルであると判定したことに応答して、
前記プローブフィルタ内の各エントリを取り消すことと、
前記プローブフィルタ内のエントリを取り消した結果として受信されたダーティキャッシュラインにより前記第１のノードに接続されたシステムメモリを更新することと、
前記複数のリンク及び前記第１のノードの前記１つ以上のクライアントをパワーダウンさせることと、を更に備えた、請求項９に記載の方法。
【請求項１２】
前記１つ以上のクライアントの少なくとも１つのクライアントは、複数のコアを含み、前記方法は、前記複数のノードのマスタノードによって、調停割り込みに対して前記複数のコアの割り込み優先度を前記複数のノードに記憶することを更に備えた、請求項９に記載の方法。
【請求項１３】
調停割り込みを検出したことに応答して、前記方法は、
前記第１のノードによって、前記マスタノードに、最下位優先度を有する所与のコア及び前記所与のコアを含む所与のノードを識別する要求を送信することと、
前記第１のノードによって、前記所与のコア及び前記所与のノードを識別する前記マスタノードからの応答に基づいて、前記所与のノードに、前記所与のコアによる前記調停割り込みを扱う要求を送信することと、を更に備えた、請求項１２に記載の方法。
【請求項１４】
調停割り込みに対するコアの優先度が前記第１のノードにおいて更新されたと判定したことに応答して、前記方法は、前記第１のノードによって、前記マスタノードに記憶された調停割り込みに対してコアの優先度を更新するために、前記マスタノードに前記更新された優先度を送信することを更に備えた、請求項１３に記載の方法。
【請求項１５】
前記１つ以上のクライアントの少なくとも１つのクライアントは、複数のコアを含み、前記方法は、少なくとも前記第１のノードによって、前記複数のコアの各コアに対して固定割り込み識別子（ＩＤ）のインジケーションを記憶することを更に備えた、請求項９に記載の方法。
【請求項１６】
固定割り込みを検出したことに応答して、前記方法は、
前記第１のノードによって、前記検出された固定割り込みの固定割り込みＩＤに一致する固定割り込みＩＤを有する所与のコアを含む所与のノードを識別することと、
前記第１のノードによって、前記所与のノードに、前記所与のコアによる前記固定割り込みを扱う要求を送信することと、を更に備えた、請求項１５に記載の方法。
【請求項１７】
アプリケーションを処理するように構成された１つ以上のクライアントと、
複数のノードの他のノードに結合された複数のリンクと、
制御ロジックと、を備え、
複数のノードの第１のノードからブロードキャストプローブを受信したことに応答して、前記制御ロジックは、
前記複数のノードの第２のノードがパワーダウンしたと判定したことに応答して、前記処理ノードに直接接続された前記第２のノードに対してミス応答を生成し、
前記第１のノードに前記ミス応答を送信する、ように構成されている、処理ノード。
【請求項１８】
ブロードキャストプローブを生成したことに応答して、前記制御ロジックは、
前記複数のノードの第３のノードがパワーダウンしたと判定したことに応答して、前記処理ノードに直接接続された前記第３のノードに対してミス応答を生成する、ように構成されている、請求項１７に記載の処理ノード。
【請求項１９】
前記制御ロジックは、
メモリ要求が使用可能にされるようにプローブフィルタを維持し、
前記１つ以上のクライアントの各クライアントがアイドルであると判定したことに応答して、
前記プローブフィルタ内の各エントリを取り消し、
前記プローブフィルタ内のエントリを取り消した結果として受信されたダーティキャッシュラインにより前記処理ノードに接続されたシステムメモリを更新し、
前記複数のリンク及び前記第１のノードの前記１つ以上のクライアントをパワーダウンさせる、ように構成されている、請求項１７に記載の処理ノード。
【請求項２０】
前記１つ以上のクライアントの少なくとも１つのクライアントは、複数のコアを含み、前記処理ノードは、調停割り込みに対して前記複数のコアの割り込み優先度を前記複数のノードに記憶するように構成されている前記複数のノードのマスタノードである、請求項１７に記載の処理ノード。
【発明の詳細な説明】
【背景技術】
【０００１】
関連技術の説明
現代の集積回路（ＩＣ）の電力消費が各世代の半導体チップによる高まる設計問題になっている。電力消費が増大するにつれて、過剰な熱を除去し、ＩＣ故障を防止するために、より大きなファン及びヒートシンクなどのよりコストがかかる冷却システムが利用される必要がある。しかしながら、冷却システムは、システムコストを増大させる。ＩＣの電力散逸制約は、ポータブルコンピュータ及びモバイル通信デバイスについての問題だけでなく、高性能マイクロプロセッサを利用するデスクトップコンピュータ及びサーバについての問題でもある。それらのマイクロプロセッサは、複数のプロセッサコア、またはコア、及びコア内の複数のパイプラインを含む。
【０００２】
様々なサーバなどの様々なコンピューティングデバイスは、システムの機能性をもたらすための複数のタイプのＩＣを統合する、異種統合を利用する。複数の機能は、処理ノードに配置され、複数の機能は、音声／ビデオ（Ａ／Ｖ）データ処理、医療及びビジネス分野のための他の高データ並列アプリケーション、汎用命令セットアーキテクチャ（ＩＳＡ）の処理命令、並びにデジタル、アナログ、混合信号及び無線−周波数（ＲＦ）機能などを含む。複数のタイプのＩＣを統合するようシステムパッケージ化において処理ノードを配置するための様々な選択肢が存在する。処理ノードは、複数のＩＣ、通信ファブリック、電力コントローラ、割り込みコントローラ、及びリンクインタフェースなどを含む。
【０００３】
いくつかのコンピューティングデバイスでは、システムオンチップ（ＳＯＣ）が使用され、他のコンピューティングデバイスでは、処理ノードのより小さく且つより高い発生チップがマルチチップモジュール（ＭＣＭ）において大規模チップとしてパッケージ化される。いくつかのコンピューティングデバイスは、システムインパッケージ（ＳｉＰ）において２つ以上のダイを垂直に堆積し、電気的に接続する、シリコンビア（ＴＳＶ）及び他の機構を通じて、ダイ堆積技術と共にシリコンインターポーザを利用する三次元集積回路（３Ｄ  ＩＣ）を含む。
【０００４】
システムパッケージ化についての選択肢に関わらず、各々が選択されたパッケージのコピーを有する、複数のソケットを有するコンピューティングシステムをパワーダウンさせることは複雑である。各パッケージは、電力コントローラを含み、よって、システムは、複数の電力コントローラを有する。各々の電力コントローラがシステム内の各々の他の電力コントローラに接続される場合、システムをパワーダウンさせるときの通信が容易になる。しかしながら、性能を増大させるためにソケットの数を増加させるなど、システムを拡大することは、各電力コントローラがシステム内の各々の他の電力コントローラに直接接続されることになる場合に困難になる。加えて、複数の接続を経路指定することは、ソケットの間の信号の量を増大させ、インタフェースについての領域を増大させる。更に、処理ノードをパワーダウンさせることは、複数のステップを含む。所与の処理ノードをパワーダウンさせ、次いで、その後すぐ、所与の処理ノードが呼び出されるとき、所与の処理ノードがタスクを扱う準備ができる前に大幅な待ち時間が発生する。したがって、ノードをパワーダウンさせ、その後すぐに再起動させるときに性能が減少する。
【０００５】
上記を考慮して、マルチノードコンピューティングシステムに対して効率的な電力管理を実行する効率的な方法及びシステムが望まれる。
【０００６】
添付図面と共に以下の説明を参照することによって、本明細書で説明される方法及び機構の利点をより良好に理解することができる。
【図面の簡単な説明】
【０００７】
【図１】処理ノードの一実施形態のブロック図である。
【図２】マルチノードコンピューティングシステムの一実施形態のブロック図である。
【図３】マルチノードコンピューティングシステムに対して電力管理を実行する方法の一実施形態のフローチャートである。
【図４】マルチノードコンピューティングシステムに対して電力管理を実行する方法の別の実施形態のフローチャートである。
【図５】マルチノードコンピューティングシステムに対して電力管理を実行する方法の別の実施形態のフローチャートである。
【図６】マルチノードコンピューティングシステムに対して電力管理を実行する方法の別の実施形態のフローチャートである。
【発明を実施するための形態】
【０００８】
本発明は様々な修正及び代替的な形式を許容することができ、特定の実施形態は、図面中の例として示され、本明細書で詳細に説明される。しかしながら、図面及びそれに対する詳細な説明は、開示された特定の形式に本発明を限定することを意図していない。逆に、本発明は、添付の特許請求の範囲によって定義されるような本発明の範囲内に収まる全ての修正、同等物、及び代替物を網羅することが理解されるべきである。
【０００９】
以下の説明では、本明細書で提示される方法及び機構の完全な理解をもたらすために、多数の特定の詳細が示される。しかしながら、当業者は、様々な実施形態がそれらの特定の詳細なしに実施されてもよいことを認識するべきである。いくつかの例では、本明細書で説明されるアプローチを曖昧にすることを回避するために、公知の構造、構成要素、信号、コンピュータプログラム命令、及び技術が詳細には示されていない。例示の単純さ及び簡潔さのために、図面に示される要素は、必ずしも同一縮尺で記述されていないことが認識されよう。例えば、要素のいくつかの寸法は、他の要素に対して拡張されてもよい。
【００１０】
マルチノードコンピューティングシステムに対して効率的な電力管理を実行する様々なシステム、装置、方法、及びコンピュータ可読媒体が開示される。様々な実施形態では、処理ノードは、アプリケーションを処理するための１つ以上のクライアントを含む。ノード内のクライアントの例は、汎用中央処理装置（ＣＰＵ）、グラフィックプロセシングユニット（ＧＰＵ）、アクセラレーテッドプロセシングユニット（ＡＰＵ）、及び入力／出力（Ｉ／Ｏ）デバイスなどを含む。処理ノードはまた、少なくとも電力コントローラ、及び他のノードとメッセージを転送するための複数のリンクインタフェースを含む。本明細書で使用されるように、処理ノードは、ノードとも称される。
【００１１】
いくつかの実施形態では、コンピューティングシステムは、マルチノードシステムであり、マルチノードシステムは、各々がその自身の１つ以上のクライアント及び電力コントローラを有する、ノードの複数のコピーを含む。様々な実施形態では、コンピューティングシステムは、共有メモリアーキテクチャを利用し、共有メモリアーキテクチャでは、所与のノード内の所与のプロセッサは、別のノードのリモートメモリにアクセスするよりも短い待ち時間によりそのローカルメモリにアクセスする。言い換えると、コンピューティングシステムは、非一様メモリアクセス（ＮＵＭＡ）アーキテクチャを利用し、コンピューティングシステム内のノードの各々は、ＮＵＭＡノードである。
【００１２】
複数のノードの第１のノードの電力コントローラは、その１つ以上のクライアントの各クライアントがアイドルであるときを判定する。加えて、電力コントローラは、第１のノードのダイナミックランダムアクセスメモリ（ＤＲＡＭ）など、第１のノードのシステムメモリにアクセスすることを試みているリモートメモリ要求が存在しないときを判定する。それらの条件が満たされると電力コントローラが判定するとき、実施形態では、電力コントローラは、そのリンクのうちの１つ以上の上で１つ以上のノードに、第１のノードのパワーダウンした状態を指定するインジケーションを送信する。その後、第１のノードは、パワーダウンさせるために、そのキャッシュをフラッシュすること、プローブフィルタの各エントリを取り消すこと、及びプローブフィルタ内のエントリを無効にした結果として受信されたダーティキャッシュラインにより第１のノードに接続されたシステムメモリを更新することなど、複数のステップを実行する。その後、ステップは、リンクインタフェースに対してドライバを無効にすること、１つ以上のクライアント及び１つ以上のクライアントとメモリコントローラとの間の通信ファブリック転送トラフィックに対してクロックを無効にすること、及びダイナミックランダムアクセスメモリ（ＤＲＡＭ）が使用されるときにセルフリフレッシュを実行するようシステムメモリを設定することなどを含む。
【００１３】
第１のノードがパワーダウンしたままの時間の量を増大させるために、一実施形態では、上記説明されたように、キャッシュをフラッシュすること、及びプローブフィルタを取り消すことが実行される。他の実施形態では、パワーダウンした第１のノードに直接接続された第２のノードは、第３のノードからブロードキャストプローブを受信し、第２のノードは、第１のノードがパワーダウンしたと第２のノードが判定するときに、パワーダウンした第１のノードに対してミス応答を生成する。第２のノードは、第１のノードに、第１のノードを呼び出し、第１のノードにパワーダウンした状態からアクティブ状態に遷移させるブロードキャストプローブを送信しない。第２のノードは、パワーダウンした第１のノードの代わりに、第３のノードにミス応答を送信する。
【００１４】
いくつかの実施形態では、コンピューティングシステムは、複数のプロセッサコアの割り込み優先度をコンピューティングシステムに記憶するためのマスタノードを含み、割り込み優先度は、調停割り込みに対応する。したがって、調停割り込みは、ブロードキャストメッセージではなく、ポイントツーポイントユニキャストメッセージによりプロセッサコアによって扱われる。同様に、コンピューティングシステム内の複数のプロセッサコアは、複数のプロセッサコアの各プロセッサコアに対して固定割り込み識別子（ＩＤ）の記憶をサポートすることによって、ブロードキャストメッセージではなく、ポイントツーポイントメッセージにより固定割り込みを扱う。したがって、パワーダウンしたノードは、割り込みを扱うためのブロードキャストプローブによっては呼び出されない。それらの実施形態及び他の実施形態が可能であり、考慮される。
【００１５】
図１を参照して、処理ノード１００の一実施形態の全体ブロック図が示される。示されるように、処理ノード１００は、クライアント１１０の各々の間の通信ファブリック１２０、プローブフィルタ１１３、メモリコントローラ１３０、電力コントローラ１７０、及びリンクインタフェース１８０を含む。いくつかの実施形態では、処理ノード１００の構成要素は、システムオンチップ（ＳＯＣ）など、集積回路（ＩＣ）上の個々のダイである。他の実施形態では、構成要素は、システムインパッケージ（ＳｉＰ）またはマルチチップモジュール（ＭＣＭ）内の個々のダイである。
【００１６】
様々な実施形態では、通信ファブリック１２０は、クライアント１１０とメモリコントローラ１３０との間で前後にトラフィックを転送し、それぞれの通信プロトコルをサポートするためのインタフェースを含む。いくつかの実施形態では、通信ファブリック１２０は、少なくとも、要求及び応答を記憶するためのキュー、内部ネットワークにわたって要求を送信する前に受信された要求の間で調停するための選択ロジック、パケットを構築及び復号するためのロジック、並びにパケットに対して経路を選択するためのロジックを含む。
【００１７】
例示される実施形態では、クライアント１１０は、中央処理装置（ＣＰＵ）１１２、グラフィックプロセシングユニット（ＧＰＵ）１１４、及びハブ１１６を含む。ハブ１１６は、マルチメディアエンジン１１８と通信するために使用される。ＣＰＵ１１２、ＧＰＵ１１４、及びマルチメディアエンジン１１８は、アプリケーションを処理することが可能なコンピューティングリソースの例である。示されないが、他の実施形態では、他のタイプのコンピューティングリソースがクライアント１１０に含まれる。実施形態では、ＧＰＵ１１４は、相当な数の並列実行レーンを有する高並列データマイクロアーキテクチャを含む。一実施形態では、マイクロアーキテクチャは、並列実行レーンに対して単一命令複数データ（ＳＩＭＤ）パイプラインを使用する。マルチメディアエンジン１１８は、マルチメディアアプリケーションに対して音声データ及び視覚データを処理するためのプロセッサを含む。
【００１８】
いくつかの実施形態では、ＣＰＵ１１２内の１つ以上のプロセッサコアの各々は、所与の選択された命令セットアーキテクチャ（ＩＳＡ）に従って命令を実行するための回路を含む。様々な実施形態では、ＣＰＵ１１２内のプロセッサコアの各々は、所与のＩＳＡの命令を処理するために使用されるスーパースカラ、マルチスレッドマイクロアーキテクチャを含む。本明細書で使用されるように、プロセッサコアは、コアとも称される。一実施形態では、ＣＰＵ１１２は、各々が２つのソフトウェアスレッドを処理するための２つのハードウェアスレッドを含む、８個のコアを含む。したがって、そのような実施形態では、ＣＰＵ１１２は、１６個のスレッドを同時に処理することが可能である。他の実施形態では、同時マルチスレッドに対するいずれかの数のスレッドがＣＰＵ１１２によってサポートされる。
【００１９】
リンクインタフェース１８０は、リンク上でメッセージを転送することによって、処理ノード１００と他の処理ノードとの間の通信をサポートする。様々な実施形態では、ノードの間でリンクにわたって送信されたメッセージは、１つ以上のノードについての動作状態のインジケーション、要求への応答、割り込み、及び他の情報を含む。様々な実施形態では、各リンクは、２つのノードの間のポイントツーポイント通信チャネルである。物理レベルにおいて、リンクは、１つ以上のレーンを含む。いくつかの実施形態では、リンクインタフェース１８０、前記対応するリンク、及び他のノードは、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）、ＩｎｆｉｎｉＢａｎｄ、ＲａｐｉｄＩＯ、及びＨｙｐｅｒＴｒａｎｓｐｏｒｔなどの通信プロトコル接続を含む。いくつかの実施形態では、リンクインタフェース１８０は、相互接続リンクを介して他のノードと通信するために使用される制御ロジック及びバッファまたはキューを含む。
【００２０】
単一のメモリコントローラ１３０が示されるが、他の実施形態では、別の数のメモリコントローラが処理ノード１００において使用される。様々な実施形態では、メモリコントローラ１３０は、通信ファブリック１２０を介してクライアント１１０からメモリ要求を受信し、メモリ要求をスケジュールし、システムメモリ及びメインメモリのうちの１つ以上にスケジュールされたメモリ要求を送信する。メモリコントローラ１３０はまた、システムメモリ及びメインメモリから応答を受信し、クライアント１１０内の対応する要求元に応答を送信する。様々な実施形態では、システムメモリは、Ｉ／Ｏコントローラ及びバス１６０及びメモリバス１５０を通じてメインメモリからのデータにより充填される。元のメモリ要求を完了するために、要求されたブロックによる対応するキャッシュ充填ラインは、クライアント１１０内でメインメモリからキャッシュメモリサブシステムの対応する１つに搬送される。キャッシュ充填ラインは、キャッシュのうちの１つ以上のレベルに配置される。
【００２１】
いくつかの実施形態では、処理ノード１００のアドレス空間は、少なくともＣＰＵ１１２、ＧＰＵ１１４、及びハブ１１６、並びに入力／出力（Ｉ／Ｏ）周辺機器デバイス（図示せず）及び他のタイプのコンピューティングリソースなどの１つ以上の構成要素にわたって分割される。メモリマップは、どのアドレスがどの構成要素にマッピングされるかを判定し、よって、特定のアドレスについてのメモリ要求がＣＰＵ１１２、ＧＰＵ１１４、及びハブ１１６のどの１つに経路指定されるべきかを判定するために維持される。実施形態では、システムメモリは、様々なダイナミックランダムアクセスメモリ（ＤＲＡＭ）の１つであり、対応するプロトコルは、メモリコントローラ１３０によってサポートされる。プロトコルは、クロックサイクルごとのデータ転送の回数、信号電圧レベル、信号タイミング、信号及びクロック位相、並びにクロック周波数など、情報転送のために使用される値を判定する。いくつかの実施形態では、メインメモリは、様々なタイプの不揮発性の、データのランダムアクセス二次記憶装置の１つである。メインメモリの例は、ハードディスクドライブ（ＨＤＤ）及びソリッドステートディスク（ＳＳＤ）である。
【００２２】
一実施形態では、電力コントローラ１７０は、クライアント１１０からデータを収集する。いくつかの実施形態では、電力コントローラ１７０はまた、メモリコントローラ１３０からデータを収集する。いくつかの実施形態では、収集されたデータは、予め定められたサンプリングされた信号を含む。サンプリングされた信号の切り替えは、切り替えられたキャパシタンスの量を示す。サンプリングするための選択された信号の例は、クロックゲータイネーブル信号、バスドライバイネーブル信号、コンテンツアドレス指定可能メモリ（ＣＡＭ）における不一致、及びＣＡＭワードライン（ＷＬ）ドライバなどを含む。実施形態では、電力コントローラ１７０は、所与のサンプリング間隔の間にノード１００内で電力消費を特徴付けるデータを収集する。
【００２３】
いくつかの実施形態では、ノード１００内のオンダイ電流センサ及び温度センサも、電力コントローラ１７０に情報を送信する。電力コントローラ１７０は、センサ情報、発行命令または発行スレッドのカウント、及びノード１００に対して電力消費を推定する重み付けサンプリングされた信号の合計のうちの１つ以上を使用する。電力コントローラ１７０は、ノード１００が閾値制限を上回って（下回って）動作している場合に電力消費を減少させる（または、増大させる）。いくつかの実施形態では、電力コントローラ１７０は、クライアント１１０内のコンピューティングリソースの各々に対してそれぞれの電力性能状態（Ｐ−状態）を選択する。Ｐ−状態は、少なくとも動作電圧及び動作クロック周波数を含む。様々な実施形態では、電力コントローラ１７０及びノード１００は、Ｎ  Ｐ−状態をサポートし、Ｎは、正の非ゼロの整数である。
【００２４】
様々な実施形態では、処理ノード１００は、マルチノードシステム内の複数のノードの１つのノードである。実施形態では、システムは、複数のサーバのサーバである。時に、サーバにバッチとして送信されるジョブは、各サーバに割り当てられない。所与のサーバは、相当の時間量の間にアイドルになることができる。電力消費を減少させるために、サーバ内の複数のノードは、パワーダウンすることができる。様々な実施形態では、電力コントローラ１７０は、クライアント１１０のうちの１つ以上がアイドルになるときを検出する。クライアント１１０の各々がアイドルになる場合、次いで、実施形態では、電力コントローラ１７０は、リンクインタフェース１８０を介してそのリンクのうちの１つ以上の上で１つ以上のノードに、パワーダウンした状態を指定するインジケーションを中継する。いくつかの実施形態では、電力コントローラ１７０は、ＣＰＵ１１２及びＧＰＵ１１４の各々に、そのキャッシュメモリサブシステム内の各キャッシュをフラッシュするメッセージを送信する。
【００２５】
加えて、電力コントローラ１７０は、プローブフィルタ１１３の各エントリを取り消すと共に、プローブフィルタ１１３内のエントリを取り消した結果として受信されたダーティキャッシュラインによりシステムメモリを更新するメッセージを送信する。その後、電力コントローラ１７０は、リンクインタフェースに対してドライバを無効にし、クライアント１１０及び通信ファブリック１２０、メモリコントローラ１３０に対してクロックを無効にし、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）が使用されるときにセルフリフレッシュを実行するようシステムメモリを設定するメッセージを送信する。
【００２６】
多くのディレクトリに基づくキャッシュコヒーレンシプロトコルは、コンピューティングシステム内の様々なキャッシュの間で通信するための、メモリコントローラなどのコヒーレンシポイントから渡される、メッセージまたはプローブの使用を含む。実施形態では、通信ファブリック１２０は、プローブフィルタ１１３を維持する。様々な実施形態では、プローブフィルタ１１３は、複数のエントリを有するディレクトリとして実装される。プローブフィルタ１１３のエントリは、データのキャッシュされたコピーの存在を示す情報を包含する。いくつかの実施形態では、各エントリは、有効ビット、キャッシュラインのタグ、キャッシュラインのキャッシュコヒーレンシ状態を指定するインジケーション、ノード所有権識別子（ＩＤ）、データのキャッシュされたコピーをローカルシステムメモリに記憶するリモートクライアントとのリモートノードの１つ以上のノードＩＤ、及びクリーン／ダーティ状態、などを記憶する。いくつかの実施形態では、キャッシュコヒーレンシ状態は、修正され、所有され、排他的であり、共有され、及び取り消しされる。
【００２７】
プローブフィルタ１１３内のエントリは、コンピューティングシステム内の他の処理ノードのキャッシュに記憶されたコピーを有する、処理ノード１００内の各キャッシュラインを追跡する。処理ノード１００にローカルに、または別の処理ノードにリモートであるかに関わらず、システムメモリに記憶されたラインがキャッシュされる場合、ラインについてのエントリは次いで、プローブフィルタ１１３において割り振られる。プローブフィルタ１１３のエントリ内の割り振られたエントリの不存在は、特定のラインがキャッシュされていないことを示す。プローブを無条件にブロードキャストするのではなく、特定のコヒーレンシ動作を生じさせるためにプローブが搬送される必要がある特定のサブシステム（データのキャッシュされたコピーを包含することができる）を判定するためにプローブフィルタ１１３が使用される。
【００２８】
様々な実施形態では、ＣＰＵ１１２によって処理されている複数のスレッドの各々は、割り込みをアサートし、割り込みサービスルーチンのアドレスを受信することが可能である。様々な実施形態では、処理ノード１００は、マルチプロセッサコンピューティングシステム内で割り込みを経路指定するための割り込みリダイレクションをサポートするマルチノードコンピューティングシステムの１つのノードである。このプロトコルは、コンピューティングシステムの複数のノード内のプロセッサの間で割り込みを送信する。割り込みモードまたは割り込みタイプに基づいて、割り込みは、割り込み識別子（ＩＤ）に基づいて割り込みを検出するプロセッサから特定のノード内の特定のプロセッサに送信される。一実施例では、ＩＤは、特定のノード内の特定のプロセッサを識別するために使用される。本明細書で使用されるように、それらのタイプの割り込みは、「固定割り込み」と称される。固定割り込みを扱うために選択されたプロセッサは、ＩＤに基づいて固定される。同様に、異なる割り込みモードまたは異なる割り込みタイプに基づいて、割り込みは、調停に基づいて割り込みを検出するプロセッサから特定のノード内の特定のプロセッサに送信される。一実施例では、プロセッサ内の各ハードウェアスレッドまたは各コアは、割り込み優先度を割り当てられ、最下位優先度を有するプロセッサ（複数可）は、アサートされた割り込みを扱うよう、調停ロジックによって選択される。本明細書で使用されるように、それらのタイプの割り込みは、「調停割り込み」と称される。いくつかの実施形態では、異なるプロセッサの間で割り込みを送信するために使用されるプロトコルは、ＡＰＩＣ（アドバンストプログラム可能割り込みコントローラ）プロトコルであり、コアまたはコア内のハードウェアスレッドのいずれかを識別するために使用される識別子は、ＡＰＩＣ  ＩＤである。
【００２９】
実施形態では、割り込みコントローラ１１１は、リンクインタフェース１８０を介して、リモートＣＰＵ上のコアによってアサートされた複数の割り込みに加えて、ＣＰＵ１１２上で稼働する複数のスレッドによってアサートされた複数の割り込みを受信する。割り込みコントローラ１１１はまた、ＡＰＩＣプロトコルなどの選択された割り込み経路指定プロトコルに基づいて、リンクインタフェース１８０を介してＣＰＵ１１２内の他のコア及びリモートＣＰＵ内の他のコアに割り込みを経路指定する。いくつかの実施例では、割り込みコントローラ１１１は、割り込みを使用可能にする他のコアに割り込みを送信する。他のコアは、ローカルまたはリモートであるかに関わらず、割り込みハンドラとも称される、所与の割り込みサービスルーチンを処理することによって割り込みを使用可能にする。いくつかの実施形態では、割り込みコントローラ１１１は、ＣＰＵ１１２の外側に位置し、通信ファブリック１２０を介して、ＧＰＵ１１４、ハブ１１６、Ｉ／Ｏ周辺機器デバイス、及びリモートコンピューティングデバイスなどの複数の他のソースから割り込みを受信する。
【００３０】
様々な実施形態では、処理ノード１００は、コンピューティングシステムにおける割り込みの調停のための複数のプロセッサコアの割り込み優先度を記憶する、マルチノードシステム内のマスタノードである。前の例では、ＣＰＵ１１２は、８個のコアを有し、その各々は、２つのスレッドを同時に処理することが可能である。したがって、一実施形態では、ＣＰＵ１１２は、１つが１６個のハードウェアスレッドの各々に対するものであり、２つがコアごとの割り込み優先度である、調停割り込みに対する１６個の割り込み優先度を有する。他の実施形態では、調停割り込みに対する割り込み優先度の粒度は、コアレベルにあり、所与のコアに対する複数のハードウェアスレッドの各々は、調停割り込みに対して同一の割り込み優先度を有する。更なる他の実施形態では、各スレッドは、同一の割り込み優先度により設定される。スレッドに対する割り込み優先度割り当ての他の組み合わせが可能であり、考慮される。
【００３１】
コンピューティングシステムが４個のノードを有し、その各々がＣＰＵ１１２と同様のＣＰＵを有し、各コアが調停割り込みに対して２つの割り込み優先度を有する場合、次いで、いくつかの実施形態では、コンピューティングシステムは、６４個の割り込み優先度を有する。しかしながら、調停割り込みに対して、実施形態では、最下位割り込み優先度を有するハードウェアスレッド（または、コア）は、調停割り込みを使用可能にするよう割り当てられる。いくつかの実施形態では、割り込みコントローラ１１１は、１つが４個のノードの各々についての調停割り込みに対する割り込み優先度である、４個の割り込み優先度を記憶する。所与のノードに対する１つの割り込み優先度は、所与のノード内のコアに割り当てられた１６個の割り込み優先度の最下位割り込み優先度である。
【００３２】
マスタノード以外の第１のノード内のコアが調停割り込みをアサートするとき、第１のノードは、リンクインタフェース１８０及び通信ファブリック１２０を介して、マスタノードの割り込みコントローラにメッセージをポイントツーポイントで送信する。そのようなケースでは、ブロードキャストメッセージは、第１のノードに１つ以上の割り込み優先度を送信するよう各々の他のノードに通知するために、第１のノードによっては使用されない。第１のノードからのポイントツーポイント通信に応答して、マスタノードの割り込みコントローラ１１１は、４個の記憶された割り込み優先度の最下位割り込み優先度を判定する。実施形態では、マスタノードの割り込みコントローラ１１１はまた、４個の記憶された割り込み優先度の識別された最下位割り込み優先度を有するコアを含む、第２のノードを識別する。様々な実施形態では、マスタノードの割り込みコントローラ１１１は、第２のノード内の識別されたコアに、ポイントツーポイントメッセージにおいて調停割り込みを送信する。したがって、調停割り込みは、ブロードキャストメッセージではなく、ポイントツーポイントユニキャストメッセージにより扱われる。様々な実施形態では、調停割り込みが上記実施例における第１のノードなどのリモートノードによってアサートされるのではなく、マスタノード内のローカルコア、入力／出力（Ｉ／Ｏ）デバイス、またはその他が調停割り込みをアサートするときに同様のポイントツーポイント通信が使用される。
【００３３】
様々な実施形態では、オペレーティングシステムなどのソフトウェアは、パワーダウンしている処理ノード１００内のコアの調停割り込みに対して割り込み優先度を再割り当てする。実施形態では、ソフトウェアは、最大値または活性ノードの割り込み優先度よりも少なくとも大きい値に割り込み優先度を再割り当てする。したがって、パワーダウンしたノードは、コンピューティングシステムにおいてアサートされた調停割り込みを呼び出し及び使用可能にするために、マスタノードによっては選択されない。
【００３４】
ＣＰＵ１１２内のコアが調停割り込みをアサートするとき、メッセージは、割り込みコントローラ１１１に送信される。それに応答して、割り込みコントローラ１１１は、応答において４個の記憶された割り込み優先度の最下位割り込み優先度を送信する。残りのステップは、応答において識別されたノード内の識別されたコアに、ユニキャスト通信において調停割り込みを送信することなど、上記と同様である。再度、ブロードキャストメッセージは送信されない。したがって、パワーダウンしたノードは、調停割り込みを呼び出すためのブロードキャストプローブによって呼び出されない。ブロードキャストメッセージではなく、ユニキャストメッセージを使用することも、調停割り込みに加えて、固定割り込みに対して実行される。
【００３５】
図２を参照して、マルチノードコンピューティングシステム２００の一実施形態の全体ブロック図が示される。例示される実施形態では、パッケージ２１０は、リンク２４０によって相互に直接接続されたノード２２０Ａ及び２２０Ｂを含む。いくつかの実施形態では、パッケージ２１０及び２３０の各々は、サーバ内のマルチソケットマザーボードのソケットに配置されたマルチチップモジュール（ＭＣＭ）である。示されるように、ノード２２０Ａは、クライアント２２２Ａ〜２２２Ｃ、電力コントローラ２２４、及び割り込みコントローラ（ＩＣ）２２８を含む。クライアント２２２Ａ〜２２２Ｃの例は、ＣＰＵ、ＧＰＵ、マルチメディアエンジン、及びＩ／Ｏ周辺機器デバイスなどである。示されるように、少なくともクライアント２２２Ａは、プローブフィルタ（ＰＦ）２２３を含む。
【００３６】
いくつかの実施形態では、割り込みコントローラ２２８は、スタンドアロンコントローラとして使用されるのではなく、クライアント２２２Ａ〜２２２Ｃの１つの中に位置する。様々な実施形態では、電力コントローラ２２４は、電力コントローラ１７０（図１の）機能性を有する。リンクインタフェース、通信ファブリック、メモリインタフェース、位相ロックループ（ＰＬＬ）、または他のクロック生成回路は、例示を容易にするために示されない。
【００３７】
実施形態では、リンク２４０〜２４６は、ＰＣＩ、ＩｎｆｉｎｉＢａｎｄ、ＲａｐｉｄＩＯ、及びＨｙｐｅｒＴｒａｎｓｐｏｒｔなどの通信プロトコル接続を利用する。いくつかの実施形態では、コンピューティングシステム２００は、リンク２４０〜２４６に加えて、ノード２２０Ａ〜２２０Ｄの間の他のリンクを含む。実施形態では、それらの他のリンクは、サービス要求へのデータ伝送のために使用され、リンク２４０〜２４６は、システム全体のパワーダウンをネゴシエートするためのメッセージなどのメッセージングのために使用される。
【００３８】
様々な実施形態では、コンピューティングシステム２００は、ノード２２０Ａ〜２２０Ｄの各々がリクエスタである、階層的トポロジを使用する。階層の低レベルまたは第１のレベルにおいて、各ノードは、各々の他のノードに直接接続される。例えば、ノード２２０Ａは、リンク２４０を通じてパッケージ２１０内のノード２２０Ｂに直接接続される。同様に、ノード２２０Ｃは、リンク２４２を通じてパッケージ２３０内のノード２２０Ｄに直接接続される。階層の上位レベルまたは第２のレベルにおいて、各ノードは、他の階層内の単一のノードに接続される。例えば、パッケージ２１０内のノード２２０Ａは、リンク２４４を通じてパッケージ２３０内のノード２２０Ｃに直接接続される。しかしながら、ノード２２０Ａは、パッケージ２３０内のノード２２０Ｄに直接接続されない。同様に、パッケージ２１０内のノード２２０Ｂは、リンク２４６を通じてパッケージ２３０内のノード２２０Ｄに直接接続される。しかしながら、ノード２２０Ｂは、パッケージ２３０内のノード２２０Ｃに直接接続されない。他の実施形態では、ルートノードとリーフノードとの間の各中間ノードは、単一の上流ノードに直接接続され、単一の下流ノードに直接接続される、ツリーまたはリングトポロジが使用される。他の実施形態では、様々な他のトポロジが可能であり、考慮される。
【００３９】
一実施例では、ノード２２０Ｂがパワーダウンした場合、ノード２２０Ｂのパワーダウンしたままの時間量を増加させるために、一実施形態では、キャッシュをフラッシュし、プローブフィルタ２２３を取り消すことが実行される。加えて、ノード２２０Ａなど、パワーダウンしたノード２２０Ｂに直接接続された別のノードは、特定のブロードキャストプローブに対するパワーダウンしたノード２２０Ｂの代わりに応答をスプーフする。一実施例では、ノード２２０Ａは、ノード２２０Ｃから、キャッシュラインの直近の有効なコピーを検索するブロードキャストプローブを受信する。ノード２２０Ｂが、パワーダウンする前にその１つ以上のキャッシュメモリサブシステムをフラッシュしていたので、ノード２２０Ｂは、要求されたキャッシュラインのコピーを有することができない。
【００４０】
ノード２２０Ｂがパワーダウンしたとノード２２０Ａが判定するとき、ノード２２０Ａは、パワーダウンしたノード２２０Ｂに対してミス応答を生成する。いくつかの実施形態では、ノード２２０Ｂがパワーダウンしたとノード２２０Ｄが判定するとき、ノード２２０Ｄも、パワーダウンしたノード２２０Ｂの代わりにミス応答を生成する。ノード２２０Ａ及び２２０Ｄのいずれも、パワーダウンしたノード２２０Ｂに、ノード２２０Ｂを呼び出し、その空きキャッシュに起因してミス応答を報告するようノード２２０Ｂにパワーダウンした状態からアクティブ状態に単純に遷移させる、ブロードキャストプローブを送信しない。ノード２２０Ａ及びノード２２０Ｄのうちの１つ以上は、パワーダウンしたノード２２０Ｂの代わりにノード２２０Ｃにミス応答を送信する。電力コントローラ２２４及びリンクインタフェースに対するロジック（図示せず）うちの１つ以上は、キャッシュラインに対してブロードキャストプローブの状態を検出し、ノード２２０Ｂがパワーダウンする。したがって、ロジックは、パワーダウンしたノード２２０Ｂの代わりにミス応答をスプーフする。
【００４１】
様々な実施形態では、コンピューティングシステム２００は、ノード２２０Ａ〜２２０Ｄの所与の１つ内の所与のプロセッサが、別のノードのリモートメモリにアクセスするよりも短い待ち時間によりそのローカルメモリにアクセスする、共有メモリアーキテクチャを利用する。言い換えると、コンピューティングシステム２００は、非一様メモリアクセス（ＮＵＭＡ）アーキテクチャを利用し、ノード２２０Ａ〜２２０Ｄの各々は、ＮＵＭＡノードである。実施形態では、ノード２２０Ａ内の通信ファブリック（図示せず）は、メモリ要求が使用可能にされるようにプローブフィルタ（ＰＦ）２２３を維持する。様々な実施形態では、プローブフィルタ２２３は、プローブフィルタ１１３（図１の）と同一の機能性を有し、同一のタイプの情報を記憶する。
【００４２】
実施形態では、プローブフィルタ２２３内のエントリは、ノード２２０Ｂ〜２２０Ｄのうちの１つ以上がデータのブロックの共有コピーを包含することを示す情報を包含する。そのブロックへの排他的アクセスのためのコマンドに応答して、取り消しプローブは、ノード２２０Ｂ〜２２０Ｄのうちの１つ以上に搬送される。概して、要求を発行するノード２２０Ａ〜２２０Ｄのノードは、「要求」ノードと称される。ノード２２０Ａ〜２２０Ｄのノードは、要求のメモリアドレスがそのノードに結合されたシステムメモリにマッピングする場合に「ホーム」ノードと称される。ノード２２０Ａ〜２２０Ｄのノードは、そのノード内のキャッシュがメモリブロックの直近のコピーを現在記憶している場合に「所有者」ノードと称される。プローブは、キャッシュがブロックのコピーを有しているかどうかを判定し、任意選択で、キャッシュがブロックを配置するべき状態を示すために使用される。プローブを受信する各ノードは、そのプローブフィルタをチェックし、プローブに応答する。全てのプローブ応答が受信されると、コマンドが完了に進む。
【００４３】
ノード２２０Ａの電力コントローラ２２４がクライアント２２２Ａ〜２２２Ｃのそれぞれがアイドルであると判定し、ノード２２０Ａのシステムメモリにアクセスすることを試みているリモートメモリ要求が存在しないと判定するとき、実施形態では、システム全体電力コントローラ２２４は、ノード２２０Ｂ〜２２０Ｄのうちの１つ以上に、ノード２２０Ａのパワーダウンした状態を指定するインジケーションを送信する。その後、システム全体電力コントローラ２２４は、クライアント２２２Ａ〜２２２Ｃに、それらのキャッシュをフラッシュし、プローブフィルタ２２３などのプローブフィルタの各エントリを取り消すメッセージを送信する。ノード２２０Ａは、プローブフィルタ２２３内のエントリを取り消した結果として受信されたダーティキャッシュラインによりそのシステムメモリを更新する。
【００４４】
いくつかの実施形態では、電力コントローラ２２４は、上記ステップが実行された後、ノード２２０Ａのパワーダウンを進める。他の実施形態では、電力コントローラ２２４は、上記ステップが実行された後に所与の待ち時間は経過した場合、パワーダウンを進める。所与の待ち時間が経過しておらず、タスクが受信される場合、実施形態では、電力コントローラ２２４は、ノード２２０Ａをアイドル状態からアクティブ状態に遷移させ、そのリンク２４０及び２４４の各々の上でアクティブ状態のインジケーションを送信し、クライアント２２２Ａ〜２２２Ｃに、受信されたタスクを処理するインジケーションを送信する。更なる他の実施形態では、電力コントローラ２２４は、ノード２２０Ａのパワーダウンを進めるかどうか、または受信されたタスクを処理するかどうかを判定するために、待ち時間に従って追加の情報を使用する。追加の情報の例は、タスクに対するサービス品質（ＱｏＳ）または他の優先度レベル、プロセスまたはソフトウェアスレッド識別子（ＩＤ）、及びクライアント２２２Ａ〜２２２Ｃの１つを識別するハードウェアＩＤなどである。ノード２２０Ａがパワーダウンしていると電力コントローラ２２４が判定する場合、次いで、実施形態では、電力コントローラ２２４は、リンクインタフェースに対してドライバを無効にし、クライアント２２２Ａ〜２２２Ｃに対してクロックを無効にし、ＤＲＡＭが使用されるときにセルフリフレッシュを実行するようシステムメモリを設定する。
【００４５】
電力コントローラ２２４がノード２２０Ａをパワーダウンさせた直後を含むいずれかのときに、呼び出し状態が発生してもよい。呼び出し状態は、ローカルキャッシュプローブに対して活性ノードからリモート要求を受信すること、システムメモリ内のローカルデータに対して活性ノードからリモートメモリ要求を受信すること、及びオペレーティングシステムから割り当てられたタスクを受信することなどのうちの１つ以上を含む。上記ステップは、パワーダウンさせる前にキャッシュをフラッシュすること、パワーダウンさせる前にプローブフィルタを取り消すこと、ノード２２０Ａ〜２２０Ｄのそれぞれに固定割り込みＩＤを記憶すること、ノード２２０Ａ〜２２０Ｄのマスタノードにノードに対する最下位割り込み優先度を記憶すること、及び特定のキャッシュラインを探索するブロードキャストプローブに対してパワーダウンしたノードの代わりにミス応答をスプーフすることを含む。加えて、オペレーティングシステムなどのソフトウェアは、更新がない初期の固定割り込みＩＤを維持することに加え、タスクを処理するようパワーダウンしたノードを呼び出すのではなく、ノードがスケジューリングタスクによってパワーダウンした状態にあるままでいる時間量を長くすること、及び活性ノードにデータを移動させることを支援する。
【００４６】
様々な実施形態では、ノード２２０Ａは、コンピューティングシステム２００内のマスタノードであり、割り込みコントローラ２２８は、調停割り込みに対して複数のプロセッサコアの割り込み優先度をコンピューティングシステム２００に記憶する。実施形態では、ブロードキャストメッセージではなく、ユニキャストメッセージにより調停割り込みを扱うために使用されるステップは、処理ノード１００に対する前に説明されたステップである。例えば、調停割り込みは、最下位割り込み優先度に基づいて、調停ロジックによって選択されたプロセッサコアによって使用可能にされる。いくつかの実施形態では、割り込みコントローラ２２８はまた、プロセッサコアの各々に対する固定割り込み識別子（ＩＤ）をコンピューティングシステム２００に記憶する。実施形態では、固定割り込み識別子（ＩＤ）は、アドバンストプログラム可能割り込みコントローラ（ＡＰＩＣ）ＩＤである。調停割り込みとは対照的に、コンピューティングシステム２００内の所与のプロセッサコアが固定割り込みをアサートするとき、所与のプロセッサコアは、特定のプロセッサコアに、アサートされた固定割り込みに一致する固定割り込みＩＤと共に固定割り込みを送信する必要がある。
【００４７】
実施形態では、固定割り込みＩＤは、順次方式において、オペレーティングシステムなどのソフトウェアによって割り当てられる。したがって、ノード２２０Ａ内の割り込みコントローラ２２８及びノード２２０Ｂ〜２２０Ｄ内の各々の割り込みコントローラは、各々の個々の固定割り込みＩＤを記憶するのではなく、固定割り込みＩＤの範囲を記憶する。ＣＰＵが８個のコアを含み、その各々が２つのソフトウェアスレッドを処理するための２つのハードウェアスレッドを含む、前の例を使用して、ＣＰＵは、１６個の固定割り込みＩＤを有する。例示される実施形態では、コンピューティングシステム２００は、４個のノードを有し、その各々は、同様のＣＰＵを有し、よって、６４個の固定割り込みＩＤが存在する。ノード２２０Ａ〜２２０Ｄのそれぞれが個々の固定割り込みＩＤを記憶するために６４個のエントリテーブルを使用するのではなく、実施形態では、ノード２２０Ａ〜２２０Ｄのそれぞれは、各々のノードに対して２つの固定割り込みＩＤ、または合計で８個の固定割り込みＩＤを記憶する。
【００４８】
一実施形態では、ノード２２０Ａ〜２２０Ｄの各々は、各ノードに対して、順次的な固定割り込みＩＤの範囲の開始固定割り込みＩＤ及び終了固定割り込みをコンピューティングシステム２００に記憶する。例えば、オペレーティングシステムがノード２２０Ａに固定割り込みＩＤ０〜１５を順次的に割り当てる場合、次いで、ノード２２０Ａ〜２２０Ｄのそれぞれは、１６個の固定割り込みＩＤの各々ではなく、ノード２２０Ａに対して値０及び１５を記憶する。コンピューティングシステム２００におけるノード２２０Ｃ内の所与のコアが固定割り込みＩＤ９により固定割り込みをアサートするとき、コンピューティングシステム２００に対する固定割り込みＩＤの相対的に小さな記憶装置へのルックアップは、ノード２２０ＡがＩＤ９により固定割り込みを使用可能にするために割り当てられたプロセッサコアを有することを示す。その後、ノード２２０Ｃは、固定割り込みＩＤ９を割り当てられたプロセッサコアにより固定割り込みを使用可能にするよう、ノード２２０Ａにユニキャストメッセージを送信する。ＩＤ９により固定割り込みを使用可能にするために割り当てられたプロセッサコアを有するノード２２０Ａ〜２２０Ｄのノードを発見するよう、ブロードキャストプローブは送信されない。
【００４９】
相対的に稀であるが、オペレーティングシステムが固定割り込みＩＤを再割り当てすることが可能である。いくつかの実施形態では、ノード２２０Ａ〜２２０Ｄのうちの１つ以上は、割り当てられた固定割り込みＩＤの初期のソフトウェアコピーをスヌープする。一実施形態では、メモリアドレス範囲などの位置が既知であり、その後にチェックが続く読み出し操作は、いずれかの変更が行われたかどうかを判定するよう実行される。別の実施形態では、ソフトウェア処理は、初期値をチェックし、結果を報告するよう呼び出される。初期の固定割り込みＩＤの更新が行われる場合、次いで、一実施形態では、ノード２２０Ａ〜２２０Ｄの各々は、固定割り込みＩＤのそのコピーを取り消す。それに続いて、ブロードキャストメッセージは、固定割り込みを使用可能にするために使用される。別の実施形態では、ノード２２０Ａ〜２２０Ｄの各々は、固定割り込みＩＤのそのコピーを更新する。それに続いて、ユニキャストメッセージはなお、固定割り込みを使用可能にするために使用される。
【００５０】
ここで、図３を参照して、マルチノードコンピューティングシステムに対して電力管理を実行する方法３００の一実施形態が示される。議論の目的のため、この実施形態におけるステップ（図４〜６におけるステップと共に）は、順番に示される。しかしながら、説明される方法の様々な実施形態では、説明される要素のうちの１つ以上は、同時に実行され、示されるのとは異なる順序で実行され、または完全に省略されることに留意されよう。他の追加の要素も必要に応じて実行される。本明細書で説明される様々なシステムまたは装置のいずれかは、方法３００を実装するように構成される。
【００５１】
固定割り込み識別子（ＩＤ）は、マルチノードシステムにおいて初期化される（ブロック３０２）。固定割り込みＩＤは、どのプロセッサコアまたはプロセッサコア内のどのハードウェアスレッドが一致する固定割り込みＩＤにより固定割り込みを使用可能にするよう割り当てられるかを指定する。様々な実施形態では、オペレーティングシステムは、固定割り込みＩＤを初期化し、実施形態では、固定割り込みＩＤは、順次方式において初期化される。固定割り込みＩＤは、コンピューティングシステム内のノードにブロードキャストされる（ブロック３０４）。例えば、オペレーティングシステムは、コンピューティングシステムに対して、ノードの各々に固定割り込みＩＤのインジケーションを送信する。代わりに、１つ以上のノードは、コンピューティングシステムに対して、固定割り込みＩＤを取得するよう特定のメモリ位置をスヌープする。更なる他の実施例では、１つ以上のノードは、コンピューティングシステムに対して固定割り込みＩＤを判定するよう、オペレーティングシステムへのシステムコールを実行する。各ノードは、受信された固定割り込みＩＤに基づいて、各ノードに対して固定割り込みＩＤのコピーを更新する（ブロック３０６）。したがって、ブロードキャストメッセージは、固定割り込みを扱うために必要とされない。
【００５２】
複数のノードはタスクを処理する（ブロック３０８）。ノード内の１つ以上のクライアントは、コンピュータプログラムまたはソフトウェアアプリケーションを実行する。いくつかの実施形態では、複数のノードは、マルチソケットサーバ内にあり、バッチジョブは、複数のノードのうちの１つ以上にタスクを割り当てるオペレーティングシステムによって受信される。様々な実施形態では、マルチノードコンピューティングシステムは、非一様メモリアクセス（ＮＵＭＡ）アーキテクチャを利用し、ノードの各々は、ＮＵＭＡノードである。
【００５３】
第１のノードが固定割り込みをアサートし（条件ブロック３１０の分岐で「はい」）、記憶された固定割り込みＩＤがなおも使用されている場合（条件ブロック３１２の分岐で「はい」）、次いで、固定割り込みを使用可能にする第２のノードは、記憶された固定割り込みＩＤに基づいて識別される（ブロック３１４）。固定割り込みは、ユニキャストメッセージにおいて第２のノードに送信される（ブロック３２４）。固定割り込みを使用可能にするためにブロードキャストメッセージが使用されない。したがって、第２のノードがアクティブ状態にある場合、固定割り込みを使用可能にするようパワーダウンしたノードは呼び出されていない。
【００５４】
ノードが固定割り込みをアサートしない場合（条件ブロック３１０の分岐で「いいえ」）、次いで、初期化された固定割り込みＩＤのソフトウェアコピーがスヌープされる（ブロック３１６）。前に説明されたように、コンピューティングシステム内のノードのうちの１つ以上は、割り当てられた固定割り込みＩＤの初期のソフトウェアコピーをスヌープする。一実施形態では、メモリアドレス範囲などの位置が既知であり、その後にチェックが続く読み出し操作は、いずれかの変更が行われたかどうかを判定するよう実行される。別の実施形態では、ソフトウェア処理は、初期値をチェックし、結果を報告するよう呼び出される。いずれかの更新が行われると判定される場合（条件ブロック３１８の分岐で「はい」）、次いで、複数のノード内の固定割り込みＩＤの記憶は、更新され、または取り消されるかのいずれかである（ブロック３２０）。取り消しまたは更新する決定は、更新の頻度及び固定割り込みＩＤのコピーを記憶するために使用される方式に基づいた設計選択である。前に説明されたように、各々の個々の固定割り込みＩＤではなく、固定割り込みＩＤの範囲が記憶される。範囲を記憶することは、使用される記憶の量を減少させる。
【００５５】
更新が行われないと判定される場合（条件ブロック３１８の分岐で「いいえ」）、次いで、方法３００の制御フローは、タスクが複数のノードによって処理されるブロック３０８に戻る。第１のノードが固定割り込みをアサートするが（条件ブロック３１０の分岐で「はい」）、記憶された固定割り込みＩＤがもはや使用されない場合（条件ブロック３１２の分岐で「いいえ」）、次いで、固定割り込みを使用可能にする第２のノードは、システム内の他のノードへのブロードキャストメッセージに基づいて識別される（ブロック３２２）。その後、固定割り込みは、ユニキャストメッセージにおいて第２のノードに送信される（ブロック３２４）。
【００５６】
ここで、図４を参照して、マルチノードコンピューティングシステムに対して電力管理を実行する方法４００の別の実施形態が示される。方法３００と同様に、方法４００に対するマルチノードコンピューティングシステムは、非一様メモリアクセス（ＮＵＭＡ）アーキテクチャを利用し、ノードの各々は、ＮＵＭＡノードである。調停割り込みに対する割り込み優先度は、マルチノードシステムにおいて初期化される（ブロック４０２）。実施形態では、最下位評価割り込み優先度は、どのプロセッサコアまたはプロセッサコア内のどのハードウェアスレッドが調停割り込みを使用可能にするよう割り当てられるかを指定する。
【００５７】
割り込み優先度は、コンピューティングシステム内の複数のノードのマスタノードにブロードキャストされる（ブロック４０４）。例えば、オペレーティングシステムは、マスタモードに、コンピューティングシステムに対する割り込み優先度のインジケーションを送信する。代わりに、マスタノードは、調停割り込みに対する割り込み優先度を取得するよう、特定のメモリ位置をスヌープする。更なる他の実施例では、マスタノードは、コンピューティングシステムに対して割り込み優先度を判定するよう、オペレーティングシステムへのシステムコールを実行する。
【００５８】
複数のノードは、タスクを実行する（ブロック４０６）。ノード内の１つ以上のクライアントは、コンピュータプログラムまたはソフトウェアアプリケーションを実行する。いくつかの実施形態では、複数のノードは、マルチソケットサーバ内にあり、バッチジョブは、複数のノードのうちの１つ以上にタスクを割り当てるオペレーティングシステムによって受信される。様々な実施形態では、オペレーティングシステムがコアの割り込み優先度を更新することを可能にするバックグラウンド処理が稼働する。コアに対する割り込み優先度が更新される場合（条件ブロック４０８の分岐で「はい」）、次いで、コアに対する更新された割り込み優先度は、マスタノードに送信される（ブロック４１０）。いくつかの実施形態では、マスタノードは、各ノードに対する最下位割り込み優先度のみを記憶する。最下位割り込み優先度が更新されない場合、次いで、実施形態では、更新がマスタノードに送信されない。
【００５９】
ノードが調停割り込みをアサートしない場合（条件ブロック４１２の分岐で「いいえ」）、次いで、方法４００の制御フローは、複数のノードがタスクを処理するブロック４０６に戻る。第１のノードが調停割り込みをアサートする場合（条件ブロック４１２の分岐で「はい」）、次いで、コアに対して最下位優先度を有するノードを識別する要求がマスタノードに送信される（ブロック４１４）。要求は、複数のブロードキャストメッセージではなく、単一のユニキャストメッセージである。マスタノードからの返信に基づいて、調停割り込みを使用可能にする第２のノードが識別される（ブロック４１６）。
【００６０】
複数のコアが同一の割り込み優先度を有するとき、実施形態では、マスタノードは、複数のノードから活性ノードを選択する。複数の活性ノードが存在する場合、次いで、マスタノードは、ラウンドロビン方式、要求ノードからの最小数のホップを有するノードを選択する距離方式、または他の選択方式を使用する。調停割り込みは、ユニキャストメッセージにおいて第２のノードに送信される（ブロック４１８）。ブロードキャストメッセージは、調停割り込みを使用可能にするために使用されない。したがって、マスタノード及び第２のノードの各々がアクティブ状態にある場合、固定割り込みを使用可能にするようパワーダウンしたノードは呼び出されていない。
【００６１】
ここで、図５を参照して、マルチノードコンピューティングシステムに対して電力管理を実行する方法５００の別の実施形態が示される。方法３００及び４００と同様に、方法５００に対するマルチノードコンピューティングシステムは、非一様メモリアクセス（ＮＵＭＡ）アーキテクチャを利用し、ノードの各々は、ＮＵＭＡノードである。複数のノードは、タスクを処理する（ブロック５０２）。複数のノードの各々は、メモリ要求が使用可能にされるようにプローブフィルタを維持する（ブロック５０４）。
【００６２】
所与のノードは、その１つ以上のクライアントの各々がアイドルであると判定する場合（条件ブロック５０６の分岐で「はい」）、次いで、所与のノードは、プローブフィルタ内の各々のエントリを取り消す（ブロック５０８）。いくつかの実施形態では、所与のノードはまた、プローブフィルタ内のエントリを取り消す前に、そのシステムメモリにアクセスすることを試みているリモートメモリ要求が存在しないと判定する。所与のノードは、取り消されたエントリ及び対応するメッセージまたはリモートノードに送信されたプローブに起因して受信される、リモートノードに記憶されたダーティキャッシュラインによりそのシステムメモリを更新する（ブロック５１０）。その後、所与のノードがパワーダウンする（ブロック５１２）。様々な実施形態では、所与のノードをパワーダウンさせることは、リンクインタフェースに対してドライバを無効にすること、クライアント及び通信ファブリックに対してクロックを無効にすること、並びにＤＲＡＭが使用されるときにセルフリフレッシュを実行するようシステムメモリを設定することのうちの１つ以上を含む。
【００６３】
ここで、図６を参照して、マルチノードコンピューティングシステムに対して電力管理を実行する方法６００の別の実施形態が示される。方法３００〜５００と同様に、方法６００に対するマルチノードコンピューティングシステムは、非一様メモリアクセス（ＮＵＭＡ）アーキテクチャを利用し、ノードの各々は、ＮＵＭＡノードである。複数のノードは、タスクを処理する（ブロック６０２）。第１のノードがキャッシュラインに対してブロードキャストプローブを生成する場合（条件ブロック６０４の分岐で「はい」）、次いで、ブロードキャストプローブは、システム内の他のノードに送信される（ブロック６０６）。コンピューティングシステム内の第２のノードは、ブロードキャストプローブを受信する（ブロック６０８）。
【００６４】
いずれかの隣接するノードがパワーダウンすると第２のノードが判定しない場合（条件ブロック６１０の分岐で「いいえ」）、次いで、第２のノードは、第２のノードに対して生成された応答を第２のノードから第１のノードに送信する（ブロック６１２）。第２のノードはまた、選択されたノードトポロジにおいて使用されるノードの接続性に基づいて、１つ以上の他の隣接するノードにブロードキャストプローブを中継する。
【００６５】
隣接する第３のノードがパワーダウンすると第２のノードが判定する場合（条件ブロック６１０の分岐で「はい」）、次いで、第２のノードは、第３のノードにブロードキャストプローブを送信することを行わない（ブロック６１４）。第２のノードは、第３のノードに対してミス応答を生成する（ブロック６１６）。第２のノードは、ミス応答を第２のノードから第１のノードに送信する（ブロック６１８）。したがって、第２のノードは、特定のキャッシュラインを探索するブロードキャストプローブに対して、パワーダウンした第３のノードの代わりに、ミス応答をスプーフする。ミス応答により応答するために、第３のノードは呼び出されない。その後、方法６００の制御フローは、ブロック６１２に移動する。
【００６６】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令は、前に説明された方法及び／または機構を実装するために使用される。プログラム命令は、Ｃなどの高レベルのプログラミング言語においてハードウェアの挙動を記述する。代わりに、Ｖｅｒｉｌｏｇなどのハードウェア設計言語（ＨＤＬ）が使用される。プログラム命令は、非一時的コンピュータ可読記憶媒体に記憶される。多数のタイプの記憶媒体が利用可能である。記憶媒体は、プログラム実行のためにコンピューティングシステムにプログラム命令及び付随するデータを提供するための使用の間に、コンピューティングシステムによってアクセス可能である。コンピューティングシステムは、プログラム命令を実行するように構成された少なくとも１つ以上のメモリ及び１つ以上のプロセッサを含む。
【００６７】
上記説明された実施形態は、実装態様の非限定的な例にすぎないことが強調されるべきである。上記開示が完全に認識されると、多数の変形及び修正が当業者にとって明らかになるであろう。以下の特許請求の範囲は、全てのそのような変形及び修正を包含するものと解釈されることが意図される。
【図１】
2021507412.tif 000003
【図２】
2021507412.tif 000004
【図３】
2021507412.tif 000005
【図４】
2021507412.tif 000006
【図５】
2021507412.tif 000007
【図６】
2021507412.tif 000008
【国際調査報告】
2021507412.tif 000009
2021507412.tif 000010
2021507412.tif 000011