(57)【要約】マルチノード高性能コンピュータシステム内のメモリ内のデータにアクセスする装置および方法は、要求エージェントと、ホームエージェントとを有する。要求エージェントが、高性能コンピュータシステムの第１のノードのメンバである一方で、ホームエージェントは、高性能コンピュータシステムの第２のノードのメンバである。ホームエージェントは、順序付けられていないネットワークを横断して特定のメモリ内のデータを要求エージェントに向けて転送し、スヌープ要求が要求エージェントに送信されるべきことを決定する。要求エージェントが第２のノードの特定のメモリ内の要求されたデータを受信したことを決定した後、ホームエージェントは、順序付けられていないネットワークを横断してスヌープ要求を要求エージェントに転送する。
2017510921.tif 000002
【特許請求の範囲】
【請求項１】
要求エージェントおよびホームエージェントを有するマルチノード高性能コンピュータシステム内のメモリ内のデータにアクセスする方法であって、前記要求エージェントは、前記高性能コンピュータシステムの第１のノードのメンバであり、前記ホームエージェントは、前記高性能コンピュータシステムの第２のノードのメンバであり、前記方法は、
前記要求エージェントが、前記高性能コンピュータシステム内の順序付けられていないネットワークを横断してデータ要求を前記ホームエージェントに転送することであって、前記データ要求は、前記高性能コンピュータシステムの前記第２のノードの特定のメモリ内のデータを要求する、ことと、
前記ホームエージェントが、前記順序付けられていないネットワークを横断して前記特定のメモリ内の前記データを前記要求エージェントに向けて転送することと、
前記ホームエージェントが、スヌープ要求が前記要求エージェントに送信されるべきことを決定することであって、前記スヌープ要求は、前記ホームエージェントが前記特定のメモリ内の前記データを前記要求エージェントに向けて転送した後、前記要求エージェントに転送されるべきである、ことと、
前記ホームエージェントが、前記要求エージェントが前記第２のノードの前記特定のメモリ内の前記要求されたデータを受信したことを決定することと、
前記ホームエージェントが、前記要求エージェントが前記特定のメモリ内の前記要求されたデータを受信したことを決定することに応答して、前記順序付けられていないネットワークを横断して前記スヌープ要求を前記要求エージェントに転送することと
を含む、方法。
【請求項２】
前記要求エージェントが、前記スヌープ要求の受信後、スヌープ応答メッセージを前記ホームエージェントに向けて転送することをさらに含み、前記スヌープ応答メッセージは、前記要求エージェントが前記特定のメモリの制御を解放したことを示す、請求項１に記載の方法。
【請求項３】
前記要求エージェントが、前記順序付けられていないネットワークを横断して確認メッセージを前記ホームエージェントに向けて転送することであって、前記確認メッセージは、前記要求エージェントが前記第２のノードの前記特定のメモリ内の前記要求されたデータを受信したことを示す情報を有する、ことと、
前記ホームエージェントが、前記確認メッセージを受信することであって、前記ホームエージェントによる前記確認メッセージの受信は、前記要求エージェントが前記要求されたデータを受信したことを前記ホームエージェントが決定することを可能にする、ことと
をさらに含む、請求項１に記載の方法。
【請求項４】
前記高性能コンピュータシステムは、少なくとも１つの他の要求エージェントを有し、前記方法は、
前記ホームエージェントが、前記他の要求エージェントのうちの１つ以上のものが前記特定のメモリへのアクセスを要求しているかどうかを決定することをさらに含み、いかなる他の要求エージェントも前記特定のメモリへのアクセスを要求していないことを前記ホームエージェントが決定した場合、応答して、前記ホームエージェントは、前記要求エージェントが前記特定のメモリ内の前記要求されたデータを受信したことを決定することなく、前記スヌープ要求を転送する、請求項１に記載の方法。
【請求項５】
前記ホームエージェントは、少なくとも１つの他の要求エージェントが前記特定のメモリ内の前記データを要求したことを決定することによって、複数の他の要求エージェントがアクセスを要求しているかどうかを決定する、請求項４に記載の方法。
【請求項６】
前記ホームエージェントは、データメッセージの一部として、前記特定のメモリ内の前記データを転送し、前記データメッセージは、１つ以上の他の要求エージェントが前記特定のメモリへのアクセスを要求しているかどうかを示すフィールドを有する、請求項４に記載の方法。
【請求項７】
１つ以上の他の要求エージェントが前記特定のメモリへのアクセスを要求していることを前記フィールドが示す場合のみ、前記要求エージェントが、前記順序付けられていないネットワークを横断して前記ホームエージェントに向かう確認メッセージを生成することをさらに含み、前記確認メッセージは、前記要求エージェントが前記第２のノードの前記特定のメモリ内の前記要求されたデータを受信したことを示す情報を有し、前記ホームエージェントによる前記確認メッセージの受信は、前記要求エージェントが前記要求されたデータを受信したことを前記ホームエージェントが決定することを可能にする、請求項６に記載の方法。
【請求項８】
前記ホームエージェントは、前記第２のノード内のプロセスエージェントの一部であり、前記ホームエージェントは、前記第２のノードの前記特定のメモリを管理する、請求項１に記載の方法。
【請求項９】
前記高性能コンピュータシステム内の前記順序付けられていないネットワークは、異なるノード内のエージェント間でメッセージを転送するように構成され、前記ホームエージェントは、前記特定のメモリ内のデータに対する要求に関するエージェント要求メッセージの順序の記録を維持していない、請求項１に記載の方法。
【請求項１０】
前記特定のメモリの前記データを受信した後、前記要求エージェントは、少なくとも前記ホームエージェントからの前記スヌープ要求の受信まで、前記特定のメモリの前記データの処理を制御し、前記スヌープ要求の受信は、前記要求エージェントに前記特定のメモリの前記データの制御を手放させる、請求項１に記載の方法。
【請求項１１】
高性能コンピュータシステムであって、
第１のノード内の要求エージェントと、
第２のノード内のホームエージェントと、
前記第２のノード内の特定のメモリと、
前記要求エージェントと前記ホームエージェントとの間の電子通信を可能にするように構成されている順序付けられていないネットワークと
を備え、
前記要求エージェントは、前記高性能コンピュータシステム内の前記順序付けられていないネットワークを横断してデータ要求を前記ホームエージェントに転送するように構成され、前記データ要求は、前記高性能コンピュータシステムの前記第２のノードの前記特定のメモリ内のデータを要求し、
前記ホームエージェントは、前記順序付けられていないネットワークを横断して前記特定のメモリ内の前記データを選択的に転送するように構成され、前記ホームエージェントは、スヌープ要求が前記要求エージェントに送信されるべきことを決定するようにさらに構成され、前記ホームエージェントは、ｉ）前記ホームエージェントが前記特定のメモリ内の前記データを前記要求エージェントに向けて転送しており、かつ、ｉｉ）前記要求エージェントが前記特定のメモリ内の前記データを受信したかどうかを前記ホームエージェントが決定してない場合、前記スヌープ要求を保持するように構成され、前記ホームエージェントは、前記要求エージェントが前記特定のメモリ内の前記データを受信したことを決定した後、前記順序付けられていないネットワークを横断して前記スヌープ要求を転送するようにさらに構成されている、高性能コンピュータシステム。
【請求項１２】
前記要求エージェントは、前記順序付けられていないネットワークを横断して確認メッセージを前記ホームエージェントに向けて転送するように構成され、前記確認メッセージは、前記要求エージェントが前記第２のノードの前記特定のメモリ内の前記要求されたデータを受信したことを示す情報を有し、前記ホームエージェントによる前記確認メッセージの受信は、前記要求エージェントが前記要求されたデータを受信したことを前記ホームエージェントが決定することを可能にする、請求項１１に記載の高性能コンピュータシステム。
【請求項１３】
第３のノードをさらに備え、前記ホームノードは、前記第１のノード内または前記第３のノード内の第２の要求エージェントが前記特定のメモリ内の前記データを要求することにより、要求対立を生じさせているかどうかを決定するように構成され、
前記ホームエージェントは、要求対立が生じさせられていないと決定された場合、応答して、前記ホームエージェントが、前記要求エージェントが前記特定のメモリ内の前記データを受信したかどうかを決定することなく、前記スヌープ要求を転送するように構成されている、請求項１１に記載の高性能コンピュータシステム。
【請求項１４】
第３のノードをさらに備え、前記ホームエージェントは、前記第１のノード内または前記第３のノード内の第２の要求エージェントが前記特定のメモリ内の前記データを要求することにより、要求対立を生じさせているかどうかを決定するように構成され、
前記ホームエージェントは、要求対立が生じさせられていないと決定された場合、ｉ）前記ホームエージェントが前記特定のメモリ内の前記データを前記要求エージェントに向けて転送しており、かつ、前記要求エージェントが前記特定のメモリ内の前記データを受信したかどうかを決定していない場合、応答して、前記ホームエージェントが前記スヌープ要求を保持するように構成され、前記ホームエージェントは、前記要求エージェントが前記特定のメモリ内の前記データを受信したことを決定した後、前記スヌープ要求を転送するように構成されている、
請求項１１に記載の高性能コンピュータシステム。
【請求項１５】
前記第２のノードは、複数のマイクロプロセッサと、メモリと、前記マイクロプロセッサおよびメモリと連結されている制御集積回路とを備え、前記集積回路は、前記第２のノードの動作を制御および調整し、データ通信バスを横断して前記第１のノードと通信するためのインターフェースを有し、前記制御集積回路は、前記ホームエージェントを少なくとも部分的に実装する、請求項１１に記載の高性能コンピュータシステム。
【請求項１６】
要求エージェントおよびホームエージェントを有するマルチノード高性能コンピュータシステム内のメモリ内のデータにアクセスするために高性能コンピュータシステム上で使用するためのコンピュータプログラム製品であって、前記要求エージェントは、前記高性能コンピュータシステムの第１のノードのメンバであり、前記ホームエージェントは、前記高性能コンピュータシステムの第２のノードのメンバであり、前記コンピュータプログラム製品は、コンピュータ読み取り可能なプログラムコードを有する有形の非一過性コンピュータ使用可能媒体を備え、前記コンピュータ読み取り可能なプログラムコードは、
前記高性能コンピュータシステム内の順序付けられていないネットワークを横断してデータ要求を前記ホームエージェントに転送するように、前記要求エージェントを制御することであって、前記データ要求は、前記高性能コンピュータシステムの前記第２のノードの前記特定のメモリ内のデータを要求する、ことと、
前記順序付けられていないネットワークを横断して前記特定のメモリ内の前記データを前記要求エージェントに向けて転送するように、前記ホームエージェントを制御することと、
スヌープ要求が前記要求エージェントに送信されるべきことを決定するように、前記ホームエージェントを制御することであって、前記スヌープ要求は、前記ホームエージェントが前記特定のメモリ内の前記データを前記要求エージェントに向けて転送した後、前記要求エージェントに転送されるべきである、ことと、
前記要求エージェントが前記第２のノードの前記特定のメモリ内の前記要求されたデータを受信したことを決定するように、前記ホームエージェントを制御することと、
前記要求エージェントが前記特定のメモリ内の前記要求されたデータを受信したことを決定することに応答して、前記順序付けられていないネットワークを横断して前記スヌープ要求を前記要求エージェントに転送するように、前記ホームエージェントを制御ことと
を行うプログラムコードを備えている、コンピュータプログラム製品。
【請求項１７】
前記スヌープ要求の受信後、スヌープ応答メッセージを前記ホームエージェントに向けて転送するように、前記要求エージェントを制御するためのプログラムコードをさらに備え、前記スヌープ応答メッセージは、前記要求エージェントが前記特定のメモリの制御を解放したことを示す、請求項１６に記載のコンピュータプログラム製品。
【請求項１８】
前記順序付けられていないネットワークを横断して確認メッセージを前記ホームエージェントに向けて転送するように、前記要求エージェントを制御するためのプログラムコードをさらに備え、前記確認メッセージは、前記要求エージェントが前記第２のノードの前記特定のメモリ内の前記要求されたデータを受信したことを示す情報を有し、前記ホームエージェントによる前記確認メッセージの受信は、前記要求エージェントが前記要求されたデータを受信したことを前記ホームエージェントが決定することを可能にする、請求項１６に記載のコンピュータプログラム製品。
【請求項１９】
１つ以上の他の要求エージェントが前記特定のメモリへのアクセスを要求しているかどうかを決定するように、前記ホームエージェントを制御するためのプログラムコードと、
いかなる他の要求エージェントも前記特定のメモリへのアクセスを要求していないことを前記ホームエージェントが決定した場合、前記要求エージェントが前記特定のメモリ内の前記要求されたデータを受信したことを決定することなく、前記スヌープ要求を転送するように、前記ホームエージェントを制御するためのプログラムコードと
をさらに備えている、請求項１６に記載のコンピュータプログラム製品。
【請求項２０】
前記高性能コンピュータシステム内の前記順序付けられていないネットワークは、異なるノード内のエージェント間でメッセージを転送するように構成され、前記ホームエージェントは、前記特定のメモリ内のデータに対する要求に関するエージェント要求メッセージの順序の記録を維持しないように構成されている、請求項１６に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
（優先権）
本願は、米国仮特許出願第６１／９５１，７９２号（２０１４年３月１２日出願）および米国特許出願第１４／６４４，６２９号（２０１５年３月１１日出願）（両方とも名称「ＡＰＰＡＲＡＴＵＳ  ＡＮＤ  ＭＥＴＨＯＤ  ＯＦ  ＲＥＳＯＬＶＩＮＧ  ＰＲＯＴＯＣＯＬ  ＣＯＮＦＬＩＣＴＳ  ＩＮ  ＡＮ  ＵＮＯＲＤＥＲＥＤ  ＮＥＴＷＯＲＫ」、発明人：Ｍｉｃｈａｅｌ  Ｅ．Ｍａｌｅｗｉｃｋｉ）からの優先権を主張し、上記出願の開示は、それらの全体が参照により本明細書に引用される。
【０００２】
（発明の分野）
本発明は、概して、高性能コンピュータシステムに関し、より具体的には、本発明は、高性能コンピュータシステムにおけるプロトコル対立を解決することに関する。
【背景技術】
【０００３】
高性能コンピュータシステム等の大規模共有メモリマルチプロセッサコンピュータシステムは、典型的には、共通タスクを行うように協働する（例えば、１つ以上のマイクロプロセッサおよびローカルメモリを伴う）多くの処理ノードを有する。例えば、そのようなコンピュータシステムは、大規模行列を乗算するように協働するいくつかの数のノードを有し得る。迅速かつ効率的な様式でこれを行うために、そのようなコンピュータシステムは、典型的には、タスクを、各々がノードのうちの１つによって実行される個別の部分に分割する。ノードの全ては、タスクのそれらの対応するステップを同時に実行するように、（例えば、障壁変数を使用して）同期化される。
【０００４】
多くの高性能コンピュータシステムは、とりわけ、それらのノードが、それらのローカルメモリからのデータを他のノード上のプロセッサと共有するので、共有メモリシステムと見なされる。しかしながら、望ましくないことに、高性能コンピュータシステムの組織にわたってデータを共有する多くのプロセッサは、一貫性のないデータを作成し得る。当技術分野は、異なるノードおよびそれらのメモリの間のデータ一貫性を維持するためのいくつかの方式を開発することによって、この問題に対応してきた。したがって、データおよびキャッシュ一貫性方式は、対立を管理し、データ一貫性を維持することを意図している。
【０００５】
「新しいプロセッサ」（例えば、別のノード上の別のプロセッサ）が、別のノード（例えば、「現在のプロセッサ」）によって現在使用中である／制御されている「ホームメモリ」へのアクセスを要求するとき、「ホームエージェント」は、典型的には、周知の「スヌープ要求」を現在のプロセッサに転送する。当業者によって公知であるように、スヌープ要求は、データの制御を解放するように現在のプロセッサに要求する。したがって、現在のプロセッサは、典型的には、更新されたデータをホームエージェントに戻すように転送し、そのデータ／メモリの制御を解放することによって、スヌープ要求に応答する。
【０００６】
ある時は、ホームエージェントは、現在のプロセッサが実際にメモリからデータを受信する前に、スヌープ要求を現在のプロセッサに送信する。高性能コンピュータシステム内の順序付けられていないネットワークでは、そのような状況は、望ましくないことに、断続的なデータフロー停止またはシステム減速を生じ得る。
【発明の概要】
【課題を解決するための手段】
【０００７】
本発明の一実施形態によると、マルチノード高性能コンピュータシステム内のメモリ内のデータにアクセスする装置および方法は、要求エージェントと、ホームエージェントとを有する。要求エージェントが、高性能コンピュータシステムの第１のノードのメンバである一方で、ホームエージェントは、高性能コンピュータシステムの第２のノードのメンバである。要求エージェントは、高性能コンピュータシステム内の順序付けられていないネットワークを横断してデータ要求をホームエージェントに転送するように構成される。データ要求は、高性能コンピュータシステムの第２のノードの特定のメモリ内のデータを要求するように編成される。ホームエージェントは、順序付けられていないネットワークを横断して特定のメモリ内のデータを要求エージェントに向けて転送し、スヌープ要求が要求エージェントに送信されるべきことを決定する。スヌープ要求は、ホームエージェントが特定のメモリ内のデータを要求エージェントに向けて転送した後、要求エージェントに転送されるべきである。要求エージェントが第２のノードの特定のメモリ内の要求されたデータを受信したことを決定した後、ホームエージェントは、（要求エージェントが特定のメモリ内の要求されたデータを受信したことを決定することに応答して）順序付けられていないネットワークを横断してスヌープ要求を要求エージェントに転送する。
【０００８】
要求エージェントは、順序付けられていないネットワークを横断して確認メッセージをホームエージェントに向けて転送し得る。確認メッセージは、好ましくは、要求エージェントが第２のノードの特定のメモリ内の要求されたデータを受信したことを示す情報を有する。ホームエージェントによる確認メッセージの受信は、要求エージェントが要求されたデータを受信したことをホームエージェントが決定することを可能にする。要求エージェントはまた、スヌープ要求の受信後、スヌープ応答メッセージをホームエージェントに向けて転送し得る。とりわけ、スヌープ応答メッセージは、要求エージェントが特定のメモリの制御を解放したことを示し得る。
【０００９】
高性能コンピュータシステムは、少なくとも１つの他の要求エージェント（すなわち、特定のメモリへのアクセスを要求する）を有し得る。その場合、ホームエージェントは、他の要求エージェントのうちの１つ以上のものが特定のメモリへのアクセスを要求しているかどうかを決定し得る。ホームエージェントは、次いで、いかなる他の要求エージェントも特定のメモリへのアクセスを要求していないことをホームエージェントが決定した場合、要求エージェントが特定のメモリ内の要求されたデータを受信したことを決定することなく、応答してスヌープ要求を転送し得る。いくつかの実施形態では、ホームエージェントは、１つ以上の他の要求エージェントが特定のメモリへのアクセスを要求しているかどうかを示すフィールドを有する、データメッセージの一部として、特定のメモリ内のデータを転送する。
【００１０】
フィールドを有するデータメッセージを使用するとき、１つ以上の他の要求エージェントが特定のメモリへのアクセスを要求していることをフィールドが示す場合のみ、要求エージェントは、ホームエージェントに向けた確認メッセージを生成し得る。他の実施形態と同様に、確認メッセージは、要求エージェントが第２のノードの特定のメモリ内の要求されたデータを受信したことを示す情報を有する。ホームエージェントによる確認メッセージの受信は、要求エージェントが要求されたデータを受信したことをホームエージェントが決定することを可能にする。
【００１１】
ホームエージェントは、好ましくは、第２のノード内のプロセスエージェントの一部である。したがって、ホームエージェントは、この場合、第２のノードの特定のメモリを管理し得る。さらに、順序付けられていないネットワークは、ホームエージェントが特定のメモリ内のデータに対する要求に関するエージェント要求メッセージの順序の記録を維持することなく、異なるノード内のエージェント間でメッセージを転送するように構成される。
【００１２】
特定のメモリのデータを受信した後、要求エージェントは、少なくともホームエージェントからのスヌープ要求の受信まで、特定のメモリのデータの処理を制御し得る。他の実施形態と同様に、スヌープ要求の受信は、要求エージェントに特定のメモリのデータの制御を手放させる。
【００１３】
別の実施形態によると、高性能コンピュータシステムは、第１のノード内の要求エージェントと、第２のノード内のホームエージェントと、第２のノード内の特定のメモリと、要求エージェントとホームエージェントとの間の電子通信を可能にするように構成されている順序付けられていないネットワークとを有する。要求エージェントは、高性能コンピュータシステム内の順序付けられていないネットワークを横断してデータ要求をホームエージェントに転送するように構成される。データ要求は、高性能コンピュータシステムの第２のノードの特定のメモリ内のデータを要求するように構成される。
ホームエージェントは、
ａ）順序付けられていないネットワークを横断して特定のメモリ内のデータを選択的に転送し、
ｂ）スヌープ要求が要求エージェントに送信されるべきことを決定し、
ｃ）ｉ）ホームエージェントが特定のメモリ内のデータを要求エージェントに向けて転送しており、かつ、ｉｉ）要求エージェントが特定のメモリ内のデータを受信したかどうかをホームエージェントが決定してない場合、スヌープ要求を保留し、
ｄ）要求エージェントが特定のメモリ内のデータを受信したことを決定した後、順序付けられていないネットワークを横断してスヌープ要求を転送するように構成される。
【００１４】
本発明の図示された実施形態は、コンピュータ読み取り可能なプログラムコードを伴うコンピュータ使用可能媒体を有する、コンピュータプログラム製品として実装される。コンピュータ読み取り可能なコードは、従来のプロセスに従って、コンピュータシステムによって読み取られて利用され得る。
【図面の簡単な説明】
【００１５】
当業者は、直下で要約される図面を参照して議論される以下の「発明を実施するための形態」から、本発明の種々の実施形態の利点をさらに完全に理解するはずである。
【図１】図１は、本発明の一実施形態による、ＨＰＣシステムの論理図を概略的に示す。
【図２】図２は、図１のＨＰＣシステムの物理図を概略的に示す。
【図３】図３は、図１のＨＰＣシステムのブレードシャーシの詳細を概略的に示す。
【図４】図４は、本発明の例証的実施形態に従って使用され得る、図１のＨＰＣシステム内の順序付けられていないネットワークの論理図を概略的に示す。
【図５】図５は、本発明の例証的実施形態に従って構成される、ホームエージェントを概略的に示す。
【図６】図６は、従来技術に関する問題を図示する、タイミング図を概略的に示す。
【図７】図７は、本発明の例証的実施形態による、キャッシュへのアクセスを管理するプロセスを示す。
【図８】図８は、本発明の例証的実施形態による、キャッシュにアクセスするための第２のタイミング図を概略的に示す。
【発明を実施するための形態】
【００１６】
例証的実施形態では、ホームエージェントが、断続的なデータフロー停止またはシステム減速のリスクを軽減する様式で、順序付けられていない高性能コンピュータ（「ＨＰＣ」）システムのノード内のメモリアクセスを管理する。具体的には、よく起こるように、ＨＰＣ内の要求エージェントが、ホームエージェントによって管理されるメモリに記憶されたデータへのアクセスを要求し得る。許可された場合、当業者は、この要求を、要求されたデータを有するメモリの特定の部分の要求エージェント「制御」を与えることと見なし得る。この制御は、多くの場合、一時的である。
【００１７】
したがって、要求エージェントから制御を奪うとき、ホームエージェントは、周知の「スヌープ要求」を要求エージェントに送信する。システム性能を向上させるために、ホームエージェントは、２つの状況のうちの１つのみで、すなわち、１）要求エージェントが要求されたデータを受信したことをホームエージェントが確認した後（例えば、要求エージェントから受信された確認メッセージを通して）、または、２）ホームエージェントがデータを要求エージェントにまだ送信していない場合に、スヌープ要求を送信するように構成される。
【００１８】
したがって、要求エージェントは、要求されたデータを受信する前にスヌープ要求を受信する場合、スヌープ要求に迅速に応答し、効果的にデータの制御を手放すように構成される。この迅速な応答は、システム問題を引き起こすことなく起こり得る。何故なら、要求エージェントは、データを使用した（例えば、そうでなければ、要求エージェントは、確認メッセージを送信していないであろう）こと、またはホームエージェントがデータを送信していないことのいずれかを「把握している」からである。例証的実施形態の詳細が、以下で議論される。
【００１９】
図の多くおよび以下の議論の大部分は、高性能コンピュータ（「ＨＰＣ」）システム環境で実装される実施形態に関する。図１は、本発明の例証的実施形態とともに使用され得る、例示的高性能コンピュータシステム１００の論理図を概略的に示す。具体的には、当業者によって公知であるように、「高性能コンピュータシステム」または「ＨＰＣシステム」は、プロセッサが共通メモリアドレス空間を直接使用して遠隔データにアクセスし得るように、緊密に連結される複数のモジュール式コンピューティングリソースを有するコンピュータシステムである。実際に、図１−３の特定の実装は、例証的実施形態を実装し得る多種多様なＨＰＣシステムのうちの１つを例証する。したがって、図１−３のＨＰＣシステムは、例証的目的で議論され、全ての実施形態を限定することを意図していない。
【００２０】
それらの目的に対して、ＨＰＣシステム１００は、計算リソースを提供するためのいくつかの論理的コンピューティングパーティション１２０、１３０、１４０、１５０、１６０、１７０と、複数のパーティション１２０−１７０を管理するためのシステムコンソール１１０とを含む。ＨＰＣシステム内の「コンピューティングパーティション」（または「パーティション」）は、単一のオペレーティングシステムインスタンスを実行し、共通メモリアドレス空間を有する、計算リソースの管理上の割り付けである。パーティション１２０−１７０は、論理通信ネットワーク１８０を使用してシステムコンソール１１０と通信し得る。計算を行うことを所望する科学者または技術者等のシステムユーザは、これらのリソースを割り付けて管理するためにシステムコンソール１１０を使用するシステムオペレータから、計算リソースを要求し得る。ＨＰＣシステム１００は、以下でさらに詳細に説明されるように管理上割り当てられる任意の数のコンピューティングパーティションを有し得、多くの場合、利用可能なコンピューティングリソースの全てを包含する１つだけのパーティションを有する。したがって、この図は、本発明の範囲を限定すると見なされるべきではない。
【００２１】
パーティション１６０等の各コンピューティングパーティションは、論理的には、デスクトップコンピュータと類似した単一のコンピュータデバイスであるかのように見なされ得る。したがって、パーティション１６０は、当技術分野で一緒に使用されるような基本入出力システム（「ＢＩＯＳ」）１９２を使用する単一のオペレーティングシステム（「ＯＳ」）インスタンス１９１、および１人以上のシステムユーザのためのアプリケーションソフトウェア１９３を含むソフトウェアを実行し得る。
【００２２】
したがって、同様に図１に示されるように、コンピューティングパーティションは、１つ以上のプロセッサ１９４、揮発性メモリ１９５、不揮発性記憶装置１９６、および入出力（「Ｉ／Ｏ」）デバイス１９７（例えば、ネットワークカード、ビデオディスプレイデバイス、キーボード等）を含む、システムオペレータによってそれに割り付けられた種々のハードウェアを有する。しかしながら、図１の実施形態のようなＨＰＣシステムでは、各コンピューティングパーティションは、典型的なデスクトップコンピュータよりも多量の処理能力およびメモリを有する。ＯＳソフトウェアは、例えば、Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ（Ｒｅｄｍｏｎｄ，Ｗａｓｈｉｎｇｔｏｎ）によるＷｉｎｄｏｗｓ（登録商標）オペレーティングシステム、またはＬｉｎｕｘ（登録商標）オペレーティングシステムを含み得る。また、ＢＩＯＳは、Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ（Ｓａｎｔａ  Ｃｌａｒａ，Ｃａｌｉｆｏｒｎｉａ）等のハードウェア製造業者によってファームウェアとして提供され得るが、典型的には、以下でさらに詳細に説明されるように、高性能コンピューティングをサポートするようにＨＰＣシステム設計者の必要性に従ってカスタマイズされる。
【００２３】
そのシステム管理役割の一部として、システムコンソール１１０は、コンピューティングパーティション１２０−１７０の計算能力とシステムオペレータまたは他のコンピュータシステムとの間のインターフェースの役割を果たす。その目的で、システムコンソール１１０は、システムオペレータの代わりに、ＨＰＣシステムハードウェアおよびソフトウェアへのコマンドを発行し、コマンドは、とりわけ、１）ハードウェアを起動すること、２）システムコンピューティングリソースをコンピューティングパーティションに分割すること、３）パーティションを初期化すること、４）各パーティションの健全性およびその中で生成される任意のハードウェアまたはソフトウェアエラーを監視すること、５）オペレーティングシステムおよびアプリケーションソフトウェアを種々のパーティションに分配すること、６）オペレーティングシステムおよびソフトウェアを実行させること、７）パーティションの状態またはその中のソフトウェアをバックアップすること、８）アプリケーションソフトウェアをシャットダウンすること、および９）コンピューティングパーティションまたはＨＰＣシステム１００全体をシャットダウンすることを可能にする。これらの特定の機能は、「システム動作」と題された以下の節でさらに詳細に説明される。
【００２４】
図２は、図１の実施形態による高性能コンピュータシステム１００の物理図を概略的に示す。図１のＨＰＣシステム１００を備えているハードウェアは、鎖線によって包囲されている。ＨＰＣシステム１００は、ユーザアクセスを促進するように、企業データネットワーク２１０に接続される。
【００２５】
ＨＰＣシステム１００は、システムコンソール１１０の機能を果たすシステムマネージャ（「ＳＭ」）２２０を含む。ＳＭ２２０は、企業またはＨＰＣシステム設計者のいずれかによって提供されるデスクトップコンピュータ、サーバコンピュータ、または他の類似コンピュータデバイスとして実装され得、ＨＰＣシステム１００を制御するために必要なソフトウェア（すなわち、システムコンソールソフトウェア）を含む。
【００２６】
ＨＰＣシステム１００は、企業ローカルエリアネットワーク（「ＬＡＮ」）、仮想プライベートネットワーク（「ＶＰＮ」）、インターネット等、またはこれらのネットワークの組み合わせ等の当技術分野で公知の任意のデータネットワークを含み得るデータネットワーク２１０を使用してアクセス可能である。これらのネットワークのうちのいずれかは、数人のユーザが、遠隔で、および／または同時に、ＨＰＣシステムリソースにアクセスすることを可能にし得る。例えば、ＳＭ２２０は、Ｗｉｎｄｏｗｓ（登録商標）リモートデスクトップサービスまたはＵｎｉｘ（登録商標）セキュアシェル等の当技術分野で公知のツールを使用して、遠隔ログインを介して企業コンピュータ２３０によってアクセスされ得る。企業がそうしたい場合、ＨＰＣシステム１００へのアクセスが、遠隔コンピュータ２４０に提供され得る。遠隔コンピュータ２４０は、上記のようにＳＭ２２０へのログインを介して、または当業者に公知であるようなゲートウェイもしくはプロキシシステムを使用して、ＨＰＣシステムにアクセスし得る。
【００２７】
ＨＰＣシステム１００のハードウェアコンピューティングリソース（例えば、図１に示されるプロセッサ、メモリ、不揮発性記憶装置、およびＩ／Ｏデバイス）は、管理されてコンピューティングパーティションの中へ割り付けられる、図２に示されるブレードシャーシ２５２、２５４、２５６、２５８等の１つ以上の「ブレードシャーシ」によって、集合的に提供される。ブレードシャーシは、「ブレード」と呼ばれる複数の積重可能モジュール式電子回路基板を収納し、それらに給電し、それらの間の高速データ通信を提供するように構成される電子シャーシである。各ブレードは、独立型コンピュータサーバの役割を果たすために十分なコンピュータハードウェアを含む。ブレードシャーシのモジュール式設計は、ブレードが最小のケーブル敷設および垂直空間で電力およびデータ線に接続されることを可能にする。
【００２８】
したがって、各ブレードシャーシ、例えば、ブレードシャーシ２５２は、ブレードシャーシ２５２内のシステム機能を管理するためのシャーシ管理コントローラ２６０（「シャーシコントローラ」または「ＣＭＣ」とも称される）と、コンピューティングリソースを提供するためのいくつかのブレード２６２、２６４、２６６とを有する。各ブレード（一般的に参照番号「２６」によって以下で識別される）、例えば、ブレード２６２は、そのハードウェアコンピューティングリソースをＨＰＣシステム１００の集合的全リソースに提供する。ＳＭ２２０が、シャーシコントローラ２６０等のシャーシコントローラを使用して、ＨＰＣシステム１００全体のハードウェアコンピューティングリソースを管理する一方で、各シャーシコントローラは、順に、そのブレードシャーシ内のブレード２６のみのためのリソースを管理する。シャーシコントローラ２６０は、ローカル管理バス２６８を用いてブレードシャーシ２５２の内側のブレード２６２−２６６に物理的および電気的に連結される。他のブレードシャーシ２５４−２５８内のハードウェアも、同様に構成される。
【００２９】
シャーシコントローラは、管理接続２７０を使用して互いに通信する。管理接続２７０は、例えば、Ｅｔｈｅｒｎｅｔ（登録商標）通信プロトコルを実行する高速ＬＡＮ、または他のデータバスであり得る。対照的に、ブレード２６は、コンピューティング接続２８０を使用して互いに通信する。その目的で、コンピューティング接続２８０は、例証的に、Ｓｉｌｉｃｏｎ  Ｇｒａｐｈｉｃｓ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｒｐ．（Ｍｉｌｐｉｔａｓ，Ｃａｌｉｆｏｒｎｉａ）によって開発されたＮｕｍａリンク等の高帯域幅低遅延システム相互接続を有する。
【００３０】
ブレードシャーシ２５２、そのブレード２６２−２６６のコンピュータハードウェア、およびローカル管理バス２６８は、当技術分野で公知であるように提供され得る。しかしながら、シャーシコントローラ２６０は、ＨＰＣシステム設計者によって提供されるハードウェア、ファームウェア、またはソフトウェアを使用して、実装され得る。各ブレード２６は、独立型コンピュータサーバの技術分野で公知である、ある程度の量のプロセッサ、揮発性メモリ、不揮発性記憶装置、Ｉ／ＯデバイスをＨＰＣシステム１００に提供する。しかしながら、各ブレード２６は、これらのコンピューティングリソースが一緒にグループ化され、コンピューティングパーティションとして集合的に取り扱われることを可能にするハードウェア、ファームウェア、および／またはソフトウェアも有する。
【００３１】
図２は、４つのシャーシおよび各シャーシ内の３つのブレードを有する、ＨＰＣシステム１００を示すが、これらの図は本発明の範囲を限定しないことを理解されたい。ＨＰＣシステムは、数十のシャーシおよび数百のブレード２６を有し得、実際に、ＨＰＣシステムは、多くの場合、非常に大量の緊密に連結されたコンピューティングリソースを提供するため望ましい。
【００３２】
図３は、さらに詳細に単一のブレードシャーシ２５２を概略的に図示する。この図では、直接的な説明に関連しない部品は省略されている。シャーシコントローラ２６０は、ＳＭ２２０および管理接続２７０へのその接続を伴って示されている。シャーシコントローラ２６０は、シャーシ管理データを記憶するためのシャーシデータ記憶部３０２を提供され得る。いくつかの実施形態では、シャーシデータ記憶部３０２は、揮発性ランダムアクセスメモリ（「ＲＡＭ」）を有し、その場合、たとえコンピューティングパーティションのうちの１つ以上のものが（例えば、ＯＳクラッシュにより）故障したとしても、またはブレード２６が誤動作したとしても、電力がブレードシャーシ２５２に印加される限り、シャーシデータ記憶部３０２内の各データは、ＳＭ２２０によってアクセス可能である。他の実施形態では、シャーシデータ記憶部３０２は、ハードディスクドライブ（「ＨＤＤ」）またはソリッドステートドライブ（「ＳＳＤ」）等の不揮発性記憶装置である。これらの実施形態では、シャーシデータ記憶部３０２内のデータは、ＨＰＣシステムが電源を切られて再起動された後にアクセス可能である。
【００３３】
図３は、議論目的でブレード２６２および２６４の特定の実装の関連部分を示す。ブレード２６２は、それ自身のノード（またはブレード２６２内の複数のノード）を形成すると見なされ、シャーシレベルでシャーシコントローラによって果たされる機能に類似した様式において、ブレードレベルでシステム管理機能を実行するブレード管理コントローラ３１０（「ブレードコントローラ」または「ＢＭＣ」とも呼ばれる）を含む。ブレードコントローラ３１０は、シャーシコントローラ２６０との通信を可能にするように、ＨＰＣシステム設計者によって設計されるカスタムハードウェアとして実装され得る。加えて、ブレードコントローラ３１０は、その管理機能を実行するために、それ自身のＲＡＭ３１６を有し得る。シャーシコントローラ２６０は、図３および前の図に示されるように、ローカル管理バス２６８を使用して各ブレード２６のブレードコントローラと通信する。
【００３４】
ブレード２６２は、ＲＡＭ３２４、３２６に接続される１つ以上のプロセッサ３２０、３２２も含む。ブレード２６２は、代替として、当技術分野で公知であるように、複数のプロセッサが単一のバス上のＲＡＭの共通の組にアクセスし得るように構成され得る。プロセッサ３２０、３２２は、当技術分野で公知であるように、任意の数の中央処理装置（「ＣＰＵ」）またはコアを含み得ることも理解されたい。ブレード２６２内のプロセッサ３２０、３２２は、Ｉ／Ｏデバイス３３２と通信するデータバス、不揮発性記憶装置３３４と通信するデータバス、および独立型コンピュータシステムで一般的に見出される他のバス等の他のアイテムに接続される。（明確にするために、図３は、プロセッサ３２０からいくつかのデバイスへの接続のみを示す。）プロセッサ３２０、３２２は、例えば、Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎによって製造されたＩｎｔｅｌ（登録商標）ＣｏｒｅＴＭプロセッサであり得る。Ｉ／Ｏバスは、例えば、ＰＣＩまたはＰＣＩ  Ｅｘｐｒｅｓｓ（「ＰＣＩｅ」）バスであり得る。記憶装置バスは、例えば、ＳＡＴＡ、ＳＣＳＩ、またはＦｉｂｒｅ  Ｃｈａｎｎｅｌバスであり得る。他のバス規格、プロセッサタイプ、およびプロセッサ製造業者が、本発明の例証的実施形態に従って使用され得ることが理解されるであろう。
【００３５】
各ブレード２６（例えば、ブレード２６２および２６４）は、その機能性、すなわち、ブレード２６として実装されるノードの機能性の大部分を制御する、特定用途向け集積回路３４０（「ＡＳＩＣ」、「ハブチップ」、または「ハブＡＳＩＣ」とも称される）を含む。より具体的には、プロセッサ３２０、３２２、ＲＡＭ３２４、３２６、および他のデバイス３３２、３３４を一緒に論理的に接続し、管理されたマルチプロセッサコヒーレント共有分散型メモリＨＰＣシステムを形成するために、プロセッサ３２０、３２２は、ハブＡＳＩＣ３４０に電気的に接続される。したがって、ハブＡＳＩＣ３４０は、ＳＭ２２０、シャーシコントローラ２６０、およびブレードコントローラ３１０によって生成されるＨＰＣシステム管理機能と、ブレード２６２のコンピューティングリソースとの間のインターフェースを提供する。
【００３６】
この接続では、ハブＡＳＩＣ３４０は、集積回路の間で信号を渡すためのフィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）３４２または類似プログラマブルデバイスを介して、ブレードコントローラ３１０と接続する。具体的には、信号が、シャーシコントローラ２６０によって発行されるコマンドに応答して、ブレードコントローラ３１０の出力ピン上で生成される。これらの信号は、ＦＰＧＡ３４２によって、ハブＡＳＩＣ３４０のある入力ピンのためのコマンドに変換され、その逆も同様である。例えば、シャーシコントローラ２６０からブレードコントローラ３１０によって受信される「電源オン」信号は、とりわけ、「電源オン」電圧をハブＡＳＩＣ３４０上のあるピンに提供することを必要とし、ＦＰＧＡ３４２がこのタスクを促進する。
【００３７】
各ブレード２６内のハブチップ３４０は、高帯域幅低遅延データ通信のために、他のブレード２６への接続も提供する。したがって、ハブチップ３４０は、異なるブレードシャーシを接続するコンピューティング接続２８０へのリンク３５０を含む。このリンク３５０は、例えば、ネットワーキングケーブルを使用して実装され得る。ハブＡＳＩＣ３４０はまた、同一のブレードシャーシ２５２内の他のブレード２６への接続を含み得る。ブレード２６２のハブＡＳＩＣ３４０は、シャーシコンピューティング接続３５２を介してブレード２６４のハブＡＳＩＣ３４０に接続する。シャーシコンピューティング接続３５２は、ネットワーキングケーブルを使用するのではなく、ブレードシャーシ２５２のバックプレーン上のデータバスとして実装され得、有利なこととして、高性能計算タスクのために必要とされるブレード２６の間の非常に高速のデータ通信を可能にする。シャーシ間コンピューティング接続２８０およびシャーシ内コンピューティング接続３５２の両方上のデータ通信は、ＮｕｍａＬｉｎｋプロトコルまたは類似プロトコルを使用して実装され得る。
【００３８】
図４は、本発明の例証的実施形態に従って構成される複数のノード２６Ａを相互接続する、ＨＰＣシステム１００内の順序付けられていないネットワーク４００を概略的に示す。当業者によって公知であるように、ＨＰＣシステム１００内の順序付けられていないネットワーク４００は、メッセージがその通信ネットワーク／組織を通る任意の経路に沿って進行することを可能にし、これは、必ずしも終点の間に指定経路を有するわけではない。例えば、メッセージは、混雑点を迂回し、または伝送されるときに予測されない方法で別ルートに変更することができる。したがって、メッセージは、最初に送信されるときに指定されていない方法で、順序付けられていないネットワーク４００を通って伝わる。挙動は、インターネット等のインターネットプロトコル（「ＩＰ」）を使用するネットワークに似ている。しかしながら、１つの特質は、図４の本ネットワークが、概して、高帯域幅接続と通信する複数の相互接続されたＨＰＣノードから形成される順序付けられていないＨＰＣシステム組織内で実装されていることである。
【００３９】
ノード２６Ａは、協同し、それらのそれぞれのメモリを共有するように構成される。その目的で、図４の実施例は、ＨＰＣシステム１００の順序付けられていないネットワーク４００内の高速相互接続４０２を通して通信する４つのノード２６Ａを示す。実際、種々の実装は、４つより多いノード２６Ａ、または４つより少ないノード２６Ａを有し得る。さらに、これらのノード２６Ａの各々は、上記で議論されるブレード２６によって実装されるものとして議論されるが、当業者は、種々の様式のうちのいずれかで、これらのノード２６Ａの各々を実装することができる。したがって、各ノードの特定の実装の議論は、例証的であり、種々の実施形態を限定することを意図していない。
【００４０】
この例でのノード１−３の各々は、各々が他のノード２６Ａ内のメモリの少なくとも一部へのアクセスを要求し得る少なくとも１つの要求エージェント４０４を有する。例えば、要求エージェント４０４は、ノード４内のメモリ（の一部または全体）へのアクセスを要求し得る。このメモリは、一般的に、図１のメモリ１９５として表され得る。対応する様式で、ノード４は、メモリ１９５へのアクセスを管理するホームエージェント４０６を有する。とりわけ、ホームエージェント４０６は、要求エージェント４０４がメモリ１９５へのアクセスを要求するときを検出し、対立する複数の要求エージェント４０４がメモリ１９５へのアクセスを要求するときを決定し、そのような対立を管理する方法を決定する。
【００４１】
ホームエージェント４０６の１つの重要な役割は、メモリ１９５内のデータが最新のままであることを確実にすることである。例えば、第１の要求エージェント４０４は、メモリ１９５内の特定のデータの現在の所有権または制御を有し得る。第２の要求エージェント４０４がメモリ１９５のその同一の部分にアクセスしようとする場合、ホームエージェント４０６は、好ましくは、第１の要求エージェント４０４がデータの制御を手放すまで、そのメモリ１９５の即時アクセスを防止する。具体的には、第１の要求エージェント４０４が制御を手放すとき、第１の要求エージェントおよび／またはホームエージェント４０６が、データをメモリ１９５に戻して記憶する前にデータを更新する。更新されたデータがメモリ１９５に戻して記憶された後、更新されたデータは、最新かつ「古く」ないと見なされ、したがって、第２の要求エージェント４０４によってアクセスされ得る。しかしながら、第１の要求エージェント４０４がデータの制御を手放す前に、第２の要求エージェント４０４がメモリ１９５に直接アクセスした場合、第２の要求エージェント４０４は、最新ではないデータを受信したであろう。換言すると、データは、「古く」なっているであろう。
【００４２】
したがって、ホームエージェント４０６は、とりわけ、要求エージェント４０４にメモリ１９５内の特定のデータの制御を手放させる、スヌープメッセージを生成するために、図５に示されるようなスヌープ発生器５００を有する。上の例を続けると、したがって、ホームエージェント４０６のスヌープ発生器５００は、第２の要求エージェント４０４がデータへのアクセスを要求していることを決定した後、スヌープ要求を第１の要求エージェント４０４に転送する。
【００４３】
全てのノード２６Ａが、それらのローカルメモリ１９５を管理するためのホームエージェント４０６を有することができることに留意されたい。同様に、全てのノード２６Ａは、他のノードのメモリ１９５へのアクセスを要求する要求エージェント４０４を有することができる。したがって、図４に示されていないが、ノード４が、１つ以上の要求エージェント４０４を有することができる一方で、ノード１−３の各々は、１つ以上のホームエージェント４０６を有し得る。例証的実施形態は、遠隔ノード２６Ａ上のメモリ１９５へのアクセスを要求する要求エージェント４０４、すなわち、それ自身のそれぞれのノード２６Ａ以外のノード２６Ａ上のメモリ１９５へのアクセスを要求する要求エージェント４０４に適用される。
【００４４】
図５は、好ましくは、ノード４のハブＡＳＩＣの一部として、もしくはノード４のマイクロプロセッサのうちの１つ以上のものの内側のプロセスエージェントとして実装されるホームエージェント４０６のさらなる詳細を概略的に示す。当業者によって公知であるように、ホームエージェント４０６は、好ましくは、メモリ１９５の付近に位置付けられる。例えば、メモリ１９５は、ホームエージェント４０６の付近に搭載されたデュアルインラインメモリモジュール（「ＤＩＭＭ」）を使用して、ダイナミックランダムアクセスメモリ（「ＤＲＡＭ」）として実装され得る。
【００４５】
上記のスヌープ発生器５００を有することに加えて、ホームエージェント４０６はまた、他の構成要素（例えば、要求エージェント４０４）と通信するためのインターフェース５０２と、データ要求およびスヌープ要求を送信するときを決定すること、データ要求およびスヌープ要求を形成すること、要求エージェント４０４の間の対立を管理すること等を行う伝送論理５０４とを有する（例えば、図７参照）。当業者は、ホームエージェント４０６が、簡単にする目的のみで示されていない他の機能的モジュールを含むことを理解する。ホームエージェント４０６は、この例ではバスとして示される構成要素相互接続装置も有する。しかしながら、図５は、ホームエージェント４０６の種々の機能的モジュールのための相互接続機構の一般的表現としてバスを示すことに留意されたい。当業者は、それらの特定の実装に基づいて、異なる機能的モジュールの間で適切な相互接続を行うことを期待される。
【００４６】
当業者によって公知であるように、要求エージェント４０４は、理想的には、スヌープ要求を受信する前にホームエージェント４０６からデータ応答を受信する。しかしながら、これは、種々の順序付けられていないネットワークに常に当てはまるわけではない。図６は、要求エージェント４０４が初期読み取り要求（メモリ１９５の特定の部分へのアクセスを要求する）をホームエージェント４０６に送信するタイミング図として、この問題を概略的に図示する。ホームエージェント４０６は、最初にデータ応答とともにデータを要求エージェント４０４に返送することによって、読み取り要求に応答する。ホームエージェント４０６は、別の要求エージェント４０４がデータを必要とすることを実質的に決定し、したがって、その直後にスヌープ要求を要求エージェントに伝送する。
【００４７】
しかしながら、この例では、要求エージェント４０４は、それが要求したデータを受信する前に、スヌープ要求を受信する。これはまさしく、ＨＰＣシステム１００において遅延および他の問題を引き起こし得る問題である。何故なら、スヌープ要求を受信した後、要求エージェント４０４が、データ応答が実際に来ているかどうかを決定するための十分な情報を有していないからである。ある従来技術の事例では、ホームエージェント４０６がデータ応答を送信していないこともある。これは、要求エージェント４０４を一時停止させ、またはスヌープ要求に応答さえさせない場合がある。具体的には、スヌープを受信する本発明者の知る従来技術の要求エージェントが未解決の読み取り要求を有している場合、それは、２つのオプションを有する：
１．スヌープ要求を保持し、データ応答を待つ、または
２．スヌープ要求に応答する
しかしながら、要求エージェントは、望ましくないことに、どのオプションを選定すべきかを把握するための十分な情報を有していない。望ましくないことに、この不確実性は、システム効率を実質的に低減させ得る。
【００４８】
本発明の例証的実施形態は、１）ホームエージェント４０６がデータ応答を送信していない場合、または２）ホームエージェント４０６が、要求エージェント４０４がデータ応答を受信したことを決定した場合のみ、ホームエージェント４０６がスヌープ要求を転送することを可能にすることによって、この問題を克服する。
【００４９】
その目的で、図７は、本発明の例証的実施形態による、ノード４のメモリ１９５へのアクセスを管理するプロセスを示す。本プロセスは、簡単な例証であり、したがって、複数の追加のステップを含むことができることに留意されたい。実際に、ステップのうちのいくつかは、以下で説明されるものと異なる順序で行われ得る。したがって、図７は、本発明の種々の他の実施形態を限定することを意図していない。図８は、図７のプロセスの進行を図示する、タイミング図を概略的に示す。
【００５０】
プロセスは、ノード１−３のうちのいずれかの要求エージェント４０４のうちの１つ（例えば、ノード１の２つの要求エージェント４０４のうちの１つ）がノード４内のメモリ１９５へのアクセスを要求する、ステップ７００から始まる。例えば、要求エージェント４０４は、メモリ１９５の特定の部分から特定のデータを要求し得る。図８は、要求エージェント４０４からホームエージェント４０６に指し示す「読み取り要求」という見出しを有する矢印として、この要求を示す。
【００５１】
読み取り要求を受信した後、ホームエージェント４０６は、データ応答（図８のホームエージェント４０６から要求エージェント４０４に指し示す矢印を参照）を要求エージェント４０４に戻すように転送する。本データ応答は、メモリ１９５に記憶された実際のデータを有し得る。代替として、データ応答は、要求されたデータを有する他のメモリ１９５へのポインタを有し得る。いずれの場合も、要求エージェント４０４は、ノード４内のメモリ１９５のその特定のメモリ場所におけるデータを処理し、変更し、または別様に操作し得る。上記のように、スヌープ要求に応答して手放されるまで、要求エージェント４０４は、データおよび／またはメモリ場所のその部分を「所有」または「制御」すると見なされ得る。
【００５２】
しかしながら、プロセスにおけるある時点で、ホームエージェント４０６は、第２の要求エージェント４０４から同一のデータに対する要求を受信し得る。例えば、ノード３の要求エージェント４０４は、そのデータへのアクセスを要求し得る。したがって、ステップ７０４では、ホームエージェント４０６の伝送論理５０４は、現在メモリ１９５を制御している要求エージェント４０４（ノード１の要求エージェント４０４のうちの１つ）からノード３の要求エージェント４０４に、メモリ１９５の特定の部分の制御を移さなければならないことを決定する。その目的で、ホームエージェント４０６は、最初に、現在の要求エージェント４０４にメモリ１９５の一部の制御を手放させなければならない。現在の要求エージェント４０４が制御を手放した後、次いで、ホームエージェント４０６は、第２の要求エージェント４０４がメモリ１９５の規定部分を所有することを可能にし得る。
【００５３】
その目的で、従来技術のホームエージェント４０６は、単純に、スヌープ要求を現在の要求エージェント４０４に送信しており、それに制御を手放させ得る。しかしながら、例証的実施形態は、そのような要求を即時に送信しない。代わりに、ホームエージェント４０６の伝送論理５０４は、最初に、現在の要求エージェント４０４（すなわち、メモリ１９５の一部を現在所有している要求エージェント４０４）がデータ応答を受信したかどうかを決定する。当業者は、要求エージェント４０４がデータ応答を受信したかどうかを決定するためのいくつかの技法のうちのいずれかを使用することができる。
【００５４】
図８は、要求エージェント４０４が応答確認メッセージをホームエージェント４０６に転送する１つの技法を概略的に示す。具体的には、応答確認メッセージは、要求エージェント４０４がデータ応答のデータを受信および／または消費したことを示す、情報を有する。他の実施形態は、ホームエージェント４０６にデータを有する現在の要求エージェント４０４をポーリングまたは別様に調査させることによって等、この決定を行なうための他の技法を使用し得る。他の実施形態は、要求エージェント４０４に、データ応答を受信したかどうかを示す状態メッセージをホームエージェント４０６に周期的に転送させる。
【００５５】
したがって、要求エージェント４０４がデータ応答を受信していないことをホームエージェント伝送論理５０４が決定する場合、プロセスは、要求エージェント４０４がデータ応答を受信したという確認を受信するまでホームエージェント４０６が待つ（すなわち、スヌープ要求を送信することを遅らせる）ステップ７０８を続ける。逆に、要求エージェント４０４がデータ応答を受信したことをホームエージェント伝送論理５０４が決定する場合、スヌープ要求を要求エージェント４０４に転送する（図８参照）。現在の要求エージェント４０４は、応答して、メモリ１９５の一部の制御を手放したことを示し、それがメモリ１９５の一部について有する最新のデータを提供するスヌープ応答メッセージをホームエージェント４０６に転送する（ステップ７１２）。
【００５６】
効率を向上させる（例えば、確認メッセージからのオーバーヘッドおよび起こり得る混雑を低減させる）ために、いくつかの実施形態は、ホームエージェント伝送論理５０４が同一のメモリアドレス／メモリ１９５に対する複数の対立する要求があることを決定した場合、図７の完全なプロセスを実行するのみである。例えば、１つだけの要求エージェント４０４がメモリ１９５の規定部分へのアクセスを要求している場合、ホームエージェント４０６は、ステップ７０６および７０８を省略し得る。その場合、プロセスは、ステップ７０４からステップ７１０に飛び得る。逆に、複数の要求エージェント４０４がメモリ１９５の同一の部分を要求していることをホームエージェント伝送論理５０４が決定するとき、次いで、プロセスが全てのステップを実行し得る。
【００５７】
したがって、そのような実施形態に対して、データ応答は、図７の完全なプロセスが実行されるべきかどうかを示す、追加のフィールドを有し得る。具体的には、図８の例を使用して、追加のフィールドは、要求エージェント４０４が応答確認をホームエージェント４０６に送信するように要求されるかどうかを示す。例えば、データ応答は、高い値（すなわち、論理「１」）に設定された場合、要求エージェント４０４に応答確認を送信させる単一ビットフィールドを有し得る。しかしながら、低い値（すなわち、論理「０」）に設定された場合、要求エージェントは、応答確認を伝送しない。実際、このビットが論理０に設定された場合、ホームエージェント４０６は、応答確認を待つことなく、後続のスヌープ要求を送信するであろう。当然ながら、他の実施形態は、図７の全てのステップが実行されるべきかどうかを伝達するための他の技法を使用し得る。
【００５８】
したがって、上記で議論されるように、データ応答がホームエージェント４０６から順序付けられていないネットワーク４００の組織内で現在「飛行中」ではないことをその論理が認識しているので、要求エージェント４０４は、スヌープ要求に迅速に応答することができる。具体的には、要求エージェント４０４は、ホームエージェント４０６がデータ応答を全く送信していないか、または、ホームエージェント４０６が、応答確認を受信していない場合のみ、ホームエージェント４０６がスヌープ要求を送信できることを認識するように構成される。したがって、ホームエージェント４０６がデータ応答を送信しなかったことをその論理が認識するので、要求エージェント４０４は、データ応答を待つというオプションを有していない。したがって、この障害を除去することは、有利に、ＨＰＣシステム１００が複数のノード２６Ａにわたってデータをより効率的に共有することを可能にする。
【００５９】
本発明の種々の実施形態は、少なくとも部分的に、任意の従来のコンピュータプログラミング言語で実装され得る。例えば、いくつかの実施形態は、手続き型プログラミング言語（例えば、「Ｃ」）で、またはオブジェクト指向プログラミング言語（例えば、「Ｃ＋＋」）で実装され得る。本発明の他の実施形態は、事前構成された独立型ハードウェア要素として、および／または事前プログラムされたハードウェア要素（例えば、特定用途向け集積回路、ＦＰＧＡ、およびデジタル信号プロセッサ）もしくは他の関連構成要素として実装され得る。
【００６０】
代替実施形態では、開示される装置および方法（例えば、上記で説明されるフローチャートを参照）は、コンピュータシステムとともに使用するためのコンピュータプログラム製品として実装され得る。そのような実装は、コンピュータ読み取り可能な媒体（例えば、ディスケット、ＣＤ−ＲＯＭ、ＲＯＭ、または固定ディスク）等の有形の一過性媒体上に固定された一連のコンピュータ命令を含み得る。一連のコンピュータ命令は、本システムに関して本明細書に以前に説明された機能性の全体または一部を具現化することができる。
【００６１】
当業者は、そのようなコンピュータ命令が、多くのコンピュータアーキテクチャまたはオペレーティングシステムとともに使用するためのいくつかのプログラミング言語で書かれることができることを理解するはずである。さらに、そのような命令は、半導体、磁気、光学、または他のメモリデバイス等の任意のメモリデバイスに記憶され得、光学、赤外線、マイクロ波、または他の伝送技術等の任意の通信技術を使用して伝送され得る。
【００６２】
とりわけ、そのようなコンピュータプログラム製品は、付随印刷または電子文書（例えば、市販ソフトウェア）を伴う取り外し可能媒体として分配され、（例えば、システムＲＯＭまたは他の固定ディスク上で）コンピュータシステムを事前にロードされ、またはネットワーク（例えば、インターネットまたはワールドワイドウェブ）を経由してサーバもしくは電子掲示板から分配され得る。実際に、いくつかの実施形態は、サービスモデルとしてのソフトウェア（「ＳＡＡＳ」）またはクラウドコンピューティングモデルで実装され得る。当然ながら、本発明のいくつかの実施形態は、ソフトウェア（例えば、コンピュータプログラム製品）およびハードウェアの両方の組み合わせとして実装され得る。本発明のなおも他の実施形態が、完全にハードウェアまたは完全にソフトウェアとして実装される。
【００６３】
上記の議論は、本発明の種々の例示的実施形態を開示するが、本発明の真の範囲から逸脱することなく、当業者が本発明の利点のうちのいくつかを達成するであろう種々の修正を行うことができることが明白なはずである。
【図１】
2017510921.tif 000003
【図２】
2017510921.tif 000004
【図３】
2017510921.tif 000005
【図４】
2017510921.tif 000006
【図５】
2017510921.tif 000007
【図６】
2017510921.tif 000008
【図７】
2017510921.tif 000009
【図８】
2017510921.tif 000010
【国際調査報告】
2017510921.tif 000011
2017510921.tif 000012
2017510921.tif 000013
2017510921.tif 000014