(57)【要約】【課題】ホスト・コンピュータ・システムからイーサネット・アダプタにデータを送信し、受信するための方法およびシステムを提供すること。【解決手段】方法は、ホスト・システム・デバイス・ドライバからイーサネット・アダプタの要求待ち行列に送信または受信要求メッセージをプッシュする、ホスト・システムとイーサネット・アダプタの間の接続を確立することを含む。ホスト・メモリへのアクセスは、イーサネット・アダプタに転送される。データがイーサネット・アダプタに送信中の場合、アダプタは送信要求メッセージで指定されたホスト・メモリの位置からデータを読み取り、次いで送信媒体（たとえば、ワイア、ファイバ）上にそのデータを送信する。要求メッセージが受信要求である場合、アダプタは、媒体からデータを読み取り、次いで受信要求メッセージで指定された位置のホスト・メモリにそのデータを送信する。データ転送が完了すると、アダプタは、応答メッセージをホストに返信する。応答メッセージは、応答メッセージを元の要求メッセージに関連付けるためにホスト・デバイス・ドライバが使用するトランザクションＩＤを含む。
2004531001.tif 000002
【特許請求の範囲】
【請求項１】
イーサネット（Ｒ）・アダプタを介してホスト・コンピュータ・システムからデータを送信する方法において、
前記ホスト・システムと前記イーサネット（Ｒ）・アダプタの間の接続を確立するステップと、
ホスト・システム・デバイス・ドライバから前記イーサネット（Ｒ）・アダプタの要求待ち行列に送信要求メッセージをプッシュするステップと、
ホスト・メモリ制御を前記イーサネット（Ｒ）・アダプタに転送するステップと、
前記イーサネット（Ｒ）・アダプタによって、前記送信要求メッセージで指定されたホスト・メモリの位置からデータを読み取るステップと、
前記イーサネット（Ｒ）・アダプタによって送信媒体上に前記データを送信するステップと
を含む方法。
【請求項２】
イーサネット（Ｒ）・アダプタを介してホスト・コンピュータ・システムにデータを受信する方法において、
前記ホスト・システムと前記イーサネット（Ｒ）・アダプタの間の接続を確立するステップと、
前記データを含めるために使用されることになっているホスト・メモリを確保するステップと、
ホスト・システム・デバイス・ドライバから前記イーサネット（Ｒ）・アダプタの要求待ち行列に受信要求メッセージをプッシュするステップと、
制御を前記確保されたホスト・メモリから前記イーサネット（Ｒ）・アダプタに転送するステップと、
前記イーサネット（Ｒ）・アダプタによって、送信媒体からデータを読み取るステップと、
前記イーサネット（Ｒ）・アダプタによって、前記受信要求メッセージで指定されたホスト・メモリの位置に前記データを書き込むステップと
を含む方法。
【請求項３】
前記データ転送が完了すると、前記イーサネット（Ｒ）・アダプタから前記ホスト・システムに送信応答メッセージを返信するステップをさらに含む請求項１に記載の方法。
【請求項４】
前記送信応答メッセージが、
要求と応答を関連付けるトランザクションＩＤと、
完了結果と
をさらに含む請求項３に記載の方法。
【請求項５】
前記アダプタとドライバの間の接続を確立するステップが、
前記イーサネット（Ｒ）・アダプタの要求待ち行列の深さに関する情報を前記デバイス・ドライバに渡すステップであって、前記デバイス・ドライバが、顕著なトランザクションの数が前記アダプタの要求待ち行列の深さを超えないようにするステップをさらに含む請求項１ないし４のいずれかに記載の方法。
【請求項６】
送信要求制御ブロックを作成するステップであって、前記制御ブロックが、
トランザクションＩＤと、
コマンドのタイプ（送信）と、
メモリ領域とそれらの遠隔アクセス・キーとのリストと、
データ転送の合計の長さと
を含むステップと、
前記送信要求制御ブロックを指し示す作業要求を前記デバイス・ドライバからホスト・チャネル・アダプタに送信するステップと
をさらに含む請求項１に記載の方法。
【請求項７】
前記イーサネット（Ｒ）・アダプタが、ホスト・システム・メモリを読み取るために読み取り遠隔直接メモリ・アクセス（ＲＤＭＡ）を使用し、前記ＲＤＭＡは、前記送信要求制御ブロックに含まれているメモリ領域と遠隔アクセス・キーとの前記リストに依存する請求項６に記載の方法。
【請求項８】
ホスト・メモリを前記イーサネット（Ｒ）・アダプタに対してアクセス可能とするステップが、
メモリ領域を前記イーサネット（Ｒ）・アダプタに転送するステップと、
メモリ・ウィンドウを前記転送されたメモリ領域にバインドするステップと
をさらに含む請求項１または２に記載の方法。
【請求項９】
前記デバイス・ドライバから前記イーサネット（Ｒ）・アダプタの要求待ち行列に送信要求メッセージをプッシュするステップが、
前記イーサネット（Ｒ）・アダプタから前記デバイス・ドライバに、送信要求とデータを受理するように前記イーサネット（Ｒ）・アダプタが確保していたメモリ領域と遠隔アクセス・キーとのリストを渡すステップと、
前記送信要求をプッシュするために即値データを伴う書き込みＲＤＭＡを使用するステップであって、前記即値データは、デバイス・ドライバが前記送信要求とデータとを記憶するために使用するアダプタ側のアドレスを含んでいるステップと
をさらに含む請求項１に記載の方法。
【請求項１０】
イーサネット（Ｒ）・フレームを２つの別個のトランザクションで送信するステップであって、フレーム・ヘッダとデータが異なるターゲットに送信されるステップ
をさらに含む請求項１または２に記載の方法。
【請求項１１】
前記デバイス・ドライバが、以前の作業要求が正常に完了したことを保証するために、すべての作業要求の一部に対して作業完了を使用する請求項１に記載の方法。
【請求項１２】
Ｉ／Ｏ構成要素の資源を事前に割り振り、複数のホストに対するイベントをスケジュールするために管理メッセージを使用するステップであって、異なる区画キーが前記Ｉ／Ｏ構成要素を使用して各ホストに関連付けられるステップ
をさらに含む請求項１または２に記載の方法。
【請求項１３】
固定量のＩ／Ｏ構成要素の資源を割り振り、指定された時間間隔に複数のホストに対するイベントをスケジュールするために管理メッセージを使用するステップをさらに含み、
異なる区画キーが前記Ｉ／Ｏ構成要素を使用して各ホストに関連付けられ、
指定された時間間隔の有効期限が切れると、前記Ｉ／Ｏ構成要素の資源は解放され、前記ホストによる再交渉によってのみ再利用することができる
請求項１または２に記載の方法。
【請求項１４】
指定されたサービス・レベルに従ってＩ／Ｏ構成要素の資源を割り振り、複数のホストに対するイベントをスケジュールするステップであって、異なる区画キーが前記Ｉ／Ｏ構成要素を使用して各ホストに関連付けられるステップ
をさらに含む請求項１または２に記載の方法。
【請求項１５】
Ｉ／Ｏ資源およびイベントが、サービス・レベルごとに重み付けられた値に従って相対的な方法で割り振られる請求項１４に記載の方法。
【請求項１６】
Ｉ／Ｏ資源およびイベントが、サービス・レベルごとに絶対値に従って固定した方法で割り振られる請求項１４に記載の方法。
【請求項１７】
Ｉ／Ｏ構成要素の資源を指定された通信グループに関連付けるステップであって、前記アダプタが、
待ち行列対の量および各待ち行列対のサービス・レベルと、
他のＩ／Ｏ資源の量と
の少なくとも１つを指定するステップをさらに含む請求項１または２に記載の方法。
【請求項１８】
前記量が相対値として指定されている請求項１７に記載の方法。
【請求項１９】
前記量が絶対値として指定されている請求項１７に記載の方法。
【請求項２０】
前記データ転送が完了すると、前記イーサネット（Ｒ）・アダプタから前記ホスト・システムに受信応答メッセージを返信するステップをさらに含む請求項２に記載の方法。
【請求項２１】
前記受信応答メッセージが、
要求と応答を関連付けるトランザクションＩＤと、
完了結果と
をさらに含む請求項２０に記載の方法。
【請求項２２】
受信要求制御ブロックを作成するステップであって、前記制御ブロックが、
トランザクションＩＤと、
コマンドのタイプ（受信）と、
メモリ領域とそれらの遠隔アクセス・キーとのリストと、
前記データ転送の合計の長さと
を含むステップと、
前記受信要求制御ブロックを指し示す作業要求を前記デバイス・ドライバからホスト・チャネル・アダプタに送信するステップと
をさらに含む請求項２に記載の方法。
【請求項２３】
前記イーサネット（Ｒ）・アダプタが、ホスト・システム・メモリにデータを書き込むために書き込み遠隔直接メモリ・アクセス（ＲＤＭＡ）を使用し、前記ＲＤＭＡは、送信要求制御ブロックに含まれているメモリ領域と遠隔アクセス・キーとの前記リストに依存する請求項２２に記載の方法。
【請求項２４】
前記アダプタが、前記データと前記受信応答ブロックとを転送するために即値データを伴う書き込みＲＤＭＡを使用する請求項２に記載の方法。
【請求項２５】
前記ホスト・システムが着信データの送信先としてバッファを事前に割り振っていると想定する送信コマンドを前記イーサネット（Ｒ）・アダプタが使用する請求項２に記載の方法。
【請求項２６】
ホスト・コンピュータ・システムからイーサネット（Ｒ）・アダプタにデータを送信するためのシステムにおいて、
前記ホスト・システムと前記イーサネット（Ｒ）・アダプタの間の接続を確立する通信構成要素と、
前記イーサネット（Ｒ）・アダプタの要求待ち行列に送信要求メッセージをプッシュするホスト・システム・デバイス・ドライバのプッシング構成要素と、
ホスト・メモリ・アクセスを前記イーサネット（Ｒ）・アダプタに転送するレジスタと、
前記送信要求メッセージで指定されたホスト・メモリの位置からデータを読み取る前記イーサネット（Ｒ）・アダプタの読み取り構成要素と、
送信媒体上にデータを送信する前記イーサネット（Ｒ）・アダプタの送信構成要素と
を含むシステム。
【請求項２７】
イーサネット（Ｒ）・アダプタからホスト・コンピュータ・システムにデータを受信するためのシステムにおいて、
前記ホスト・システムと前記イーサネット（Ｒ）・アダプタの間の接続を確立する通信構成要素と、
前記データを含めるために使用されることになっているホスト・メモリを確保するレジスタと、
前記イーサネット（Ｒ）・アダプタの要求待ち行列に受信要求メッセージをプッシュするホスト・システム・デバイス・ドライバのプッシング構成要素と、
ホスト・メモリ・アクセスを前記イーサネット（Ｒ）・アダプタに転送するレジスタと、
前記送信媒体からデータを受信する前記イーサネット（Ｒ）・アダプタの受信構成要素と、
前記受信要求メッセージで指定されたホスト・メモリの位置に前記データを書き込む前記イーサネット（Ｒ）・アダプタの書き込み構成要素と
を含むシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータ・ネットワークを介した通信に関し、より詳細には、ホスト・コンピュータ・システムとコンピュータ・ネットワークのイーサネット（Ｒ）・アダプタの間のデータ転送に関する。
【背景技術】
【０００２】
イーサネット（Ｒ）（ＥＴＨＥＮＥＴ／イーサネット（Ｒ）は富士ゼロックス社の登録商標）は、最も広範に使用されているローカル・エリア・ネットワーク（ＬＡＮ）のアクセス方法である。イーサネット（Ｒ）は、６４バイト長から１５１８バイト長のさまざまな長さのフレームを送信する。各フレームは、ソース局と宛先局のアドレスを示すヘッダと、エラー訂正データを含んでいるトレーラとを含んでいる。より高いレベルのプロトコルは、長いメッセージを、利用しているイーサネット（Ｒ）・ネットワークが必要とするフレーム・サイズに断片化する。イーサネット（Ｒ）は、物理媒体（すなわち、有線、ファイバ）上に各フレームをブロードキャストするためにキャリア検知多重アクセス／衝突検出（ＣＳＭＡ／ＣＤ）技術を使用する。イーサネット（Ｒ）に接続したすべての局がリスンしており、一致した宛先アドレスを有する局がフレームを受理し、エラーをチェックする。
【０００３】
システム・エリア・ネットワーク（ＳＡＮ）では、ハードウェアは、入出力装置（Ｉ／Ｏ）に使用することができるメッセージ受け渡し機構と、複数の汎用コンピューティング・ノード間でのプロセス間通信（ＩＰＣ）とを提供する。コンシューマ（consumer）は、ＳＡＮチャネル・アダプタ（ＣＡ）上の送信／受信作業待ち行列に送信／受信メッセージを通知することによってＳＡＮメッセージ受け渡しハードウェアにアクセスする。送信／受信作業待ち行列（ＷＱ）は、待ち行列対（ＱＰ）としてコンシューマに割り当てられる。メッセージは、高信頼性接続（ＲＣ）、高信頼性データグラム（ＲＤ）、非高信頼性接続（ＵＣ）、非高信頼性データグラム（ＵＤ）、および生データグラム（ＲａｗＤ）の５種類の異なる移送タイプを介して送信することができる。コンシューマは、ＳＡＮ送信／受信作業完了（ＷＣ）により完了待ち行列（ＣＱ）からこれらのメッセージの結果を取り出す。ソース・チャネル・アダプタは、送出されるメッセージのセグメント化と、それらを宛先に送信することを管理する。宛先チャネル・アダプタは、着信メッセージの再組み立てと、それらを宛先のコンシューマが指定したメモリ空間に置くことを管理する。ホスト・チャネル・アダプタ（ＨＣＡ）とターゲット・チャネル・アダプタ（ＴＣＡ）の２種類のチャネル・アダプタのタイプがある。ホスト・チャネル・アダプタは、ＳＡＮファブリックにアクセスするために汎用コンピューティング・ノードによって使用される。コンシューマは、ホスト・チャネル・アダプタ機能にアクセスするためにＳＡＮverbを使用する。チャネル・インターフェース（ＣＩ）は、verbを解釈し、チャネル・アダプタに直接アクセスする。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
メモリ領域は、仮想アドレス空間の連続したメモリ区域であり、そこに対する変換後の物理アドレスとアクセス権とはＨＣＡに登録済みである。メモリ・ウィンドウは、すでに定義されているメモリ領域内のメモリ区域であり、そこに対するアクセス権はメモリ領域のアクセス権と同一であるか、またはメモリ領域のアクセス権の部分集合である。
【０００５】
ホスト・システムに／からイーサネット（Ｒ）・フレームをコピーする現在の方法は、割り込みとソフトウェアへの依存度が非常に大きい。このような方法は、新しい要求および他の機能を処理することではなく、多量の処理能力をＩ／Ｏに割り振ることを必要とする。
【０００６】
したがって、ソフトウェア／割り込みよりもハードウェアにより依存し、プロセッサの介在をそれほど必要としないホストに／からイーサネット（Ｒ）・フレームを転送する方法を有することが望ましい。
【課題を解決するための手段】
【０００７】
本発明は、ホスト・コンピュータ・システムからイーサネット（Ｒ）・アダプタにデータを送信し、受信する方法およびシステムを提供する。この方法は、ホスト・システムとイーサネット（Ｒ）・アダプタの間の接続を確立すること、およびホスト・システム・デバイス・ドライバからイーサネット（Ｒ）・アダプタの要求待ち行列に送信または受信要求メッセージをプッシュすることを含む。ホスト・メモリへのアクセスは、イーサネット（Ｒ）・アダプタに転送される。データがイーサネット（Ｒ）・アダプタに送信中の場合、アダプタは、送信要求メッセージで指定されたホスト・メモリの位置からデータを読み取り、次いで伝送媒体（たとえば、ワイア、ファイバ）上にそのデータを送信する。要求メッセージが受信要求である場合、アダプタは、媒体からデータを読み取り、次いで受信要求メッセージで指定された位置のホスト・メモリにそのデータを送信する。データ転送が完了すると、アダプタは、応答メッセージをホストに返信する。応答メッセージは、応答メッセージを元の要求メッセージに関連付けるためにホスト・デバイス・ドライバが使用するトランザクションＩＤを含む。
【発明を実施するための最良の形態】
【０００８】
次に、本発明の実施形態を、添付の図面を参照して説明する。
【０００９】
本発明は、エンド・ノード、スイッチ、ルータ、およびこれら構成要素を相互接続するリンクを有する分散型コンピューティング・システムを提供する。各エンド・ノードは、メッセージを送信し、受信するために送信／受信待ち行列対を使用する。エンド・ノードは、メッセージをパケットにセグメント化し、リンクを介してそのパケットを送信する。スイッチとルータはエンド・ノードを相互接続し、パケットを適切なエンド・ノードに経路指定する。エンド・ノードは、宛先でパケットをメッセージに再組み立てする。
【００１０】
次に、図面、特に図１を参照すると、ネットワーク接続されているコンピューティング・システムの図面が本発明の好ましい実施形態に従って示されている。図１に示す分散型コンピュータ・システムは、システム・エリア・ネットワーク（ＳＡＮ）１００の形式を取り説明の目的でのみ示されているが、以下に述べる本発明の実施形態は多数の他のタイプおよび構成のコンピュータ・システムでも実施することができる。たとえば、本発明を実施しているコンピュータ・システムは、１個のプロセッサと数個の入出力（Ｉ／Ｏ）アダプタとを備えた小さなサーバから、数百、数千のプロセッサと数千のＩ／Ｏアダプタとを備えた大規模並列スーパーコンピュータ・システムまでの範囲に及ぶものであってよい。さらに、本発明は、インターネットまたはイントラネットによって接続されている遠隔コンピュータ・システムのインフラストラクチャで実施することができる。
【００１１】
ＳＡＮ  １００は、分散型コンピュータ・システム内の高帯域幅で低待ち時間のネットワーク相互接続ノードである。ノードは、ネットワークの１つまたは複数のリンクに取り付けられた、ネットワーク内のメッセージの発信元および／または宛先を構成する任意の構成要素である。ＳＡＮ  １００は、ホスト・プロセッサ・ノード１０２、ホスト・プロセッサ・ノード１０４、冗長アレイ独立ディスク（ＲＡＩＤ）サブシステム・ノード１０６、およびＩ／Ｏシャシー・ノード１０８の形式のノードを含む。ＳＡＮ  １００は、独立プロセッサ・ノード、Ｉ／Ｏアダプタ・ノード、およびＩ／Ｏ装置ノードの数および種類を問わずに接続することができるので、図１に示すノードは説明のみを目的としている。これらノードのどの１つでも、本明細書ではＳＡＮ  １００でメッセージまたはパケットを発信または最終的に消費する装置と定義するエンド・ノードとして機能することができる。
【００１２】
本発明の一実施形態では、ＳＡＮ  １００のような分散型コンピューティング・システムの複数のエンド・ノード間での信頼性のある接続または信頼性のあるデータグラム通信を可能にする、分散型コンピュータ・システムのエラー処理機構がある。
【００１３】
本明細書で使用するメッセージとは、連携処理間での通信の基本単位であるアプリケーション定義によるデータ交換の単位である。パケットは、ネットワーク接続プロトコルのヘッダおよび／またはトレーラによってカプセル化される１単位のデータである。ヘッダは、一般に、ＳＡＮを介してパケットを導くための制御および経路指定情報を提供する。トレーラは、一般に、破損した内容を伴ってパケットが配信されないよう保証するための制御および巡回冗長検査（ＣＲＣ）データを含んでいる。
【００１４】
ＳＡＮ  １００は、分散型コンピュータ・システム内のＩ／Ｏおよびプロセッサ間連絡（ＩＰＣ）をサポートする通信および管理インフラストラクチャを含んでいる。図１に示すＳＡＮ  １００は、セキュリティ保護された遠隔管理環境で多くの装置が高帯域幅、低待ち時間でデータを同時に転送することを可能にする交換通信ファブリック１１６を含む。エンド・コードは、複数のポートを介して通信し、ＳＡＮファブリックを介して複数の経路を使用することができる。図１に示すＳＡＮを介した複数のポートおよび経路は、耐故障性で、帯域幅がより広いデータ転送のために使用することができる。
【００１５】
図１のＳＡＮ  １００は、スイッチ１１２、スイッチ１１４、スイッチ１４６、およびルータ１１７を含む。スイッチは、複数のリンクを相互接続し、小さなヘッダ宛先ローカルＩＤ（ＤＬＩＤ：Destination Local Identifier）フィールドを使用してサブネット内での１つのリンクから別のリンクへのパケットの経路指定を可能にする装置である。ルータは、複数のサブネットを相互接続し、大きなヘッダ宛先グローバリーＩＤ（ＤＧＩＤ：DestinationGlobally Identifier）を使用して第１のサブネットの１つのリンクから第２のサブネットの別のリンクにパケットを経路指定することができる装置である。
【００１６】
一実施形態では、リンクは、エンドノード、スイッチ、またはルータのような任意の２つのネットワーク・ファブリック要素間の全二重通信路である。適切なリンクの例としては、限定はしないが、銅ケーブル、光ケーブル、およびバックプレインとプリント回路板上のプリント回路板銅トレースがある。
【００１７】
信頼性のあるサービスのタイプでは、ホスト・プロセッサ・エンドノードおよびＩ／Ｏアダプタ・エンドノードのようなエンドノードが要求パケットを生成し、受領通知パケットを返信する。スイッチおよびルータは、ソースから宛先にパケットを渡す。ネットワークの各ステージで更新されるバリアントＣＲＣトレーラ・フィールドを除いて、スイッチはパケットを変更せずに渡す。ルータは、バリアントＣＲＣトレーラ・フィールドを更新し、パケットが経路指定される際にヘッダの他のフィールドを変更する。
【００１８】
図１に示すＳＡＮ  １００では、ホスト・プロセッサ・ノード１０２、ホスト・プロセッサ・ノード１０４、およびＩ／Ｏシャシー１０８は、ＳＡＮ  １００とインターフェースを取るために少なくとも１つのチャネル・アダプタ（ＣＡ）を含む。一実施形態では、各チャネル・アダプタは、ＳＡＮファブリック１００上で送信されたパケットを調達またはシンクするために十分詳細にチャネル・アダプタ・インターフェースを実施するエンド・ポイントである。ホスト・プロセッサ・ノード１０２は、ホスト・チャネル・アダプタ１１８とホスト・チャネル・アダプタ１２０の形式のチャネル・アダプタを含んでいる。ホスト・プロセッサ・ノード１０４は、ホスト・チャネル・アダプタ１２２とホスト・チャネル・アダプタ１２４を含んでいる。ホスト・プロセッサ・ノード１０２は、中央演算処理装置１２６〜１３０、およびバス・システム１３４によって相互接続されているメモリ１３２も含む。ホスト・プロセッサ・ノード１０４も同様に、中央演算処理装置１３６〜１４２、およびバス・システム１４４によって相互接続されているメモリ１４２を含む。
【００１９】
ホスト・チャネル・アダプタ１１８および１２０はスイッチ１１２に接続を提供し、ホスト・チャネル・アダプタ１２２および１２４はスイッチ１１２および１１４に接続を提供する。
【００２０】
一実施形態では、ホスト・チャネル・アダプタはハードウェアで実施される。この実施形態では、ホスト・チャネル・アダプタ・ハードウェアは、中央演算処理装置およびＩ／Ｏアダプタの通信オーバーヘッドの大部分の負荷を軽減する。ホスト・チャネル・アダプタのこのハードウェア実施態様は、通信プロトコルに関連する従来のオーバーヘッドなしに交換ネットワークを介した複数の同時通信も可能にする。一実施形態では、図１のホスト・チャネル・アダプタおよびＳＡＮ  １００は、分散型コンピュータ・システムのＩ／Ｏおよびプロセッサ間連絡（ＩＰＣ）のコンシューマにオペレーティング・システムのカーネル・プロセスを必要とせずに０プロセッサ・コピー・データ転送を提供し、信頼性のある耐故障性通信を提供するためにハードウェアを利用する。
【００２１】
図１に示すように、ルータ１１７は、他のホストまたは他のルータへのワイド・エリア・ネットワーク（ＷＡＮ）および／またはローカル・エリア・ネットワーク（ＬＡＮ）接続に結合されている。
【００２２】
図１のＩ／Ｏシャシー１０８は、Ｉ／Ｏスイッチ１４６と複数のＩ／Ｏモジュール１４８〜１５６を含む。これらの例では、Ｉ／Ｏモジュールはアダプタ・カードの形式を取っている。図１に示されるアダプタ・カード例は、Ｉ／Ｏモジュール１４８用のＳＣＳＩアダプタ・カード、Ｉ／Ｏモジュール１５２用のファイバ・チャネル・ハブ／ファイバ・チャネル裁定ループ（ＦＣ−ＡＬ）デバイスへのアダプタ・カード、Ｉ／Ｏモジュール１５０用のイーサネット（Ｒ）・アダプタ・カード、Ｉ／Ｏモジュール１５４用のグラフィックス・アダプタ・カード、およびＩ／Ｏモジュール１５６用のビデオ・アダプタ・カードを含む。いかなる周知のタイプのアダプタ・カードでも実施することができる。Ｉ／Ｏアダプタは、アダプタ・カードをＳＡＮファブリックに結合するためにＩ／Ｏアダプタ・バックプレインのスイッチも含む。これらのモジュールは、ターゲット・チャネル・アダプタ１５８〜１６６を含んでいる。
【００２３】
この実施例では、図１のＲＡＩＤサブシステム・ノード１０６は、プロセッサ１６８、メモリ１７０、ターゲット・チャネル・アダプタ（ＴＣＡ）１７２、および複数の冗長な、かつ／またはストライプされた記憶ディスク・ユニット１７４を含む。ターゲット・チャネル・アダプタ１７２は、完全に機能するホスト・チャネル・アダプタであってよい。
【００２４】
ＳＡＮ  １００は、Ｉ／Ｏおよび／またはプロセッサ間連絡用のデータ通信を処理する。ＳＡＮ  １００は、Ｉ／Ｏに要求される高帯域幅と拡張可能性をサポートし、またプロセッサ間連絡に要求される非常に少ない待ち時間と低いＣＰＵオーバーヘッドもサポートする。ユーザ・クライアントは、オペレーティング・システムのカーネル・プロセスをバイパスし、効率的なメッセージ受け渡しプロトコルを可能にするホスト・チャネル・アダプタのようなネットワーク通信ハードウェアに直接アクセスすることができる。ＳＡＮ  １００は現在のコンピューティング・モデルに適合されており、Ｉ／Ｏおよびコンピュータ・クラスタ通信の新しい形式の構成単位である。さらに、図１のＳＡＮ  １００は、複数のＩ／Ｏアダプタ・ノードがそれら同士で、または分散型コンピュータ・システムのプロセッサ・ノードのどれか、またはすべてと通信することを可能にする。ＳＡＮ  １００にＩ／Ｏアダプタが取り付けられると、その結果得られるＩ／Ｏアダプタ・ノードは、ＳＡＮ  １００のいかなるホスト・プロセッサ・ノードとも実質的に同じ通信機能を有する。
【００２５】
次に図２を参照すると、本発明の好ましい実施形態によるホスト・プロセッサ・ノードの機能ブロック図が示されている。ホスト・プロセッサ・ノード２００は、図１のホスト・プロセッサ・ノード１０２のようなホスト・プロセッサ・ノードの一例である。
【００２６】
この実施例では、図２に示すホスト・プロセッサ・ノード２００は、ホスト・プロセッサ・ノード２００上で実行中のプロセスである１組のコンシューマ２０２〜２０８を有する。ホスト・プロセッサ・ノード２００は、チャネル・アダプタ２１０とチャネル・アダプタ２１２も含む。チャネル・アダプタ２１０はポート２１４および２１６を含んでおり、チャネル・アダプタ２１２はポート２１８および２２０を含んでいる。各ポートはリンクに接続されている。ポートは、図１のＳＡＮ  １００のような１つのＳＡＮサブネットまたは複数のＳＡＮサブネットに接続することができる。この実施例では、チャネル・アダプタはホスト・チャネル・アダプタの形式を取っている。
【００２７】
コンシューマ２０２〜２０８は、verbインターフェース２２２およびメッセージ／データ・サービス２２４を介してＳＡＮにメッセージを転送する。verbインターフェースは、基本的にホスト・チャネル・アダプタの機能性を抽象的に説明したものである。オペレーティング・システムは、そのプログラミング・インターフェースを介してverb機能の一部またはすべてを公開することができる。基本的に、このインターフェースはホストの挙動を定義する。さらに、ホスト・プロセッサ・ノード２００は、verb層よりもレベルの高いインターフェースであり、チャネル・アダプタ２１０およびチャネル・アダプタ２１２を介して受信されたメッセージおよびデータを処理するために使用されるメッセージ／データ・サービス２２４を含む。メッセージ／データ・サービス２２４は、メッセージおよび他のデータを処理するためにコンシューマ２０２〜２０８にインターフェースを提供する。
【００２８】
図３を参照すると、ホスト・チャネル・アダプタが、本発明の好ましい実施形態に従って示されている。図３に示すホスト・チャネル・アダプタ３００は、メッセージをホスト・チャネル・アダプタ・ポート３１２〜３１６に転送するために使用される１組の待ち行列対（ＱＰ）３０２〜３１０を含む。データのホスト・チャネル・アダプタ・ポート３１２〜３１６へのバッファリングは、各仮想レーン（ＶＬ）が独自の流れ制御を有する仮想レーン（ＶＬ）３１８〜３３４を通して送られる。サブネット・マネージャは、各物理ポートに対するローカル・アドレス、すなわちポートのＬＩＤによってチャネル・アダプタを構成する。サブネット・マネージャ・エージェント（ＳＭＡ）３３６は、チャネル・アダプタを構成することを目的としてサブネット・マネージャと通信するエンティティである。メモリ変換／保護（ＭＴＰ）３３８は、仮想アドレスを物理アドレスに変換し、アクセス権を妥当性検査するための機構である。直接メモリ・アクセス（ＤＭＡ）３４０は、待ち行列対３０２〜３１０に関してメモリ３５０を使用する直接メモリ・アクセス動作を提供する。
【００２９】
図３に示すホスト・チャネル・アダプタ３００のような単一チャネル・アダプタは、数千もの待ち行列対をサポートすることができる。対照的に、Ｉ／Ｏアダプタのターゲット・チャネル・アダプタは、通常、これよりもかなり少数の待ち行列対しかサポートしない。
【００３０】
各待ち行列対は、送信作業待ち行列（ＳＷＱ）と受信作業待ち行列とから構成される。送信作業待ち行列は、チャネル／メモリ・セマンティック・メッセージを送信するために使用される。受信作業待ち行列は、チャネル・セマンティック・メッセージを受信する。コンシューマは、作業待ち行列（ＷＱ）に作業要求を出すために、本明細書ではverbと呼ぶオペレーティング・システム特有のプログラミング・インターフェースを呼び出す。
【００３１】
図４を参照すると、作業要求の処理を示す図が本発明の好ましい実施形態に従って示されている。図４では、コンシューマ４０６から、またはコンシューマ４０６に対する要求を処理するために受信作業待ち行列４００、送信作業待ち行列４０２、および完了待ち行列４０４が示されている。コンシューマ４０６からのこれらの要求は最終的にハードウェア４０８に送信される。この実施例では、コンシューマ４０６は、作業要求４１０および４１２を生成し、作業完了４１４を受信する。図４に示すように、作業待ち行列に出された作業要求は、作業待ち行列要素（ＷＱＥ）と呼ばれる。
【００３２】
送信作業待ち行列４０２は、ＳＡＮファブリックに送信されるべきデータを記述している作業待ち行列要素（ＷＱＥ）４２２〜４２８を含んでいる。受信作業待ち行列４００は、ＳＡＮファブリックからの着信チャネル・セマンティック・データをどこに出すかを記述しているＷＱＥ４１６〜４２０を含んでいる。ＷＱＥはホスト・チャネル・アダプタのハードウェア４０８によって処理される。
【００３３】
verbは、完了した作業を完了待ち行列４０４から取り出すための機構も提供する。図４に示すように、完了待ち行列４０４は、完了待ち行列要素（ＣＱＥ）４３０〜４３６を含んでいる。完了待ち行列要素は、すでに完了している作業待ち行列要素に関する情報を含んでいる。完了待ち行列４０４は、複数の待ち行列対に対する完了通知の単一点を作成するために使用される。完了待ち行列要素は、完了待ち行列のデータ構造である。この要素は、完了したＷＱＥを記述する。完了待ち行列要素は、完了した待ち行列対と指定のＷＱＥとを決定するのに十分な情報を含んでいる。完了待ち行列のコンテキストは、ポインタと、長さと、個々の完了待ち行列を管理するのに必要な他の情報とを含んでいる１ブロックの情報である。
【００３４】
図４に示す送信作業待ち行列４０２に対してサポートされる作業要求例を以下に示す。送信作業要求は、遠隔ノードの受信ＷＱＥが参照するデータ・セグメントに１組のローカル・データ・セグメントをプッシュするためのチャネル・セマンティック動作である。たとえば、ＷＱＥ  ４２８は、データ・セグメント４  ４３８、データ・セグメント５  ４４０、およびデータ・セグメント６  ４４２への参照を含んでいる。送信作業要求のデータ・セグメントのそれぞれは、事実上連続しているメモリ領域を含んでいる。ローカル・データ・セグメントを参照するために使用される仮想アドレスは、ローカル待ち行列対を作成したプロセスのアドレス・コンテキストにある。
【００３５】
図５を参照すると、メモリ・ウィンドウとメモリ領域の相互関係を示す概念図が本発明に従って示されている。遠隔直接メモリ・アクセス（ＲＤＭＡ）読み取り作業要求は、遠隔ノードで事実上連続しているメモリ空間を読み取るためのメモリ・セマンティック動作を提供する。メモリ空間は、メモリ領域５１０の一部であっても、ウィンドウ５１１〜５１４のようなメモリ・ウィンドウの部分であってもよい。メモリ領域５１０は、仮想アドレスおよび長さによって定義された事実上連続しているメモリ・アドレスの登録済みの集合を参照する。メモリ・ウィンドウ５１１〜５１４は、登録済みメモリ領域５１０に向けられている事実上連続しているメモリ・アドレスの複数の集合を参照する。
【００３６】
本発明の好ましい実施形態は、ＩＢの基本および拡張完了機構を使用してＩＢを介してイーサネット（Ｒ）混合セマンティックＩ／Ｏを処理する方法を提供する。接続を確立するプロセス中に、アダプタは、ＩＢ接続管理プロトコル依存（ＲＥＰ）メッセージの専用データ・フィールドを使用することによって、アダプタの要求メッセージ待ち行列の深さをデバイス・ドライバに返信する。アダプタが可変深度要求待ち行列を有している場合にのみこのステップは必須である。通常の動作中、デバイス・ドライバは、顕著なＩ／Ｏトランザクションの数がアダプタの要求待ち行列の深さよりも大きくならないようにする。
【００３７】
通常の動作中、デバイス・ドライバは、（ＩＢ事後送信を介して）送信要求メッセージをアダプタの要求受信待ち行列にプッシュする。アダプタはそのメッセージを解釈し、それが送信であるならば、アダプタは要求メッセージで指定された位置のホスト・メモリからデータを読み取るために読み取りＲＤＭＡを使用する。次いでデータは媒体（たとえば、ワイア、ケーブル、ファイバ）上に送信される。要求メッセージが受信であるならば、アダプタは、媒体またはそのアダプタ・バッファからデータを読み取り、次いで要求メッセージで指定された位置のホスト・メモリにデータを送信するためにＩＢ事後送信を使用する。
【００３８】
データ転送が完了すると、アダプタは受信応答メッセージをホストに返信する。応答メッセージは、応答メッセージを元の要求メッセージに関連付けるためにホスト・デバイス・ドライバが使用するトランザクションＩＤを含む。ホスト・デバイスは応答メッセージを（受信）作業完了として取り出す。
【００３９】
ホスト・システムに／からのイーサネット（Ｒ）・フレームの転送は、従来技術の方法よりもはるかに少ないプロセッサの介在で達成される。さらに、イーサネット（Ｒ）・チップからホストへのデータの直接的なコピーは割り込みなしに、またソフトウェアを全く／ほとんど必要とせずに可能である。
【００４０】
図６を参照すると、基本Ｉ／Ｏ送信方法を実行する複数のＩＢ構成要素の相互関係を示す概念図が、本発明の実施形態に従って示されている。図７は、Ｉ／Ｏ送信方法のプロセスの流れを表す流れ図を示している。
【００４１】
ホストＣＰＵは、イーサネット（Ｒ）・アダプタに転送しなければならないデータを作成するために記憶命令を使用する（ステップ７０１）。データまたは中継を作成したホスト・プロセスは、Ｉ／Ｏ構成要素のデバイス・ドライバを呼び出す。Ｉ／Ｏ送信要求がデバイス・ドライバに送信される前に、イーサネット（Ｒ）・アダプタを初期設定する必要がある。第１に、接続マネージャ・プロトコル交換はイーサネット（Ｒ）・アダプタによるＨＣＡからＴＣＡへのＩＢ接続をセットアップする（ステップ７０２）。次いで要求待ち行列の深さがアダプタから得られる（ステップ７０３）。通常の動作中、デバイス・ドライバは、顕著なＩ／Ｏトランザクションの数がアダプタの要求待ち行列の深さよりも大きくならないようにする。
【００４２】
（ホスト）デバイス・ドライバはＩ／Ｏトランザクションを受信する（ステップ７０４）。Ｉ／Ｏトランザクションは、さまざまなメモリ領域（すなわち、メモリ・アドレスおよび長さ）がホスト・メモリからアダプタに転送され、次いで媒体（たとえば、ケーブル、ファイバ）上に送信されることを要求する（ステップ７０５）。デバイス・ドライバは、Ｉ／Ｏトランザクションのメモリ領域をＩＢ  ＨＣＡにアクセス可能とするためにＩＢレジスタ・メモリ領域またはバインド・メモリ・ウィンドウverbを使用する（ステップ７０６）。
【００４３】
デバイス・ドライバは、この送信要求に対してアダプタから送信応答のための資源を供給する（provision）ためにＩＢ事後受信を使用する（ステップ７０７）。このステップは、後続ステップの後に移動することもできる。デバイス・ドライバは、転送用の送信要求制御ブロックを作成するためにプロセッサの記憶命令を使用する（ステップ７０８）。送信要求制御ブロックは、トランザクションＩＤ（送信応答を送信要求と関連付けるために使用される）、コマンドのタイプ（この場合は送信）、メモリ領域とそれらの遠隔アクセス・キー（Ｒ＿Ｋｅｙｓ）のリストおよびデータ転送の合計の長さを含む。デバイス・ドライバは、送信要求制御ブロックを指し示す作業要求をＨＣＡに渡すためにＩＢ事後送信を使用する（ステップ７０９）。デバイス・ドライバは、他の作業を続けるか、他の作業が要求されていない場合は、次の完了イベントが発生した際に完了通知を要求するためにＩＢ  ＣＱ通知を使用する。
【００４４】
ＨＣＡがバインドに達した時にＩ／Ｏトランザクション・メモリ領域をＨＣＡに対してアクセス可能とするためにデバイス・ドライバがBind Memory Windowコマンドを使用した場合、ＨＣＡはBind Memory Windowコマンドを実行し、完了すると、ＣＱハンドラに対して通知させる（ステップ７１０）。次いでデバイス・ドライバは、ＣＱをポーリングし、バインド作業完了を取り出す（ステップ７１１）。デバイス・ドライバは、他の作業を続けるか、他の作業が要求されていない場合は、次の完了イベントが発生した際に完了通知を要求するためにＩＢ  ＣＱ通知を使用する。
【００４５】
ＨＣＡが（送信要求の）送信に達すると、送信要求を単一メッセージとしてＴＣＡに送信し（ステップ７１２）、ＣＱハンドラに対して通知させる。イーサネット（Ｒ）・アダプタのＴＣＡは送信要求を受信する（ステップ７１３）。（送信要求）送信が完了すると、ＨＣＡはＣＱハンドラに対して通知させる（ステップ７１４）。次いでデバイス・ドライバは、ＣＱをポーリングし、（送信要求）送信作業完了を取り出す（ステップ７１５）。デバイス・ドライバは、他の作業を続けるか、他の作業が要求されていない場合は、次の完了イベントが発生した際に完了通知を要求するためにＩＢ  ＣＱ通知を使用する。
【００４６】
イーサネット（Ｒ）・アダプタは、送信要求を解釈し、読み取りＲＤＭＡを使用してシステム・メモリからＩ／Ｏトランザクション・データを取り出す（ステップ７１６）。読み取りＲＤＭＡは、送信要求に含まれていた遠隔メモリ領域とＲ＿Ｋｅｙのリストを使用する。次いでイーサネット（Ｒ）・アダプタは、媒体上にデータを送信する（ステップ７１７）。すべてのデータが順番通りに正常に転送されると、イーサネット（Ｒ）・アダプタは送信応答制御ブロックを作成する（ステップ７１８）。送信応答制御ブロックは、トランザクションＩＤ（要求／応答を関連付ける）、完了の結果（たとえば、成功またはエラー・コード）を含む。イーサネット（Ｒ）・アダプタは、送信応答をＴＣＡからＨＣＡに転送するためにＩＢ送信を使用する（ステップ７１９）。イーサネット（Ｒ）・アダプタが送信応答を転送するためにＩＢ送信を使用する場合、ＨＣＡはＣＱハンドラに対して通知させる（ステップ７２０）。次いでデバイス・ドライバは、ＣＱをポーリングし、（送信要求）受信作業完了を取り出す（ステップ７２１）。デバイス・ドライバは、他の作業を続けるか、他の作業が要求されていない場合は、次の完了イベントが発生した際に完了通知を要求するためにＩＢ  ＣＱ通知を使用する。
【００４７】
図８を参照すると、代替のＩ／Ｏ受信方法を実行する複数のＩＢ構成要素の相互関係を表す概念図が示されている。図９は、代替Ｉ／Ｏ受信方法のプロセスの流れを表す流れ図を示している。図８および９に示す受信方法は、イーサネット（Ｒ）・チップによって開始されたＤＭＡによりホスト・システムにデータを自動的に送信するためにＲＤＭＡコマンドを使用する。
【００４８】
イーサネット（Ｒ）・アダプタからのデータを必要とするホスト・プロセスは、データを含めるために使用されることになる１つ以上のメモリ領域を確保し、Ｉ／Ｏ構成要素のデバイス・ドライバを呼び出す（ステップ９０１）。（ホスト）デバイス・ドライバはＩ／Ｏトランザクションを受信する（ステップ９０２）。Ｉ／Ｏトランザクションは、イーサネット（Ｒ）・フレームが媒体からイーサネット（Ｒ）・アダプタに転送され、次いでイーサネット（Ｒ）・アダプタから、ホスト・プロセスによって確保されていたホスト・メモリ領域に転送されるよう要求する。デバイス・ドライバは、Ｉ／Ｏトランザクション・メモリ領域をＩＢ  ＨＣＡに対してアクセス可能とするためにＩＢ  レジスタ・メモリ領域またはバインド・メモリ・ウィンドウverbを使用する（ステップ９０３）。デバイス・ドライバは、受信要求に対してアダプタから受信応答のための資源を供給するためにＩＢポスト受信を使用する（ステップ９０４）。このステップは、後続ステップの後に移動することもできる。アダプタは受信待ち行列（ＲＱ）に受信要求を通知する（ステップ９０５）。受信したフレームがイーサネット（Ｒ）媒体から何時着信しても要求が使用可能であるように、（ホスト）ＨＣＡはＲＱを連続的に補充する必要がある。
【００４９】
デバイス・ドライバは、転送用の受信要求制御ブロックを作成するためにプロセッサ記憶命令を使用する（ステップ９０６）。受信要求制御ブロックは、トランザクションＩＤ（受信応答を受信要求に関連付けるために使用される）、コマンドのタイプ（この場合は受信）、メモリ領域とそれらのＲ＿Ｋｅｙのリスト、およびデータ転送の合計の長さを含む。デバイス・ドライバは、受信要求制御ブロックを指し示す作業要求をＨＣＡに渡すためにＩＢ事後受信を使用する（ステップ９０７）。デバイス・ドライバは、他の作業を続けるか、他の作業が要求されていない場合は、次の完了イベントが発生した際に完了通知を要求するためにＩＢ  ＣＱ通知を使用する。
【００５０】
ＨＣＡがバインドに達した時にＩ／Ｏトランザクション・メモリ領域をＨＣＡに対してアクセス可能とするためにデバイス・ドライバがバインド・メモリ・ウィンドウverbを使用した場合、ＨＣＡはバインド・メモリ・ウィンドウverbを実行し、完了通知の際に、ＣＱハンドラに対して通知させる（ステップ９０８）。次いでデバイス・ドライバは、ＣＱをポーリングし、バインド作業完了を取り出す。デバイス・ドライバは、他の作業を続けるか、他の作業が要求されていない場合は、次の完了イベントが発生した際に完了通知を要求するためにＩＢ  ＣＱ通知を使用する。
【００５１】
ＨＣＡが（受信要求の）送信に達すると、受信要求を単一メッセージとしてイーサネット（Ｒ）・アダプタの要求待ち行列に送信する（ステップ９０９）。イーサネット（Ｒ）・アダプタのＴＣＡは受信要求を受信する（ステップ９１０）。（受信要求）送信が完了すると、ＨＣＡはＣＱハンドラに対して通知させる（ステップ９１１）。次いでデバイス・ドライバは、ＣＱをポーリングし、（受信要求）送信作業完了を取り出す（ステップ９１２）。デバイス・ドライバは、他の作業を続けるか、他の作業が要求されていない場合は、次の完了イベントが発生した際に完了通知を要求するためにＩＢ  ＣＱ通知を使用する。
【００５２】
イーサネット（Ｒ）・アダプタは、受信要求を解釈し、データをイーサネット（Ｒ）・デバイス（媒体）からアダプタに転送する（ステップ９１３）。アダプタは、データに対して必須の処理（たとえば、チェックサム／ＦＣＳ検査）を実行する。イーサネット（Ｒ）・アダプタは、アダプタからホスト・システム・メモリにデータを転送するために書き込みＲＤＭＡを使用する（ステップ９１４）。書き込みＲＤＭＡは、受信要求に含まれていた遠隔メモリ領域とＲ＿Ｋｅｙのリストを使用する。すべてのデータが順番通りに正常に転送されると、イーサネット（Ｒ）・アダプタは受信応答制御ブロックを作成する（ステップ９１５）。受信応答制御ブロックは、トランザクションＩＤ（要求と応答を関連付ける）、完了の結果（たとえば、成功またはエラー・コード）を含む。次いでイーサネット（Ｒ）・アダプタは、受信応答をＴＣＡからＨＣＡに転送するためにＩＢ送信を使用する（ステップ９１６）。ＨＣＡが受信応答の受信を完了すると、ＨＣＡはＣＱハンドラに対して通知させる（ステップ９１７）。次いでデバイス・ドライバは、ＣＱをポーリングし、（受信要求）受信作業完了を取り出す（ステップ９１８）。デバイス・ドライバは、他の作業を続けるか、他の作業が要求されていない場合は、次の完了イベントが発生した際に完了通知を要求するためにＩＢ  ＣＱ通知を使用する。
【００５３】
上記の基本Ｉ／Ｏ方法に加えていくつかの最適化を使用することができる。
【００５４】
Ｉ／Ｏ送信の場合、デバイス・ドライバは、送信要求と即値データ（immediateData）をイーサネット（Ｒ）・アダプタにプッシュするために即値データを伴うＩＢ書き込みＲＤＭＡを使用することができる。即値データは要求に伴う４バイトのデータであり、したがってユーザは、ＲＤＭＡ読み取り／書き込みが要求されたデータをシステムに送信するまで待機することを必要とせずに「即座に」一部のデータを入手することができる。即値データには、デバイス・ドライバが送信要求とデータを記憶するために使用したアダプタ側のアドレス（またはアドレス・オフセット）を含めることができる。この最適化を使用できるようにするには、イーサネット（Ｒ）・アダプタは、送信要求とデータを受理するためにイーサネット（Ｒ）・アダプタが確保しておいたメモリ領域とＲ＿Ｋｅｙのリストをデバイス・ドライバに渡す必要がある。
【００５５】
上記の第１の最適化に加えさらなる最適化は、アダプタのＲ＿Ｋｅｙを定期的に変更することである。すなわち、アダプタのメモリ領域にアクセス制御を提供し、送信／受信要求およびデータを含めるために使用されるＲ＿Ｋｅｙである。Ｒ＿Ｋｅｙを変更する方法は、Ｉ／Ｏ送信応答と共に新しいＲ＿Ｋｅｙを含めることである。
【００５６】
バインドおよび送信完了を処理する必要性を解消するために、デバイス・ドライバは、大部分のバインドおよび送信動作に対して信号なし完了（unsignalled completions）を使用し、次いで以前の（信号なし）作業要求が正常に完了したことを保証するために信号ありバインド（signaledBind）または送信を定期的に使用することができる。
【００５７】
バインド、送信、および一部の受信完了を処理する必要性を解消するために、デバイス・ドライバは、送信請求イベント（solicited event）の場合にのみＣＱ通知を要求することができる。この場合、アダプタは、すべてのＮ個の送信／受信応答メッセージを転送する際に送信請求イベントを使用することができる。Ｎは、送信請求イベント受信応答メッセージを転送する前に転送するための非送信請求イベント受信応答メッセージの数（可変、調整可能）を表している。
【００５８】
Ｉ／Ｏ受信方法の場合、アダプタは、データと受信応答ブロックを転送するために即値データを伴う書き込みＲＤＭＡを使用することができる。決定を行い、より良い宛先にデータを「向ける」ために受信プロセスは即値データを使用することができる。
【００５９】
受信方法を簡素化するために、Ｉ／Ｏは、ホスト・システムがバッファを着信データの送信先として事前に割り振っていると想定する送信コマンドを使用することができる。
【００６０】
ヘッダをあるターゲットに送信し、データを別のターゲットに送信するために、イーサネット（Ｒ）・フレームを２つの別個のトランザクションで送信することができる。
【００６１】
複数のＨＣＡが単一のイーサネット（Ｒ）・アダプタを共有することを可能にするか、または特定プロトコルのすべてのフレームを単一ＱＰに送信する目的でデータを多重分離するために、複数のＱＰを使用することができる。これは、大部分のオペレーティング・システムが使用する通常の通信スタック・アーキテクチャを円滑にする。
【００６２】
Ｉ／Ｏ仮想化ポリシーをサポートするために、アダプタは、管理されている方法でも管理されていない方法でも使用することができる。管理されている方法の一例としては、アダプタと通信することが許可されているホスト数と、各ホストに割り当てられた特定の資源（たとえば、ＱＰ、ヘッダ／データ・バッファ、作業待ち行列の深さ、ＱＰの数、ＲＤＭＡ資源）を管理するために資源管理ＱＰを使用することがある。ホスト間での資源割り振りとイベントをスケジューリングすることに役立つように、異なる区画キー（Ｐ＿Ｋｅｙｓ）が各ホストと関連付けられる。
【００６３】
管理されていない方法の一例は、先着順サービスによるリース・モデルの下でアダプタの資源にすべてのホストがアクセスすることを可能にすることを必要とする。このモデルの下では、所与のホストが、限定された時間でアダプタ資源とスケジューリング・イベント（たとえば、ＱＰ、ヘッダ／データ・バッファ空間）を入手する。有効期限が切れると、ホストは、他のホストがその資源を使用するためにその資源に関して再度交渉するか、または放棄する必要がある。資源および時間は、ＩＢ通信管理プロトコルによって事前設定するか、または交渉することができる。管理された方法と同様に、Ｉ／Ｏ資源を使用する各ホストと一意のＰ＿Ｋｅｙを関連付けることができる。
【００６４】
差別化されたサービス・ポリシーをサポートするために、アダプタの差別化されたサービス・ポリシーは、アダプタがサポートするサービス・レベルごとに割り振られた資源とイベント・スケジューリング優先順位を定義する。資源割り振りとスケジューリングは、２つの方法の１つを使用して実行することができる。第１の方法で、アダプタは、相対アダプタ資源割り振りおよびスケジューリング機構を使用する。このポリシーの下では各サービス・レベル（ＳＬ）に重みが割り当てられている。資源は重みによってＳＬに割り当てられる。同一ＳＬを有するサービスは、そのＳＬに割り当てられた資源を共有する。たとえば、アダプタは、１ＧＢのヘッダ／データ・バッファと、重み３ＸのＳＬ１と重み１ｘのＳＬ２の２つのＳＬとを有する。このアダプタが２つのＳＬ１接続と２つのＳＬ２接続をサポートしており、すべての４つの接続がすでに割り振られている場合、各ＳＬ１接続は３８４ＭＢのヘッダ／データ・バッファを獲得し、各ＳＬ２接続は１２８ＭＢのヘッダ／データ・バッファを獲得する。同様に、スケジューリング決定はＳ１の重みに基づいてなされる。同一Ｓ１を有するサービスは、そのＳＬに割り当てられているスケジューリング・イベントを共有する。
【００６５】
第２の方法では、各Ｓｌは固定数の資源に割り当てられている。同一ＳＬを有するサービスは、そのＳＬに割り当てられた資源を共有する。たとえば、アダプタは、８００ＭＢのヘッダ／データ・バッファと２つのＳＬとを有している。ＳＬ１は６００ＭＢの空間を有しており、ＳＬ２は２００ＭＢの空間を有している。このアダプタが２つのＳＬ１と２つのＳＬ２接続をサポートする場合、各ＳＬ１接続は３００ＭＢのヘッダ／データ・バッファを獲得し、各ＳＬ２は１００ＭＢのヘッダ／データ・バッファを獲得する。スケジューリング決定は、固定時間による（または周期的な）割り振りに基づいてなされる。同一ＳＬを有するサービスは、そのＳＬに対する動作を処理するために費やされる時間（または周期）を共有する。差別化されたサービス・ポリシーをさらにサポートするために、アダプタは、一部の資源が相対ベースで割り振られ、他の資源が固定ベースで割り振られるように、資源割り振りポリシーを混合することができる。
【００６６】
通信グループ・ポリシーをサポートするために、アダプタは、ＱＰの数（それぞれに対するサービス・タイプと共に）と、所与の通信グループに割り当てられた他のアダプタ資源の数を定義することができる。管理されている方法の下では、通信グループに関連付けられるべき資源は、資源管理ＱＰにより、または製造過程中に事前設定される。数量は相対的（たとえば、パーセンテージまたは倍数）であっても絶対的（ＱＰを除き）であってもよい。管理されていない方法の下では、通信グループに関連付けられるべき資源はＩＢ通信管理プロトコルによって動的に交渉される。
【００６７】
アダプタは、資源Ｉ／Ｏ仮想化、差別化されたサービス、および通信グループ・ポリシーのさまざまな組合せをサポートすることができる。アダプタの資源管理ＱＰは、通信グループ全体で所与のサービスに割り当てられる資源数、通信グループ数とＧＩＤに対する通信グループのタイプ、およびＳＬに基づくアダプター・イベントのスケジューリングを設定するために使用される。
【００６８】
アダプタは、通信グループをサポートしないように設定し、特定の資源に対する２つの設定の小さい方を、Ｉ／Ｏアダプタを使用する所与のＧＩＤに割り当てられた最大資源容量として単に選ぶこともできる。
【００６９】
本発明を完全に機能しているデータ処理システムの状況で説明したが、当業者ならば、本発明の複数のプロセスは命令のコンピュータ可読媒体形式およびさまざまな形式で分散することができること、本発明は、実際に使用される信号を伴う媒体の特定のタイプに関わらず、等しく分散を遂行することに応用することを理解されようことに留意することが重要である。コンピュータ可読媒体の例には、フロッピー（Ｒ）・ディスク、ハードディスク・ドライブ、ＲＡＭ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭのような追記型媒体、ならびにデジタルおよびアナログ通信リンク、たとえば無線周波数のような伝送形式を使用する有線または無線通信リンク、および光波伝送のような伝送型媒体が含まれる。コンピュータ可読媒体は、特定のデータ処理システムで実際に使用するために復号される符号化されたフォーマットの形式を取ることができる。
【００７０】
本発明の記載は、例証および説明を目的として提示されており、網羅的であることは意図しておらず、また本発明の開示された形式には限定されない。当業者には、多くの修正形態および変形形態が明らかになろう。実施形態は、本発明の原理、実用的応用例を最もよく説明することを目的とし、また想定される特定の用途に適したものとしてさまざまな修正形態を伴うさまざまな実施形態について他の当業者が本発明を理解できるようにすることを目的として選定され、記載されている。
【図面の簡単な説明】
【００７１】
【図１】本発明の好ましい実施形態によるネットワーク接続されたコンピューティング・システムの図面である。
【図２】本発明の好ましい実施形態によるホスト・プロセッサ・ノードの機能ブロック図である。
【図３】本発明の好ましい実施形態によるホスト・チャネル・アダプタの図面である。
【図４】本発明の好ましい実施形態による作業要求の処理を示す図面である。
【図５】本発明の好ましい実施形態によるメモリ・ウィンドウとメモリ領域の相互関係を示す概念図である。
【図６】本発明の好ましい実施形態による基本Ｉ／Ｏ送信方法を実行する複数のＩＢ構成要素の相互関係を示す概念図である。
【図７】本発明の好ましい実施形態によるＩ／Ｏ送信方法の処理の流れを示す流れ図である。
【図８】本発明の好ましい実施形態による代替のＩ／Ｏ受信方法を実行する複数のＩＢ構成要素の相互関係を示す概念図である。
【図９】本発明の好ましい実施形態による代替のＩ／Ｏ受信方法の処理の流れを示す流れ図である。
【図１】
2004531001.tif 000003
【図２】
2004531001.tif 000004
【図３】
2004531001.tif 000005
【図４】
2004531001.tif 000006
【図５】
2004531001.tif 000007
【図６】
2004531001.tif 000008
【図７】
2004531001.tif 000009
【図８】
2004531001.tif 000010
【図９】
2004531001.tif 000011
【国際公開パンフレット】
2004531001.tif 000012
2004531001.tif 000013
2004531001.tif 000014
2004531001.tif 000015
2004531001.tif 000016
2004531001.tif 000017
2004531001.tif 000018
2004531001.tif 000019
2004531001.tif 000020
2004531001.tif 000021
2004531001.tif 000022
2004531001.tif 000023
2004531001.tif 000024
2004531001.tif 000025
2004531001.tif 000026
2004531001.tif 000027
2004531001.tif 000028
2004531001.tif 000029
2004531001.tif 000030
2004531001.tif 000031
2004531001.tif 000032
2004531001.tif 000033
2004531001.tif 000034
2004531001.tif 000035
2004531001.tif 000036
2004531001.tif 000037
2004531001.tif 000038
2004531001.tif 000039
2004531001.tif 000040
2004531001.tif 000041
2004531001.tif 000042
2004531001.tif 000043
【国際調査報告】
2004531001.tif 000044
2004531001.tif 000045
2004531001.tif 000046