(57)【特許請求の範囲】
【請求項１】
コンピュータ環境における処理を容易にするためのコンピュータ・プログラムであって、コンピュータに、
前記コンピュータ環境の受信アダプタの受信待ち行列において、前記コンピュータ環境の送信アダプタの送信待ち行列から、前記受信アダプタが実行すべき操作の作業待ち行列要素を受信する機能と、
前記受信アダプタの受信待ち行列により前記操作の作業待ち行列要素を実行する機能と、
前記受信アダプタにより、前記操作が完了したかどうかを判断する機能であって、前記判断する機能は、前記操作の完了を確認する読み取り操作を前記受信アダプタにより実行する機能を含み、前記読み取り操作は、前記受信アダプタにより局所的に開始される、前記判断する機能と、
前記読み取り操作を介して前記操作の完了を判断する機能に基づいて、肯定応答を前記送信アダプタに送り、前記受信アダプタの完了待ち行列に完了待ち行列要素を生成する機能と、
を実現させる、コンピュータ・プログラム。
【請求項２】
前記操作の肯定応答は、前記読み取り操作が前記操作の完了を確認するまで遅延される、請求項１に記載のコンピュータ・プログラム。
【請求項３】
前記読み取り操作が前記操作の完了を確認する前の前記操作の肯定応答は回避される、請求項２に記載のコンピュータ・プログラム。
【請求項４】
前記操作は、リモート・ダイレクト・メモリ・アクセス書き込み操作又はメモリに書き込む送信操作を含む、請求項１に記載のコンピュータ・プログラム。
【請求項５】
前記受信アダプタにより、前記肯定応答の前記送信を遅延すべきかどうかをチェックする機能と、前記チェックする機能が、前記肯定応答の前記送信を遅延すべきであることを示したことに基づいて、前記判断する機能を実行する機能とをさらに含む、請求項１に記載のコンピュータ・プログラム。
【請求項６】
前記読み取り操作は、前記送信アダプタに対してトランスペアレントである、請求項１に記載のコンピュータ・プログラム。
【請求項７】
コンピュータ環境における処理を容易にするためのコンピュータ・システムであって、
前記コンピュータ・システムは、
方法を実行するように構成された受信アダプタを含み、前記方法は、
前記受信アダプタの受信待ち行列において、操作の実行を要求する送信アダプタの送信待ち行列から、前記受信アダプタが実行すべき操作の作業待ち行列要素を受信することと、
前記受信アダプタの受信待ち行列により前記操作の作業待ち行列要素を実行することと、
前記受信アダプタにより、前記操作が完了したかどうかを判断することであって、前記判断することは、前記操作が完了したことを確認する読み取り操作を前記受信アダプタにより実行することを含み、前記読み取り操作は、前記受信アダプタにより局所的に開始される、前記判断することと、
前記読み取り操作を介して前記操作の完了を判断することに基づいて、肯定応答を前記送信アダプタに送り、前記受信アダプタの完了待ち行列に完了待ち行列要素を生成することと、
を含む、コンピュータ・システム。
【請求項８】
前記操作の肯定応答は、前記読み取り操作が前記操作の完了を確認するまで遅延される、請求項７に記載のシステム。
【請求項９】
前記読み取り操作が前記操作の完了を確認する前の前記操作の肯定応答は回避される、請求項８に記載のシステム。
【請求項１０】
前記操作は、リモート・ダイレクト・メモリ・アクセス書き込み操作又はメモリに書き込む送信操作を含む、請求項７に記載のシステム。
【請求項１１】
前記操作は、データをメモリに書き込み、前記メモリは、前記操作を容易にする相互接続を介して前記受信アダプタに結合され、前記相互接続は、前記送信アダプタへの前記操作の完了の表示が存在しない構成を有する、請求項７に記載のシステム。
【請求項１２】
前記相互接続は、周辺機器相互接続（ＰＣＩ）である、請求項１１に記載のシステム。
【請求項１３】
前記読み取り操作は、前記操作によって書き込まれたメモリ内の１つ又は複数の位置を読み取り、前記操作は、前記受信アダプタと前記メモリを結合させる相互接続を介して実行され、前記相互接続は、順序付け規則による構成を有し、前記順序付け規則は、前記操作によって前記データが前記メモリに書き込まれるまで、前記読み取りが成功裡に完了しないことを示す、請求項７に記載のシステム。
【請求項１４】
コンピュータ環境における処理を容易にするための方法であって、前記方法は、
前記コンピュータ環境の受信アダプタの受信待ち行列において、前記コンピュータ環境の送信アダプタの送信待ち行列から、前記受信アダプタが実行すべき操作の作業待ち行列要素を受信することと、
前記受信アダプタの受信待ち行列により前記操作の作業待ち行列要素を実行することと、
前記受信アダプタにより、前記操作が完了したかどうかを判断することであって、前記判断することは、前記操作が完了したことを確認する読み取り操作を前記受信アダプタにより実行することを含み、前記読み取り操作は、前記受信アダプタにより局所的に開始される、前記判断することと、
前記読み取り操作を介して前記操作の完了を判断することに基づいて、肯定応答を前記送信アダプタに送り、前記受信アダプタの完了待ち行列に完了待ち行列要素を生成することと、
を含む、前記方法。
【請求項１５】
前記操作の肯定応答は前記読み取り操作が前記操作の完了を確認するまで遅延され、前記読み取り操作が前記操作の完了を確認する前の前記操作の肯定応答は回避される、請求項１４に記載の方法。
【請求項１６】
前記方法は、前記受信アダプタにより、前記肯定応答の前記送信を遅延すべきかどうかをチェックすることと、前記チェックすることが、前記肯定応答の前記送信を遅延すべきであることを示したことに基づいて、前記判断することを実行することとをさらに含む、請求項１４に記載の方法。
【請求項１７】
コンピュータ環境における処理を容易にするためのコンピュータ・プログラムであって、コンピュータに、
前記コンピュータ環境の受信アダプタの受信待ち行列において、前記コンピュータ環境の送信アダプタの送信待ち行列から、前記受信アダプタが実行すべき、第１の肯定応答タイプと関連した第１の操作の作業待ち行列要素を受信する機能と、
前記受信アダプタの受信待ち行列により、前記第１の操作の作業待ち行列要素を実行する機能と、
前記第１の肯定応答タイプが非遅延型肯定応答を示すことに基づいて、前記第１の操作の受信を示し、かつ、前記第１の操作の完了を示さない、受信肯定応答を前記送信アダプタに送る機能と、
前記受信アダプタの受信待ち行列において、前記送信アダプタの送信待ち行列から、前記受信アダプタが実行すべき、第２の肯定応答タイプと関連した第２の操作の作業待ち行列要素を受信する機能と、
前記受信アダプタの受信待ち行列により、前記第２の操作の作業待ち行列要素を実行する機能と、
前記第２の肯定応答タイプが遅延型肯定応答を示すことに基づいて、前記受信アダプタにより、前記第２の操作が完了したかどうかを判断する機能であって、前記判断する機能は、前記第２の操作の完了を確認する読み取り操作を前記受信アダプタにより実行させる機能を含み、前記読み取り操作は、前記受信アダプタにより局所的に開始される、前記判断する機能と、
前記読み取り操作を介して前記第２の操作の完了を判断する機能に基づいて、完了肯定応答を前記送信アダプタに送り、前記受信アダプタの完了待ち行列に完了待ち行列要素を生成する機能と、
を実現させる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータ環境における処理に関し、具体的には、入力／出力（Ｉ／Ｏ）アダプタと関連した処理を容易にすることに関する。
【背景技術】
【０００２】
リモート・ダイレクト・メモリ・アクセス（remote direct memoryaccess、ＲＤＭＡ）可能なアダプタなどのＩ／Ｏアダプタは、互いに通信して、特定の操作を実行させる。一例においては、送信ＲＤＭＡ可能アダプタが、ＲＤＭＡ書き込み操作をリモート受信ＲＤＭＡ可能アダプタに転送する。ＲＤＭＡ書き込み操作の受信に応答して、受信ＲＤＭＡアダプタは、書き込み操作に肯定応答する。しかしながら、この肯定応答は、リモート・アダプタにおける要求の受信を保証するものにすぎない。この肯定応答は、リモート・アダプタがメモリ書き込み操作を完了したことを保証するものではなく、又は、書き込まれたデータがリモート・プロセッサに見えることを保証するものでもない。
【０００３】
ＲＤＭＡ書き込み操作を用いて通信するアプリケーションでは、特定の他の操作を実行する前に、リモート・メモリ内でデータが利用可能であることを確認する必要があることが多い。従って、送信ＲＤＭＡアダプタからリモート・アダプタにＲＤＭＡ読み取り操作を転送して、メモリ読み取り操作を実行し、メモリ内でデータが利用可能である（リモート・プロセッサに見える）ことを確認する。データが利用可能である場合には、リモート・アダプタは、別の肯定応答（ＲＤＭＡ読み取りデータ）を送信アダプタに転送する。データが利用可能であることを確認するために、リモートで開始される読み取りを必要とすること、及び、別の肯定応答を送信することは、アダプタ間の待ち時間を増大させる。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】「ＩｎｆｉｎｉＢａｎｄＴＭ  Ａｔｃｈｉｔｅｃｔｕｒｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ」、第１巻、Ｒｅｌｅａｓｅ  １．２．１、２００７年１１月
【発明の概要】
【発明が解決しようとする課題】
【０００５】
コンピュータ環境における処理を容易にするためのコンピュータ・プログラムを提供することにより、従来技術の欠点が克服され、付加的な利点がもたらされる。
【課題を解決するための手段】
【０００６】
コンピュータ・プログラム製品が、処理回路により読み取り可能であり、かつ、方法を実行するために処理回路により実行するための命令を格納するストレージ媒体を含む。この方法は、例えば、コンピューティング環境の受信アダプタにおいて、コンピューティング環境の送信アダプタから、受信アダプタが実行すべき操作を受信することと、受信アダプタにより操作を実行することと、受信アダプタにより、操作が完了したかどうかを判断することであって、この判断することは、操作が完了したことを確認する読み取り操作を受信アダプタにより実行することを含み、この読み取り操作は、受信アダプタにより局所的に開始される、その判断することと、読み取り操作を介して操作の完了を判断することに応答して、肯定応答を送信アダプタに送ることとを含む。
【０００７】
更に別の態様において、コンピュータ環境における処理を容易にするためのコンピュータ・プログラム製品が提供される。コンピュータ・プログラム製品は、処理回路により読み取り可能であり、かつ、方法を実行するために処理回路により実行するための命令を格納するストレージ媒体を含む。この方法は、例えば、コンピュータ環境の受信アダプタにおいて、コンピュータ環境の送信アダプタから、受信アダプタが実行すべき、第１の肯定応答タイプと関連した第１の操作を受信することと、受信アダプタにより第１の操作を実行することと、第１の肯定応答タイプが非遅延型肯定応答を示すことに応答して、第１の操作の受信を示し、かつ、第１の操作の完了を示さない、受信肯定応答を送信アダプタに送ることと、受信アダプタにおいて、送信アダプタから、受信アダプタが実行すべき、第２の肯定応答タイプと関連した第２の操作を受信することと、受信アダプタにより第２の操作を実行することと、第２の肯定応答タイプが遅延型肯定応答を示すことに応答して、受信アダプタにより、第２の操作の完了を判断することであって、この判断することは、第２の操作の完了を確認する読み取り操作を受信アダプタにより実行することを含み、この読み取り操作は、受信アダプタにより局所的に開始される、その判断することと、読み取り操作を介して第２の操作の完了を判断することに応答して、完了肯定応答を送信アダプタに送ることとを含む。
【０００８】
本発明の１つ又は複数の態様に関連する方法及びシステムも、ここに説明され、特許請求される。さらに、本発明の１つ又は複数の態様に関連するサービスも説明され、ここに特許請求され得る。
【０００９】
本発明の技術を通して、付加的な特徴及び利点が実現される。本発明の他の実施形態及び態様が、ここに詳細に説明され、特許請求された本発明の一部と見なされる。
【００１０】
本発明の１つ又は複数の態様が、明細書の最後にある特許請求の範囲に例として具体的に示され、明確に特許請求されている。本発明の上記及び他の目的、特徴、並びに利点は、添付の図面と併用される以下の詳細な説明から明らかである。
【図面の簡単な説明】
【００１１】
【図１】本発明の１つ又は複数の態様を組み込み、使用するための分散型コンピュータ・システムの一例を示す。
【図２】本発明の１つの態様による、図１のホスト・チャネル・アダプタ（ＨＣＡ）の更なる詳細の一実施形態を示す。
【図３】本発明の１つの態様による、作業要求の処理の一例を示す。
【図４】本発明の１つの態様による、分散プロセス間の通信において信頼できる接続サービスを提供するために待ち行列対を使用する、分散型コンピュータ・システムの部分の一実施形態を示す。
【図５】本発明の１つの態様による、分散型コンピュータ・システムに用いられる階層化された通信アーキテクチャの一例を示す。
【図６】本発明の１つ又は複数の態様より前の、送信又はメモリ書き込み操作と関連した肯定応答処理の一例を示す。
【図７】本発明の１つ又は複数の態様の遅延型肯定応答処理の一実施形態を示す。
【図８】本発明の１つの態様による、肯定応答の遅延と関連した論理の一実施形態を示す。
【図９】本発明の１つ又は複数の態様を組み込むコンピュータ・プログラム製品の一実施形態を示す。
【発明を実施するための形態】
【００１２】
本発明の１つの態様によると、受信アダプタが開始する読み取り操作が、要求された操作（例えば、ＲＤＭＡ書き込み操作又は送信操作）の完了を示すまで、受信アダプタ（例えば、ＲＤＭＡ可能アダプタ）が受信した要求に関する肯定応答の送信が遅延される。局所的に開始される読み取り操作が示すように、操作の肯定応答は、操作が完了するまで、即ちメモリが更新されるまで（例えば、データがリモート・プロセッサに見えるようになるまで）遅延される。これは、受信時に受信アダプタが要求に肯定応答する、これまでのＲＤＭＡ技術とは対照的である。つまり、肯定応答は、リモート・アダプタにおける実行される操作の受信を保証するものにすぎない。肯定応答は、操作が完了したことを保証するものでも、又は、データがリモート・プロセッサに見えることを保証するものでもない。要求された操作が実行されるまで肯定応答を遅延させることにより、送信アダプタは、操作が完了したかどうかについて尋ねる必要がなくなり、従って、送信アダプタによる要求、及び、それに対応する肯定応答が排除される。これにより、アダプタ間の待ち時間が改善される。
【００１３】
一実施形態において、処理に関与するアダプタは、リモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）可能なアダプタである。ＲＤＭＡ可能なアダプタは、ＩｎｆｉｎｉＢａｎｄ（商標）アーキテクチャ仕様書により定められるもののようなＲＤＭＡチャネル・アダプタとすることができ、又は、ＲＤＭＡコンソーシアムからのｉＷＡＲＰにより定められるもののようなＲＤＭＡネットワーク・インターフェース・カード（ＲＮＩＣ）とすることができる。ＩｎｆｉｎｉＢａｎｄ（商標）アーキテクチャ仕様書の一実施形態は、非特許文献１に詳細に記載されており、その全体を引用によりここに組み入れる。ＲＤＭＡ及びＲＤＭＡ可能なアダプタが参照されているが、当業者であれば、本発明の１つ又は複数の態様は、ＲＤＭＡを使用する操作に限定されないことを理解するであろう。
【００１４】
本発明の１つ又は複数の態様を組み込み、使用するためのコンピューティング環境の１つの実施形態が、図１を参照して説明される。図１は、システム・エリア・ネットワーク（ＳＡＮ）ファブリック１１６を用いる分散型コンピュータ・システム１００の一例を示す。分散型コンピュータ・システム１００及び／又はＳＡＮファブリック１１６は、例示のみを目的として提供されたものである。本発明の１つ又は複数の態様は、多数の他のタイプ及び構成のコンピュータ・システム上で実施することができる。例えば、１つ又は複数の実施形態を実施するコンピュータ・システムは、１つのプロセッサと、少数の入力／出力（Ｉ／Ｏ）アダプタを有する小さなサーバから、数百個又は数千個のプロセッサと、数千個のＩ／Ｏアダプタとを有する大規模並行処理スーパーコンピュータ・システムまでの範囲に及ぶものとすることができる。
【００１５】
図１を参照すると、ＳＡＮファブリック１１６は、分散型コンピュータ・システム内のノードを相互接続するための、高帯域幅低待ち時間のネットワークである。ノードは、ネットワークの１つ又は複数のリンクに取り付けられ、ネットワーク内のメッセージの送信元及び／又は宛先を形成する、任意の構成要素である。図１に示される例において、分散型コンピュータ・システム１００は、ホスト・プロセッサ・ノード１０２、ホスト・プロセッサ・ノード１０４、冗長アレイ独立ディスク（redundant array independent disk、ＲＡＩＤ）サブシステム・ノード１０６、及びＩ／Ｏシャシー・ノード１０８の形態のノードを含む。ＳＡＮファブリック１１６は、任意の数の及びあらゆるタイプの独立したプロセッサ・ノード、Ｉ／Ｏアダプタ・ノード、及び／又はＩ／Ｏ装置ノードを相互接続することができるので、図１に示されるノードは、例示のみを目的としている。
【００１６】
これらのノードのどれもが、本明細書では、ＳＡＮファブリック１１６内でメッセージ又はパケットを発信するか、又は最終的に消費する装置と定義されるエンドノードとして機能することができる。一実施形態においては、エンドノード間での信頼できる接続及び／又は信頼できるデータグラムの通信を可能にする、エラー処理機構が存在する。
【００１７】
本明細書で用いられるメッセージという用語は、協働するプロセス間での通信の基本単位である、アプリケーション定義によるデータ交換の単位である。パケットは、ネットワーキング・プロトコルのヘッダ及び／又はトレーラによってカプセル化される１単位のデータである。ヘッダは、一般に、ＳＡＮファブリック１１６を介してパケットを導くための制御及び経路指定情報を提供する。トレーラは、一般に、パケットが、破壊した内容を伴ってパケットが配信されないことを検証するための制御及び巡回冗長検査（cyclic redundancy check、ＣＲＣ）データを含む。
【００１８】
図１に示される分散型コンピュータ・システム１００は、分散型コンピュータ・システム内のＩ／Ｏ及びプロセッサ間通信（ＩＰＣ）の両方をサポートする通信及び管理インフラストラクチャを含む。分散型コンピュータ・システム１００は、例えば、セ待ち行列リティ保護されたリモート管理環境において、多くの装置が、高帯域幅、低待ち時間でデータを同時に転送することを可能にするスイッチド（switched）通信ファブリック１１６を含む。エンドノードは、複数のポートを介して通信し、ＳＡＮファブリック１１６を介して複数の経路を使用することができる。複数のポート及びＳＡＮファブリック１１６を介した経路は、耐故障性で帯域幅が向上したデータ転送のために使用することができる。
【００１９】
一例においては、ＳＡＮファブリック１１６は、３つのスイッチ１１２、１１４、及び１４６と、ルータ１１７とを含む。スイッチは、複数のリンクを互いに接続し、小さなヘッダの宛先ローカル識別子（Destination Local Identifier、ＤＬＩＤ）フィールドを使用して、サブネット内の１つのリンクから別のリンクへのパケットの経路指定を可能にする装置である。ルータは、複数のサブネットを互いに接続し、大きなヘッダの宛先グローバル一意識別子（Destination Globally Unique Identifier、ＤＧＵＩＤ）を使用して、第１のサブネット内の１つのリンクから第２のサブネット内の別のリンクへとパケットを経路指定することができる装置である。
【００２０】
一実施形態において、リンクが、エンドノード、スイッチ、又はルータなどの、いずれかの２つのネットワーク・ファブリック要素の間の全二重チャネルである。好適なリンクの例には、これらに限定されるものではないが、銅線ケーブル、光ケーブル、並びにバックプレーン及びプリント回路基板上のプリント回路銅トレースが含まれる。
【００２１】
信頼できるサービス・タイプの場合、ホスト・プロセッサ・エンドノード及びＩ／Ｏアダプタ・エンドノードのようなエンドノードが、要求パケットを生成し、肯定応答パケットを返信する。スイッチ及びルータは、送信元から宛先にパケットを渡す。ネットワークの各ステージで更新される変形ＣＲＣトレーラ・フィールドを除いて、スイッチは、パケットを変更せずに渡す。ルータは、変形ＣＲＣトレーラ・フィールドを更新し、パケットが経路指定される際にヘッダ内の他のフィールドを変更する。
【００２２】
図１に示される例示的な分散型コンピュータ・システム１００においては、ホスト・プロセッサ・ノード１０２、ホスト・プロセッサ・ノード１０４、及びＩ／Ｏシャシー１０８は、ＳＡＮファブリック１１６とインターフェースするために少なくとも１つのＲＤＭＡ可能なチャネル・アダプタ（ＣＡ）を含む。１つ又は複数の実施形態においては、各ＣＡは、ＳＡＮファブリック１１６上で伝送された送信元又は受信側パケットに対して十分詳細にＣＡインターフェースを実施するエンドポイントである。ホスト・プロセッサ・ノード１０２は、例えば、ＲＤＭＡ可能なホスト・チャネル・アダプタ（ＨＣＡ）１１８及び１２０の形態のＣＡを含む。ホスト・プロセッサ・ノード１０４は、例えば、ＨＣＡ１２２及び１２４を含む。ホスト・プロセッサ・ノード１０２はまた、中央演算処理装置１２６−１３０、バス・システム１３４により相互接続されるメモリ１３２も含む。ホスト・プロセッサ・ノード１０４も同様に、中央演算処理装置１３６−１４０、及びバス・システム１４４により相互接続されるメモリ１４２を含む。ホスト・プロセッサ・ノード１０２においては、メモリ１３２は、例えば、周辺機器相互接続（peripheral component interconnect、ＰＣＩ）を介して、ＨＣＡ１１８及び１２０に通信可能に結合され、ホスト・プロセッサ・ノード１０４においては、メモリ１４２も同様に、例えば、ＰＣＩ相互接続を介して、ＨＣＡ１２２及び１２４に通信可能に結合される。ＨＣＡ１１８及び１２０は、ホスト・プロセッサ・ノード１０２からスイッチ１１２への接続を提供し、ＨＣＡ１２２及び１２４は、ホスト・プロセッサ・ノード１０４からスイッチ１１２及び１１４への接続を提供する。
【００２３】
１つ又は複数の実施形態において、ＨＣＡは、ハードウェアで実装される。この実装においては、ＨＣＡハードウェアは、中央演算処理装置のＩ／Ｏアダプタの通信オーバーヘッドの大部分の負荷を軽減する。ＨＣＡのこのハードウェア実装により、通信プロトコルと関連した従来のオーバーヘッドなしにスイッチド・ネットワークを介した複数の同時通信も可能になる。一実施形態においては、図１のＨＣＡ及びＳＡＮファブリック１１６は、分散型コンピュータ・システムのＩ／Ｏ及びＩＰＣのコンシューマ（consumer）に、オペレーティング・システム・カーネル・プロセスを必要とせずに、ゼロ・プロセッサ・コピー（zero processor-copy）・データ転送を提供し、信頼できる耐故障性通信を提供するためにハードウェアを利用する。
【００２４】
図１に示されるように、ルータ１１７は、他のホスト又は他のルータへの広域エリア・ネットワーク（ＷＡＮ）及び／又はローカル・エリア・ネットワーク（ＬＡＮ）接続に結合されている。さらに、Ｉ／Ｏシャシー１０８は、Ｉ／Ｏスイッチ１４６と複数のＩ／Ｏモジュール１４８−１５６とを含む。これらの例では、Ｉ／Ｏモジュール１４８−１５６は、アダプタ・カードの形態を取る。アダプタ・カードの例には、Ｉ／Ｏモジュール１４８用のＳＣＳＩアダプタ・カード、Ｉ／Ｏモジュール１５０用のイーサネット・アダプタ・カード、Ｉ／Ｏモジュール１５２用のファイバ・チャネル・ハブ及びファイバ・チャネル・アービトレート型ループ（fibre channel arbitrated loop、ＦＣ−ＡＬ）装置へのアダプタ・カード、Ｉ／Ｏモジュール１５４用のグラフィックス・アダプタ・カード、及びＩ／Ｏモジュール１５６用のビデオ・アダプタ・カードが含まれる。いずれの周知のタイプのアダプタ・カードを実装することもできる。Ｉ／Ｏアダプタは、アダプタ・カードをＳＡＮファブリック１１６に結合するためのＩ／Ｏアダプタのスイッチも含む。これらのモジュールは、ＲＤＭＡ可能なターゲット・チャネル・アダプタ（ＴＣＡ）１５８−１６６を含む。
【００２５】
図１に示される例においては、ＲＡＩＤサブシステム・ノード１０６は、プロセッサ１６８、メモリ１７０、ＴＣＡ１７２、及び複数の冗長及び／又はストライプ化ディスク記憶装置１７４を含む。ＴＣＡ１７２は、完全に機能するＨＣＡであってもよい。
【００２６】
ＳＡＮファブリック１１６は、Ｉ／Ｏ及びプロセッサ間通信用のデータ通信を処理する。ＳＡＮファブリック１１６は、Ｉ／Ｏに要求される高帯域幅とスケーラビリティをサポートし、プロセッサ間通信に要求される非常に少ない待ち時間と低いＣＰＵオーバーヘッドもサポートする。ユーザ・クライアントは、オペレーティング・システムのカーネル・プロセスをバイパスし、効率的なメッセージの受け渡しプロトコルを可能にする、ＨＣＡのようなネットワーク通信ハードウェアに直接アクセスすることができる。ＳＡＮファブリック１１６は、現在のコンピューティング・モデルに適合され、Ｉ／Ｏ及びコンピュータ・クラスタ通信の新しい形態の構成単位である。さらに、一実施形態においては、ＳＡＮファブリック１１６は、Ｉ／Ｏアダプタ・ノードが、それらの間で通信するか、又は分散型コンピータ・システムのプロセッサ・ノードのいずれかと通信することを可能にする。Ｉ／ＯアダプタがＳＡＮファブリック１１６に取り付けられると、結果としてもたらされるＩ／Ｏアダプタ・ノードは、分散型コンピュータ・システム１００のいかなるホスト・プロセッサ・ノードとも実質的に同じ通信機能を有する。
【００２７】
１つ又は複数の実施形態において、ＳＡＮファブリック１１６は、チャネル・セマンティクス及びメモリ・セマンティクスをサポートする。チャネル・セマンティクスは、送信／受信操作又はプッシュ通信操作と呼ばれることがある。チャネル・セマンティックは、送信元装置がデータをプッシュ配信し、宛先装置がそのデータの最終宛先を決定する、従来のＩ／Ｏチャネルに用いられる通信のタイプである。チャネル・セマンティクスにおいては、送信元プロセスから伝送されたパケットは、宛先プロセスの通信ポートを指定するが、宛先プロセスのメモリ空間のどこにパケットが書き込まれるかは指定しない。従って、チャネル・セマンティクスにおいて、宛先プロセスは、伝送されるデータをどこに置くかを予め割り当てる。
【００２８】
メモリ・セマンティクスにおいては、送信元プロセスは、直接、リモート・ノードの宛先プロセスの仮想アドレス空間を読み取るか又はこれに書き込む。リモート宛先プロセスは、データに関するバッファの位置を通信することだけを必要とし、どのようなデータ転送にも関与する必要がない。従って、メモリ・セマンティクスにおいて、送信元プロセスは、宛先プロセスの宛先バッファ・メモリ・アドレスを含むデータ・パケットを送る。メモリ・セマンティクスにおいて、宛先プロセスは、送信元プロセスがそのメモリにアクセスしてもよいという許可を前もって与える。
【００２９】
チャネル・セマンティクス及びメモリ・セマンティクスの両方とも、典型的には、Ｉ／Ｏ及びプロセッサ間通信のために用いられる。典型的なＩ／Ｏ操作は、チャネル・セマンティクスとメモリ・セマンティクスの組み合わせを用いる。例えば、ホスト・プロセッサ・ノード１０２などのホスト・プロセッサ・ノードは、チャネル・セマンティクスを用いて、ディスク書き込みコマンドを、ＲＡＩＤサブシステムのＴＣＡ１７２のようなディスクＩ／Ｏアダプタに送ることにより、Ｉ／Ｏ操作を開始する。ディスクＩ／Ｏアダプタは、コマンドを調べ、メモリ・セマンティクスを用いて、ホスト・プロセッサ・ノードのメモリ空間からデータ・バッファを直接読み取る。データ・バッファを読み取った後、ディスクＩ／Ｏアダプタは、チャネル・セマンティクスを用いて、Ｉ／Ｏ完了メッセージを再びホスト・プロセッサ・ノードにプッシュ配信する。
【００３０】
１つ又は複数の実施形態においては、図１に示される分散型コンピュータ・システムは、仮想アドレス及び仮想メモリ保護機構を用いる操作を実行し、全てのメモリへの正確かつ適切なアクセスを保証する。こうした分散型コンピュータ・システム内で実行されるアプリケーションは、いずれの操作にも物理的アドレス指定の使用を必要としない。
【００３１】
ここで図２を参照すると、ホスト・チャネル・アダプタに関する更なる詳細が説明される。一例においては、ホスト・チャネル・アダプタ（ＨＣＡ）２００は、メッセージをＨＣＡポート２１２−２１６に転送するために使用される、１組の待ち行列対（ＱＰ）２０２−２１０を含む。データのＨＣＡポート２１２−２１６へのバッファリングは、各々がそれぞれ流れ制御を有する仮想レーン（ＶＬ）２１８−２３４を通して送られる。サブネット・マネージャは、各物理ポートに対するローカル・アドレス、即ちポートのローカル識別子（ＬＩＤ）によってチャネル・アダプタを構成する。サブネット・マネージャ・エージェント（ＳＭＡ）２３６は、チャネル・アダプタを構成するためにサブネット・マネージャと通信するエンティティである。メモリ変換及び保護（ＭＴＰ）２３８は、仮想アドレスを物理アドレスに変換し、アクセス権の妥当性検査を行う機構である。ダイレクト・メモリ・アクセス（ＤＭＡ）２４０は、ＱＰ２０２−２１０に関してメモリ２４２を使用するＤＭＡ動作を提供する。
【００３２】
図２に示されるＨＣＡ２００のような単一のチャネル・アダプタは、数千個ものＱＰをサポートすることができる。対照的に、Ｉ／ＯアダプタのＴＣＡは、典型的には、これよりもかなり少数のＱＰをサポートする。各ＱＰは、例えば、２つの作業待ち行列、即ち送信待ち行列（ＳＱ）及び受信待ち行列（ＲＱ）を含む。ＳＱは、チャネル・セマンティック・メッセージ及びメモリ・セマンティック・メッセージを送信するために使用される。ＲＱは、チャネル・セマンティック・メッセージを受信する。コンシューマは、作業要求（ＷＲ）を作業待ち行列に出すために、本明細書では「verbインターフェース」と呼ぶオペレーティング・システム特有のプログラミング・インターフェースを呼び出す。
【００３３】
ここで図３を参照すると、作業要求の処理に関する更なる詳細が説明される。図３の例では、コンシューマ３０６からの要求及びコンシューマ３０６に対する要求（例えば、待ち行列と関連したＨＣＡに結合された中央演算処理装置内で実行されている、ユーザ・プロセスなどのプロセス）を処理するために、メモリ内に、受信待ち行列（ＲＱ）３００、送信待ち行列（ＳＱ）３０２、及び完了待ち行列（ＣＱ）３０４が存在する。コンシューマ３０６からのこれらの要求は、最終的にハードウェア３０８に送られる（ハードウェア３０８は別のＨＣＡのハードウェアと結合され、そのハードウェアは、他のＨＣＡのＲＱ、ＳＱ、及びＣＱに結合される）。この例では、コンシューマ３０６は、作業要求３１０及び３１２を生成し、作業完了３１４を受信する。作業待ち行列の上に置かれた作業要求は、作業待ち行列要素（ＷＱＥ）と呼ばれる。
【００３４】
一例において、送信待ち行列３０２は、ＳＡＮファブリック１１６上で伝送されるべきデータを記述しているＷＱＥ３２２−３２８を含む。受信待ち行列３００は、ＳＡＮファブリック１１６からの着信チャネル・セマンティック・データをどこに置くかを記述しているＷＱＥ３１６−３２０を含む。ＷＱＥは、ＨＣＡのハードウェア３０８によって処理される。各ＱＰは、現行ＷＱＥ、パケット・シーケンス番号、伝送パラメータ等のような、特定のＱＰに関する情報のブロックであるＱＰコンテキストを通して管理される。
【００３５】
verbインターフェースは、完了した作業を完了待ち行列３０４から取り出すための機構も提供する。図３に示されるように、完了待ち行列３０４は、完了待ち行列要素（ＣＱＥ）３３０−３３６を含む。ＣＱＥは、既に完了しているＷＱＥに関する情報を含む。ＣＱ３０４は、複数のＱＰに関する完了通知の単一点を作成するために使用される。ＣＱＥは、完了したＱＰ及び特定のＷＱＥを決定するのに十分な情報を含む。ＣＱコンテキストは、ポインタ、長さ、及び個々のＣＱを管理するのに必要な他の情報を含む１ブロックの情報である。
【００３６】
ＳＱ３０２によりサポートされる作業要求の例は、次のものを含む。即ち、チャネル・セマンティック操作である送信作業要求は、リモート・ノードの受信ＷＱＥが参照するデータ・セグメントに１組のローカル・データ・セグメントをプッシュする。例えば、ＷＱＥ３２８は、データ・セグメント４  ３３８、データ・セグメント５  ３４０、及びデータ・セグメント６  ３４２への参照を含む。送信作業要求のデータ・セグメントの各々は、事実上連続しているメモリ空間を含む。ローカル・データ・セグメントを参照するために使用される仮想アドレスは、ローカルＱＰを作成したプロセスのアドレス・コンテキスト内にある。ＳＱ  ＷＱＥにおいて指定することができる他のタイプの操作は、ＲＤＭＡ書き込み操作及びＲＤＭＡ読み取り操作である。これらは、メモリ・セマンティック操作である。
【００３７】
一実施形態においては、ＲＱ３００は、受信ＷＱＥと呼ばれる１つのタイプのＷＱＥをサポートする。受信ＷＱＥは、着信する送信メッセージが書き込まれるローカル・メモリ空間を記述しているチャネル・セマンティック操作を提供する。受信ＷＱＥは、幾つかの事実上連続しているメモリ空間を記述している散乱リスト（scatter list）を含む。着信する送信メッセージは、これらのメモリ空間に書き込まれる。仮想アドレスは、ローカルＱＰを作成したプロセスのアドレス・コンテキスト内にある。
【００３８】
プロセッサ間通信の場合、ユーザ・モード・ソフトウェア・プロセスは、ＱＰを介して、メモリにおいてバッファがある場所から直接データを転送する。１つ又は複数の実施形態においては、ＱＰを介する転送は、オペレーティング・システムをバイパスし、ホスト命令サイクルをほとんど消費しない。ＱＰは、オペレーティング・システム・カーネルの関与がない、ゼロ・プロセッサ・コピー・データ転送を可能にする。ゼロ・プロセッサ・コピー・データ転送は、高帯域幅、低待ち時間の通信の効率的なサポートを提供する。
【００３９】
ＱＰが作成されると、選択されたタイプのトランスポート・サービスを提供するように、ＱＰが設定される。例として、４つのタイプのトランスポート・サービスがサポートされる。即ち、信頼できる接続（reliable connection）、信頼できない接続（unreliableconnection）、信頼できるデータグラム（reliable datagram）、及び信頼できないデータグラム（unreliable datagram）である。
【００４０】
図４において、分散型プロセス間の通信のために信頼できる接続サービスを用いる分散型コンピュータ・システムの一部が、一般的に示される。一例において、分散型コンピュータ・システム４００は、ホスト・プロセッサ・ノード１、ホスト・プロセッサ・ノード２、及びホスト・プロセッサ・ノード３を含む。ホスト・プロセッサ・ノード１は、プロセスＡ  ４１０を含む。ホスト・プロセッサ・ノード３は、プロセスＣ  ４２０及びプロセスＤ  ４３０を含む。ホスト・プロセッサ・ノード２は、プロセスＥ  ４４０を含む。
【００４１】
ホスト・プロセッサ・ノード１は、各々が送信待ち行列及び受信待ち行列を有するＱＰ４、６、及び７を含む。ホスト・プロセッサ・ノード２はＱＰ９を有し、ホスト・プロセッサ・ノード３は、ＱＰ２及び５を有する。分散型コンピュータ・システム４００の信頼できる接続サービスは、ポート及びＱＰ番号によりリモートＱＰを識別するためにローカルＱＰコンテキストを構成することにより、ローカルＱＰを１つのリモートＱＰと関連付ける。従って、ＱＰ４は、ＱＰ２と通信するために使用され、ＱＰ７は、ＱＰ５と通信するために使用され、ＱＰ６は、ＱＰ９と通信するために使用される。
【００４２】
信頼できる接続サービス内の１つのＱＰ上に置かれたＷＱＥにより、接続されたＱＰの受信ＷＱＥが参照する受信メモリ空間にデータが書き込まれる。ＲＤＭＡ操作は、接続されたＱＰのアドレス空間上で動作する。
【００４３】
１つ又は複数の実施形態においては、ハードウェアがシーケンス番号を保持し、全てのパケット転送に肯定応答するので、信頼できる接続サービスを信頼できるものにする。ハードウェアとＳＡＮファブリック１１６のドライバ・ソフトウェアとの組み合わせは、あらゆる失敗に終わった通信を再試行する。ＱＰのプロセス・クライアントは、ビット誤り、受信アンダーラン、及びネットワーク輻輳がある状態でさえ、信頼できる通信を取得する。ＳＡＮファブリック１１６内に代替的な経路が存在する場合には、ファブリック・スイッチ、リンク、又はチャネル・アダプタ・ポートの故障がある状態でさえ、信頼できる通信を維持することができる。
【００４４】
図５において、分散型コンピュータ・システムで用いるための階層化された通信アーキテクチャ５００の一例が、一般的に示される。階層化アーキテクチャの図は、種々の層のデータ通信経路と、層間で送られるデータ及び制御情報の構成を示す。
【００４５】
ＨＣＡエンドノード・プロトコル層（例えば、エンドノード５１１により用いられる）は、コンシューマ５０３が定めた上位レベル・プロトコル５０２と、トランスポート層５０４と、ネットワーク層５０６と、リンク層５０８と、物理層５１０とを含む。スイッチ層（例えばスイッチ５１３により用いられる）は、リンク層５０８と、物理層５１０とを含む。ルータ層（例えば、ルータ５１５により用いられる）は、ネットワーク層５０６と、リンク層５０８と、物理層５１０とを含む。
【００４６】
階層化アーキテクチャ５００は、一般に、標準的な通信スタックの概要にほぼ従ったものである。例えば、エンドノード５１１のプロトコル層に関して、上位層プロトコル５０２は、トランスポート層５０４においてメッセージを作成するために、verbインターフェースを用いる。ネットワーク５０６は、ネットワーク・サブネット５１６間でパケットを経路指定する。リンク層５０８は、ネットワーク・サブネット５１８内でパケットを経路指定する。物理層５１０は、ビット又はビット・グループを他のデバイスの物理層に送る。各々の層は、上位層又は下位層がそれらの機能をどのように実行するかを認識していない。
【００４７】
コンシューマ５０３及び５０５は、エンドノード間で通信するために他の層を用いるアプリケーション又はプロセスを表す。トランスポート層５０４は、エンド・ツー・エンド式のメッセージ移動を提供する。上述されたように、トランスポート層は、例えば、信頼できる接続サービス、信頼できるデータグラム・サービス、信頼できないデータグラム・サービス、及び信頼できない接続サービスを含む４つのタイプのトランスポート・サービスを提供する。ネットワーク層５０６は、サブネット又は複数のサブネットを介した宛先エンドノードへのパケット経路指定を行う。リンク層５０８は、リンク間で、流れ制御され、誤り検査され、及び優先順位付けされたパケット配信を行う。物理層５１０は、技術依存のビット伝送を行う。ビット又はビット・グループは、リンク５２２、５２４、及び５２６を介して、物理層間で送られる。リンクは、プリント回路の銅トレース、銅ケーブル、光ケーブルを用いて、又は他の適切なリンクを用いて実装することができる。
【００４８】
上述されたように、ホスト・チャネル・アダプタなどのアダプタは、リモート・ダイレクト・メモリ・アクセス書き込み又は送信を含む特定の操作を実行するために、互いに通信する。この通信の一部として、１つのアダプタから別のアダプタへの肯定応答が用いられる。肯定応答の提供を含む、操作の実行に関する更なる詳細が、図６及び図７を参照して説明される。特に、図６は、本発明の１つ又は複数の態様が存在しない、肯定応答（非遅延型肯定応答）を用いる処理の一実施形態を示し、図７は、本発明の１つの態様に従った遅延型肯定応答の使用を示す。
【００４９】
最初に図６を参照すると、プロセッサ６００上で実行されるプロセスが、送信操作又はＲＤＭＡ書き込み操作のような、メモリ書き込み操作などの操作の実行を要求する。この要求は、作業待ち行列要素（ＷＱＥ）内に置かれ、作業待ち行列要素は、送信アダプタによりアクセス可能なメモリ内の送信待ち行列上に置かれる。ＲＤＭＡ可能なホスト・チャネル・アダプタのような送信統合型ネットワーク・アダプタ（ＣＮＡ）６０２が、ＷＱＥ６１０と、ＷＱＥ内のポインタにより示される対応するデータ６１２とをフェッチし、リンク及びファブリック６０４上で、別のＲＤＭＡ可能なホスト・チャネル・アダプタのようなリモート受信ＣＮＡ６０６に送られるべきパケットを構築する。リモート・アダプタは、メモリへの書き込みを行う。（送信操作の場合、データを書き込むためのメモリ位置が、受信ＷＱＥ内に示される。）ＰＣＩの場合、メモリへの書き込みは、ポスト済みのメモリ書き込み要求である（つまり、ＤＭＡ書込みに対する応答はない）。さらに、リモート・アダプタは、肯定応答６１４を再び送信アダプタに送る。この肯定応答は、リモート・アダプタが要求及びデータを受信したことを示すが、そのデータがリモート・メモリ内に存在することを示すものではない。肯定応答の受信に応答して、送信アダプタは、ＣＱＥを生成し、このＣＱＥは完了待ち行列上に置かれる。ＣＱＥから、作業が完了した（即ち、リモート・アダプタにおいて書き込み又は送信が受信された）ことが、アプリケーションに通知される。
【００５０】
その後、リモート・プロセッサがデータを利用できるかどうか（即ち、メモリ内に格納されたかどうか）を判断することをアプリケーションが望む場合、アプリケーションは、有効なメモリ位置（例えば、書込み操作により書き込まれた位置の１つ）に対するＲＤＭＡ読み取り操作６１６を行って、データがそこにあるかどうかを判断する。リモート・アダプタは、送信アダプタが要求したＲＤＭＡ読み取り操作を実行する。データが利用可能であるとき、リモート・アダプタは、読み取り操作の完了を示す別の肯定応答（即ち、ＲＤＭＡ読み取りデータ）６１８を送信アダプタに送る。肯定応答の受信に応答して、送信アダプタは、再びＣＱＥを生成し、このＣＱＥは、完了待ち行列上に置かれ、受信アダプタにより、送信アダプタが生成したリモート読み取り要求が実行されたことをアプリケーションに通知する。
【００５１】
上述されたように、要求された操作（例えばメモリ書き込み、送信）が実行されたことを示すために、２つの肯定応答、及び、送信アダプタが開始し、かつ、リモート・アダプタが実行したリモート読み取り操作が使用された。２つの肯定応答及びリモートで開始された読み取り要求を使用することにより、要求された操作を実行するためのアダプタ間の待ち時間が増大する。従って、本発明の１つの態様によると、リモート・アダプタは、要求された操作が完了するまで（即ち、データがメモリ内に格納され、プロセッサに見えるようになるまで）要求された操作の肯定応答を行わない遅延型肯定応答技術が提供される。図７を参照して、遅延型肯定応答と関連した処理の１つの実施形態が説明される。
【００５２】
図７を参照すると、図６の非遅延型肯定応答と同様に、プロセッサ６００上で実行されるプロセスが、送信操作又はＲＤＭＡ書き込み操作のような操作の実行を要求する。要求は、作業待ち行列要素（ＷＱＥ）６１０内に置かれ、作業待ち行列要素は、送信待ち行列上に置かれる。送信アダプタ６０２は、ＷＱＥ６１０と、ＷＱＥ内のポインタによって示される対応するデータ６１２とをフェッチし、リンク及びファブリック６０４上でリモート・アダプタ６０６に送られるパケットを構築する。リモート・アダプタは、ポスト済みのメモリ書き込み要求であるメモリへの書き込みを実行するが、リモート・アダプタは、この時点では肯定応答を送らない。代わりに、リモート・アダプタは、リモート・アダプタにより局所的に開始される読み取り操作６３０を実行する。この読み取りは、送信アダプタが要求するものではなく、送信アダプタに対してトランスペアレントである。読み取り操作は、例えば、ＲＤＭＡ書き込み操作の最終バイト又はキャッシュ・ラインのＤＭＡ読み取りである。通常のＰＣＩ順序付け規則は、ＤＭＡ読み取りデータが戻される前に、全ての先行するＤＭＡ書き込みを完了すべきであることを示す。データがメモリに書き込まれ、リモート・プロセッサに見えることを示すＤＭＡ読み取り操作の完了に応答して、リモート・アダプタは、肯定応答６３２を送信アダプタに送る。アダプタとメモリとの間の相互接続（例えばＰＣＩ）が準拠する順序付け規則は、読み取りが成功裡に完了するために、全てのデータをメモリ内に格納すべきであることを示すので、ＤＭＡ読み取り操作の完了に応答して生成されるこの肯定応答は、データがメモリ内にあることを保証する。
【００５３】
書き込み操作又は送信操作が完了したときに１回だけ肯定応答を送ること、及び、送られた要求が、送信アダプタから、読み取りを要求しているリモート・アダプタに送られるのを回避することによって、待ち時間は低減し、従って、システム性能が向上する。
【００５４】
図８を参照して、遅延型肯定応答の処理に関する更なる詳細が説明される。この処理は、受信アダプタにより実行される。最初に、受信アダプタは、ＲＤＭＡ書き込み操作又はデータをメモリに書き込む送信操作のような操作を実行する要求を、送信アダプタから受信する（ステップ７００）。要求に応答して、受信アダプタは操作を開始する（ステップ７０２）。例えば、受信アダプタは、メモリへのデータの書き込みを始める。一例において、この書き込みは、ポスト済みのメモリ書き込み要求である。
【００５５】
この実施形態においては、データは、ＰＣＩ相互接続を介してメモリに書き込まれる。しかしながら、ＰＣＩは、ＤＭＡ書き込み操作への応答を提供しない。さらに、アダプタ（例えば、ＩｎｆｉｎｉＢａｎｄ（商標））のアーキテクチャは、要求の受信に応答して肯定応答が送られた場合、その肯定応答はアダプタによる要求及びデータの受信に肯定応答するにすぎず、データがメモリ内に格納されたことを保証するものではないことを規定する。この時点において、受信アダプタは、肯定応答を送ることも、送らないこともある。
【００５６】
本発明の１つの態様によると、遅延処理が指示されるかどうかの判断が行われる（問い合わせ７０４）。例として、この判断は、要求と関連した待ち行列対コンテキスト内のインジケータ、又は送信ＷＱＥから生成されたパケット内のインジケータをチェックすることより行うことができる。遅延処理が指示される場合、送信アダプタには未知の受信アダプタが、ローカル読み取り操作を実行し、データがメモリ内に格納されたかどうかを判断する。読み取り操作は、例えば、受信アダプタが書き込んだ最終メモリ位置へのＤＭＡ読み取りである。別の例においては、ＤＭＡ読み取りは、別の有効なメモリ位置（即ち、前に書き込まれたメモリ位置）のものとすることができる。
【００５７】
読み取りが成功し、メモリ内でデータが利用可能である（問い合わせ７０８）ことが示される場合、肯定応答が、送信アダプタに送られる（ステップ７１０）。従って、この肯定応答は、読み取り操作によりデータが利用可能であることが判断されるまで、遅延される。
【００５８】
問い合わせ７０８に戻ると、データが現在利用可能ではない場合、受信アダプタは、データが利用可能になるまで待つ。
【００５９】
問い合わせ７０４に戻ると、遅延処理が指示されていない（即ち、この特定の待ち行列対又は要求に関して、利用可能でないか又はイネーブルにされていない）と判断された場合には、書き込み操作又は送信操作の受信を示す肯定応答が送られる（ステップ７１２）。肯定応答は遅延されず、書き込み操作又は送信操作によりデータがメモリに書き込まれたことを保証するものではない。これにより処理が終了する。
【００６０】
当業者によって理解されるように、本発明の態様は、システム、方法、又はコンピュータ・プログラム製品として具体化することができる。従って、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形態を取ることができ、これらは全て、本明細書において一般的に「回路」、「モジュール」、又は「システム」と呼ぶことができる。さらに、本発明の態様は、媒体に具体化されたコンピュータ使用可能プログラム・コードを有する、１つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータ・プログラム製品の形態を取ることができる。
【００６１】
１つ又は複数のコンピュータ可読媒体の任意の組み合わせを利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体、又は、コンピュータ可読ストレージ媒体とすることができる。コンピュータ可読信号媒体は、例えば、ベースバンド内に又は搬送波の一部として、その中で具体化されたコンピュータ可読プログラム・コードを有する伝搬データ信号を含むことができる。このような伝搬信号は、これらに限られるものではないが、電磁気信号、光信号、又はそれらのいずれかの適切な組み合わせを含む、いずれかの種々の異なる形態を取ることができる。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなく、命令実行システム、装置、若しくはデバイスによって、又はそれらと接続して用いるための、プログラムを通信し、伝搬し、又は移送することが可能ないずれかのコンピュータ可読媒体とすることができる。
【００６２】
コンピュータ可読ストレージ媒体は、これらに限られるものではないが、例えば、電子的、磁気的、光学的、電磁的、赤外線、又は半導体のシステム、装置、デバイス、或いは上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例（非網羅的なリスト）として、以下のもの、すなわち、１つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭ又はフラッシュメモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、光記憶装置、磁気記憶装置、又は上記のいずれかの適切な組み合わせが挙げられる。本明細書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置、又はデバイスによって、或いはそれらと接続して使用するために、プログラムを収容又は格納することができる任意の有形媒体である。
【００６３】
ここで図９を参照すると、一例において、コンピュータ・プログラム製品８００が、例えば、本発明の１つ又は複数の態様を提供し、容易にするように、コンピュータ可読プログラム・コード手段又は論理８０４をその上に格納するための１つ又は複数のコンピュータ可読ストレージ媒体８０２を含む。一実施形態においては、ストレージ媒体は、有形であり、一時的なものではない（non-transitory）。一例において、ストレージ媒体は、記憶装置である。
【００６４】
コンピュータ可読媒体上に具体化されたプログラム・コードは、これらに限られるものではないが、無線、有線、光ファイバ・ケーブル、ＲＦ等、或いは上記のいずれかの適切な組み合わせを含む、適切な媒体を用いて伝送することができる。
【００６５】
本発明の態様に関する操作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ、ＳｍａｌｌＴａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語、及び、「Ｃ」プログラミング言語、アセンブラ、又は同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、１つ又は複数のプログラミング言語の任意の組み合わせで書くことができる。プログラム・コードは、ユーザのコンピュータ上で完全に実行するか、ユーザのコンピュータ上で部分的に実行するか、独立型のソフトウェア・パッケージとして実行するか、ユーザのコンピュータ上で部分的に実行し、リモート・コンピュータ上で部分的に実行するか、又は、リモート・コンピュータ若しくはサーバ上で完全に実行することができる。後者のシナリオにおいては、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）又は広域エリア・ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通してユーザのコンピュータに接続するか、或いは、（例えば、インターネット・サービス・プロバイダを用いたインターネットを通して）外部のコンピュータに接続することができる。
【００６６】
本発明の態様が、本発明の実施形態による方法、装置（システム）、及びコンピュータ・プログラムのフローチャート説明図及び／又はブロック図を参照して、ここに説明される。フローチャート説明図及び／又はブロック図の各ブロック、並びに、フローチャート説明図及び／又はブロック図中のブロックの組み合わせは、コンピュータ・プログラム命令によって実装できることが理解されるであろう。これらのコンピュータ・プログラム命令は、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに供給してマシンを生成し、その結果、コンピュータ又は他のプログラム可能データ処理装置のプロセッサにより実行される命令が、フローチャート及び／又はブロック図のブロック又はブロック群において指定される機能／動作を実装するための手段を生成するようにすることができる。
【００６７】
これらのコンピュータ・プログラム命令はまた、フローチャート及び／又はブロック図のブロック又はブロック群において指定される機能／動作を実装する命令を含む製品を生成するように、コンピュータ又は他のプログラム可能なデータ処理装置、又は他のデバイスに特定の方法で機能するように命令することが可能なこれらのコンピュータ・プログラム命令を、コンピュータ可読媒体に格納することもできる。
【００６８】
コンピュータ又は他のプログラム可能な装置上で実行される命令が、フローチャート及び／又はブロック図のブロック又はブロック群において指定される機能／動作を実装するためのプロセスを提供するように、コンピュータ・プログラム命令をコンピュータ、他のプログラム可能データ処理装置、又は他のデバイスにロードし、一連の操作ステップをコンピュータ、他のプログラム可能装置、又は他のデバイス上で実行させて、コンピュータに実装されるプロセスを生成することもできる。
【００６９】
図中のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法及びコンピュータ・プログラムの可能な実装のアーキテクチャ、機能及び動作を示す。これに関して、フローチャート又はブロック図中の各ブロックは、モジュール、セグメント、又はコードの部分を表すことができ、これは、指定された論理機能を実行するための１つ又は複数の実行可能命令を含む。幾つかの代替的な実施においては、ブロック内に示された機能は、図中に示された順番とは異なる順番で行なうことができることにも留意すべきである。例えば、連続して示される２つのブロックを、実際には、実質的に同時に実行することができ、或いは場合により、関与する機能に応じてブロックを逆の順番で実行することもできる。また、ブロック図及び／又はフローチャート説明図中の各ブロック、並びにブロック図及び／又はフローチャート説明図中のブロックの組み合わせは、指定された機能又は行為を実行する専用のハードウェア・ベースのシステム、或いは専用のハードウェアとコンピュータ命令の組み合わせによって実行できることにも留意されたい。
【００７０】
上記に加えて、本発明の１つ又は複数の態様は、顧客環境の管理を提供するサービス・プロバイダによって、供与、提供、配置、管理、サービス等を行うことができる。例えば、サービス・プロバイダは、１又は複数の顧客のために本発明の１つ又は複数の態様を実施するコンピュータ・コード及び／又はコンピュータ・インフラストラクチャの作成、保持、サポート等を行うことができる。見返りに、サービス・プロバイダは、例として、予約申し込み及び／又は報酬契約の下で顧客から支払いを受けることができる。付加的に又は代替的に、サービス・プロバイダは、１又は複数の第三者に対する広告コンテンツの販売からの支払いを受けることができる。
【００７１】
本発明の１つの態様において、本発明の１つ又は複数の態様を実施するために、アプリケーションを配置することができる。一例として、アプリケーションの配置は、本発明の１つ又は複数の態様を実施するように動作可能なコンピュータ・インフラストラクチャを提供することを含む。
【００７２】
本発明の更に別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含む、コンピュータ・インフラストラクチャを配置することができ、そこでは、コードは、コンピューティング・システムと協働して、本発明の１つ又は複数の態様を実施することができる。
【００７３】
本発明の更に別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含む、コンピューティング・インフラストラクチャを統合するためのプロセスを提供することができる。コンピュータ・システムは、コンピュータ可読媒体を含み、ここで、コンピュータ媒体は、本発明の１つ又は複数の態様を含む。コードは、コンピュータ・システムと協働して、本発明の１つ又は複数の態様を実施することができる。
【００７４】
種々の実施形態が上述されたが、これらはただ１つの例にすぎない。例えば、他のアーキテクチャのコンピューティング環境が、本発明の１つ又は複数の態様を組み込み、使用することが可能である。付加的に、本発明の１つ又は複数の態様は、メモリ書き込み及び／又は送信以外の操作に関連することもある。さらに、メモリ書き込みが、ＲＤＭＡ書き込みである必要はなく、及び／又は、アダプタは、ＲＤＭＡ可能なもの以外のものであってもよい。さらに、アダプタとメモリの間の相互接続は、これらに限られるものではないが、メモリ書き込みへの応答を提供しない他の相互接続を含む、ＰＣＩ以外のものであってもよい。さらに、アダプタのアーキテクチャは、ＩｎｆｉｎｉＢａｎｄ（商標）以外のものにすることができる。多数の他の変形も可能である。
【００７５】
さらに、他のタイプのコンピューティング環境が、本発明の１つ又は複数の態様から利益を得ることができる。一例として、環境は、特定のアーキテクチャ（例えば、命令実行、アドレス変換などのアーキテクチャ化された機能、及びアーキテクチャ化されたレジスタを含む）又はそのサブセットをエミュレートする（例えば、プロセッサ及びメモリを有するネイティブ・コンピュータ・システム上で）エミュレータ（例えば、ソフトウェア又は他のエミュレーション機構）を含むことができる。このような環境においては、エミュレータを実行しているコンピュータが、エミュレートされる機能とは異なるアーキテクチャを有することができたとしても、エミュレータの１つ又は複数のエミュレーション機能が、本発明の１つ又は複数の態様を実施することができる。一例として、エミュレーション・モードにおいては、エミュレートされる特定の命令又は操作がデコードされ、適切なエミュレーション機能が構築され、個々の命令又は操作を実施する。
【００７６】
エミュレーション環境においては、ホスト・コンピュータは、例えば、命令及びデータを格納するためのメモリと、メモリから命令をフェッチし、随意的に、フェッチされた命令のためのローカル・バッファリングを提供するための命令フェッチ・ユニットと、フェッチされた命令を受信し、フェッチされた命令のタイプを判断するための命令デコード・ユニットと、命令を実行するための命令実行ユニットとを含む。実行は、メモリからデータをレジスタ内にロードすること、レジスタからデータを再びメモリに格納すること、又はデコード・ユニットにより判断されるように、幾つかのタイプの算術演算又は論理演算を実行することを含むことができる。一例においては、各ユニットは、ソフトウェアで実施される。例えば、ユニットが実行する演算は、エミュレータ・ソフトウェア内の１つ又は複数のサブルーチンとして実施される。
【００７７】
さらに、システム・バスを通してメモリ要素に直接的に又は間接的に接続された少なくとも１つのプロセッサを含むプログラム・コードを格納及び／又は実行するのに適したデータ処理システムが使用可能である。メモリ要素は、例えば、プログラム・コードの実際の実行時に使用されるローカル・メモリと、大容量記憶装置と、実行時に大容量記憶装置からコードを取得しなければならない回数を減少させるために少なくとも幾つかのプログラム・コードの一時的な記憶場所を提供するキャッシュメモリとを含む。
【００７８】
入力／出力即ちＩ／Ｏ装置（キーボード、ディスプレイ、ポインティング装置、ＤＡＳＤ、テープ、ＣＤ、ＤＶＤ、親指ドライブ、及び他のメモリ媒体等を含むが、これらに限定されるものではない）は、直接的に、又は介在するＩ／Ｏコントローラを通して、システムに結合することができる。データ処理システムが、介在するプライベート・ネットワーク又は公衆ネットワークを通して、データ処理システムを、他のデータ処理システム又はリモート・プリンタ若しくはストレージ装置に結合できるように、ネットワーク・アダプタをシステムに結合することもできる。モデム、ケーブル・モデム及びイーサネット・カードは、現時点で利用可能なごくわずかなタイプのネットワーク・アダプタである。
【００７９】
本明細書において用いられる用語は、特定の実施形態を説明する目的のためのものにすぎず、本発明を限定することを意図するものではない。本明細書において用いられる場合、文脈から明らかにそうでないことが示されていない限り、単数形は、複数形も同様に含むことが意図されている。「含む」及び／又は「含んでいる」という用語は、本明細書において用いられる場合、言明された特徴、整数、ステップ、動作、要素、及び／又はコンポーネントの存在を特定するものではあるが、１つ又は複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、及び／又はそれらの群の存在又は追加を排除するものではないこともさらに理解されるであろう。
【００８０】
以下の特許請求の範囲における全ての「手段又はステップと機能との組み合わせ（ミーンズ又はステップ・プラス・ファンクション）」要素の対応する構造、材料、行為、及び均等物は、明確に特許請求されているように他の特許請求された要素と組み合わせて実行するための、いかなる構造、材料、又は行為をも含むことを意図される。本発明の説明は、例示及び説明の目的で提示されたものであるが、網羅的であることを意図するものではなく、本発明を開示された形態に限定することを意図するものでもない。本発明の範囲及び思想から逸脱することのない多くの変更及び変形が、当業者には明らかであろう。実施形態は、本発明の原理及び実際の用途を最も良く説明するため、及び、他の当業者が本発明を、種々の変更を有する種々の実施形態について企図される特定の使用に好適なものとして理解することを可能にするために、選択及び記載された。
【符号の説明】
【００８１】
１００、４００：分散型コンピュータ・システム
１０２、１０４：ホスト・プロセッサ・ノード
１０６：冗長アレイ独立ディスク（ＲＡＩＤ）サブシステム・ノード
１０８：Ｉ／Ｏシャシー・ノード
１１２、１１４、１４６、５１３：スイッチ
１１６：システム・エリア・ネットワーク（ＳＡＮ）ファブリック
１１７、５１５：ルータ
１１８、１２０、１２２、１２４、２００：ホスト・チャネル・アダプタ（ＨＣＡ）
１２６、１２８、１３０、１３６、１３８、１４０：中央演算処理装置
１３２、１４２、１７０、２４２：メモリ
１３４、１４４：バス・システム
１４６：Ｉ／Ｏスイッチ
１４８、１５０、１５２、１６５、１５６：Ｉ／Ｏモジュール
１５８、１６０、１６２、１６４、１６６、１７２：ターゲット・チャネル・アダプタ（ＴＣＡ）
１６８、６００：プロセッサ
１７４：ディスク記憶装置
２０２、２０４、２０６、２０８、２１０：待ち行列対（ＱＰ）
２１２、２１４、２１６：ＨＣＡポート
２１８−２３４：仮想レーン（ＶＬ）
２３６：サブネット・マネージャ・エージェント（ＳＭＡ）
２３８：メモリ変換及び保護（ＭＴＰ）
２４０：ダイレクト・メモリ・アクセス（ＤＭＡ）
３００：受信待ち行列（ＲＱ）
３０２：送信待ち行列（ＳＱ）
３０４：完了待ち行列（ＣＱ）
３０６、５０３、５０５：コンシューマ
３０８：ハードウェア
３１０、３１２：作業要求
３１４：作業完了
３１６、３１８、３１９、３２０、３２２、３２４、３２６、３２８、６１０：作業待ち行列要素（ＷＱＥ）
３３０、３３２、３３４、３３６：完了待ち行列要素（ＣＱＥ）
３３８、３４０、３４２、３４４、３４６、３４８：データ・セグメント
３４０：データ・セグメント５
３４２：データ・セグメント６
４１０：プロセスＡ
４２０：プロセスＣ
４３０：プロセスＤ
４４０：プロセスＥ
５００：階層化通信アーキテクチャ
５０２：上位レベル・プロトコル
５０４：トランスポート層
５０６：ネットワーク層
５０８：リンク層
５１０：物理層
５１１：エンドノード
５１６、５１８：ネットワーク・サブネット
５２２、５２４、５２６：リンク
６０２：統合型ネットワーク・アダプタ（ＣＮＡ）
６０４：リンク及びファブリック
６０６：リモートＣＮＡ
６１２：データ
６１４、６１８、６３２：肯定応答（ＡＣＫ）
６１６：ＲＤＭＡ読み取り操作
６３０：読み取り操作
８００：コンピュータ・プログラム製品
８０２：コンピュータ可読ストレージ媒体
８０４：プログラム・コード論理
ＣＡ：チャネル・アダプタ
ＬＩＤ：ローカル識別子
ＷＲ：作業要求
【図１】
0005735883.tif 000002
【図２】
0005735883.tif 000003
【図３】
0005735883.tif 000004
【図４】
0005735883.tif 000005
【図５】
0005735883.tif 000006
【図６】
0005735883.tif 000007
【図７】
0005735883.tif 000008
【図８】
0005735883.tif 000009
【図９】
0005735883.tif 000010