(57)【要約】【課題】改良された相互接続技術を提供する。【解決手段】  データパケットを伝送するための相互接続装置（１４，２０，３０）は、複数のポート（２６）、ハブ（２４）、アービタ（２２）および出力バッファ（７２）を備える。ハブは複数のポートを接続する。アービタは、ハブに接続され、ハブとポート間のデータパケットの伝送を制御する。出力バッファは、少なくとも１つのポート内にあり、複数の供給線によってハブに接続される。出力バッファは、ハブから、複数のデータパケットを並列に受け取ることができる。【選択図】図４
2006087093.tif 000002
【特許請求の範囲】
【請求項１】
データパケットを伝送するための相互接続装置（１４、２０、３０）であって、
複数のポート（２６）と、
前記複数のポートを接続するハブ（２４）と、
前記ハブに結合され、該ハブおよび前記ポートの間でデータパケットの伝送を制御するアービタ（２２）と、
前記ポートのうちの少なくとも１つのポート内の出力バッファ（７２）であって、前記ハブから複数のデータパケットを並列に受け取るように、複数の供給線を介して前記ハブに結合された出力バッファと、
を備える相互接続装置。
【請求項２】
前記出力バッファ（７２）は、前記ポート（２６）から前記データパケットを伝送する前に、複数のデータパケットを受け取り保持する、
請求項１に記載の相互接続装置。
【請求項３】
前記複数のポート（２６）のそれぞれは、さらに、物理ブロック（２９）およびリンクブロック（２８）を備える、
請求項１に記載の相互接続装置。
【請求項４】
前記出力バッファ（７２）は、前記複数のポート（２６）のそれぞれの前記リンクブロック（２８）に含まれる、
請求項３に記載の相互接続装置。
【請求項５】
前記アービタ（２２）は、前記ハブ（２４）を介して伝送される前記データパケットのそれぞれに、許可シーケンス番号を割り当てる、
請求項１に記載の相互接続装置。
【請求項６】
前記出力バッファに結合された順序バッファをさらに備える、
請求項５に記載の相互接続装置。
【請求項７】
前記アービタによって割り当てられた前記許可シーケンスから外れて受け取ったパケットを再順序付けするよう、前記出力バッファは、データパケットを前記順序バッファに伝送する、
請求項６に記載の相互接続装置。
【請求項８】
前記データパケットは、該パケットの始まりまたは終わりに基づいて、前記アービタ（２２）によって割り当てられた前記シーケンスに基づく順序で、前記出力バッファ（７２）から送り出される、
請求項５に記載の相互接続装置。
【請求項９】
データパケットを伝送するＩｎｆｉｎｉＢａｎｄネットワーク装置内のＩｎｆｉｎｉＢａｎｄスイッチであって、
複数のポートと、
前記複数のポートを接続するハブと、
前記ハブに結合され、該ハブおよび前記ポートの間でデータパケットの伝送を制御するアービタと、
複数のデータパケットを単一出力ポートに並列に伝送する手段と、
を備える、ＩｎｆｉｎｉＢａｎｄスイッチ。
【請求項１０】
ハブによって接続された複数のポートを有する相互接続装置を介してデータパケットを伝送するための方法であって、
前記ハブを介して、複数のデータパケットを、入力ポートから、指定された出力ポートに伝送するステップと、
前記指定された出力ポートに伝送される前記複数のデータパケットに許可シーケンスを割り当てるステップであって、該データパケットが、該割り当てられた許可シーケンスに従うシーケンスを有するようにする、ステップと、
前記指定された出力ポートが一度に複数のデータパケットを受け取ることができるように、該複数のデータパケットを、該指定された出力ポートに、別個の供給線を介して伝送するステップと、
前記指定された出力ポートに、前記複数のデータパケットをバッファするステップと、
前記出力ポートから、前記複数のデータパケットを伝送するステップと、
を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、出力バッファを使用するパケット伝送に関する。
【背景技術】
【０００２】
ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）アーキテクチャなどの既存の多くのネットワーキング技術は、コンピュータシステムの開発に遅れをとってきた。そのような多くのシステムでは、インターネットの増え続けるトラフィックと需要が課題となっている。計算処理需要を満たし、かつ、サーバなどの処理ノード間だけでなく、中央処理装置（ＣＰＵ）と入出力（Ｉ／Ｏ）装置間の処理ノード内でデータを移動させる高い能力を必要とする試みにおいて、いくつかの技術が実施されてきた。
【０００３】
そのような需要を満たす試みにおいて、改良された相互接続技術が実施されてきた。その１つの例は、ＩｎｆｉｎｉＢａｎｄ（インフィニバンド、商標）アーキテクチャ（以下、「ＩＢＡ」）と呼ばれる。ＩＢＡは、縦続接続されたスイッチ装置を利用してエンドノード装置が相互接続されることのできるポイントツーポイントのスイッチ型ファブリックを中心とする。ＩＢＡは、多数のホストと様々な入出力ユニットを相互接続し、またはＣＰＵといくつかの入出力モジュール間を相互接続するのに実施されることができる。ＩＢＡのような相互接続技術は、データ（または、データパケット）をソースから宛先に転送する複数の入力ポートと出力ポートとを有するスイッチ、ルータ、リピータ、および／またはアダプタを利用する。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
例えば、スイッチング装置は、クロスバによって結合された複数の入力ポートと出力ポートを有することができる。入力ポートで受け取られた複数のデータパケットは、出力ポートを指定する指示を必要とするが、それにより、少なくとも入力リソース、出力リソースおよびクロスバリソースを得る競合が生じる。リソースを得るために競合している要求を調停するため、アービトレーション手法を使用しなければならない。バンド幅の要件と速度の要件が高くなるほど、クロスバスイッチの需要も高くなるので、該クロスバスイッチの性能を高め続けなければならない。場合によっては、そのようなクロスバスイッチを介してデータパケットを伝送することのできる速度が制限される。これらのおよび他の理由のため、本発明が必要とされる。
【課題を解決するための手段】
【０００５】
本発明の一つの側面によると、複数のポート、ハブ、アービタ、および出力バッファを含む、データパケットを伝送するための相互接続装置が提供される。ハブは、複数のポートを接続する。アービタは、ハブに結合され、ハブとポートの間のデータパケットの伝送を制御する。出力バッファは、複数のポートのうちの少なくとも１つのポート内にあり、該出力バッファが複数のデータパケットをハブから並列に受け取ることができるように複数の供給線を介してハブに結合される。
【発明を実施するための最良の形態】
【０００６】
図面は、本発明の理解を深めるために提供され、本明細書に含まれ、その一部を構成する。図面は、本発明の実施形態を示し、説明と共に本発明の原理を説明する役割をする。本発明の他の実施形態ならびに本発明の意図された利点の多くは、以下の詳細な説明を参照することによってより良く理解されるであろう。図面の要素は、必ずしも一律した縮尺ではない。類似の部分は、同じ参照符号によって示される。
【０００７】
以下の詳細な説明において、本発明を実施することができる実施形態が示される図面が参照される。この点において、「上(top)」、「下(bottom)」、「前(front)」、「後ろ(back)」、「先(leading)」、「後(trailing)」などの方向を示す用語は、説明する図の向きを基準として使用される。本発明の実施形態の構成要素は、いくつかの異なる向きに配置されることができるので、これらの方向を示す用語は、説明のために使用されており、決して限定するものではない。本発明の範囲を逸脱することなく他の実施形態を利用することができ、また構造的または論理的変更を行うことができる、ということを理解されたい。したがって、以下の詳細な説明は、限定した意味に取られるべきなく、本発明の範囲は、特許請求の範囲によって定義される。
【０００８】
図１は、ネットワークシステム１０を示すブロック図である。ネットワーク１０は、ネットワーク、またはサブネットとも呼ばれるサブネットワークでもよく、該サブネットは、ルータによって他のサブネットと相互接続され、さらに大きなネットワークを構成する。ネットワーク１０内では、単一のサブネットまたは複数のサブネットに、エンドノードが接続されることができる。ネットワーク１０は、任意のタイプの交換網でよい。例えば、ネットワーク１０は、保護されリモートに管理された環境で、複数の装置が広いバンド幅と小さい待ち時間で同時に通信することを可能にする交換通信ファブリックを定義するＩｎｆｉｎｉＢａｎｄ（インフィニバンド）アーキテクチャ（以下、「ＩＢＡ」）であることができる。ＩｎｆｉｎｉＢａｎｄ  Ｔｒａｄｅ  Ａｓｓｏｃｉａｔｉｏｎは、相互接続技術の動作の標準を列挙したＩＢＡ仕様を開発し公表した。他の交換網もまた、ネットワーク１０により表される。
【０００９】
ネットワーク１０は、ネットワーク１０内に配置された４つのエンドノード１２ａ、１２ｂ、１２ｃ、および１２ｄを示す。当業者に知られているように、エンドノードは、いくつかの異なる装置を表すことができ、その例には、プロセッサエンドノード、ネットワークへのルータ、または、ＲＡＩＤ（ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｄｅｐｅｎｄｅｎｔ  ｄｉｓｋｓ）サブシステムのような入出力装置が含まれる。また、スイッチ１４ａ、１４ｂ、１４ｃ、１４ｄおよび１４ｅが示されている。さらに、ネットワーク１０は、ルータ１６およびサブネットマネージャ１８を含む。ネットワーク１０内の任意の２つの装置間に複数のリンクがあってもよく、その例が、ルータ１６とスイッチ１４ｄの間の接続によって示されている。
【００１０】
スイッチ１４ａ、１４ｂおよび１４ｃは、通信のために、エンドノード１２ａ、１２ｂ、１２ｃおよび１２ｄを接続する。エンドノード１２ａ、１２ｂ、１２ｃおよび１２ｄと、スイッチ１４ａ、１４ｂおよび１４ｃとの間の接続は、ポイントツーポイントのシリアル接続である。接続がシリアルなので、ＰＣＩバス内で使用される広い並列（パラレル）接続の要件と対照的に、エンドノード１２ａ、１２ｂ、１２ｃおよび１２ｄをスイッチ１４ａ、１４ｂおよび１４ｃに接続する４つの別個の接続が必要とされる。
【００１１】
ネットワーク１０内の様々な接続例を提供するために、図１には５つ以上の別個の接続が示されていることに注意されたい。さらに、各ポイントツーポイント接続が、エンドノード１２ａ、１２ｂ、１２ｃ、１２ｄ、およびスイッチ１４ａ、１４ｂ、１４ｃ、１４ｄ、１４ｅ、のような２つの装置に専用されるので、該２つの装置間の通信には、各接続の最大バンド幅の容量が利用可能になる。この専用によって、バスの競合がなくなり、また、共用バスアーキテクチャの厳しい負荷条件に起因する遅延を排除することができる。
【００１２】
また、ネットワーク１０内に配置されるエンドノード１２ａ、１２ｂ、１２ｃおよび１２ｄが、さらに多くても、またさらに少なくてもよいことに注意されたい。ルータ１６は、データパケットの送受信のために、ネットワーク１０からリモートのサブネットへの接続を提供する。さらに、エンドノード１２ａ、１２ｂ、１２ｃおよび１２ｄは、ネットワーク１０内に配置される任意の論理装置でよい。例えば、エンドノード１２ａ、１２ｂ、１２ｃおよび１２ｄは、プロセッサノードおよび／または入出力装置である。
【００１３】
スイッチ１４ａ、１４ｂ、１４ｃ、１４ｄおよび１４ｅの構造および該スイッチで実行される機能により、それぞれのスイッチは、或るエンドノード１２ａ、１２ｂ、１２ｃおよび１２ｄから別のエンドノード１２ａ、１２ｂ、１２ｂ、１２ｃおよび１２ｄへのデータパケットの流れ、或るエンドノード１２ａ、１２ｂ、１２ｃおよび１２ｄからルータ１６へのデータパケットの流れ、あるいはルータ１６からエンドノード１２ａ、１２ｂ、１２ｃおよび１２ｄへのデータパケットの流れを制御することができる。
【００１４】
スイッチ１４ａ、１４ｂ、１４ｃ、１４ｄおよび１４ｅは、宛先アドレスに基づいてデータのパケットを送り、該宛先アドレスは、データパケットのローカルルートヘッダ内にある。しかしながら、スイッチ１４ａ、１４ｂ、１４ｃ、１４ｄおよび１４ｅは、ネットワーク１０をパケットが横切る際に直接アドレス指定されない。代わりに、パケットは、実質的に変更されないスイッチ１４ａ、１４ｂ、１４ｃ、１４ｄおよび１４ｅを横切る。このため、ネットワーク１０内の各宛先は、典型的には、スイッチ１４ａ、１４ｂ、１４ｃ、１４ｄおよび１４ｅを通る経路を表す１つまたは複数の固有のローカル識別子によって構成される。
【００１５】
スイッチ１４ａ、１４ｂ、１４ｃ、１４ｄおよび１４ｅによるデータパケット転送は、典型的には、各スイッチ１４ａ、１４ｂ、１４ｃ、１４ｄおよび１４ｅ内に配置される転送テーブルによって定義され、ここで、各スイッチ内のテーブルは、サブネットマネージャ１８によって構成される。各データパケットは、宛先に到達するためのローカル識別子を指定する宛先アドレスを含む。スイッチ１４ａ、１４ｂ、１４ｃ、１４ｄおよび１４ｅによって個々のデータパケットを受け取られたとき、該データパケットは、スイッチ１４ａ、１４ｂ、１４ｃ、１４ｄおよび１４ｅ内で、宛先ローカル識別子と、スイッチ１４ａ、１４ｂ、１４ｃ、１４ｄおよび１４ｅ内にある転送テーブルとに基づいて、送信（アウトバウンド）ポートに転送される。
【００１６】
ルータ１６は、パケットを、該パケット内にあるグローバルルートヘッダに基づいて転送し、パケットがサブネットからサブネットに渡るときに、該パケットのローカルルートヘッダを置き換える。スイッチ１４ａ、１４ｂ、１４ｃ、１４ｄおよび１４ｅによってサブネット間のルーティングが提供されるが、ルータ１６は、サブネット間ルーティングの基本的なルーティング構成要素である。したがって、ルータは、パケットが宛先サブネットに到着するまで、該パケットをサブネット間で中継することによって、該サブネットを相互接続する。エンドノードなどのさらなる装置がサブネットに追加されたときは、通常、該サブネット内の追加のパケット伝送を処理するために、追加のスイッチが必要である。しかしながら、エンドノードを追加してもスイッチの追加は必要とされず、これにより、追加のスイッチの購入に関連する資源の費用が削減され、これは有益である。
【００１７】
前述したように、ネットワーク１０は、例としてＩＢＡであることができる。したがって、ネットワーク１０は、ＩＢＡスイッチを使用して、ＩＢＡなどのネットワーク内のデータパケットのフロー制御を提供することができる。しかしながら、スイッチがＩＢＡと関連して利用されなくてもよいことに注意されたい。さらに、ＩＢＡスイッチのようなスイッチの構造に起因して、ネットワーク１０へのエンドノードの追加を補償するよう、またエンドノードの追加と関連した追加のパケットフローを補償するように、図示したスイッチを容易に改良することができる。当業者ならば、ネットワーク１０内で、他のクロスバスイッチおよび関連スイッチを使用できることを理解するであろう。
【００１８】
スイッチ１４ａ、１４ｂ、１４ｃ、１４ｄおよび１４ｅが、エンドノード１２ａ、１２ｂ、１２ｃおよび１２ｄに対して透過的(transparent)であり、これは、これらのスイッチが直接アドレス指定されないことを意味する（ただし、管理作業を除く）。代わりに、パケットは、実質的に変更されていないスイッチ１４ａ、１４ｂ、１４ｃ、１４ｄ、および１４ｅを横切る。このため、ネットワーク１０内のすべての宛先は、１つまたは複数の固有のローカル識別子（ＬＩＤ）によって構成される。スイッチ１４の視点から見ると、ＬＩＤは、スイッチを通る経路を表す。パケットは、宛先のＬＩＤを指定する宛先アドレスを含む。各スイッチ１４ａ、１４ｂ、１４ｃ、１４ｄおよび１４ｅは、パケットが、該パケットのＬＩＤに基づいてスイッチ１４ａ、１４ｂ、１４ｃ、１４ｄおよび１４ｅ内でとる経路を指定する転送テーブル（図示せず）によって構成される。個々のパケットは、スイッチ１４ａ、１４ｂ、１４ｃ、１４ｄおよび１４ｅ内で、パケットの宛先ＬＩＤと、スイッチ１４ａ、１４ｂ、１４ｃ、１４ｄおよび１４ｅの転送テーブルとに基づいて、送信ポート（複数可）に転送される。ＩＢＡスイッチは、ユニキャスト転送（単一パケットの単一場所への送付）をサポートするが、マルチキャスト転送（単一パケットの複数宛先への送付）をサポートすることもできる。
【００１９】
サブネットマネージャ１８は、転送テーブルを、各スイッチ１４ａ、１４ｂ、１４ｃ、１４ｄおよび１４ｅにロードすることによって、スイッチ１４ａ、１４ｂ、１４ｃ、１４ｄおよび１４ｅを構成する。可用性を最大にするため、スイッチファブリック内に、エンドノード１２ａ、１２ｂ、１２ｃおよび１２ｄ間の複数の経路を展開することができる。スイッチ１４ａ、１４ｂ、１４ｃ、１４ｄおよび１４ｅ間で複数の経路を使用することができる場合、サブネットマネージャ１８は、冗長性のため、あるいは宛先ＬＩＤベースの負荷共有のために、そのような経路を使用することができる。複数の経路がある場合、サブネットマネージャ１８は、ファブリックの影響ある領域に、スイッチの転送テーブルをロードしなおすことによって、障害のあるリンクを迂回してパケットを再ルーティングすることができる。
【００２０】
図２は、本発明の例示的な一実施形態による、図１のスイッチ１４ａ、１４ｂ、１４ｃ、１４ｄ、および１４ｅのようなスイッチ２０をさらに詳細に示すブロック図である。スイッチ２０は、アービタ２２、クロスバまたは「ハブ」２４、および一連のポート２６ａ〜２６ｈ（集合的に「ポート２６」と呼ぶ）を含む。例示として、スイッチ２０内に、８つのポート２６が提供される。スイッチ２０に接続されたエンドノードとルータの数によって、スイッチ２０内にあるポート２６を、これよりも多くすることもできるし、少なくすることもできることに注意されたい。本発明の例示的な一実施形態によると、スイッチ２０内のポート２６の総数は、スイッチ２０に接続されたエンドノードの総数およびルータの総数と同じである。したがって、エンドノードがネットワーク１０（図１）に追加されるときは、ポート２６もスイッチ２０に追加される。結果として、追加されたエンドノードに対応するために、追加のスイッチは必要とされない。代わりに、後で説明するように、追加のエンドノードに対応するため、またスイッチ２０内の相互作用の機能に対応するため、追加のポートが追加される。
【００２１】
スイッチ２０は、データパケットのフロー制御を提供しつつ、該データパケットを、ソースのエンドノードから宛先のエンドノードに導く。当業者によって知られているように、データパケットは、少なくとも１つのヘッダ部、データ部、および巡回冗長符号（ＣＲＣ）部を含む。ヘッダ部は、少なくとも１つのソースアドレス部、宛先アドレス部、データパケットサイズ部、および仮想レーン識別番号(virtual lane identification number)を含む。さらに、データパケットをエンドノードから送る前に、データパケットのＣＲＣ値が計算され、該データパケットに付加される。
【００２２】
スイッチ２０において、ポート２６ａ〜２６ｈが、ハブ２４を介して接続される。スイッチ２０の各ポート２６は、一般に、リンクブロック２８ａ〜２８ｈ（集合的に「リンクブロック２８」と呼ぶ）と物理ブロック（「ＰＨＹ」）２９ａ〜２９ｈ（集合的に「ＰＨＹブロック２９」と呼ぶ）を含む。一実施形態において、ハブ２４は、１０ポート装置であり、ここで、２つのポートは管理機能に予約されている。例えば、これらは、管理ポートと内蔵自己診断（ＢＩＳＴ）ポートとを含む。図２は、表現を簡潔にするため、２６ａ〜２６ｈの８つのポートだけを示す。８つの通信ポート２６ａ〜２６ｈは、ハブ２４に結合され、それぞれアービタ２２にリソース要求を出し、それぞれアービタ２２からリソース許可を受け取る。当業者には、使用するポート２６が、これよりも多くても少なくてもよいことを理解されよう。
【００２３】
ＰＨＹブロック２９は、主に、シリアル化−非シリアル化（「ＳｅｒＤｅｓ(serialize to de-serialize)」）装置として働く。リンクブロック２８は、入力バッファ、受信（「ＲＸ］）、送信（「ＴＸ」）、およびフロー制御を含むいくつかの機能を実行する。リンクブロック２８の入力バッファ（図示せず）には、入力仮想レーン（ＶＬ）が物理的に含まれる。リンクブロック２８により実行されることのできる他の機能には、整合性検査、リンクの状態および状況、エラーの検出および記録、フロー制御生成、および出力のバッファリングがある。
【００２４】
一実施形態において、ハブ２４は、密度の低い(sparsely populated)データ経路構造として実現される。実質的に、ハブ２４は、各出力ポートへの可能なすべての入力の分散ＭＵＸとして機能する。ハブ２４は、組み合わせ的なものであり(combinatorial)、１つの３２ビットワードのスイッチングプロセスを、２５０ＭＨｚのシステムクロック期間（４．０ナノ秒）内で完了することができる。
【００２５】
ハブ２４がポート２６ａ〜２６ｈを相互接続している間、アービタ２２は、ハブ２４を介したポート２６ａ〜２６ｈ間の相互接続を制御する。具体的には、ハブ２４は、データパケットを１つのポート２６から別のポート２６へ、ポート２６からアービタ２２へ、および／またはアービタ２２からポート２６へ導くことができる、一連の有線ポイントツーポイント接続を含む。アービタ２２は、要求プリプロセッサおよびリソースアロケータ(resource allocator)を含む。要求プリプロセッサは、受け取ったデータパケットを宛先エンドノードに送るのに使用されるスイッチ２０内のポート２６を決定する。受け取ったデータパケットを宛先エンドノードに送るために使用されるポート２６は、本明細書では出力ポート（outgoing port）とも呼ばれることに注意されたい。
【００２６】
例示のために、以下では、出力ポートがポート２６ｄであり、ソースポートがポート２６ａであると仮定する。出力ポート２６ｄを決定するために、要求プリプロセッサは、受け取ったデータパケットのヘッダに格納された宛先アドレスを使用して、要求プリプロセッサ内にあるルーティングテーブルを索引付けし、受け取ったデータパケットの出力ポート２６ｄを決定する。各ポート２６ａ〜２６ｈが、受け取ったデータパケットの宛先アドレスを判断することができる、ということに注意されたい。さらに後で説明するように、アービタ２２はまた、出力ポート２６ｄの可用性(availability)を判断し、受け取ったデータパケットのスイッチ２０を介した宛先エンドノードへの伝送を調整する。
【００２７】
図３は、スイッチ３０の一部を示すブロック図である。より具体的には、図３は、図２に示したスイッチ２０の詳細図であり、リンクブロック２８のより詳細を示す。当業者は、図３に示したようなスイッチ３０および後で説明する該スイッチ３０の動作が、システムを概略的に表すためのものであり、或る特定のスイッチが、特に構造と動作の詳細において図３に示したものと大きく異なることができる、ということを理解されよう。さらに、本発明の特徴のうち主要なものに焦点を絞るために、本発明に関係のある機能要素だけを描写している。したがって、スイッチ３０は、実例および例示と見なされるべきであり、本明細書に示した発明または特許請求範囲を限定するものではない。
【００２８】
リンクブロック２８は、一般に、送信リンク（「Ｔｘリンク」）３４と受信リンク（「Ｒｘリンク」）３６に接続された物理リンクインターフェース３２（「ＰＬＩ」）を含む。Ｒｘリンク３６は、ハブ２４へのデータ転送のために入力バッファ３８に出力する。コントローラ４０は、Ｔｘリンク３４とＲｘリンク３６の動作を制御する。
【００２９】
ＰＬＩ３２は、ＰＨＹブロック２９のトランスミッタ部分とレシーバ部分を、それぞれリンクブロック２８のＴｘリンク３４とＲｘリンク３６に接続する。ＰＬＩ３２のレシーバ部分は、ＰＨＹブロック２９からのデータを再編成し、レシーバのデータストリームから、パケットの始まり（ＳＯＰ）インジケータとパケットの終わり（ＥＯＰ）インジケータなどの特別な文字および文字列を検出する。Ｒｘリンク３６は、ＰＬＩ３２からパケットデータを受け取り、所定の検査を行い、該データを入力バッファ３８に渡す。Ｔｘリンク３４は、ＰＬＩ３２を介してハブ２４からＰＨＹブロック２９に転送する用意ができたデータパケットを送る。その際に、Ｔｘリンク３４は、該データを再編成し、開始／終了パケット（ＳＯＰ／ＥＯＰ）制御文字のプレースホルダ(placeholder)を追加し、ＶＣＲＣフィールドを計算して挿入する。Ｔｘリンク３４は、データパケットに加え、フロー制御状態機械（図示せず）からフロー制御リンクパケットを受け取って送る。
【００３０】
一実施形態において、パケット転送要求が、アービタ２２内のリソースアロケータに達したとき、該リソースアロケータは、入力ポート２６ａ、パケットがスイッチ２０から出る出力ポート２６ｄ（ここで、これらのポートは、例示として使用されている）、パケットが出る仮想レーン、および、パケットの長さを指定する。入力ポート２６ａから出力ポート２６ｄへの経路が使用可能であり、かつ下流の装置が十分信用ある場合には、アービタ２２のリソースアロケータは許可（ｇｒａｎｔ）を発行する。複数の要求が同じポート２６ｄを目指している場合、アービタ２２のリソースアロケータは、所定のアービトレーションプロトコルを使用してルーティングを制御する。例えば、Ｉｎｆｉｎｉｂａｎｄ（商標）アーキテクチャ仕様に記載されたアービトレーションプロトコルを使用して、出力ポートへのパケット伝送を制御することができる。
【００３１】
出力ポートがハブからの１つの供給線を有するスイッチでは、出力ポート２６ｄは、一度に１つのパケットだけを受け入れる。出力ポート２６ｄは、１つのパケットを受け入れている間、その時にさらなる他のパケットを受け入れることができないことをアービタ２２に示すビジー信号、すなわちＴｘビジー信号を提供する。こうして、入力ポートから複数のパケットが同一出力ポート２６ｄに送られるとき、該パケットはバッファされ、アービタ２２が許可シーケンス番号を該パケットに割り当てる。このように、出力ポート２６ｄが現行パケットの送信を終了し、Ｔｘビジー信号が解除されたとき、次の許可シーケンス番号を有するパケットを、送信のために出力ポート２６ｄに送ることができる。しかしながら、出力ポートの速度がパケットストリームの速度よりも早い場合、ハブからの１つの供給線を有するそのようなスイッチにおいては、アウトバウンド（送信）のバンド幅損失により、出力ポートの性能が悪化する。
【００３２】
図４は、本発明によるスイッチ５０の一部を示すブロック図である。前述のスイッチ２０および３０と同じように、スイッチ５０は、ハブ５４を介して接続された複数のポートを含む。スイッチ５０の各ポートは、一般に、リンクブロック５８と物理ブロック（ＰＨＹ）５９を含む（図４には、１つのポートを表す１つのリンクブロック５８と１つのＰＨＹブロック５９だけを示した）。一実施形態において、前述のように、ハブ５４は、８個の通信ポートと管理機能に予約された２つのポートを有する１０ポート装置である。当業者によって理解されるように、様々な数のポートを有する様々なスイッチ５０が可能である。通信ポートはハブ５４に結合され、それぞれアービタ５２にリソース要求を出し、それぞれアービタ５２から許可を受け取る。
【００３３】
図４は、本発明によるリンクブロック５８のより詳細を提供するスイッチ５０の図を示す。リンクブロック５８は、一般に、送信リンク（「Ｔｘリンク」）６４と受信リンク（「Ｒｘリンク」）６６に接続された物理リンクインターフェース６２（「ＰＬＩ））を含む。Ｒｘリンク６６は、ハブ５４へのデータの転送のために入力バッファ６８に出力する。コントローラ７０は、Ｔｘリンク６４とＲｉリンク６６の動作を制御する。アービタ５２は、スイッチ２０と３０について前に説明したように、ハブ５４を介してポート間の相互接続を制御する。
【００３４】
さらに、スイッチ５０のリンクブロック５８は、出力バッファ７２と順序バッファ（order buffer）７４を含む。一実施形態において、出力バッファ７２は、ハブにとっては、機能的に４つの出力バッファとして見えるが、該出力バッファのそれぞれが、別個の供給線またはバスを介してハブ５４に結合されている。このように、スイッチ５０のリンクブロック５８は、ハブ５４から出力ポートへの複数の供給線を可能にする。このようにして、ハブ５４は、複数のデータパケットストリームを並列に出力ポートに送ることができる。こうして、スイッチ５０の出力ポートの競合は、出力ポートが一度に１つだけパケットを受け入れるように出力ポートが１つの供給線を有する従来のスイッチの競合よりも少なくなる。これにより、アービタ５２からの介入および調停（アービトレーション）が少なくなり、データパケットのアウトバウンドのバンド幅が改善される。
【００３５】
図５は、さらに、本発明による出力バッファ７２を示す。ハブ５４は、出力バッファ７２において使用可能な４つの供給線によって、出力バッファ７２にデータパケットを送る。各供給線は、ハブ５４から出力ポートへのデータパケットの独立した転送を可能にする。データパケットは、次に、マルチプレクサ（「ＭＵＸ」）７６を介してＴｘリンク６４に送られる。従来のスイッチと同じように、複数のパケットが同一出力ポートに送られたとき、アービタ５２がデータパケットを調停する。許可シーケンスがパケットに割り当てられ、データパケットは、シーケンス番号が自分の順番になったときに出力ポートに送られる。従来のスイッチでは、４つのパケットが同一出力ポートに送られ、したがって許可シーケンスがパケット番号１、パケット番号２、パケット番号３およびパケット番号４と割り当てられた場合、パケットはその順序で次々に送られる。スイッチ５０の場合には、４つのパケットが、すべて、出力バッファ７２の４つの供給線によって並列に送られる。
【００３６】
一実施形態においては、各パケットが最初に並列に送られる場合でも、アービタ５２によって割り当てられた許可シーケンスの順序は維持される。この許可シーケンスの維持は、様々な方法で達成することができる。一実施形態において、パケットは出力ポート７２の４つの供給線で並列に送られるが、許可シーケンス番号が大きい方のパケットは、例えば他のパケットより１サイクル遅延されることができる。このように、各パケットのＳＯＰが、シーケンスの順序を維持する。こうして、該スイッチ５０において、アービタ５２は、次の順番のパケットの転送をトリガするために、従来のスイッチのように現行パケットのＥＯＰまで待たなければならないのではなく、ハブ５４から出力ポートに現在送られているパケットのＳＯＰを待つだけでよい。
【００３７】
一実施形態においては、出力ポートからのシーケンスも維持される。このように、例えば、出力バッファ７２がいくつかのパケットを受け取るのに比較的長い時間がかかるので、順序バッファ７４を使用して、順序が狂うことがあるパケットを再順序付けすることができる。例えば、前述のパケット番号１、パケット番号２、パケット番号３およびパケット番号４の許可シーケンスが割り当てられたデータパケットの場合、シーケンスがパケット番号１のＳＯＰが、シーケンスがパケット番号２よりも前に受け取られるが、例えばパケット番号２がパケット番号１よりも短いときは、パケット番号２のＥＯＰが、パケット番号１のＥＯＰよりも前に受け取られることがある。この場合、コントローラ７０は、出力バッファ７２からＴｘリンク６４に、パケットが、アービタ５２によって割り当てられ維持されたシーケンスで送られるように、順序バッファ７４（図４に示される）を使用してパケットを再順序付けすることができる。この実施形態は、「先読み先出し（Ｆｉｒｓｔ  Ｒｅａｄ  Ｆｉｒｓｔ  Ｇｏ）」と呼ばれることがある。換言すると、パケットは、ＥＯＰを受け取った後にだけ送り出されるが、該送り出しの順序は、ＳＯＰを受け取ったときにタグ付けされる。
【００３８】
他の実施形態において、パケットは、パケットが完成する順序で出力バッファ７２からＴｘリンク６４に送り出されてもよい。換言すると、パケットが送られる順序は、パケットのＥＯＰによって決定される。他の構成も可能であり、スイッチ５０は、所望のプロトコルを実行するように適切に構成されるだけでよい。
【００３９】
前述のように、Ｉｎｆｉｎｉｂａｎｄ（商標）アーキテクチャ仕様に示されるアービトレーションプロトコルなどのアービトレータのプロトコルは、ポート間のトラフィックフローを管理する。該プロトコルはまた、パケット間の伝送順序を維持する。このように、スイッチ５０の出力ポート内には、パケットアービトレーションのロジックが必要とされない。これにより、スイッチ５０のポートの単純さが維持される。スイッチ５０は、出力バッファ７２と順序バッファ７４と共に、処理量の向上とカットスルー待ち時間(cut-through latency)の改善により、全体的な性能を改善する。これにより、あらかじめ必要なアービトレーションが少なくなり、データパケットの衝突が従来のスイッチよりも減少する。
【００４０】
一実施形態において、スイッチ５０は、ＩＢＡスイッチである。したがって、スイッチ５０は、１ｘ、４ｘまたは１２ｘのポート速度で動作することができる。このＩＢＡの実施形態において、出力バッファ７２は、１２ｘの出力ポート内にあり、ハブ５２と１２ｘＰＬＩブロック６２の間の蓄積転送(store-and-forward)ＦＩＦＯである。この出力バッファは、ハブ５４からの４つの４ｘ出力ストリームを、１２ｘＰＬＩブロック６２への１つの１２ｘストリームに変換する。機能的に、出力バッファ７２は、ハブ５４に対しては、４つの４ｘ出力ポートであり、１２ｘ出力ポートに対しては、ハブ５４の拡張であるが１２ｘのデータバス幅を有する。
【００４１】
スイッチ５０がＩＢＡスイッチである一実施形態において、出力バッファ７２は、関連する制御ロジックを備えた４つの５１２エントリ×１２０ビットパケットＦＩＦＯでよい。ハブ５４からのそれぞれのストリームを受け取るのに１つのＦＩＦＯが使用される。順序バッファ７４は、関連する制御ロジックを有する１２８エントリ×４ビット再順序付けＦＩＦＯである。該制御ロジックは、パケットのバッファデータの読みとりを実施するエージェント(agent)である。コントローラ７０は、フロー制御パケットの受け入れ、パケットのデリミタの挿入、ｖｃｒｃ生成、およびアイドル(idle)挿入などの機能を実行する。
【００４２】
特定の実施形態を示し説明したが、当業者は、本発明の範囲から逸脱することなく図示し説明した特定の実施形態に様々な代替および／または等価な実施形態を実現することができる、ということを理解されよう。本出願は、本明細書に示した特定の実施形態の任意の適用または変形形態を対象として含むように意図されている。したがって、本発明は、特許請求の範囲とその等価物によってのみ限定されるように意図される。
【図面の簡単な説明】
【００４３】
【図１】ネットワークシステムを示すブロック図。
【図２】クロスバスイッチを示すブロック図。
【図３】クロスバスイッチのさらなる詳細を示すブロック図。
【図４】本発明の一実施形態によるクロスバスイッチを示すブロック図。
【図５】本発明による出力バッファを示す図。
【符号の説明】
【００４４】
１４、２０、３０  相互接続装置
２２  アービタ
２４  ハブ
２６  ポート
７２  出力バッファ
【図１】
2006087093.tif 000003
【図２】
2006087093.tif 000004
【図３】
2006087093.tif 000005
【図４】
2006087093.tif 000006
【図５】
2006087093.tif 000007