(57)【要約】  ＲＤＭＡ（リモート・ダイレクト・メモリ・アクセス）機能のために使用されるＲＮＩＣ（リモート−ダイレクト−メモリ−アクセス−イネーブルド・ネットワーク・インターフェース・コントローラ）メカニズムでｉＳＣＳＩ（インターネット・スモール・コンピュータ・システム・インターフェース）オフロード・ターゲット機能を実行することを含む方法及びシステム。
2008529109.tif 000002
【特許請求の範囲】
【請求項１】
ＲＤＭＡ（リモート・ダイレクト・メモリ・アクセス）機能のために使用されるＲＮＩＣ（リモート−ダイレクト−メモリ−アクセス−イネーブルド・ネットワーク・インターフェース・コントローラ）メカニズムでｉＳＣＳＩ（インターネット・スモール・コンピュータ・システム・インターフェース）オフロード・ターゲット機能を実行するステップを含むことを特徴とする方法。
【請求項２】
ｉＳＣＳＩイニシエータ機能とは別に且つ無関係にｉＳＣＳＩターゲット機能をオフロードするステップを更に含むことを特徴とする請求項１に記載の方法。
【請求項３】
ｉＳＣＳＩオフロード・ターゲット機能を実行するステップは、ＲＤＭＡ書き込み動作の論理を用いてのデータ・アウト・ペイロードの、予め登録されたＳＣＳＩバッファへの任意の順序での任意のバッファ・オフセットでのリモート・ダイレクト・データ配置を含むことを特徴とする請求項１に記載の方法。
【請求項４】
ＳＴａｇ（ステアリング・タグ）として使用されるＴＴＴ（ターゲット・タスク・タグ）によって前記予め登録されたＳＣＳＩバッファを識別するステップを含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記ｉＳＣＳＩオフロード・ターゲット機能を実行するステップは、受信作業リクエストを有するＲＤＭＡ受信待ち行列を用いて制御ｉＳＣＳＩ  ＰＤＵを配置するステップを含むことを特徴とする請求項１に記載の方法。
【請求項６】
関連する完了待ち行列を介して前記受信作業リクエストの完了を報告するステップを更に含むことを特徴とする請求項５に記載の方法。
【請求項７】
前記ｉＳＣＳＩオフロード・ターゲット機能を実行するステップは、
ｉＳＣＳＩアプリケーション・プロトコルを介してｉＳＣＳＩドライバと通信するＳＣＳＩ層を設けるステップと、
前記ｉＳＣＳＩドライバ及びｉＳＥＲ（“ｉＳＣＳＩ  Ｅｘｔｅｎｓｉｏｎｓ  ｆｏｒ  ＲＤＭＡ（ＲＤＭＡのためのｉＳＣＳＩ拡張）”）データムーバ及びｉＳＣＳＩデータムーバとインターフェースするデータムーバ・インターフェースを設けるステップと、
含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記ｉＳＣＳＩドライバのデータ移動及びｉＳＣＳＩ管理機能を分割するために前記データムーバ・インターフェースを用いるステップを更に含むことを特徴とする請求項７に記載の方法。
【請求項９】
前記ｉＳＣＳＩオフロード・ターゲット機能を実行するステップは、生成されたｉＳＣＳＩ  ＰＤＵを送信作業リクエストとして送信待ち行列に記入するステップと、関連する完了待ち行列を介して前記送信作業リクエストの完了を報告するステップとを含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記ｉＳＣＳＩオフロード・ターゲット機能を実行するステップは、予め登録されたＳＣＳＩバッファへの直接アクセスを行うためにＲＤＭＡ  ＡＴＰ（Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ  ａｎｄ  Ｐｒｏｔｅｃｔｉｏｎ（アドレス変換及び保護））メカニズムを実行するステップと、ＳＴａｇとして使用されるＴＴＴによって前記予め登録されたＳＣＳＩバッファを識別するステップと、ページ及びブロックの少なくとも一方の位置を突き止めるステップと、ページ及びブロックの前記少なくとも一方に対して読み出し及び書き込み動作の少なくとも一方を実行するステップと、を含むことを特徴とする請求項１に記載の方法。
【請求項１１】
ＲＤＭＡ機能のために使われるＲＮＩＣメカニズムでｉＳＣＳＩオフロード・ターゲット機能を実行するための命令を含むことを特徴とするコンピュータ・プログラム製品。
【請求項１２】
前記ｉＳＣＳＩオフロード・ターゲット機能を実行するための前記命令は、ｉＳＣＳＩイニシエータ機能とは別に且つ無関係にｉＳＣＳＩターゲット機能をオフロードするための命令を含むことを特徴とする請求項１１に記載のコンピュータ・プログラム製品。
【請求項１３】
前記ｉＳＣＳＩオフロード・ターゲット機能を実行するための前記命令は、ＲＤＭＡ書き込み動作の論理を用いてのデータ・アウト・ペイロードの、予め登録されたＳＣＳＩバッファへの任意の順序での任意のＳＣＳＩバッファ・オフセットでのリモート・ダイレクト・データ配置のための命令を含むことを特徴とする請求項１１に記載のコンピュータ・プログラム製品。
【請求項１４】
ＳＴａｇとして使用されるＴＴＴによって前記予め登録されたＳＣＳＩバッファを識別するための命令を含むことを特徴とする請求項１３に記載のコンピュータ・プログラム製品。
【請求項１５】
前記ｉＳＣＳＩオフロード・ターゲット機能を実行するための前記命令は、受信作業リクエストを有するＲＤＭＡ受信待ち行列を用いて制御ｉＳＣＳＩ  ＰＤＵを配置するための命令を含み、関連する完了待ち行列を介して前記受信作業リクエストの完了を報告するための命令を含むことを特徴とする請求項１１に記載のコンピュータ・プログラム製品。
【請求項１６】
前記ｉＳＣＳＩオフロード・ターゲット機能を実行するための前記命令は、
ｉＳＣＳＩアプリケーション・プロトコルを介してｉＳＣＳＩドライバと通信するＳＣＳＩ層を設けるための命令と、
前記ｉＳＣＳＩドライバ及びｉＳＥＲ（“ｉＳＣＳＩ  Ｅｘｔｅｎｓｉｏｎｓ  ｆｏｒ  ＲＤＭＡ（ＲＤＭＡのためのｉＳＣＳＩ拡張）”）データムーバ及びｉＳＣＳＩデータムーバとインターフェースするデータムーバ・インターフェースを設けるための命令と、
を含むことを特徴とする請求項１１に記載のコンピュータ・プログラム製品。
【請求項１７】
前記ｉＳＣＳＩドライバのデータ移動及びｉＳＣＳＩ管理機能を分割するために前記データムーバ・インターフェースを用いるための命令を更に含むことを特徴とする請求項１６に記載のコンピュータ・プログラム製品。
【請求項１８】
前記ｉＳＣＳＩオフロード・ターゲット機能を実行するための前記命令は、生成されたｉＳＣＳＩ  ＰＤＵを送信作業リクエストとして送信待ち行列に記入するための命令と、関連する完了待ち行列を介して前記送信作業リクエストの完了を報告するための命令とを含むことを特徴とする請求項１１に記載のコンピュータ・プログラム製品。
【請求項１９】
前記ｉＳＣＳＩオフロード・ターゲット機能を実行するための前記命令は、予め登録されたＳＣＳＩバッファへの直接アクセスを行うためにＲＤＭＡ  ＡＴＰ（Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ  ａｎｄ  Ｐｒｏｔｅｃｔｉｏｎ（アドレス変換及び保護））メカニズムを実行するための命令と、ＳＴａｇとして使用されるＴＴＴによって前記予め登録されたＳＣＳＩバッファを識別するための命令と、ページ及びブロックの少なくとも一方の位置を突き止め、ページ及びブロックの前記少なくとも一方に対して読み出し及び書き込み動作の少なくとも一方を実行するための命令と、を含むことを特徴とする請求項１１に記載のコンピュータ・プログラム製品。
【請求項２０】
ＲＤＭＡサービス・ユニットと、
インバウンドＲＤＭＡメッセージ及びアウトゴーイングＲＤＭＡメッセージを処理し、前記ＲＤＭＡサービス・ユニットにより提供されるサービスを用いて直接配置及び配信動作を実行するＲＤＭＡメッセージング・ユニットと、
ｉＳＣＳＩオフロード・ターゲット機能を実行すると共にインバウンドｉＳＣＳＩ  ＰＤＵ及びアウトゴーイングｉＳＣＳＩ  ＰＤＵを処理するｉＳＣＳＩメッセージング・ユニットとを含むシステムであって、前記ｉＳＣＳＩメッセージング・ユニットは、前記ＲＤＭＡサービス・ユニットにより提供されるサービスを用いて、前記ＰＤＵにより担持されるｉＳＣＳＩペイロードの登録されたＳＣＳＩバッファへの直接配置を実行するようになされていることを特徴とするシステム。
【請求項２１】
前記ｉＳＣＳＩオフロード・ターゲット機能は、ｉＳＣＳＩイニシエータ機能とは別に且つ無関係にｉＳＣＳＩターゲット機能をオフロードすることを含むことを特徴とする請求項２０に記載のシステム。
【請求項２２】
前記ｉＳＣＳＩオフロード・ターゲット機能は、ＲＤＭＡ書き込み動作の論理を用いてのデータ・アウト・ペイロードの、予め登録されたＳＣＳＩバッファへの任意の順序での任意のＳＣＳＩバッファ・オフセットでのリモート・ダイレクト・データ配置を含むことを特徴とする請求項２０に記載のシステム。
【請求項２３】
前記ｉＳＣＳＩオフロード・ターゲット機能は、ＳＴａｇとして使用されるＴＴＴによって前記予め登録されたＳＣＳＩバッファを識別することを更に含むことを特徴とする請求項２２に記載のシステム。
【請求項２４】
前記ｉＳＣＳＩオフロード・ターゲット機能は、受信作業リクエストを有するＲＤＭＡ受信待ち行列を用いて制御ｉＳＣＳＩ  ＰＤＵを配置することと、関連する完了待ち行列を介して前記受信作業リクエストの完了を報告することとを含むことを特徴とする請求項２０に記載のシステム。
【請求項２５】
前記ｉＳＣＳＩオフロード・ターゲット機能は、
ｉＳＣＳＩアプリケーション・プロトコルを介してｉＳＣＳＩドライバと通信するＳＣＳＩ層と、
前記ｉＳＣＳＩドライバ及びｉＳＥＲ（“ｉＳＣＳＩ  Ｅｘｔｅｎｓｉｏｎｓ  ｆｏｒ  ＲＤＭＡ（ＲＤＭＡのためのｉＳＣＳＩ拡張）”）データムーバ及びｉＳＣＳＩデータムーバとインターフェースするデータムーバ・インターフェースと、
を含むことを特徴とする請求項２０に記載のシステム。
【請求項２６】
前記データムーバ・インターフェースは、前記ｉＳＣＳＩドライバのデータ移動及びｉＳＣＳＩ管理機能を分割することを特徴とする請求項２５に記載のシステム。
【請求項２７】
前記ｉＳＣＳＩオフロード・ターゲット機能は、生成されたｉＳＣＳＩ  ＰＤＵを送信作業リクエストとして送信待ち行列に記入することと、関連する完了待ち行列を介して前記送信作業リクエストの完了を報告することとを含むことを特徴とする請求項２０に記載のシステム。
【請求項２８】
前記ｉＳＣＳＩオフロード・ターゲット機能は、予め登録されたＳＣＳＩバッファへの直接アクセスを行うためにＲＤＭＡ  ＡＴＰ（Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ  ａｎｄ  Ｐｒｏｔｅｃｔｉｏｎ（アドレス変換及び保護））メカニズムを実行することと、ＳＴａｇとして使用されるＴＴＴによって前記予め登録されたＳＣＳＩバッファを識別することと、ページ及びブロックの少なくとも一方の位置を突き止めることと、ページ及びブロックの前記少なくとも一方に対して読み出し及び書き込み動作の少なくとも一方を実行することと、を含むことを特徴とする請求項２０に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にホスト・コンピュータと入出力（Ｉ／Ｏ）装置との間の通信プロトコルに関し、特にリモート・ダイレクト・メモリ・アクセス（Ｒｅｍｏｔｅ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ（ＲＤＭＡ））によるｉＳＣＳＩ（インターネット・スモール・コンピュータ・システム・インターフェース（Ｉｎｔｅｒｎｅｔ  Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）オフロード・インプリメンテーションに関する。
【背景技術】
【０００２】
リモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）は高速トランスポートを介するデータの効率的移動のための手法である。ＲＤＭＡは、メモリ保護セマンティクスを維持しながら、メモリ・バス帯域幅及びＣＰＵ処理オーバーヘッドに対する最小限の要求で、コンピュータが他のコンピュータのメモリに情報を直接配置することを可能にする。ＲＮＩＣは、コンシューマにＲＤＭＡサービスを提供するネットワーク・インターフェース・カードである。ＲＮＩＣは、ＴＣＰ（トランスポート制御プロトコル）上でＲＤＭＡのためにサポートを提供することができる。
【０００３】
ＲＮＩＣの多くの重要な特徴のうちの１つは、ｉＳＣＳＩ（インターネット・スモール・コンピュータ・システム・インターフェース）ターゲット又はイニシエータ・アダプタとして働くことができることである。ｉＳＣＳＩは、イニシエータ及びターゲットという用語を次のように定義している。すなわち、“イニシエータ”はＳＣＳＩコマンド要求側（例えば、ホスト）を指し、“ターゲット”はＳＣＳＩコマンド応答側（例えば、ＳＣＳＩドライブ・キャリヤ、テープなどのＩ／Ｏ装置）を指す。ＲＮＩＣはｉＳＥＲ（“ｉＳＣＳＩ  Ｅｘｔｅｎｓｉｏｎｓ  ｆｏｒ  ＲＤＭＡ（ＲＤＭＡのためのｉＳＣＳＩ拡張）”）サービスを提供することもできる。ｉＳＥＲはｉＳＣＳＩのデータ転送モデルの拡張であって、これはｉＳＣＳＩプロトコルがＲＤＭＡプロトコルの直接データ配置手法を利用することを可能にする。ｉＳＥＲデータ転送プロトコルは、ＲＮＩＣを有するｉＳＣＳＩインプリメンテーションが、ｉＳＣＳＩインフラストラクチャとのコンパチビリティを維持しながら、ＴＣＰ／ＩＰ処理オーバーヘッドをなくすることによって真のゼロ・コピー動作を達成するデータ転送を持つことを可能にする。ｉＳＥＲは、ＲＤＭＡワイヤ・プロトコルを使用し、遠隔側（ターゲット又はイニシエータ）に対してはトランスペアレントではない。それはＲＤＭＡ上のｉＳＣＳＩインプリメンテーションを僅かに変更又は改変する。例えば、それは、データ・アウト（ＤａｔａＯｕｔ）及びデータ・イン（ＤａｔａＩｎ）のようなｉＳＣＳＩ  ＰＤＵを除去し、代わりにＲＤＭＡ読み出しメッセージ及びＲＤＭＡ書き込みメッセージを使用する。基本的にｉＳＥＲは上側の層にｉＳＣＳＩのような能力を与えるが、データ移動のプロトコルとワイヤ・プロトコルとは異なる。
【０００４】
ｉＳＣＳＩプロトコルは、ＳＣＳＩ層により提供されるＳＣＳＩコマンドを実行するためにｉＳＣＳＩプロトコル・データ・ユニット（ＰＤＵ）を交換する。ｉＳＣＳＩプロトコルは、局所的に取り付けられたＳＣＳＩ記憶装置から遠く隔たって取り付けられたＳＣＳＩ記憶装置へのシームレスな遷移を可能にする。ｉＳＣＳＩサービスはｉＳＣＳＩ機能の部分的オフロードを提供することができ、オフロードのレベルはインプリメンテーションに依存し得る。要するに、ｉＳＣＳＩは正規のＴＣＰ接続を使用するが、ｉＳＥＲはＲＤＭＡ上でｉＳＣＳＩを実行する。ｉＳＥＲは、ＲＤＭＡ接続を使用し、より良好な回復能力を達成すると共に呼び出し時間及び性能を改善するためにいろいろなＲＤＭＡ能力を利用する。ＲＮＩＣはｉＳＣＳＩ及びｉＳＥＲサービスの両方をサポートするので、それは、いろいろなレベルのｉＳＣＳＩインプリメンテーションをサポートする装置とのＳＣＳＩ通信を可能にする。プロトコル選択（ｉＳＣＳＩ対ｉＳＥＲ）は、ｉＳＣＳＩログイン・フェーズで実行される。
【０００５】
ＲＤＭＡは、作業リクエスト（ＷＲ）を作業待ち行列に置くために、“動詞（ｖｅｒｂ）と称されるオペレーティング・システム・プログラミング・インターフェースを使用する。作業リクエストでのｉＳＥＲの実行の一例が、ＩＢＭ社に譲渡されたボイド（Ｂｏｙｄ）他の米国特許出願第２００４００４９６００号に記載されている。その出願では、ｉＳＣＳＩコマンドを含む作業リクエストは、ネットワーク・オフロード・エンジンにおいてホストから受信され得、そしてその作業リクエストの受信に応答して、ホストに関連付けられているメモリ領域が変換テーブルにおいて登録され得る。ＲＤＭＡの場合と同じく、作業リクエストは送信待ち行列を通して受信され得、メモリ領域の登録に応答して完了待ち行列要素が完了待ち行列に置かれ得る。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、ＲＮＩＣによる効率的ｉＳＣＳＩオフロード・インプリメンテーションを提供し、以下により詳しく記載されているように、ＲＤＭＡのために開発されたＲＮＩＣメカニズムを用いてこのオフロード・レベルを達成しようとするものである。
【課題を解決するための手段】
【０００７】
本発明によれば、ｉＳＣＳＩオフロード・ターゲット機能は、ＲＤＭＡ機能のために使われる容易に入手し得るＲＮＩＣメカニズムで実現され得る。これは、ＲＤＭＡ書込み操作については、データ・イン及びデータ・アウト・ペイロードの、予め登録されたＳＣＳＩバッファへの任意の順序での任意のバッファ・オフセットでのリモート・ダイレクト・データ配置を含むが、これに限定はされない。インバウンドＲ２Ｔ（“転送可（ｒｅａｄｙ  ｔｏ  ｔｒａｎｓｆｅｒ）”）ＰＤＵは処理され得、データ・アウトＰＤＵはＲＤＭＡ読み出しリクエストのためのものと同じメカニズムを用いて生成され得る。制御ｉＳＣＳＩ  ＰＤＵは、例えば受信待ち行列と共有される受信待ち行列とを用いて配置され得る。
【０００８】
本発明の第１の側面により１つの方法が開示され、この方法は、
ＲＤＭＡ（リモート・ダイレクト・メモリ・アクセス（Ｒｅｍｏｔｅ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ））機能のために使われるＲＮＩＣ（リモート−ダイレクト−メモリ−アクセス−イネーブルド・ネットワーク・インターフェース・コントローラ（Ｒｅｍｏｔｅ−ｄｉｒｅｃｔ−ｍｅｍｏｒｙ−ａｃｃｅｓｓ−ｅｎａｂｌｅｄ  Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃｏｎｔｒｏｌｌｅｒ））メカニズムでｉＳＣＳＩ（インターネット・スモール・コンピュータ・システム・インターフェース（Ｉｎｔｅｒｎｅｔ  Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）オフロード・ターゲット機能を実行するステップを含む。
【０００９】
本発明の第２の側面により１つのコンピュータ・プログラム製品が開示され、このコンピュータ・プログラム製品は、
ＲＤＭＡ機能のために使われるＲＮＩＣメカニズムでｉＳＣＳＩオフロード・ターゲット機能を実行するための命令を含む。
【００１０】
本発明の第３の側面により１つのシステムが開示され、このシステムは、
ＲＤＭＡサービス・ユニットと、
インバウンドＲＤＭＡメッセージ及びアウトゴーイングＲＤＭＡメッセージを処理し、前記ＲＤＭＡサービス・ユニットにより提供されるサービスを用いて直接配置動作及び配信動作を実行するＲＤＭＡメッセージング・ユニットと、ｉＳＣＳＩオフロード・ターゲット機能を実行すると共にインバウンドｉＳＣＳＩ  ＰＤＵ及びアウトゴーイングｉＳＣＳＩ  ＰＤＵを処理するｉＳＣＳＩメッセージング・ユニットとを含み、前記ｉＳＣＳＩメッセージング・ユニットは、前記ＲＤＭＡサービス・ユニットにより提供されるサービスを用いて、前記ＰＤＵにより担持されるｉＳＣＳＩペイロードの登録されたＳＣＳＩバッファへの直接配置及び配信を実行するようになされている。
【００１１】
本発明は、以下の詳細な説明を添付図面と関連させて検討することからより充分に理解され評価されるであろう。
【発明を実施するための最良の形態】
【００１２】
本発明をより良く理解するため、ここで（図１及び２を参照して）ｉＳＣＳＩデータ移動及びオフロード機能について一般的説明が与えられる。後に、（図４以降からの）ＲＤＭＡ動詞及びメカニズムでの（図３を参照して記載される）分散型コンピュータ・システムにおけるｉＳＣＳＩデータ移動及びオフロード機能の実行が説明される。
【００１３】
ｉＳＣＳＩプロトコルは、ＳＣＳＩ層により提供されるＳＣＳＩコマンドを実行するためにｉＳＣＳＩプロトコル・データ・ユニット（ＰＤＵ）を交換する。ｉＳＣＳＩプロトコルは、局所的に取り付けられたＳＣＳＩ記憶装置から遠く隔たって取り付けられたＳＣＳＩ記憶装置へのシームレスな遷移を可能にする。
【００１４】
ｉＳＣＳＩ  ＰＤＵの２つの主要なグループ、すなわちｉＳＣＳＩ制御ＰＤＵとｉＳＣＳＩデータ移動ＰＤＵと、がある。ｉＳＣＳＩ制御は、特にＳＣＳＩコマンド、ＳＣＳＩ応答、タスク管理リクエストなどの多くのタイプの制御ＰＤＵを定義する。データ移動ＰＤＵは、Ｒ２Ｔ（転送可）、ＳＣＳＩデータ・アウト（請求又は非請求）及びＳＣＳＩデータ・インＰＤＵを、限定無しに、含むより小さなグループである。
【００１５】
上記のように、“イニシエータ”はＳＣＳＩコマンド要求側（例えば、ホスト）を指し、“ターゲット”はＳＣＳＩコマンド応答側（例えば、ＳＣＳＩドライブ・キャリヤ、テープなどのＩ／Ｏ装置）を指す。全てのｉＳＣＳＩ制御及びデータ移動コマンドは、イニシエータによって生成されてターゲットにより処理されるもの、ターゲットにより生成されてイニシエータによって処理されるものにより分割され得る。
【００１６】
ここで図１を参照するが、これは夫々ＳＣＳＩ書き込みトランザクション及びＳＣＳＩ読み出しトランザクションのフローを示す。
【００１７】
ＳＣＳＩ書き込みフローでは、イニシエータはＳＣＳＩ書き込みコマンド（参照数字１０１により示されている）をターゲットに送る。このコマンドは、いろいろなフィールドの中に、ディスク（又はターゲットの他の部分）に配置されるべきＳＣＳＩバッファを特定するイニシエータ・タスク・タグ（ＩＴＴ）を担持する。ＳＣＳＩ書き込みコマンドは即値データを担持することもでき、その最大サイズはｉＳＣＳＩ論理フェーズで交渉され得る。更に、ＳＣＳＩ書き込みコマンドの後に、いわゆる非請求データ・アウトＰＤＵ（ｕｎｓｏｌｉｃｉｔｅｄ  Ｄａｔａ−Ｏｕｔ  ＰＤＵｓ）が続くことができる。非請求データ・アウトＰＤＵはターゲット転送タグ（ＴＴＴ）により識別され、この場合にはＴＴＴは０ｘＦＦＦＦＦＦＦＦに等しくあるべきである。非請求データのサイズも、ｉＳＣＳＩログイン・フェーズで交渉され得る。これら２つのデータ転送モードは、短いＳＣＳＩ書き込み動作での呼び出し時間を短縮することを可能にし得るけれども、これを使って大きなトランザクションでもデータの初めの量を転送することができる。非請求又は即値モードで転送され得る最大データ・サイズは、ターゲットのバッファリング能力に依存する。
【００１８】
ターゲットがＳＣＳＩ書き込みコマンドを受け取った後、ターゲットは１つ以上のＲ２Ｔ（参照数字１０２により示されている）で応答する。Ｒ２Ｔは、ターゲットがＳＣＳＩバッファ内の特定されたオフセットから特定された量のデータを（必ずしも順序正しくとは限らない）受け取る準備ができていることを示す。Ｒ２Ｔは２つのタグ、すなわちＳＣＳＩコマンドからのＩＴＴと、データが配置されるべきターゲット・バッファを示すＴＴＴと、を担持する。
【００１９】
各々の受信されたＲ２Ｔについて、イニシエータは１つ以上のデータ・アウトＰＤＵ（参照数字１０３により示されている）を送ることができる。データ・アウトＰＤＵはＳＣＳＩバッファからのデータ（ＩＴＴにより示されている）を担持する。各々の受信されたデータ・アウトは、データを何処に配置するべきかを示すＴＴＴを担持する。最後に受信されたデータ・アウトはＦ−ビットも担持する（参照数字１０４により示されている）。このビットは最後のデータ・アウトが受信されたことを示し、これはＲ２Ｔ交換が完了したことをターゲットに知らせる。
【００２０】
ターゲットは、全てのＲ２Ｔが完了したことを知らされると、ＳＣＳＩ応答ＰＤＵ（参照数字１０５により示されている）を送る。このＳＣＳＩ応答は、ＩＴＴを担持し、ＳＣＳＩ書き込み動作が首尾よく完了したか否かを示す。
【００２１】
ＳＣＳＩ読み出しフローでは、イニシエータはＳＣＳＩ読み出しコマンドをターゲットに送る（参照数字１０６により示されている）。このコマンドは、いろいろなフィールドの中に、データをそこに読むところのＳＣＳＩバッファを特定するＩＴＴを担持する。
【００２２】
ターゲットは１つ以上のデータ・インＰＤＵ（参照数字１０７により示されている）で応答することができる。各データ・インは、ＳＣＳＩバッファに配置されるべきデータを担持する。データ・インは、任意の順序で到来することができ、任意のサイズを持つことができる。各データ・インは、データを配置するＳＣＳＩバッファとバッファ・オフセットとを特定するＩＴＴを担持する。
【００２３】
データ・インＰＤＵのストリームの後にＳＣＳＩ応答（参照数字１０８により示されている）が続く。ＳＣＳＩ応答は、ＩＴＴを担持し、ＳＣＳＩ読み出し動作が首尾よく完了したか否かを示す。
【００２４】
本発明によれば、従来技術とは異なって、ＲＮＩＣがデータ・アウト及びデータ・イン及びＲ２Ｔのフローを処理する。
【００２５】
ここで図２を参照し、これはｉＳＣＳＩプロトコルの例を示す。ｉＳＣＳＩプロトコルは、明確な順序制御規則を有する。ｉＳＣＳＩタスク（参照数字２０１）は１つ以上のＳＣＳＩコマンド２０２を含む。何時でも、ｉＳＣＳＩタスク２０１は単一の未処理のコマンドを持ち得る。各タスク２０１は、ＩＴＴ２０３によって識別される。単一のｉＳＣＳＩ接続が複数の未処理ｉＳＣＳＩタスクを持ち得る。ｉＳＣＳＩタスク２０１のＰＤＵ２０４は接続ストリームにおいてインターリーブすることができる。各ｉＳＣＳＩ  ＰＤＵ２０４は数個のシーケンス番号を担持することができる。データ移動ＰＤＵに関連するシーケンス番号はＲ２ＴＳＮ（Ｒ２Ｔシーケンス番号）、ＤａｔａＳＮ及びＥｘｐＤａｔａＳＮ、及びＳｔａｔＳＮ及びＥｘｐＳｔａｔＳＮを、限定無しに、含む。
【００２６】
ＤａｔａＳＮは、データ（データ・アウト及びデータ・イン）を担持する各ｉＳＣＳＩ  ＰＤＵ２０４により担持される。データ・インについては、ＤａｔａＳＮは各ＳＣＳＩ読み出しコマンドについて０から始まることができ、各々の送られたデータ・インについてターゲットによりインクリメントされ得る。データ・インに続くＳＣＳＩ応答は、夫々のＳＣＳＩコマンドのために送られたデータ・インの数を示すＥｘｐＤａｔａＳＮを担持する。双方向ＳＣＳＩコマンドについては、ＤａｔａＳＮはデータ・インとＲ２Ｔとにより共有され、Ｒ２ＴはＤａｔａＳＮの代わりにＲ２ＴＳＮを担持するが、これらは同じフィールドのための異なる名前であり、これはｉＳＣＳＩヘッダにおいて同じ位置を有する（ＢＨＳ−バッファ・セグメント・ハンドル・スタック（Ｂｕｆｆｅｒ  Ｓｅｇｍｅｎｔ  Ｈａｎｄｌｅ  Ｓｔａｃｋ））。
【００２７】
データ・アウトについては、ＤａｔａＳＮは各Ｒ２Ｔについて０から始まることができ、各々の送られるデータ・アウトについてイニシエータによりインクリメントされ得る。Ｒ２ＴＳＮはＲ２Ｔにより担持され得る。Ｒ２ＴＳＮは、各ＳＣＳＩ書き込みコマンドについて０から始まることができ、各々の送られたＲ２Ｔについてターゲットによりインクリメントされ得る。
【００２８】
ＤａｔａＳＮ及びＲ２ＴＳＮの両方が、受信されるデータ移動ＰＤＵの順序に従うように使用され得る。ｉＳＣＳＩは、受信されたデータの順番どおりでない配置と、Ｒ２Ｔの順番どおりでない実行とを許す。しかし、ｉＳＣＳＩは、既に配置されているデータの配置或いは既に実行されたＲ２Ｔの実行を防止するためにイニシエータ及びターゲットからの実行を要求する。
【００２９】
ＳｔａｔＳＮとＥｘｐＳｔａｔＳＮとは、ターゲット応答バッファの管理に使用され得る。ターゲットは、各々の生成された応答についてＳｔａｔＳＮをインクリメントすることができる。応答、及び潜在的にはそのコマンドで使用されるデータは、イニシエータがＥｘｐＳｔａｔＳＮを使用して応答の受信を知らせるまで、内部ターゲットに維持され得る。ＥｘｐＳｔａｔＳＮは、イニシエータからターゲットへの方向に流れる全てのｉＳＣＳＩ  ＰＤＵにより担持され得る。イニシエータは、ターゲットの効率的実行を可能にするために単調に増大するＥｘｐＳｔａｔＳＮを維持することができる。
【００３０】
上記のように、本発明の非限定的な実施態様によれば、ｉＳＣＳＩオフロード機能は、ＲＤＭＡ機能のために使用されるＲＮＩＣメカニズムで実行され得る。初めに、分散型コンピュータ・システムで使用されるＲＤＭＡにおける作業待ち行列のコンセプトに関して一般的に説明する。
【００３１】
ここで図３を参照し、これは本発明の実施態様による、分散型コンピュータ・システム３００を示す。分散型コンピュータ・システム３００は、例えば、限定無しに、インターネット・プロトコル・ネットワーク（ＩＰネット）と、他の多数のタイプ及び構成の他の多くのコンピュータ・システムとを含むことができる。例えば、本発明を実施するコンピュータ・システムは、１つのプロセッサと数個の入出力（Ｉ／Ｏ）アダプタとを有する小型サーバから、多数のプロセッサ及びＩ／Ｏアダプタを有する大規模並列スーパーコンピュータにまで及ぶことができる。更に、本発明は、インターネット又はイントラネットにより接続されたリモート・コンピュータ・システムのインフラストラクチャにおいて実施され得る。
【００３２】
分散型コンピュータ・システム３００は、任意の数の任意のタイプの、独立プロセッサ・ノード、記憶装置ノード、及び特殊目的処理ノードのような（これらに限定はされない）ホスト・プロセッサ・ノード３０１を接続することができる。それらのノードのいずれもエンド・ノードとして機能することができ、これは本書では分散型コンピュータ・システム３００においてメッセージ又はフレームを生じさせ又は最終的に消費する装置であると定義される。各ホスト・プロセッサ・ノード３０１はコンシューマ３０２を含むことができ、それらは、そのホスト・プロセッサ・ノード３０１上で実行するプロセスである。ホスト・プロセッサ・ノード３０１は１つ以上のＩＰスイート・オフロード・エンジン（ＩＰＳＯＥ）３０３も含むことができ、これはハードウェアで又はハードウェアとオフロード・マイクロプロセッサとの組み合わせで実現され得る。オフロード・エンジン３０３は、メッセージをＩＰＳＯＥポート３０５に転送するために使われる多数の待ち行列ペア３０４をサポートすることができる。各待ち行列ペア３０４は、送信作業待ち行列（ＳＷＱ）及び受信作業待ち行列（ＲＷＱ）を含むことができる。送信作業待ち行列は、チャネル及びメモリ・セマンティック・メッセージを送信するために使用され得る。受信作業待ち行列は、チャネル・セマンティック・メッセージを受信することができる。コンシューマは、作業リクエスト（ＷＲ）を作業待ち行列に配置するために実行されなければならないセマンティクスを定義する“動詞”を使用することができる。動詞は、完了した作業を完了待ち行列から取り出すためのメカニズムも提供することができる。
【００３３】
例えば、コンシューマは作業リクエストを生成することができ、それは作業待ち行列要素（ＷＱＥ）として作業待ち行列に配置される。従って、送信作業待ち行列はＷＱＥを含むことができ、それは分散型コンピュータ・システム３００の構造上で送信されるべきデータを記述する。受信作業待ち行列はＷＱＥを含むことができ、それは分散型コンピュータ・システム３００の構造から入ってくるインカミング・チャネル・セマンティック・データを何処に配置するかを記述する。作業待ち行列要素は、オフロード・エンジン３０３においてハードウェア又はソフトウェアにより処理され得る。
【００３４】
完了待ち行列は完了待ち行列要素（ＣＱＥ）を含むことができ、それは前もって完了した作業待ち行列要素に関する情報を含む。完了待ち行列は、複数の待ち行列ペアのために完了通知の１つ又は複数のポイントを作るために使用され得る。完了待ち行列要素は、待ち行列ペアと完了した特定の作業待ち行列要素とを判定するのに充分な情報を含む完了待ち行列上のデータ構造である。完了待ち行列コンテキストは、個々の完了待ち行列を管理するために必要なポインタ、長さ及びその他の情報を含む情報のブロックである。
【００３５】
ＲＤＭＡ読み出し作業リクエストは、リモート・ノード上の仮想的に連続しているメモリ空間を読み出すメモリ・セマンティック動作を提供する。メモリ空間は、メモリ領域の一部分又はメモリ・ウィンドウの一部分であり得る。メモリ領域は、仮想アドレスと長さとにより定義される仮想的に連続しているメモリ・アドレスの前もって登録されているセットを参照する。メモリ・ウィンドウは、前もって登録されている領域に束縛されている仮想的に連続しているメモリ・アドレスのセットを参照する。同様に、ＲＤＭＡ書き込み作業待ち行列要素は、リモート・ノード上の仮想的に連続しているメモリ空間に書き込むメモリ・セマンティック動作を提供する。
【００３６】
バインド（アンバインド）リモート・アクセス・キー（ステアリング・タグ−ＳＴａｇ）作業待ち行列要素は、メモリ・ウィンドウをメモリ領域に関連付ける（又は切り離す（ｄｉｓａｓｓｏｃｉａｔｉｎｇ））ことによってメモリ・ウィンドウを改変（又は破壊）するコマンドをオフロード・エンジン・ハードウェアに提供する。このＳＴａｇは、各ＲＤＭＡアクセスの一部であって、リモート・プロセスがバッファへのアクセスを許可したことを確認するために使用される。
【００３７】
以下で示され記述される方法及びシステムは、ネットワーク・インターフェース・カード、ハード・ディスク、光ディスク、記憶装置など（これらに限定されない）のコンピュータ・プログラム製品３０６により実行され得、これらは本書に記載されている方法及びシステムを実行するための命令を含むことができる。
【００３８】
ここで、ｉＳＣＳＩオフロード機能を実行するための幾つかの適切な関連するＲＤＭＡメカニズムについて図４を参照して説明する。
【００３９】
ＲＤＭＡでは、ホストＡはホストＢの関与無しにホストＢのメモリにアクセスすることができる。ホストＡはホストＢのメモリにどういう事態において何時アクセスするかを決定し、ホストＢは、ホストＡが明示的な通知を提供しなければ、このアクセスが行われたことに気づかない。
【００４０】
ホストＡがホストＢのメモリにアクセスし得るようになる前に、ホストＢはアクセスされるメモリ領域を登録しなければならない。各々の登録されたメモリ領域はＳＴａｇを得る。ＳＴａｇは、保護ブロック（ＰＢ）と称される保護テーブル内のエントリと関連付けられる。このＰＢは、境界、アクセス権などを含めて登録済みメモリ領域を完全に記述する。ＲＤＭＡは、物理的に不連続の複数のメモリ領域の登録を許す。そのような領域はページ・リスト（又はブロック・リスト）によって表される。ＰＢは、また、メモリ領域ページ・リスト（又はブロック・リスト）を指す。
【００４１】
ＲＤＭＡは、登録済みメモリ領域のみへのリモート・アクセスを許す。メモリ領域Ｓｔａｇは、リモート・サイトにより、それにアクセスするときにメモリを参照するために使用される。格納アプリケーションについては、ＲＤＭＡはメモリ領域にゼロ・ベース・アクセス（ｚｅｒｏ−ｂａｓｅｄ  ａｃｃｅｓｓ）でアクセスする。ゼロ・ベース・アクセスでは、タグド・ダイレクト・データ・プレースメント・プロトコル（Ｔａｇｇｅｄ  Ｄｉｒｅｃｔ  Ｄａｔａ  Ｐｌａｃｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ（ＤＤＰ））セグメントにより担持されるターゲット・オフセット（ＴＯ）は、登録済みメモリ領域におけるオフセットを定める。
【００４２】
ここで図５を参照し、これはＲＤＭＡのリモート・メモリ・アクセス動作、すなわち読み出し及び書き込み、を示す。リモート書き込み動作はＲＤＭＡ書き込みメッセージ−タグドＤＤＰメッセージ（Ｔａｇｇｅｄ  ＤＤＰ  Ｍｅｓｓａｇｅ）を用いることにより実行され得るが、これはリモート・メモリに配置されるべきデータを担持する（参照数字５０１により示されている）。
【００４３】
リモート読み出し動作は２つのＲＤＭＡメッセージ、すなわちＲＤＭＡ読み出しリクエスト・メッセージ及びＲＤＭＡ読み出し応答メッセージ、を用いることにより実行され得る（参照数字５０２により示されている）。ＲＤＭＡ読み出しはアンタグドＤＤＰメッセージ（Ｕｎｔａｇｇｅｄ  ＤＤＰ  Ｍｅｓｓａｇｅ）であり、これはデータがフェッチされなければならない記憶場所と、データを配置するための記憶場所との両方を特定する。ＲＤＭＡ読み出し応答は、ＲＤＭＡ読み出しリクエストにより要求されたデータを担持するタグドＤＤＰメッセージである。
【００４４】
インバウンド・タグドＤＤＰセグメントを処理するプロセス（これはＲＤＭＡ書き込み及びＲＤＭＡ読み出し応答の両方のために使用される）は、ＳＴａｇにより参照させられた（ｒｅｆｅｒｒｅｄ）ＰＢを読み出すこと（５０３）、アクセス確認（５０４）、領域ページ−リスト（変換テーブル）を読み出すこと（５０５）、及びメモリへの直接書き込み動作（５０６）を、限定無しに、含み得る。インバウンドＲＤＭＡ読み出しリクエストは、ＲＮＩＣにより待ち行列に入れられ得る（５０７）。この待ち行列は読み出し応答作業待ち行列（ＲｅａｄＲｅｓｐｏｎｓｅ  ＷｏｒｋＱｕｅｕｅ）と呼ばれる。
【００４５】
ＲＮＩＣは、全ての先行するＲＤＭＡリクエストが完了した後に、ＲＤＭＡ読み出しリクエストを順番に処理することができ（５０８）、そしてＲＤＭＡ読み出し応答メッセージを生成することができ（５０９）、これは要求側に送り戻される。
【００４６】
ＲＤＭＡ読み出しリクエストの処理のプロセスは、ＲＤＭＡ読み出しリクエストの読み出し応答ＷＱへのオプションのキューイング及びデキューイング（ｄｅｑｕｅｕｉｎｇ）（５１０）、データ・ソースＳＴａｇ（読み出すメモリ領域を指示するＳＴａｇ）により参照させられたＰＢを読むこと（５１１）、アクセス確認（５１２）、領域ページ−リスト（変換テーブル）を読むこと（５１３）、メモリからの直接読み出し動作及びＲＤＭＡ読み出し応答セグメントの生成（５１４）を、限定無しに、含み得る。
【００４７】
ＲＤＭＡはシステム・メモリに局所的にアクセスすること及び遠く隔たってアクセスすることの両方を可能にするアドレス変換及び保護（Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ  ａｎｄ  Ｐｒｏｔｅｃｔｉｏｎ（ＡＴＰ））メカニズムを定義する。ここで図６を参照して説明されるように、このメカニズムは、アクセスされなければならないメモリの登録に基く。
【００４８】
メモリ登録は、リモート・メモリ・アクセスのために必要とされる必須の動作である。ＲＤＭＡにおいて２つのアプローチ、すなわちメモリ・ウィンドウ及び高速メモリ登録、が使用され得る。
【００４９】
メモリ・ウィンドウ・アプローチ（参照数字６００）は、遠く隔たってアクセスされるべきメモリが静的であって、そのアクセスされるべきメモリが前もって分かっているときに使用され得る（６０１）。その場合には、メモリ領域はいわゆる古典的メモリ登録方式を用いることにより登録され、ＰＢ及び変換テーブル（ＴＴ）の割り当て及び更新は、ハードウェア補助を受け或いは受けずにドライバにより実行される（６０２）。これは同期動作であって、ＰＢ及びＴＴの両方が夫々の情報で更新されるときにだけ完成され得る。メモリ・ウィンドウは、登録済みメモリ領域の全体（又は一部分）へのリモート・メモリ・アクセスを可能にする（或いは禁止する）ために使用される（６０３）。このプロセスはウィンドウ・バインディング（Ｗｉｎｄｏｗ  Ｂｉｎｄｉｎｇ）と呼ばれ、コンシューマ・リクエスト時にＲＮＩＣにより実行される。これはメモリ登録より遥かに高速である。しかし、メモリ・ウィンドウはリモート・アクセスを可能にする唯一の方法ではない。この目的のために領域自体のＳｔａｇが使用され得る。従って、登録済みメモリにアクセスするために３つのメカニズム、すなわち、静的に登録された領域を用いること、それらの領域に制限されたウィンドウを用いること、及び高速登録された領域（ｆａｓｔ  ｒｅｇｉｓｔｅｒｅｄ  ｒｅｇｉｏｎｓ）を用いること、のうちの少なくとも１つ、が使用され得る。
【００５０】
リモート・アクセスのためのメモリが前もって分かっていなければ（６０４）、予め登録された領域の使用は効率的でない。その代わりとしてＲＤＭＡは高速メモリ登録及び失効アプローチ（６０５）を定義している。
【００５１】
このアプローチはメモリ登録プロセスを２つの部分、すなわち、領域により消費されるべきＲＮＩＣリソースの割り当て（６０６）（例えば、ＰＢと、ページ−リストを保持するために使用されるＴＴの部分と）、及び領域特有情報を保持するためのＰＢ及びＴＴの更新（６０７）、に分ける。第１の動作６０６は、ソフトウェアにより実行されて良く、各Ｓｔａｇについて１回実行され得る。第２の動作６０７は、ソフトウェアにより公表され（ｐｏｓｔｅｄ）てハードウェアによって実行され得、複数回（登録されるべき各々の新しい領域／バッファについて）実行され得る。高速メモリ登録に加えて、ＲＤＭＡは失効動作（Ｉｎｖａｌｉｄａｔｅ  ｏｐｅｒａｔｉｏｎ）も定義しており、これはＳＴａｇを失効させ、それを後に再使用することを可能にする（６０８）。
【００５２】
高速メモリ・レジスタ（ＦａｓｔＭｅｍｏｒｙＲｅｇｉｓｔｅｒ）及び失効動作の両方は非同期動作として定義される。これらは作業リクエストとしてＲＮＩＣ送信待ち行列に記入され、その完了は、関連する完了待ち行列を介して報告される。
【００５３】
ＲＤＭＡは２つのタイプの受信待ち行列（Ｒｅｃｅｉｖｅ  Ｑｕｅｕｅ）、すなわち共有されるＲＱ及び共有されないＲＱ、を定義する。共有されるＲＱは複数の接続に共有され得、そのような待ち行列に記入された受信ＷＲは、いろいろな接続で受信された送信メッセージにより消費され得る。共有されないＲＱは常に１つの接続に関連付けられ、そのようなＲＱに記入されたＷＲは、この接続を介して受信された送信（Ｓｅｎｄｓ）により消費される。
【００５４】
ここで図７及び８を参照し、これらは、本発明の実施態様による、ＲＮＩＣをサポートするＲＤＭＡによるｉＳＣＳＩデータ移動動作のオフロードを示す。
【００５５】
初めに、特に図７を参照する。本発明の非限定的実施態様によれば、在来のＲＤＭＡオフロード機能は２つの部分、すなわちＲＤＭＡサービス・ユニット７００とＲＤＭＡメッセージング・ユニット７０１とに分割され得る。ＲＤＭＡメッセージング・ユニット７０１は、インバウンドＲＤＭＡメッセージ及びアウトゴーイングＲＤＭＡメッセージを処理することができて、ＲＤＭＡサービス・ユニット７００により提供されるサービスを使用して直接配置及び配信動作を実行することができる。ｉＳＣＳＩオフロードを可能にするために、ｉＳＣＳＩオフロード機能は、ｉＳＣＳＩメッセージング・ユニット７０２により取って代わられて該ユニットにより実行され得る。ｉＳＣＳＩメッセージング・ユニット７０２は、インバウンドｉＳＣＳＩ  ＰＤＵ及びアウトゴーイングｉＳＣＳＩ  ＰＤＵを処理する責任を持つことができ、ＲＤＭＡサービス・ユニット７００により提供されるサービスを使用して直接配置及び配信を実行することができる。
【００５６】
ＲＤＭＡサービス・ユニット７００により提供されるサービス及びインターフェースは、ｉＳＣＳＩ及びＲＤＭＡオフロード機能の両方について同一である。
【００５７】
ここで図８を参照する。ハードウェアで生成されるデータ・アウト（８０２）を除いて、全てのｉＳＣＳＩ  ＰＤＵはソフトウェアで生成される（参照数字８０１）。生成されたｉＳＣＳＩ  ＰＤＵは、送信作業リクエストとして送信待ち行列に記入され得る（８０３）。ＲＮＩＣは、これらのＷＲの完了（送信動作成功）を、関連する完了待ち行列を介して、報告する（８０４）。
【００５８】
ソフトウェアは、バッファを（例えば、受信作業リクエストを有する）受信待ち行列に記入する責任を有する（８０５）。不快な競争事態を避けるために、受信バッファは一般に送信バッファより先に記入され得る。送信バッファ及び受信バッファを記入する具体的順序は本発明にとって本質的ではなく、実施者に任されてよい。バッファは、インバウンド制御及び非請求データ・アウト  ＰＤＵのために使用され得る（８０６）。ＲＮＩＣは、２つのＲＱ、すなわち１つはインバウンドｉＳＣＳＩ制御ＰＤＵのためのもの及び他の１つはインバウンド非請求データ・アウトのためのもの、をサポートするように拡張され得る（８０７）。ｉＳＣＳＩ制御ＰＤＵのために使用されるバッファのメモリ管理及びユーティライゼーションを改善するために、ソフトウェアは共有されるＲＱを使用することができる（８０８）。
【００５９】
制御受信又は非請求データ・アウトＰＤＵは、完了待ち行列を用いて報告され得る（８０９）。ｉＳＣＳＩ  ＰＤＵデータにおいて検出されたデータ破損又は他のエラーは、ＲＱ内のＷＱＥを消費するｉＳＣＳＩ  ＰＤＵのための完了待ち行列を介して、又はデータ移動ｉＳＣＳＩ  ＰＤＵのための非同期イベント待ち行列（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｅｖｅｎｔ  Ｑｕｅｕｅ）を介して報告され得る（８１０）。ＲＮＩＣは、その後、次のＰＤＵを処理することができる（８１１）。
【００６０】
本発明の非限定的実施態様によれば、ＲＤＭＡベースのメカニズムを使用するｉＳＣＳＩセマンティクスのインプリメンテーションは、ｉＳＣＳＩ及びｉＳＥＲベースの解決策のための統合ソフトウェア・アーキテクチャで実行され得る。
【００６１】
ここで図９を参照し、これはＲＤＭＡベースのｉＳＣＳＩオフロードを用いて実現されたソフトウェア構造を示す。ＳＣＳＩ層９００は、ｉＳＣＳＩアプリケーション・プロトコルを介してｉＳＣＳＩドライバ９０１と通信する。データムーバ（ｄａｔａｍｏｖｅｒ）インターフェース９０２は、ｉＳＣＳＩドライバ９０１及びｉＳＥＲデータムーバ９０３及びｉＳＣＳＩデータムーバ９０４とインターフェースする。データムーバ・インターフェース９０２がこれらのエレメントとどの様にインターフェースするかは、ＲＤＭＡコンソーシアムにより定められた標準データムーバ・インターフェースに従って良い。そのようなソフトウェア構造の１つの非限定的な利点は、ｉＳＣＳＩ及びｉＳＥＲソフトウェア・スタックの間でソフトウェア・コンポーネント及びインターフェースが高度に共有されることである。データムーバ・インターフェースは、ｉＳＣＳＩドライバのデータ移動及びｉＳＣＳＩ管理機能を分割することを可能にする。簡単に言えば、データムーバ・インターフェースは、例えばイニシエータのためにＳＣＳＩコマンドを完了させるためにコマンドを送信すること、又は例えばターゲットのためにＳＣＳＩコマンドの一部を完了させるためにｉＳＣＳＩデータ・シーケンスを送信／受信することをＳＣＳＩ層９００が要求したときに全ての必要なデータ転送が行われることを保証する。
【００６２】
ｉＳＣＳＩデータムーバ９０４及びｉＳＥＲデータムーバ９０３の機能は、ＲＮＩＣ９０６により実現されるＲＤＭＡベースのサービス９０５でオフロードされ得る。本発明の実施態様によれば、ＲＤＭＡメカニズムを用いてｉＳＣＳＩ機能をオフロードすることは、ｉＳＣＳＩターゲット機能及びｉＳＣＳＩイニシエータ機能の両方をオフロードすることを含む。オフロード機能（ターゲット又はイニシエータ或いはその両方）の各々は、他方の機能又はエンド・ポイントとは別に且つ無関係に実行され得る。換言すれば、イニシエータは、データ移動動作をオフロードされて、なんらの変更又は改変を必要とすること無くターゲットの他のｉＳＣＳＩインプリメンテーションとなお通信することができる。同じことが、オフロードされたｉＳＣＳＩターゲット機能についても当てはまる。ｉＳＣＳＩデータ移動機能をオフロードするために使用される全てのＲＤＭＡメカニズムは、局所的であって、遠隔側に対してトランスペアレントである。
【００６３】
ここで図１０を参照すると、これは本発明の実施態様により、ハードウェア／ソフトウェア相互作用無しのｉＳＣＳＩデータ移動ＰＤＵのＳＣＳＩバッファへの直接データ配置を示す。初めに、ＲＮＩＣにＳＣＳＩバッファの記述が供給される（例えば、ソフトウェアにより）（参照数字１００１）。各ＳＣＳＩバッファはＩＴＴ又はＴＴＴにより夫々一意に特定され得る（１００２）。ＳＣＳＩバッファは、１つ以上のページ又はブロックから成り得、ページ・リスト又はブロック・リストにより表され得る。
【００６４】
直接データ配置を実行するために、ＲＮＩＣは２ステップ分解（ｔｗｏ−ｓｔｅｐ  ｒｅｓｏｌｕｔｉｏｎ）プロセスを実行することができる。第１ステップ（１００３）は、ＩＴＴ（又はＴＴＴ）を前提としてＳＣＳＩバッファを特定することを含み、第２ステップ（１００４）は、このページ／ブロックを読む／書き込むためにリストにおいてページ／ブロックの位置を突き止めることを含む。第１及び第２ステップの両方が、ＲＤＭＡにより定義されたアドレス変換及び保護メカニズムを採用し、ｉＳＣＳＩ  ＩＴＴ及びＴＴＴセマンティクスを実行するためにＳＴａｇ及びＲＤＭＡメモリ登録セマンティクスを使用することができる。例えば、ＲＤＭＡ保護メカニズムは、ＳＣＳＩバッファの位置を突き止めてそれを請求されていないアクセスから保護するために使用され得（１００５）、アドレス変換メカニズムはページ・リスト又はブロック・リスト中のページ／ブロックへの効率的アクセスを可能にすることができる（１００６）。ｉＳＣＳＩデータ移動ＰＤＵのためにＲＤＭＡのようなリモート・メモリ・アクセスを実行するために、イニシエータ又はターゲット・ソフトウェアはＳＣＳＩバッファを登録することができる（１００７）（例えば、登録メモリ領域セマンティクスを用いて）。メモリ登録は、保護ブロックがＳＣＳＩバッファと関連付けられるという結果をもたらす。この様にして、保護ブロックは、ＳＣＳＩバッファを記述するページ・リスト又はブロック・リストを保持する変換テーブル・エントリを指す。登録済みメモリ領域はゼロ・ベース・タイプのメモリ領域であって良く、これはＳＣＳＩバッファにアクセスするためにｉＳＣＳＩデータ移動ＰＤＵ内のバッファ・オフセット（ＢｕｆｆｅｒＯｆｆｓｅｔ）を用いることを可能にする。
【００６５】
ｉＳＣＳＩ制御ＰＤＵにおいて使用されるＩＴＴ及びＴＴＴは、登録済みＳＣＳＩバッファを参照するＳＴａｇの値を得ることができる（１００８）。例えば、イニシエータにより生成されるＳＣＳＩ読み出しコマンドは、登録済みＳＣＳＩバッファのＳＴａｇに等しいＩＴＴを担持することができる。対応するデータ・イン及びＳＣＳＩ応答ＰＤＵもこのＳＴａｇを担持することができる。従って、ＳＴａｇは、イニシエータによりリモート・ダイレクト・データ配置を実行するために使用され得る。ＳＣＳＩ書き込みコマンドのために、ターゲットはインバウンド請求データ・アウトＰＤＵのために割り当てられたそのＳＣＳＩバッファを登録することができ、Ｒ２Ｔ  ＰＤＵにおいてＳＣＳＩバッファのＳＴａｇに等しいＴＴＴを使用することができる（１００９）。
【００６６】
本発明のこの非限定的方法は、現存するハードウェア及びソフトウェア・メカニズムを利用してｉＳＣＳＩデータ移動動作の効率的オフロードを実行することを可能にし、ｉＳＣＳＩ仕様で定義されているこれらの動作の柔軟性を維持する。
【００６７】
ここで図１１及び１２を参照し、これらは、本発明の実施態様による、ＲＮＩＣによるデータ・イン及び請求データ・アウトの処理と、図１０を参照して記載されたＲＤＭＡ保護及びアドレス変換アプローチの使用と、これらのＰＤＵにより担持されるｉＳＣＳＩペイロードの登録済みＳＣＳＩバッファへの直接データ配置の実行とを示している。更に、ＲＮＩＣは、データ・イン及びデータ・アウトのデータ順序制御を追跡し、ｉＳＣＳＩ仕様により定義されたｉＳＣＳＩ順序制御規則を実施し、データ・トランザクション終了時のＰＢの失効を実行することができる。
【００６８】
インバウンド・データ・イン及び請求データ・アウトはＲＮＩＣにより全く同様に（夫々イニシエータ及びターゲットにより）処理され得る。これらのＰＤＵタイプの両方に共通の処理をここで説明する。
【００６９】
ＲＮＩＣは、初めにｉＳＣＳＩデータ・イン及び請求データ・アウトＰＤＵを検出する（１１０１）。これは、ＢＨＳ：オペコード及びＢＨＳ：ＴＴＴフィールドを用いることにより、限定無しに、達成され得る（ＴＴＴ＝ｈ’ＦＦＦＦＦＦＦＦ’はデータ・アウトＰＤＵが請求されていなくて、そのようなＰＤＵが上記のように制御ｉＳＣＳＩ  ＰＤＵとして処理されることを示す）。ＲＮＩＣは、データ・インＰＤＵのためにＢＨＳ：ＩＴＴを、またデータ・アウトＰＤＵのためにＢＨＳ：ＴＴＴを、ＳＴａｇとして使用することができる（これは、以前にドライバにより、それがＳＣＳＩコマンド又はＲ２Ｔを夫々生成したときに、使用された）。
【００７０】
ＲＮＩＣは、例えば、夫々の登録済みＳＣＳＩバッファを記述すると共にアクセス許可を確認するＳＴａｇのインデックス・フィールドを用いることによりＰＢを見出す（１１０２）。ＲＮＩＣは、例えばＢＨＳ：ＢｕｆｆｅｒＯｆｆｓｅｔ（ＢＨＳ：バッファ・オフセット）を用いることによって、登録済みＳＣＳＩバッファの中のデータがアクセスされる記憶場所を知ることができる（１１０３）。ＲＮＩＣは、アドレス変換メカニズムを使用してページ／ブロックを分解し、登録済みＳＣＳＩバッファへの直接データ配置（又は直接データ読み出し）を実行することができる（１１０４）。
【００７１】
コンシューマ・ソフトウェア（ドライバ）は、ＲＮＩＣにより実行される直接配置動作に気づかない。’Ｆ−ビット’がセットされている請求データ・アウトＰＤＵの場合以外には完了通知は無い。
【００７２】
直接配置動作の他に（例えば、その前に）、ＲＮＩＣはインバウンドＰＤＵのシーケンス確認を実行することができる（１１０５）。データ・インＰＤＵ及びデータ・アウトＰＤＵの両方がＤａｔａＳＮを担持する。ＤａｔａＳＮは、データ・インの場合には各ＳＣＳＩコマンドについて、またデータ・アウトの場合には各Ｒ２Ｔについて、ゼロにされ得る（１１０６）。ＲＮＩＣは、保護ブロックにおいてＥｘｐＤａｔａＳＮを維持することができる（１１０７）。このフィールドはＰＢ初期化時にゼロに初期化され得る（高速メモリ登録）（１１０８）。各々のインバウンド・データ・イン又は請求データ・アウトＰＤＵについて、このフィールドはＢＨＳ：ＤａｔａＳＮと比較され得る（１１０９）。
ａ．  ＤａｔａＳＮ＝ＥｘｐＤａｔａＳＮならば、ＰＤＵは受け入れられてＲＮＩＣにより処理され、ＥｘｐＤａｔａＳＮは大きくされる（１１１０）。
ｂ．  ＤａｔａＳＮ＞ＥｘｐＤａｔａＳＮならば、非同期イベント通知メカニズムを用いることなどにより（関連非同期エラー−順序制御エラー）エラーがソフトウェアに報告される（１１１１）。ＰＢ内のＥｒｒｏｒＢｉｔ（エラー・ビット）がセットされ得、（ＳＴａｇを用いて）このＰＢを参照する各々の入ってくるＰＤＵは、このポイント以降、廃棄される。これは、実際上、ｉＳＣＳＩドライバがｉＳＣＳＩコマンド・レベル（又は夫々Ｒ２Ｔレベル）で回復する必要があるということを意味する。
ｃ．  最後の場合はゴーストＰＤＵの受信である（ＤａｔａＳＮ＜ＥｘｐＤａｔａＳＮ）。この場合、受信されたＰＤＵは廃棄され、エラーはソフトウェアに報告されない（１１１２）。これは、ｉＳＣＳＩ仕様により定められているように重複するｉＳＣＳＩ  ＰＤＵの処理を許す。
【００７３】
ＳＣＳＩ読み出しコマンドの場合、イニシエータは、ＳＣＳＩ応答が後に続く１つ以上のデータ・インＰＤＵを受信する（１１１３）。このＳＣＳＩ応答はＢＨＳ：ＥｘｐＤａｔａＳＮを担持することができる。このフィールドは、ＳＣＳＩ応答の前のデータ・インの数を示す。ｉＳＣＳＩ順序制御規則の実施を終えるために、ＲＮＩＣは、ＢＨＳ：ＥｘｐＤａｔａＳＮを、そのＳＣＳＩ応答により担持されるＳＴａｇ（ＩＴＴ）により参照させられたＰＢ：ＥｘｐＤａｔａＳＮと比較することができる。不一致の場合には、完了エラーが報告され、順序制御エラーが検出されたことを示す（１１１４）。
【００７４】
’Ｆ−ビット’がセットされている請求データ・アウトＰＤＵは、このＰＤＵが対応するＲ２Ｔにより要求されたトランザクションを完了させるということを示す（１１１５）。その場合、完了通知がコンシューマ・ソフトウェアに渡される（１１１６）。例えば、ＲＮＩＣは受信待ち行列から１つのＷＱＥを省いて、夫々の完了待ち行列にＣＱＥを加え、データ・アウト・トランザクションの完了を示すことができる。ターゲット・ソフトウェアは、Ｒ２Ｔ動作が完了したか否かを知るために、またそれがＳＣＳＩ書き込み動作の全体が完了したことを確認するＳＣＳＩ応答を生成し得るか否かを知るために、この通知を要求することができる。この通知は、インバウンド・データ・イン及び請求データ・アウトＰＤＵを処理するとき、ＲＮＩＣからソフトウェアへの唯一の通知であり得る。上記の順序制御確認は、全てのデータ・アウトが首尾よく受信されて登録済みバッファに配置されたことを保証する。最後のデータ・アウトＰＤＵ（セットされた’Ｆ−ビット’を担持している）を失った場合はソフトウェアによりカバーされ得る（タイムアウト・メカニズム）。
【００７５】
データ・イン及び請求データ・アウトＰＤＵの処理を終えるためにＲＮＩＣにより実行され得る最後の動作は、保護ブロックの失効である（１１１７）。これは、’Ｆビット’がセットされているデータ・イン及び請求データ・アウトＰＤＵのために行われ得る。失効は、ＰＤＵヘッダから集められたＳＴａｇにより参照させられたＰＢに対して実行され得る。失効したＳＴａｇは、請求データ・アウトのためのＣＱＥを用いて、又はＳＣＳＩ書き込みコマンドを終わらせるＳＣＳＩ応答のヘッダ（ＩＴＴフィールド）で、ＳＣＳＩドライバに配信され得る。これは、ｉＳＣＳＩドライバが次のＳＣＳＩコマンドのために解放されたＳＴａｇを再使用することを可能にする。
【００７６】
ターゲットにより登録された領域の失効（１１１８）も同様に実行され得る。失効のための代わりのアプローチは、受信されたＳＣＳＩ応答においてＳＴａｇ（ＩＴＴ）により参照させられたＰＢの失効であり得る。
【００７７】
ここで図１２を参照すると、これは、本発明の実施態様による、ハードウェアでのインバウンドＲ２Ｔの処理と、データ・アウトＰＤＵの生成とを示す。
【００７８】
ＳＣＳＩ書き込みコマンドは、イニシエータがターゲットから複数のＲ２Ｔを受信するという結果をもたらし得る（１２０１）。各Ｒ２Ｔは、登録済みＳＣＳＩバッファ内の特定された記憶場所から特定された量のデータをフェッチし、このデータをデータ・アウトＰＤＵを用いてターゲットに送るようにイニシエータに要求することができる（１２０２）。Ｒ２Ｔは、ＳＣＳＩコマンドにおいてイニシエータにより提供されたＩＴＴを担持する（１２０３）。上記のように、ドライバがＳＣＳＩコマンドを生成したとき、登録済みＳＣＳＩバッファのＳＴａｇがＩＴＴの代わりにドライバにより使用され得る（１２０４）。
【００７９】
Ｒ２Ｔ  ＰＤＵはＢＨＳ：オペコード・フィールドを用いて識別され得る。ＲＮＩＣは、ＢＨＳ：Ｒ２ＴＳＮフィールドを用いて、Ｒ２Ｔ順序制御の確認を実行することができる（１２０５）。ＲＮＩＣはＰＢにおいてＥｘｐＤａｔａＳＮフィールドを保持する。単方向コマンドについてはイニシエータは入ってくるＲ２Ｔ又はデータ・インを見ることができるので、順序制御確認のために同じフィールドが使用され得る。インバウンドＲ２Ｔのためのシーケンス確認は、上で論じられたデータ・イン及びデータ・アウトのために使用されるシーケンス確認のプロセスと同一であり得る（１２０６）。
【００８０】
ＲＮＩＣは、インバウンドＲＤＭＡ読み出しリクエストを処理するためのものと同じメカニズムを用いてシーケンス確認を通過したＲ２Ｔを処理することができる（１２０７）。ＲＮＩＣは、ＲＮＩＣ送信論理により送られる必要のあるデータ・アウトを記述するＷＱＥを記入するために独立の読み出し応答作業待ち行列（ｒｅａｄＲｅｓｐｏｎｓｅ  ＷｏｒｋＱｕｅｕｅ）を使用することができる（１２０８）（ＲＤＭＡ読み出しリクエストの場合には、ＲＮＩＣはＲＤＭＡ読み出し応答を記述するＷＱＥを待ち行列に入れることができる）。送信論理は送信ＷＱと読み出し応答（ｒｅａｄＲｅｓｐｏｎｓｅ）ＷＱとの間を調停することができ、これらの各々からのＷＱＥを内部調停規則に従って処理することができる（１２０９）。
【００８１】
各々の受信されたＲ２Ｔは、単一のデータ・アウトＰＤＵを生じさせ得る（１２１０）。生成されたデータ・アウトＰＤＵは、ＢＨＳ：ＩＴＴ（ドライバはＳＣＳＩコマンド生成時にそこにＳＴａｇを配置した）により参照させられた登録済みＳＣＳＩバッファからのデータを担持することができる。ＢＨＳ：ＢｕｆｆｅｒＯｆｆｓｅｔ（ＢＨＳ：バッファオフセット）とＢＨＳ：ＤｅｓｉｒｅＤａｔａＴｒａｎｓｆｅｒＬｅｎｇｔｈ（ＢＨＳ：所望データ転送長さ）は、ＳＣＳＩバッファにおけるオフセットとデータ・トランザクションのサイズとを特定することができる。
【００８２】
Ｆ−ビットがセットされているＲ２Ｔ  ＰＤＵのためのデータ・アウトをＲＮＩＣが送信したとき、ＲＮＩＣは、遠隔側がそのデータ・アウト  ＰＤＵの受信成功を確認した後にＳＴａｇ（ＩＴＴ）により参照させられた保護ブロックを失効させることができる。このＳＣＳＩ書き込みコマンドのために使用されるＳＴａｇは、対応するＳＣＳＩ応答ＰＤＵが配信されるときにソフトウェアにより再使用され得る。
【００８３】
メモリ領域失効のための代わりのアプローチは、受信されたＳＣＳＩ応答においてＳＴａｇ（ＩＴＴ）により参照させられたＰＢの失効であり得る。
【００８４】
本発明についての記述は解説及び記述の目的で提示されており、網羅的であることや、発明を開示された形に限定することは意図されていない。多くの改変及び変形が当業者にとっては明白であろう。実施態様は、本発明の原理、実際的用途を最善に説明するために、また他の当業者が、意図した具体的用途に適するようにいろいろに改変された種々の実施態様について本発明を理解できるようにするために、選択され記載された。
【図面の簡単な説明】
【００８５】
【図１】ＳＣＳＩ書き込みトランザクション及びＳＣＳＩ読み出しトランザクションの略フローチャートである。
【図２】ｉＳＣＳＩプロトコルの略フローチャートであり、順序制御規則とＳＣＳＩコマンドとを示す。
【図３】本発明の実施態様による、分散型コンピュータ・システムの略ブロック図である。
【図４】本発明の実施態様による、ｉＳＣＳＩオフロード機能を実行するためのＲＤＭＡメカニズムの略ブロック図である。
【図５】ＲＤＭＡのリモート・メモリ・アクセス動作、読み出し及び書き込み、の略フローチャートである。
【図６】本発明の実施態様による、システム・メモリに局所的にアクセスすること及び遠く隔たってアクセスすることの両方を可能にし得る、ＲＤＭＡにおけるメモリ登録の略フローチャートである。
【図７】本発明の実施態様による、ＲＮＩＣをサポートするＲＤＭＡによるｉＳＣＳＩデータ移動動作のオフロードの略ブロック図である。
【図８】本発明の実施態様による、ＲＮＩＣをサポートするＲＤＭＡによるｉＳＣＳＩデータ移動動作のオフロードのフローチャートである。
【図９】本発明の実施態様による、ＲＤＭＡベースのｉＳＣＳＩオフロードを用いて実現されるソフトウェア構造の略ブロック図である。
【図１０】本発明の実施態様による、ハードウェア／ソフトウェア相互作用無しでのｉＳＣＳＩデータ移動ＰＤＵのＳＣＳＩバッファへの直接データ配置の略フローチャートである。
【図１１】本発明の実施態様による、ＲＮＩＣによるデータ・イン及び請求データ・アウトの取り扱いと、これらのＰＤＵにより担持されるｉＳＣＳＩペイロードの登録されたＳＣＳＩバッファへの直接データ配置の実行との略フローチャートを形成する。
【図１２】本発明の実施態様による、ＲＮＩＣによるデータ・イン及び請求データ・アウトの取り扱いと、これらのＰＤＵにより担持されるｉＳＣＳＩペイロードの登録されたＳＣＳＩバッファへの直接データ配置の実行との略フローチャートを形成する。
【図１３】本発明の実施態様による、ハードウェアでのインバウンドＲ２Ｔの処理と、データ・アウトＰＤＵの生成との略フローチャートである。
【図１】
2008529109.tif 000003
【図２】
2008529109.tif 000004
【図３】
2008529109.tif 000005
【図４】
2008529109.tif 000006
【図５】
2008529109.tif 000007
【図６】
2008529109.tif 000008
【図７】
2008529109.tif 000009
【図８】
2008529109.tif 000010
【図９】
2008529109.tif 000011
【図１０】
2008529109.tif 000012
【図１１】
2008529109.tif 000013
【図１２】
2008529109.tif 000014
【図１３】
2008529109.tif 000015
【国際調査報告】
2008529109.tif 000016
2008529109.tif 000017
2008529109.tif 000018