(57)【要約】【課題】ローカル識別子を使ったエンド・ノード区分を提供すること。【解決手段】サブネット管理パケット（ＳＭＰ）を使ってポート（６４４）を探査するステップ（７０２）と、ポート（６４４）を探査した結果としてそのポート（６４４）に関連するスイッチ（６１２）を検出するステップ（７０４）と、そのスイッチ（６１２）のＳＭＰポート（６８６）にローカル識別子（６０６）を割り当てるステップ（７０６）と、そのスイッチ（６１２）の追加ポート（６７８）を検出するステップ（７０８）と、その追加ポート（６７８）に対応するエンド・ノード（６０６）のポート（６５０）にローカル識別子（６７０）を割り当てるステップ（７１０）とを含む、物理要素（６００）のためにエンド・ノード（６０６）を区分する方法。【選択図】図７
2004531175.tif 000002
【特許請求の範囲】
【請求項１】
サブネット管理パケット（ＳＭＰ）を使ってポート（６４４）を探査するステップ（７０２）と、
前記ポート（６４４）を探査した結果として前記ポート（６４４）に関連するスイッチ（６１２）を検出するステップ（７０４）と、
前記スイッチ（６１２）のＳＭＰポート（６８６）にローカル識別子（６９４）を割り当てるステップ（７０６）と、
前記スイッチ（６１２）の追加ポート（６７８）を検出するステップ（７０８）と、
前記追加ポート（６７８）に対応するエンド・ノード（６０６）のポート（６５０）にローカル識別子（６７０）を割り当てるステップ（７１０）と
を含む、物理要素（６００）のためにエンド・ノード（６０６）を区分する方法。
【請求項２】
サブネット管理パケット（ＳＭＰ）を使ってポート（６４４）を探査する手段（７０２）と、
前記ポート（６４４）を探査した結果として前記ポート（６４４）に関連するスイッチ（６１２）を検出する手段（７０４）と、
前記スイッチ（６１２）のＳＭＰポート（６８６）にローカル識別子（６９４）を割り当てる手段（７０６）と、
前記スイッチ（６１２）の追加ポート（６７８）を検出する手段（７０８）と、
前記追加ポート（６７８）に対応するエンド・ノード（６０６）のポート（６５０）にローカル識別子（６７０）を割り当てる手段（７１０）と
を含む、物理要素（６００）のためにエンド・ノード（６０６）を区分するシステム。
【請求項３】
コンピュータ・システム上で実行されたときに請求項１に記載の方法を実行する、コンピュータ可読記憶媒体上に記憶されたコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータ・システム間の通信に関する。
【背景技術】
【０００２】
システム・エリア・ネットワーク（ＳＡＮ）では、ハードウェアは、入出力装置（Ｉ／Ｏ）および一般のコンピュータ・ノード間のプロセス間通信（ＩＰＣ）に使用できるメッセージ受け渡し機構を提供する。消費側は、ＳＡＮチャネル・アダプタ（ＣＡ）上にある送受信作業待ち行列に送受信メッセージを通知することによってＳＡＮメッセージ受け渡しハードウェアにアクセスする。送受信作業待ち行列（ＷＱ）は、待ち行列対（ＱＰ）として消費側に割り当てられる。メッセージは、５つの異なる定義済みトランスポート・タイプ、すなわち高信頼接続（ＲＣ）、高信頼データグラム（ＲＤ）、低信頼接続（ＵＣ）、低信頼データグラム（ＵＤ）、および生データグラム（ＲａｗＤ）を介して送信することができる。さらに、同じままの経路指定ヘッダ・レイアウトを有するカスタム・パケットを様々な企業が定義できる１組の製造者定義可能命令コードもある。消費側は、ＳＡＮ送受信作業完了（ＷＣ）を介して完了待ち行列（ＣＱ）から定義済みメッセージの結果を取り出す。製造者定義可能命令は、定義済みパケット・タイプと同じ待ち行列構造を使用するか否かについては定義されない。パケット・タイプに関わらず、送信元チャネル・アダプタは、送信メッセージをセグメント化しそれらを宛先に送信する処理を行う。宛先チャネル・アダプタは、受信メッセージを再組立てしそれらを宛先の消費側によって指定されたメモリ空間に配置する処理を行う。ホスト・チャネル・アダプタ（ＨＣＡ）とターゲット・チャネル・アダプタ（ＴＣＡ）の２つのチャネル・アダプタ・タイプがある。ホスト・チャネル・アダプタは、汎用コンピュータ・ノードがＳＡＮファブリックにアクセスする際に使用する。消費側は、ＳＡＮのverb（動詞）を使ってホスト・チャネル・アダプタ機能にアクセスする。verbを解釈しチャネル・アダプタに直接アクセスするソフトウェアは、チャネル・インターフェイス（ＣＩ）と呼ばれる。
【０００３】
インフィニバンド（InfiniBand）（インフィニバンド・トレード・アソシエーション（InfiniBandTrade Association）の商標）コンポーネントには、初期設定時にローカル識別子（ＬＩＤ）が割り当てられる。このＬＩＤを使ってサブネット内のコンポーネントをアドレス指定する。すべてのインフィニバンド・パケットは、そのパケットのサブネット内の送信元アドレスおよび宛先アドレスを定義する送信元ＬＩＤおよび宛先ＬＩＤを含む。また、インフィニバンド・コンポーネントには、少なくとも１つの区分キー（Ｐ＿Ｋｅｙ）も割り当てられる。このＰ＿Ｋｅｙを使ってインフィニバンド・ファブリックを１つまたは複数のグループに区分する。次いで、各インフィニバンド・コンポーネントを１つまたは複数のグループに入れる。他のすべての通信が可能である。エンド・ノードは区分にグループ化され、アクセスはＰ＿Ｋｅｙを介して制御される。インフィニバンド区分機構は、本質的に、ホストがアダプタおよび共用アダプタを制御された形で提供できるようにするものである。
【０００４】
しかし、インフィニバンドは、単一のチャネル・アダプタ・ポートを共用する複数のオペレーティング・システム・インスタンスが同時にインフィニバンド・サブネットへの制御されたアクセスを得られるように１つのエンド・ノードを区分する機構は提供しない。従来技術のシステムは、一般に、それらのオペレーティング・システム・インスタンスを識別するために余分な１つまたは複数のパケット・ヘッダを付加する。１つまたは複数のパケット・ヘッダを付加することによって、データ伝送はより複雑になる。したがって、このエンド・ノード区分機構がないと、論理区分または物理区分による処理およびメモリ・リソースの区分をサポートするより上位のサーバでは問題が生じる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
したがって、単一の物理コンポーネントを、各単一コンポーネントが独自のアクセス制御レベルを有する複数のコンポーネントであるように見せることができる機構が求められている。これらのコンポーネントは、ホスト・チャネル・アダプタ（ＨＣＡ）、ターゲット・チャネル・アダプタ（ＴＣＡ）、またはスイッチとすることができる。
【課題を解決するための手段】
【０００６】
本発明は、請求項１で特許請求される方法、請求項２で特許請求される対応するシステムおよび請求項３で特許請求されるコンピュータ・プログラムを提供する。
【０００７】
本発明の新規の特徴と思われる特徴は添付の特許請求の範囲に記載される。しかし、本発明自体、ならびに本発明の好ましい使用形態、さらなる目的および利点については、例示的実施形態について以下の詳細な説明を、添付の図面と併せて読めば最も良く理解されるであろう。
【発明を実施するための最良の形態】
【０００８】
ネットワーク・コンピュータ・システムは、エンド・ノード、スイッチ、ルータ、およびこれらのコンポーネントを相互接続するリンクを備える。エンド・ノードは、メッセージを複数のパケットにセグメント化しリンクを介してそれらのパケットを伝送する。スイッチおよびルータは、エンド・ノードを相互接続し、該当するエンド・ノードにパケットを経路指定する。エンド・ノードは、宛先においてパケットを再組立てしてメッセージにする。
【０００９】
次に、各図、具体的には、図１を参照すると、本発明の好ましい一実施形態によるネットワーク・コンピュータ・システムの図が示してある。図１に示すネットワーク・コンピュータ・システムは、システム・エリア・ネットワーク（ＳＡＮ）１００の形を取っているが、これは単に例示のためのものにすぎない。以下に述べる本発明の各実施形態は、他の多くのタイプおよび構成のコンピュータ・システム上でも実装することができる。
【００１０】
ＳＡＮ１００は、ネットワーク・コンピュータ・システム内のノードを相互接続する、帯域幅が広く待ち時間の少ないネットワークである。ノードは、ネットワークの１つまたは複数のリンクに接続され、そのネットワーク内でメッセージの発信元または宛先あるいはその両方となる任意のコンポーネントである。図示の例では、ＳＡＮ１００は、ホスト・プロセッサ・ノード１０２、ホスト・プロセッサ・ノード１０４、ＲＡＩＤ（redundant array independent disk）サブシステム・ノード１０６、入出力シャーシ・ノード１０８、およびＰＣＩ入出力シャーシ・ノード１８４の形でノードを含んでいる。図１に示す各ノードは例示のためのものにすぎず、ＳＡＮ１００は、何台のどんなタイプの独立プロセッサ・ノード、入出力アダプタ・ノード、入出力装置ノードでも接続することができる。これらのノードのいずれもエンドノードとして機能することができる。エンドノードとは、本明細書では、ＳＡＮ１００においてメッセージまたはフレームを発信し、あるいは最終的にそれらを消費する装置であると定義される。
【００１１】
本明細書では、メッセージとは、アプリケーションで定義されるデータ交換の単位であり、協働するプロセス間の基本通信単位である。パケットは、ネットワーク・プロトコル・ヘッダまたはトレーラあるいはその両方によってカプセル化された一データ単位である。ヘッダは、一般に、ＳＡＮを介してフレームを送信するための制御および経路指定情報を提供する。トレーラは、一般に、パケットの内容が破壊された状態で送達されないようにするための制御および巡回冗長検査（ＣＲＣ）データを含む。
【００１２】
ＳＡＮ１００は、ネットワーク・コンピュータ・システム内での入出力とプロセッサ間通信の両方をサポートする通信および管理インフラストラクチャを含む。図１に示すＳＡＮ１００は、多くの装置が、セキュアなリモート管理環境において、高帯域幅と少ない待ち時間で、同時にデータを伝送することができるようにする交換通信ファブリック（fabric）を含む。各エンドノードは、ＳＡＮファブリックによって複数のポートを介してやりとりし複数の経路を利用することができる。図１に示すＳＡＮを介した複数のポートおよび経路を耐障害機能および高帯域幅データ伝送のために用いることができる。
【００１３】
図１のＳＡＮ１００は、スイッチ１１２、スイッチ１１４、スイッチ１４６、およびルータ１１７を含む。スイッチとは、複数のリンクを相互に接続し、小ヘッダ宛先ローカル識別子（ＤＬＩＤ）フィールドを使って、サブネット内のあるリンクから別のリンクまでパケットを経路指定できるようにする装置である。ルータとは、複数のサブネットを相互に接続し、大ヘッダ宛先グローバル一意識別子（ＤＧＵＩＤ）を使って、第１のサブネット内のあるリンクから第２のサブネット内の別のリンクまでフレームを経路指定することができる装置である。
【００１４】
一実施形態では、リンクは、エンドノード、スイッチ、ルータなど任意の２つのネットワーク・ファブリック要素間の全二重チャネルである。適当なリンクの例には、それだけに限らないが、銅ケーブル、光ケーブル、バックプレーン上のプリント回路銅トレースおよびプリント回路板が含まれる。
【００１５】
高信頼性サービス・タイプでは、ホスト・プロセッサ・エンドノードや入出力アダプタ・エンドノードなどのエンドノードは、要求パケットを生成し、応答パケットを返す。スイッチおよびルータは、送信元から宛先へとパケットを受け渡す。ネットワーク中の各段階で更新される可変ＣＲＣトレーラ・フィールドを除き、各スイッチはそれらのパケットを変更せずに次々と受け渡す。ルータは、可変ＣＲＣトレーラ・フィールドを更新し、パケットを経路指定するときにヘッダ内の他のフィールドを変更する。
【００１６】
図１に示すＳＡＮ１００では、ホスト・プロセッサ・ノード１０２、ホスト・プロセッサ・ノード１０４、ＲＡＩＤ入出力サブシステム１０６、入出力シャーシ１０８、およびＰＣＩ入出力シャーシ１８４は、ＳＡＮ１００にインターフェイスする少なくとも１つのチャネル・アダプタ（ＣＡ）を含む。一実施形態では、各チャネル・アダプタは、ＳＡＮファブリック上を伝送されるパケットを送信または受信するのに十分な詳細さでそのチャネル・アダプタ・インターフェイスを実装するエンドポイントである。ホスト・プロセッサ・ノード１０２は、ホスト・チャネル・アダプタ１１８およびホスト・チャネル・アダプタ１２０の形のチャネル・アダプタを含む。ホスト・プロセッサ・ノード１０４は、ホスト・チャネル・アダプタ１２２およびホスト・チャネル・アダプタ１２４を含む。また、ホスト・プロセッサ・ノード１０２は、バス・システム１３４によって相互接続された中央処理装置１２６〜１３０およびメモリ１３２も含む。ホスト・プロセッサ・ノード１０４も、同様に、バス・システム１４４によって相互接続された中央処理装置１３６〜１４０およびメモリ１４２を含む。ホスト・チャネル・アダプタ１１８はスイッチ１１２への接続を提供し、ホスト・チャネル・アダプタ１２０、１２２はスイッチ１１２、１１４への接続を提供し、ホスト・チャネル・アダプタ１２４はスイッチ１１４への接続を提供する。
【００１７】
一実施形態では、ホスト・チャネル・アダプタをハードウェアとして実装する。この実装形態では、このホスト・チャネル・アダプタ・ハードウェアは、大部分の中央処理装置と入出力アダプタの通信オーバヘッドを軽減する。また、このホスト・チャネル・アダプタのハードウェアとしての実装形態は、従来の通信プロトコルに伴うオーバヘッドなしの、交換ネットワークを介した複数同時通信も可能にする。一実施形態では、図１のホスト・チャネル・アダプタおよびＳＡＮ１００は、ネットワーク・コンピュータ・システムの入出力およびプロセス間通信（ＩＰＣ）消費側に、オペレーティング・システムのカーネル・プロセスが関与しないゼロ・プロセッサ／コピー・データ転送（zero processor-copy data transfer）を提供し、ハードウェアを用いて信頼性の高い耐障害通信を提供する。図１に示すように、ルータ１１７は、他のホストまたは他のルータに至る広域ネットワーク（ＷＡＮ）接続またはローカル・エリア・ネットワーク（ＬＡＮ）接続あるいはその両方に結合されている。
【００１８】
図１の入出力シャーシ１０８は、スイッチ１４６および複数の入出力モジュール１４８〜１５６を含む。これらの例では、入出力モジュールはアダプタ・カードの形を取る。図１に示すアダプタ・カードの例には、入出力モジュール１４８のＳＣＳＩアダプタ・カード、入出力モジュール１５２のファイバ・チャネル・ハブおよびファイバ・チャネル・アービトレーテッド・ループ（fiber channel-arbitrated loop）（ＦＣ−ＡＬ）装置用アダプタ・カード、入出力モジュール１５０のイーサネット（Ｒ）・アダプタ・カード、入出力モジュール１５４のグラフィック・アダプタ・カード、および入出力モジュール１５６のビデオ・アダプタ・カードが含まれる。公知のどんなタイプのアダプタ・カードも実装することができる。また、入出力アダプタは、アダプタ・カードをＳＡＮファブリックに結合する入出力アダプタ・バックプレーンのスイッチも含む。これらのモジュールは、ターゲット・チャネル・アダプタ１５８〜１６６を含む。
【００１９】
この例では、図１のＲＡＩＤサブシステム・ノード１０６は、プロセッサ１６８、メモリ１７０、ターゲット・チャネル・アダプタ（ＴＣＡ）１７２、および複数の冗長なまたはストライプされた、あるいはその両方のストレージ・ディスク・ユニット１７４を含む。ターゲット・チャネル・アダプタ１７２は、完全に機能できるホスト・チャネル・アダプタとすることができる。
【００２０】
ＰＣＩ入出力シャーシ・ノード１８４は、ＴＣＡ１８６と、ＰＣＩバス１８８を介してＴＣＡ１８６に接続された複数のＰＣＩ入出力アダプタ（ＩＯＡ）１９０〜１９２を含む。これらの例では、ＩＯＡはアダプタ・カードの形を取る。図１に示すアダプタ・カードの例には、モデム・アダプタ・カード１９０およびシリアル・アダプタ・カード１９２が含まれる。ＴＣＡ１８６は、ＳＡＮファブリックを介してＨＣＡ１１８などのＨＣＡに伝送するために、ＰＣＩ  ＩＯＡ１９０〜１９２から受け取ったトランザクション要求または応答をデータ・パケットにカプセル化する。ＨＣＡ１１８は、受け取ったデータ・パケットがＰＣＩ通信を含むかどうか判定し、含む場合は、そのデータ・パケットを復号化して、ＤＭＡ書込みまたは読取り操作などのカプセル化されたＰＣＩトランザクション要求または応答を取り出す。ＨＣＡ１１８はそれをメモリ１３２など該当するユニットに送る。そのＰＣＩトランザクションがＤＭＡ読取り要求であった場合、ＨＣＡはメモリ１３２などのメモリからその応答を受け取り、そのＰＣＩ応答をデータ・パケットにカプセル化し、ＳＡＮファブリックを介して要求元ＴＣＡ１８６にそのデータ・パケットを戻す。次いでＴＣＡはデータ・パケットからＰＣＩトランザクションを復号化し、ＰＣＩバス１８８を介してＰＣＩ  ＩＯＡ１９０または１９２にそのＰＣＩトランザクションを送る。
【００２１】
同様に、例えばＣＰＵ１２６などのプロセッサからＰＣＩ  ＩＯＡ１９０や１９２などのＰＣＩ  ＩＯＡへの記憶要求およびロード要求は、ＳＡＮファブリックを介して該当するＰＣＩ  ＩＯＡ１９０または１９２に対応するＴＣＡ１８６に伝送するために、ＨＣＡによってデータ・パケットにカプセル化される。ＴＣＡ１８６は、そのデータ・パケットを復号化してＰＣＩ通信を取り出し、ＰＣＩバス１８８を介してＰＣＩ  ＩＯＡ１９０または１９２にそのＰＣＩ記憶またはロード要求およびデータを送る。その要求がロード要求であった場合、ＴＣＡ１８６は、ＰＣＩ  ＩＯＡ１９０または１９２から応答を受け取り、それをデータ・パケットにカプセル化し、ＳＡＮファブリックを介してＨＣＡ１１８に送る。ＨＣＡ１１８は、そのデータ・パケットを復号化してＰＣＩデータおよびコマンドを取り出し、そのＰＣＩデータおよびコマンドを要求元ＣＰＵ１２６に送る。したがって、ＰＣＩアダプタをＳＡＮファブリックに接続することができる。
【００２２】
ＳＡＮ１００は、入出力用データ通信およびプロセッサ間通信を処理する。ＳＡＮ１００は、入出力に必要とされる高帯域幅および拡張可能性をサポートすると共に、プロセッサ間通信に必要とされる極めて少ない待ち時間および小さいＣＰＵオーバヘッドもサポートする。ユーザ・クライアントは、オペレーティング・システム・カーネル・プロセスを回避し、ホスト・チャネル・アダプタなどのネットワーク通信ハードウェアに直接アクセスすることができ、それによって効率の良いメッセージ受け渡しプロトコルが可能になる。ＳＡＮ１００は、最新のコンピュータ・モデルに適し、新しい形の入出力およびコンピュータ・クラスタ通信の構成単位である。さらに、図１のＳＡＮ１００は、入出力アダプタ・ノードが、入出力アダプタ・ノード間で、あるいはネットワーク・コンピュータ・システム中のプロセッサ・ノードのいずれかまたはすべてとやりとりできるようにする。入出力アダプタをＳＡＮ１００に接続すると、得られる入出力アダプタ・ノードは、ＳＡＮ１００中のどのホスト・プロセッサ・ノードとも実質的に同じ通信機能を備える。
【００２３】
図１は、本発明の一例であってアーキテクチャ上の限定を意図するものではなく、例示のためのものにすぎない。以下で説明する本発明の各実施形態は、多くのタイプおよび構成のコンピュータ・システム上で実装することができる。例えば、本発明を実装するコンピュータ・システムは、１つのプロセッサおよび限られた数の入出力アダプタを備える小型サーバから、例えば何百ものプロセッサおよび何千もの入出力アダプタを備える１台または複数の大規模並列スーパーコンピュータ・システムにまで及ぶ。さらに、本発明は、例えばインターネットまたはイントラネットによって接続されるリモート・コンピュータ・システムのインフラストラクチャ内で実装することもできる。
【００２４】
図２に、本発明の好ましい一実施形態によるホスト・プロセッサ・ノードの機能構成図を示す。ホスト・プロセッサ・ノード２００は、図１のホスト・プロセッサ・ノード１０２などのホスト・プロセッサ・ノードの一例である。
【００２５】
この例では、図２に示すホスト・プロセッサ・ノード２００は、１組の消費側２０２〜２０８、およびホスト・プロセッサ・ノード２００上で実行されるプロセスである１つまたは複数のＰＣＩ／ＰＣＩ−Ｘデバイス・ドライバを含む。また、ホスト・プロセッサ・ノード２００は、チャネル・アダプタ２１０およびチャネル・アダプタ２１２も含む。チャネル・アダプタ２１０はポート２１４、２１６を含み、チャネル・アダプタ２１２はポート２１８、２２０を含む。各ポートはリンクに接続される。これらのポートは図１のＳＡＮ１００など、１つまたは複数のＳＡＮサブネットに接続することができる。これらの例では、チャネル・アダプタはホスト・チャネル・アダプタの形を取る。
【００２６】
消費側２０２〜２０８は、verbインターフェイス２２２とメッセージおよびデータ・サービス２２４とを介してＳＡＮにメッセージを送る。verbインターフェイスとは、本質的には、ホスト・チャネル・アダプタの機能の抽象記述である。オペレーティング・システムは、そのプログラミング・インターフェイスを介してこのverb機能の一部または全部を表示させることができる。基本的に、このインターフェイスはホストの挙動を定義する。さらに、ホスト・プロセッサ・ノード２００はメッセージおよびデータ・サービス２２４を含む。これはverbレイヤより上位レベルのインターフェイスであり、チャネル・アダプタ２１０およびチャネル・アダプタ２１２を介して受け取ったメッセージおよびデータを処理するために使用される。メッセージおよびデータ・サービス２２４は消費側２０２〜２０８がメッセージおよび他のデータを処理するためのインターフェイスを提供する。さらに、チャネル・アダプタ２１０およびチャネル・アダプタ２１２は、ＳＡＮに接続されたＰＣＩ  ＩＯＡ用のプロセッサからのロード命令および記憶命令を受け取ることができる。これらは、図２に示すように、verbレイヤを迂回する。
【００２７】
図３に、本発明の好ましい一実施形態によるホスト・チャネル・アダプタの図を示す。図３に示すホスト・チャネル・アダプタ３００は、１組の待ち行列対（ＱＰ）３０２〜３１０を含み、それらはホスト・チャネル・アダプタ・ポート３１２〜３１６にメッセージを転送するために使用される一手段である。ホスト・チャネル・アダプタ・ポート３１２〜３１６へのデータのバッファリングは、仮想レーン（ＶＬ）３１８〜３３４を通じて行われ、各ＶＬは独自の流れ制御を備える。サブネット・マネージャ（図示せず）は、各物理ポートのローカル・アドレス、すなわちそのポートのＬＩＤを用いてチャネル・アダプタを構成する。サブネット・マネージャ・エージェント（ＳＭＡ）３３６は、チャネル・アダプタを構成するためにサブネット・マネージャとやりとりする。メモリ変換および保護（ＭＴＰ）３３８は、仮想アドレスを物理アドレスに変換しアクセス権を検査する機構である。直接メモリ・アクセス（ＤＭＡ）３４０は、待ち行列対３０２〜３１０に対して、（やはり３４０を付した）メモリを使って直接メモリ・アクセス操作を提供する。
【００２８】
図３に示すホスト・チャネル・アダプタ３００などの単一のチャネル・アダプタは、何千もの待ち行列対をサポートすることができる。それとは異なり、１つの入出力アダプタ内の１つのターゲット・チャネル・アダプタは、一般に、もっと少数の待ち行列対をサポートする。
【００２９】
各待ち行列対は、１つの送信作業待ち行列（ＳＷＱ）と１つの受信作業待ち行列からなる。送信作業待ち行列は、チャネルおよびメモリ意味メッセージの送信に使用される。受信作業待ち行列は、チャネル意味メッセージを受信する。消費側は、作業待ち行列に作業要求（ＷＲ）を出すために、本明細書でverbと呼ぶ、オペレーティング・システム特有のプログラミング・インターフェイスを呼び出す。
【００３０】
図４に、本発明の好ましい一実施形態による作業要求の処理を例示する図を示す。図４では、受信作業待ち行列４００、送信作業待ち行列４０２、および完了待ち行列４０４は、消費側４０６からの消費側４０６向けの要求を処理するために存在する。消費側４０６からのこれらの要求は、結局は、ハードウェア４０８に送られる。この例では、消費側４０６は、作業要求４１０および４１２を生成し、作業完了４１４を受け取る。図４に示すように、作業待ち行列に出された作業要求を、作業待ち行列要素（ＷＱＥ）と呼ぶ。
【００３１】
送信作業待ち行列４０２は、ＳＡＮファブリック上を伝送されるデータを記述する作業待ち行列要素（ＷＱＥ）４２２〜４２８を含む。受信作業待ち行列４００は、ＳＡＮファブリックからの着信チャネル意味データをどこに入れるべきかを記述する作業待ち行列要素（ＷＱＥ）４１６〜４２０を含む。作業待ち行列要素は、ホスト・チャネル・アダプタ内でハードウェア４０８によって処理される。
【００３２】
verbはまた、完了待ち行列４０４から完了した作業を取り出す機構も提供する。図４に示すように、完了待ち行列４０４は、完了待ち行列要素（ＣＱＥ）４３０〜４３６を含む。完了待ち行列要素は、以前完了した作業待ち行列要素に関する情報を含む。完了待ち行列４０４を使用して複数の待ち行列対に対する単一の完了通知点を作成する。完了待ち行列要素は、完了待ち行列上のデータ構造である。この要素は完了した作業待ち行列要素を記述する。この完了待ち行列要素は、完了した待ち行列対および特定の作業待ち行列要素を判定するのに十分な情報を含む。完了待ち行列コンテキストは、個々の完了待ち行列を指すポインタ、長さ、および個々の完了待ち行列を管理するのに必要な他の情報を含む情報ブロックである。
【００３３】
図４に示す送信作業待ち行列４０２でサポートされる作業要求の例は以下のとおりである。送信作業要求は、リモート・ノードの受信作業待ち行列要素によって参照されるデータ・セグメントに１組のローカル・データ・セグメントをプッシュするチャネル意味操作（semantic operation）である。例えば、作業待ち行列要素４２８は、データ・セグメント４（４３８）、データ・セグメント５（４４０）、データ・セグメント６（４４２）への参照を含む。この送信作業要求のデータ・セグメントのそれぞれは、ほぼ連続したメモリ領域を含む。これらのローカル・データ・セグメントの参照に使用されるこれらの仮想アドレスは、そのローカル待ち行列対を作成したプロセスのアドレス・コンテキスト（addresscontext）にある。
【００３４】
リモート直接メモリ・アクセス（ＲＤＭＡ）読取り作業要求は、リモート・ノード上のほぼ連続したメモリ空間を読み取るメモリ意味操作を提供する。メモリ空間は、メモリ領域の一部分でも、メモリ・ウィンドウの一部分でもよい。メモリ領域は、以前に登録された、仮想アドレスおよび長さで定義される１組のほぼ連続したメモリ・アドレスを参照する。メモリ・ウィンドウは、以前に登録された領域にバインドされた１組のほぼ連続したメモリ・アドレスを参照する。
【００３５】
ＲＤＭＡ読取り作業要求は、リモート・エンドノード上のほぼ連続したメモリ空間を読み取り、そのデータをほぼ連続したローカル・メモリ空間に書き込む。送信作業要求と同様に、ＲＤＭＡ読取り作業待ち行列要素がローカル・データ・セグメントを参照するために使用する仮想アドレスは、そのローカル待ち行列対を作成したプロセスのアドレス・コンテキストにある。例えば、受信作業待ち行列４００中の作業待ち行列要素４１６は、データ・セグメント１  ４４４、データ・セグメント２  ４４６、およびデータ・セグメント４４８を参照する。それらのリモート仮想アドレスは、ＲＤＭＡ読取り作業待ち行列要素が対象とするリモート待ち行列対を所有するプロセスのアドレス・コンテキストにある。
【００３６】
ＲＤＭＡ書込み作業待ち行列要素は、リモート・ノード上のほぼ連続したメモリ空間に書き込むメモリ意味操作を提供する。ＲＤＭＡ書込み作業待ち行列要素は、ローカルのほぼ連続したメモリ空間の分布リスト（scatter list）、およびそのローカル・メモリ空間が書き込まれる先のリモート・メモリ空間の仮想アドレスを含む。
【００３７】
ＲＤＭＡ  ＦｅｔｃｈＯｐ作業待ち行列要素は、リモート・ノード上でアトミック操作を実施するメモリ意味操作である。ＲＤＭＡ  ＦｅｔｃｈＯｐ作業待ち行列要素は、ＲＤＭＡ読取り、変更、およびＲＤＭＡ書込み操作の組合せである。ＲＤＭＡ  ＦｅｔｃｈＯｐ作業待ち行列要素は、比較し一致すれば交換する（Compare and Swap if equal）など、いくつかの読取り／変更／書込み操作をサポートすることができる。
【００３８】
リモート・アクセス・キー（Ｒ＿Ｋｅｙ）バインド（アンバインド）作業待ち行列要素は、メモリ・ウィンドウをメモリ領域に関連付ける（あるメモリ領域から分離する）ことによってそのメモリ・ウィンドウを変更する（破壊する）ようホスト・チャネル・アダプタ・ハードウェアに命じるコマンドを提供する。このＲ＿Ｋｅｙは、各ＲＤＭＡアクセスの一部であり、そのリモート・プロセスがバッファへのアクセスを許可されていることを検証するために使用される。
【００３９】
一実施形態では、図４に示す受信作業待ち行列４００は、受信作業待ち行列要素と呼ばれる一種類の作業待ち行列要素だけしかサポートしない。この受信作業待ち行列要素は、着信送信メッセージが書き込まれる先のローカル・メモリ空間を記述するチャネル意味操作を提供する。この受信作業待ち行列要素は、いくつかのほぼ連続したメモリ空間を記述する分布リストを含む。着信送信メッセージはこれらのメモリ空間に書き込まれる。仮想アドレスは、そのローカル待ち行列対を作成したプロセスのアドレス・コンテキストにある。
【００４０】
プロセッサ間通信では、ユーザ・モードのソフトウェア・プロセスは、メモリ内のバッファがある場所から直接、待ち行列対を介してデータを転送する。一実施形態では、この待ち行列対を介する転送は、オペレーティング・システムを回避し、ホスト命令サイクルをほとんど消費しない。待ち行列対は、オペレーティング・システムのカーネルが関与しないゼロ・プロセッサ／コピー・データ転送を可能にする。このゼロ・プロセッサ／コピー・データ転送により、帯域幅が広く待ち時間の少ない通信を効率良くサポートすることができる。
【００４１】
待ち行列対を作成するとき、その待ち行列対は選択されたタイプのトランスポート・サービスを提供するように設定される。一実施形態では、本発明を実装するネットワーク・コンピュータ・システムは４種類のトランスポート・サービスをサポートする。
【００４２】
高信頼接続サービスおよび低信頼接続サービスは、ローカル待ち行列対を唯一のリモート待ち行列対に関連付ける。接続サービスは、ＳＡＮファブリックを介してやりとりするプロセスごとに１つの待ち行列対を作成することを必要とする。したがって、Ｎ個のホスト・プロセッサ・ノードのそれぞれがＰ個のプロセスを含み、各ノード上のＰ個のプロセスのすべてがそれ以外のすべてのノード上のすべてのプロセスとやりとりしたいと望む場合、各ホスト・プロセッサ・ノードはＰ２×（Ｎ−１）個の待ち行列対を必要とする。さらに、１つのプロセスは、１つの待ち行列対を同じホスト・チャネル・アダプタ上の別の待ち行列対に接続することができる。
【００４３】
高信頼データグラム・サービスは、ローカル・エンド−エンド（ＥＥ）コンテキストを唯一のリモート・エンド−エンド・コンテキストに関連付ける。高信頼データグラム・サービスは、ある待ち行列のクライアント・プロセスが他のどのリモート・ノード上の他のどの待ち行列ともやりとりできるようにする。受信作業待ち行列では、高信頼データグラム・サービスは、他のどのリモート・ノード上のどの送信作業待ち行列からの着信メッセージも許可する。高信頼データグラム・サービスはコネクションレス型であるので、拡張可能性を大きく向上させる。したがって、一定数の待ち行列対を持つエンドノードは、高信頼接続トランスポート・サービスを用いるよりも高信頼データグラム・サービスを用いた方がはるかに多くのプロセスおよびエンドノードとやりとりすることができる。例えば、Ｎ個のホスト・プロセッサ・ノードのそれぞれがＰ個のプロセスを含み、各ノード上のＰ個のプロセスのすべてがそれ以外のすべてのノード上のすべてのプロセスとやりとりしたいと望む場合、高信頼接続サービスは各ノード上にＰ２×（Ｎ−１）個の待ち行列対を必要とする。それに比べて、コネクションレス型高信頼データグラム・サービスは、全く同一の通信では、各ノード上にＰ個の待ち行列対＋（Ｎ−１）個のＥＥコンテキストしか必要としない。
【００４４】
低信頼データグラム・サービスはコネクションレス型である。低信頼データグラム・サービスは、管理アプリケーションが新しいスイッチ、ルータ、およびエンドノードを発見し、それらを所与のネットワーク・コンピュータ・システムに組み込むために用いる。低信頼データグラム・サービスは、高信頼接続サービスおよび高信頼データグラム・サービスの信頼性保証を提供しない。したがって、低信頼データグラム・サービスは、各エンドノードにより少ない状態情報を維持した状態で動作する。
【００４５】
図５は、本発明の好ましい一実施形態によるデータ・パケットの図である。メッセージ・データ５００は、図４に示したデータ・セグメントと同様のデータ・セグメント１（５０２）、データ・セグメント２（５０４）、データ・セグメント３（５０６）を含む。この例では、これらのデータ・セグメントは、データ・パケット５１２内のパケット・ペイロード５１０に入れられるパケット５０８を形成する。また、データ・パケット５１２はエラー検出に使用されるＣＲＣ５１４を含む。さらに、データ・パケット５１２内には経路指定ヘッダ５１６およびトランスポート・ヘッダ５１８も存在する。経路指定ヘッダ５１６は、データ・パケット５１２の送信元ポートおよび宛先ポートを識別するために使用される。この例のトランスポート・ヘッダ５１８は、データ・パケット５１２のための宛先待ち行列対を指定する。また、トランスポート・ヘッダ５１８は、命令コード、パケット順序番号、データ・パケット５１２の区分などの情報も提供する。命令コードは、そのパケットがあるメッセージの最初、最後、中間、あるいは唯一のパケットであるか識別する。また、命令コードは、その命令が送信ＲＤＭＡ書込みか、読取りか、それともアトミックであるか指定する。パケット順序番号は、通信が確立されたときに開始され、待ち行列対が新規パケットを作成するたびに増分される。１つのエンドノードの各ポートは、おそらくオーバーラップする１組または複数組の、区分と呼ばれるメンバとして構成することができる。
【００４６】
図６に、本発明の一実施形態による仮想チャネル・アダプタおよび仮想スイッチを備える物理コンポーネントの図を示す。図６では、１つまたは複数のＨＣＡを１つまたは複数のサブネットに相互接続する１つまたは複数のスイッチを含む多機能チップの内部構造が示されている。図６の物理要素６００は、仮想ホスト・プロセッサ・ノード６０２および仮想ホスト・プロセッサ・ノード６０４を含む。仮想ホスト・プロセッサ・ノード６０２は、仮想ホスト・チャネル・アダプタ（ＨＣＡ）６０６を含む。仮想ホスト・プロセッサ・ノード６０４は、ホスト・チャネル・アダプタ（ＨＣＡ）６０８を含む。仮想ＨＣＡ６０６および６０８は、物理ＨＣＡと同じ属性を持つことができる。例えば、仮想ＨＣＡ６０６および６０８は、この例では、必須待ち行列対番号０および１を持つ。
【００４７】
図６の物理要素６００は、スイッチ６１２を含むＳＡＮファブリック６１０を含む。図６のＳＡＮファブリック６１０は、ホスト・チャネル・アダプタ６０６をスイッチ６１２に結合するリンクと、スイッチ６１２をＴＣＡ６４２に結合するリンクを含む。また、図６のネットワーク・コンピュータ・システム６００は、スイッチ６１４を含むＳＡＮファブリック６１１も含む。図６のＳＡＮファブリック６１１は、ホスト・チャネル・アダプタ６０８をスイッチ６１４に結合するリンクと、スイッチ６１４をＴＣＡ６４４に結合するリンクを含む。仮想ＨＣＡ６０６はポート６５０および６５２を含む。ポート６５０はスイッチ６１２のポート６７８を介してサブネット６４６に接続される。ポート６５２はスイッチ６１４のポート６８２を介してサブネット６４８に接続される。サブネット６４６に関連するサブネット・マネージャは、ＨＣＡ６０６のポート６５０にＬＩＤ６７０を割り当て、スイッチ６１２のポート６８６にＬＩＤ６９４を割り当てている。ポート６８６はスイッチ６１２のインフィニバンド・サブネット管理ポート０である。ＨＣＡ６０６のポート６５２にＬＩＤ６７２を割り当て、スイッチ６１４のポート６８８にＬＩＤ６９６を割り当てているサブネット６４８に、サブネット・マネージャが関連付けられる。ポート６８８はスイッチ６１４のインフィニバンド・サブネット管理ポート０である。仮想ＨＣＡ６０８はポート６５４および６５６を含む。ポート６５４はスイッチ６１２のポート６８０を介してサブネット６４６に接続される。ポート６５６はスイッチ６１４のポート６８４を介してサブネット６４８に接続される。サブネット６４６に関連付けられたサブネット・マネージャは、ＨＣＡ６０８のポート６５４にＬＩＤ６７４を割り当てている。サブネット６４８に関連付けられたサブネットは、ＨＣＡ６０８のポート６５６にＬＩＤ６７６を割り当てている。
【００４８】
例示のトランザクションでは、ホスト・プロセッサ・ノード６０２はクライアント・プロセスＡ６１６を含む。ホスト・プロセッサ・ノード６０４はクライアント・プロセスＢ６１８を含む。クライアント・プロセスＡ６１６は待ち行列対６２０、完了待ち行列６３２および変換保護テーブル（ＴＰＴ）６３４を介してホスト・チャネル・アダプタ・ハードウェア６０６と対話する。クライアント・プロセスＢ６１８は、待ち行列対６２２、完了待ち行列６３６およびＴＰＴ６３８を介してホスト・チャネル・アダプタ６０８と対話する。待ち行列対６２０、待ち行列対６２２、完了待ち行列６３２、完了待ち行列６３６、ＴＰＴ６３４およびＴＰＴ６３８はデータ構造である。待ち行列対６２０は１つの送信作業待ち行列６２４と１つの受信作業待ち行列６２６を含む。待ち行列対６２２は１つの送信作業待ち行列６２８と１つの受信作業待ち行列６３０を含む。完了待ち行列６３２および６３６は単一の完了待ち行列からなる。ＴＰＴ６３４および６３８は、メモリ・アドレス変換保護テーブルからなるメモリで構成される。
【００４９】
ＴＣＡやＨＣＡなどのチャネル・アダプタは、物理要素６００の一部として実行されるソフトウェア、ファームウェアまたはハードウェア状態マシンにリソース構成／割振りインターフェイスを提供することができる。このリソース構成／割振りインターフェイスにより、ソフトウェア、ファームウェアまたはハードウェア状態マシンは、例えば図６のＨＣＡ６０６や６０８などの仮想ＨＣＡ用の操作ポリシを設定することができる。この操作ポリシは、
１）多機能チップ内で使用されるスイッチの数、
２）一スイッチ当たりのポートの数、
３）各スイッチに割り振られるスイッチ・リソースの数、
４）多機能チップ内で使用されるＨＣＡの数、
５）一ＨＣＡ当たりのポートの数、および
６）各ＨＣＡに割り振られるＨＣＡリソースの数
を含むことができる。
【００５０】
ソフトウェア、ファームウェアまたはハードウェア状態マシンは、物理要素６００の実際の構成を選択することができる。物理要素は、例えば、ＨＣＡとすることができる。この選択は静的に行っても動的に行ってもよい。静的選択では、ファブリックの再初期設定またはノードの再ブートあるいはその両方によるＨＣＡまたはスイッチ構成の変更を必要とすることがある。動的選択では、ファブリックを再初期設定せずにＨＣＡまたはスイッチ構成を変更できるが、ノードのブートを必要とすることがある。
【００５１】
静的選択機構の下では、物理要素６００は、ファブリック初期設定時に物理要素６００の一部として含むことができる仮想スイッチ、ＨＣＡ、およびホスト・プロセッサ・ノードの正確な数を報告しなければならないことがある。静的選択機構は、物理要素上で使用可能なポートがあるかどうか情報を提供することができるが、ポート状態に関する情報は、その情報を求める要求がなければ提供しない。静的選択機構を使用すると、各仮想ＨＣＡを別個の物理ＨＣＡに見せることができる。図６では、サブネット６４６に関連するサブネット・マネージャは、標準インフィニバンド・サブネット管理パケット（ＳＭＰ）を用いてポート６４４を探査した結果としてスイッチ６１２を検出する。スイッチ６１２は、サブネット６４６に関連するサブネット・マネージャには物理スイッチに見え、そのＳＭＰポート６８６にはＬＩＤ６９４が割り当てられる。このサブネット６４６に関連するサブネット・マネージャは、インフィニバンドＳＭＰを介してスイッチ６１２に２つの追加ポート、ポート６７８および６８０があることを識別する。サブネット６４６に関連するサブネット・マネージャは、インフィニバンドＳＭＰを使ってスイッチ６１２のポート６７８を探査しＨＣＡ６０６のポート６５０を探し出した結果としてＨＣＡ６０６を検出する。サブネット６４６に関連するサブネット・マネージャには、ＨＣＡ６０６は物理ＨＣＡに見える。サブネット６４６に関連するサブネット・マネージャは、インフィニバンドＳＭＰを使ってＨＣＡ６０６のポート６５０にＬＩＤ６７０を割り当てる。同様に、サブネット６４６に関連するサブネット・マネージャは、インフィニバンドＳＭＰを使った結果としてＨＣＡ６０８を検出する。サブネット６４６に関連するサブネット・マネージャには、ＨＣＡ６０８は物理ＨＣＡに見える。サブネット６４６に関連するサブネット・マネージャは、インフィニバンドＳＭＰを使ってポート６５４にＬＩＤ６７４を割り当てる。
【００５２】
動的選択機構を使用すると、物理要素６００は、構成可能な最大数の仮想スイッチおよびそれらに対応するトポロジを報告することができるが、ファブリック初期設定時に物理要素６００の一部として含まれ得るＨＣＡおよびホスト・プロセッサ・ノードの正確な数を報告することはできない。動的選択機構は、物理要素上に使用可能なポートがあるかどうかの情報を提供することができ、以前使用不能であったポートが動作可能になったときにその旨の情報を提供することができる。同様に、動的選択機構は、ＨＣＡおよびそれらに関連するホスト・ノードが動作解除されたときに、それらの解除を報告することができる。動的選択機構を使用すると、各仮想ＨＣＡを別個の物理ＨＣＡに見せることができる。
【００５３】
図６では、ＨＣＡ６０６が後刻に動作可能になった場合、以下のプロセスを実施することができる。サブネット６４６に関連するサブネット・マネージャは、インフィニバンド管理パケット（ＳＭＰ）を用いてポート６４４を探査した結果としてスイッチ６１２を検出する。スイッチ６１２は、サブネット６４６に関連するサブネット・マネージャには物理スイッチに見え、そのＳＭＰポート６８６にはＬＩＤ６９４が割り当てられる。サブネット６４６に関連するサブネット・マネージャは、標準インフィニバンドＳＭＰを介してスイッチ６１２に２つの追加ポート、ポート６７８および６８０があることを識別する。サブネット６４６に関連するサブネット・マネージャは、インフィニバンドＳＭＰを使ってスイッチ６１２のポート６７８を探査し、ＨＣＡ６０６のポート６５０を探し出した結果としてＨＣＡ６０６を検出する。ＨＣＡ６０６は、サブネット６４６に関連するサブネット・マネージャには物理ＨＣＡに見える。サブネット６４６に関連するサブネット・マネージャは、インフィニバンドＳＭＰを使ってＨＣＡのポート６５０にＬＩＤ６７０を割り当てる。後刻、サブネット６４６に関連するサブネット・マネージャは、サブネット６４６に関連するサブネット・マネージャによるスイッチ６１２のポート６８０を探査するためのＳＭＰスイープを実施し、ＨＣＡ６０８のポート６５４を探し出した結果としてＨＣＡ６０８を検出することができる。
【００５４】
あるいは、サブネット６４６に関連するサブネット・マネージャは、状態変化を示すスイッチ６１２からのトラップの結果としてＨＣＡ６０８を検出することもできる。そうすると、サブネット６４６に関連するサブネット・マネージャは、インフィニバンドＳＭＰを使ってスイッチ６１２のポート６８０を探査し、ＨＣＡ６０８のポート６５４を探し出すことになる。ＨＣＡ６０８は、サブネット６４６に関連するサブネット・マネージャには物理ＨＣＡに見える。サブネット６４６に関連するサブネット・マネージャは、インフィニバンドＳＭＰを使ってＨＣＡ６０８のポート６５４にＬＩＤ６７４を割り当てる。
【００５５】
前述のように、本発明は物理要素のためのエンド・ノード区分の方法およびシステムを提供する。物理要素の構成の選択は、静的に行っても動的に行ってもよい。静的選択機構を用いると、サブネット・マネージャは、例えばスイッチやＨＣＡなどの物理要素を探査してその物理要素が検出されたかどうか判定する。その物理要素が検出された場合、その物理要素のＳＭＰポートにＬＩＤを割り当てる。その物理要素の追加ポートが検出された場合、それらの追加ポートにＬＩＤを割り当てる。
【００５６】
動的選択機構を用いると、ＨＣＡおよびそのＨＣＡに関連するホスト・ノードが動作可能になったと報告される。さらに、動的選択機構は、ＨＣＡおよびそのＨＣＡに関連するホスト・ノードを動作解除したときに、それらの解除を報告する。ＨＣＡが動作可能になると、サブネット・マネージャはそのＨＣＡに関連するポートにＬＩＤを割り当てる。
【００５７】
図７は、本発明の好ましい一実施形態による、物理要素の構成のための静的選択システムの動作を示す例示的流れ図である。この例では、サブネット・マネージャがインフィニバンド・サブネット管理パケットを用いてポートを探査することによって処理が開始する（ステップ７０２）。サブネット・マネージャによるインフィニバンド・サブネット管理パケットを用いたポートの探査に応答してスイッチを検出したか否か判定する（ステップ７０４）。スイッチを検出しなかった場合（ステップ７０４：ＮＯ）、処理を打ち切る。スイッチを検出した場合（ステップ７０４：ＹＥＳ）、そのスイッチのＳＭＰポートにＬＩＤを割り当てる（ステップ７０６）。
【００５８】
次いで、サブネット・マネージャがそのスイッチの追加ポートを検出したか否か判定する（ステップ７０８）。サブネット・マネージャがそのスイッチの追加ポートを検出した場合（ステップ７０８：ＹＥＳ）、その追加ポートにＬＩＤを割り当て（ステップ７１０）、ステップ７０８に戻り、そこでサブネット・マネージャがそのスイッチの追加ポートを検出したか否か判定する。サブネット・マネージャがそのスイッチの追加ポートを検出しなかった場合（ステップ７０８：ＮＯ）、ファブリックを再初期設定すべきか否か判定する（ステップ７１２）。ファブリックを再初期設定すべきでない場合（ステップ７１２：ＮＯ）、ノード再ブートを実施する（ステップ７１６）。次いで、仮想スイッチ、ＨＣＡおよびホスト・プロセッサ・ノードの正確な数をサブネット・マネージャに報告し（ステップ７２０）、その後、処理を打ち切る。ファブリックを再初期設定すべきである場合（ステップ７１２：ＹＥＳ）、ファブリックの再初期設定を実施する（ステップ７１４）。次いで、ノード再ブートを実施すべきか否か判定する（ステップ７１８）。ノード再ブートを実施すべきである場合（ステップ７１８：ＹＥＳ）、ノード再ブートを実施し（ステップ７１６）、仮想スイッチ、ＨＣＡおよびホスト・プロセッサ・ノードの正確な数を報告し（ステップ７２０）、その後、処理を打ち切る。ノード再ブートを実施すべきでない場合（ステップ７１８：ＮＯ）、仮想スイッチ、ＨＣＡおよびホスト・プロセッサ・ノードの正確な数を報告し（ステップ７２０）、その後、処理を打ち切る。
【００５９】
図８は、本発明の好ましい一実施形態による、ホスト・チャネル・アダプタおよび関連するノードが動作可能になったこと、あるいは動作解除されていることの報告を示す例示的流れ図である。この例では、ＨＣＡおよびそのＨＣＡに関連するホスト・ノードが動作可能であるか否かを判定することによって処理が開始する（ステップ８０２）。ＨＣＡおよびそのＨＣＡに関連するホスト・ノードが動作可能でない場合（ステップ８０２：ＮＯ）、処理を打ち切る。ＨＣＡおよびＨＣＡに関連するホスト・ノードが動作可能である場合（ステップ８０２：ＹＥＳ）、そのＨＣＡおよび関連するノードが動作可能になったとサブネット・マネージャに報告する（ステップ８０４）。次いで、ＨＣＡおよびそのＨＣＡに関連するホスト・ノードが動作解除されたか否か判定する（ステップ８０６）。ＨＣＡおよびそのＨＣＡに関連するホスト・ノードが動作解除されていない場合（ステップ８０６：ＮＯ）、処理を打ち切る。ＨＣＡおよびそのＨＣＡに関連するホスト・ノードが動作解除されている場合（ステップ８０６：ＹＥＳ）、そのＨＣＡおよびＨＣＡに関連するノードが動作解除されていると報告し（ステップ８０８）、その後処理を打ち切る。
【００６０】
図９は本発明の好ましい一実施形態による、物理要素の構成のための動的選択システムでの動作を示す例示的流れ図である。この例では、ＨＣＡが電源オン状態で動作可能になったか否か判定する（ステップ９０２）ことによって処理が開始する。ＨＣＡが電源オン状態で動作可能にならなかった場合（ステップ９０２：ＮＯ）、ＨＣＡが電源オン状態後に動作可能になったか否か判定する（ステップ９０４）。ＨＣＡが電源オン状態後に動作可能にならなかった場合（ステップ９０４：ＮＯ）、処理を打ち切る。ＨＣＡが電源オン状態後に動作可能になった場合（ステップ９０４：ＹＥＳ）、ステップ９０６に進み、そこでサブネット・マネージャがインフィニバンド・サブネット管理パケットを用いてポートを探査する。
【００６１】
ステップ９０２に戻ると、ＨＣＡが電源オン状態で動作可能になった場合（ステップ９０２：ＹＥＳ）、サブネット・マネージャがインフィニバンド・サブネット管理パケットを用いてポートを探査する（ステップ９０６）。スイッチを検出したか否か判定する（ステップ９０８）。スイッチが検出されなかった場合（ステップ９０８：ＮＯ）、処理を打ち切る。スイッチを検出した場合（ステップ９０８：ＹＥＳ）、そのスイッチのＳＭＰポートにＬＩＤを関連付ける（ステップ９１０）。次いで、サブネット・マネージャが、ＳＭＰスイープを使ってそのスイッチの追加ポートを検出したか否か判定する（ステップ９１２）。サブネット・マネージャがＳＭＰスイープを使ってそのスイッチの追加ポートを検出した場合（ステップ９１２：ＹＥＳ）、その追加ポートにＬＩＤを割り当て、ステップ９１４に進み、そこで、サブネット・マネージャが状態変化を示すスイッチからのトラップを使ってそのスイッチの追加ポートを検出したか否か判定する。
【００６２】
サブネット・マネージャがＳＭＰスイープを使ってそのスイッチの追加ポートを検出しなかった場合（ステップ９１２：ＮＯ）、そのサブネット・マネージャが状態変化を示すスイッチからのトラップを使ってそのスイッチの追加ポートを検出したか否か判定する（ステップ９１４）。サブネット・マネージャが状態変化を示すスイッチからのトラップを使ってそのスイッチの追加ポートを検出した場合（ステップ９１４：ＹＥＳ）、その追加ポートにＬＩＤを割り当て（ステップ９１６）、ステップ９１２に戻り、そこでサブネット・マネージャがＳＭＰスイープを使ってスイッチの追加ポートを検出したか否か判定する。
【００６３】
サブネット・マネージャが状態変化を示すスイッチからのトラップを使ってそのスイッチの追加ポートを検出しなかった場合（ステップ９１４：ＮＯ）、ファブリック再初期設定を実施すべきか否か判定する（ステップ９１８）。ファブリック再初期設定を実施すべきである場合（ステップ９１８：ＹＥＳ）、ファブリック初期設定を実施し、ステップ９２０に進み、そこでノード再ブートを実施する。ファブリック初期設定を実施すべきでない場合（ステップ９１８：ＮＯ）、ノード再ブートを実施する（ステップ９２０）。ＨＣＡおよびホスト・プロセッサ・ノードが実行可能になったと報告し（ステップ９２２）、その後、処理を打ち切る。
【００６４】
したがって、本発明は、単一の物理コンポーネントを、各単一コンポーネントが独自のアクセス制御レベルを有する複数のコンポーネントに見せることができる機構を提供する。それらのコンポーネントは、ホスト・チャネル・アダプタ（ＨＣＡ）、ターゲット・チャネル・アダプタ（ＴＣＡ）、またはスイッチとすることができる。それらのホスト・チャネル・アダプタおよびスイッチの作成に使用するリソースは、共通プールからの、ソフトウェア、ファームウェアおよび状態マシンの静的または動的選択によって得ることができる。これらのリソースの割り振りは様々な機構によって実施することができる。例えば、単純な１／Ｎ機構を使ってすべての仮想ＨＣＡにリソースを割り当てることができる。あるいは、加重平均機構を使って様々な能力を備える仮想ＨＣＡを作成することもできる。それらのリソースは、それだけに限らないが、すべてのＨＣＡおよびＱＰ選択可能修飾子で構成することができる。例えば、これらのＨＣＡおよびＱＰ選択可能修飾子は、複数のＱＰ、複数のＣＱ、ＴＰＴサイズ、Ｐ＿Ｋｅｙテーブル・サイズ、複数の未処理の読取りＲＤＭＡなどとすることができる。
【００６５】
以上、本発明を、完全に機能するデータ処理システムの状況で説明してきたが、当分野の技術者には当然のことながら、本発明の各プロセスは、コンピュータ可読命令媒体の形および様々な形での配布が可能であること、およびその配布を実行するために実際に使用される信号搬送媒体の個々のタイプに関わらず本発明を等しく適用できることに留意されたい。コンピュータ可読媒体の例には、フロッピー（Ｒ）・ディスク、ハード・ディスク・ドライブ、ＲＡＭ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭなどの記録可能型媒体、ディジタルおよびアナログ通信リンク、無線周波数や光波伝送などを使った有線または無線通信リンクなどの伝送型媒体が含まれる。これらのコンピュータ可読媒体は、個々のデータ処理システムにおいて実際に使用する際に復号化される符号化フォーマットの形を取ることができる。
【図面の簡単な説明】
【００６６】
【図１】本発明の好ましい一実施形態によるネットワーク・コンピュータ・システムを示す図である。
【図２】本発明の好ましい一実施形態によるホスト・プロセッサ・ノードの機能構成図である。
【図３】本発明の好ましい一実施形態によるホスト・チャネル・アダプタを示す図である。
【図４】本発明の好ましい一実施形態による作業要求の処理を示す図である。
【図５】本発明の好ましい一実施形態によるデータ・パケットを示す図である。
【図６】本発明の一実施形態による、仮想チャネル・アダプタおよび仮想スイッチを備える物理コンポーネントを示す図である。
【図７】本発明の好ましい一実施形態による、物理要素の構成のための静的選択システムでの処理を示す例示的流れ図である。
【図８】本発明の好ましい一実施形態による、ホスト・チャネル・アダプタおよび関連するノードが動作可能になったこと、または動作解除されていることの報告を示す、例示的流れ図である。
【図９】本発明の好ましい一実施形態による、物理要素の構成のための動的選択システムでの処理を示す流れ図である。
【図１】
2004531175.tif 000003
【図２】
2004531175.tif 000004
【図３】
2004531175.tif 000005
【図４】
2004531175.tif 000006
【図５】
2004531175.tif 000007
【図６】
2004531175.tif 000008
【図７】
2004531175.tif 000009
【図８】
2004531175.tif 000010
【図９】
2004531175.tif 000011
【国際公開パンフレット】
2004531175.tif 000012
2004531175.tif 000013
2004531175.tif 000014
2004531175.tif 000015
2004531175.tif 000016
2004531175.tif 000017
2004531175.tif 000018
2004531175.tif 000019
2004531175.tif 000020
2004531175.tif 000021
2004531175.tif 000022
2004531175.tif 000023
2004531175.tif 000024
2004531175.tif 000025
2004531175.tif 000026
2004531175.tif 000027
2004531175.tif 000028
2004531175.tif 000029
2004531175.tif 000030
2004531175.tif 000031
2004531175.tif 000032
2004531175.tif 000033
2004531175.tif 000034
2004531175.tif 000035
2004531175.tif 000036
2004531175.tif 000037
2004531175.tif 000038
2004531175.tif 000039
【国際調査報告】
2004531175.tif 000040
2004531175.tif 000041