(57)【要約】【課題】ソース相互接続デバイスと宛先相互接続デバイスとの間でデータを通信する方法及びシステムを提供すること。【解決手段】本方法は、データを通信する前に前記ソース相互接続デバイスにおいてデータに識別要素を追加し、宛先相互接続デバイスにおいて識別要素を抽出するという各ステップを含む。宛先相互接続デバイスにおいて識別要素を処理し、該識別要素はデータの内容に関連するものである。本発明は、かかる方法を実行する一組の命令を含むマシンによる読み取りが可能な媒体へと拡張させることが可能である【選択図】図７
2004336798.tif 000002
【特許請求の範囲】
【請求項１】
データを通信するシステムであって、
データを受信し、該データに識別要素(82)を追加して、ハブを介した通信のためのハブデータを規定する、ソース相互接続デバイスであって、前記識別要素(82)が前記ハブデータの内容に関連するものである、ソース相互接続デバイスと、
前記ハブに接続されて前記ハブデータを受信する宛先相互接続デバイスであって、前記ハブデータから前記識別要素(82)を抽出して該識別要素(82)を処理する、宛先相互接続デバイスと
を含む、データを通信するシステム。
【請求項２】
前記ソース相互接続デバイスが、
データパケットを受信し、
該パケットからペイロードを抽出してデータ要素(84)内に含め、
該データ要素(84)を前記識別要素(82)と組み合わせて前記ハブデータを取得し、
該ハブデータを前記宛先インタフェースデバイスに送信する、
請求項１に記載のシステム。
【請求項３】
前記識別要素(82)が、前記宛先相互接続デバイスにより応答が必要とされていないことを識別するヌルコード、データ要素(84)中の情報を識別するエスケープコード、良好なパケットデータを識別するパケットデータコード、及び良好なデータパケットの最後のバイトをマークするマークコードのうち１つを識別する、請求項２に記載のシステム。
【請求項４】
前記識別要素(82)が、前記宛先相互接続デバイスが応答することになるコマンドを識別し、該コマンドが前記データ要素(84)により規定される、請求項２に記載のシステム。
【請求項５】
前記データ要素(84)が、コンマ、データパケットの開始、リンクパケットの開始、良好なパケットの終了、不良なパケットの終了、パッド、及びスキップのうち１つを規定する、請求項４に記載のシステム。
【請求項６】
前記識別要素(82)が、前記データ要素(84)中の情報の性質を識別し、該情報が、仮想レーン(VL)データ、送信済み合計ブロック(TBS)データ、入力ポートメッセージヘッダデータ、寿命タイムアウトデータ、生ストリングの開始、及び生ストリングの終了のうちの１つを含む、請求項２に記載のシステム。
【請求項７】
前記ソース相互接続デバイスが、パケット開始デリミタ及び可変CRC情報をパケットから除去し、前記宛先相互接続デバイスが、新しいCRC情報を決定し、該新しいCRC情報及び新しいパケット開始デリミタを、該宛先相互接続デバイスから別のデバイスへと送信されるパケットに追加する、請求項２に記載のシステム。
【請求項８】
前記ハブデータが、少なくとも１つの10ビットバス(10)を介して各相互接続デバイスに接続されたクロスバー(22)を介して通信され、前記識別要素(82)が、２ビットで規定され、前記データ要素(84)が８ビットで規定される、請求項２に記載のシステム。
【請求項９】
相互接続デバイスと宛先相互接続デバイスとの間の通信のためにデータパケットを処理する相互接続デバイスであって、
データパケットを受信する受信器(46)と、
前記パケットからペイロードを抽出し、該ペイロードをデータ要素(84)内に含めて識別要素(82)を生成し、及び該識別要素(82)を前記データ要素(84)に追加してハブデータを規定する、プロセッサと、
前記ハブデータを前記宛先相互接続デバイスに送信する送信器(50)と
を含む、相互接続デバイス。
【請求項１０】
前記識別要素(82)を追加して、前記宛先相互接続デバイスにより応答が必要とされていないことを識別するヌルコード、データ要素(84)内の情報を識別するエスケープコード、良好なパケットデータを識別するパケットデータコード、及び良好なデータパケットの最後のバイトをマークするマークコードのうち１つを識別する、請求項９に記載の相互接続デバイス。
【請求項１１】
前記識別要素(82)を追加して、前記宛先相互接続デバイスが応答することになるコマンドを識別し、前記相互接続デバイスが前記データ要素(84)内のコマンドを規定する、請求項９に記載の相互接続デバイス。
【請求項１２】
前記データ要素(84)が、コンマ、データパケットの開始、リンクパケットの開始、良好なパケットの終了、不良なパケットの終了、パッド、スキップのうちの１つを規定する、請求項１０に記載の相互接続デバイス。
【請求項１３】
前記識別要素(82)が、前記データ要素(84)内の情報の性質を識別し、該情報が、仮想レーン(VL)データ、送信済み合計ブロック(TBS)データ、入力ポートメッセージヘッダデータ、寿命タイムアウトデータ、生ストリングの開始、及び生ストリングの終了のうちの１つを含む、請求項９に記載の相互接続デバイス。
【請求項１４】
前記ハブデータを形成する前に前記パケットからパケット開始デリミタ及び可変CRC情報を除去する、請求項９に記載の相互接続デバイス。
【請求項１５】
前記ハブデータが少なくとも１つの10ビットバス(10)を介して各相互接続デバイスに接続されたクロスバー(22)を介して通信され、前記識別要素(82)が２ビットで規定され、及び前記データ要素(84)が８ビットで規定される、請求項９に記載の相互接続デバイス。
【請求項１６】
前記相互接続デバイスがソース相互接続デバイスを規定し、前記宛先相互接続デバイスが、前記ハブデータから前記識別要素(82)を抽出し、該識別要素(82)を処理し、及び該識別要素(82)の処理に応じて別のデバイスにデータパケットを送信する、請求項９に記載の相互接続デバイス。
【請求項１７】
前記宛先相互接続デバイスが、前記識別要素(82)を処理して、前記宛先相互接続デバイスにより応答が必要とされていないことを識別するヌルコード、データ要素(84)内の情報を識別するエスケープコード、良好なパケットデータを識別するパケットデータコード、及び良好なデータパケットの最後のバイトをマークするマークコードのうちの１つを識別する、請求項１６に記載の相互接続デバイス。
【請求項１８】
データを通信するシステムであって、
データを受信し、及び該データに識別要素(82)を追加して、ハブを介した通信のためのハブデータを規定する、ソース相互接続デバイスを規定する手段であって、前記識別要素(82)が前記データの内容に関連するものである、ソース相互接続デバイスを規定する手段と、
前記ハブに接続されて前記ハブデータを受信する宛先相互接続デバイスを規定する手段であって、該宛先相互接続デバイスが前記ハブデータから前記識別要素(82)を抽出して該識別要素(82)を処理する、宛先相互接続デバイスを規定する手段と
を含む、データを通信するシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にデータ通信の分野に関し、特に通信ネットワーク内の複数の相互接続デバイス間でデータを通信する方法とシステムに関する。
【背景技術】
【０００２】
既存のネットワーク化と相互接続技術は、コンピュータシステムの発展に追いつかなくなってきており、この結果、データサーバ、アプリケーション処理、エンタープライズ・コンピューティングに課せられる負担が増大している。この問題は、インターネットが一般的に成功したことにより更に悪化した。コンピューティング上の需要を満たすために実施された多くのコンピューティング技術（例えば、クラスタリング、フェイルセーフ、24×7の可用性）では、処理ノード（例えばサーバ）間でデータを移動する容量の増強、並びに処理ノード内（例えば中央処理装置（CPU）と入出力（I／O）デバイスとの間）でデータを移動する容量の増強が必要とされている。
【０００３】
上記の課題に対処するために、InfiniBandTMと呼ばれる新しい相互接続技術が提案されている。InfiniBandTMは、処理ノードとI／Oノードを相互接続し、システムエリアネットワーク（SAN）を形成する。このアーキテクチャは、ホストのオペレーティングシステム（OS）及びプロセッサプラットフォームから独立して設計されたものである。InfiniBandTMアーキテクチャ（IBA）は、ポイント・ツー・ポイントの切替式（switched）IPファブリックを中心とするものであり、これにより、エンド・ノード・デバイス（例えばシングルチップSCSI若しくはイーサネットアダプタ等の安価な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スイッチ式ファブリックをスイッチ又はルータ内で使用して、ネットワークシステム間（例えばプロセッサノード、記憶サブシステムなど）のネットワーク通信を促進させることもできる。この目的のために、図１は、InfiniBandTMアーキテクチャ仕様で提供される典型的なシステムエリアネットワーク（SAN）を示し、IBAスイッチ式ファブリックを使用したプロセッサノードとI／Oノードの相互接続を示している。しかし、IBAは本発明の用途を説明するための例として提供されているに過ぎないことを理解されたい。
【発明の開示】
【課題を解決するための手段】
【０００７】
本発明によれば、ソース相互接続デバイスと宛先相互接続デバイスとの間でデータを通信する方法が提供され、該方法は、
データを通信する前に前記ソース相互接続デバイスにおいてデータに識別要素を追加し、
前記宛先相互接続デバイスにおいて前記識別要素を抽出し、
前記宛先相互接続デバイスにおいて前記識別要素を処理し、該識別要素がデータの内容に関連するものである、
という各ステップを含む。
【０００８】
更に本発明によれば、ソース相互接続デバイスと宛先相互接続デバイスとの間で通信するデータパケットを処理する方法が提供され、該方法は、
データパケットを受信し、
パケットからペイロードを抽出して、該ペイロードをデータ要素に含め、
識別要素を生成し、
該識別要素を前記データ要素に追加してハブデータを規定し、
該ハブデータを宛先相互接続デバイスに通信する、
という各ステップを含む。
【０００９】
本発明の更なる態様によれば、宛先相互接続デバイスにおいてソース相互接続デバイスから受信したデータを処理する方法が提供され、該方法は、
データ要素と、該データ要素の内容に関連する識別要素とを含むハブデータを受信し、
前記ハブデータから前記識別要素を抽出し、
該識別要素を処理し、
前記識別要素の処理に応じて他のデバイスにデータパケットを送信する、
という各ステップを含む。
【００１０】
本発明の更に別の態様によれば、データを通信するシステムが提供され、該システムは、
データを受信し、該データの内容に関連する識別要素を該データに追加して、ハブを介した通信のためのハブデータを規定する、ソース相互接続デバイスと、
前記ハブに接続され、前記ハブデータを受信し、該ハブデータから識別要素を抽出し、及び該識別要素を処理する、宛先相互接続デバイスとを含む。
【００１１】
更に本発明によれば、相互接続デバイスと宛先相互接続デバイスとの間の通信のためにデータパケットを処理する相互接続デバイスが提供され、該相互接続デバイスは、
データパケットを受信する受信器と、
該データパケットからペイロードを抽出し、該ペイロードをデータ要素に含め、識別要素を生成し、該識別要素を前記データ要素に追加してハブデータを規定する、プロセッサと、
該ハブデータを前記宛先相互接続デバイスに送信する送信器とを含む。
【００１２】
本発明は、マシンによる実行時に該マシンに本書に記述した方法を実行させる一連の命令を含む、マシンによる読み取りが可能な媒体へと拡張させることが可能なものである。
【００１３】
本発明の他の特徴は、図面及び以下の詳細な説明から明らかとなろう。
【００１４】
本発明を図面を参照しながら限定的な意味ではなく例として説明する。同図では同様の符号は同一の機能又は類似した機能を示している。
【発明を実施するための最良の形態】
【００１５】
複数の相互接続デバイス間でデータを通信するための方法及びシステムについて説明する。以下の説明では、解説を目的として、本発明の完全な理解を提供するために多くの特定の詳細を示している。しかし、当業者であれば、本発明はこれらの特定の詳細がなくても実行できることが明らかであろう。
【００１６】
本発明の目的上、「相互接続デバイス」という用語は、ノード間に相互接続機能を提供する、スイッチ、ルータ、リピータ、アダプタ、又は任意の他のデバイスを含むものと理解されたい。このような相互接続機能は、例えば、モジュール間の相互接続機能、又は、シャシ間の相互接続機能とすることが可能である。本発明の例示的な実施形態を、InfiniBandTMアーキテクチャによるシステム内に配置したスイッチ内で実施されるものとして説明するが、本発明の教示は、任意の相互接続アーキテクチャ内の任意の相互接続デバイスに適用することが可能である。
【００１７】
図面を参照すると、図２Ａと図２Ｂは、相互接続デバイス（例えばスイッチ）内に実施された本発明の例示的な実施形態によるデータパス20を図式的に表している。図示されたデータパス20は、I／Oポート24に接続されたクロスバー22、管理ポート26、及び機能ビルトインセルフテスト（BIST）ポート28を含む。クロスバー22は、10ビットのデータバス30、要求バス32、及び許可バス34を含む。例示的な実施形態では、８つの通信ポート24がクロスバー22に結合され、該８つの通信ポート24が、要求バス32を介してアービタ36にリソース要求を発行し、また許可バス34を介してアービタ36からリソース許可を受信する。
【００１８】
アービタ36は、要求プリプロセッサ38とリソースアロケータ40とを含む。プリプロセッサ38は、リソース要求を要求バス32から受信し、修正したリソース要求42を生成し、該修正したリソース要求42がリソースアロケータ40に送信される。リソースアロケータ40は、次いで、許可バス34上でリソース許可を発行する。
【００１９】
８つの通信ポート24に加えて、管理ポート26及び機能BISTポート28もまたクロスバー22に結合される。管理ポート26は、例えば、ネットワーク構成を行うサブネットワーク管理エージェント（SMA）、エラーとパフォーマンスカウンタを維持するパフォーマンス管理エージェント（PMA）、環境制御と状態をモニタリングするベースボード管理エージェント（BMA）、及びマイクロプロセッサインタフェースを含む。
【００２０】
一実施形態では、機能BISTポート28は、データパス20の相互接続デバイスのスタンドアローンのat-speedテストをサポートする。機能BISTポート28は、ランダムパケット生成装置、指示パケットバッファ、及び戻りパケットチェッカを含むことが可能である。以下で詳細に説明するように、BISTポート28は、タグを使用して、出力ポート24に命令又はコマンドを通信できる。データは出力ポート24を介して通信できる。
【００２１】
特定の実施形態では、ハブの一部を形成するクロスバー22は、104入力×40出力×10ビット・クロスバーである。クロスバー22の各入力は、6ビットのアドレスを有することが可能であり、該6ビットのアドレスをそれに関連するデータ要素と同時にクロスバー22に提供することが可能である。クロスバー22の複数の10ビットデータパスの各々は１バイトレーンを規定することが可能である。以下で説明するように、１バイトレーンの最初の2ビットはタグを規定し、残りの8ビットはデータ要素を規定することが可能である。
【００２２】
次に通信ポート24を見ると、図３は、本発明の一実施形態による、例示的な通信ポート24のアーキテクチャ上の詳細を提供するブロック図である。通信ポート24はデータパス20内に実施することができる。当業者であれば、明確に表すためにポート24の一部の要素が省略されていることが理解されよう。更に、図２Ａと図２Ｂのデータパス20は、８つの4×二重通信ポート24を含むが、本発明はこの構成に限定されるものではない。一実施形態では、各ポート24が１つのクロスバー出力グループを有し、この用法はポート24の構成に依存する。例えば、4×モードでは、出力グループは単一の4×チャネルとして機能することができる。しかし、４つの1×チャネルを規定する1×モードでは、各バイトレーンは、同じ数値的な指示を有する1×サブポート専用のものとなる。各ポート24（例えばPM4C）は、３つのクロスバー入力グループを有し、ポート24は、入力グループの４つのバイトレーンを使用して、パケットを別の4×出力ポート24に送信することが可能である。特定の実施形態では、ポート24は別々にバイトレーンを使用してパケットを4つの異なる1×出力ポートに同時に送信することができる。クロスバー22（4×の構成又は1×の構成）を介したデータの転送レートは、出力ポート24の速度に一致していてもよい。特定の実施形態では、ポート24は4×ポートと1×ポートの混合を有することが可能であり、この目的のために、全てのポート24は、4×モード又は1×モードでクロスバー22を駆動できる。
【００２３】
図示された各通信ポート24はシリアライザ−デシリアライザ回路（SerDes）44を含む。32ビットワードは、このシリアライザ−デシリアライザ回路を介してポート24で受信されポート24から送信される。各SerDes44は、シリアルなコード化された（8B10B）データビットストリームを、データと制御シンボルを含むパラレルバイトストリームへと変換するよう動作する。
【００２４】
一実施形態では、SerDes44を介してポート24で受信されたデータは、Phy-Linkインタフェース（PLI）48の受信器46にパラレルに送信される。受信器46は、クロックの不一致、及びレーン間のスキューを解決することができる。特定の実施形態では、受信器46は特殊文字シーケンスを検出し、トレーニングプロシージャと初期化プロシージャを補助する。受信されたデータをクロスバー22からSerDes44へ送信するために送信器50が備えられる。特定の実施形態では、送信器50は、データをSerDes44に渡す前に、巡回冗長検査（CRC）と制御デリミタを挿入する。以下で詳細に説明するように、タグは、送信器50に、トレーニング、クロックアライメント、及びレーンアライメントのための特殊文字シーケンスをスケジューリングするよう命令することができる。更に、送信器50は、フロー制御ユニット56により要求された際に、リンクパケットと、順方向送信済合計ブロック（TBS）情報とをフロー制御ユニット56に送信することができる。トレーニングモジュール52は、リンクトレーニング及び初期化を選択的に実行することができ、レジスタインタフェース54は、リンクレジスタのPLIサブセットを含む。
【００２５】
フロー制御ユニット56は、管理モジュール58とそれに関連するレジスタ60、ポート24からアービタ36への要求を管理する要求マネジャー62、データをクロスバー22に通信する入力バッファ64、及びアービタ36から受信した許可を待ち行列に入れる許可キュー66を含む。要求マネジャー62は、データを要求バス32を介して通信するためのアービタ36への要求を管理する。
【００２６】
特定の実施形態では、入力バッファ64は20Kbyte入力バッファであり、この容量は、データパス20がサポートする複数のデータ仮想レーン（VL）間で等しく分割される。一実施形態では、仮想レーンは、共通の物理リンクでサポートされる独立したデータストリームである。「仮想レーン」の概念に関する詳細は、2000年10月24日のInfiniBandTM  Architecture Specification Volume 1に提供されている。
【００２７】
一実施形態では、各ポート24の入力バッファ64は複数の64バイトブロックに構成され、パケットはバッファブロックの任意の組を占めることができる。リンクリストは、入力バッファ64内のパケット及びフリーブロックを追跡する。各入力バッファ64は、３つの読み取りポート−クロスバー入力を有することが可能であり、これを介してデータがクロスバー22へ渡される。
【００２８】
特定の実施形態では、ポート24が送信するルーティング要求は、要求タイプを識別する要求コード、要求が発行される特定のポート24を識別する入力ポート識別子、及びポート24がアービタ36から受信した許可を特定のパケットに関連付けすることを可能にする要求識別子又は「ハンドル」を含む。例えば、該要求識別子は、特定の通信ポート24の入力バッファ64内の位置を示すポインタとすることが可能である。特定のポート24は、アービタ36が任意の順序で許可できる幾つかの未処理要求を有する場合があるので、要求識別子が必要である。
【００２９】
特定の実施形態では、送信器50（図３及び図４参照）は、送信器コントローラ68、データをクロスバー22から受信する入力マルチプレクサ（MUX）70、データをSerDes44に送る出力MUX72、及びCRC情報を生成するCRCジェネレータ74を含む。CRC情報は、出力MUX72によって、関連するデータと組み合わされる。以下で詳細に説明するように、10ビットデータはクロスバー22の各バイトレーンを越えて通信される。該10ビットのうち２ビットは他の８ビットの内容を識別するタグを規定し、他の８ビットはデータ要素を規定する。本発明の例示的な説明を容易にするために、ポート24が受信し、該ポート24から例えば他のスイッチ、ネットワークアダプタ、及びプロセッサ等の外部デバイスに通信されるデータを「パケット」と呼び、ハブ又はクロスバー22を越えて通信されるデータを「バイトレーンデータ」と呼ぶ。この用語は、制限的な用語と解釈すべきではないことを理解されたい。
【００３０】
パケット長識別子は、ソース又は入力ポート24からの要求に関連するパケットの長さに関する情報をアービタ36に提供する。ルーティング要求の宛先又は出力ポート識別子は、関連するパケットを向けるべき通信ポート24を識別する。出力ポート識別子の代わりに、宛先ルーティング要求は宛先アドレスとパーティションキーを含む。宛先ルーティング要求はまた、サービスレベル識別子及び要求拡張識別子を含むことが可能である。要求拡張識別子は、関連する宛先ルーティング要求に適用すべき特殊なチェック又は処理を識別する。例えば、要求拡張識別子は、関連するパケットが、サブセット管理パケット（VL15）であること、生パケット（例えばInfiniBandTM以外のパケット）であること、又はパーティションキーが有効／無効である場合に標準パケットであることを識別する。
【００３１】
ポート識別子により識別された関連するポートがオンラインであるか否かを示し、及びオンラインである場合にはリンク幅（例えば12×、4×、又は1×）を示す、ポート状態識別子を含むクレジット更新要求を提供することが可能である。各クレジット更新要求はまた、仮想レーン識別子及びフロー制御クレジット限度を含む。
【００３２】
上述のように、データは、10ビットバイトレーンデータ80という形で、クロスバー22を越えて通信される（図６参照）。図示する本発明の実施形態では、10ビットレーンデータの最初の２ビットはタグ82を規定し、残りの８ビットはデータ要素84を規定する。データ要素の意味又は性質はタグ82が規定する。タグ82が２ビットで規定されているので、タグ82は４つの異なるシナリオを規定できることが理解されよう。しかしクロスバー22の大きさに依存して、異なるサイズのタグ82とデータ要素84を提供することが可能であることを理解されたい。
【００３３】
本発明の一実施形態では、タグ82は、データ要素84の内容を以下の態様で識別することが可能である。特に、タグ値「00」が、ヌルを規定し、受信側ポート24からは何の動作も必要でないことを受信側ポート24に示す。この場合、例えば値「00000000」がデータ要素84に提供され、該データ要素84における他のあらゆる値を該特定のシステムでは無効又は不正とみなすことが可能である。
【００３４】
タグ82の中の値「01」は、データ要素84が、種々のエスケープモードを規定する「エスケープ」構成を識別することが可能である。これについては以下で詳細に説明する。
【００３５】
タグ82の中の値「10」は、データ要素84がパケットデータを含んでおり、したがって、該データ要素84に含まれる値が、クロスバー22を越えて通信されるパケット内のデータに依存することを指示し又は識別することが可能である。
【００３６】
最後に、タグ82中の値「11」は、データ要素84が良好なパケットの最後のデータバイトを含むというマークを識別し又は規定することが可能である。このため、タグ82は、入力又はソースポート24が、データ要素84中に提供するデータの性質を識別し、これに応じて出力又は宛先ポート24がこれに従って動作することを可能にする。この詳細は以下で説明する。
【００３７】
タグ82の中のエスケープコード「01」に戻ると、データ要素84の値は、最高で256までの異なるコマンド又はデータ識別子を識別することができる。一実施形態では、値「00000000」はヌルを規定し、パケット間（intra-packet）ギャップを導入する。値「00000010」は、仮想レーン（VL）、TBSデータ、及び入力ポートメッセージヘッダを規定することが可能である。値「00000011」は、寿命タイムアウトエラーを伴うパケットに関する仮想レーン、TBSデータ、及び入力ポートメッセージヘッダを規定することが可能である。値「00000100」は、不良パケットの終了（EBP）を規定することが可能である。したがって、上記エスケープコードは、出力ポート24に通信されたデータに関する情報を識別し又は該情報を出力ポート24に提供することが可能である。
【００３８】
特定の実施形態では、エスケープコードは出力ポート24にコマンドを規定する。例えば図６に示すように、レーンデータ80のデータ要素84に含まれるデータ値は、例えば、コンマ、データパケットの開始、リンクパケットの開始、良好なパケットの終了、不良なパケットの終了、パッド、スキップ、及び種々の他のコマンドを挿入するようポート24に命令することが可能である。更に、エスケープコードは、例えば、コード「11110000」を使用して生ストリングの開始を識別し、例えばコード「11110001」を使用して生ストリングの終了を識別することができる。図示する特定の実施形態では、データ要素84に含まれる値の一部だけが使用され、他の値は他の機能のためにとっておかれる。
【００３９】
特に図５を参照すると、データパケットが、入力又はソースポート24により受信され、クロスバー22を介して出力又は宛先ポート24に通信される際の、データパス20（図２参照）の簡単なハードウェアアーキテクチャ図が示されている。２つの相互接続デバイス間でデータを通信する本発明の一実施形態による例示的な方法を参照してパケットの通信について説明する。この方法を包括的に符号82で示す（図７参照）。
【００４０】
ブロック84に示すように、入力ポート24（図５参照）は、例えば外部デバイスなどの任意の他のデバイスから12バイトのデータパケットを受信する。該データパケットは典型的には、データパケットの開始（SDP）を規定するヘッダを含み、次に、生データを含むペイロードを含み、最後は、可変CRC（vCRC）と良好なパケットの終了（EGP）識別子を含むトレーラで終了する。
【００４１】
次いで入力又はソースポート24は、データパケットを処理し、SDPデリミタ、vCRCデリミタ、EGPデリミタを除去して、生データを抽出する。パケットが別のデリミタを含む異なるフォーマットを有する場合には、これらデリミタも除去してペイロード内に含まれる生データを抽出することを理解されたい。この例では、12バイトのデータパケットは８バイトの生データに低減される。これをブロック86に示す。その後、データパケットから取られた生データを、入力バッファ64に移動する（図３参照）。これをブロック88に示す。次いで８バイトの生データを２つの４バイトセクションに分解し（ブロック90参照）、４バイトの追加を生データに追加する。これをブロック92に示す。特に、４バイトの追加は、該追加を識別するエスケープシンボル、出力仮想レーン（VL）、TBSデータ、及びパケットを送信する入力ポートを識別する識別子を含む。次いで入力ポート24は適切なタグ82を追加してバイトレーンデータを規定し、該バイトレーンデータがクロスバー22を介して出力又は宛先ポート24に送信される。したがって、入力又はソースポート24が受信したデータパケットから生データだけを取り出し、該生データに４バイトの追加とタグ82を含めてバイトレーンデータを規定する。次いで該レーンデータをクロスバー22を越えて出力ポート24に送信する。これをブロック94に示す。
【００４２】
次に特に図８を参照すると、符号96は、本発明の別の態様による、２つの相互接続デバイス間でデータを通信する例示的な方法を包括的に示している。一実施形態では、該方法96は、出力ポート24でタグ82を解釈する。
【００４３】
ブロック98に示すように、出力ポート24はクロスバー22からレーンデータ80を受信し、その後、タグ82をレーンデータ80から抽出する。これをブロック100に示す。次いでタグ82を解釈し（ブロック102参照）、該タグ82に含まれるコードを識別する。ブロック104に示すように、タグ82が値「00」を含む場合には、ブロック106に示すようにレーンデータ80ひいてはデータパケットを無視すべきことを、出力24に示し又は識別することが可能である。
【００４４】
しかし、タグ82が値「00」を含まない場合には、方法96は決定ブロック108へと進み、タグ82が値「01」を含むか否かをチェックする。値「01」を含む場合、出力ポート24は、タグ82がエスケープコードを含み、該出力ポート24がデータ要素84に含まれるデータに依存して応答することを識別する。このために、出力ポート24は、データ要素84の値を読み取り（ブロック110参照）、ブロック112に示すようにデータを処理する。例えば、データ要素84中の値が「00000100」である場合、これは、不良なパケットの終了であることを出力ポート24に知らせることが可能であり、データ値が「11000000」である場合には、出力ポートが構成して外部デバイスに送信するデータパケット内にカンマを挿入することを該出力ポートに命令することが可能である。
【００４５】
決定ブロック108に戻ると、タグ82に含まれている値が「01」ではない場合には、方法96は、ブロック114に示すように、タグ82に含まれている値が「10」であるか否かをチェックする。値が「10」である場合には、ブロック116に示すように、データ要素84の値を生データとして処理するよう出力ポート24に命令する。
【００４６】
しかしタグ82中の値が「10」でない場合には、方法96は、ブロック118に示すように、タグ82中の値が「11」であるか否かをチェックする。上記のように、タグ82中の値「11」は、該パケットが良好なパケットの最後のバイトであることを識別するものである。
【００４７】
本発明の特定の実施形態では、データは、通常のパケット転送シーケンス（図１１参照）、切捨て（truncated）パケット転送シーケンス（図１２参照）、キャンセル（cancelled）パケット転送シーケンス（図１３参照）、及び生ストリングシーケンス内のパケット（図１４参照）で、クロスバー22を越えて通信できる。特定の実施形態では、クロスバー22を越えた全ての送信は４バイトの倍数の長さを有し、4×転送はワードが整列されたものとなる。例えば、送信の最初のバイトをバイトレーン0上で送信し、送信の最後のワードをバイトレーン3上で送信することが可能である。
【００４８】
図１１に示すように、通常のパケット転送シーケンスでは、タグ82は値「10」を含み、該値により、データ要素84に含まれるデータが、パケットデータであるか、又は入力ポート24で受信されたデータパケットのペイロードからのデータであるかが示される。データパケットのペイロードからのデータの各バイトがクロスバー22を越えて通信される際に、タグ82は値「10」を保持し、パケットの最後のバイトが通信される際に、タグ82は値を「11」に変更し、これにより該バイトが実際に良好なパケットの最後のバイトであることをマークする。その後、タグ82は、エスケープコード「01」及びこれに続く値「00000010」を含み、これにより次のバイト中のデータがVL、TBS、及び入力ポート（IP）メッセージヘッダ情報を提供することになることを出力ポート24に対して知らせ又は示す。したがって、タグ82が、その値を「10」に変更し、VL、TBS、及び入力ポート識別子により形成される追加が、入力ポート24によりクロスバー22を越えて出力ポート24へと提供される。
【００４９】
しかし、転送が始まった後に受信器46がエラーを検出した場合には、仮想カットスルー（virtual cut through）転送中にパケットを切り捨てることが可能である。図１２に示すように、切捨てパケット転送シーケンスが行われる際に、タグ82は、クロスバー22を越えてデータが通信されている間に「10」を含むことが可能である。しかし、不良なパケットが通信される場合には、入力ポート24は、エスケープ「01」及びデータ要素84内の値「11000100」を提供し、これにより不良なパケットの終了を示す。次のタグ82の値を繰り返し、したがって「01」を含むことが可能であるが、VL、TBS、及び入力ポートメッセージヘッダ情報を出力ポート24に提供するために、データ要素84中に「00000010」を含む。上記のように、エスケープデータが続くことが出力ポート24に通知されると、タグ82は、該タグ82内に「10」コードを提供することによりデータが含まれることを識別する。次のデータ要素84内のデータは、VL、TBS、及び入力ポートデータを含む。したがって、マークコード（タグ82内の「11」及びデータ要素84内のパケットデータ）で終了する通常のパケット転送とは異なり、切捨てパケットは、エスケープコード（タグ82中の「01」及びデータ要素84中の「00000100」）で終了する。
【００５０】
例えば、ポート24がアービタ36に要求を発行し又は送信したときとデータの通信を許可する良好な許可をポート24が受信したときとの間に受信エラーが検出された場合に、パケット転送をキャンセルすることが可能である。図１３に示すようにパケット転送がキャンセルされた場合には、入力ポート24は、タグ82中にエスケープコード「01」を含めることが可能であり、この場合、データ要素84中の対応するデータは「00000010」となる。その後、上記と同様に、タグ82がデータ識別子「10」を含み、データ要素84がVL、TBS、及び入力ポートデータを含む。パケットデータが出力ポート24に送信されない場合であっても、ラインデータ80が依然として出力ポート24に送信されて、例えば、出力ポート24においてTBSデータのローカルコピーが更新される。しかし、許可が不可の場合には、クロスバー22を越えてラインデータを送信することはできない。
【００５１】
上記のクロスバー22を越えたデータ通信では、パケットは、入力ポート24に受信され、特定の値がはぎ取られ、及びタグ情報が追加されて出力ポート24に通信される。このため、クロスバー22を越えるレーンデータは、パケット開始デリミタ（例えば１バイト）、可変CRC情報（２バイト）、及び／又はパケット終了デリミタ（例えば１バイト）を除去することが可能である。次いでこれらのデリミタを、出力ポート24の送信器50において追加して戻すことが可能である（図４参照）。このため、特定の実施形態では、クロスバー22を介したデータ転送は、パケットデータ及び４バイトの追加のみを含むことが可能である。該追加は、パケットデリミタ及びvCRCを失ったことにより残ったスペースを占めることが可能である。特定の実施形態では、追加は、タグ82中のエスケープコード、パケットの仮想レーン（VL）出力、現在のデータが送信された後のTBSデータ、及びパケットの送信元となった入力ポート24によって規定することができる。VL15パケットを転送を伴う特定の状況では、TBSデータは無視できる。
【００５２】
しかし、例えば、BISTポート28が作動可能な場合には、初期化、テスト、又はその他の目的のために、生データを出力ポート24のうちの任意の１つ又は２つ以上のポートに通信することができる。このような場合、BISTポート26は、３つの連続するバイトについて、タグ82中に値「00」を含み、次いで同タグ82中にエスケープコード「01」を含んで、生ストリングの開始を識別することができる。レーンデータ80（図６参照）、は、データ要素84内の値「11110000」によって、生ストリングの開始を識別する。その後、タグ82がエスケープコード「01」を含み、データ要素84が値「11000001」を含んで、データパケットの開始が識別される。次いでタグ82の値が「10」に変更されて、受信したパケットのペイロードのデータがデータ要素84中に含まれることが識別される。タグ82中の値「10」は、データバイトがクロスバー22を越えて通信されている間、一定のままとなる。
【００５３】
しかし、生ストリング構成では出力ポート24は受信したデータを変更しない。このため、例えば、出力ポート24は、それ自体のvCRC情報を含め又は挿入することはなく、BISTポート28により含められたデータの伝達手段（conduit）として単に機能する。したがって、図１４からわかるように、BISTポート28がパケットの最後のバイト及びvCRCを通信すると、タグ82の値は「10」で変わらないので、出力ポート24は、例えば外部のデバイスに送信するデータパケットの値を変えることもなく、それ自体の値を含めることもない。しかし、特定の実施形態では、BISTポート28はエスケープコード「01」を含めて、良好なパケットの終了（EGP）、VL、TBS、及び入力ポートメッセージデータを含めるよう出力ポート24に命令することが可能である。生ストリングの終了は、タグ82中の更なる「01」コード、それに次ぐデータ要素84中の値「11110001」、及びタグ82中の値「00」により識別される３つの反復するヌル値によって規定することができる。
【００５４】
このため、タグ82中のエスケープコード「01」を使用すると、入力ポート24、管理ポート26、又はBISTポート28は、所定の命令又はコマンドを出力ポート24に通信することができる。単にデータを入力ポート24から出力ポート24へ通信する場合には、出力ポート24は、それ自体のvCRCをデータ要素84に含まれているデータについて実行し、その結果のvCRCをデータパケットに含め、該データパケットが該出力ポート24に接続された外部デバイスに通信される（図５及び図９参照）。しかし、BISTポート28が、所定の初期化動作及びチェック動作を実行する場合には、エスケープコード「01」を使用してvCRC値をデータパケットに挿入しないよう出力ポート24に命令することができる。したがって、出力ポート24はデータパケットの特定のバイトをデータとして処理する。したがって、出力ポート24は伝達手段としての機能を果たし、BISTポート28は、データパケット内に含まれるVCRCの値を規定して、外部デバイスとの通信を可能にする（図１０参照）。
【００５５】
上記のように、エスケープコード「01」を使用して、データを変更せずに通過させるよう出力ポート24に命令することができる。したがって、BISTポート28は、ハブを越えるエラーパケットを拒否することができる。エラーパケットは、宛先ポート24に渡し、宛先ポート24のエラー処理機能をテストすることが可能である。したがって、BISTポート28は、パケットを生成し、第１のポート24を介して第２のポート24に渡し、この場合、該第２のポートには、該パケットがあたかも外部のデバイス又はオフチップデバイスから送信されたかのように見える。
【００５６】
一実施形態では、タグ82を使用してアイドルサイクルをデータパス20中に注入する。特に、エスケープコード「01」と、これに続くデータ要素84中の「11001100」により、アイドルサイクルを出力ポート24に注入する。
【００５７】
本開示の実施形態は、物理回路（例えば半導体チップ）内で実施されるだけではなく、マシン読み取り可能媒体内でも実施できることに注意されたい。例えば、上記の回路と設計は、半導体デバイスを設計する際に使用される設計ツールに関連づけられたマシン読み取り可能媒体上に記憶するか及び／又は媒体内に埋め込むことができる。この例は、VHSICハードウェア記述言語（VHDL）、Verilog言語、SPICE言語のフォーマットのネットリストを含む。一部のネットリストの例には、挙動レベルネットリスト、レジスタ転送レベル（RTL）ネットリスト、ゲートレベルネットリスト、トランジスタレベルネットリストを含む。マシン読み取り可能媒体は、GDS−IIファイルなどのレイアウト情報を有する媒体を含む。更に、半導体チップ設計用のネットリストファイル又は他のマシン読み取り可能媒体をシミュレーション環境で使用し、上記の教示の方法を実行することが可能である。
【００５８】
したがって、本発明の実施形態は、処理コア（例えばコンピュータのCPUなど）の一部という形で実行されるか、又は、別の方法では、マシン読み取り可能媒体上又はそ中で実施又は実現できるソフトウェアプログラムとして使用することが可能であるし、又はこれをサポートするものとして使用することが可能であることを理解されたい。マシン読み取り可能媒体は、マシン（例えばコンピュータ）が読み取ることのできる形態で情報を記憶又は送信する任意のメカニズムを含む。例えば、マシン読み取り可能媒体は、リードオンリーメモリ（ROM）、ランダムアクセスメモリ（RAM）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、又は、電気、光、音声、その他の形態の伝播信号（例えば搬送波、赤外線信号、デジタル信号など）を含む。
【００５９】
複数の相互接続デバイス間でデータを通信する方法とシステムを説明した。特定の例示的な実施形態を参照して本発明を説明したが、本発明のより広い精神と範囲から離れることなくこれらの実施形態に種々の修正及び変更を行えることは明らかであろう。従って、本明細書と図面は、限定的なものではなく例示的なものとみなすべきである。
【図面の簡単な説明】
【００６０】
【図１】従来技術によるスイッチファブリックによりサポートされるシステムエリアネットワークの概略図である。
【図２Ａ】本発明の例示的な実施形態による、相互接続デバイス（例えばスイッチ）内に実施されたデータパスの概略図である。
【図２Ｂ】本発明の例示的な実施形態による、相互接続デバイス（例えばスイッチ）内に実施されたデータパスの概略図である。
【図３】本発明の例示的な実施形態による、データパス内に使用できる通信ポートの概略図である。
【図４】図３のポートのデータ送信モジュールの概略図である。
【図５】クロスバーを介して２つのポート間でデータが通信される図２のデータパスの入力ポートと出力ポートを簡単に表した概略図である。
【図６】本発明の一実施形態による例示的なクロスバーデータのテーブルである。
【図７】本発明の例示的な実施形態による、クロスバーを介して複数の相互接続デバイス間でデータパケットを通信する方法のフロー図である。
【図８】本発明の例示的な実施形態による、クロスバーを介して複数の相互接続デバイス間でデータパケットを通信する方法のフロー図である。
【図９】図７及び図８の方法を、データパスの入力ポートと出力ポートとの間で通信される例示的なデータに適用した概略図である。
【図１０】図７及び図８の方法を、BISTポートと出力ポートとの間で通信される例示的なデータに適用した概略図である。
【図１１】例示的な通常のパケットのクロスバーを介した転送シーケンスを示す説明図である。
【図１２】例示的な切捨てパケットのクロスバーを介した転送シーケンスを示す説明図である。
【図１３】例示的なキャンセルパケットのクロスバーを介した転送シーケンスを示す説明図である。
【図１４】例示的な生ストリングのクロスバーを介した転送シーケンスを示す説明図である。
【符号の説明】
【００６１】
20  データパス
22  クロスバー
24  I／Oポート
26  管理ポート
28  機能BISTポート
30  データバス
32  要求バス
34  許可バス
36  アービタ
38  要求プリプロセッサ
40  リソースアロケータ
42  修正したリソース要求
44  シリアライザ−デシリアライザ回路
46  受信器
48  Phy-Linkインタフェース
50  送信器
52  トレーニングモジュール
54  レジスタインタフェース
56  フロー制御ユニット
58  管理モジュール
60  レジスタ
62  要求マネジャー
64  入力バッファ
66  許可キュー
70  入力マルチプレクサ
72  出力マルチプレクサ
74  CRCジェネレータ
80  レーンデータ
82  タグ
84  データ要素
【図１】
2004336798.tif 000003
【図２Ａ】
2004336798.tif 000004
【図２Ｂ】
2004336798.tif 000005
【図３】
2004336798.tif 000006
【図４】
2004336798.tif 000007
【図５】
2004336798.tif 000008
【図６】
2004336798.tif 000009
【図７】
2004336798.tif 000010
【図８】
2004336798.tif 000011
【図９】
2004336798.tif 000012
【図１０】
2004336798.tif 000013
【図１１】
2004336798.tif 000014
【図１２】
2004336798.tif 000015
【図１３】
2004336798.tif 000016
【図１４】
2004336798.tif 000017