(57)【要約】【課題】  高速スイッチング環境でパケットを切り換えることに付随する従来の欠点及び問題を軽減又は解消する誤り検査方法を提供すること。【解決手段】  高速スイッチング環境で誤りを検出する方法は、少なくとも第１及び第２部分を有する第１パケットを含む複数のパケットをスイッチ入力ポートで受信することを含む。本方法は、前記スイッチ入力ポートで第２部分の全体が受信される前に、前記第１部分のスイッチングを開始する。誤り検出が、前記第１パケットに付随するタグデータを利用して、前記第１パケットについて行われてもよい。本発明の特定の態様では、第１部分のスイッチングは、カットスルー転送法により行われる。本発明の別の特定の態様では、誤り検出が、限定された巡回冗長検査合計法を用いて行われる。【選択図】  図６
2005278175.tif 000002
【特許請求の範囲】
【請求項１】
高速スイッチング環境で誤りを検出する方法であって：
少なくとも第１及び第２部分を有する第１パケットを含む複数のパケットをスイッチ入力ポートで受信するステップ；
前記スイッチ入力ポートで第２部分の全体が受信される前に、前記第１部分のスイッチングを開始するステップ；及び
前記第１パケットに付随するタグデータを利用して、前記第１パケットについて誤り検査を実行するステップ；
を有することを特徴とする方法。
【請求項２】
前記第１部分のスイッチングを開始するステップが、カットスルー転送法により行われる
ことを特徴とする請求項１記載の方法。
【請求項３】
前記第１パケットに関連するタグＩＤを調べるステップ
を更に有することを特徴とする請求項１記載の方法。
【請求項４】
前記タグＩＤを前記第１パケットに割り当てるステップ
を更に有することを特徴とする請求項３記載の方法。
【請求項５】
前記第１部分をスイッチ出力ポートで受信するステップを更に有し、前記誤り検出が前記スイッチ出力ポートで実行される
ことを特徴とする請求項１記載の方法。
【請求項６】
高速スイッチング環境で誤りを検出するシステムであって：
少なくとも第１及び第２部分を有する第１パケットを含む複数のパケットを受信する第１スイッチ入力ポート；
前記スイッチ入力ポートで第２部分の全体が受信される前に、前記第１部分をスイッチングするスイッチ；及び
前記第１パケットに付随するタグデータを利用して、前記第１パケットについて誤り検査を行う検出モジュール；
を有することを特徴とするシステム。
【請求項７】
前記第１スイッチ入力ポートが、前記第１パケットに関連するタグＩＤを調べる
ことを特徴とする請求項６記載のシステム。
【請求項８】
前記第１スイッチ入力ポートが、前記タグＩＤを前記第１パケットに割り当てる
ことを特徴とする請求項７記載のシステム。
【請求項９】
高速スイッチング環境で誤りを検出するシステムであって：
１以上のメモリ構造；
複数の入力構造であって、各々が、通信ネットワークの要素から通知されたパケットを受信し、受信したパケットを１以上のメモリ構造の１以上に書き込むところの複数の入力構造；
複数の入力構造の各々が１以上のメモリ構造の各々に書き込みを行うように、複数の入力構造を１以上のメモリ構造に結合する第１スイッチング構造；
複数の出力構造であって、各々が、前記通信ネットワークの要素と通信するために、１以上のメモリ構造の１以上からパケットを読み取るところの複数の出力構造；
複数の出力構造の各々が１以上のメモリ構造の各々から読み取りを行うように、複数の出力構造を１以上のメモリ構造に結合する第２スイッチング構造であって、通信ネットワークの第１要素と通信するために１以上のメモリユニットの１以上からパケットの１つの第１部分を、通信ネットワークの第２要素から通知されたパケットの１つの第２部分を入力構造が受信する前に、出力構造が読み取るところの第２スイッチング構造；及び
前記第１パケットに付随するタグデータを用いて、前記第１パケットについて誤り検出を行う検出モジュール；
を有することを特徴とするシステム。
【請求項１０】
前記メモリ構造が、パケットに関連するタグＩＤを格納する
ことを特徴とする請求項９記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に通信システムに関連し、特にカットスルールーティングをサポートする限定された巡回冗長チェックサム（ＣＲＣ）修正法を使用するシステム及び方法に関する。
【背景技術】
【０００２】
高速シリアル相互接続は、通信環境の中で益々一般的になりつつあり、結果として、その環境の中でスイッチが演じる役割は、いっそう重要になってきている。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、従来のスイッチは、充分なスケーラビリティを与えず、それらの相互接続をサポートするのに一般に必要とされるスイッチング速度を与えない。
【０００４】
本発明の課題は、高速スイッチング環境でパケットを切り換えることに付随する従来の欠点及び問題を軽減又は解消する誤り検査方法及び誤り検査システムを提供することである。
【課題を解決するための手段】
【０００５】
本発明の一態様による高速スイッチング環境で誤りを検出する方法は、少なくとも第１及び第２部分を有する第１パケットを含む複数のパケットをスイッチ入力ポートで受信することを含む。本方法は、前記スイッチ入力ポートで第２部分の全体が受信される前に、前記第１部分のスイッチングを開始する。誤り検出が、前記第１パケットに付随するタグデータを利用して、前記第１パケットについて行われてもよい。本発明の特定の態様では、第１部分のスイッチングは、カットスルー転送法により行われる。本発明の別の特定の態様では、誤り検出が、限定された巡回冗長検査合計法を用いて行われる。
【発明の効果】
【０００６】
本発明の特定の実施例は、１以上の利点を与える。特定の実施例は、マルチキャストトラフィックに付随するメモリ条件を減らす。特定の実施例では、ポートモジュールがメモリリソースを共用し、ヘッドオブラインブロッキング（ｈｅａｄ−ｏｆ−ｌｉｎｅ  ｂｌｏｃｋｉｎｇ）を解消し、メモリ条件を減らし、ポートモジュールでのロード条件の変更をより効率的に処理可能にする。特定の実施例はカットスルー（ｃｕｔ−ｔｈｒｕｏｇｈ）転送機能を提供し、ストアアンドフォワード技法（格納及び転送法）を上回る１以上の利点を提供する。特定の実施例は、遅延したカットスルー転送を行い、これもストアアンドフォワード法を上回る１以上の利点を与える。特定の実施例はスイッチコアのスループットを増やす。特定の実施例は、パケットがスイッチコアにより切り換えられる速度を上げる。特定の実施例は誤り検出法を使用する。特定の実施例によれば、誤り検出法は、限定された巡回冗長チェックサム法を用いて行われる。特定の実施例は、スイッチコアのフォールスルー（ｆａｌｌ  ｔｈｒｏｕｇｈ）待ち時間を減らし、これはクラスタアプリケーションで重要になる。特定の実施例は、１つの集積回路（ＩＣ）又はチップに具現化される。特定の実施例はスイッチコアの電力損失を減らす。特定の実施例は、様々なアプリケーションに使用可能であり、そのアプリケーションは、イーサーネットスイッチ、インフィニバンド（ＩＮＦＩＮＩＢＡＮＤ）スイッチ、３ＧＩＯスイッチ、ハイパートランスポート（ＨＹＰＥＲＴＲＡＮＳＰＯＲＴ）スイッチ、ラピッドＩＯ（ＲＡＰＩＤ  ＩＯ）スイッチ又はプロプラエタリバックプレーンスイッチのようなものである。
【０００７】
本願に包含される図面、詳細な説明及び特許請求の範囲から当業者に明白になるように、ある実施例はこれらの技術的利点の全部又は一部を与え、或いは与えず、ある実施例は１以上の技術的利点を与える。
【発明を実施するための最良の形態】
【０００８】
本発明及び本発明に関する特徴及び利点のより完全な理解を図るため、添付図面に関連する以下の説明が参照される。
【０００９】
図１は例示的なシステムエリアネットワーク１０を示し、そのネットワークは、１以上のサーバシステム１４の中の通信をサポートするシリアル又は他の相互接続部１２；１以上の格納システム１６；１以上のネットワークシステム１８；及び相互接続部１２を１以上の他のネットワークに接続する１以上のルーティングシステム２０を含み、他のネットワークは、１以上のローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）又は他のネットワークを含む。サーバシステム１４の各々は、１以上の中央処理装置（ＣＰＵ）及び１以上のメモリ装置を含む。格納システム１６の各々は、１以上のチャネルアダプタ（ＣＡ）、１以上のディスクアダプタ（ＤＡ）及び１以上のＣＰＵモジュール（ＣＭ）を含む。相互接続部１２は１以上のスイッチ２２を含み、スイッチは、特定の実施例では、以下に更に充分に説明されるようなイーサーネットスイッチを含む。システムエリアネットワーク１０の要素は、１以上のリンクを用いて互いに接続され、リンクの各々は１以上のコンピュータバス、ローカルリアネットワーク（ＬＡＮ）、大都市エリアネットワーク（ＭＡＮ）、広域ネットワーク（ＷＡＮ）、一部のインターネット又は他の有線の、光学的な、無線の若しくは他のリンクを含む。システムエリアネットワーク１０は、特定の構成で互いに接続された特定の要素を含むように説明及び図示されるが、本発明では、どの形式でもそれで互いに接続された適切ないかなる要素も含む適切ないかなるシステムエリアネットワークをも想定している。
【００１０】
図２はシステムエリアネットワーク１０の例示的なスイッチ２２を示す。スイッチ２２は、複数のポート２４及びスイッチコア２６を含む。ポート２４の各々はスイッチコア２６及びシステムエリアネットワーク１０の要素（例えば、サーバシステム１４、格納システム１６、ネットワークシステム１８、ルーティングシステム２０又は他のスイッチ２２）に接続される。第１のポート２４は、システムエリアネットワーク１０の第１の要素からパケットを受信し、第２ポートに切り換えるためにそのパケットをスイッチコア２６に通知し、スイッチコアはシステムエリアネットワーク１０の第２の要素にパケットを通知する。パケットに関連するもの（リファレンス）は、適切ならば、パケット、データグラム、フレーム又は他のデータユニットを含むことができる。スイッチコア２６は、第１ポート２４からのパケットを受信し、以下に更に詳細に説明されるように、そのパケットを１以上の第２ポート２４に切り換える。特定の実施例では、スイッチ２２はイーサーネットスイッチを含む。特定の実施例では、スイッチ２２は有線の速度で又はその近辺でパケットを切り換えることができる。
【００１１】
本発明の特定の実施例によれば、スイッチ２２はカットスルー転送に応じるように構成される。従って、いかなる特定のパケットの切換でもそれは、全パケットがスイッチ２２で受信される前に始まってもよい。本実施例及び他の実施例の誤り検出に、カットスルールーティングをサポートするように限定された冗長検査合計法を使用してもよい。限定された冗長チェックサム修正法は、ＣＲＣを計算するためにパケットのタグの変化を利用してもよい。
【００１２】
図３は、高速スイッチング環境でパケットを切り換えるためのアーキテクチャ例２８を示す。アーキテクチャ２８は一方向のトラフィックを処理することができる。アーキテクチャ２８は、１以上の入力構造３０と、１以上の出力構造３２と、２つのスイッチング構造３４と、１以上のメモリ構造３６とを含む。アーキテクチャ２８の要素は、バス又は他のリンクを用いて互いに結合される。特定の実施例では、アーキテクチャ２８は１つのＩＣに実現される。トラフィックに関連するもの（リファレンス）は、到来し、経路を通過し及びアーキテクチャ２８を出る１以上のパケットを含み、トラフィックの方向に関するもの（リファレンス）は、入力構造３０を通じてどのパケットがアーキテクチャ２８に入ったか及び出力構造３２を通じてどのパケットがアーキテクチャ２８を出たかに従う、入力構造３０及び出力構造３２の間の関係を含む。アーキテクチャ２８は、様々なアプリケーションで使用可能である。限定ではなく例として、アーキテクチャ２８は、（特定の実施例ではギガビットイーサーネットスイッチ２２を含む）イーサーネットスイッチ２２のスイッチコア２６；インフィニバンドスイッチ２２のスイッチコア２６；３ＧＩＯスイッチ２２のスイッチコア２６；ハイパートランスポートスイッチ２２のスイッチコア；ラピッドＩＯスイッチ２２のスイッチコア２６；１以上の格納システム１６，ネットワークシステム１８又は双方を含むプロプラエタリバックプレーンスイッチ２２のスイッチコア２６で使用可能である。
【００１３】
入力構造３０は、スイッチ２２のスイッチコア２６及びポート２４間のインターフェースを提供し、且つポート２４からのパケットを受信し、スイッチング構造３４ａを通じて１以上のメモリ構造３６にそのパケットを書き込む入力論理を含む。入力構造３０は、１以上のリンクを用いてポート２４及びスイッチング構造３４ａに接続される。出力構造３２は、スイッチコア２６及びポート２４の間のインターフェースも提供するが、１以上のメモリ構造３６からのパケットをスイッチング構造３４ｂを通じて読み取り、そのパケットをポート２４に通知するための出力論理を含む。出力構造３２は、１以上のリンクを用いて、ポート２４及びスイッチング構造３４ｂに結合される。システムエリアネットワーク１０の第１要素から入力構造３０により受信したパケットは、入力構造により１以上のメモリ構造３６に書き込まれ、出力構造３２からシステムエリアネットワーク１０の１以上の第２要素へ通知するために、メモリ構造３６から１以上の出力構造３２に後に読み取られる。
【００１４】
入力構造３０により受信したパケット又は出力構造３２から通知されたパケットに関連するもの（リファレンス）は、受信若しくは通知された全パケット又は適切ならば受信若しくは通知されたパケットの一部分のみを含む。同様に、１以上のメモリ構造３６に書き込まれる又はそこから読み出されるパケットに関連するもの（リファレンス）は、メモリ構造３６に読み書きされる全パケット、又は適切ならばメモリ構造３６に読み書きされるパケットの一部分のみを含む。以下に更に充分に説明されるように、特定の実施例では、入力構造３０は出力構造３２と組み合わせ可能であり、入力構造３０及び出力構造３２を利用する単独のポートモジュール３８（以下に説明される）が、入力論理及び出力論理の双方を含むようにする。代替例として、特定の実施例では、ポートモジュール３８は入力論理のみ又は出力論理のみを含む。
【００１５】
スイッチングモジュール３４ａは、入力構造３０からパケットを受信し、１以上のメモリ構造３６にパケットを切り換える。スイッチング構造３４ａによる書き込み動作は、スケジュール法に従って計画される。一例として、特定の実施例では、スイッチング構造３４ａによる書き込み動作に対して、静的なスケジューリングが使用される。以下に更に詳細に説明されるように、スイッチング構造３４ａは、入力構造３０及びメモリ構造３６の間でパケットを交換するために１以上の要素を含む。スイッチング構造３４ｂは、メモリ構造３６からパケットを受信し、１以上の出力構造３２にパケットを切り換える。スイッチング構造３４ｂによる読み込み動作は、スケジューリング法に従って計画される。一例として、特定の実施例では、スイッチング構造３４ｂにより読み込み動作に対して、要求次第の予定法（オンデマンドスケジューリング）が使用される。オンデマンドスケジューリングは、「接続及び解放」手法を含むことができる。
【００１６】
以下に更に詳細に説明されるように、スイッチング構造３４ｂは、出力構造３２及びメモリ構造３６の間でパケットを切り換える１以上の要素を含む。特定の実施例では、スイッチング構造３４ａはスイッチング構造３４ｂと組み合わせ可能であり、入力構造３０及びメモリ構造３６の間のパケットそしてメモリ構造３６及び出力構造３２の間のパケットを切り換えるための１つの部品構成が、スイッチング構造３４ａ及びスイッチング構造３４ｂの双方を実現するようにする。この実施例では、１以上の要素の組み合わせが、スイッチング構造３４ａ及びスイッチング構造３４ｂにより共用可能であるが、スイッチング構造３４ａ及びスイッチング構造３４ｂにより共用されることは必須でない。代替例として、特定の実施例では、スイッチング構造３４ａは、入力構造３０及びメモリ構造３６の間でパケットを切り換える部品構成の中で実現可能であり、メモリ構造等は、メモリ構造３６及び出力構造３２の間でパケットを切り換える部品構成と分離され、出力構造３２にてスイッチング構造３４ｂが実現される。同様に、スイッチング構造３４ｂは、メモリ構造３６及び出力構造３２の間でパケットを切り換える部品構造の中で実現可能であり、メモリ構造等は、入力構造３０及びメモリ構造３６の間でパケットを切り換える部品構成と分離され、メモリ構造３６内でスイッチング構造３４ａが実現される。
【００１７】
スイッチコア２６から受信したパケットは、１以上のメモリ構造３６に書き込まれ、スイッチコア２６外に通知するためにメモリ構造３６から以後読み出される。メモリ構造３６は、１以上のリンクを用いて、書き込み動作を行うためにスイッチング構造３４ａに接続される。メモリ構造３６は、１以上のリンクを用いて読み込み動作を行うためにスイッチング構造３４ｂにも接続される。一例として、特定の実施例では、メモリ構造３６は、１つのリンクを用いてスイッチング構造３４ａに接続され、４つのリンクを用いてスイッチング構造３４ｂに接続され、書き込みサイクル毎にメモリ構造３６への１つの書き込み動作がなされ（書き込みサイクルは、スイッチコア２６の１以上の一連のクロックサイクルを含み、スイッチコアにて１以上のパケットがメモリ構造３６に書き込まれる）、読み込みサイクル毎にメモリ構造３６から４つの読み取り動作がなされるのを可能にする（読み込みサイクルは、スイッチコア２６の１以上の一連のクロックサイクルを含み、スイッチコアにて１以上のパケットがメモリ構造３６から読み取られる。）。メモリ構造３６は、データが読み書きされる１以上の要素を含む。一例として、特定の実施例では、メモリ構造３６は１以上のスタティックランダムアクセスメモリ（ＳＲＡＭ）装置を含む。
【００１８】
特定の実施例では、どの入力構造３０でもそれは、いかなるメモリ構造３６に書き込み可能であり、どの出力構造３２でもそれは、いかなるメモリ構造３６からでも読み取り可能である。入力構造３０及び出力構造３２によるメモリ構造３６の共用化は、ヘッドオブラインブロッキングを排除し（それにより、スイッチコア２６のスリープットを向上させ）、スイッチコア２６に関するメモリ条件を減らし、入力構造３０、出力構造３２又は双方でのロード条件の変化をスイッチコア２６が効率的に処理することを可能にする。特定の実施例では、システムエリアネットワーク１０の第１の素子からスイッチコア２６により受信されたパケットの一部が、コア２６が全パケットを受信する前に、スイッチコア２６からシステムエリアネットワークの１以上の第２素子へ通知可能である。特定の実施例では、このカットスルー転送は、「ストアアンドフォワード」法を上回る１以上の利点を提供する（その利点は、少ない待ち時間、少ないメモリ条件及び向上したスループット等である。）。
【００１９】
特定の実施例では、スイッチコア２６は、一方向のトラフィックのみを処理する１つのアーキテクチャ２８のみを含む。代替例として、特定の実施例では、スイッチコア２６は２方向のトラフィックを処理するために２つのアーキテクチャ２８を含む。これらの実施例では、アーキテクチャ２８の１以上の素子が互いに組み合わせられてもよい。例として、入力構造３０は、出力構造３２と共に組み合わせられ、ポートモジュール３８内で実現され、それらは上述したように入力論理及び出力論理双方を含む。他の例として、スイッチング構造３４ａは入力構造３４ｂと組み合わせ可能であり、入力構造３０及びメモリ構造３６間のパケットや、メモリ構造３６及び出力構造３２間のパケットを切り換える１つの部品構成が、スイッチング構造３４ａ及びスイッチング構造３４ｂの双方を実現するようにする。
【００２０】
入力構造３０は出力構造３２と組み合わせられるように説明され、スイッチング構造３４ａはスイッチング構造３４ｂと組み合わせられるように説明されるが、本発明は、適切ないかなる構成においてもアーキテクチャ２８の適切ないかなる部品の組み合わせでもそれを想定している。一例として、２つのアーキテクチャ２８が２方向のトラフィックを処理するために互いに組み合わせられる場合に、スイッチコアの１以上のポートモジュール３８は、入力論理のみ又は出力論理のみを含むことができる。更に、スイッチング構造４３４ａは、要素の構成の中で実現可能であり、その要素はスイッチング構造３４ｂが実現される要素の構成から分離しており、又はその３４ａ，ｂの関係を逆にしてもよい。
【００２１】
図４は、スイッチ２２のスイッチコア２６の一例を示す。スイッチコア２６は、１２個のポートモジュール３８と、ストリームメモリ４０と、タグメモリ４２と、中央エージェント４４と、ルーティングモジュール４６とを含む。スイッチコア２６の要素は、バス又は他のリンクを用いて互いに結合される。特定の実施例では、スイッチコア２６は単独のＩＣで実現される。スイッチコア２６のデフォルト又は他のモードでは、スイッチコア２６がパケット全体を受信する前に、システムエリアネットワーク１０の第１要素からスイッチコア２６により受信されたパケットの一部が、スイッチコア２６からシステムエリアネットワーク１０の１以上の第２要素に通知可能である。特定の実施例では、カットスルー転送が、ストアアンドフォワード法を上回る１以上の利点を与える（その利点は、例えば少ない待ち時間、少ないメモリ条件及び増進したスループット等である。）。スイッチコア２６は、様々なアプリケーション用に構築可能である。限定ではなく一例として、スイッチコア２６は、イーサーネット（登録商標）スイッチ２２（特定の実施例ではギガビットイーサーネットスイッチ２２を含む）；インフィニバンドスイッチ２２；３ＧＩＯスイッチ２２；ハイパートランスポートスイッチ２２；ラピッドＩＯスイッチ２２；格納システム１６、ネットワーク要素１８又は双方のプロプラエタリバックプレーンスイッチ２２；又はその他のスイッチ２２用に構築可能である。
【００２２】
ポートモジュール３８は、スイッチ２２のスイッチコア２６及びポート２４の間のインターフェースを提供する。ポートモジュール３８は、ポート２４、ストリームメモリ４０及びタグメモリ４２に結合される。特定の実施例では、ポートモジュール３８は、入力ロジック部（システムエリアネットワーク１０の要素からパケットを受信し、そのパケットをストリームメモリ４０に書き込むのに使用される）及び出力ロジック部（ストリームメモリ４０からパケットを読み出し、そのパケットをシステムエリアネットワーク１０の要素に通知するのに使用される）の双方を含む。代替例として、特定の実施例では、ポートモジュール３８は入力ロジック部のみ又は出力ロジック部のみを含む。ポートモジュール３８に関連するもの（リファレンス）は、入力ロジック、出力ロジック又は適切ならば双方を含むポートモジュール３８を含むことができる。ポートモジュール３８は、上り（インバウンド）フロー制御用の入力バッファを含むこともできる。特定の実施例では、ストリームメモリ４０にポートメモリ３８を結合するリンクは、２つのリンクを含み：１つは書き込み動作についてのものであり（ポートモジュール３８からストリームメモリ４０へデータが書き込まれるスイッチコア２６の動作を含む）、１つは読み込み動作についてのものである（ストリームメモリ４０からポートモジュール３８へデータが読み取られるスイッチコア２６の動作を含む。）。これらのリンクの各々は、３６ビットを搬送でき、ポートモジュール３８及びストリームメモリ４０間のデータ経路を、双方向で３６ビット幅にする。
【００２３】
システムエリアネットワーク１０の第１要素からの第１ポートモジュール３８により受信されたパケットは、第１ポートモジュール３８によりストリームメモリ４０に書き込まれ、後に第２ポートモジュール３８からシステムエリアネットワーク１０の１以上の第２要素へ通知するために、ストリームメモリ４０から１以上の第２ポートに読み込まれる。ポートモジュール３８により受信された又はポートモジュール３８から通知されたパケットに関連するもの（リファレンス）は、ポートモジュール３８により受信された又はポートモジュール３８から通知されたパケット全体、又は適切ならばポートモジュール３８により受信された又はポートモジュール３８から通知されたパケットの一部分のみを含む。同様に、ストリームメモリ４０により読み込まれる又は書き込まれるパケットに関連するもの（リファレンス）は、ストリームメモリ４０に書き込まれる又はそこから読み取られるパケットの全体、又は適切ならばストリームメモリ４０に書き込まれる又はそこから読み取られるパケットの一部分のみを含む。入力論理部を含むいかなるポートモジュール３８もストリームメモリ４０に書き込みを行うことができ、出力論理部を含むいかなるポートモジュール３８もストリームメモリ４０から読み込みを行うことができる。特定の実施例では、ポートモジュール３８によるストリームメモリ４０の共用化は、ヘッドオブラインブロッキングを解消し（それによりスイッチコア２６のスループットを向上させ）、スイッチコア２６に関連するメモリ条件を緩和し、ポートモジュール３８のロード条件の変化をスイッチコア２６が一層適切に処理できるようにする。
【００２４】
図５に示されるように、スイッチコア２６のストリームメモリ４０は複数のブロック５４に分割され、それらのブロックは複数のワード５６に更に分割される。行はブロック５４を表し、行と列の交点はブロック５４のワード５６を表す。特定の実施例では、ストリームメモリ４０は１５３６個のブロック５４に分割され、各ブロック５４は２４個のワード５６を含み、１つのワード５６は７２ビットを含む。ストリームメモリ４０は特定数のブロック５４に分割され、それらのブロックは特定数のビットを含む特定数のワード５６に分割されるように説明及び図示されるが、本発明では、ストリームメモリ４０は適切ないかなる数のブロック５４に分割されてもよく、ブロックは適切ないかなる数のワード５６に分割されてもよく、ワードは適切ないかなるビット数でもよい。パケットサイズはパケット毎に変化してもよい。ブロック５４と同数のビット又はより少ない数のビットを含むパケットは１つのブロック５４に書き込み可能であり、ブロック５４より多数のビットを含むパケットは１より多くのブロック５４に書き込み可能であり、その１より多くのブロックが互いに連続していることは必須ではない。
【００２５】
ブロック５４への書き込み又はそこからの読み込みの際に、ポートモジュール３８は、ブロック５４のどのワード５６からでも開始することができ、順に、ブロック５４のワード５６に書き込み又はそこから読み込むことができる。ポートモジュール３８は、ブロック５４に書き込む又はそこから読み込むように、ブロック５４の第１ワード５６を回り込む（ｗｒａｐ  ａｒｏｕｎｄ）こともできる。ブロック５４はアドレスを有し、そのアドレスは書き込み動作又は読み込み動作時にブロック５４を識別するのに使用でき、書き込み動作又は読み込み動作時にブロック５４のワード５６を識別するために、あるオフセットを使用することができる。一例として、パケットが４１７６ビット長であるとする。パケットは、５８ワード５６に書き込まれており、ブロック５４ａのワード５６ｆから始まり、ブロック５４ｂを除いて、ブロック５４ｄのワード５６ｋに続く。書き込み動作時には、ブロック５４ａのワード５６ｆは第１アドレス及び第１オフセットにより識別され、ブロック５４ｃのワード５６ｆは第２アドレス及び第２オフセットにより識別され、ブロック５４ｄのワード５６ｆは第３アドレス及び第３オフセットにより識別される。ブロック５４ａのワード５６ｆから始まり、ブロック５４ｂを除いて、ブロック５４ｄのワード５６ｋに続くパケットは、ストリームメモリ４０から読み出し可能である。読み出し動作時には、ブロック５４ａのワード５６ｆは第１アドレス及び第１オフセットにより識別可能であり、ブロック５４ｃのワード５６ｆは第２アドレス及び第２オフセットにより識別可能であり、ブロック５４ｄのワード５６ｆは第３アドレス及び第３オフセットにより識別可能である。
【００２６】
タグメモリ４２は複数のリンクしたリストを含み、そのリストの各々は、第１ポートモジュール３８が書き込む次のブロック５４を決定するため、及び１以上の第２ポートモジュールが読み込む次のブロック５４を決定するために使用可能である。以下により詳細に説明されるように、タグメモリ４２はリンクしたリストも含み、そのリストは中央エージェント４４が次のブロック５４を決定するのに使用可能であり、そのブロックはポートメモリ３８からストリームメモリ４０への書き込み動作用にポートモジュール３８に利用可能になるものである。タグメモリ４２は複数の項目（エントリ）を有し、少なくともいくつかの各々は、ストリームメモリ４０のブロック５４に対応する。ストリームメモリ４０の各ブロック５４はタグメモリ４２内に対応するエントリを有する。タグメモリ４２内のエントリは、タグメモリ４２内で別のエントリに対するポインタを含むことができ、その結果、リンクしたリストになる。
【００２７】
ポートモジュール３８からストリームメモリ４０への書き込み動作の間にポートモジュール３８に利用可能なブロック５４に対応するタグメモリ４２内のエントリは互いにリンクされることが可能であり、リンクしたエントリをポートモジュール３８が用いて書き込む次のブロック５４を決定できるようにする。一例として、ポートモジュール３８からストリームメモリ４０への書き込み動作中に、ポートモジュール３８に４つのブロック５４が利用可能な状況を考えることができる。第１ブロック５４に関連するタグメモリ４２内の第１エントリは第２ブロック５４に対するポインタを含み、第２ブロック５４に関連するタグメモリ４２内の第２エントリは第３ブロック５４に対するポインタを含み、第３ブロック５４に関連するタグメモリ４２内の第３エントリは第４ブロック５４に対するポインタを含む。ポートモジュール３８は第１ブロック５４に書き込みを行うが、ポートモジュール３８は、第１ブロック５４に書き込みを行いながら、書き込む次のブロック５４を決定するために第１エントリ内のポインタを利用する。ポインタは第２ブロックに対するポートモジュールを示し、ポートモジュール３８が第１ブロック５４への書き込みを終えると、ポートモジュール３８は第２ブロックに書き込む。ポートモジュール３８が第２ブロック５４に書き込みを行っている場合に、ポートモジュール３８は書き込む次のブロック５４を決定するために第２エントリのポインタを使用する。ポインタは第３ブロック５４に対するポートモジュール３８を示し、ポートモジュール３８が第２ブロック５４への書き込みを終えた場合に、ポートモジュール３８は第３ブロック５４に書き込む。ポートモジュール３８が第３ブロック５４に書き込みを行っている場合に、ポートモジュール３８は書き込む次のブロック５４を決定するために第３エントリのポインタを使用する。ポインタは第４ブロック５４に対するポートモジュール３８を示し、ポートモジュール３８が第３ブロック５４への書き込みを終えた場合に、ポートモジュール３８は第３ブロック５４に書き込む。タグメモリ４２内のリンクしたリストは、書き込む次のブロック５４を決定するために、１より多くのポートモジュール３８によっては使用できない。
【００２８】
ブロック５４がポートモジュール３８からストリームメモリ４０への書き込み動作時にポートモジュール３８に利用可能にされる場合に、ブロック５４に対応するタグメモリのエントリはリンクしたリストに付加されることが可能であり、そのリストを、ポートモジュール３８は書き込む次のブロック５４を決定するために使用する。一例として、上述したリンクしたリストを想定する。リンクしたリストの最終要素が第４エントリである場合に、第５ブロック５４がポートモジュール３８に利用可能にされたならば、その第４エントリは第５ブロック５４に対するポインタを含むように修正可能である。
【００２９】
書き込む次のブロック５４を決定するために第１ポートモジュール３８が使用しているタグメモリ４２内のリンクしたリストは、読み取る次のブロック５４を決定するために、１以上の第２ポートモジュール３８で使用可能である。一例として、上述のリンクしたリストを想定する。パケットの第１部分は第１ポートモジュール３８から第１ブロック５４に書き込まれており、パケットの第２部分は第１ポートモジュール３８から第２ブロック５４に書き込まれており、パケットの第３部分は第１ポートモジュール３８から第３ブロック５４に書き込まれている。第３ブロック５４には終端印（エンドマーク）も書き込まれ、エンドマークは、パケットの最終部分が第３ブロック５４に書き込まれていることを示す。第２ポートモジュール３８は第１ブロック５４から読み出すが、第２ポートモジュールは、第１ブロック５４から読み出している間に、読み出す次のブロック５４を決定するために、第１エントリのポインタを使用する。ポインタは第２ブロック５４に対する第２ポートモジュール３８を示し、第２ポートモジュール３８が第１ブロック５４からの読み出しを終えると、第２ポートモジュール３８は第２ブロック５４から読み出す。第２ポートモジュール３８が第２ブロック５４から読み取りを行っている場合に、第２ポートモジュール３８は、読み取る次のブロック５４を決定するために第２エントリのポインタを使用する。ポインタは第３ブロック５４に対する第２ポートモジュール３８を示し、第２ポートモジュール３８が第２ブロック５４から読み取り終えた場合に、第２ポートモジュール３８は第３ブロック５４から読み取る。第２ポートモジュール３８は第３ブロック５４から読み取りを行い、第３ブロック５４内のエンドマークを利用して、パケットの最終部分が第３ブロック５４に書き込まれていることを判別する。書き込む次のブロック５４を決定するには、１より多くの第１ポートモジュール３８でタグメモリ内のリンクしたリストを使用することはできないが、読み取る次のブロック５４を決定するために、１以上の第２ポートモジュール３８でリンクしたリストを利用することはできる。
【００３０】
様々なパケットは様々な宛先を有することができ、ストリームメモリ４０を介してパケットが進む順序が、先入れ先出し（ＦＩＦＯ）であることは必須でない。例えば、第２のパケットが１以上のブロック５４に受信及び書き込まれる前に、１以上の第１メモリ５４に受信及び書き込まれた第１パケットを考察する。第２パケットは、第１パケットより先にストリームメモリ４０から読み出し可能であり、第２ブロック５４は第１ブロック５４より先に他の書き込み動作に利用可能になる可能性がある。特定の実施例では、パケットの指定されたポートモジュール３８である総てのポートモジュール３８によって、パケットがブロック５４から読み出された直後に、パケットが書き込まれたストリームメモリ４０のブロック５４は、ポートモジュール３８からブロック５４への書き込み動作用にポートモジュール３８に利用可能にされることができる。パケットの指定されたポートモジュール３８は、システムエリアネットワーク１０の要素に接続されたポートモジュール３８、スイッチコア２６からのダウンストリームを含み、それはパケットの最終的な又は中間的な宛先である。
【００３１】
特定の実施例では、書き込み動作を管理するためにクレジット（ｃｒｅｄｉｔ）が使用される。書き込み動作を管理するのにクレジットを利用することでスイッチコア２６によるカットスルー転送を支援することができ、待ち時間を減らし、スループットを向上させ、スイッチコア２６に関するメモリの条件を緩和する。書き込み動作を管理するためにクレジットを利用することは、ヘッドラインブロッキングを解消することもでき、ポートモジュール３８でのロード条件の変化に応じて、ポートモジュール３８の中でメモリリソースを分散する上で大きな柔軟性を与える。また、クレジットが書き込み動作を管理するのに使用される場合は、どのポートモジュール３８がどのブロック５４にどの時点で書き込み可能であるかの判別が、スイッチコア２６を介するパケットのクリティカル経路外で行われ、スイッチコア２６のスループット及びスイッチング速度を向上させることもできる。クレジットは、ストリームメモリ４０のブロック５４に対応し、ブロック５４に書き込むためにポートモジュール３８で使用可能である。クレジットは、クレジットのプールの中からポートモジュール３８に割り当てられ、中央エージェント４４により管理される。ポートモジュール３８に割り当てられるクレジットに関連するもの（リファレンス）は、ポートモジュール３８からブロック５４へ及びその逆への書き込み動作の間にポートモジュール３８に利用可能にされるクレジットに対応するブロック５４を含む。
【００３２】
クレジットのプール内のクレジットは、どのポートモジュール３８に割り当てられることも可能であり、どのような特定のポートモジュール３８に割り当てられる必要はない。ポートモジュール３８は、ポートモジュール３８に利用可能なクレジットのみを使用することができ、他のポートモジュール３８に利用可能なクレジットやクレジットのプール内にあるクレジットを利用することはできない。クレジットがポートモジュール３８に割り当てられ、ポートモジュール３８がそのクレジットを未だ使用していない場合に、クレジットはポートモジュール３８に利用可能である。ポートモジュール３８に割り当てられているクレジットは、ポートモジュール３８がそのクレジットを使用するまでポートモジュール３８に利用可能である。クレジットは一度に１より多くのポートモジュール３８に割り当てられることはできず、クレジットは同時に１より多くのポートモジュール３８に利用可能にできない。特定の実施例では、第１ポートモジュール３８が、そのクレジットに対応するブロック５４にパケットを書き込むためにクレジットを使用する場合に、そのパケットについて指定されたポートモジュール総てがブロック５４からパケットを読み出した直後に、クレジットはクレジットのプールに返却される。
【００３３】
中央エージェント４４は、クレジットのプールの中からクレジットをポートモジュール３８に割り当てることができる。一例として、中央エージェント４４は、ポートモジュール３８に対する所定数のクレジットの初期割当を行うことができる。特定の実施例では、中央エージェント４４は、スイッチコア２６の起動時に又はスイッチコア２６がリセットされたことに応じて、ポートモジュール３８に対するクレジットの初期割当をすることができる。他の例として、中央エージェント４４は、ポートモジュール３８にクレジットを割り当て、ポートモジュール３８が使用した別のクレジットを置換する。特定の実施例では、ポートモジュール３８が第１クレジットを使用する場合に、ポートモジュール３８はポートモジュール３８が第１クレジットを使用することを通知し、ポートモジュール３８が第１クレジットを使用することをポートモジュール３８が中央エージェントに通知したことに応答して、中央エージェント４４は第１クレジットを置換するために第２クレジットをポートモジュール３８に割り当てるが、それは、ポートモジュール３８に利用可能なポート数がアプリケーションの制約に満たない又は超えない場合に限る。ポートモジュール３８に利用可能であるかもしれないクレジット数についての制限（上限）が適用可能である。他の例では、ポートモジュール３８に利用可能かもしれないクレジット数に適用可能な上限を増やしたことに応じて、中央エージェント４４は、ポートモジュール３８に１以上のクレジットを割り当てることができる。ポートモジュール３８に利用可能なクレジット数についての制限が適用可能であり、その制限は、ポートモジュール３８での、１以上の他のポートモジュール３８での又は双方でのロード条件の変化に応答して変更可能である。特定の実施例では、制限が増えた場合及びポートモジュール３８に利用可能なクレジット数がその増えた制限に満たない又は超えない場合に、中央エージェント４４は１以上のクレジットをポートモジュール３８に割り当てることができ、ポートモジュール３８に利用可能なクレジット数が、増えた上限に合うようにする。
【００３４】
タグメモリ４２内のリンクしたリストは、ポートモジュール３８に割り当て可能な次のクレジットを決定するために、中央エージェント４４により使用可能である。リンクしたリストの要素は、ブロック５４に対応するタグメモリ４２内のエントリを含み、クレジットのプール内のクレジットに対応する。一例として、クレジットのプール内に４つのクレジットがあるとする。第１のクレジットは第１のブロック５４に対応し、第２のクレジットは第２のブロック５４に対応し、第３のクレジットは第３のブロック５４に対応し、第４のクレジットは第４のブロック５４に対応する。第１ブロック５４に対応するタグメモリ４２内の第１エントリは第２ブロック５４に対するポインタを含み、第２ブロック５４に対応するタグメモリ４２内の第２エントリは第３ブロック５４に対するポインタを含み、第３ブロック５４に対応するタグメモリ４２内の第３エントリは第４ブロック５４に対するポインタを含む。中央エージェント４４は第１クレジットをポートモジュール３８に割り当てるが、中央エージェント４４が第１クレジットをポートモジュール３８に割り当てている間に、第１エントリのポインタを使用して、ポートモジュール３８に割り当てる次のクレジットを決定する。ポインタは中央エージェント４４に第２ブロック５４を参照させ、中央エージェント４４が第１クレジットをポートモジュール３８に割り当て終えた場合に、中央エージェント４４は第２クレジットをポートモジュール３８に割り当てる。中央エージェント４４が第２クレジットをポートモジュール３８に割り当てる場合に、中央エージェント４４は、ポートモジュール３８に割り当てる次のクレジットを決定するために、第２エントリのポインタを使用する。ポインタは中央エージェント４４に第３ブロック５４を参照させ、中央エージェント４４が第２クレジットをポートモジュール３８に割り当て終えた場合に、中央エージェント４４は第３クレジットをポートモジュール３８に割り当てる。中央エージェント４４が第３クレジットをポートモジュール３８に割り当てる場合に、中央エージェント４４は、ポートモジュール３８に割り当てる次のクレジットを決定するために、第３エントリのポインタを使用する。ポインタは中央エージェント４４に第４ブロック５４を参照させ、中央エージェント４４が第３クレジットをポートモジュール３８に割り当て終えた場合に、中央エージェント４４は第４クレジットをポートモジュール３８に割り当てる。
【００３５】
ブロック５４に関連するクレジットがクレジットのプールに返却された場合に、ブロック５４に関連するタグメモリ４２内のエントリはリンクしたリストの末尾に加えることができ、それを利用して中央エージェント４４はポートモジュール３８に割り当てる次のクレジットを決定する。一例として、上述のリンクしたリストが考察される。第４エントリがリンクしたリストの最後の要素である場合に、第５ブロック５４に関連する第５クレジットがクレジットのプールに加えられるならば、第５ブロック５４に関連するタグメモリ４２内の第５エントリに対するポインタを含むように、第５エントリが修正可能である。タグメモリ４２内のエントリの各々がストリームメモリ４０のブロック５４に対応するので、ブロック５４を指すポインタは、タグメモリ４２内のエントリも指し示す。
【００３６】
ポートモジュール３８が到来するパケットを受信すると、ポートモジュール３８は、そのパケットをストリームメモリ４０に書き込むのに充分なクレジットがポートモジュール３８に利用可能か否かを決定する。特定の実施例では、パケットをストリームメモリ４０に書き込むのに充分なクレジットがポートモジュール３８に利用可能であるならば、ポートモジュール３８は、１以上のクレジットを用いてパケットをストリームメモリ４０に書き込むことができる。特定の実施例では、パケットをストリームメモリ４０に書き込むのに充分なクレジットがポートモジュール３８に利用可能でない場合に、ポートモジュール３８はそのパケットを入力バッファに書き込み、後に、パケットをストリームメモリ４０に書き込むのに充分なクレジットがポートモジュール３８に利用可能になった場合に、１以上のクレジットを用いてそのパケットをストリームメモリ４０に書き込む。パケットを入力バッファに書き込むポートモジュール３８の代替例として、ポートモジュール３８はそのパケットを落とす（ｄｒｏｐ）ことができる。特定の実施例では、パケットの一部分のみをストリームメモリ４０に書き込む程度のクレジットしかポートモジュール３８に利用可能でない場合に、ポートメモリ３８は、１以上のクレジットを用いてストリームメモリ４０に書き込み可能なパケットの一部をストリームメモリ４０に書き込み、パケットの１以上の他の部分を入力バッファに書き込むことができる。後に、ポートモジュール３８がパケットの１以上の他の部分をストリームメモリ４０に書き込むことができる場合に、ポートモジュール３８は、１以上のクレジットを用いて、パケットの１以上の他の部分をストリームメモリ４０に書き込むことができる。特定の実施例では、カットスルー転送に類似する、遅延したカットスルー転送が、ストアアンドフォワード法を上回る１以上の利点を与える（利点は例えば短い待ち時間、メモリの条件の少なさ、向上したスループット等である。）。パケットをストリームメモリ４０に書き込むのに充分なクレジットがポートモジュール３８に利用可能か否かを決定するポートモジュール３８に関連するもの（リファレンス）は、ストリームメモリ４０にパケット全体を書き込むのに充分なクレジット、ストリームメモリ４０にパケットの受信した部分のみしか書き込めないクレジット又は適切ならばストリームメモリ４０にパケットの少なくとも一部分しか書き込めないクレジットが、ポートモジュール３８に利用可能であるか否かを決定するポートモジュール３８を含む。
【００３７】
特定の実施例では、到来するパケット長は、パケット全体が受信されるまで知り得ない。そのような実施例では、（適用可能な一式の規格による）最大パケットサイズが、ポートモジュール３８で受信される到来するパケットをストリームメモリ４０に書き込むのに充分なクレジットが、ポートモジュール３８に利用可能であるか否かを判別するために使用可能である。電気電子工学会（ＩＥＥＥ）により発行された一群の規格によれば、イーサーネット（登録商標）フレームの最大サイズは１５００バイトである。実際上の規格群によれば、イーサーネット（登録商標）フレームの最大サイズは９０００バイトである。限定でなく一例として、到来するパケットの一部分のみを受信するポートモジュール３８を想定することができる。ポートモジュール３８は、パケット全体をストリームメモリ４０に書き込むのに充分なクレジットがポートモジュール３８に利用可能か否かを判別するために、（適用可能な一群の規格に従って）最大パケットサイズを利用する。ポートモジュール３８は、最大パケットサイズと、ポートモジュール３８に利用可能なクレジット数とを比較することでその判別を行うことができる。パケット全体をストリームメモリ４０に書き込むのに充分なクレジットがポートモジュール３８に利用可能ならば、ポートモジュール３８は、１以上のクレジットを用いて、受信したパケットの部分をストリームメモリ４０に書き込み、ポートモジュール３８がパケットに関する１以上の他の部分を受信したならば、１以上のクレジットを用いて、パケットの１以上の他の部分をストリームメモリ４０に書き込む。
【００３８】
ポートモジュール３８は、カウンタを用いて、ポートモジュール３８に利用可能なクレジット数を監視することができる。中央エージェント４４がクレジットをポートモジュール３８に割り当てる場合は、ポートモジュール３８はカウンタをある量だけ増やし（インクリメント）、ポートモジュール３８がクレジットを使用すると、ポートモジュール３８はそのカウンタをある量だけ減らす（デクリメント）。カウンタの現在の値は、ポートモジュール３８に利用可能な現在のクレジット数を反映し、ポートモジュール３８はそのカウンタを用いて、ポートモジュール３８からストリームメモリ４０へパケットを書き込むのに充分なクレジットがポートモジュール３８に利用可能か否かを決定することができる。中央エージェント４４は、カウンタを用いて、ポートモジュール３８に利用可能なクレジット数を監視することもできる。中央エージェント４４がポートモジュール３８にクレジットを割り当てると、中央エージェント４４はそのカウンタをある量だけ増やし、ポートモジュール３８がクレジットを使用したことをポートモジュール３８が中央エージェント４４に通知すると、中央エージェント４４はカウンタをある量だけ減らす。カウンタの目下の値は、ポートモジュール３８に利用可能な目下のクレジット数を反映し、中央エージェント４４はカウンタを利用して、１以上のクレジットをポートモジュール３８に割り当てることを決定できる。
【００３９】
ポートモジュール３８に利用可能なクレジット数は制限されることが可能であり、その制限は、ポートモジュール３８、１以上の他のポートモジュール３８又は双方におけるロード条件の変化に応じて変更可能である。特定の実施例では、ポートモジュール３８に利用可能なクレジット数は動的な閾値に従って制限され、その閾値は、ポートモジュール３８からストリームメモリ４０への書き込み動作に対する、アクティブなスイッチコア２６のポートモジュール３８の数と、ポートモジュール３８に利用可能なクレジット数との関数である。アクティブなポートモジュール３８は、特定の実施例では、ストリームメモリ４０にパケットを書き込んだポートモジュール３８を含み、そのパケットは、ストリームメモリからそのパケットについて指定された総てのポートモジュール３８へ読み込まれていないものである。動的な閾値は、次式を用いて算出されるポートモジュール３８に利用可能なクレジット数の分数を含むことも可能である。
【００４０】
【数１】
2005278175.tif 000003
αはアクティブなポートモジュール３８の数に等しく、ρはパラメータである。
【００４１】
クレジットのプール内のクレジット数が、予約されたクレジット数を超えない場合に、中央エージェント４４がクレジットをポートモジュール３８に割り当てなくてもよいように、クレジット数が予約可能である。１以上のクレジットを予約することは、アクティブなポートモジュール数の変化に付随する過渡期間中にクッションを提供できる（急変を緩和できる）。予約されるクレジットの分数は、次式を用いて算出される。
【００４２】
【数２】
2005278175.tif 000004
αはアクティブなポートモジュール３８の数に等しく、ρはパラメータである。
【００４３】
上記の式によれば、１つのポートモジュール３８がアクティブであってρが２ならば、中央エージェント４４は、クレジットの３分の１を予約し、クレジットの３分の２までをポートモジュール３８に割り当て；２つのポートモジュール３８がアクティブであってρが１ならば、中央エージェント４４は、クレジットの３分の１を予約し、クレジットの３分の１までをアクティブなポートモジュール３８の各々に割り当て；１２個のポートモジュール３８がアクティブであってρが０．５ならば、中央エージェント４４は、クレジットの１４分の２を予約し、クレジットの１４分の１までを、アクティブなポートモジュール３８の各々に割り当てる。上述の特定の上限が、ポートに利用可能なクレジット数に適用されるが、本発明では、適切などの上限でも、ポートモジュール３８に利用可能なクレジット数に適用できる。
【００４４】
第１ポートモジュール３８がパケットをストリームメモリ４０に書き込む場合に、第１ポートモジュール３８は、パケットのヘッダからの情報（例えば、１以上の宛先アドレスのようなもの）をルーティングモジュール４６に通知することができ、その情報を用いて、ルーティングモジュール４６は、そのパケットについて指定されたポートモジュール３８である１以上の第２ポートモジュール３８を識別できる。第１ポートモジュール３８は、パケットが書き込まれた第１ブロック５４のアドレスと、ストリームメモリ４０からパケットを読み取るために第２ポートモジュール３８により共に使用可能なオフセットとをルーティングモジュール４６に通知することもできる。ルーティングモジュール４６は、１以上のルーティングテーブルと、パケットのヘッダからの情報とを用いて、第２ポートモジュール３８を判別し、第２ポートモジュール３８を判別した後に、第１ブロック５４のアドレス及びオフセットを第２ポートモジュール３８の各々に通知することができ、第２ポートモジュール３８はそれらを出力キューに加えることができ、これについては以下で更に詳細に説明される。
【００４５】
ポートモジュール３８は１以上の出力キューを含むことができ、その出力キューは、ポートモジュール３８を通じてスイッチコア２６外と通信するために、ストリームメモリ４０に書き込まれたキューパケットに使用される。パケットがストリームメモリ４０に書き込まれると、パケットは、そのパケットに関して指定されたポートモジュール３８の各々の出力キューに付加される。第１ポートモジュール３８の出力キューは、サービス品質（ＱｏＳ）レベルと第２ポートモジュール３８との組み合わせに対応する。一例として、３段階のＱｏＳを与え、入力論理部及び出力論理部の双方を含む４つのポートモジュール３８を含むスイッチコア２６を想定する。第１ポートモジュール３８は９個の出力キューを含む：第１の出力キューは第１レベルのＱｏＳ及び第２ポートモジュール３８に対応し；第２の出力キューは第１レベルのＱｏＳ及び第３ポートモジュール３８に対応し；第３の出力キューは第１レベルのＱｏＳ及び第４ポートモジュール３８に対応し；第４の出力キューは第２レベルのＱｏＳ及び第２ポートモジュール３８に対応し；第５の出力キューは第２レベルのＱｏＳ及び第３ポートモジュール３８に対応し；第６の出力キューは第２レベルのＱｏＳ及び第４ポートモジュール３８に対応し；第７の出力キューは第３レベルのＱｏＳ及び第２ポートモジュール３８に対応し；第８の出力キューは第３レベルのＱｏＳ及び第３ポートモジュール３８に対応し；第９の出力キューは第３レベルのＱｏＳ及び第４ポートモジュール３８に対応する。（１）パケットがストリームメモリ４０に第２ポートモジュール３８から書き込まれた場合、（２）第１ポートモジュール３８がパケットに関して指定されたポートモジュール３８である場合、及び（３）パケットのＱｏＳレベルが第１レベルのＱｏＳである場合に、ストリームメモリ４０に書き込まれるパケットは、第１ポートモジュール３８の第１出力キューに加えられる。（１）パケットがストリームメモリ４０に第３ポートモジュール３８から書き込まれた場合、（２）第１ポートモジュール３８がパケットに関して指定されたポートモジュール３８である場合、及び（３）パケットのＱｏＳレベルが第２レベルのＱｏＳである場合に、ストリームメモリ４０に書き込まれるパケットは、第１ポートモジュール３８の第５出力キューに加えられる。（１）パケットがストリームメモリ４０に第４ポートモジュール３８から書き込まれた場合、（２）第１ポートモジュール３８がパケットに関して指定されたポートモジュール３８である場合、及び（３）パケットのＱｏＳレベルが第３レベルのＱｏＳである場合に、ストリームメモリ４０に書き込まれるパケットは、第１ポートモジュール３８の第９出力キューに加えられる。
【００４６】
第２ポートモジュール３８も９個の出力キューを含む：第１の出力キューは第１レベルのＱｏＳ及び第１ポートモジュール３８に対応し；第２の出力キューは第１レベルのＱｏＳ及び第３ポートモジュール３８に対応し；第３の出力キューは第１レベルのＱｏＳ及び第４ポートモジュール３８に対応し；第４の出力キューは第２レベルのＱｏＳ及び第１ポートモジュール３８に対応し；第５の出力キューは第２レベルのＱｏＳ及び第３ポートモジュール３８に対応し；第６の出力キューは第２レベルのＱｏＳ及び第４ポートモジュール３８に対応し；第７の出力キューは第３レベルのＱｏＳ及び第１ポートモジュール３８に対応し；第８の出力キューは第３レベルのＱｏＳ及び第３ポートモジュール３８に対応し；第９の出力キューは第３レベルのＱｏＳ及び第４ポートモジュール３８に対応する。（１）パケットがストリームメモリ４０に第１ポートモジュール３８から書き込まれた場合、（２）第２ポートモジュール３８がパケットに関して指定されたポートモジュール３８である場合、及び（３）パケットのＱｏＳレベルが第１レベルのＱｏＳである場合に、ストリームメモリ４０に書き込まれるパケットは、第２ポートモジュール３８の第１出力キューに加えられる。（１）パケットがストリームメモリ４０に第３ポートモジュール３８から書き込まれた場合、（２）第２ポートモジュール３８がパケットに関して指定されたポートモジュール３８である場合、及び（３）パケットのＱｏＳレベルが第２レベルのＱｏＳである場合に、ストリームメモリ４０に書き込まれるパケットは、第２ポートモジュール３８の第５出力キューに加えられる。（１）パケットがストリームメモリ４０に第４ポートモジュール３８から書き込まれた場合、（２）第２ポートモジュール３８がパケットに関して指定されたポートモジュール３８である場合、及び（３）パケットのＱｏＳレベルが第３レベルのＱｏＳである場合に、ストリームメモリ４０に書き込まれるパケットは、第２ポートモジュール３８の第９出力キューに加えられる。
【００４７】
第３ポートモジュール３８及び第４ポートモジュール３８の各々は、上述した第１ポートモジュール３８の出力キュー及び第２ポートモジュール３８の出力キューに類似する出力キューを含む。ＱｏＳは、スイッチコア２６を通じるパケットに関する、伝送レート、エラーレートその他の通信態様を含み、ＱｏＳに関連するもの（リファレンス）は、適切ならばサービスクラス（ＣｏＳ）を含むことができる。第１ポートモジュール３８の出力キューは、第２ポートモジュール３８及びＱｏＳレベルに関連するように説明されるが、第１ポートモジュール３８の出力キューが、第２ポートモジュール３８及びＱｏＳレベルに関連することは必須ではない。一例として、特定の実施例では、第１ポートモジュール３８の出力キューは、第２ポートモジュール３８に関連するがＱｏＳレベルに関連しないようにすることができる。
【００４８】
ポートモジュール３８の出力キューは、ポートモジュール３８のレジスタと、出力キューに１より多くのパケットがある場合に、以下に説明されるようなポートモジュール３８のメモリ構造内に１以上のエントリとを含む。ポートモジュール３８はメモリ構造を含み、そのメモリ構造は１以上のリンクしたリストを含むことができ、そのリストを用いてポートモジュール３８は、１以上のレジスタを用いて、ストリームメモリ４０から読み込む次のパケットを決定する。メモリ構造は複数のエントリを含み、少なくともその一部の各々はストリームメモリ４０のブロック５４に対応する。ストリームメモリ４０の各ブロック５４は、メモリ構造内に対応するエントリを有する。メモリ構造内のエントリは、メモリ構造内に他のエントリに対するポインタを含むことができ、その結果、リンクしたリストをもたらす。ポートモジュール３８は１以上のレジスタを含み、ポートモジュール３８はレジスタを用いてストリームメモリ４０から読み込む次のパケットを決定する。レジスタは、書き込みポインタ、オフセット及び読み込みポインタを含む。書き込みポインタは大パケットが書き込まれる第１ブロック５４を指すことができ、オフセットは第１パケットが書き込まれる第１ワード５６を示すことができ、読み込みポインタは第２パケットが書き込まれた第１ブロック５４を指すことができる（第２パケットは、第１パケットと同じパケットにすることも第１パケット以外のパケットにすることもできる。）。メモリ構造内のエントリの各々はストリームメモリ４０のブロック５４に対応するので、ブロック５４を指すポインタも、メモリ構造内のエントリを指す。
【００４９】
ポートモジュール３８は、オフセットを書き込むメモリ構造内の次のエントリを決定するために、書き込みポインタを使用することができる。ポートモジュール３８は、オフセットを利用して、ブロック５４の中から読み込みを開始するブロック５４のワード５６を判別する。ポートモジュール３８は、読み込みポインタを利用して、ストリームメモリ４０から読み込む次のパケットを決定する。ポートモジュール３８は、書き込みポインタ及び読み込みポインタを利用して、１より多くのパケットが出力キュー内にあるか否かを判別できる。書き込みポインタ及び読み込みポインタの双方が同じブロック５４を指すならば、その出力キューには１パケットしかない。出力キューに１パケットしかないならば、ポートモジュール３８は、ストリームメモリ４０から読み込む次のパケットを決定し、メモリ構造にアクセスせずに、ストリームメモリ４０から次のパケットを読み込む。
【００５０】
出力キューに何らのパケットもない場合に、第１パケットが出力キューに加えられるならば、（１）レジスタ内の書き込みポインタは、第１パケットが書き込まれる第１ブロック５４に対するポインタに修正され、（２）オフセットは第１パケットが書き込まれる第１ワード５６を示すように修正され、及び（３）読み込みポインタは第１パケットが書き込まれる第１ブロック５４を指すようにも修正される。ポートモジュール３８がストリームメモリ４０から第１パケットを読み出す前に、第２パケットが出力キューに加えられるならば、（１）書き込みポインタは第２パケットが書き込まれる第１ブロック５４を指すように修正され、（２）オフセットは第１パケットが書き込まれる第１ブロック５４に対応するメモリ構造内の第１エントリに書き込まれ、第２パケットが書き込まれる第１ワード５６を示すように修正され、及び（３）第１エントリ内のポインタは第２パケットが書き込まれる第１ブロック５４を指すように修正される。読み込みポインタは不変に残され、第２パケットが出力キューに加えられた後でも、読み込みポインタは第１パケットが書き込まれた第１ブロック５４を依然として指す。以下に更に詳細に説明されるように、ポートモジュール３８が出力キュー内のパケットをストリームメモリ４０から読み出す場合に、読み込みポインタは変えられる。ポートモジュール３８が第１パケット及び第２パケットをストリームメモリ４０から読み出す前に、第３パケットが出力キューに加えられるならば、（１）書き込みポインタは第３パケットが書き込まれる第１ブロック５４を指すように修正され、（２）オフセットは、第２パケットが書き込まれる第１ブロック５４に対応するメモリ構造の第２エントリに書き込まれ、第３パケットが書き込まれる第１ワード５６を示すように修正され、及び（３）第２エントリ内のポインタは第３パケットが書き込まれる第１ブロック５４を指すように修正される。第３パケットが出力キューに加えられた後に、読み込みポインタが第１パケットが書き込まれた第１ブロック５４を依然として指すように、読み込みポインタは再び不変に残される。
【００５１】
ポートモジュール３８は、ストリームメモリ４０から読み込む次のパケットを決定するために出力キューを使用することができる。一例として、３つのパケットが存在する上記の出力キューを想定する。レジスタでは、（１）書き込みポインタは、第３パケットが書き込まれる第１ブロックを指し、（２）オフセットは、第３パケットが書き込まれる第１ワード５３を示し、及び（３）読み込みポインタは、第１パケットが書き込まれる第１ブロック５４を指す。メモリ構造内の第１エントリは、（１）第１パケットが書き込まれる第１ワード５６を示すオフセット、及び（２）第２パケットが書き込まれる第１ブロック５４を指すポインタを含む。メモリ構造内の第２エントリは、（１）第２パケットが書き込まれる第１ワード５６を示すオフセット、及び（２）第３パケットが書き込まれる第１ブロック５４を指すポインタを含む。
【００５２】
ポートモジュール３８は、読み込みポインタと書き込みポインタを比較し、比較結果から、出力キューに１より多くのパケットが存在するか否かを決定する。ポートモジュール３８はその後に読み込みポインタを用いてストリームメモリ４０から読み込む次のパケットを決定する。読み込みポインタは、ポートモジュール３８に第１パケットの第１ブロック５４を参照させ、出力シーケンスに１より多くのパケットが存在する以上、ポートモジュール３８は、第１パケットが書き込まれた第１ワード５６を示す第１エントリのオフセットにアクセスする。ポートモジュール３８は第１エントリのオフセットを利用して、第１パケットが書き込まれた第１ブロック５４から始まる第１パケットを、ストリームメモリ４０から読み取る。第１パケットが１より多くのブロック５４に書き込まれたならば、上述したように、ポートモジュール３８はメモリから第１パケットを読み取るためにタグメモリ４２内のリンクしたリストを使用する。
【００５３】
ポートモジュール３８がストリームメモリ４０から第１パケットを読み込むんでいる場合に、ポートモジュール３８は第１エントリのポインタを読み取りポインタに複製し、その読み取りポインタを書き込みポインタと比較し、比較結果から、１より多くのパケットが出力キューにあるか否かを判定する。ポートモジュール３８はその読み取りポインタを用いてストリームメモリ４０から読み取る次のパケットを決定する。読み取りポインタは第２パケットの第１ブロック５４に対するポートモジュール３８を示し、出力キューに１より多くのパケットがある以上、ポートモジュール３８は、第２パケットが書き込まれる第１ワード５６を示す第２エントリのオフセットにアクセスする。ポートモジュール３８がストリームメモリ４０から第１パケットを読み終えると、ポートモジュール３８は、第２エントリのオフセットを用いて、第２パケットが書き込まれる第１ブロック５４から始まる第２パケットをストリームメモリ４０から読み込む。第２パケットが１より多くのブロック５４に書き込まれているならば、上述したように、ポートモジュール３８はタグメモリ４２内のリンクしたリストを用いて、第２パケットをメモリから読み取る。
【００５４】
ポートモジュール３８がストリームメモリ４０から第１パケットを読み込むんでいる場合に、ポートモジュール３８は第２エントリのポインタを読み取りポインタに複製し、その読み取りポインタを書き込みポインタと比較し、比較結果から、１より多くのパケットが出力キューにあるか否かを判定する。ポートモジュール３８はその読み取りポインタを用いてストリームメモリ４０から読み取る次のパケットを決定する。読み取りポインタは第２パケットの第３ブロック５４に対するポートモジュール３８を示し、出力キューに１より多くのパケットがある以上、ポートモジュール３８は、第３パケットが書き込まれる第１ワード５６を示すレジスタ内のオフセットにアクセスする。ポートモジュール３８がストリームメモリ４０から第２パケットを読み終えると、ポートモジュール３８は、レジスタ内のオフセットを用いて、第３パケットが書き込まれる第１ブロック５４から始まる第３パケットをストリームメモリ４０から読み込む。第３パケットが１より多くのブロック５４に書き込まれているならば、上述したように、ポートモジュール３８はタグメモリ４２内のリンクしたリストを用いて、第３パケットをメモリから読み取る。
【００５５】
ポートモジュール３８が１より多くの出力キューを含むならば、出力キューを調停する（アービトレーション）アルゴリズムが使用されてもよい。複数の出力キュー間の調停は、ストリームメモリ４０から読み込む次のパケットを決定するのに使用する次の出力キューを決定することを含むことができる。複数の出力キュー間の調停は、第２出力キューを利用してストリームメモリ４０から読み込む次のパケットを決定する前に、ストリームメモリ４０から読み込む第１出力キュー内にどれだけ多くのパケットがあるかを判定することを含むこともできる。本発明では、複数の出力キューのアービトレーション用の適切ないかなるアルゴリズムも想定されている。限定ではなく一例として、ポートモジュール３８の複数の出力キュー間のアービトレーションアルゴリズムに従って、ポートモジュール３８は一連のラウンド（ｒｏｕｎｄ）の中で出力キューにアクセスする。ラウンドの中では、ポートモジュール３８は所定の順序で出力キューに連続的にアクセスし、ポートモジュール３８は、出力キューにアクセスすると、出力キュー内の１以上のパケットをストリームメモリ４０から読み出す。あるラウンドでの出力キューからポートモジュール３８が読み取るパケット数は、同じラウンドでポートモジュール３８の１以上の他の出力キューの各々からポートモジュール３８が読み取るパケット数と同一にする或いは相違させることができる。特定の実施例では、あるラウンドでストリームメモリ４０から読み取り可能な、高いＱｏＳレベルの第１出力キュー内のパケット数は、同じラウンドでストリームメモリ４０から読み取り可能な、低いＱｏＳレベルの第２出力キュー内のパケット数より大きい。１以上の出力キューからのパケットを、１以上の他の出力キューからよりも多く除去する特定の基準が説明されるが、本発明では、１以上の出力キューからのパケットを、１以上の他の出力キューからより多く除去する適切ないかなる基準をも想定している。
【００５６】
図６は、本発明の特定の実施例による誤り検出方法を示す。上述したように、本発明を利用するスイッチにより実行されるパケット交換は、スイッチの全体的な速度及びパフォーマンスを向上させるため、カットスルールーティングを行ってもよい。カットスルールーティングは、スイッチ又はスイッチコアによりパケット全体が受信される前にパケットのスイッチングを開始することで、高速パケットスイッチングを可能にする。
【００５７】
パケットペイロードの全体的なサイズはスイッチングが開始される時点では未知であるので、カットスルールーティングは、巡回冗長検査合計（ＣＲＣ：Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋｓｕｍ）の実効性を劣化させる。巡回冗長検査合計（巡回冗長コードとしても知られる）は、多くの通信ネットワークで誤り検出に使用される技術である。そのようなコードは、（ＣＲＣビット又はチェックサムビットと呼ばれる）少数のビットを各パケットに付加することで、伝送エラーの発生を検出する。ＣＲＣは、パケットに付加されたビットを計算する特定の方法である。多くのＣＲＣ法では、ＣＲＣビットは、パケット又はパケットのペイロードに含まれる全ビット数に依存する。カットスルールーティングが使用される場合、パケットのスイッチングはパケット全体を受信する前に開始される。従って、スイッチングが開始された時点で、パケットのペイロード中の全ビット数は未知である。カットスルールーティング法に対する誤り検出を行うために、本発明は、限定された巡回冗長チェックサム法を使用する。本方法は図６に関連して以下に説明される。
【００５８】
本方法はステップ１００から始まり、複数のパケットがスイッチの入力ポートで受信される。本発明の特定の実施例では、スイッチは図１及び２のスイッチ２２と同様に又は同一に構成されてもよく、図４のスイッチコア２６のようなスイッチコアを利用してもよい。より具体的には、本発明によるスイッチはイーサーネット（登録商標）スイッチでもよい。上述したように、スイッチコアは単独の集積回路で実現されてもよい。しかしながら、スイッチ、スイッチコア、コンフィギュレーション及び実施例の他の形式も、本発明の教示範囲内で想定される。
【００５９】
入力ポートで受信したパケットの各々は、ヘッダ、トレーラ（後書き）及びペイロードを含む。ペイロードはネットワーク要素間で伝送されるデータを含む。パケットの各々は固有のペイロードを有してもよいので、パケットのサイズは変化する。従って、各パケットのペイロードはサイズ及び内容の双方で変化するかもしれない。
【００６０】
ステップ１０２では、入力ポートで受信されたパケットが、スイッチング及びネットワークを通じた適切な配信を行うために、スイッチコアに伝送される。パケットのスイッチングはステップ１０４でなされる。
【００６１】
カットスルールーティングがスイッチによって使用されてもよいので、パケット全体が受信される前に、どの特定のパケットでもそのスイッチングが開始されてもよい。従って、いかなる特定のパケットもスイッチコアに部分的に伝送されてもよく、及び／又はスイッチコアはパケットの一部分だけを受信してスイッチングを開始してもよい。
【００６２】
ステップ１０６では、巡回冗長チェックサムビットが計算される。パケット全体がスイッチコアで受信されていないかもしれないので、本発明による修正された巡回冗長チェックサム法により、パケットに付随するタグ情報を用いて、巡回冗長チェックサムが計算される。
【００６３】
ステップ１０８では、スイッチング動作の誤り検出に適応するため、スイッチングされるパケットの部分にＣＲＣビットが挿入される。次に、ステップ１１０では、ＣＲＣビットを含むパケットの部分が、ネットワークを通じた適切な配信のために、スイッチの出力ポートで受信される。ステップ１１２では、ＣＲＣビットを含む新たなパケットが、ネットワークの他の要素に伝送される。最終的に、ステップ１１４で、パケットに付随するタグ情報を用いて算出されたＣＲＣビットを用いて、誤り検出が行われる。
【００６４】
以上本発明がいくつかの実施例と共に説明されてきたが、様々な変更、置換、変形、改変及び修正が当業者に示唆され、本発明はそのような様々な変更、置換、変形、改変及び修正を添付の特許請求の範囲及び精神の範疇に含むことが意図される。
【００６５】
以下、本発明により教示される手段を例示的に列挙する。
【００６６】
（付記１）
高速スイッチング環境で誤りを検出する方法であって：
少なくとも第１及び第２部分を有する第１パケットを含む複数のパケットをスイッチ入力ポートで受信するステップ；
前記スイッチ入力ポートで第２部分の全体が受信される前に、前記第１部分のスイッチングを開始するステップ；及び
前記第１パケットに付随するタグデータを利用して、前記第１パケットについて誤り検査を実行するステップ；
を有することを特徴とする方法。
【００６７】
（付記２）
前記第１部分のスイッチングを開始するステップが、カットスルー転送法により行われる
ことを特徴とする付記１記載の方法。
【００６８】
（付記３）
前記第１部分のスイッチングを開始するステップが、遅延したカットスルー転送法により行われる
ことを特徴とする付記１記載の方法。
【００６９】
（付記４）
前記第１パケットに関連するタグＩＤを調べるステップ
を更に有することを特徴とする付記１記載の方法。
【００７０】
（付記５）
前記タグＩＤを前記第１パケットに割り当てるステップ
を更に有することを特徴とする付記４記載の方法。
【００７１】
（付記６）
前記第１部分をスイッチ出力ポートで受信するステップを更に有し、前記誤り検出が前記スイッチ出力ポートで実行される
ことを特徴とする付記１記載の方法。
【００７２】
（付記７）
前記誤り検出が、限定された巡回冗長チェックサム法に従って行われる
ことを特徴とする付記１記載の方法。
【００７３】
（付記８）
前記巡回冗長チェックサム法が、前記第１パケットの前記タグＩＤの変化のみに基づいて、前記第１パケットのＣＲＣを再計算するステップを含む
ことを特徴とする付記７記載の方法。
【００７４】
（付記９）
高速スイッチング環境で誤りを検出するシステムであって：
少なくとも第１及び第２部分を有する第１パケットを含む複数のパケットを受信する第１スイッチ入力ポート；
前記スイッチ入力ポートで第２部分の全体が受信される前に、前記第１部分をスイッチングするスイッチ；及び
前記第１パケットに付随するタグデータを利用して、前記第１パケットについて誤り検査を行う検出モジュール；
を有することを特徴とするシステム。
【００７５】
（付記１０）
前記第１スイッチ入力ポートが、前記第１パケットに関連するタグＩＤを調べる
ことを特徴とする付記９記載のシステム。
【００７６】
（付記１１）
前記第１スイッチ入力ポートが、前記タグＩＤを前記第１パケットに割り当てる
ことを特徴とする付記１０記載のシステム。
【００７７】
（付記１２）
前記第１パケットの前記第１部分を受信するスイッチ出力ポート
を更に有することを特徴とする付記９記載のシステム。
【００７８】
（付記１３）
前記スイッチ出力ポートが、誤り検出モジュールを有する  
ことを特徴とする付記１２記載のシステム。
【００７９】
（付記１４）
誤り検出が、限定された巡回冗長チェックサム法に従って行われる
ことを特徴とする付記１３記載のシステム。
【００８０】
（付記１５）
前記巡回冗長チェックサム法が、前記第１パケットの前記タグＩＤの変化のみに基づいて、前記第１パケットのＣＲＣを再計算することを含む
ことを特徴とする付記１４記載のシステム。
【００８１】
（付記１６）
前記第１部分が、カットスルー転送法に従って切り換えられる
ことを特徴とする付記１５記載のシステム。
【００８２】
（付記１７）
前記第１部分が、遅延したカットスルー転送法に従って切り換えられる
ことを特徴とする付記１５記載のシステム。
【００８３】
（付記１８）
高速スイッチング環境で誤りを検出するシステムであって：
１以上のメモリ構造；
複数の入力構造であって、各々が、通信ネットワークの要素から通知されたパケットを受信し、受信したパケットを１以上のメモリ構造の１以上に書き込むところの複数の入力構造；
複数の入力構造の各々が１以上のメモリ構造の各々に書き込みを行うように、複数の入力構造を１以上のメモリ構造に結合する第１スイッチング構造；
複数の出力構造であって、各々が、前記通信ネットワークの要素と通信するために、１以上のメモリ構造の１以上からパケットを読み取るところの複数の出力構造；
複数の出力構造の各々が１以上のメモリ構造の各々から読み取りを行うように、複数の出力構造を１以上のメモリ構造に結合する第２スイッチング構造であって、通信ネットワークの第１要素と通信するために１以上のメモリユニットの１以上からパケットの１つの第１部分を、通信ネットワークの第２要素から通知されたパケットの１つの第２部分を入力構造が受信する前に、出力構造が読み取るところの第２スイッチング構造；及び
前記第１パケットに付随するタグデータを用いて、前記第１パケットについて誤り検出を行う検出モジュール；
を有することを特徴とするシステム。
【００８４】
（付記１９）
前記メモリ構造が、パケットに関連するタグＩＤを格納する
ことを特徴とする付記１８記載のシステム。
【００８５】
（付記２０）
前記誤り検出が、限定された巡回冗長チェックサム法に従って行われる
ことを特徴とする付記１９記載のシステム。
【図面の簡単な説明】
【００８６】
【図１】システムエリアネットワーク例を示す図である。
【図２】システムエリアネットワークのスイッチ例を示す図である。
【図３】高速スイッチング環境でパケットを切り換えるアーキテクチャ例を示す図である。
【図４】スイッチの例示的なスイッチコアを示す図である。
【図５】論理的にブロックに分割されたスイッチコアの例示的なストリームメモリを示す図である。
【図６】カットスルー転送を行う高速スイッチング環境における誤り検出方法例を示す図である。
【符号の説明】
【００８７】
１０  システムエリアネットワーク
１２  相互接続部
１４  サーバーシステム
１６  格納システム
１８  ネットワークシステム
２０  ルーティングシステム
２２  スイッチ
２４  ポート
２６  スイッチコア
３０  入力構造
３２  出力構造
３４  スイッチング構造
３６  メモリ構造
３８  ポートモジュール
４０  ストリームメモリ
４２  タグメモリ
４４  中央エージェント
４６  ルーティングモジュール
５２  管理ユニット
５４  ブロック
５６  ワード
【図１】
2005278175.tif 000005
【図２】
2005278175.tif 000006
【図３】
2005278175.tif 000007
【図４】
2005278175.tif 000008
【図５】
2005278175.tif 000009
【図６】
2005278175.tif 000010