(57)【要約】共有属性を有する圧縮されたキューペアエントリを格納するように構成されたキューペアテーブルに同様の特性を有するキューペアを圧縮することにより、複数のキューペアを効率的に管理するようにホストチャネルアダプタが構成される。このようにして、キューペア属性データベース内に格納されたより数が少ない物理キューペアから、複数の仮想キューペアを作成できる。
2004534311.tif 000002
【特許請求の範囲】
【請求項１】
ホストチャネルアダプタにおける方法であって、
新しいキューペアを作成する要求を受信する処理と、
前記新しいキューペアの少なくとも１つの選択された属性と、複数のキューペアテーブルのそれぞれの共有属性との間の整合性を決定することにより、前記複数のキューペアテーブルの１つを特定する処理であって、前記各キューペアテーブルは、前記対応する共有属性を有するキューペアを表す圧縮されたキューペアエントリを有する処理と、
前記対応する共有属性とは異なる前記新しいキューペアの所定の属性を有する新しい圧縮されたキューペアエントリを、前記少なくとも１つの選択された属性と整合する前記対応する共有属性を有する前記１つの共有キューペアテーブルに格納する処理とを含む方法。
【請求項２】
前記少なくとも１つの選択された属性が、トランスポートサービスのタイプを指定し、前記決定は、前記指定されたトランスポートサービスタイプと、前記キューペアテーブルのそれぞれの共有属性として割り当てられたそれぞれのトランスポートサービスタイプとの間の整合性を決定することを含む、請求項１に記載の方法。
【請求項３】
各キューペアテーブルの前記共有属性が、前記対応するトランスポートサービスタイプと、対応するサービスレベルとを含み、前記決定が、前記指定されたトランスポートサービスタイプおよび前記トランスポートサービスタイプに対して新しいキューペアに割り当てられたサービスレベルおよび前記キューペアテーブルの各々に対して割り当てられた所定のサービスレベルとの両方に対する整合性の決定をさらに含む、請求項２に記載の方法。
【請求項４】
前記指定されたトランスポートサービスタイプが、信頼性のある接続、信頼性のあるデータグラム、信頼性のない接続、信頼性のないデータグラム、および生データグラムの１つを指定する、請求項３に記載の方法。
【請求項５】
前記新しいキューペアを割り当て仮想レーンに割り当てる処理をさらに含み、各キューペアテーブルの前記共有属性が、前記対応するトランスポートサービスタイプと、対応する所定の仮想レーンとを含み、前記決定が、前記指定されたトランスポートサービスタイプおよび前記トランスポートサービスタイプに対して新しいキューペアに割り当てられた前記仮想レーンおよび前記キューペアテーブルの各々の前記所定の仮想レーンとの両方に対する整合性の決定をさらに含む、請求項２に記載の方法。
【請求項６】
前記少なくとも１つの選択された属性が、割り当て仮想レーンを指定し、前記決定が、前記割り当て仮想レーンと、前記キューペアテーブルの前記それぞれの共有属性として割り当てられたそれぞれの所定の仮想レーンとの間の整合性の決定を含む、請求項１に記載の方法。
【請求項７】
ホストチャネルアダプタであって、
キューペアの所定の属性を格納するように構成され、それぞれの共有属性を有する複数のキューペアテーブルを含むキューペア属性データベースを有し、前記各キューペアテーブルが、前記対応する共有属性を有するキューペアを表す圧縮されたキューペアエントリを格納するように構成され、
新しい圧縮されたキューペアエントリとして、前記新しいキューペアの少なくとも１つの選択された属性と整合する前記対応する共有属性を有する前記キューペアテーブルの特定された１つに、新しいキューペアを格納するように構成されたキューペア属性管理モジュールであって、前記新しい圧縮されたキューペアエントリが、前記対応する共有属性とは異なる前記新しいキューペアの所定の属性を有する、ホストチャネルアダプタ。
【請求項８】
前記共有属性が、トランスポートサービスタイプとサービスレベルの少なくとも１つを含む、請求項７に記載の装置。
【請求項９】
前記共有属性が、トランスポートサービスタイプと仮想レーンの少なくとも１つを含む、請求項７に記載の装置。
【請求項１０】
前記新しいキューペアの前記少なくとも１つの選択された属性が、前記トランスポートサービスタイプとして、信頼性のある接続、信頼性のあるデータグラム、信頼性のない接続、信頼性のないデータグラム、および生データグラムの１つを指定する、請求項９に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ターゲットチャネルアダプタと通信し、InfiniBandTM（インフィニバンド）サーバシステムにおいてデータパケットの送信時に使用されるキューペアを管理するように構成されたホストチャネルアダプタに関する。
【背景技術】
【０００２】
重要な役割を担うネットワーキングアプリケーションにおいて、より堅牢で信頼性のあるサーバを提供できるように、サーバのアーキテクチャおよびデザイン面での改良点に、ネットワーキング技術は直面してきた。特に、クライアント要求に応答するサーバを使用するには、ネットワークが動作可能な状態を確実に維持できるように、サーバが極めて高い信頼性を備える必要があった。したがって、サーバの信頼性、アクセス性、およびサービス性に関する重要な問題が存在した。
【０００３】
さらに、マイクロプロセッサの速度と帯域幅が、接続された入出力（Ｉ／Ｏ）バスの容量を超えて、サーバのスループットをバス容量に制限してしまうという本質的な改良点に、サーバで使用されるプロセッサが直面してきた。したがって、アドレッシング、プロセッサクラスタリング、および高速Ｉ／Ｏの点でサーバの性能を向上させる試みとして、さまざまなサーバ標準が提案されてきた。
【０００４】
これらの提案されたさまざまなサーバ標準により、InfiniBandTM普及推進業界団体（InfiniBandTM  Trade Association)により採用されたInfiniBandTMアーキテクチャ仕様（リリース１．０）が開発された。InfiniBandTMアーキテクチャ仕様には、サーバシステム内での中央処理装置と、周辺装置と、スイッチとの間の高速ネットワーキング接続が規定されている。ここで言う「InfiniBandTMネットワーク」という用語は、サーバシステム内のネットワークを指す。InfiniBandTMアーキテクチャ仕様には、Ｉ／Ｏ動作とプロセッサ間通信（ＩＰＣ）との両方が規定されている。
【０００５】
InfiniBandTMアーキテクチャ仕様の特別な特徴の１つは、ＴＣＰ／ＩＰベースのプロトコルなどの既存のネットワーキングプロトコルに存在するトランスポート層サービスのハードウェアに、提案された実装を行うことである。トランスポート層サービスにハードウェアベースの実装を行うと、中央処理装置の処理要求が軽減（すなわち、「オフローディング」）され、ひいては、サーバシステムのオペレーティングシステムがオフローディングされるという利点が得られる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、ハードウェア実装の方法が任意であることから、ハードウェアデザインに実質的にコストがかかる結果を招くことがある。ホストチャネルアダプタ（ＨＣＡ）が、データ通信用にInfiniBandTMネットワークノードでコンシューマアプリケーションにより使用される複数のキューペア（ＱＰ）を管理する。残念ながら、実質的に多数のキューペアが発生し得るため、ＨＣＡは、多数のキューペアを管理するために、実質的に大量のリソースを拡張することが必要な場合がある。
【０００７】
ホストチャネルアダプタを効率的かつ経済的に実装可能な構成が望まれている。
【０００８】
また、ホストチャネルアダプタが、リソースを実質的に消費することなく、複数のキューペアを管理可能な構成が望まれている。
【課題を解決するための手段】
【０００９】
上記および他の要望は本発明により達成され、本発明において、共有属性を有する圧縮されたキューペアエントリを格納するように構成されたキューペアテーブルに、同様の特性を有するキューペアを圧縮することにより、ホストチャネルアダプタが複数のキューペアを効率的に管理するように構成される。
【００１０】
本発明の１つの態様は、ホストチャネルアダプタにおける方法を提供することである。この方法は、新しいキューペアを作成する要求を受信することを含む。また、この方法は、新しいキューペアの少なくとも１つの選択された属性と、複数のキューペアテーブルのそれぞれの共有属性との間の整合性を決定することにより、複数のキューペアテーブルの１つを特定し、各キューペアテーブルは、前記対応する共有属性を有するキューペアを表す圧縮されたキューペアエントリを有する。また、この方法は、対応する共有属性とは異なる新しいキューペアの所定の属性を有する新しい圧縮されたキューペアエントリを、少なくとも１つの選択された属性と整合する対応する共有属性を有する１つの共有キューペアテーブルに格納することを含む。
【００１１】
本発明の別の態様は、ホストチャネルアダプタを提供することである。ホストチャネルアダプタは、キューペア属性データベースと、キューペア属性管理モジュールとを含む。キューペア属性データベースは、キューペアの所定の属性を格納するように構成され、それぞれの共有属性を有する複数のキューペアテーブルを含み、各キューペアテーブルは、対応する共有属性を有するキューペアを表す圧縮されたキューペアエントリを格納するように構成される。キューペア属性管理モジュールは、新しい圧縮されたキューペアエントリとして、新しいキューペアの少なくとも１つの選択された属性と整合する対応する共有属性を有するキューペアテーブルの特定された１つに、新しいキューペアを格納するように構成され、新しい圧縮されたキューペアエントリは、対応する共有属性とは異なる新しいキューペアの所定の属性を有する。
【００１２】
本発明のさらなる利点および新規の特徴は、部分的に、以下の記載に示されるとともに、部分的に、以下を検証することにより当業者に明らかになり、または本発明を実施することにより理解を深めるであろう。本発明の利点は、添付の特許請求の範囲に詳細に指摘した手段およびその組み合わせにより実現され達成されてよい。
【００１３】
以下、同じ参照番号が付与されている要素が同様の要素を表す添付図面を参照する。
【発明を実施するための最良の形態】
【００１４】
図１は、本発明の一実施形態による、パケットを生成し送信するように構成されたホストチャネルアダプタ（ＨＣＡ）１２を示すブロック図である。InfiniBandTMアーキテクチャ仕様に準拠したＨＣＡ１２は、優先度（プライオリティ）に基づいた順序に従って送信パケットを生成することにより、ハードウェアリソースを効率的に利用できるように実装される。さらに、開示されたＨＣＡ１２は、トラフィックフローを乱すことなく組み込みプロセスを追加できるようにすることにより柔軟性を与える。このようにして、ＨＣＡ１２は、従来の実装技術と比較して、最小限の複雑性で経済的に実装可能である。
【００１５】
InfiniBandTMアーキテクチャ仕様に準拠したＨＣＡ１２を実装するための従来の構成が抱える１つの問題は、例えば、トランスポート層ヘッダを構築し、パケットシーケンス番号を生成し、サービスタイプ（例えば、信頼性のある接続、信頼性のあるデータグラム、信頼性のない接続、信頼性のないデータグラムなど）、および他のトランスポート層の動作を有効化する等、トランスポート層サービスが最初に実行されてしまうことである。トランスポート層の動作が完了すると、サービス層および仮想レーンマッピング、リンク層フロー制御パケットの生成、リンク層送信クレジットチェッキング、および他の動作を含むリンク層動作のリンク層サービスに、パケットが送信されることになる。この従来のタイプの実装では、InfiniBandTMアーキテクチャ仕様に規定されたネットワーク層に正確に従うという利点があるが、このような構成には、実質的に大規模のハードウェアが必要となる。特に、一般的に、トランスポート層は、より複雑な動作を伴うため、リンク層より高い処理能力を要する。したがって、トランスポート層をハードウェアで実装しても、ハードウェアシステムが実質的に複雑化しないことが望まれる。さらに、優先度（プライオリティ）が低い動作にトランスポート層のリソースを不必要に浪費することに関する問題がある。
【００１６】
開示される実施形態によれば、送信されるデータパケットの優先度（プライオリティ）を決定するために、要望に基づいて、リンク層の動作が分割（パーティショニング）される。特に、図１のＨＣＡ１２は、受信したＷＱＥの優先度（プライオリティ）を決定するように構成されたプレリンクモジュールと、ネットワーク上での送信用にデータパケットを準備するように構成されたポストリンクモジュールとを含む。プレリンクモジュール４０は、プレリンクモジュールにより決定された優先度（プライオリティ）に従ってＷＱＥを順序付けし、関連するキューペア属性に基づいてＷＱＥに対して適切なトランスポート層ヘッダを生成するように構成されたトランスポートサービスモジュール４２に、決定された順序でＷＱＥを出力する。言い換えれば、プレリンクモジュール４０により、トランスポートサービスモジュール４２が、優先度（プライオリティ）が低いＷＱＥにリソースを浪費したり、トランスポート層プロセス内で優先度（プライオリティ）が高いＷＱＥを妨害したりすることがなくなる。このようにして、優先度（プライオリティ）が高い方の接続が、ＨＣＡを介してトランスポート層で改良されたサービスを受ける。
【００１７】
例えば、特定用途向け集積回路として実装されたＨＣＡ１２は、プレリンクモジュール４０と、トランスポートサービスモジュール４２と、ポストリンクモジュール４４と、メディアアクセス制御（ＭＡＣ）モジュール４６とを含む。また、以下に説明するように、ＨＣＡ１２は、トランスポートデータを格納するように構成されたメモリ４８およびオーバーフローバッファへのローカルアクセスを有する。
【００１８】
プレリンクモジュール４０は、作業キュー要素ＦＩＦＯ５０と、仮想レーンＦＩＦＯ５２と、プレリンクプロセスモジュール５４と、サービス層−仮想レーン（ＳＬ−ＶＬ）マッピングテーブル５６と、仮想レーン（ＶＬ）調停テーブル５８と、仮想レーン（ＶＬ）調停モジュール６０とを含む。
【００１９】
ＨＣＡ１２は、作業キュー要素（ＷＱＥ）の形で中央処理装置（ＣＰＵ）からデータを受信し、データがＷＱＥ  ＦＩＦＯ５０に格納されるように構成される。各ＷＱＥは、宛先InfiniBandTMネットワークノード（すなわち、「レスポンダ」）、例えば、ターゲットにより実行される対応する所定の動作に対して、ＣＰＵ（すなわち、「リクエスタ」）により実行されるコンシューマアプリケーションから、対応する要求を指定する。リクエスタとレスポンダとの間の相互作用は、送信作業キューと受信作業キューとを含むキューペア（ＱＰ）を介して指定される。
【００２０】
ＷＱＥは、サービスレベル（ＳＬ）情報と、システムメモリ４８における実際のメッセージの場所に関するポインタとを含む。InfiniBandTMアーキテクチャ仕様は、InfiniBandTMネットワーク１０を行き交うパケットが１６の利用可能なサービスレベルの１つで動作できるようにするサービスレベル（ＳＬ）属性を定義する。このようにして、リクエスタは、ＷＱＥの選択された優先度（プライオリティ）に基づいて（例えば、サービスの品質、優先度（プライオリティ）などに基づいて）、利用可能なサービスレベルを選択できる。
【００２１】
プレリンクモジュール４０は、サービスレベル−仮想レーンマッピング（ＳＬ−ＶＬマッピング）と、仮想レーン調停の両方を提供する。特に、InfiniBandTMアーキテクチャ仕様で定義される仮想レーンにより、単一の物理リンク上で複数の論理フローを実行できるようになり、ある仮想レーンに対して、他の仮想レーンに影響を及ぼすことなく、リンクレベルのフロー制御が適用できる。プレリンクプロセスモジュール５４は、サービス層仮想層マッピングテーブル５６を管理および維持するように構成される。特に、プレリンクプロセスモジュール５４は、ＷＱＥ  ＦＩＦＯ５０からＷＱＥを取り出し、ＷＱＥ内で指定されたサービス層に基づいて、対応する仮想レーンを決定する。取り出されたＷＱＥに対して適切な仮想レーンを特定すると、プレリンクプロセスモジュール５４は、ＷＱＥを対応する仮想レーンＦＩＦＯ５２に転送する。
【００２２】
プレリンクモジュール４０は、プレリンクプロセスモジュール５４による割り当てに基づいて、ＷＱＥを格納するための仮想レーンＦＩＦＯ５２ａ、５２ｂ、５２ｃ、５２ｄ、５２ｅ、および５２ｆを含む。例えば、仮想レーンＦＩＦＯ５２ａは、組み込みプロセッサの動作、例えば、リンク層制御パケットおよびエラー状態の処理などと関連するＷＱＥを格納するために使用される。言い換えれば、所定の動作がハードウェアで実行されない場合、要求は、以下に記載する組み込みプロセッサ８０によりさらに処理するための組み込みプロセッサキュー７８に送信され、したがって、組み込みプロセッサ８０は、出力データトラフィックのフローにパケットを出力するための独自の割り当てキュー５２ａを有する。仮想レーンＦＩＦＯ５２ｂは、管理トラフィックに関連するＷＱＥを格納するために使用される。仮想レーンＦＩＦＯ５２ｃ、５２ｄ、５２ｅ、および５２ｆは、それぞれの割り当て仮想レーンに関連するＷＱＥを格納するために使用される。開示した実施形態で使用した割り当て仮想レーンの数は４つであるが、さらなる割り当て仮想レーンに対して、さらなる仮想レーンＦＩＦＯが追加されてよい。
【００２３】
ＶＬ調停モジュール６０は、レジスタを備えた状態マシンとして与えられ、仮想レーンの設定、管理、および切り離しを含む仮想レーンのサービスを提供するためにＶＬ調停テーブル５８を管理するように構成される。また、ＶＬ調停モジュール６０は、どの仮想レーンがサービスを提供するかを決定し、仮想レーンの決定された優先度（プライオリティ）に基づいて、仮想レーンＦＩＦＯ５２からＷＱＥを出力する。例えば、仮想レーンＦＩＦＯ５２ｂは、典型的に、管理（高プライオリティ）トラフィックを格納し、したがって、ＶＬ調停モジュール６０は、典型的に、仮想レーンＦＩＦＯ５２ｂを空にした後、他の仮想レーンＦＩＦＯ５２ｃ、５２ｄ、５２ｅ、または５２ｆのサービスを提供することになる。その後、ＶＬ調停モジュール６０は、ＶＬ調停テーブル５８内のそれぞれの重み付けテーブルに格納された重み付けされた優先度（プライオリティ）に基づいて、仮想レーンＦＩＦＯ５２ｃ、５２ｄ、５２ｅ、または５２ｆからＷＱＥを選択的に出力することになる。
【００２４】
このようにして、プレリンクモジュール４０は、ＷＱＥの決定された優先度（プライオリティ）に基づいて、例えば、割り当て仮想レーンに基づいて、または、ＷＱＥが組み込みプロセス用、管理トラフィック用、またはフロー制御トラフィック用であるかに応じて、所定の順序でＷＱＥを出力する。
【００２５】
トランスポートサービスモジュール４２は、キューペアの設定、管理、および切り離しを含むトランスポートサービスを管理するように構成される。特に、ＨＣＡ１２は、通信管理エージェントから受信したキューペアコマンドを格納するように構成されたキューペア設定ＦＩＦＯ６２を含む。通信管理エージェントは、トランスポート接続を設定および切り離す役割を果たし、すなわち、通信管理エージェントは、ＨＣＡ１２に対してトランスポート接続を確立するために、サブネットマネジャと通信する。さらに、接続の確立中、それぞれの端にある通信管理エージェントは、トランスポート接続を確立するために、従来のトランスポート層サービスとは異なり、バイパスサービス（パイバスサービスサブモジュール６８ａに関して以下に記載）を使用する。
【００２６】
トランスポートサービスモジュール４２は、キューペア属性データベース６４と、キューペア属性管理モジュール６６とを含む。キューペア属性管理モジュール６６は、キューペア設定ＦＩＦＯ６２にあるキューペアコマンドを処理し、受信したキューペアコマンドに基づいて、キューペア属性データベース６４を更新するように構成される。例えば、キューペア属性データベース６４は、ソースキューペア番号と、宛先キューペア番号と、あるいはソースエージェントおよび宛先エージェントに関する情報を格納する。したがって、キューペア属性データベース６４は、信頼性のある接続サービス、信頼性のあるデータグラムサービス、信頼性のない接続サービス、信頼性のないデータグラムサービス、および生データグラムサービスを含むさまざまなトランスポートサービスをサポートするのに必要なすべての情報を含むことになる。以下、図２および図３を参照しながら、キューペア属性をキューペア属性データベース６４内に格納することに関してさらに詳細に説明する。
【００２７】
キューペア属性管理モジュール６６は、例えば、ローカル通信エージェントとリモート通信エージェント間でメッセージが交換されるとパケットシーケンス番号が増えるとき、ローカル通信エージェントとリモート通信エージェントとの間の通信中にキューペア属性データベース６４を更新することによりトランスポートサービスを管理する。
【００２８】
また、キューペア属性管理モジュール６６は、プレリンクモジュール４０から受信した対応するＷＱＥに基づいて、対応するトランスポートサービスタイプを管理するようにそれぞれが構成されたサービスサブモジュール６８を含む。例えば、バイパスサービスサブモジュール６８ａは、接続確立中にバイパスサービスを管理するか、または、例えば、生データグラムサービスを使用するネットワークマネジャで管理動作に関連するキューペアを管理するように構成される。ＣＰＵ支援サービスサブモジュール６８ｂは、組み込み仮想レーンＦＩＦＯ５２ａを用いて組み込みプロセッサ動作に基づいてキューペアを管理するように構成され、したがって、ＣＰＵ支援サービスサブモジュール６８ｂにより、ローカルとリモートの組み込みプロセス間の調整が可能になり、さらに、組み込み仮想レーンＦＩＦＯ５２ａと組み合わせてＣＰＵ支援サービスサブモジュール６８ｂを実装することにより、リモート通信エージェントから再送要求が受信されれば、メッセージを送信し直すことができるようになる。信頼性のある接続（ＲＣ）サービスサブモジュール６８ｃおよび信頼性のない接続（ＵＣ）サービスサブモジュール６８ｄは、信頼性のある接続および信頼性のない接続トランスポートサービスのそれぞれに関連するキューペアを管理するように構成される。図示していないが、キューペア属性管理モジュール６６も、信頼性のあるデータグラムサービスと、信頼性のないデータグラムサービスと、生データグラムサービスとを管理するためのサブモジュール６８を含む。
【００２９】
このようにして、トランスポートサービスモジュール４２は、プレリンクモジュール４０からＷＱＥを受信すると、ＷＱＥを処理するのに適切なサブモジュール６８に供給する（例えば、ＲＣサービスサブモジュール６８ｃにより処理されるＲＣサービスのＷＱＥ）。ＷＱＥは、サービスレベル（ＳＬ）情報と、システムメモリ４８における実際のメッセージの場所に関するポインタとを含む。サブモジュール６８は、適切なＷＱＥの受信に応答して、ＷＱＥを解析し、ＷＱＥから、トランスポートデータ（すなわち、トランスポート層のペイロード）のメモリ位置を特定するポインタを取り出し、さらに、サブモジュール６８は、トランスポートデータのＤＭＡフェッチを実行し、キューペア属性データベース６４内の適切なキューペア属性を更新し、対応するトランスポートフォーマットでＷＱＥのトランスポート層ヘッダを作成して、外部メモリ４８に格納し、例えば、サブモジュール６８ａは、生トランスポートヘッダを生成してよいのに対して、モジュール６８ｃまたは６８ｄは、信頼性のある接続サービスまたは信頼性のない接続サービスに従って、それぞれトランスポートヘッダを生成してよい。
【００３０】
次に、サブモジュール６８は、トランスポート層ヘッダの位置を特定するヘッダポインタ（ｐ１）を作成する。次に、サブモジュール６８は、ポストリンクモジュール４４に、ペイロードポインタ（ｐ２）およびヘッダポイント（ｐ１）をパケット要求９０として送信することにより、ポストリンクモジュール４４が、供給されたポインタに基づいて送信用のトランスポートパケットをまとめることができるようになる。また、サブモジュール６８は、トランスポート層ヘッダおよびトランスポートデータを含むトランスポート層フレームを格納するシステムメモリの位置に関するフレームポインタを生成してよい。必要に応じて、サブモジュール６８は、トランスポート層フレーム（トランスポート層ヘッダおよびトランスポートデータを含む）をポストリンクモジュールに転送することもできる。また、ＣＰＵは、外部メモリへの書き込み中、データの始まりに空き空間を残してよく、それにより、モジュール６８内に作成された実際のヘッダ情報を対応する空のメモリ空間に格納することができる。ポストリンクモジュール４４へ転送されたポインタは、外部メモリにあるフレームの始まりを指示するこのポインタであり得る。
【００３１】
ポストリンクモジュール４４は、トランスポート層情報（例えば、トランスポート層フレーム、パケット要求など）の受信に応答して、システムメモリ４８からトランスポート層ヘッダおよびトランスポート層ペイロードをフェッチして、送信パケットを生成して、送信ＦＩＦＯ７０に格納する。特に、ポストリンクモジュール４４は、リンク層フィールド（例えば、ローカルおよびグローバルルーティングヘッダ、巡回冗長検査（ＣＲＣ）フィールドなど）を生成することにより送信パケットを生成し、送信パケットを送信ＦＩＦＯ７０に格納し、InfiniBandTMアーキテクチャ仕様に従ってリンク層制御動作を処理するように構成されたリンク層制御モジュール７２も含む。送信パケットが生成されると、ポインタは、以下に記載するフリーバッファマネジャ７６に転送される。
【００３２】
リンク層制御モジュール７２は、クレジットベースのフロー制御に従って送信パケットを出力する。特に、リンク層制御モジュール７２は、割り当て仮想レーン上で送信パケットを送信するために利用可能なクレジットをモニタする。特に、１つの仮想レーンごとにクレジットが送信され、この場合、入力仮想レーンバッファからのパケットに基づいて受信側がクレジットを発行し、送信側にクレジットが送信されることにより、送信側がフロー制御を管理できるようになる。このようにして、リンク層制御モジュール７２が、特定された仮想レーンのクレジット数が不十分であると決定すれば、リンク層制御モジュール７２は、十分な数のクレジットが受信されるまで、対応する送信パケットの送信を延期する。仮想レーンのクレジット数が十分であれば、リンク層制御モジュール７２は、送信するためのＭＡＣモジュール４６に送信パケットを転送する。
【００３３】
ＭＡＣモジュール４６は、InfiniBandTMアーキテクチャ仕様に従って、送信ＦＩＦＯ７０に格納された送信パケットを出力するように構成される。特に、ＭＡＣモジュール４６は、送信モジュール７４と、フリーバッファマネジャ７６と、組み込みプロセッサ入力キュー７８と、リンクフロー制御パケット構築モジュール８２を有する組み込みプロセッサ８０とを含む。送信モジュール７４は、メディアアクセス制御動作と、任意に、InfiniBandTMネットワーク１０に送信パケットを送信するための物理層トランシーバ動作とを実行するように構成される。
【００３４】
フリーバッファマネジャ７６は、送信パケットがレスポンダにより無事受信されると、外部メモリ４８から利用可能な空間を解放するように構成される。特に、送信パケットのメモリポインタは、送信パケットが生成されると、ポストリンクモジュール４４から送信され、レスポンダが、送信パケットが信頼性のある接続サービスにおいて再送される必要があるというメッセージを送信すれば、送信パケットは、ポストリンクモジュール４４により再生成され、レスポンダに再送信することができる。送信パケットが無事受信されると、フレームポインタは、別のエージェントが使用できるように解放されることができる。
【００３５】
組み込みプロセッサ入力キュー７８からの情報の受信に基づいて、組み込みプロセッサ８０によりフロー制御が処理され、特に、InfiniBandTMアーキテクチャ仕様に従ってフロー制御プロトコルは、クレジットベースのフロー制御を用いる。組み込みプロセッサ８０は、組み込みプロセッサ入力キュー７８内に格納されたメッセージに基づいて、リンクフロー制御パケット構築モジュール８２を使用して、リンクフロー制御パケットを生成する。組み込みプロセッサ８０は、リンクフロー制御パケットを外部メモリ４８に書き込み、次に、組み込みプロセッサ８０は、関連する動作と、組み込みプロセッサ仮想レーンＦＩＦＯ５２ａ内のフロー制御パケットの位置を特定するポインタとを含むＷＱＥを生成する。次に、リンクフロー制御パケットが出力されて、別の送信ノート用に利用可能なクレジットの数を特定することができる。
【００３６】
このようにして、組み込みプロセッサ８０は、フロー制御ヘッダを含むリンクフロー制御フレームを生成し、リンクフロー制御フレームを、ネットワークに送信するためにエラープロセッサ入力キュー７８に出力することができる。
【００３７】
図２は、本発明の一実施形態によるキューペア属性データベース６４をさらに詳細に示す図である。キューペア属性データベース６４は、複数のキューペアテーブル１００を含み、これは、圧縮されたキューペアエントリ１０２を格納するように構成されたキューペア属性管理モジュール６６により確立および維持される。特に、各キューペアテーブル１００は、共有属性ラベル１０４により示された、共有属性の対応する割り当て分類を有する。例えば、各キューペアテーブル１００は、同一のトランスポートサービスを有するキューペアを格納するためのキューペア属性管理モジュールにより構成されてよく、この場合、テーブル１００ａ、１００ｂ、１００ｃ、１００ｄ、および１００ｅは、信頼性のある接続（ＲＣ）、信頼性のあるデータグラム（ＲＤ）、信頼性のない接続（ＵＣ）、信頼性のないデータグラム（ＵＤ）、および生データグラム（ＲＷＤ）に対するキューペアをそれぞれ格納するためのキューペア属性管理モジュール６６により使用され、この例において、テーブル１００ａは、信頼性のある接続トランスポートサービスを提供するように割り当てられたキューペアエントリ１０２しか格納しないことになる。
【００３８】
また、各キューペアテーブル１００は、共有属性ラベル１０４により示された、関連する共有属性と同一のサービスレベル（ＳＬ）または同一の仮想レーン（ＶＬ）を有するキューペアを格納するように構成されてよい。さらに、各キューペアテーブル１００は、複数の共有値を格納するように構成されてよく、この場合、キューペアテーブル１００は、関連する共有値（例えば、信頼性のある接続および値ＳＬ１を有するサービスレベル、または信頼性のある接続および値ＶＬ１を有する仮想レーン）を与えるように割り当てられたキューペアエントリ１０２のみを格納するように構成されてよい。仮想レーンに基づいてキューペアおよび選択されたキューペアテーブルを格納すると、ＨＣＡの性能に影響を及ぼしかねないほど処理リソースを犠牲にして圧縮レベルがより高くなるが、サービスレベルに基づいて選択されたキューペアテーブルにキューペアを格納すると、圧縮レベルはより低く、仮想レーンベースの圧縮より処理リソースが少なくてすむため、ＨＣＡにより高いレベルの性能を与えることができるようになる。
【００３９】
さらに、仮想レーンに基づいてキューペアテーブル１００内に圧縮されたキューペアエントリを挿入すると、フロー制御に使用されるクレジットが仮想レーンベースであるため、トラフィックフローの優先度（プライオリティ）が維持される。
【００４０】
このようにして、図２に示す各キューペアテーブル１００は、同一のトランスポートサービス、同一のトランスポートサービスおよび／または同一のサービスレベル、または同一のトランスポートサービスおよび／または同一の仮想レーンを有するキューペアに対してキューペアエントリ１０２を格納するように構成され得る。したがって、キューペア属性データベース６４は、分割されたキューペアテーブル１００を使用してより少ない数の物理キューペアを使用して複数の仮想キューペアを格納することができる。キューペアエントリ１０２に必要な情報を選択されたキューペアテーブルに圧縮するさいの共有属性に関して、他の関連する属性が使用されてよいことを留意されたい。
【００４１】
図３は、本発明の一実施形態による、新しい圧縮キューペアエントリを作成し、キューペア属性データベース６４内に格納する方法を示す図である。この方法は、キューペア属性管理モジュール６６が、選択された共有属性、例えば、トランスポートサービスのタイプ、サービスレベル、仮想レーンなどに基づいて、キューペア属性データベース６４を分割して、複数のキューペアテーブル１００を確立するステップ１１０で始まる。
【００４２】
キューペアテーブル１００が確立された後、キューペア属性データベース６４は、新しい圧縮キューペアエントリの格納を開始することができる。特に、キューペア属性管理モジュール６６は、ステップ１１２において、例えば、ローカルまたはリモートの通信管理エージェントまたはサブネットマネジャから受信したキューペアコマンドに基づいて、新しいキューペアを作成する要求を受信する。
【００４３】
キューペア属性管理モジュール６６は、ステップ１１４において、受信したキューペアコマンドから新しいキューペア属性を獲得し、ステップ１１６において、選択された新しいキューペア属性を解析して、新しい圧縮キューペアエントリを格納するために使用されるキューペアテーブル１００を特定する。特に、キューペア属性管理モジュール６６は、ステップ１１８において、新しいキューペアからの選択された属性と、キューペアテーブル１００のそれぞれの共有属性（それぞれのラベル１０４で示す）とを比較して、整合性を決定する。
【００４４】
ステップ１２０において、整合性が検出されなければ、キューペア属性管理モジュール６６は、ステップ１２２において、共有属性として選択されたキューペア属性を有する新しいキューペアテーブル１００を作成する。しかしながら、ステップ１２０において、整合性が検出されれば、キューペア属性管理モジュール６６は、ステップ１２４において、整合する属性１０４を有する選択されたキューペアテーブル１００に、共有属性を除く、新しいキューペアの必要な属性を含む新しい圧縮キューペアエントリ１０２を格納する。したがって、新しいエントリ１０２は、共有属性１０４と異なる情報のみを格納するだけでよいため、データベース６４内のより少ない数の物理キューペアから複数の仮想キューペアを格納することができるようになる。
【００４５】
現在最も実用的で好適な実施形態であると見なされるものを用いて本発明を記載してきたが、本発明は、開示された実施形態に限定されるものではなく、添付の特許請求の範囲の趣旨および範囲内に含まれるさまざまな修正および同等の構成に及ぶことが意図されている。
【図面の簡単な説明】
【００４６】
【図１】本発明の一実施形態による、送信パケットを生成するように構成されたホストチャネルアダプタを示す図である。
【図２】本発明の一実施形態による、図１のキューペア属性データベースをさらに詳細に示す図である。
【図３】本発明の一実施形態による、新しいキューペアをキューペア属性データベースに格納する方法を示す図である。
【図１】
2004534311.tif 000003
【図２】
2004534311.tif 000004
【図３】
2004534311.tif 000005
【国際公開パンフレット】
2004534311.tif 000006
2004534311.tif 000007
2004534311.tif 000008
2004534311.tif 000009
2004534311.tif 000010
2004534311.tif 000011
2004534311.tif 000012
2004534311.tif 000013
2004534311.tif 000014
2004534311.tif 000015
2004534311.tif 000016
2004534311.tif 000017
2004534311.tif 000018
2004534311.tif 000019
2004534311.tif 000020
2004534311.tif 000021
2004534311.tif 000022
【国際調査報告】
2004534311.tif 000023
2004534311.tif 000024