(57)【要約】      （修正有）【課題】複数の相互接続デバイス間でデータを通信するための方法及びシステムを提供すること。【解決手段】本方法は、ソース相互接続デバイスが宛先相互接続デバイスへデータを通信することを許可する各許可に関連づけされたシーケンス番号を割り当てるステップを含む。次いでキューイングされた許可(168)のシーケンス番号が基準シーケンス番号と比較され、該比較に応じてデータが通信される。一実施形態では、シーケンス番号は、基準送信シーケンス番号との比較に応じて各許可が実行されるべき順序を画定する許可シーケンス番号である。【選択図】図２Ａ
2005032225.tif 000002
【特許請求の範囲】
【請求項１】
複数の相互接続デバイス間でデータを通信するシステムであって、
ソース相互接続デバイスが宛先相互接続デバイスへデータを通信することを許可する各許可に関連づけされたシーケンス番号を割り当てるアービタ(36)と、
キューイングされた許可(168)のシーケンス番号を基準シーケンス番号と比較するコンパレータと、
該比較に応じてデータを通信するデータ送信モジュールと
を含むシステム。
【請求項２】
前記シーケンス番号が許可シーケンス番号であり、前記データがデータパケットという形のものであり、
前記アービタ(36)が、各許可に許可シーケンス番号を１つずつ割り当て、該許可シーケンス番号が、各許可を実行すべき順序を画定し、
前記コンパレータが、キューイングされた許可(168)の許可シーケンス番号を基準送信シーケンス番号と比較し、
前記データ送信モジュールが、前記比較に応じて許可を実行することにより、データを通信する、請求項１に記載のシステム。
【請求項３】
前記コンパレータが、各相互接続デバイスにおいて、次のキューイングされた許可(168)の許可シーケンス番号を、次に実行すべき許可の許可シーケンス番号を識別する基準送信シーケンス番号と比較する、請求項２に記載のシステム。
【請求項４】
前記シーケンス番号が許可シーケンス番号であり、前記データがデータパケットという形のものであり、
前記アービタ(36)が、許可シーケンス番号を各許可に割り当て、該許可シーケンス番号が、各許可に関連づけされたデータパケットをプリフェッチバッファ(112)に移動する順序を画定し、
前記コンパレータが、キューイングされた許可(168)の許可シーケンス番号を基準プリフェッチシーケンス番号と比較し、
前記データ送信モジュールが、前記比較に応じてデータパケットを前記プリフェッチバッファ(112)に移動する、請求項１に記載のシステム。
【請求項５】
前記コンパレータが、各相互接続デバイスにおいて、次のキューイングされた許可(168)の許可シーケンス番号を、前記相互接続デバイスから次に通信すべきデータパケットに関連づけされた許可の許可シーケンス番号を識別する基準プリフェッチシーケンス番号と比較する、請求項４に記載のシステム。
【請求項６】
相互接続により受信されたデータを、関連づけされた相互接続デバイスに通信することを許可する許可を受信する許可モジュール(102)と、
前記許可から許可シーケンス番号を抽出し、該許可シーケンス番号を基準送信シーケンス番号と比較する、プロセッサと、
前記比較に応じてデータを通信するデータ送信モジュールと
を含む、相互接続デバイス。
【請求項７】
前記データがデータパケットという形のものであり、前記プロセッサが、前記相互接続デバイスにおいて、次のキューイングされた許可(168)の許可シーケンス番号を、次に実行すべき許可の許可シーケンス番号を識別する基準送信シーケンス番号と比較する、請求項６に記載の相互接続デバイス。
【請求項８】
複数の関連づけされた相互接続デバイスの各々毎の基準送信シーケンス番号を記憶するバッファを含み、各基準送信シーケンス番号が、特定の関連づけされた相互接続デバイスと一意に関連づけされて、前記相互接続デバイスがデータパケットを関連づけされた相互接続デバイスに通信する順序を画定する、請求項７に記載の相互接続デバイス。
【請求項９】
特定の相互接続デバイスによりデータパケットが通信されている間に基準送信インクリメント信号(120)を関連づけされた相互接続デバイスに通信する、請求項８に記載の相互接続デバイス。
【請求項１０】
相互接続デバイスがデータパケットを関連づけされた相互接続デバイスのうちの１つに通信することを許可する許可に関連づけされた許可シーケンス番号を記憶するメモリを含み、前記許可シーケンス番号が各許可に関連づけされたデータパケットを相互接続デバイスのプリフェッチバッファ(112)に移動する順序を画定し、前記プロセッサが許可の許可シーケンス番号を基準プリフェッチシーケンス番号と比較し、該比較に応じてデータパケットを前記プリフェッチバッファ(112)に移動する、請求項８に記載の相互接続デバイス。
【請求項１１】
前記プロセッサが、次のキューイングされた許可(168)の許可シーケンス番号を、次に実行すべき許可の許可シーケンス番号を識別する基準プリフェッチシーケンス番号と比較する、請求項１０に記載の相互接続デバイス。
【請求項１２】
前記プリフェッチバッファ(112)にデータパケットが移動した際に、前記データ送信モジュールが、基準プリフェッチインクリメント信号(118)を、関連づけされた相互接続デバイスに通信する、請求項１１に記載の相互接続デバイス。
【請求項１３】
前記プロセッサが、関連づけされたプリフェッチ入力信号(118)に応じて、複数の関連づけされた相互接続デバイスの各々毎に基準プリフェッチシーケンス番号をインクリメントする、請求項１１に記載の相互接続デバイス。
【請求項１４】
複数の相互接続デバイスに発行された許可の実行を管理するアービタ(36)であって、該アービタが許可アロケータ(40)を有し、該許可アロケータ(40)が、
相互接続デバイスから宛先インタフェースデバイスにデータを通信するための許可要求を受信し、
許可を実行すべき時を画定する許可シーケンス番号を前記許可に選択的に割り当て、
前記許可シーケンス番号を前記相互接続デバイスに通信する、
アービタ(36)。
【請求項１５】
前記許可シーケンス番号が、前記相互接続デバイスに通信される許可内に含まれている、請求項１４に記載のアービタ(36)。
【請求項１６】
前記アロケータ(40)が、各特定の相互接続デバイス毎に一連の許可シーケンス番号を割り当て、該許可シーケンス番号が、特定の相互接続デバイスが宛先相互接続デバイスとして機能しているときに各特定の相互接続デバイスと一意に関連づけされて、他の相互接続デバイスがデータパケットの形態のデータを宛先相互接続デバイスに通信する順序を画定する、請求項１４に記載のアービタ(36)。
【請求項１７】
前記アロケータ(40)が、既定の最大数の許可が実行されずに残っているときに、別の許可シーケンス番号の発行を控える、請求項１６に記載のアービタ(36)。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にデータ通信の分野に関し、特に、通信ネットワーク内の複数の相互接続デバイス間でデータを通信する方法及びシステムに関する。
【背景技術】
【０００２】
既存のネットワーク化と相互接続技術は、コンピュータシステムの発展に追いつかなくなってきており、この結果、データサーバ、アプリケーション処理、エンタープライズ・コンピューティングに課せられる負担が増大している。この問題は、インターネットが一般的に成功したことにより更に悪化した。コンピュータに対する需要を満たすように実施された多くのコンピュータ従来技術（例えばクラスタリング、フェイルセーフ、及び24×7の可用性）では、複数の処理ノード（例えばサーバ）間でデータを移動するための容量の増強、及び、例えば中央処理装置（CPU）と入出力（I／O）デバイスとの間の処理ノード内でデータを移動する容量の増強が求められている。
【０００３】
上記の課題に対処するために、InfiniBand（商標）と呼ばれる新しい相互接続技術が提案されている。InfiniBand（商標）は、処理ノードとI／Oノードを相互接続し、システムエリアネットワーク（SAN）を形成する。このアーキテクチャは、ホストのオペレーティングシステム（OS）とプロセッサプラットフォームから独立して設計されている。InfiniBand（商標）アーキテクチャ（IBA）は、ポイント・ツー・ポイントのスイッチ式（switched）IPファブリックを中心とするものであり、これにより、エンド・ノード・デバイス（例えばシングルチップSCSI若しくはEthernetアダプタといった安価なI／Oデバイス又は複雑なコンピュータシステム等）をスイッチデバイスのカスケードを使用して相互接続することが可能となる。IBAは、シングルホストのバックプレーン相互接続から複雑なシステムエリアネットワークに至る幅広いアプリケーションをサポートしている。図１（従来技術）を参照されたい。シングルホスト環境では、各IBAスイッチ式ファブリックは、CPUと幾つかのI／Oモジュールとの間に接続性を提供するホスト用のプライベートI／O相互接続として働くことが可能である。複雑なシステムエリアネットワークをサポートするよう配置する場合には、多数のIBAスイッチ式ファブリックを使用して多くのホストと種々のI／Oユニットとを相互接続することが可能である。
【０００４】
図１に示すシステムエリアネットワークなどをサポートするスイッチファブリック内には、多数の入力ポートと出力ポートを有しこれらのポートを介してデータ（例えばパケット）をソースから宛先に向ける多数のデバイスがある場合がある。このようなデバイスには例えば、スイッチ、ルータ、リピータ、アダプタ（一般的な相互接続デバイス）が含まれる。デバイスを介してデータが処理される場合には、該デバイスのリソースを獲得すべく多数のデータ送信要求が互いに競合し合うことが理解されよう。例えば、スイッチングデバイスがクロスバーで結合された多数の入力ポートと出力ポートを有する場合、該スイッチングデバイスの多数の入力ポートで受信されて該スイッチングデバイスの特定の出力ポートへ向けなくてはならない複数のパケットが、少なくとも入力、出力、クロスバーの各リソースに関して競合することになる。
【０００５】
デバイスリソースに対する多数の需要を促進するために、アービトレーション機構を使用してデバイスリソースに対して競合する要求間の調停を行うことができる。このようなアービトレーション機構は典型的には、（1）アービトレーションプロセスが、デバイスを介して各リソースに関連づけされた多数のノードの間で分散される、分散アービトレーション機構、又は、（2）全てのリソースに対するアービトレーション要求が中央アービタで処理される、中央アービトレーション機構のいずれかである。アービトレーション機構は更に、幾つかのアービトレーションポリシーのうちの１つを使用する場合がある。例えば、ポリシーの例として、ラウンドロビン・ポリシー、ファースト・カム・ファースト・サーブド（first-come-first-served：最初に到着したものを最初に処理する）・ポリシー、ショーテスト・メッセージ・ファースト（shortest message first：最も短いメッセージが最初）・ポリシー、優先順位ベース（priority based）・ポリシーが挙げられる。IBA相互接続技術の物理的な性質は、相互接続コンピュータシステム、外部記憶システム、外部LAN／WANアクセスデバイスを提供することに関して、モジュール（ボード）間の相互接続（例えばI／Oモジュールアドインスロットをサポートするコンピュータシステム）及びシャシ間の相互接続の両方をサポートするよう設計されている。例えば、IBAスイッチをコンピュータシステムのシャシ内で相互接続技術として使用して、コンピュータシステムを構成するデバイス間の通信を促進させることができる。同様に、IBAスイッチ式ファブリックをスイッチ又はルータ内で使用して、ネットワークシステム間（例えばプロセッサノード、記憶サブシステムなど）のネットワーク通信を促進させることもできる。この目的のために、図１は、InfiniBand（商標）アーキテクチャ仕様で提供される典型的なシステムエリアネットワーク（SAN）を示し、IBAスイッチ式ファブリックを使用したプロセッサノードとI／Oノードの相互接続を示している。しかし、IBAは本発明の用途を説明するための例として提供されているに過ぎないことを理解されたい。
【発明の開示】
【課題を解決するための手段】
【０００６】
本発明の一実施形態によれば、複数の相互接続デバイス間でデータを通信する方法が提供され、この方法は、
ソース相互接続デバイスに、宛先相互接続デバイスにデータを通信することを許可する各許可（grant）に関連づけされたシーケンス番号を割り当て、
キューイングされた許可のシーケンス番号を基準シーケンス番号と比較し、
該比較に応じてデータを通信する、
という各ステップを含む。
【０００７】
更に本発明によれば、相互接続デバイスからのデータ通信を制御する方法が提供され、この方法は、
データ通信を許可する許可を受信し、
該許可から許可シーケンス番号を抽出し、
該許可シーケンス番号を基準送信シーケンス番号と比較し、
該比較に応じてデータを通信する、
という各ステップを含む。
【０００８】
本発明の更に別の態様によれば、複数の相互接続デバイスに対して発行された複数の許可の実行を管理する方法が提供され、この方法は、
データを宛先インタフェースデバイスに通信する許可要求を相互接続デバイスから受信し、
許可に許可シーケンス番号を選択的に割り当て、該許可シーケンス番号が、許可を実行すべきときを画定し、
該許可シーケンス番号を相互接続デバイスに通信する、
という各ステップを含む。
【０００９】
本発明は、マシンによる実行時に本書で説明した方法のうちの任意の方法を該マシンに実行させる一連の命令を具現化するマシン読み取り可能媒体へと拡張させることが可能なものである。
【００１０】
本発明の更に別の実施態様によれば、複数の相互接続デバイス間でデータを通信するためのシステムが提供され、このシステムは、
ソース相互接続デバイスが宛先相互接続デバイスへデータを通信することを許可する各許可に関連づけされたシーケンス番号を割り当てるアービタと、
キューイングされた許可のシーケンス番号を基準シーケンス番号と比較するコンパレータと、
該比較に応じてデータを通信するデータ送信モジュールとを含む。
【００１１】
本発明の更に別の実施態様では、相互接続デバイスが提供され、この相互接続デバイスは、
相互接続により受信されたデータを関連づけされた相互接続デバイスへ通信することを許可する許可を受信するための許可モジュールと、
該許可から許可シーケンス番号を抽出し、該許可シーケンス番号を基準送信シーケンス番号と比較する、プロセッサと、
該比較に応じてデータを通信するデータ送信モジュールとを含む。
【００１２】
本発明の更に別の態様によれば、複数の相互接続デバイスに発行された複数の許可の実行を管理するアービタが提供され、該アービタが許可アロケータを含み、該許可アロケータが、
相互接続デバイスから宛先インタフェースデバイスへデータを通信するための許可要求を受信し、
許可を実行すべきときを画定する許可シーケンス番号を許可に選択的に割り当て、
この許可シーケンス番号を相互接続デバイスに通信する。
【００１３】
本発明の他の特徴は、図面と以下の詳細な説明から明らかとなろう。
【００１４】
本発明を図面を使用して限定的な意味ではなく例として説明する。図中、同様の符号は同一の特徴又は類似した特徴を示している。
【発明を実施するための最良の形態】
【００１５】
複数の相互接続デバイス間でデータを通信する方法及びシステムについて説明する。以下の記述では、本発明の完全な理解を提供するために例示を目的として多くの特定の詳細を示している。しかし、当業者であれば、本発明はこれらの特定の詳細がなくても実行できることが明らかであろう。
【００１６】
本発明の目的に関し、「相互接続デバイス」という用語は、ノード間に相互接続機能を提供する、スイッチ、又は、ルータ、リピータ、アダプタ、任意の他のデバイスを含むものと理解されたい。このような相互接続機能は、例えば、モジュール間の相互接続機能、又は、シャシ間の相互接続機能とすることが可能である。本発明の例示的な実施形態を、InfiniBand（商標）アーキテクチャによるシステム内に配置されたスイッチ内で実施するように説明するが、本発明の教示は、任意の相互接続アーキテクチャ内の任意の相互接続デバイスに適応することが可能である。
【００１７】
図面を参照すると、図２Ａと図２Ｂは、相互接続デバイス（例えばスイッチ）内で実施された本発明の例示的な実施形態によるデータパス20を図式的に表している。図示されたデータパス20は、I／Oポート24に接続されたクロスバー22、及び、管理ポート26、ビルトインセルフテスト（BIST）ポート28を含む。クロスバー22は、データバス30、要求バス32、及び許可バス34を含む。例示的な実施形態では、８つの通信ポート24がクロスバーに結合し、該８つの通信ポート24が、要求バス32を介してアービタ36にリソース要求を発行し、許可バス34を介してアービタ36からリソース許可を受信する。更に、管理ポート26と機能BISTポート28は、アービタ36に要求を送信し、アービタ36から許可を受信する。
【００１８】
アービタ36は、要求プリプロセッサ38とリソースアロケータ40とを含む。プリプロセッサ38は、リソース要求を要求バス32から受信し、修正したリソース要求42を生成し、修正したリソース要求42はリソースアロケータ40に送信される。リソースアロケータ40は次いで、許可バス34上でリソース許可を発行する。特定の実施形態では、リソース許可は許可シーケンス番号を含み、該許可シーケンス番号は、許可とそれに関連づけされたパケットの、許可送達順序、パケットプリフェッチシーケンス／順序、及びパケット送信順序を、同じ出力（ターゲット）ポート24を介して送信される他のパケットに関連して制御する。以下で詳述するように、異なる出力ポート24を介したパケットのシーケンスは、互いに独立したものとすることが可能である。
【００１９】
８つの通信ポート24に加えて、管理ポート26と機能BISTポート28もクロスバー22に結合される。管理ポート26は、例えば、ネットワーク構成を行うサブネットワーク管理エージェント（SMA）、エラーとパフォーマンスカウンタを維持するパフォーマンス管理エージェント（PMA）、環境制御と状態を監視するベースボード管理エージェント（BMA）、及びマイクロプロセッサインタフェースを含む。
【００２０】
一実施形態では、機能BISTポート28は、データパス20の相互接続デバイスのスタンドアロンでの急速なテストをサポートする。機能BISTポート28は、ランダムパケット生成装置、指示パケットバッファ、及び戻りパケットチェッカを含むことが可能である。
【００２１】
次に通信ポート24を参照すると、図３は、データパス20内で実施できる例示的な通信ポート24のアーキテクチャ上の詳細を提供する構成図である。図２Ａと図２Ｂのデータパス20は、８つの４×二重通信ポート24を含むように示されているが、本発明はこの構成に限定されるものではない。図示した各通信ポート24は、４つのシリアライザ−デシリアライザ回路（SerDes）50を含み、32ビットワードはこのシリアライザ−デシリアライザ回路50を介してポート24で受信され、ポート24から送信される。各SerDes50は、シリアルなコード化された（例えば8B10B）データビットストリームを、データと制御シンボルを含むパラレルバイトストリームに変換するよう動作する。一実施形態では、SerDes50を介してポート24で受信されたデータは、32ビットワードとしてエラスティックバッファ52に通信される。
【００２２】
パケットはエラスティックバッファ52からパケットデコーダ54に通信され、パケットデコーダ54はパケットに関連づけされた要求を生成し、該要求が要求キュー56に入れられ、要求バス32を介してアービタ36に通信される。本発明の例示的な実施形態では、パケットデコーダ54が生成し要求キュー56に入れられる要求のタイプには、パケット転送要求とクレジット更新要求が含まれる。
【００２３】
図示のように、各通信ポート24は、入力バッファ58を含む。入力バッファ58の容量は、データパス20がサポートするデータ仮想レーン（VL）の間で等しく分割される。一実施形態では、仮想レーンは、共通の物理リンクがサポートする独立したデータストリームである。「仮想レーン」の概念に関する詳細は、2002年11月6日の、InfiniBand（商標） Architecture Specification, volume 1, Release 1.1にある。
【００２４】
一実施形態では、各ポート24の入力バッファ58は、64バイトブロックに構成され、パケットは任意のバッファブロックの組を占めることができる。リンクリストが入力バッファ58内のパケットとフリーブロックを追跡する。図示された各入力バッファ58はまた、3つの読み取りポートクロスバー入力59を有する。
【００２５】
フローコントローラ60は、入力パケットデータと出力パケットデータの量を監視し、各仮想レーンのフリー入力バッファスペースを追跡し、外部物理リンクの反対の端で近隣のデバイスと使用可能な入力バッファスペースに関する情報を交換する。例示的なクレジットベースのフロー制御に関する詳細は、InfiniBand（商標）  Architecture  Specification  Volume  1にある。
【００２６】
通信ポート24はまた、リソース許可70（図５を参照のこと）を許可バス34を介してアービタ36から受信する許可コントローラ64を含む。
【００２７】
特定の実施形態では、ポート24が送信するルーティング要求は、要求タイプを識別する要求コード、要求が発行された特定のポート24を識別する入力ポート識別子、ポート24の許可コントローラ64がアービタ36から受信した許可を特定のパケットに関連づけることを許可する要求識別子又は「ハンドル」を含む。例えば、要求識別子は、特定の通信ポート24の入力バッファ58内の位置を指すポインタとすることが可能である。特定のポート24は、任意の順序でアービタ36が許可できる幾つかの未処理の要求を有する場合があるので、要求識別子が必要である。
【００２８】
パケット長識別子は、要求に関連づけされたパケットの長さに関する情報をアービタ36に提供する。直接ルーティング要求の出力ポート識別子は、関連するパケットを向けるべき通信ポート24（宛先又は出力ポート）を識別する。出力ポート識別子の代わりに、宛先ルーティング要求は宛先アドレスとパーティションキーを含む。宛先ルーティング要求はまた、サービスレベル識別子と、関連する宛先ルーティング要求に適用すべき特別なチェック又は処理を識別する要求拡張識別子を含むことが可能である。例えば、要求拡張識別子は、関連づけされたパケットがサブネット管理パケット（VL15）であるか、又は、生の（例えば非InfiniBand（商標））パケットであるか、パーティションキーが有効／無効な標準パケットであるかを識別することができる。
【００２９】
ポート識別子が識別する、関連づけされたポート24がオンラインであるか否かを示し、オンラインである場合には、そのリンク幅（例えば12×、4×、又は1×）を示す、ポート状態識別子を含むクレジット更新要求を提供することが可能である。各クレジット更新要求は、仮想レーン識別子とフロー制御クレジット限度を含む。
【００３０】
図４は、本発明の例示的な実施形態による、アービタ36の概念的な構成図である。図示のアービタ36は、要求プリプロセッサ38とリソースアロケータ40とを含む。上記のように、アービタ36はデータパス20内で中央アービトレーション機構を実施し、全ての要求とリソース情報が単一の場所（アービタ36）に持ち込まれる。しかし、本発明は分散アービトレーション機構内に配備することが可能であり、この場合には、意思決定はローカルリソースポイントで行われ、より少ない待ち時間とより高いスループットを得ることができる。
【００３１】
例示的な実施形態では、アービタ36は各サイクル毎に１つの新しい要求を受け取り、各サイクル毎に１つの許可を発行するシリアルアービトレーションを実施する。この場合も、平均パケット到着レートが１パケット／クロックサイクルよりも大きい構成において、パラレルアービトレーションを実施するアービタ内で本発明の教示を採用することが可能である。
【００３２】
まず要求プリプロセッサ38について扱う。要求（例えば、宛先ルーティング要求、直接ルーティング要求、又はクレジット更新要求）は、要求バス32上で受信される。パケットの宛先アドレスを使用して、ユニキャストルーティングテーブルとマルチキャストルーティングテーブルの両方をルックアップする。宛先アドレスがユニキャストアドレスである場合、宛先アドレスを出力ポート番号に変換する。他方、宛先がマルチキャストグループの場合、マルチキャストプロセッサはマルチキャストルーティングテーブルのルックアップに基づいて、多数のユニキャスト要求を作成する。
【００３３】
一実施形態では、パケット転送要求は、リソースアロケータ40に到着した際に、入力ポート24、パケットがスイッチに出る出力ポート24、パケットが出る仮想レーン、及びパケットの長さを指定する。入力ポート24から出力ポート24へのパスが使用可能な場合及び使用可能なときに、下流デバイスから充分なクレジットがある場合、リソースアロケータ40は許可を発行する。多数の要求が同じポート24をターゲットとしている場合、リソースアロケータ40は、Infiniband Architecture Specificationに記載されたアービトレーションプロトコルを使用する。
【００３４】
上述のように、アービタ36は、I／Oポート24、管理ポート26、及び機能BISTポート28からの各要求に応じて入力ポート又はソースポートを画定し、許可70を発行する。許可70の例示的なフォーマットを図５に示す。特定の実施形態では、アービタ36はジャスト・イン・タイム（just-in-time：時間通りの）許可及び先行（advance）許可を発行する。
【００３５】
ジャスト・イン・タイム許可のタイミングは、要求側（例えば入力ポート24）が、関連づけされた許可を受信した際にすぐにターゲット出力ポート24へのパケット送信を始められるように、アービタ36が決定することが可能である。アービタ36は、シーケンシャルなパケット転送間に重複が存在しないことを確実にする。一実施形態では、アービタ36は、パケットの長さと転送レートを参照してパケット転送の長さを決定することにより、これを達成する。アービタ36は、パケット転送時間を知ることにより、パケット転送の完了時を予測し、次のジャスト・イン・タイム許可を発行して、パケットの衝突やパケット間のギャップを避けることができる。ジャスト・イン・タイム許可は、アービタ36による許可の発行と入力ポート24によるパケット転送の開始との間の時間が予想可能である場合にのみ、充分に機能することができる。
【００３６】
先行許可は、ポート24によるパケット送信が始まる前に発行することができる。一度に１つのパケットしか転送できない場合に、多数の許可が未処理となる状況が発生し得る。先行許可の場合、衝突を避け、パケット間のギャップを最小限にするように、あらゆる所与の出力ポート24への転送を同期させることは、受信側に次第である。アービタ36により割り当てられる送信シーケンス番号は、各出力ポート24毎のパケット通信順序を指定する。以下で詳細に説明するように、一実施形態では、入力ポート24が送信シーケンス番号を使用して１つ又は複数の出力ポート24への送信を同期化する。先行許可は、アービタ36による許可の発行と入力ポート24によるパケット転送の開始との間の時間が予想できない場合に、満足に機能する。
【００３７】
アービタ36からポート24,26,28へ通信される許可70は、許可コードフィールド72で提供される２ビット許可コードを含む。例示的な実施形態では、コード「00」はアービタ36が要求側入力ポート24からの要求をまだ許可していないことを示し、コード「01」は要求が許可されたことを示す。コード「10」は許可を要求する間にエラーがあったことを示し、したがって入力ポート24がパケットを破棄すべきことを要求する。コード「11」は、別の使用のためにとっておくことができる。
【００３８】
許可コードに加えて、許可70はまた、送信速度フィールド74内に提供された２ビットの送信速度を含む。良好な許可については、送信速度は出力リンクの動作速度に一致することが可能である。以下で論じるように、一部のエラー状態では（例えばDLID変換が失敗した場合、又は出力ポート24がオフラインの場合など）、出力リンク速度が不明である場合がある。この場合、一実施形態では、送信速度は入力ポートのリンク速度に設定される。入力ポートのリンク速度が不明の場合（例えば、パケットを受信した後にリンクが切れた場合）に、送信速度を1×に設定することができる。
【００３９】
許可70はまた、エラーコードフィールド76に提供された８ビットのエラーコードも含む。該エラーコードは、エラー（例えば、宛先アドレスが範囲外である、ルーティングテーブルエントリが有効でない、出力又は宛先ポート24が有効でない、出力ポート24が入力ポート24と同じである、VLマップエントリが有効でない、パケットが近隣のMTUよりも大きい、生のパケットが出力ポート24にとって有効でない、Pキーが出力ポート24にとって有効でない、Pキーが入力ポート24にとって有効でない、出力ポート24がオフラインである、キューのヘッドの寿命タイムアウトが発生した、スイッチ寿命タイムアウトが発生した、といったもの）が存在した場合に、要求側入力ポート24がデータパケットを破棄しなければならないことを示す。エラーコードに８ビットを使用することにより、本発明の用途に依存して種々の異なるコードを画定できることが理解されよう。
【００４０】
一実施形態では、許可70は、許可シーケンス番号フィールド78内に提供された４ビット許可シーケンス番号を含む。ポート24が近隣の任意の入力ポート24からのパケットを受信する出力ポートとして機能しているとき、各許可シーケンス番号が特定のポート24に関連づけされる。許可シーケンス番号は、各ポート24が出力ポートとして機能する場合には、各ポート24にパケットが送信される順序を画定するので、それらは、他の全てのポート24により使用されて、特定の入力ポート24がそのデータパケットを特定の一連の許可シーケンス番号に関連付けされた出力ポート24に送信することができるタイミングが決定される。このため、一連の許可シーケンス番号を特定の各ポート24毎に提供して、他のポート24から特定のポート24へのパケットの通信を制御することができる。許可シーケンス番号は良好な許可についてだけ生成される（許可コード「01」）。次に詳細に示すように、アービタ36は、ポート24のうち任意のポートから受信したサービス要求を許可する時に許可シーケンス番号を生成し、データパケットを宛先又は出力ポート24に通信する。
【００４１】
許可70に戻る。特定の仮想レーン上の次のアウトバウンドフロー制御メッセージのために送信するブロックの合計数を識別するために12ビットの合計ブロック送信フィールド80が設けられる。許可70はまた、入力ポート24が特定のデータパケットについて予想できる許可の数を画定する許可カウントフィールド82内の８ビットの合計許可カウント、データパッケージを入力ポート24から通信する特定のポート24を識別する出力ポート番号を含む８ビットの出力ポートフィールド84、出力仮想レーンを識別する４ビットの仮想レーンフィールド86、ローカルルーティングヘッダからのパケット情報を含む11ビットのパケット長フィールド88、要求を受信した元の入力ポート番号を識別する８ビットの入力ポートフィールド90を含む。更に、許可70は、一意のハンドルを提供する17ビットの要求識別子フィールド92を含み、これにより、要求側ポート24が、該ポート24が許可を要求したデータパケットに特定の許可70を関連づけすることが可能となる。特定の実施形態では、要求識別子フィールド92は、ポート24の入力バッファ58内のパケットの開始を示すポインタである（図６を参照のこと）。
【００４２】
一実施形態では、上記のようにアービタ36が発行する許可シーケンス番号は４ビット番号であるので、データパス20の他のポート24からパケットが送信される先の特定の出力ポート24に関連づけされた16の許可シーケンス番号の順序を提供する。次に詳細に説明するように、アービタ36は（特定の各ポート24毎に）カウンタを含み、カウンタは、他のポート24がクロスバー22を超えてデータパケットを、カウンタに関連づけされた特定のポート24に通信することを許可する許可が発行される毎にインクリメントされる。
【００４３】
したがって、許可シーケンス番号フィールド78の中の許可シーケンス番号は、入力ポート24への許可70が実行できるときを識別する。
【００４４】
次に詳細に説明するように、複数の入力ポート24が許可シーケンス番号を使用し、特定の入力ポート24が、パケットを宛先又は出力ポート24に送信するときを識別する。
【００４５】
ポート24に送信すべき次のパケットを識別する送信シーケンス番号を提供することが可能である。したがって送信シーケンス番号は、関連づけされた許可シーケンス番号を見ることによって次のパケットを識別することができる。例として、ポート05,06,07,08（図２参照）がパケットをポート01に通信すると仮定する。ポート05,06,07,08がアービタ36から許可を要求すると、アービタ36は、ポート05,06,07,08がパケットをポート01に通信又は送信する順序を画定する一意の許可シーケンス番号を、各ポート05,06,07,08への各許可に含め、クロスバー22での衝突を避ける。特定の許可シーケンス番号に依存してパケットを通信するために、各ポートは、例示的なデータ送信モジュール62を含む（図２、図３、図６を参照のこと）。データ送信モジュール62は許可キュー102、及び、許可とプリフェッチコントローラ106、基準送信シーケンスカウンタ108（図８も参照のこと）、基準送信カウンタインクリメンタ110（図６を参照のこと）を含む。要求側ポート24が許可70を受信すると、許可70はデータ送信モジュール62の許可キュー102の中に入れられる。特定の許可70に関連づけされたパケットを出力ポート24に通信するときを識別するために、データ送信モジュール62は、基準送信シーケンスカウンタ108を含む。特に、基準送信シーケンスカウンタ108は、図面に描かれた特定の実施形態に関して、10のカウンタを含む。すなわち、８つのポート24の各々毎に１つのカウンタ、管理ポート26についての１つのカウンタ、機能BISTポート28についての１つのカウンタである（図８を参照のこと）。各特定のポート24,26,28に関する基準送信シーケンスカウンタ108は、実行すべき次の許可70、又は現在実行されている許可を識別する。したがって、基準送信シーケンスカウンタ108は、入力ポート24から出力ポート24に通信する次のパケット、又は現在通信されているパケットを識別する。
【００４６】
許可とプリフェッチコントローラ106（図６を参照のこと）は、プリフェッチコントローラ112、許可コントローラ114、及びプリフェッチバッファ116を含む。次により詳細に説明するように、プリフェッチコントローラ112は、クロスバー22上でパッケージを送信するときを予想し、事前に入力バッファ58から適切なパケットをフェッチする。その後、許可コントローラ114は事前に、許可キュー102の中の次の許可168を得て、その後、許可70が識別する特定の出力ポート24について送信シーケンス番号又はカウントを得る。送信シーケンス番号が許可70の許可シーケンス番号に一致し又は等しい場合に、データ送信モジュール62はパケットをプリフェッチバッファ116からクロスバー22に送信する。
【００４７】
特定の許可を実行している間、パケットを送信し許可70を実行しているポート24は、基準送信カウンタインクリメンタ110と出力インクリメント線118.0から118.9を使用して、全ての他のポート24に記憶された送信シーケンス番号をインクリメントする。各ポート24,26,28は10の出力インクリメント線118.0から118.9を有し、特定のポート24がクロスバー22を超えてパケットを宛先ポート24に通信すると、10の基準送信カウンタの各々をインクリメントする（図６の基準送信カウンタ108を参照のこと）。同様に、各ポート24は、図７に示すように、インクリメントグリッド122によって出力インクリメント線118.0から118.9に接続された10の入力インクリメント線120.0から120.9を含む。各ポートの基準送信シーケンスカウンタ108を更新又はインクリメントする他に、アービタ36の送信シーケンスカウンタ109も更新する（図４を参照のこと）。
【００４８】
図８は、ポート24,26,28に含まれる基準送信シーケンスカウンタ108と、アービタ36の送信シーケンス番号モジュール109の構成を例示的に示す。送信シーケンスインクリメンタ構成要素124は、入力インクリメント線120.0から120.9の遷移に応じて、ポート24の、関連づけされた基準送信カウンタをインクリメントする。例えば、基準送信シーケンスカウンタ126が出力ポート00に関連づけされており、インクリメントグリッド122の入力インクリメント線120.0が作動すると、基準インクリメンタ構成要素124は基準送信シーケンスカウンタ126をインクリメントする。同様に、基準送信シーケンスカウンタ127〜140は、それぞれ、ポート01〜09に関連づけされている。
【００４９】
上記のように、特定のポート24,26,28が出力ポートとして動作するときに、基準送信シーケンスカウンタ126〜140を使用してパケット送信を制御する。したがって例えば、基準送信シーケンスカウンタ126に関して、基準送信シーケンスカウンタ126は、ポート01〜09のうち任意のポートがポート00へのパケット送信を待っているときに、ポート01〜09のうち任意のポートで実行すべき許可70を識別する。したがって一実施形態では、ポート01〜09の各々の中の基準送信シーケンスカウンタ126は、ポート01〜09がパケットを宛先ポート00に通信する順序を制御する。次に詳細に説明するように同様な方法で、各ポート24,26,28は、入力バッファ58からプリフェッチバッファ116（図６を参照のこと）へのパケットのプリフェッチを制御する、基準プリフェッチシーケンスカウンタ142〜156（図８を参照のこと）を含む。したがって、特定の実施形態では、送信シーケンス番号インクリメント構成要素124と実質的に同様に機能するプリフェッチインクリメンタ158（図８を参照のこと）が備えられる。
【００５０】
特に図９を参照すると、本発明の別の様態では、符号150は、例示的なポート24などの複数の相互接続デバイス間でパケットを通信する例示的な方法を全般に示す。上記のように、ポート24のうち任意のポートが、他のポート24への通信するためのパケットを受信すると、アービタ36に要求を送信する。ブロック152に示されるように、アービタ36は要求を受信し、割り当て論理に基づいて、要求を許可するか又は拒絶する。これは決定ブロック154に示す。アービタ36がポート24からの要求を許可しない場合、入力ポート24にパッケージを別のポート24に送信するように画定し、出力ポート24を画定し、次いでアービタ36は、許可コードフィールド72に許可コード「10」（エラー）を含む許可70を発行する。したがってブロック156に示されるように、拒否された許可は、パケットを通信する許可を要求している特定のポート24に効果的に通信される。
【００５１】
決定ブロック154に戻ると、アービタ36が、特定の入力ポート24がパケットを出力ポート24に通信することを許可すると、許可コード「01」（グッド）が、許可70の許可コードフィールド72に提供され、送信速度識別子が送信速度フィールド74に提供され、許可シーケンス番号が生成され、許可70の許可シーケンスフィールド78に含められる。許可シーケンス番号は、アービタ36が生成した一連の番号のうちの１つであり、特定の出力ポート24と一意に関連づけされている。これをブロック158に示す。アービタ36は、合計許可カウントフィールド82内に合計許可カウントを含み、出力ポートフィールド84で出力ポート24を識別し、仮想レーンフィールド86で仮想レーンを画定し、パケット長フィールド88でパケット長を画定し、要求側ポート24が特定の許可70を許可70を要求しているパケットに関連づけることができるように要求識別子フィールド92で一意の要求識別子を提供し、入力ポートフィールド90で入力ポートを画定する。
【００５２】
アービタ36が許可70を構築すると、許可70はパケット転送を要求する特定の入力ポート24に通信される。これはブロック160に示す。要求側ポート24が許可70を受信すると、許可70は許可キュー102に入れられる（図６を参照のこと）。これは図９Ｂの決定ブロック162に示す。その後、決定ブロック164に示されるように、パケットプリフェッチバッファが使用可能であるか否かを確認するチェックを行う。使用可能でない場合、線166が示すループに入る。しかしプリフェッチバッファが使用可能な場合、決定ブロック168に示すように許可コードをチェックする。許可コードがエラーを示す場合、ブロック170に示すようにパケットはドロップされる。
【００５３】
したがって、一実施形態では、入力ポート24,26,28は許可コードフィールド72の中の許可コード「10」（エラー）を、アービタ36に提出した許可の拒絶として識別する。しかし許可コードフィールド72がコード「01」（グッド）を含み、許可シーケンス番号フィールド78に含まれる許可シーケンス番号がカレントの時、入力ポート24はクロスバー22を超えてデータパケットを通信する許可として解釈する。実際のコードは実施形態毎に異なる場合もあり、図５に示されたコードは例に過ぎないことを理解されたい。
【００５４】
グッド許可コードを受信すると、特定のターゲット出力ポート24の許可シーケンス番号とカレントプリフェッチシーケンス番号を比較する（決定ブロック172を参照のこと）。この比較は、許可シーケンス番号とカレントプリフェッチシーケンス番号が一致し、プリフェッチバッファ116（図６を参照のこと）が満たされる（ブロック176を参照のこと）まで繰り返される（線176を参照のこと）。次いでブロック177に示すように、特定の出力ポート24に関連づけされたプリフェッチシーケンスカウンタ142〜156がインクリメントされる。プリフェッチシーケンス番号はプリフェッチバッファが満たされている間インクリメントすることができる。図面に描かれた実施形態では、基準プリフェッチインクリメンタ121（図６を参照のこと）は、関連づけされた出力インクリメント線119.0から119.9を介して、各出力ポート24,26,28とアービタ36の中の対応する基準送信カウンタをインクリメントする（図７と図８を参照のこと）。次のステップは、プリフェッチバッファ内のデータパケットはいつ送信できるかを決定することである。
【００５５】
許可を実行し、データパケットを送信できる時を決定するために、許可シーケンス番号を特定の出力ポート24のカレント送信シーケンス番号と比較する（ブロック178参照）。この比較は、両者が一致し（線180参照）データパケットを特定の出力ポート24に転送するまで（ブロック182参照）実行される。その後、ブロック184に示すように、特定の出力ポート24,26,28に関連づけされた特定の送信シーケンスカウンタ126〜140が、説明したようにインクリメントされる。図面に描かれた実施形態では、基準送信インクリメンタ110（図６参照）は、関連づけされた出力インクリメント線118.0から118.9を介して、各出力ポート24,26,28とアービタ36内の対応する基準送信カウンタ（図７と図８を参照のこと）をインクリメントする。
【００５６】
方法150が実行する種々の手順又は機能は同時に実行できることが理解されよう。例えば、関連づけされたポート24の送信シーケンス番号とプリフェッチシーケンス番号の監視は、許可の処理機能から独立して繰り返して実行することができる。
【００５７】
特に図面のうち図１０を参照すると、符号200は本発明の一実施形態による、アービタ内で許可を管理する例示的な方法を全般に示す。方法200は図９Ａのブロック152〜160に示された機能の別の例示的な実施形態を提供する。方法200では、ブロック202に示されるように、アービタ36は、ポート24,26,28のうち任意のポートから、要求側ポート24から宛先出力ポート24にパケットを通信する要求を受信する。アービタ36は許可70を発行する前に、特定の宛先又は出力ポート24に送信すべきパケットに関してすでに発行されている未処理の許可70の数をチェックする。特に、次のシーケンス番号から送信シーケンス番号（現在実行されている許可のシーケンス番号）を差し引く。この差が15より大きい、すなわち15の未処理の許可がある場合、アービタ36は未処理の許可が15未満になるまで待つ（決定ブロック204参照）。しかし、未処理の許可が15未満の場合、アービタ36は決定ブロック206で、使用可能なクレジットがあるかどうかをチェックする。クレジットが使用可能になると、クレジットは最も優先順位の高い許可に割り当てられる。これはブロック208に示す。その後ブロック210で、許可シーケンス番号をインクリメントし、許可を発行する（ブロック212参照）。
【００５８】
特定の出力ポートに関する未処理の許可の最大数は、シーケンス番号を表すために使用するビット数によって限定することができる。しかし、他の関連のない要因も未処理の許可の数を限定しうることを理解されたい。一実施形態では、４つのビットを使用してシーケンス番号を表す。一般に、未処理の許可の最大数は2n−1に等しい。上式でnはシーケンス番号を表すために使用されるビットの数である。nが４に等しいときには、未処理の許可の最大数は15になる。
【００５９】
アービタ36は、線216.0〜216.9を介して許可70の実行を監視することができる（図７参照）。したがって特定の実施形態では、アービタ36は各特定のポート24について、未処理許可カウントレジスタ218を含む（図４参照）。未処理許可カウントレジスタ218は、アービタ36が許可70を発行しポート24が実行すると、インクリメントされ次いでデクリメントされる。代替的には、特定の実施形態では、未処理の許可の数は、カレント送信シーケンス番号を次の許可シーケンス番号から差し引いたモジュール2nで計算できる。
【００６０】
したがって上記のように、他のポート24（ポート00,02〜09）から、特定の出力ポート（例えば出力ポート01）に向けられたパケットは、許可シーケンス番号が画定する順序で送信される。
【００６１】
図１１は、データパス20の例示的なタイミング信号を示す。特定のポート24がクロスバー22を超えてパケットを送信し、関連づけされた許可70が実行されている間、パケットを送信した元の特定の入力ポート24に関連づけされた基準送信カウンタインクリメンタ110（図６を参照のこと）は高い遷移を提供する。これは図１１の228に示す。220の高い遷移は、出力インクリメント線118.0〜118.9（図６参照）を介して、インクリメントグリッド122（図７参照）に提供される。各ポート24が、関連づけされた入力インクリメント線120.0〜120.9（図６参照）で高い遷移220を受信すると、カウンタインクリメンタ構成要素124（図８参照）が、次のクロックサイクルで内部インクリメント遷移222を生成する。次いでカウンタインクリメンタ構成要素124は、符号224で示すように適切な基準送信シーケンスレジスタ126〜140をインクリメントし、基準送信シーケンス番号をインクリメントする。
【００６２】
上記の一般的な説明に追加して、図１１は、３つの異なるポートのパケットが、許可70で識別された宛先ポート24にパケットを通信する特定のタイミング信号の例を示す。この例では、ポート02,03,04は、宛先ポート01に通信するパケットを有すると仮定する。更に、アービタ36が、例えば、ポート03に送信する許可70に許可シーケンス番号01を割り当て、ポート02に送信する許可70に許可シーケンス番号02を割り当て、ポート04に送信する許可70に許可シーケンス番号03を割り当てていると仮定する。したがってポート02,03,04がパケットを宛先又は出力ポート01に通信する順序は、最初にポート03からのパケット、次にポート02からのパケット、3番目にポート04からのパケットとなる。ポート03が、内部に記憶された基準送信シーケンス番号が許可70に発行された許可シーケンス番号と等しいと識別すると、クロスバー22を越えてパケットを通信する。これを符号226に示す。しかし、パケット送信が完了する前にポート03は、関連づけされた出力インクリメント線118.1上で、インクリメント信号228を提供し、各ポート24内で宛先又は出力ポート01に関連づけされた基準送信シーケンス番号が02にインクリメントされる。このとき、ポート02は、基準送信シーケンス番号が、宛先ポート01に送信すべきパケットの許可70の許可シーケンス番号と等しくなったことを識別し、ポート02はこれにしたがってパケットの通信を開始する。これを符号230に示す。ここで再び、パケット通信完了の前に、ポート02は、上記と同様な方法で、インクリメント信号231で、各ポート24内の基準送信シーケンス番号をインクリメントする。各ポート24内の基準送信シーケンス番号は03にインクリメントされ、したがって、ポート04は、キューの中の次の許可が、基準送信シーケンス番号に一致する許可シーケンス番号を有すると識別し、クロスバー22を超えてパケットを通信する。これを符号232に示す。パケット送信が完了する前に、ポート04はインクリメント信号234を提供し、全てのポート24内の送信シーケンス基準カウントをインクリメントする。上記の例は、３つの例示的なポート02,03,04から、単一の出力ポート01へのデータの通信に関した例であることを理解されたい。しかし、この方法は、クロスバー22に接続されたポート24,26,28の間の任意のパケットの通信に適用される。
【００６３】
したがって一実施形態では、特定のポート24が出力デバイスとして動作しているときに各シーケンス番号がそのポートに関連づけされる基準送信シーケンス番号を使用することによって、特定の出力ポートへ送信する次のデータパケットは、前のパケットが通信されるとすぐにクロスバー22を超えて通信できるので、待ち時間が低減され、データパス20の使用が増大する。
【００６４】
特定の実施形態では、特定のポート24がデータパス20上でパケットをできるだけ速く送信するために、各ポート24にプリフェッチ機能が備えられる。特に特定の実施形態では、プリフェッチ機能は上記の送信シーケンス機能と実質的に似ているが、基準送信シーケンス番号を使用してデータ送信モジュール106からクロスバー22へパケットを通信するタイミングの代わりに、プリフェッチ機能は各ポート24で提供された基準プリフェッチシーケンス番号を使用する点が異なる。
【００６５】
特に、プリフェッチ機能は事前に特定のパケットを入力バッファ58からフェッチし、これをプリフェッチバッファ116にロードするので、特定の許可70が上記の許可シーケンス番号にしたがって実行されると、クロスバー22へのデータパケットの通信が促進される。特定の実施形態では、プリフェッチ機能は、異なる入力ポート24から特定の出力ポート24へ送信される２つのパケット間での送信ギャップを埋めることができる。
【００６６】
一実施形態では、特定の許可70の許可シーケンス番号がカレント基準プリフェッチシーケンス番号に一致すると、パケットプリフェッチが始まる（図１２のブロック240,242を参照）。ブロック244で示されるように、キューイングされた許可シーケンス番号がプリフェッチ基準シーケンス番号と一致すると、データパケットはプリフェッチバッファ116に移動する。基準送信シーケンス番号の場合と同様に、各ポート24は、データパス20の他のポート24毎に基準プリフェッチシーケンス番号のローカルコピーを維持しているので、プリフェッチカウンタ142,156（図８参照）が備えられる。更に、プリフェッチ機能に関するタイミング信号を図１３に示す。一実施形態では、プリフェッチシーケンス番号はプリフェッチ動作の開始時にインクリメントされる。プリフェッチ動作は重複する場合があるが、連続的に開始して、デッドロック状態の可能性を低減する。各ポート24においてポート24ごとの基準プリフェッチシーケンス番号をインクリメントするために、図７のインクリメントグリッド122をプリフェッチ機能のために複写する。許可シーケンス番号にしたがって送信する特定の許可70に関連づけされたパケットがプリフェッチバッファ116に送信されると、関連づけされたプリフェッチカウンタがインクリメントされ（図１２のブロック246を参照のこと）、特定の出力ポート24にパケットを通信する任意の他のポート24は、特定のパケットに関連づけされた許可シーケンス番号に基づいて送信すべきパケットをプリフェッチすることができる。
【００６７】
許可シーケンス番号は、各許可70に割り当てられた許可シーケンス番号が待機順序を画定する、仮想出力ポート許可キューを画定することができる。特定の実施形態では、物理的な出力ポート（例えばInfiniBandポート）毎に１つの仮想出力ポート許可キューがある。これらの実施形態では、物理的な出力ポートキューはない。したがって許可は、処理の間は、入力ポート許可キュー102か又は許可とプリフェッチコントローラ106のいずれかの中にある。
【００６８】
特定の実施形態では、許可シーケンス番号はnビットのバイナリ値であり、インクリメントされたモジュロ2nである。本発明の一実施形態ではnは４に等しいので、各出力ポート24は15（2n−1）までの未処理許可を有することができる。各出力ポート24は、カレントプリフェッチシーケンス番号、カレント送信シーケンス番号、及び次のシーケンス番号を有することができる。カレントプリフェッチシーケンス番号は、現在、入力バッファ58から、関連づけされたパケットのプリフェッチを開始する許可を有する許可70の許可シーケンス番号である。カレント送信シーケンス番号は、送信が許可されているか、又は、実際に今送信されている許可70の許可シーケンス番号であってよい。次いで次のシーケンス番号を、次の許可シーケンス番号として使用することができる。
【００６９】
パケットプリフェッチは理想的に、同じ出力ポート24に行く2つのパケットの間の送信ギャップを避けることができる。プリフェッチ機能は、出力ポートが次のパケットに対して準備ができた時と、入力バッファの読み取りインタリーブパターンの間の不一致を補償することができる。パケットプリフェッチは、入力バッファ58のインタリーブスロットが割り当てられるといつでも発生しうるが、許可70の許可シーケンス番号が出力ポート24のカレント送信シーケンス番号に一致しないため送信は開始できない。出力ポート24のカレント送信シーケンス番号は、入力バッファのインタリーブ回転の間いつでもインクリメントできる。送信シーケンス番号インクリメント信号が検出される前に読み取りが開始していない場合、連続するパケットの間にギャップがありうる。ギャップの大きさは、インクリメントが回転サイクル内で発生した時に依存する場合がある。
【００７０】
また、本発明の実施形態は、物理的な回路（例えば半導体チップ）内だけで実施できるのではなく、マシン読み取り可能媒体内でも実施できることに注意されたい。例えば、上記の回路と設計を、半導体デバイスを設計するために使用される設計ツールに関連づけされた、マシン読み取り可能媒体上に記憶するか及び／又は中に埋め込むことができる。この例には、VHSICハードウェア記述言語（VHDL）、又は、Verilog言語、SPICE言語のフォーマットのネットリストが含まれる。ネットリストの一部の例は、挙動レベルネットリスト、及び、レジスタ転送レベル（RTL）ネットリスト、ゲートレベルネットリスト、トランジスタレベルネットリストを含む。マシン読み取り可能媒体は、GDS−IIファイルなどのレイアウト情報を有する媒体も含む。更に、半導体チップ設計用のネットリストファイル又は他のマシン読み取り可能媒体をシミュレーション環境で使用し、上記の教示の方法を実行することもできる。
【００７１】
したがって、本発明の実施形態は、処理コア（例えばコンピュータのCPUなど）の一部の形態で実行されるか、又は、別の方法では、マシン読み取り可能媒体上又はその中で実施又は実現できるソフトウェアプログラムとして使用することが可能であるし、又はこれをサポートするものとして使用することが可能であることを理解されたい。マシン読み取り可能媒体は、マシン（例えばコンピュータ）が読み取ることのできる形態で情報を記憶又は送信する任意のメカニズムを含む。例えば、マシン読み取り可能媒体は、リードオンリーメモリ（ROM）、ランダムアクセスメモリ（RAM）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、又は、電気、光、音声、その他の形態の電波信号（例えば搬送波、赤外線信号、デジタル信号など）を含む。
【００７２】
複数の相互接続デバイス間でデータを通信する方法とシステムを説明した。特定の例示的な実施形態を参照して本発明を説明したが、本発明のより広い精神と範囲から離れることなくこれらの実施形態に種々の修正及び変更を行えることは明らかであろう。従って、本書と図面は、限定的なものではなく例示的なものとみなすべきである。
【図面の簡単な説明】
【００７３】
【図１】従来技術による、スイッチファブリックがサポートするシステムエリアネットワークを図式的に表した図である。
【図２Ａ】本発明の例示的な実施形態による、相互接続デバイス（例えばスイッチ）内で実施されたデータパスを図式的に表した図である。
【図２Ｂ】本発明の例示的な実施形態による、相互接続デバイス（例えばスイッチ）内で実施されたデータパスを図式的に表した図である。
【図３】本発明の例示的な実施形態による、データパス内に使用できる通信ポートを図式的に表した図である。
【図４】本発明の例示的な実施形態による、アービタを図式的に表した図である。
【図５Ａ】図４のアービタが発行する例示的な許可を示す図である。
【図５Ｂ】図４のアービタが発行する例示的な許可を示す図である。
【図６】図３のポートに含まれる一部の構成要素を図式的に表した図である。
【図７】本発明の例示的な実施形態による、許可シーケンスカウントをインクリメントする入力インクリメント線と出力インクリメント線の相互接続構成を図式的に表した図である。
【図８】本発明の例示的な実施形態による、送信シーケンス番号カウンタとプリフェッチシーケンス番号カウンタを図式的に表した図である。
【図９Ａ】本発明の例示的な実施形態による、複数の相互接続デバイス間でデータパケットを通信する方法を表した概念的なフローチャートである。
【図９Ｂ】本発明の例示的な実施形態による、複数の相互接続デバイス間でデータパケットを通信する方法を表した概念的なフローチャートである。
【図１０】本発明の例示的な実施形態による、アービタにおいて許可を生成するための方法を表した概念的なフローチャートである。
【図１１】送信シーケンス番号に関連づけされた、例示的なタイミング信号を示す図である。
【図１２】本発明の例示的な実施形態による、次の送信のためにデータパケットをプリフェッチする方法を表した概念的なフローチャートである。
【図１３】プリフェッチシーケンス番号に関連づけされた例示的なタイミング信号を表す図である。
【符号の説明】
【００７４】
01〜09  ポート
20  データパス
22  クロスバー
24  通信ポート
26  管理ポート
28  ビルトインセルフテストポート
30  データバス
32  要求バス
34  許可バス
36  アービタ
38  要求プリプロセッサ
40  リソースアロケータ
42  修正したリソース要求
50  シリアライザ−デシリアライザ回路
52  エラスティックバッファ
54  パケットデコーダ
56  要求キュー
58  入力バッファ
59  読み取りポートクロスバー入力
60  フローコントローラ
62  データ送信モジュール
64  許可コントローラ
【図１】
2005032225.tif 000003
【図２Ａ】
2005032225.tif 000004
【図２Ｂ】
2005032225.tif 000005
【図３】
2005032225.tif 000006
【図４】
2005032225.tif 000007
【図５Ａ】
2005032225.tif 000008
【図５Ｂ】
2005032225.tif 000009
【図６】
2005032225.tif 000010
【図７】
2005032225.tif 000011
【図８】
2005032225.tif 000012
【図９Ａ】
2005032225.tif 000013
【図９Ｂ】
2005032225.tif 000014
【図１０】
2005032225.tif 000015
【図１１】
2005032225.tif 000016
【図１２】
2005032225.tif 000017
【図１３】
2005032225.tif 000018